Round 2 Master Card List - UQcsse3200/2026-studio-3 GitHub Wiki
Round 2 Master Card List
Maintainer: Team 6 Member 1.
Task: #160 — Guardian Cards and Card Library Standards
Related pages:
- Initial Cards
- Card Data Model
- Card System Diagrams
- Guardian Cards
- Survival Cards
- Corruption Cards and PIERCE Effect
- Card Art Specification
Target for Sprint 2: 26 official cards — the 6 Sprint 1 cards plus 20 new cards, four per Team 6 member.
This page records delivery status against that target. It reflects what is actually present in cards.json, not what has been designed or proposed. A card counts as delivered when its configuration is merged, not when its design is agreed.
Last verified: 16 September 2026, against origin/main.
Summary
| Count | |
|---|---|
| Sprint 1 cards in config | 6 |
| Sprint 2 cards in config | 20 |
| Total in config | 26 |
| Outstanding | 0 |
| Target | 26 |
All 26 official cards are merged to main. Remaining work is presentation, balance and upgrade coverage rather than delivery.
Sprint 1 Cards (6)
These predate Round 2 and are not part of the 20 expansion slots.
| ID | Cost | Type | Rarity | Target | Effects | Upgrade |
|---|---|---|---|---|---|---|
| strike | 1 | ATTACK | COMMON | SINGLE_ENEMY | DAMAGE 6 | yes |
| defend | 1 | SKILL | COMMON | SELF | BLOCK 5 | no |
| poison_dagger | 1 | ATTACK | UNCOMMON | SINGLE_ENEMY | DAMAGE 4, POISON 3 (3t) | no |
| expose | 1 | SKILL | UNCOMMON | ALL_ENEMIES | VULNERABLE 2 (2t) | no |
| inner_focus | 2 | POWER | RARE | SELF | STRENGTH 2 | no |
| bandage | 1 | SKILL | COMMON | SELF | HEAL 6 | no |
All six were regenerated to the current Card Art Specification in commit 3541b6c2.
Guardian — Member 1 (4/4)
| ID | Cost | Type | Rarity | Target | Effects | Upgrade |
|---|---|---|---|---|---|---|
| warding_sweep | 2 | ATTACK | COMMON | ALL_ENEMIES | DAMAGE 4 | no |
| sentinels_rebuke | 1 | ATTACK | UNCOMMON | SINGLE_ENEMY | DAMAGE 4, FEEBLE 1 (2t) | no |
| wardens_judgement | 2 | ATTACK | UNCOMMON | SINGLE_ENEMY | DAMAGE 9 | no |
| unseal_the_breach | 1 | ATTACK | UNCOMMON | SINGLE_ENEMY | SUNDER 3, DAMAGE 2 | no |
Introduces the SUNDER effect. Details on Guardian Cards; resolution order is diagrammed on Card System Diagrams.
Seal and Restore was withdrawn during design — its block-plus-heal role overlapped with the Survival set — and wardens_judgement took the slot. Sentinel's Stance was replaced by Sentinel's Rebuke in commit edae49fd.
Astral (4/4)
| ID | Cost | Type | Rarity | Target | Effects | Upgrade |
|---|---|---|---|---|---|---|
| starfall | 2 | ATTACK | UNCOMMON | ALL_ENEMIES | DAMAGE 6 | no |
| rift_lance | 1 | ATTACK | UNCOMMON | SINGLE_ENEMY | DAMAGE 4, VULNERABLE 1 (2t) | no |
| astral_ward | 2 | SKILL | UNCOMMON | SELF | BLOCK 4, STRENGTH 1, ENERGY_GAIN 1 | no |
| resurrection | 5 | SKILL | RARE | SELF | HEAL 6 (3t) | no |
Introduces the ENERGY_GAIN effect.
Corruption (4/4)
| ID | Cost | Type | Rarity | Target | Effects | Upgrade |
|---|---|---|---|---|---|---|
| poison_flask | 1 | SKILL | UNCOMMON | SINGLE_ENEMY | POISON 5 (3t) | no |
| poison_blade | 2 | ATTACK | UNCOMMON | SINGLE_ENEMY | PIERCE 10, POISON 4 (2t) | no |
| poison_cloud | 2 | SKILL | UNCOMMON | ALL_ENEMIES | POISON 3 (3t) | no |
| poison_mark | 1 | SKILL | RARE | SINGLE_ENEMY | VULNERABLE 2 (2t), POISON 2 (2t) | no |
Introduces the PIERCE effect. Details on Corruption Cards and PIERCE Effect.
Survival — Member 4 (4/4)
| ID | Cost | Type | Rarity | Target | Effects | Upgrade |
|---|---|---|---|---|---|---|
| makeshift_shelter | 2 | SKILL | UNCOMMON | SELF | BLOCK 7, HEAL 3 | no |
| rubble_barricade | 2 | SKILL | UNCOMMON | SELF | BLOCK 12 | no |
| emergency_salve | 2 | SKILL | UNCOMMON | SELF | HEAL 10 | no |
| purify | 1 | SKILL | UNCOMMON | SELF | CLEANSE 1 | no |
Introduces the CLEANSE effect. Details on Survival Cards.
Forbidden — Member 5 (4/4)
| ID | Cost | Type | Rarity | Target | Effects | Upgrade |
|---|---|---|---|---|---|---|
| sealed_pact | 3 | POWER | RARE | SELF | STRENGTH 3, BLOCK 6 | yes |
| blood_price | 3 | ATTACK | UNCOMMON | SINGLE_ENEMY | DAMAGE 20 | yes |
| doom_sigil | 2 | SKILL | RARE | SINGLE_ENEMY | VULNERABLE 1 (2t), POISON 4 (3t) | yes |
| iron_oath | 1 | SKILL | UNCOMMON | SELF | FORTIFY 4 | yes |
Introduces the FORTIFY effect. Eclipse Decree was proposed during design but is not in the config; Iron Oath occupies the fourth slot.
The original allocation document suggested drawback-bearing same-target combinations, such as gaining Strength while suffering Poison. The delivered set does not use that pattern — the schema applies one target per card across all of its effects, so a card cannot both benefit the player and debuff the player unless every effect is valid on SELF.
Effect Types in Use
The current EffectType enum has twelve constants.
| Effect | Uses duration | Introduced by |
|---|---|---|
| DAMAGE | no | Sprint 1 |
| BLOCK | no | Sprint 1 |
| HEAL | no | Sprint 1 |
| STRENGTH | no | Sprint 1 |
| POISON | yes | Sprint 1 |
| VULNERABLE | yes | Sprint 1 |
| FEEBLE | yes | Sprint 1 |
| SUNDER | no | Guardian |
| PIERCE | no | Corruption |
| ENERGY_GAIN | no | Astral |
| CLEANSE | no | Survival |
| FORTIFY | no | Forbidden |
Cross-Cutting Issues
Status durations do not tick
updateStatusEffects() in CombatStatsComponent (line 462) has no production caller anywhere in source/core/src/main — re-verified 16 September 2026 against origin/main. A TODO in the same class records that it still needs wiring to Team 3's turn event.
POISON, VULNERABLE and FEEBLE therefore do not expire. The following cards are affected and their balance should be treated as provisional until Team 7's #161 lands:
poison_dagger, expose, sentinels_rebuke, poison_flask, poison_blade, poison_cloud, poison_mark, rift_lance, resurrection, doom_sigil
That is ten of the twenty-six cards in the config.
Armour removal is permanent
clearArmour() and resetBlock() have no production call sites, so armour removed by SUNDER does not return at end of turn, and armour granted by FORTIFY persists indefinitely. Same root cause as the duration issue above. The class JavaDoc for CombatStatsComponent documents this explicitly: block is intended to reset once per turn via resetBlock(), but the reset timing is not yet wired up.
Two divergent effect application paths
The same SUNDER handling exists in two separate classes, and they have drifted apart:
BattleControllerline 795 — handles DAMAGE, PIERCE, POISON, VULNERABLE and SUNDER; itsdefaultbranch is commented as a legacy battle path and silently ignores every other effect typeTeam1EnemyStateAdapterline 85 — accepts DAMAGE, PIERCE, POISON, VULNERABLE, FEEBLE and SUNDER, and throwsIllegalArgumentExceptionfor anything else
FEEBLE is accepted by the adapter and silently dropped by the legacy controller. HEAL, BLOCK, STRENGTH, CLEANSE, ENERGY_GAIN and FORTIFY are not handled by the legacy path at all. Which path a card actually takes at runtime determines whether its effects resolve. Raised with Team 5 and Member 2.
Armour interactions overlap
SUNDER removes armour so that subsequent damage lands on health. PIERCE ignores block and armour entirely. FORTIFY adds armour. The three interact in ways worth a deliberate balance comparison rather than by accident:
poison_bladedeals 10 piercing damage for 2 energy;unseal_the_breachremoves 3 armour and deals 2 damage for 1- PIERCE gains nothing from SUNDER, because
takePiercingDamage()bypasses armour anyway - FORTIFY grants armour that currently never decays, per the issue above
Upgrade coverage is uneven
Only 5 of 26 cards define an upgrade block: strike, and all four Forbidden cards. The CardConfig JavaDoc notes that upgrades remain optional while the library is migrated, and that validation may require them for release definitions once every card has one. Twenty-one cards would need upgrade definitions before that becomes enforceable.
Cost efficiency outliers
blood_price deals 20 damage for 3 energy (6.7 per energy), rising to 28 when upgraded. For comparison, wardens_judgement deals 9 for 2 (4.5 per energy) and starfall deals 6 to all enemies for 2. Worth a balance review pass.
Remaining Work
- upgrade definitions for the 21 cards that lack them
- full 26-card asset audit — see Card Art Specification
- rebalance pass once #161 lands and status durations tick
- resolve the divergence between the two effect application paths with Team 5
- SUNDER sign-off submission to Team 5