v0.5.8-dev · 2026-07-19
Dressed to Kill
Last release dressed the units; this one arms them. The equipment system, inert for its whole prior life, now actually changes a unit — and a Discord bot went up so the playtest can start.
Added — the equipment system wakes up (929d36a, 3fe7227)
- Layer 1:
recalc_stats_from_dbnow runs insideapply_loadout_to_unit, so gear finally reaches live units instead of only tests. Ordering is load-bearing: job base → gear → recalc → HP/MP top-up → supports → statuses. - Layer 2 — weapon classes:
WeaponTypegrew from 8 to 19 FFT classes, each with its own attack formula (dagger(PA+SP)/2, staffMA, gun flatWP, and so on). FFT multipliesXA × WP; we add WP to the attack rating instead, to keep the live damage curve rather than re-inflate it. Weapon range applies to the basic attack (bow 5, gun 6, …) and reaches both the AI and the client. - Layer 3 — rolled gear: each of the 5 slots draws a per-battle item from a rarity bucket (60/30/9/1). Account level raises the roll FLOOR only, never the ceiling, and a roll at or below the standard kit keeps the standard item — the ceremony can only be good news. No inventory, shop, or ownership.
- ~150 items ported from the WotL list, replacing 32 placeholders. Body/head armour grants HP, not DEF (FFT's own design).
Added — the Equip-* supports and two-weapon fighting (4efb5c5, df1a003, 8324e9a)
- Eleven
Equip-*supports, blocked since v0.5.6 because the gear they hook did nothing. Under a rolled model they widen the unit's ROLL POOL instead of unlocking a menu entry, which makes them a genuine gamble: you spend your one Support slot on a different distribution of what can turn up. A ninja with Equip Guns is a gunner that battle. - The weapon roll is two-stage — class first, then rarity, then the item. Rolling the class first is what makes the bucket odds mean what they say; a merged-pool draw would instead weight each class by how many items happen to be authored for it. Buckets: swords 70/30, knives 70/30, bows 70/30, axes 40/40/20, polearms 60/30/10, guns 35/45/20 (gun/book/instrument), staves 60/40, katana 100, fists 100% bare-handed.
- Doublehand doubles a one-handed weapon's power — two-handed classes already grip with both hands, so it no-ops there. Dual Wield fills the shield hand with a second weapon and makes the basic Attack strike TWICE. Both clear the shield. Of the whole family only Safeguard is still unbuilt: it needs gear destruction to protect against, which does not exist yet.
Added — Codex EQUIPMENT tab (b351839)
- A fifth tab covering all 19 weapon classes and every item: each class's damage formula, reach, quirk and wielders, then every item grouped by roll tier with its real per-item drop rate. The roll is class → tier → item, so a tier percentage on its own would overstate each individual piece. The registry ships from the engine rather than being hand-mirrored, so the tab cannot drift from what the roll actually does.
Added — the movement R/S/M slot goes live (2e75693)
- Move +2 / Jump +3 / Teleport / Levitate were pure tooltips for months; now
apply_movement_stat_modsfolds them intounit.stats, andget_move_rangegrew teleport and floating modes. The last inert R/S/M slot is now wired.
Added — flat-rate jackpot (a9be3a9)
- One skill-rolling unit in ~150 now skips the per-ability passes and fields its ENTIRE primary catalogue (dressed in gold on the reveal card). A flat rate, deliberately not an all-miss trigger — that would fire constantly for small kits and never for large ones. Ninja and dragoon grew 4→9 actions.
Added — Discord playtest bot + build pipeline (78012b0, 09ecda2)
- Saint Ajora rolls a unit exactly as a battle does via
!roll CLASS SUBCLASS(and/rollwith job autocomplete). The bot holds zero game knowledge — it callsGET /api/roll_preview, which runs the real roll on a throwaway match state — so it can never quote odds the game doesn't use. tools/publish-playtest.ps1: build → publish to the public builds repo → announce in#releases. Builds ship fromshattered-crowns-buildsbecause the main repo is private; the 56 MB zip is a link, never a Discord upload.