Combat Rules & Match Interaction
A CardBrawler update on combat keywords, phase-skipping card actions, and the first shared match interaction tools.
October 11 was a satisfying rules-and-controls pass for CardBrawler: combat vocabulary got cleaner, and the desktop match screen took its first steps toward a shared interaction flow.
Combat keywords, tightened up
Retired the old Taunt/Vulnerable terminology and aligned the rules around Provoke. Provoke now governs eligible blocker assignments rather than redirecting direct attacks. The pass also standardized Merge → Consume, Doomed → Deathtouch, and Immortality → Invincible across engine behavior, card data, UI glyphs, and documentation. Legacy keyword names were removed rather than left lurking as aliases.
Aggro’s combat behavior was clarified too: Aggro blockers keep priority in damage assignment and grouped combat resolution. A regression test checks that priority even when blockers are assigned out of order.
A new card-action capability
Added a SkipTurnPhase card action, with validation for which phases can be skipped and resolution paths for skipped Blocking, combat-damage assignment, and End-of-Turn work. Artifact activations also gained Hero Life costs, including affordability checks and an event recording the payment.
Match interaction groundwork
Introduced a graphics-independent interaction coordinator for typed selection and cancellation, then routed the desktop screen’s existing selection state through it without changing target matching or command submission. Unit lane placement now uses a legal-choice provider to drive lane highlights and map a selected lane back to an existing legal command, preferring normal Energy payment when available.
The interaction roadmap and smoke coverage were updated alongside the implementation. The smoke suite passed, and the DesktopGL build completed with zero warnings and zero errors.
Next: continue the coordinator work by unifying targeted card and ability choices, while keeping legal-choice previews separate from authoritative engine validation.
A note from the developer
Well, that was a satisfyingly busy day at the workbench. We gave a few old keywords their proper names, taught combat to mind its Aggro, and got the first pieces of a tidier match-interaction flow in place. Nothing exploded, and the tests even had the good manners to pass. Tomorrow looks like more coordinator work: bringing targeted choices into the fold, one sensible step at a time. I’ll try not to let the lanes get ideas above their station.