Three dead handlers
Three of The Lien's card effects were registered in the engine and did nothing but log an error. I counted their authored uses across every card file, found zero, and made the mechanics real without adding a card.
Written up later from the repo's history and dated to the days it describes.
On August 25 I cleared three effect handlers in The Lien that had been sitting in the code since the first design. SampleHandler, AmplifyHandler and DirectStrikeHandler were registered in the effect resolver's table. Each one's whole body was a single call that logs an error. They were reachable and wired in, and they did nothing.
The design doc for the first deckbuilder had listed eight stub effects. Five had already shipped. These were the last three, and they are the verbs that Rock, Jazz and Hip Hop were designed around.
Count it, don't recall it
The spec's first section is headed "what is actually there today, measured rather than recalled." Before writing a design for the three handlers, I counted how often each effect type appears across every effect resource under resources/. The three types appeared zero times. That was counted from the card files directly, not inferred from the list of cards.
The same pass found more. Both Rock cards leave the effect type out, which means plain damage, so Rock had no verb of its own. And a queue called PreviousRoundQueue was declared, constructed and never written to. The only place it was mentioned outside its own declaration was the error string in SampleHandler. Its comment said it was filled at the end of a round, before the queue is cleared. The queue is actually cleared when resolution starts, which is phases before the round ends, so a snapshot taken where the comment said would always have been empty. The snapshot goes at the clear site now and the comment is corrected.
What each one does
Each handler got one reading, with the rejected readings written down in the spec.
- Direct Strike is damage worked out like normal damage, except that enemy Block absorbs none of it and is not stripped.
- Amplify sets a multiplier on the player's next attack, with a resting value of one. It applies to the final number and clears at the end of the resolution.
- Sample takes the largest authored damage or Direct Strike value in the previous round's queue, adds its own value, and runs the total through the normal damage calculator.
Mechanics without cards
No card is authored in this branch. The mechanics are authorable and stay unreachable in play. The reason is the art gate, since a test requires a school's art before a card in a new school can exist. Nothing was played, and the smoke ledger says so. The work shipped as one PR with the test floor going from 1,114 to 1,140. Overdrive followed in its own PR, the first card to use a verb that Rock had shipped without.
Pinning the numbers that cross the file boundary
The same day I closed an audit issue about enum values. A card file stores an enum as a bare number, so reordering the enum in code would silently change what every card means. The numbers are large. The target type crosses a card file 52 times and the card category 52 more. 49 cards carry a card type of 1 and three carry 2. 49 more carry Attack as an absent line, which means the omission is what decides whether a card spends a next-attack bonus.
The worst exposure was the smallest. One card, Response, authors a condition at type 5, the only condition type the evaluator wires. If an insertion shifted that number, the condition would land on an unwired member that evaluates as true. Response would start drawing cards unconditionally while still reading as though its condition worked.
So a new test pins the authored values and their ordinals. It cannot fail today, since C# assigns these values by declaration order. It catches the next insertion or reorder, and I verified that by inserting a member and watching both the ordinal case and the authored-condition case go red, then restoring it. The floor went from 1,144 to 1,148.
What is left
Five condition types remain unwired and pass as true, and the spec says so. Nobody has played the three verbs yet, since there is no card to play them with.