Every wild creature defeated makes three independent rolls — one for gear, one for an enhancement (gem / rune / scroll, even split), and one for the defeated line's Stage-1 egg. Each roll uses the same per-floor chance table below. When a gear roll succeeds, the base is a uniform pick among the gear bases (weapons, armour, accessories, tags); a successful enhancement roll splits evenly across gem / rune / scroll, uniform within the family.
Per-kill chances are scaled on the game-wide rarity value ladder — C 1.0 / UC 1.5 / R 2.5 / SR 4.0 / SSR 7.0 (the same ladder as XP and Ichor) — and normalized per floor against codex/encounter_weights.csv, so each drop family lands exactly 10% per battle (3 kills) in expectation on every floor of the tower. Rarer kills pay better; the floor-wide economy never drifts.
All chances on this page are read live from the codex CSVs — drop_chances_by_floor.csv, drop_grade_weights.csv, key_drop_rates.csv, boss_loot.csv, first_win_drops.csv — the same tables the game reads. Nothing is hardcoded.
Chance (%) that one defeated creature of each rarity drops from one family. The same table is rolled once per family (gear, enhancement, egg). Boss floors have no wild encounters.
Source: codex/drop_chances_by_floor.csv · normalized against codex/encounter_weights.csv
When a gear drop lands, its grade is rolled from the band of the floor it dropped on. Divine, Primordial, and Void never drop — the grading gamble (paid in Scrap) is the only path to Divine+ gear, and breeding the only path to Divine+ creatures.
Band shifts: Enhancements (gems, runes, scrolls) roll their grade one band behind gear. Boss gear rolls one band ahead of the boss's band (the band after the tower’s 91–100 row is the first Void Apex row, so the floor-100 boss rolls floor 101’s Rare-and-up row; Apex rows are one floor wide, so an Apex boss rolls one floor ahead (floor 102 reads 103) and floor 120 clamps to its own row). Wild and boss eggs use the floor band clamped to the Legendary wild-egg cap.
Source: codex/drop_grade_weights.csv · band rules in codex/drop_rates.csv and codex/boss_loot.csv
A single zone-specific Key (ITM-KEY-010…ITM-KEY-100) is required to enter a boss floor and is consumed on entry. Every wild creature defeated on the zone's 9 preceding floors rolls for that zone's Key, per creature, scaled on the rarity value ladder and normalized so a minimum-win journey through the zone yields exactly one Key in expectation.
Guaranteed key: the first time a character clears the 9th floor of a zone (floors 9, 19, … 99), a Key is guaranteed to drop — one-time per zone per character.
Gates: a zone's Key cannot drop until the character has banked that zone's Min_Wins wins AND Min_Kills wild kills (zoneWins/zoneKills in the save, counted per zone, wild battles only — a boss win advances neither). Below either gate the roll is skipped entirely.
A Key that drops into a full inventory is DESTROYED. Every grant goes through one shared space check: no free item slot means the drop is discarded, never queued and never held — the victory screen reports only the generic "N drops lost — inventory full" and does not say a Key was among them. Since keys are the rarest item lane in the zone (0.46% per Common kill in Desert Plains, ~1 per 60 battles), a player farming with a full bag can lose several keys without ever knowing. Reported live 2026-08-01 by a player stranded on floor 29 with 235 zone wins and no key; his context snapshot read invCount 80 / invCap 80.
Void Apex rate (D, 2026-08-25): on each Apex key floor (101, 103, … 119) one Key is expected every two hours of chance at one won battle every 15 seconds — 1,440 kills per Key, split by the rarity ladder, normalised on that floor's encounter mix. Those ten rows are generated from that sentence (tools/gen_keyrates.py), never hand-typed; the tower's ten rows keep their authored minimum-win normalisation.
Source: codex/key_drop_rates.csv
Every boss kill guarantees two drops, delivered on the battle-conclusion screen straight to inventory:
One piece of equipment — a uniform pick among the Weapon / Armour / Accessory bases, at the boss floor's tier, with grade rolled one band ahead of the boss's floor band: the band after the tower’s 91–100 row is the first Void Apex row, so the floor-100 boss rolls floor 101’s Rare-and-up row; Apex rows are one floor wide, so an Apex boss rolls one floor ahead (floor 102 reads 103) and floor 120 clamps to its own row. Divine+ never drops.
One native egg — a Stage-1 egg of any line that spawns on the zone’s floors (floor_creature_rarity.csv: a line counts when any of its stages spawns there; the egg is its Stage 1) — 69–87 lines per tower zone, not just the ten lines creatures.csv files under that zone as home, weighted by the canonical rarity chances 30/30/20/10/10 (C/UC/R/SR/SSR) normalized over the tiers present in the zone. Grade from the boss's floor band, clamped to the Legendary wild-egg cap — breeding remains the only path to Divine+ and Void creatures. Void Apex bosses (102–120): the pool is the Apex's own line list (all 100 lines) and the tier weights come from that boss floor's row in apex_boss_egg_rarity.csv instead of the 30/30/20/10/10 above; the egg is any line, including the lines of the three creatures in the fight — nothing is excluded (D ruling 2026-08-27: “apex boss is any egg ok”). Full mechanics on Void Apex. On DEV since 2026-08-27, on release at the next push.
Source: codex/boss_loot.csv
The first 10 wild-battle wins each grant an additional guaranteed drop on top of the normal rolls. All grants spawn at Worn, Tier 1. Boss wins do not advance the counter. Win 1 rolls the accessory family at random; win 4 grants the complement. Egg grants (wins 1 and 9) give the Stage-1 egg of the lowest-rarity enemy present, random among ties.
Source: codex/first_win_drops.csv
| Item Type | Sources | Tier & Grade Rules |
|---|---|---|
| Gear — Character | ||
| Weapon (MH/OH, 6 classes) | Wild gear roll · boss guaranteed gear · first-win ladder (crafting removed 2026-10-01) | At-floor tier. Grade from the floor band; boss gear one band ahead. Divine+ never drops — the Scrap grading gamble only. Equip: tier N needs character level ≥ (N−1)×10. |
| Armour (Head / Chest / Gloves / Feet) | Same as weapons | Same tier, grade, cap, and equip rules as weapons. |
| Accessory (Signet +Atk / Relic +HP) | Same as weapons; win 1 rolls one family, win 4 grants the complement | Same tier, grade, cap, and equip rules as weapons. |
| Gear — Creature | ||
| Tag (Carapace / Fang / Heart) | Wild gear roll | At-floor tier, floor-band grade, Divine+ never drops. Equip: tier N needs creature level ≥ (N−1)×10. Full gem/rune/enchant slot rules; no soul socket. |
| Enhancements | ||
| Gem (Garnet / Onyx / Bloodstone) | Wild enhancement roll (even split gem/rune/scroll) · first-win ladder (crafting removed 2026-10-01) | Grade weights sit one band behind gear. Dismantles to Dust. |
| Rune (Ruin / Aegis / Vitality) | Wild enhancement roll | One band behind gear. Dismantles to Essence. |
| Scroll (enchant) | Wild enhancement roll | One band behind gear. Effect rolled at socket; enchants are item-local. Dismantles to Ink. |
| Creatures & Access | ||
| Egg | Wild egg roll (the defeated line's Stage-1 egg) · boss guaranteed native egg · first-win ladder (wins 1, 9) · breeding | Drop grade from the floor band, clamped to Legendary (wild-egg cap). Breeding is the only Divine+/Void path. Hatch grade weights on the Eggs page. |
| Boss Key (zone-specific) | Per-kill roll on the zone's 9 wild floors · guaranteed on first 9th-floor clear | One expected Key per minimum-win zone journey. Consumed on boss entry. No grades. |
| Currencies & Materials | ||
| Scrap | Dismantling gear (all grades) | Never drops directly. Feeds gear crafting. |
| Ichor | Every kill, wild and boss: round(2 × (1 + level/100) × mult), mult C 1 / UC 1.1 / R 1.2 / SR 1.35 / SSR 1.5 (#772) · egg dismantles (breeding.csv Egg_Dismantle_Ichor). Gear dismantles pay no Ichor. | Feeds the Ichor gamble — the only source of Divine+ gear. |
| Dust / Essence / Ink | Dismantling gems / runes / scrolls (tier × grade#) | Never drop directly. Feed enhancement crafting. |
Rules mirror codex/drop_rates.csv, codex/boss_loot.csv, GDD Combat & Reward Systems, and Stat Tables §15.
Wild_Egg_Grade_Cap in drop_rates.csv (Legendary),
with the grade ladder read from the order of drop_grade_weights.csv rather than restated in
code. This clamp is load-bearing: the 91–100 band authors an Abyssal weight, and without the cap a
wild egg could hatch above the ceiling that makes breeding the only path to Divine and above. No cap
authored means no egg is granted, the same no-fallback rule the rates use.LIVE on release since 2026-08-08 (0.42). Server-side rolls items 5 and 6. The wild drop lanes moved on
2026-08-01 and the boss lanes were left behind, so
rollGearDrop → rollDropGrade → Math.random() survived on the
client for the single most valuable drop in the game, and the boss-key chance was the last
Math.random() on the wild-kill reward path. Both are gone.
| Lane | Rule |
|---|---|
| Boss gear | Count is guaranteed (Gear_Guaranteed_Per_Kill). The grade rolls the band shifted by Gear_Grade_Band_Rule — “one_band_ahead” is a value in the CSV, not a branch name in code. The floor-100 boss reads floor 101’s row (the first Apex band), an Apex boss the next floor’s, floor 120 its own. |
| Boss egg | One Stage-1 egg of any line that spawns in the zone (floor_creature_rarity.csv), tiers weighted by the newly machine-readable Egg_Line_Weight_* Params, grade rolled on the boss's own band and clamped to the wild-egg cap. |
| Boss key | The chance is the server's, off key_drop_rates.csv at the kill's rarity, at most one per battle. The Min_Wins/Min_Kills gate counters stay the client's, per D's ruling — “We are tracking battle wins. So it should be trivial for the client to keep the streak counter, and it should.” They are clamped to the server's own credited ledger before they are read, so an inflated claim buys nothing and costs no extra write. The deterministic first-clear key is untouched: it is a grant, not a roll. |
boss_loot.csv authored the egg's line weighting as
Egg_Line_Weighting,rarity_appearance with “30/30/20/10/10 (C/UC/R/SR/SSR)”
inside the Notes cell. Notes are prose, not data: nothing could read them, and the
client carried the numbers as a literal. They are five Params now —
Egg_Line_Weight_C through _SSR, values unchanged. A formatting fix, not a
balance change, and the same failure the enchantment magnitudes had.
A drop that throws now says so. An exception in the drop roll used to
leave drops simply absent, which is indistinguishable from “nothing
dropped”. The boss lanes vanished for an entire probe run and the only trace was a flag nobody
reads; the response carries dropNote now, and it named the cause in one run. Same lesson
as the swallowed floor sync — a refusal that looks like a null result is the worst kind.
Probes. tools/probe_bossloot.py 9/9 and
tools/probe_bosskey.py 5/5, full stack. The loot probe climbs to a boss floor the honest
way (the Genesis rule caps a new account at floor 2) and waits out the spawn budget between kills.
The key probe deliberately has no end-to-end “a key dropped” test: the
cheapest authored gate is 29 wins / 87 kills, every credited kill costs a spawn credit refilling at
one per minute, and the chance behind it is 1.4% for a Common — roughly ninety minutes to open
the gate and hours more to land one. It tests the gate, the clamp and the naming, which are the parts
that can be attacked.
drop_grade_weights.csv itself — one single-floor band per Apex floor instead: four grades only — Rare, Epic, Legendary, Abyssal — with Rare as the floor and Divine, Primordial and Void never dropping. Eggs use the same curve with the Abyssal share folded into Legendary. LIVE on release since 0.48 (2026-08-13) — drop_grade_weights.csv carries eighty single-floor Apex bands and the client reads that file at boot.craft; record); the sources are the wild roll, boss gear and the first-win ladder. Materials go to Upgrading.bossloot, D: “review and test”). WIKI ONLY; no code changed. The Boss Loot text said the gear band’s “final band clamps to itself” and the egg comes from the zone’s Home_Zone lines. Tested on the shipped server code: the floor-100 boss rolls floor 101’s row, the first Apex band (200 of 200 draws, none below Rare); an Apex boss reads the next floor’s single-floor row (floor 102 reads 103, 200 of 200) and floor 120 its own; a tower boss egg comes from every line that spawns in the zone (The Crag: 300 eggs, 85 distinct lines, 275 outside its ten home lines). The client did the same before the 2026-08-08 server move, so the game has never used Home_Zone here. Text and the boss_loot.csv Notes now say what the server does; whether the egg should narrow to the home lines, and whether the floor-100 piece should reach into the Apex row, are open for D. Gate tools/probe_bossloot_review.mjs 3/6 → 6/6.items.csv cannot load, a gear or enhancement drop is now dropped and its raw draw stripped, as this page already said; before, the unresolved descriptor reached the client. A kill’s lane budget is 10 draws, not 8: a gear hit and an enhancement hit on one kill spend four lanes each, and the eighth-lane cap either lost later drops or forced the enhancement to a Gem. Every draw an 8-lane kill made is unchanged. Gate tools/probe_laneq.mjs 0/15 → 15/15.Super Super Rare key, the spelling every wild SSR carries, so the row showed ×1 against the server’s ×1.5; the row is also rewritten to the server’s credited Ichor when the answer lands (F084). The battle event maps Super Super Rare to SSR, as the reward path does (F089). The dead leftovers of the old client drop rolls in the reward builder are gone; every drop is the server’s (F087). boss_overdraft, the rate bank’s granted overdraft on an honest boss clear, is filed as system telemetry, no longer as a suspected key forgery (F086). Gates tools/probe_lanej.mjs 4/19 → 19/19, probe_ichorcurve 5/6 → 6/6 (now fed the real spelling).dismantle.csv); egg dismantles do. The Void Apex boss-egg sentence said the egg is never one of the fight’s lines; the server draws from all 100 lines with no exclusion, which is what D’s ruling allows. DESCRIPTIVE ONLY.boss_loot.csv both name a uniform pick among the Weapon / Armour / Accessory bases; the worker now drops Tag from the pool when the drop is marked boss. Wild gear is unchanged and still draws Tags. Gate: tools/probe_f090_f091.py.drop_grade_weights.csv carries eighty single-floor Apex bands over exactly Rare, Epic, Legendary and Abyssal, and the client fetches that file at boot. The Apex has been on release since 0.48 (2026-08-13); the sentence had been telling readers otherwise for four weeks. DESCRIPTIVE ONLY: no game behaviour changes.apex_boss_egg_rarity.csv was read by nothing. Fixed server-side; tower bosses unchanged. Same day, the Apex key lane was replayed on 723 live floor-101 events from the spawn secret: every recorded drop and the one key the server granted reproduce exactly — the rates on release are the 08-25 table (1 per 1,440 kills on floor 101), a ~1,500-win run without a key is a ~4% event at that rate, and no gate or clamp fired. Nothing about keys changed.2026-08-10 — Void Apex drop band authored. Per-floor grade bands for floors 101–120, added to this page's own table,, ranked Rare through Abyssal, tuned by simulation so an Abyssal drop stays rare at the entry (0.1% per drop) and uncommon at the cap (1.5%). The last three grades remain upgrade-only everywhere. Full rules on Void Apex.
2026-08-08 — boss gear, boss eggs and boss keys are decided server-side.
LIVE on release since 2026-08-08 (0.42). rollGearDrop, rollBossEgg and
rollDropGrade are all deleted — the last was the final Math.random()
grade roller in the client. The boss-egg tier weights became machine-readable Params in
boss_loot.csv (values unchanged); DATA_PIN moves with them. Probes:
tools/probe_bossloot.py 9/9, tools/probe_bosskey.py 5/5.
/api/battle’s resolved drops array is now what the client renders; the
gear, enhancement and egg rolls were deleted from the client rather than mirrored, and
rollEnhDrop/rollEggDrop are gone. XP and Ichor are deterministic and still
credit immediately, so the drop rows arrive during the victory bar fill. Two defects closed on the way:
the server was band-rolling egg grades with no Legendary clamp (a forbidden Abyssal egg at
floors 91–100), now authored as Wild_Egg_Grade_Cap; and the derived spawn’s
creature id was being discarded one line after it was derived, leaving the egg lane unable to name a
line at all.category|family bucket and
then an item inside it — over-weighting bases in small families against the uniform-across-bases
rule authored here. The draw is made in the player’s object and mapped to items.csv
by the Worker, so the 208 KB table never rides the battle request.floors.csv instead of a hardcoded ceil(floor/10). No fallback
constants: a missing table means no drop and a flag. (Backfilled 2026-08-01 — this page had
no changelog section, and the commit that should have added this entry skipped it silently.)