v1.4.7-beta · 2026-08-12
Company
A playtest batch off two v1.4.6 logs. Four bugs and one question, and the question turned out to have the most interesting answer: the ability Joe suspected of hitting too hard is the weakest of its kind in the game.
Gear buffs are an opening, not a standing bonus
Joe: "I don't want any equipment effects to be Perk::Always — I want them to
be INITIAL... first 3 rounds, then it wears off. This will promote quick
engagement." A Lordly Robe granting Protect and Shell forever is flat
mitigation you carry into a twenty-turn attrition game; granting them for
three turns is a reason to be in contact on turn one. Fourteen perks across
eleven items moved to the new Perk::Opening.
Four stayed permanent, and Joe picked that split knowing it: undead and
atheist are COSTS paid for with stats (expiring them would make the two
cursed items pure upside), float is traversal (a unit that can cross the
river on turn 2 and not on turn 4 is a highlight moving under the player), and
faith IS the Rod of Devotion. Cards read Opens with Protect (3 turns).
The Guild Hall
The Chronicle — officer notices that persist, pinned above the guild chat. Deliberately guild state rather than a pinned chat message: chat rooms are swept 30 minutes after they fall idle, so a notice living there would evaporate while looking permanent. Posting drops a system line into the room so anyone already talking hears about it. It supersedes the old MOTD, which migrates into the first entry.
The roster stops being a flat list in insertion order — sorted by role then level, with an online dot, epithet, laurel count and a joined date, all of which were already on the wire and thrown away. Plus a guild aggregate line and the recruiting blurb that has existed since G2 and was never rendered.
Guild crests — leader-funded, guild property. A member who leaves stops rendering it, because it was never theirs.
Friends have a handshake now
Joe: "the getting-friended user needs to be able to accept/decline — do NOT
auto-accept." The old add_friend wrote both sides immediately, which was
defensible when the only way to reach it was trading codes by hand and stops
being defensible with an ADD FRIEND button beside five strangers on a
scoreboard. friends/add is deleted rather than repointed, so a stale caller
fails loudly.
Crossed requests complete themselves — two people who each asked first are two people who both said yes.
ADD FRIEND on the end-of-match scoreboard, the moment a friendship is most likely to be wanted. It reads "ASK TO FRIEND", because the button must not promise what the server will not do. Clicking any name — on the scoreboard, the guild roster or the friends list — opens a player card with their level, record, regalia and laurels. It carries no builds, no friends list and no Crowns: reading an opponent's saved builds before a ranked match is scouting.
Whispers
/w <name> and /r, Diablo II style, in the chat box you are already typing
in. /r answers whoever spoke last whichever end of the conversation you were
on. You can whisper friends and guildmates and nobody else — a name lookup
over every account is the harassment surface this codebase already declined
once, and the friend request is what opens a conversation.
"Always" meant 75% of the time
The Lordly Robe grants Protect and Shell for the whole battle. It renewed them at the top of every turn — except that the renewal SKIPPED any status the unit already held, which is what "don't spam the battle log" looked like when it was written. So the 3-turn duration ticked down to nothing, the unit spent a full turn bare, and the next turn start applied it again. Joe's log has a samurai flickering on exactly that cycle: Protect and Shell wear off at turn 14, come back at 18, wear off at 25, come back at 29.
Held statuses are now topped up silently, so an item whose entire text is "always" no longer has an off-turn. Dispel still strips it and still buys the enemy exactly one turn of relief — that half was the point of the design and it is now the only way to see the status drop.
The existing guard for this passed against the broken code, which is why it survived. The new one runs twelve turns — three full lapse cycles — because one would have passed against a fix that merely moved the gap later.
The roster line finally says what a unit is wearing
Joe's ask was "check the battle log and the equipment of each unit to make
sure the equipment is actually doing its effects", and that was not
answerable from a log. The roster printed derived stats and never once named
an item, so a perk that silently failed looked identical to a perk that had
never existed. Every unit now gets a GEAR line naming each equipped piece
with its spec — rendered by item_spec_line, the one author the reveal card,
unit sheet and Codex already share — and an OPENING line when its gear
granted it a status before the first turn. MDEF and both evades joined the
stat line while it was open; all three have been live for releases with no
log to show them.
Attack Broken, not Weapon Broken
atk_break and def_break were displayed as "Weapon Broken" and "Armor
Broken", and every ability that applies a −30% stat cut used them — a
Dancer's Faltering Step announced a broken weapon over a weapon still in the
chronomancer's hand. Only the Knight's two named arts actually destroy an
item, and that already had its own event and its own wording. The statuses
now name the STAT they cut. Ids are untouched, as ever.
Rending Reel is not the problem — the bag is
Joe asked whether the Dancer's Rending Reel hits too hard, comparing an 84 to an archer's 22–26. Measured rather than adjusted, and nothing was changed:
- At power 10 it is the weakest self-centred AoE in the game. The Samurai's Ashura is the same tier, footprint, and charge at power 14.
- Across 20k simulated battles the Dancer sits at 50.5 / 48.5 / 47.6 percent at 3v3 / 5v5 / 8v8 — average to below, and getting worse with crowding, which is the opposite of an overtuned AoE. The archer Joe compared it against is stronger at every team size.
- The 84 was a wild roll. The Dancer draws Bag one battle in three, Bag
is in the
is_wildgroup, and wild weapons swing on a 0.35–1.65 band instead of ±10%. The same dance landed 38, 44, 68 and 84 in that log — a 2.2× spread the ordinary band cannot produce.
What was wrong is that nothing said so. The log has printed the roll since
v0.5.21 and never the band it came from, so × 1.40 roll looked like a bug.
Wild swings now print × 1.40 WILD roll (0.35–1.65 band).
Undo rebuilt the board with everyone standing up
An undo hands the client a full state snapshot, and a snapshot carries no
events. The board learned "this unit is down" and "this one is mid-leap" only
from the events that put them there, so a rebuild stood both corpses up out
of their death-clock sink and set the airborne dragoon back on the ground.
airborne had never crossed the wire at all. Both halves, one cause — and the
same shape as the v0.5.9 death clock and the v0.5.15 turn banner: a consumer
inferring what it could simply have been told.
Regalia is a set of dropdowns now
The flair rail on the Army Builder was a readout: three labels naming what the store had last equipped. Changing your halo meant leaving the loadout, crossing to the store and coming back. It is now pickers, on the Quick Match screen as well, from one shared component so the two cannot drift — and slots are read from the account client's own list rather than restated, so a cosmetic slot can never ship ownable but unequippable.
The dropdowns also stop looking like Windows. The house button plate is a
64px 9-patch with 32px of non-stretching chamfer; on a 20px picker row there
is no centre left and the control renders as a flat band of its own rim
colour. A resolution-independent ScPicker variation fixes it here and on
every compact dropdown on both loadout screens.