codex: repair low-alch-members break/iteration model per owner guidance (bounce fix attempt 3)
- iteration = one cast; break.every = [400, 700] COMPLETED casts, cast-count based and independent of bank visits (owner decision A) — bank-cycle claim removed - numeric carried_batch 1,000/1,000 + restock_threshold 100 -> deterministic restock trigger; first restock at cast 901 (worked example pinned) - full runnable lifecycle in actions: reach-bank, buy-staff, equip-staff (with fire-rune fallback failure path), buy-supplies, buy-natures, build-loadout, cast-alch (exact consumption + coins), restock, take-break - rates now REALIZED incl. setup/restock/breaks: xp_per_hour 24,500, gp_per_hour -2,960..-1,980; loop-only 837/hr derivation still pinned - pinned worked example: pre-inventory -> break #1 @550 -> first restock @901 -> resume @902 -> break #2 @1452 -> restock #2 @1802 - staff of fire equip requirement wiki-verified 2026-08-28: none documented (infobox + prose silent vs Battlestaff's 30 Attack/30 Magic) - version 3 -> 4; validator 2 entries 0 errors (1 pre-existing F2P WARN); Closes #2
This commit is contained in:
parent
284ec17370
commit
5ddfc6cdbc
@ -3,8 +3,8 @@ title: Low-Level Alchemy (Members)
|
||||
domain: economy
|
||||
tags: [alching, magic-training, members, loss-training]
|
||||
status: verified
|
||||
version: 3 # 3: bounce-fix 2 2026-08-27 — additive cast+delay cycle (1.8s + 1.6-3.4s), iteration = full inventory+bank cycle
|
||||
updated: "2026-08-27" # ISO dates must stay quoted — YAML 1.1 parses bare dates to datetime.date
|
||||
version: 4 # 4: bounce-fix 3 2026-08-28 (owner guidance) — iteration = one cast, break.every in CAST counts (independent of bank visits), numeric carried_batch/restock_threshold, realized rates incl. setup+restock+breaks, full-lifecycle actions, pinned worked example
|
||||
updated: "2026-08-28" # ISO dates must stay quoted — YAML 1.1 parses bare dates to datetime.date
|
||||
|
||||
summary: >
|
||||
Magic training from level 21 by low-alching members items with the lowest
|
||||
@ -13,26 +13,32 @@ summary: >
|
||||
(mapping lowalch != null, members=true, live GE prices 2026-08-27). At
|
||||
current prices the method burns a small amount of GP per cast for 31 XP —
|
||||
run it for XP, not GP. Least-loss liquid anchor at last check: rune
|
||||
javelin tips (-3/cast). Handoff: switch to High Level Alchemy at level 55
|
||||
(hard level gate + strictly more coins AND XP per cast; see sources).
|
||||
javelin tips (-3/cast). Model pin (owner guidance 2026-08-28): one
|
||||
iteration = one cast; breaks every 400-700 COMPLETED CASTS (cast-count
|
||||
based, independent of bank visits); restock when candidate or nature
|
||||
drops below the numeric restock_threshold (100) against a carried_batch
|
||||
of 1,000/1,000 — pinned worked example below. Handoff: switch to High
|
||||
Level Alchemy at level 55 (hard level gate + strictly more coins AND XP
|
||||
per cast; see sources).
|
||||
|
||||
accounts:
|
||||
membership: members
|
||||
min_level: 21 # Magic 21 to cast Low Level Alchemy (wiki-verified)
|
||||
requires_quest: []
|
||||
requires_other:
|
||||
- "Staff of Fire equipped (removes 3 fire runes from the cost; no Attack requirement — the default path)"
|
||||
- "A bank with GE access within reach"
|
||||
- "Staff of Fire equipped (removes 3 fire runes from the cost; NO level requirement documented on the OSRS wiki — verified 2026-08-28, see sources — this is the default path)"
|
||||
- "A bank with GE access within reach (alch spot = GE bank booth; restock trip 60-120s)"
|
||||
- "Working capital >= 543,000 gp for one carried_batch (1,000 x 403 gp javelin tips + 1,000 x 140 gp natures, live 2026-08-27)"
|
||||
- "30 Attack + 50 Magic ONLY if adopting the optional Bryophyta's staff + Tome of Fire technique — below that the Staff of Fire path applies"
|
||||
|
||||
best_practice:
|
||||
equipment:
|
||||
- item: staff of fire
|
||||
why: "unlimited fire runes — LA rune cost drops from 3 fire + 1 nature to 1 nature per cast (~15gp/cycle saved)"
|
||||
source: "OSRS wiki — Staff of Fire; Low Level Alchemy (Cost)"
|
||||
why: "unlimited fire runes — LA rune cost drops from 3 fire + 1 nature to 1 nature per cast (~15gp/cycle saved); equip requirement: none documented on the OSRS wiki (verified 2026-08-28)"
|
||||
source: "OSRS wiki — Staff of Fire (id 1387, F2P item, tradeable, no requirements row in the infobox and none in the prose — compare Battlestaff which states 'requires 30 Attack and 30 Magic'); Low Level Alchemy (Cost)"
|
||||
techniques:
|
||||
- name: cast on noted (stacked) items
|
||||
why: "one inventory slot, minimal mouse travel between spell icon and item, no item un-noting"
|
||||
why: "one inventory slot, minimal mouse travel between spell icon and item, no item un-noting; means an inventory does NOT define a batch size — batch sizes are the explicit numeric carried_batch below"
|
||||
source: "OSRS wiki — Low Level Alchemy (Usage: casting alchemy spells on noted items)"
|
||||
- name: Bryophyta's staff + Tome of Fire (members-only, 50 Magic, 30 Attack)
|
||||
why: "charged Bryophyta's staff holds up to 1,000 nature runes (0 rune inventory slots) with a 1/15 chance per cast to not consume a nature rune; charged Tome of Fire supplies infinite fire runes in the shield slot and non-combat spells (alchemy) do not consume charges — the wiki documents this exact pair for alchemy profit; payback takes thousands of casts, so adopt at 50+ Magic when nature prices are high. EQUIP GATE: the staff requires 30 Attack + 30 Magic and the tome requires 50 Magic — accounts below 30 Attack (e.g. 1-Attack mules) cannot equip it and keep the ordinary Staff of Fire path (equipment section above) instead"
|
||||
@ -45,28 +51,36 @@ economy:
|
||||
# Verified 2026-08-27 against prices.runescape.wiki (live 'latest') +
|
||||
# OSRS wiki (spell infoboxes, Module:Exchange limits, item pages).
|
||||
# Re-verified at bounce fix 2026-08-27 with a fresh live fetch; the
|
||||
# modeled anchor is now the ACTUAL least-loss liquid candidate.
|
||||
# modeled anchor is the ACTUAL least-loss liquid candidate.
|
||||
# Bounce-fix 3 (2026-08-28, owner guidance): all rate fields are REALIZED
|
||||
# figures — setup/restock/breaks included, not just the cast loop.
|
||||
item: Rune javelin tips # least-loss liquid anchor 2026-08-27 (see profit_drivers)
|
||||
item_id: 19580
|
||||
cost_per_cycle: 543 # javelin tips buy 403 + nature rune 140 (staff of fire)
|
||||
income_per_cycle: 540 # lowalch of rune javelin tips (40% of value 1350)
|
||||
net_per_cycle: -3
|
||||
gp_per_hour_low: -3177 # -3/cast @ fastest cycle (1.8s cast + 1.6s delay = 3.4s) -> 1058.8 casts/hr
|
||||
gp_per_hour_high: -2077 # -3/cast @ slowest cycle (1.8s cast + 3.4s delay = 5.2s) -> 692.3 casts/hr
|
||||
xp_per_hour: 25953 # 31 xp/cast (wiki) @ midpoint cycle 837.2 casts/hr — pinned below
|
||||
# Pacing pin (docs/action-grammar.md:135): actions[].anti_ban.delay is a
|
||||
# MANDATORY post-action sleep, ADDITIVE to the action itself — it does not
|
||||
# overlap the cast. LA cast = 3 game ticks x 0.6s = 1.8s; the delay
|
||||
# [1600, 3400]ms = 1.6-3.4s. Cycle = cast + delay = 3.4s (fast) .. 5.2s
|
||||
# (slow), midpoint 4.3s.
|
||||
# casts/hr = 3600 / (1.8 + delay_s): 3.4s -> 1058.8; 5.2s -> 692.3; 4.3s -> 837.2
|
||||
# xp_per_hour (midpoint) = 837.2 x 31 = 25,953/hr (range 21,461 .. 32,823 by delay bounds)
|
||||
# gp_per_hour = casts/hr x -3: midpoint -2,512; low (fast) -3,177; high (slow) -2,077
|
||||
gp_per_hour_low: -2960 # realized (incl. restock+breaks), fastest cycle 3.4s -> 986.4 casts/hr x -3 = -2,959
|
||||
gp_per_hour_high: -1980 # realized (incl. restock+breaks), slowest cycle 5.2s -> 660.6 casts/hr x -3 = -1,982
|
||||
xp_per_hour: 24500 # realized midpoint 791.3 casts/hr x 31 xp = 24,530 (pin 24,500)
|
||||
# ---- realized-rate derivation (pinned; owner guidance 2026-08-28) ----
|
||||
# LOOP: cycle = 1.8s cast (3 ticks x 0.6s) + anti_ban.delay [1.6, 3.4]s ADDITIVE
|
||||
# (docs/action-grammar.md:135) = 3.4-5.2s, midpoint 4.3s -> loop-only
|
||||
# casts/hr = 3600/4.3 = 837.2; loop-only xp = 25,953 (837.2 x 31);
|
||||
# loop-only gp midpoint = -2,512 (837.2 x -3).
|
||||
# OVERHEAD per 901-cast batch (carried_batch 1000 - restock_threshold 100):
|
||||
# restock trip [60, 120]s (midpoint 90s, GE-adjacent booth);
|
||||
# breaks: every [400, 700] casts (midpoint 550) for [45, 120]s (midpoint
|
||||
# 82.5s) -> 901/550 = 1.64 breaks x 82.5s = 135s.
|
||||
# Total overhead = 90 + 135 = 225s per 901 casts.
|
||||
# REALIZED casts/hr = 901 / ((901 x cycle_s + 225) / 3600):
|
||||
# fast 3.4s -> 986.4; midpoint 4.3s -> 791.3; slow 5.2s -> 660.6.
|
||||
# xp_per_hour = 791.3 x 31 = 24,530 (pin 24,500; range 20,480..30,580).
|
||||
# gp_per_hour = realized casts/hr x -3: fast -2,959 (low), slow -1,982 (high), midpoint -2,374.
|
||||
supplies:
|
||||
- item: rune javelin tips
|
||||
qty_per_cycle: 1
|
||||
source: ge
|
||||
ge_limit: 10000 # mapping + Module:Exchange/Rune javelin tips agree (re-verified 2026-08-27)
|
||||
ge_limit: 10000 # mapping + Module:Exchange/Rune javelin tips agree (re-verified 2026-08-27); one carried_batch of 1,000 fits the 4h window
|
||||
- item: nature rune
|
||||
qty_per_cycle: 1
|
||||
source: ge
|
||||
@ -87,31 +101,47 @@ economy:
|
||||
- "9. Adamant spear(p) (id 1259, lowalch 832, buy 450, margin +382, GE limit 125)"
|
||||
- "10. Mystic mist staff (id 20733, lowalch 17000, buy 75727, margin -58727, GE limit 8) — buy spiked ABOVE alch value 2026-08-27; a true loss trap, do not buy"
|
||||
- "Caveat: thin items (limits 5-125) cannot sustain a run and their 'low' fills can be stale — a bot cannot reliably buy at those prices. The dependable loss-minimizers are the liquid high-limit pair modeled above: rune javelin tips (-3/cast) and rune arrow (-25/cast)."
|
||||
- "Batch-scale economics (default staff-of-fire path, worst case 1 nature/cast): carried_batch 1,000/1,000, restock every 901 casts — one batch = -2,703 gp, +27,931 xp, 2 x 540 gp coin deposits."
|
||||
|
||||
state_machine:
|
||||
initial: idle
|
||||
terminal: [complete, failed]
|
||||
states:
|
||||
idle:
|
||||
goal: reach the bank + have supplies in inventory
|
||||
next: [casting, bank_supplies]
|
||||
goal: "acquire + equip the staff of fire, GE-buy candidate + natures, build the starting inventory to carried_batch (1,000 candidate + 1,000 nature)"
|
||||
next: [casting, complete, failed]
|
||||
casting:
|
||||
goal: cast Low Level Alchemy on the current candidate item
|
||||
next: [bank_supplies, idle, complete, failed]
|
||||
goal: "cast Low Level Alchemy on the current candidate item — each cast consumes 1 candidate + 1 nature and pays 540 gp (lowalch), +31 xp, net -3 gp; take a break when the completed-cast counter hits run_control.break.every ([400, 700] casts)"
|
||||
next: [bank_supplies, complete, failed]
|
||||
bank_supplies:
|
||||
goal: bank the produced coins, withdraw fresh candidate + runes
|
||||
next: [casting, idle]
|
||||
goal: "deposit coins + products, withdraw candidate + natures back to carried_batch (1,000/1,000), resume casting"
|
||||
next: [casting, failed]
|
||||
complete:
|
||||
goal: reached the run's XP/level target
|
||||
goal: "reached the run's XP/level target (default 55 -> hand off to HLA)"
|
||||
failed:
|
||||
goal: hard failure — stop, log ERROR sentinel, alert
|
||||
goal: "hard failure — stop, log ERROR sentinel, alert"
|
||||
transitions:
|
||||
- from: casting
|
||||
when: "candidate item count < buffer OR nature rune count < buffer"
|
||||
to: bank_supplies
|
||||
- from: idle
|
||||
when: "magic level >= target (default 55, hand off to HLA at 55)"
|
||||
when: "staff equipped AND candidate == carried_batch AND nature == carried_batch (1,000 and 1,000)"
|
||||
to: casting
|
||||
- from: idle
|
||||
when: "magic level >= target (55, hand off to HLA)"
|
||||
to: complete
|
||||
- from: idle
|
||||
when: "3 consecutive purchase/equip failures with no fallback available (recovery block below)"
|
||||
to: failed
|
||||
- from: casting
|
||||
when: "candidate count < restock_threshold (100) OR nature rune count < restock_threshold (100) — deterministic restock trigger, pinned numbers"
|
||||
to: bank_supplies
|
||||
- from: casting
|
||||
when: "magic level >= target (55, hand off to HLA)"
|
||||
to: complete
|
||||
- from: casting
|
||||
when: "3 consecutive failed casts (client issue — do not loop)"
|
||||
to: failed
|
||||
- from: bank_supplies
|
||||
when: "restocked to carried_batch (1,000 candidate + 1,000 nature)"
|
||||
to: casting
|
||||
|
||||
# --- handoff note (wiki-verified 2026-08-27, do not copy from other entries) ---
|
||||
# Low Level Alchemy: level 21, 31 xp/cast, 1 nature + 3 fire (spellbook: Normal).
|
||||
@ -134,25 +164,69 @@ actions:
|
||||
verb: move_to
|
||||
target: bank
|
||||
params:
|
||||
location: "nearest bank with GE"
|
||||
location: "GE-adjacent bank (alch spot = the bank booth, so restock is a single short leg)"
|
||||
method: [teleport, walk]
|
||||
on_fail: retry
|
||||
anti_ban:
|
||||
delay: [400, 1600]
|
||||
|
||||
- id: a2
|
||||
step: buy-staff
|
||||
verb: ge_buy
|
||||
target: grand-exchange
|
||||
params:
|
||||
item: "staff of fire"
|
||||
qty: 1
|
||||
max_price: "live low + 25% (wiki value 1,500; hard cap 5,000)"
|
||||
on_fail: retry # retry once; on a second failure use the fire-rune fallback (see a3 note / recovery block)
|
||||
anti_ban:
|
||||
delay: [1200, 3000]
|
||||
|
||||
- id: a3
|
||||
step: equip-staff
|
||||
verb: menu_option
|
||||
target: "staff of fire in inventory"
|
||||
params:
|
||||
option: "Wield"
|
||||
note: "Equip requirement is NONE documented on the OSRS wiki Staff of fire page (no requirements row in the infobox, none in the prose; compare Battlestaff which states 'requires 30 Attack and 30 Magic'; verified 2026-08-28). FAILURE PATH — if Wield is unavailable or the staff cannot be equipped, fall back to buying 3 fire runes per cast (3 fire + 1 nature = 155 gp rune cost vs 140, net -18/cast at the anchor), log WARN and continue; never loop on equip attempts."
|
||||
on_fail: retry
|
||||
anti_ban:
|
||||
delay: [600, 1800]
|
||||
|
||||
- id: a4
|
||||
step: buy-supplies
|
||||
verb: ge_buy
|
||||
target: grand-exchange
|
||||
params:
|
||||
item: "current candidate item"
|
||||
qty: "fill to buffer"
|
||||
item: "current least-loss live candidate (default: rune javelin tips)"
|
||||
qty: "carried_batch = 1,000 (fits the 4h GE limit window of 10,000)"
|
||||
max_price: "live low + 5%"
|
||||
on_fail: retry # re-place at live low +5% with paced offers; 3 consecutive failures -> failed (recovery block)
|
||||
anti_ban:
|
||||
delay: [1200, 3000]
|
||||
|
||||
- id: a5
|
||||
step: buy-natures
|
||||
verb: ge_buy
|
||||
target: grand-exchange
|
||||
params:
|
||||
item: "nature rune"
|
||||
qty: "carried_batch = 1,000 (4h GE limit 18,000)"
|
||||
max_price: "live low + 5%"
|
||||
on_fail: retry
|
||||
anti_ban:
|
||||
delay: [1200, 3000]
|
||||
|
||||
- id: a3
|
||||
- id: a6
|
||||
step: build-loadout
|
||||
verb: bank_inventory
|
||||
target: bank
|
||||
params:
|
||||
deposit: [overflow products]
|
||||
withdraw: "candidate 1,000 + nature runes 1,000 (= carried_batch; both stackable, two inventory slots)"
|
||||
on_fail: retry
|
||||
|
||||
- id: a7
|
||||
step: cast-alch
|
||||
verb: use_item_on
|
||||
target: "candidate item in inventory"
|
||||
@ -160,37 +234,95 @@ actions:
|
||||
spell: "Low Level Alchemy"
|
||||
item: "least-loss live candidate in inventory"
|
||||
on: "itself"
|
||||
consumption: "1 candidate + 1 nature per cast (staff of fire default); pays 540 gp (lowalch) + 31 xp, net -3 gp"
|
||||
on_fail: retry
|
||||
anti_ban:
|
||||
delay: [1600, 3400] # MANDATORY post-action sleep, ADDITIVE to the 1.8s cast (3 ticks x 0.6s; action-grammar.md:135): cycle = 1.8s + 1.6-3.4s = 3.4-5.2s, midpoint 4.3s -> ~837 casts/hr (pinned in economy)
|
||||
delay: [1600, 3400] # MANDATORY post-action sleep, ADDITIVE to the 1.8s cast (3 ticks x 0.6s; action-grammar.md:135): cycle = 1.8s + 1.6-3.4s = 3.4-5.2s, midpoint 4.3s -> realized ~791 casts/hr incl. restock+breaks (pinned in economy)
|
||||
|
||||
- id: a4
|
||||
step: bank-loop
|
||||
- id: a8
|
||||
step: restock
|
||||
verb: bank_inventory
|
||||
target: bank
|
||||
params:
|
||||
deposit: [all coins, all products]
|
||||
withdraw: "candidate item + nature runes up to buffer"
|
||||
withdraw: "candidate + nature runes up to carried_batch (1,000/1,000)"
|
||||
on_fail: alert
|
||||
|
||||
- id: a9
|
||||
step: take-break
|
||||
verb: take_break
|
||||
target: "current location"
|
||||
params:
|
||||
duration: "[45, 120] seconds of idle AFK per break (matches run_control.break.for)"
|
||||
note: "executed by the translator when the completed-cast counter reaches run_control.break.every — this IS run_control.break's executor, fired on CAST COUNTS, not on bank visits; the cast counter is not reset by restocking"
|
||||
on_fail: skip
|
||||
|
||||
run_control:
|
||||
iteration: "one full inventory + bank cycle" # per docs/schema.md run_control: break.every counts iterations; one cycle = cast the carried candidate supply down to buffer, bank the coins, restock — a cycle ends at the bank visit
|
||||
max_iterations: null
|
||||
iteration: "one cast" # = one Low Level Alchemy cast (+31 xp, -3 gp at the anchor). Per docs/schema.md run_control, break.every counts ITERATIONS — so it counts CASTS here, NOT bank trips (owner decision 2026-08-28)
|
||||
max_iterations: null # null = until complete condition
|
||||
break:
|
||||
every: [8, 14] # iterations = full inventory+bank cycles (breaks land on bank visits)
|
||||
for: [45, 120] # seconds of idle AFK
|
||||
every: [400, 700] # COMPLETED CASTS between AFK breaks (midpoint 550 = ~39 min at the 4.3s midpoint cycle). Cast-count-based and independent of bank visits; a restock trip NEVER counts as a break and does not reset this counter
|
||||
for: [45, 120] # seconds of idle AFK per break
|
||||
stop_conditions:
|
||||
- "magic level >= target (55 -> hand off to HLA)"
|
||||
- "gp under floor"
|
||||
- "gp under floor (working capital below one carried_batch = 543,000 gp)"
|
||||
- "3 consecutive failed casts (client issue — do not loop)"
|
||||
- "3 consecutive failed GE purchases with no fallback candidate available"
|
||||
|
||||
# ================= WORKED EXAMPLE (pinned, deterministic — owner guidance 2026-08-28) =================
|
||||
# Constants: carried_batch = 1,000 candidate + 1,000 nature; restock_threshold = 100;
|
||||
# break.every = [400, 700] casts (midpoint 550); break.for = [45, 120] s;
|
||||
# default staff-of-fire path consumes 1 candidate + 1 nature per cast (worst case 1:1 —
|
||||
# with Bryophyta's staff the nature side drains slower, so the candidate stays binding).
|
||||
#
|
||||
# Step 0 — before the first inventory: account holds >= 543,000 gp working capital
|
||||
# (1,000 x 403 + 1,000 x 140). At the GE bank: GE-buy staff of fire, Wield it
|
||||
# (no documented requirement), GE-buy 1,000 rune javelin tips + 1,000 nature runes,
|
||||
# withdraw both -> loadout = carried_batch 1,000/1,000. Cast counter := 0.
|
||||
# Step 1 — casts #1..#550: each cast consumes 1 candidate + 1 nature (-543 gp) and pays
|
||||
# 540 gp (lowalch) + 31 xp -> net -3 gp. Cast counter 0 -> 550 (~39 min at midpoint).
|
||||
# Step 2 — FIRST SCHEDULED BREAK at cast 550 (midpoint of break.every [400, 700]): run
|
||||
# take-break for 45-120 s. Resume casting at cast 551. The break fired on the CAST
|
||||
# COUNT, not on any bank visit; the restock counter is untouched.
|
||||
# Step 3 — casts #551..#901: countdown candidate 1000-901 = 99 < 100 (restock_threshold)
|
||||
# and nature 1000-901 = 99 < 100 simultaneously (worst case 1:1) -> the transition
|
||||
# fires at the end of cast #901: FIRST RESTOCK/BANK EVENT at cast 901.
|
||||
# Coins deposited at this restock: 901 x 540 = 486,540 gp; batch net so far -2,703 gp;
|
||||
# batch xp so far 901 x 31 = 27,931.
|
||||
# Step 4 — restock: deposit coins + products, withdraw 901 candidate + 901 nature ->
|
||||
# carried_batch restored to 1,000/1,000. Resume casting at cast 902 (cast counter
|
||||
# continues; the break counter also continues — restocking never resets either).
|
||||
# Step 5 — SECOND BREAK when the cast-count interval since break #1 completes
|
||||
# ([400, 700], midpoint: cast 902 + 550 = 1,452): take-break, resume at 1,453.
|
||||
# Step 6 — restock #2 fires at cast 1,802 (901-cast batch cadence), and so on, until a
|
||||
# stop_condition fires (Magic >= 55 -> HLA handoff; gp under floor; 3 failed casts).
|
||||
# Bank visits and breaks are INDEPENDENT by construction: restock cadence = 901 casts;
|
||||
# break cadence = 400-700 casts, and the two counters do not interact.
|
||||
# ============================================================================================
|
||||
|
||||
risk:
|
||||
ban_level: low
|
||||
notes:
|
||||
- "High cast cadence is the main detection vector; keep the mandatory anti_ban delays (cadence pin: ~837 casts/hr at the 4.3s midpoint cycle = 1.8s cast + 2.5s post-cast sleep)."
|
||||
- "GE buy bursts: pace offers, respect the 4h limit window; thin items (limit < 100) cannot sustain a long run."
|
||||
- "High cast cadence is the main detection vector; keep the mandatory anti_ban delays (cadence pin: additive post-cast sleep [1.6, 3.4]s; realized ~791 casts/hr at the 4.3s midpoint cycle incl. restock + breaks; loop-only 837)."
|
||||
- "Breaks are CAST-COUNT-based (every [400, 700] completed casts, 45-120s AFK) and independent of bank visits — never treat a restock trip as a break."
|
||||
- "GE buy bursts: pace offers, respect the 4h limit window (10,000 javelin tips / 18,000 natures); thin items (limit < 100) cannot sustain a long run."
|
||||
- "Thin-item 'latest low' fills can be stale — confirm fill price with a live GE offer before committing a run; the liquid high-limit pair (rune javelin tips / rune arrow) is the dependable loss-minimizer."
|
||||
|
||||
# --- recovery block (owner guidance 2026-08-28: every activity must cover its complete runnable lifecycle) ---
|
||||
# - Missing materials / depleted supplies: the restock_threshold transition (casting ->
|
||||
# bank_supplies at candidate OR nature < 100) catches both mid-run depletions; restock
|
||||
# action a8 rebuilds to carried_batch and the loop resumes (worked example steps 3-4).
|
||||
# - Failed GE purchases (offer unfilled): re-place at live low + 5% with paced offers
|
||||
# (a4/a5); after 3 consecutive failures, alert + stop (failed) unless a fallback
|
||||
# candidate is switched in — never sit in an unfillable offer loop.
|
||||
# - Staff of fire cannot be equipped (a3): fall back to buying 3 fire runes per cast
|
||||
# (3 fire + 1 nature = 155 gp/cast rune cost vs 140; net -18/cast at the anchor),
|
||||
# log WARN, continue; never loop on equip attempts.
|
||||
# - Invalid loadout (wrong item in hand / spell unavailable): re-run build-loadout (a6);
|
||||
# 3 consecutive failed casts -> failed (stop, log ERROR sentinel, alert).
|
||||
# - Explicit completion/stop: stop_conditions above (Magic 55 HLA handoff, gp floor,
|
||||
# repeated failures).
|
||||
|
||||
sources:
|
||||
- "OSRS wiki — Low Level Alchemy (level 21, 31 xp/cast, 3-tick, 1 nature + 3 fire; spellbook Normal; infobox 2026-08-27)"
|
||||
- "OSRS wiki — High Level Alchemy (level 55, 65 xp/cast, 1 nature + 5 fire; 60% of item value; infobox 2026-08-27)"
|
||||
@ -204,7 +336,9 @@ sources:
|
||||
- "OSRS wiki — Abyss (access to runic altars without talismans via the Mage of Zamorak)"
|
||||
- "OSRS wiki — Bryophyta's staff (level 30 Attack + Magic; up to 1,000 nature charges; 1/15 chance to not consume a charge on any nature-rune spell; alchemy combo with Tome of Fire)"
|
||||
- "OSRS wiki — Tome of Fire (members, level 50 Magic to wield; charged tome is an infinite fire-rune source and non-combat spells do not consume charges)"
|
||||
verified: "2026-08-27" # keep quoted (YAML 1.1 date parsing)
|
||||
- "OSRS wiki — Staff of fire (page verified 2026-08-28 for the equip requirement: id 1387, F2P item, tradeable, options Wield — NO requirements row in the Infobox Item and NO requirement statement in the prose; contrast Battlestaff, whose prose states 'requires 30 Attack and 30 Magic to wield')"
|
||||
- "docs/schema.md run_control (iteration unit; break.every counts iterations) + docs/action-grammar.md:135 (anti_ban.delay = additive post-action sleep) + verb take_break — the cadence + break + recovery model"
|
||||
verified: "2026-08-27" # keep quoted (YAML 1.1 date parsing); prices last re-fetched live 2026-08-27
|
||||
|
||||
related:
|
||||
- low-alch-f2p
|
||||
|
||||
Loading…
Reference in New Issue
Block a user