Rankbreaker — Tester Changelog
Build Update — Card Ability Engine Overhaul
Under-the-hood rebuild of how all card abilities are wired, fired, and cleaned up — no change to how any card plays
This is a large internal systems update. Nothing about card abilities should feel different, behave differently, or resolve in a different order than before. The goal was to eliminate a category of subtle bugs caused by the old architecture and to lay the groundwork for future cards to be built more reliably.
What was the problem?
The old system had each card type managing its own state independently — every ongoing card (Renfield, Varis, Lucan Merric, etc.) kept private memory of which instances were active, subscribed to game events on its own, and cleaned itself up on its own. In practice this caused three types of bugs:
- Ongoing effects occasionally fired twice in a round when timing conditions lined up in a certain order
- State from a previous match could bleed into a new match if the game was not fully reloaded between sessions
- Some effects failed to clean up when their card was destroyed, discarded, or banished mid-round, causing phantom power changes the following round
Additionally, adding a new card with an ongoing ability required changes in five or more separate files — a fragile process that was easy to get wrong.
What changed:
All card abilities now route through a unified Ability Engine with three responsibilities:
- A central Ongoing Effect Registry that tracks every active ongoing effect in the match, verifies it is still valid before firing each round, and wipes clean at the end of every match
- A Card Event Subscriber system so that cards which react to other cards being revealed (Lucan Merric, Varis) receive those events automatically — no more manual wiring between specific cards
- Removal of all static in-memory state from card effect assets so there is no possibility of data leaking from one match into the next
Cards affected (all behavior identical, internals rebuilt):
- Renfield — drain/buff timing and cleanup are now managed by the registry; the -1/+1 swap per round is unchanged
- Lucan Merric — ally reveal buff now fires through the subscriber system
- Varis — enemy reveal scaling now fires through the subscriber system
- Vampireling — round-tick buffs are now registry-managed
- Axl — move-lane effect discovery is now automatic rather than hardwired in the Inspector
- Strayline — same as Axl
What to test:
- Play Renfield with Dracula — confirm -1/+1 fires exactly once per round and stops the moment either card leaves the board
- Play Renfield without Dracula, drop Dracula in a later round — confirm the drain/buff starts correctly from that round
- Destroy or discard any ongoing card (Renfield, Varis, Vampireling) mid-match — confirm no further power changes occur from that card afterward
- Play Lucan Merric and reveal ally cards after him — confirm the buff fires once, not twice
- Quit a match mid-game and start a new one — confirm no power changes or ongoing effects from the previous match carry over
- Play Axl and move cards between lanes — confirm the move ability fires correctly without needing the Inspector reference
- General match stability — play 3–5 full matches and report any ability that fires at the wrong time, fires more than once per trigger, or persists after the card is removed
Build Update — Ongoing Ability Engine Rewrite
Under-the-hood rewrite of how ongoing card abilities (Renfield, Lucan Merric, Varis, and future cards) track and fire their effects each round
This is an internal systems update — nothing about how these cards play should feel different. The goal is to fix a class of hard-to-reproduce bugs where ongoing effects would occasionally fire twice in a round, carry over stale state from a previous match, or silently fail to clean up after a card was destroyed or discarded.
What changed under the hood:
Previously, each ongoing card kept its own private list of active instances stored in static memory. That meant if you quit a match and started a new one without fully reloading, a card’s effect could “remember” it was on the board when it wasn’t. It also meant every new ongoing card required custom wiring in multiple places across the codebase.
The system has been rebuilt around a central Ongoing Effect Registry — a single authority that:
- Registers an ongoing effect the moment its card is revealed face-up
- Verifies the card is still face-up before firing its effect each round
- Automatically removes the effect when the card is destroyed, discarded, or banished
- Resets cleanly between matches so no state leaks from one game to the next
The previous static-per-card architecture is gone. All ongoing effects now route through this one registry.
Cards affected:
- Renfield — fully migrated; drain/buff logic is unchanged, timing and cleanup are now reliable
- Lucan Merric — now uses the subscriber system; ally buffs on reveal fire correctly whether Lucan entered before or after the revealed card
- Varis — same as Lucan Merric
What to test:
- Play Renfield with Dracula present — confirm the -1/+1 swap fires exactly once per round and stops the moment either card is removed from the board
- Play Renfield without Dracula, then play Dracula in a later round — confirm the drain/buff starts correctly from the round Dracula appears
- Destroy or discard Renfield mid-match — confirm no further power changes occur after it leaves
- Play Lucan Merric and confirm ally cards revealed after him receive the +3 buff, and that the buff does not double-fire in edge cases
- Play Varis and confirm its power scales correctly as enemy cards are revealed throughout the match
- Quit a match mid-game and start a new one — confirm no ongoing effects from the previous match carry over
Build Update — Deck & Draw System Overhaul
Cards now draw from a shuffled deck in order — “top of deck” and “next card” effects are now real
Previously the draw system picked a card at random from the entire remaining deck every round. This worked but had a side effect: card abilities that place cards “into the deck” (like Dracula putting Van Helsing into your opponent’s deck) behaved inconsistently — because every draw was a random pick, the inserted card had no better or worse chance of appearing than any other card in the deck.
The draw system has been rebuilt so it now works the way you’d expect from a physical card game:
- The deck is shuffled once at the start of the match.
- Cards are drawn from the top, in order.
- When an ability shuffles a card into the deck (Dracula, The Rift), it is genuinely inserted at a random position via a full shuffle — not appended to the back.
Nothing about the feel of the game has changed. Draws still feel random because the deck is shuffled before the match begins. What has changed is that abilities which interact with deck order now work correctly and consistently.
What to test:
- Play a match against a deck that includes Dracula. Confirm Van Helsing appears in your hand within a reasonable number of rounds rather than almost never showing up.
- Play at The Rift location and confirm cards returned to the deck via its ability can be drawn back at a normal rate.
- General match feel — confirm draws feel as random as before, with no noticeable patterns or repeated early sequences.
Build Update — Location / Sepulcher Bug Fix
Sepulcher’s inverted win condition now clears correctly when Cyran replaces the location
Sepulcher’s ability flips the lane — the player with the least power wins it. When Cyran replaced Sepulcher mid-match, the lane score display was not refreshing, so it continued to show the player with the least power as the winner even though the normal win condition had been restored.
- The lane score boxes now immediately repaint the moment a location is replaced.
- If the new location uses normal scoring, the correct winner (most power) is shown right away.
- This fix also covers any future case where a location with a modified win condition gets swapped out.
What to test:
- Play a match where Sepulcher appears as one of the three locations.
- Play Cyran into that lane to trigger a location replacement.
- Confirm the score boxes update immediately and now correctly highlight the player with the most power as the winner.
- Confirm the lane outcome at end of round reflects normal scoring, not Sepulcher’s inverted rule.
Build Update — Inventory / Card Detail Panel
Legendary Card Descriptions now display correctly in the Card Detail Panel
When browsing your collection in the Inventory and selecting a Legendary card from the Legendary panel, the card description area will now show the correct text based on your unlock status:
- Unlocked Legendary — displays the Legendary Description written specifically for that card’s legendary variant.
- Locked Legendary — displays the Locked Description, giving you a teaser or requirement hint without revealing the full legendary flavour text.
This applies to all legendary card tiers: M1, M2, M3, and M4.
Previously, all legendary cards were falling through to the base card description regardless of unlock state. That has been fixed.
What to test:
Open Inventory and select any card that has a legendary variant.
- Click the legendary card in the Legendary panel.
- Confirm the Card Description panel updates — it should show the Legendary Description if you own or have unlocked that card, or the Locked Description if you have not.
- Repeat across multiple cards and across M1/M2/M3/M4 tiers to confirm consistency.