v1.1.0-beta · 2026-08-07
Laurels
Ranked MMR + Guilds + Teams — the whole RANKED-AND-GUILDS-DESIGN.md program in one batch. Server-side; live once deployed.
The movement pass. Joe's rule: every job's Movement ability should DO
something — no more restating "+1 MOV" five ways. Effects live on the
registry (MovementDef.on_move) and fire on every completed move, each
one announced in the battle log.
Jump tiers moved down a rung: the archer's is Jump +1 now, the dragoon's Jump +2 (same ids underneath — ids never rename).
Chemist — Move-Find JP (new): turn up 3-5 JP with every move, credited to your primary job. Stacks with the squire's JP Boost (4-6 boosted) — together they're the new-player catch-up kit for the job tree.
Samurai — Move-HP Up (re-homed from the monk, retuned): recover a rolled 10-15 HP per move instead of 10% of max.
Summoner — Move-MP Up (re-homed from the mage, retuned): recover a flat 10 MP per move — percentage MP on the game's deepest pools was quietly enormous.
Knight — Bulwark Stride (new): advance behind the shield — gain an 8-point barrier each move, topping up toward a 25 cap, and never downgrading a bigger barrier something else raised.
Bard — Marching Ballad (new): a tune for the road — allies within 2 tiles recover 5 HP whenever you move (never the bard; the verse credits the HEAL column).
Chronomancer — Stolen Seconds (new): every step borrows time — bank 10 CT toward your NEXT turn whenever you move. The bank survives the end-of-turn reset; the log says what was stored.
Orator — Commanding Presence (new): an argument that follows you — enemies within 2 tiles lose 5 CT whenever you move (floor 0, the log names each clock set back).
Monk — Ki Stride (new): walking meditation — recover 3 HP and 3 MP with every move. Chakra's little sibling.
Thief — Second Story (new): end a move beside an enemy and pick their pocket for 1-2 JP (JP Boost applies — a burglar's version of the chemist's scavenging).
Dragoon — Crashing Descent (new): drop 2+ heights in one move and enemies beside your landing take 4× the drop in damage — never lethal (the shock floors at 1 HP), but it wakes sleepers like any other hit. The height game finally pays on the way DOWN.
Full-human quickmatches are now RATED. Every quickmatch where all seats are humans with accounts (no bots, no guests, no self-matches) settles a Weng-Lin skill rating per queue — win against the odds and the number moves a lot, beat someone you outclass and it barely twitches. Friend lobbies are never rated, so arranged matches stay consequence-free. This is Season 0: every rating is provisional until 8 placement games, and the SPOILS screen narrates each match's movement ("ranked 1042 → 1067 (+25) · Gold").
One number, climbing from zero. New players display 0 and trend upward through placement; the leaderboard sorts by exactly the number it shows. Bronze → Silver → Gold → Diamond → Master tiers on the familiar ladder. Per-queue RANKED boards on 🏆 LEADERBOARDS; your rating, peak and record on 👤 MY ACCOUNT.
The matchmaker now weighs ratings — quietly. Placed players are paired inside widening bands (a fresh queue holds out for a close match, a long wait takes anyone), 3v3 seats are split to minimize the team rating gap instead of queue order, and unrated players match exactly as before. At today's population this changes nothing; as ratings accrue it starts to matter on its own.
⚔ GUILD HALL. Found a guild for 500 Crowns (the second Crowns sink): unique name + 2–5 char tag, open/request/invite join policies, Leader/Officer/Member roles with succession, MOTD, and a members-only guild chat room. Your [TAG] rides every scoreboard and results board. Guilds board on the leaderboards (rated wins), guild regalia in the Crowns store (members only), read-only guild profiles in the browser.
⚑ TEAMS. Fixed rosters (up to 6) with their OWN rating — never an average of the members'. A captain challenges another team by name at an agreed size; acceptance opens a private lobby only the two rosters can enter (sides pre-assigned, no AI fill), and the finish moves the TEAM ratings while personal ranked stays untouched. The foundation for leagues and tournaments when the population supports them.
Deliberately not built, per the design doc: tournaments, a separate ranked queue, duo queue, leaver penalties — all population-gated.
The same battle, played twice, is now the same battle. The AI was picking its move by reading a hash map in whatever order the hash map felt like, so an identical seed produced a different fight every time — measured, 47 / 34 / 60 / 75 turns across four runs of one 3v3, and it varied within a single run, not just between them. Only the AI's choice moved; resolution was always exact. Three things this quietly broke: the balance simulator could not reproduce a battle you gave it the seed for, undo's promise that retrying an action replays it exactly held for your own blow but not for what the AI did next, and any replay built on top would have been a different match each time it was watched. The tie-break is written down now — nearest safe tile, then a fixed compass order — instead of being inherited from an accident.
Every match now records a replay. Offline and online both write a
.crown file (about 7 KB for a 3v3 — small enough to send to someone) into
user://replays, and the Match History row remembers which file is which.
A forfeit leaves no file, and neither does a match that never got going.