Skip to content
Shattered Crowns

v1.0.0-beta · 2026-08-06

Verdict

Out of alpha. Thirty-six point releases after the first prototype, the core loop is feature-complete — 18 jobs, 190 abilities, the full status / equipment / per-battle roll stack, online play with accounts, progression, cosmetics, leaderboards and chat, offline vs AI, effects, music, the Codex and the website — and the work has visibly shifted from building systems to tuning them. That is the alpha→beta line, and this release crosses it. The codename stands: the verdict is beta.

Joe's v0.5.35 playtest, item by item — six rule changes from one match log, plus the client work the same session asked for.

The rules (engine)

  • JP pays on LANDED hits only. A miss, a whiff, a full resist — 0 JP. The v0.5.35 log banked 35 JP on a missed Insult and 35 on a missed Life Leech; the roll already said the turn was wasted, and the JP line no longer disagrees. Multi-target casts pay in full if ANY target was touched.
  • Only the Knight's Break arts destroy equipment. Barbed Arrow rode the same arm and deleted three body pieces in one match from five tiles at uncommon rarity — it keeps the −30% DEF sting and loses the demolition (AbilityDef.shatters_gear).
  • Persuade and Insult land on the stars. An authored accuracy on a morale-rolled ability now reads acc × zodiac compatibility instead of the Brave curve that had the Orator charming or confusing somebody nearly every turn: persuade 50, insult 60 — 25–90 across the wheel, ~55 on a neutral pairing. The other ~50 morale abilities keep their curve untouched.
  • Vanish redesigned (the old Invisible broke on acting, and the cast that applies it is an action — the log shows it applied and stripped in the same batch, 18 MP for nothing). Now a defensive veil: +50 to both evades until the first attack roll against the bearer, hit or miss, consumes it. Facing still beats it — evade is zero from behind — and the AI can see a vanished unit again; the +50 just makes them a worse target through the same hit-chance everything else reads.
  • FREE AIM. Most single-target abilities, good or bad, now accept allies and enemies alike — potion an enemy, Esuna their debuffs, drain your own knight, Phoenix Down an enemy corpse (they rise for THEIR side; the play is Undead). FFT's rule, and the exact wall Joe hit aiming an Ember Plume at the Arcanist's body. Area abilities keep their side filters; Charm and Steal stay enemy-only.
  • Quicken lasts 2 turns (was 3). Earth Slash is monk RARE (was uncommon — a ranged line sweep in half of all monk kits).
  • The AI reads the pending cast queue before it moves. The log's Arcanist queued Meteor and then walked one tile into its own blast for 97; both AI tiers now score destinations against every charging spell on the board — their own and the enemy's — so bots sidestep telegraphed casts (which also makes charged tile-anchored arts genuinely dodgeable, as FFT intends; the samurai's sim winrate paid ~5 points for it).

The battle (client)

  • Match point. The killing blow of the match plays in slow motion with the camera on the fallen, whatever the ability's tier — and VICTORY waits until the moment finishes instead of covering a match-winning summon mid-gate.
  • ⚙ Settings in battle — volume sliders and fullscreen in a compact popup off the top bar, driving the same persisted numbers as the menu page. No more un-mutable music mid-match.
  • The turn order shows where a hovered cast would land — aim a charged ability and a gold "would land here" chip slots into the rail at the position a commit would give it (Short Charge priced exactly as the engine will). Mid-charge units are also now correctly held out of the projected order.
  • Results board: JOB column reads "Job / Sub", the ✦ used-abilities line finally tints by rarity (it was the board's one uncoloured list — the "everything is gray" report), rarity colours come from one shared palette, and the whole board scales its type up at 3v3.
  • A raised unit's HP bar fills the moment they stand; the client no longer opens a turn banner for a unit KO'd by a cast landing in the same instant; KayKit bows no longer sit backwards in the hand.

The Codex (art)

  • Portrait repairs. The keyed figures were rendering half out of their column (a zero-size PRESET_CENTER call growing the rect down-right) — now genuinely centered. And the keyer had eaten pale features: the White Seraph's entire white robe, the squire's and chronomancer's faces. Genuine see-through gaps measure d 0.000–0.016 from paper while eaten features start ~0.03, so the recipe now keys at --hole-tol 0.03, with --seal 4 closing the two face leaks. All 18 verified by eye on dark composites.

The thief learns real crime (same-day follow-up)

  • Steal Crowns (the old do-nothing Steal Gil, repurposed in place): lifts 30 of the opponent's account Crowns into yours — a real transfer, settled server-side at match end, only between two human accounts (a bot's or guest's purse pays nothing), voided under the 10-turn minimum like every payout, and clamped so a near-broke victim empties rather than overdraws. Once per battle.
  • Steal JP (new, uncommon): lifts 10 JP from the mark's in-match pool into the thief's — floors at what they've actually earned, and the account settlement can only zero a victim's match earnings, never touch what's banked. Once per battle.
  • Both roll acc 60 × zodiac — the talk-skill rule with fingers — and the one charge is spent by the attempt, hit or miss, exactly like an ultimate: a mark who dodges the fingers has beaten them. Steal Heart joins the zodiac rule too (acc 50, Persuade's charm sibling — leaving one charm on the old 70–95 curve would have made the thief's strictly the better orator).
  • Bots never spend them. Both steals move account property on a one-per-battle charge; that's a human's decision, and a bot thief lifting a human's Crowns is a griefing bot. Bots that roll the cards simply hold them.

The wheel takes the dances (second same-day follow-up)

The standing rule, now written at the site in jobs.rs: charm, confuse, allegiance, larceny, dances — anything that works on a person rather than a body — rolls acc × zodiac. New members this pass:

  • The four status dances (Slow Dance, Faltering Step, Disillusion, Nameless Dance) at Joe's "around 50–100%": base 100 → 50 / 75 / 95 / 95 / 95 per enemy, each rolled on its own sign (the 95 morale ceiling caps the friendly half — nothing gated on conviction is certain). They were the loudest gap in the v0.5.24 migration: three of the four had NO roll at all — Slow Dance blanket-slowed everyone in earshot, automatically, forever.
  • Rabble-Rouse at 55 — Insult writ wide, priced a shade under the single-target version because a net thrown over four people is allowed a looser weave.
  • New census guard: the_zodiac_accuracy_family_is_wired_complete names any member missing either half of the wiring (the morale hit_rule that routes the roll, or the authored base that flips it onto the wheel).

Verified, not changed

  • Equipment stats apply exactly (Joe's #11): the log's own arithmetic checks out to the point — archer 90 base + 12 hood + 12 garb = 114 HP, SP 9+1+1 = 11; both Black Robe destructions dropped max HP by exactly 13 and max MP by exactly 20 mid-match.
  • Clip-last-action (Joe's #12): assessed and parked. Runtime video capture needs an encoder Godot doesn't ship (a ring buffer at 1080p is gigabytes raw; encoding means an ffmpeg GDExtension) — a real project, not a bake-in. Windows Game Bar (Win+G, "record last 30 s") covers the need today; native clipping goes to the backlog with this note.