v1.4.9-beta · 2026-08-12
Augury
Joe's v1.4.8 battle-log pass: barriers stop stacking, mind control joins the wheel, and a confused unit finally stops taking orders. And every screen in the game becomes a place — nine 3D rooms behind the pages, starting with a Guild Hall that flies your own banner.
The Guild Hall is a hall now
- Walk into your guild. The guild screen stands inside a first-person torch-lit hall — pillars, arched windows, the war table, the guild's treasury by the far door — with the roster, Chronicle and chat floating over it. Guildless? The same hall sits dark and bannerless: founding a guild is hanging your banner here.
- The guild picks its banner. Six colors × solid or checkered, chosen by the founder at creation (previewed LIVE on the dark hall behind the founding form) and re-hung any time by the Leader or an Officer from the hall itself — heraldry takes Officer rank like the join policy, not the crest's Leader-only gate. Every pre-banner guild wakes up flying solid red.
- The hall grows with the roster. One banner up to 14 members, the flanked display at 15, the full hall — triple cloth, shield banners, pennants down the walls — at 30. The banner display is the ONLY thing that changes (one signal per thing, the cosmetic slots' rule); the riches are reserved for a future guild level.
Every page becomes a place
Nine landing screens now stand in live 3D rooms built from the game's own art — static painterly cameras with a slow drift, swaying banners, breathing firelight. The panels float over them; nothing moves under your mouse, and every page keeps its old art as the fallback.
The title screen stands in the Shattered Throne: a ruined hall open to the night, one banner still flying, an empty seat under a broken crest.
The war room and the lobby browser meet in the War Council — blue banners down one wall, red down the other, two captains over an open campaign ledger.
The army builder browses the Armory: real weapon and shield art racked on the walls, the anvil, the training dummy.
Quick match waits in the Mustering Yard — first light at the town gate, a campfire, two soldiers who answered before you.
The Codex and Match History read in the Scriptorium, where the archivist keeps the candles lit.
The Crowns Store sets up on its own market street. Leaderboards hang the gold in the Hall of Champions. Your profile gets quarters of its own.
A barrier is a shield planted, not a pile. Shield Wall (and Holy Shield, and Golem) used to ADD its points on every cast, so a knight recasting each round walked around behind 50+ absorption. A cast now tops the barrier back UP to the ability's own strength — never past it, and never down, so a 25-point Shield Wall can't shave a standing 35-point Golem. The event and the log report the points actually gained; a refresh at full says so instead of announcing a phantom 25. (Guard:
tests/barrier_cap.rs.) Fixed alongside it: the client set its mirrored barrier TO the event amount instead of adding the gain, so its number disagreed with the engine's from the second cast on.Mind Flay and Contortion join the confuse family. The v0.5.36 standing rule — anything that works on a PERSON rolls
acc × zodiacat 40–60 base — covered Insult, Persuade, Steal Heart and Rabble-Rouse, and missed these two: Mind Flay rolled the bare Faith curve (66–80% with a geared mystic's MA 20 — Joe's log has three casts, three landings), and Contortion, an ultimate AoE confuse, had no roll at all. Mind Flay takes Insult's 60 (it pays more: 24 MP + a 3-CT charge against Insult's instant 16); Contortion takes Rabble-Rouse's AoE rate of 55. New guard walks the LIVE registry: every confuse/charm ability must be on the wheel inside the band, so the next one can't be authored off it.The tooltip stops lying about morale-gated abilities. Mind Flay's card read "95% to hit before evade" — its wielder's POLE accuracy, for a spell that never consults the weapon and that evade never touches. The ability card now states the real rule: "60% to hit × zodiac sign" for the wheel family, "Hit rolls Faith/Brave" for the curve family, and the faith-gated trio (Corruption, Death Knell, Induration) says Faith too.
hit_rulejoined the client mirror and the deep drift guard, so a drifted id fails the smoke instead of printing a weapon number.Confuse takes the player's hands off the unit — offline too. The server has ruled since v0.5.10 that a confused unit is AI-driven whoever owns it; the offline client never mirrored that, so against a human the status did nothing but interrupt charges. A confused unit's turn is now played by the same engine AI in both modes (randomized targeting, may hit its own side), input is gated for the duration, and the log says "acts on its own". It still breaks on any damage.
Every ability's tooltip now tells the truth about its landing. One engine tree (
codex::hit_profile) now decides what every surface says — the client tooltips (shipped over the bridge likeweapon_ranges), the codex, the site export and the balance CSV. Seven families: acc × zodiac (the wheel), the Faith/Brave curves, authored overrides, the magic path's flat 100, weapon-class inheritance, and "Always lands — no hit roll", which abilities that never roll finally SAY instead of borrowing their wielder's weapon accuracy (a bard's song claimed "90% to hit" while landing every time). The export surfaces had their own lie: Persuade, Insult and the whole v0.5.36 wheel family were still described as rolling the Brave curve two releases afteracc()replaced it. Guards:hit_profile_truth.rschecks every profile claim against the resolver's actual roll sites; smoke_phase2 walks all 190 castable tooltips.Charm takes the player's hands off the unit, both modes. Confuse got this in the v1.4.9 batch above; charm turned out to have the same hole everywhere — the server AI-drove confused units only, so a charmed human unit stayed under its owner's control, who could not attack their own side (the resolver's team filters) and simply waited the status out. "Fights for your side until it breaks" is now kept: a charmed unit is AI-driven online and offline, its targets are its original, un-charmed allies (the AI reads effective team, so a fellow charmed ally reads as an ally — new guard pins that), and it still breaks on any damage.
The audit's always-landers got their rolls (Joe's rulings). Three enemy-facing statuses that could not miss — each with a Faith-rolled mystic sibling of the same effect — join the Faith curve: Toad (the undodgeable kit removal), Silent Dirge (the bard's ultimate AoE sleep, vs Repose's Faith roll), Sandstorm (AoE blind, vs Dimming Pall at the same rarity). The ninja's thrown consumables take a new rule instead:
HitRule::Weaponrolls the thrower's weapon-class accuracy against evade before the status arm runs — Venom Dart and Flash Powder are steel, not curses, so they land like the hand that throws them (a ninja's knife: 100 before evade) and can finally be slipped by an evasive or flanking-aware target. Misses spend the charge (a thrown blade that misses is still gone), Concentrate makes the thrower unmissable, the forecast prices it exactly as the throw rolls, and the Vanished veil is spent on either outcome. (Guards:weapon_rule.rs; the tooltip walk and profile-truth guards cover the new kind for free.) And Stall stopped hitting people with a lute: it wasDebuffSpd, which routes through the damage arm, so "keep them talking" rolled the Orator's weapon accuracy and dealt a real instrument-swing's damage on the way to the slow. It is a pure Slow now, on the talk kit's wheel at 55 × zodiac like Insult and Rabble-Rouse — no damage, and whether the words land is written in the stars.The site's zodiac wheel & chart, in the game. The Codex ZODIAC tab now opens on the overview the website leads with: the four element-family panels (same colour = kin = mutual ×1.5) and the full 12×12 chart — attacker down the side, defender across the top, cells tinted best to worst in the site's own palette. Every cell reads the engine's wheel over the bridge, sign names are clickable through to the existing per-sign detail, and "✦ THE FULL WHEEL" at the top of the list brings the overview back. (Guard:
smoke_zodiacdrives the real tab and checks the built chart cell-for-cell against the served matrix.)Every class now rolls its signature weapon like it means it (Joe's native-table pass). The weapon roll used to draw UNIFORMLY across whatever a job could wear — a knight was as likely to open with a plain sword as a knight sword, an archer split 50/50 bow/crossbow — with only the Orator and Cursebrand hand-weighted. Thirteen more jobs now carry authored tables (knight sword 70/30, archer bow 60/40, samurai katana 80/20, dragoon spear 80 / pole 20, ninja blade 40 / flail 30 / dagger 30, and so on), and five class doors opened so the tables could mean what they say: the mage can hold a staff, the healer a rod, the thief a ninja blade, the dragoon a pole, the bard a book. The monk finally rolls a weapon slot — bare hands 70%, knuckles 30% — via a bare-hands entry on its own table; its standard kit still fields nothing, so bare fists stay the baseline everywhere the roll doesn't run. New readout
weapon_damage_table(10,000 rolls per class) measures every declared split and the per-attack damage it buys.Bows, crossbows and fists all gain +2 WP (Joe). The archer — a job whose whole business is the basic attack — measured 14th of 18 in per-attack damage; +2 across both of its classes lands it in the mid-table cluster (~#10), which is as high as a 5-tile reach should sit. The fists follow so the monk's new bare-hands lean costs it less: the probe that came with the change (
fist_probe) established knuckles were already an UPGRADE over bare fists — the monk's dip came from rolling bare hands 70% where the old roll armed it every battle, not from weak items.
Ten new battlefields — five environments traced from FFT, each a compact board and a large one — plus six new asset packs and a dressing pass over the whole existing catalog. The battlefield count goes 19 → 29.
The five new environments
- Spicegate (Fort Zeakden as a sun-baked market town): the two-towers-
and-bridge silhouette kept, the blizzard swapped for sand. The gate is a
CLIMB — the centre column runs 0→4→0 straight over the bridge, priced
against a wading oasis flank and a soft-sand flank. Both armies start on
the ground; the guard pins that and the 5-4-4-4-5 crossing.
spicegate_bazaar(4v4/5v5/8v8) +spicegate_souk(1v1–3v3). - Frostfair (Dorter Trade City as a winter fair — the catalog's FIRST
SNOW boards): the heights live on the outer ring (the deliberate
inversion of Spicegate), two rooftop arcs with watch-towers over a sunken
market plaza whose heart is a frozen pond — ice walks at cost 1, so the
middle is fast and watched.
frostfair_ring(4v4/5v5/8v8) +frostfair_row(1v1–3v3). - Fallowstead (Cellar of Sand Mouse as a working farm): the
indoor/outdoor mix pinned as the guard — a walled farmhouse with three
doorways and a loft under its collapsed corner, open crop-row fields, and
the farm pond. Deliberately not 8v8: sixteen units through three doors is
a corridor brawl.
fallowstead_fields(3v3–5v5) +fallowstead_yard(1v1–3v3). - Quillhall (the Office of Lesalia, and its invented great Archive):
the office trace keeps FFT's shelf wall with exactly one door and one
climb-over gap; the Archive is two wings of bookcase stacks around an
open reading nave with twin carpeted mezzanines. Every wall on these
boards is a bookcase. Indoors is guarded: no water, sand, lava or ice.
quillhall_archive(4v4/5v5/8v8) +quillhall_office(1v1–3v3). - Highspire Rooftops (Gariland a third time — the verticality puzzle):
four sheer buildings over street level, roofs at 4 with the spire and
penthouse at 5, and EACH ROOF HAS EXACTLY ONE JUMP-1 CRATE-STAIR — climb
the barrels and boxes or don't come up. The guard floods every roof
plateau and counts the ways onto it (1–2; zero is stranded, three is a
ramp) and demands half its edges drop 3+.
highspire_rooftops(4v4/5v5/8v8) +highspire_lofts(1v1–3v3). The canals and quarter stay.
The art underneath
- Six Quaternius packs land (638 models, all CC0): Medieval Village and Fantasy Props MegaKits, Stylized Nature MegaKit, Castle Kit, Nature Crops, Ultimate Nature. MegaKit textures ship downscaled (148 → 23 MB).
- Five new visual themes — bazaar, winter, farmstead, library, rooftops — and three new grid capabilities they run on: per-entry surface scale and drop (one board can lay floors from packs authored differently), a cached per-entry TINT (one grey pack serves sandstone, frost, terracotta and parquet; a tinted board still batches), and spawn-aware scatter that reads the engine's actual deployment tiles instead of assuming spawns are edge columns.
- The dressing pass over the existing catalog: town streets get the market clutter their header spent three releases wishing for, the desert gets the cacti its header wished for, forests get willows and birches, burial grounds get full-grown dead trees, the temple gets statuary.
Also in this build — the weapon buckets go 9 → 18
- One signature weapon class per job. The nine broad Equip-* buckets become eighteen, each headlined by the class its teaching job actually mains — and the Fist items are finally reachable (Equip Gauntlets; the bare-hands support is renamed "Martial Arts" to say what it does).
- Rod, Ninja Blade and Gauntlet buckets take passengers too — no weapon bucket rolls a single class, so the rarity roll never fully determines the item and the reveal card always has something to say.
- The balance simulator measures the whole Equip-* family: armour supports ADD to a kit, weapon supports SUBSTITUTE — two different levers.
- Art: flat bows and an invisible staff fixed; the site's top gear band reads Legendary on the rows, not just the heading.
Fixed on the way
quicken_hastes_ally_not_enemyhad been VACUOUS since v0.5.36: free aim makes a single-target buff at an enemy legal by design, and the test only passed because the enemy spawned out of range. It now pins the real contract on a pinned board.dual_wield_attack_strikes_twicecounted hits while the offhand rolls its own accuracy — a mechanics test failing on dice. It counts swings.- Nineteen test fixtures across twelve files parked units on tiles of a ROLLED battlefield and broke as the catalog grew; each now owns its ground (the movement.rs flat_state pattern).