Forbidden Cards and FORTIFY Effect - UQcsse3200/2026-studio-3 GitHub Wiki
Overview
The Member 5 Round 2 set for Team 6 contains four cards:
- Sealed Pact
- Blood Price
- Doom Sigil
- Iron Oath (
FORTIFY)
The first three support a Strength/burst line and a poison/control line. Iron Oath is the Round 2 new-effect demonstration card for FORTIFY. Each card has a complete data-driven configuration, optional upgrade values, automated configuration tests and an individual pixel-art illustration without embedded text, cost badges or card frames. Card names, costs and descriptions are rendered separately by the card UI.
Eclipse Decree was removed so the Member 5 set stays at four cards total (matching other Team 6 members).
The implementation is delivered through:
Related work:
Card Collection
| Card | Cost | Target | Effects | Intended role |
|---|---|---|---|---|
| Sealed Pact | 3 | Self | Strength 3 + Block 6 | Expensive setup for the Strength/burst line |
| Blood Price | 3 | Single enemy | Damage 20 | High-impact attack after Strength setup |
| Doom Sigil | 2 | Single enemy | Vulnerable 1 (2 turns) + Poison 4 (3 turns) | Opens the poison/control line |
| Iron Oath | 1 | Self | FORTIFY 4 | Grants lasting armour (distinct from Block) |
Card Artwork
Artwork follows the Team 6 shared Round 2 specification:
- 4:3 landscape, final size 1024×768 (nearest-neighbour upscale)
- PNG under 500 KB
- Illustration only — no baked text, cost, borders or icons
- Filename equals card ID under
source/core/assets/images/cards/
Card Design
Sealed Pact
Sealed Pact is the setup power for the Strength/burst line. Compared with Inner Focus, it costs more energy in exchange for additional Strength and immediate Block.
Upgrade draft: Strength 4 + Block 9.
Blood Price
Blood Price is a high-commitment single-target attack. Its value increases after Sealed Pact because Strength modifies normal Damage resolution.
Upgrade draft: Damage 28.
Doom Sigil
Doom Sigil applies Vulnerable and Poison without dealing immediate damage. It prepares a priority target for follow-up attacks while Poison applies delayed pressure.
Upgrade draft: Vulnerable 2 + Poison 6 (same durations).
Iron Oath
Iron Oath is the representative card for FORTIFY. It grants armour through CombatStatsComponent.addArmor, which is distinct from per-turn Block.
Upgrade draft: FORTIFY 6.
New Effect: FORTIFY
Behaviour
FORTIFY immediately increases the player's armour by a flat amount. It does not create a status-effect entry and does not depend on updateStatusEffects().
| Field | Definition |
|---|---|
usesDuration |
false (instant; duration must be 0) |
| Valid targets | SELF only |
| Strength / modifiers | Not modified by Strength or CardEffectResolutionContext |
| Where it writes | CombatStatsComponent.armor via addArmor(value) |
| Stacking | No residual FORTIFY state; repeated plays add armour again |
Integration
Wired on the player path:
EffectType.FORTIFYEffectExecutorbothresolveSelfEffectoverloadsCardValidator.isCompatibleWithTarget(SELF, including upgrade blocks)Team7PlayerStateAdapter(switch + allow-list)BattleController.applyPlayerEffects
Not enemy-facing: Team1EnemyStateAdapter is unchanged for this effect.
Relation to SUNDER
SUNDER reduces enemy armour; FORTIFY grants player armour. Both use the same CombatStatsComponent.armor field and are complementary rather than conflicting.
Deck Strategies
Strength / burst
- Play Sealed Pact for Strength and temporary Block.
- Play Blood Price on a later turn.
- Confirm Strength increases resolved Damage.
Poison / control
- Play Doom Sigil on a priority enemy.
- Use the Vulnerable window for follow-up attacks.
Armour
- Play Iron Oath to gain lasting armour via
FORTIFY. - Confirm armour is distinct from per-turn Block.
Test Entry Point
Production reward/shop acquisition remains an external dependency. Until that route is confirmed, use:
PlayerDeck testDeck = PlayerDeckFactory.createForbiddenTestDeck();
The test deck includes sealed_pact, blood_price, doom_sigil and iron_oath. The starter deck is intentionally unchanged.
Verification
Automated coverage includes:
ForbiddenCardsTest— config loading, fields and upgrades for all four Member 5 cardsFortifyIronOathTest— Iron Oath / FORTIFY config and validationEffectExecutorTest— FORTIFY on SELF; enemy targets rejectedTeam7PlayerStateAdapterTest— armour increases; block unchangedCardValidatorTest— FORTIFY SELF accepted; enemy-target upgrade rejectedPlayerDeckFactoryTest— forbidden test-deck contents
Branch / PR
- Branch:
Feature6-zeyu-round2 - Original delivery: https://github.com/UQcsse3200/2026-studio-3/pull/244
- Follow-up (remove Eclipse Decree; keep four cards): https://github.com/UQcsse3200/2026-studio-3/pull/251
AI Disclosure
Card illustrations were generated with Cursor image generation using the Team 6 shared Round 2 art prompt, then resized with nearest-neighbour scaling. Card concepts, mechanics, configuration values and final asset selection were reviewed by Zeyu Wang. This use should also be listed in the team AI declaration.