Corruption Cards and PIERCE Effect - UQcsse3200/2026-studio-3 GitHub Wiki
Overview
The Corruption card set was created for the Team 6 Sprint 2 card expansion. It adds four cards based on corrupted alchemy:
- Poison Flask
- Poison Blade
- Poison Cloud
- Poison Mark
These cards support sustained Poison damage, direct damage and target preparation. Each card has a complete data-driven configuration, automated configuration tests and an individual pixel-art illustration without embedded text. Card names, costs and descriptions are rendered separately by the card UI.
The implementation was delivered through:
Related work:
Card Collection
| Card | Cost | Target | Effects | Intended role |
|---|---|---|---|---|
| Poison Flask | 1 | Single enemy | 5 Poison for 3 turns | Efficient setup for sustained Poison damage |
| Poison Blade | 2 | Single enemy | 10 PIERCE damage and 4 Poison for 2 turns | Immediate defence-bypassing damage combined with ongoing Poison |
| Poison Cloud | 2 | All enemies | 3 Poison for 3 turns | Multi-enemy Poison application |
| Poison Mark | 1 | Single enemy | 2 Vulnerable and 2 Poison for 2 turns | Prepares a priority target for follow-up attacks |
Card Artwork
Poison Flask
Poison Blade
Poison Cloud
Poison Mark
Card Design
Poison Flask
Poison Flask is a low-cost setup card. It applies Poison to one enemy over several turns, making it useful near the beginning of a fight or against enemies expected to survive multiple turns.
Its low energy cost allows it to be combined with another card during the same turn.
Poison Blade
Poison Blade combines immediate piercing damage with ongoing Poison. It provides a way to damage an enemy whose health is protected by block or armour while also contributing to a longer Poison strategy.
Because it provides both immediate and delayed value, it has a higher energy cost than Poison Flask or Poison Mark.
Poison Cloud
Poison Cloud applies Poison to all available enemies. It is designed for encounters containing multiple enemies and trades stronger single-target pressure for wider coverage.
The all-enemy target is handled through the existing enemy-state integration rather than by duplicating the effect for each enemy in the card configuration.
Poison Mark
Poison Mark applies both Vulnerable and Poison to one enemy. Its main purpose is to prepare a priority target before playing Poison Blade or another attack card.
The card provides limited immediate value by itself, but improves follow-up damage and supports combinations between Corruption cards and cards from other sets.
Deck Strategies
Sustained Poison
Poison Flask and Poison Cloud apply damage over several turns. This strategy is most effective when enemies survive long enough for Poison to resolve repeatedly.
A typical sequence is:
- Use Poison Flask against a priority target, or Poison Cloud against multiple enemies.
- Continue applying Poison while using defensive cards.
- Finish weakened enemies with direct-damage cards.
Marked Target
Poison Mark prepares one enemy by applying Vulnerable and Poison. Poison Blade or another attack can then be used as a follow-up.
A typical sequence is:
- Apply Poison Mark to a priority enemy.
- Use Poison Blade or another attack against that enemy.
- Allow the remaining Poison duration to continue applying pressure.
Defence Bypass
Poison Blade uses PIERCE damage to reduce health without consuming block or armour. This gives Corruption decks an option against heavily protected enemies.
PIERCE does not remove the target’s defences. Their block and armour remain available against later non-piercing attacks.
PIERCE Effect
Definition
PIERCE is an immediate enemy-targeted effect that reduces health directly. It ignores the target’s current block and armour.
For an effect configured as:
{
"type": "PIERCE",
"value": 10
}
the target loses 10 health, subject to the normal minimum-health boundary of zero. The target’s block and armour values are unchanged.
Rules
PIERCEuses its configured value as the amount of direct health damage.- It is an immediate effect and does not use a duration.
- It is valid for enemy targets.
- It is not valid for
SELF. - It supports single-enemy resolution.
- It supports all-enemy resolution where the card target allows it.
- It ignores block and armour.
- It does not remove or reduce block and armour.
- It cannot reduce health below zero.
- It triggers the existing death event when health reaches zero.
Difference from DAMAGE
| Behaviour | DAMAGE | PIERCE |
|---|---|---|
| Reduces health | Yes | Yes |
| Block can absorb damage | Yes | No |
| Armour can absorb damage | Yes | No |
| Removes block or armour | May consume them during resolution | No |
| Can trigger death | Yes | Yes |
| Uses duration | No | No |
Resolution Flow
PIERCE is supported through the existing card and combat pipeline:
- The card configuration is loaded from
cards.json. CardValidatorchecks that the effect value and target combination are valid.EffectExecutorresolves the effect using its configured value.- The battle integration identifies the selected enemy or available enemies.
CombatStatsComponent.takePiercingDamage()reduces health directly.- If health reaches zero, the existing death event is triggered.
Configuration and Assets
The four cards are defined through the shared card configuration system. Their configurations provide the information required by the card library and other game systems, including:
- Unique card ID
- Display name
- Description
- Energy cost
- Card type
- Rarity
- Target
- Ordered effects
- Texture path
Each Corruption card references a different pixel-art asset. The illustrations contain no embedded card name, cost or rules text. This allows the UI to render dynamic card information independently of the artwork.
Validation
The card validation layer checks:
- Required card fields are present.
- Card IDs and names are not blank.
- Energy costs are not negative.
- Each card contains at least one effect.
- Effect values and durations are valid.
- Immediate effects do not incorrectly define durations.
- Ongoing effects provide valid durations.
- Effect types are compatible with the selected target.
PIERCEis accepted for enemy targets and rejected for self targets.
Automated Testing
The Corruption card tests verify the expected configuration of:
- Poison Flask
- Poison Blade
- Poison Cloud
- Poison Mark
The PIERCE tests verify:
- Poison Blade loads with the expected PIERCE configuration.
- PIERCE is accepted for enemy targets.
- PIERCE is rejected for self targets.
- Piercing damage reduces health by the configured amount.
- Block and armour are not consumed.
- Health is clamped at zero.
- The existing death event is triggered.
- Single-enemy resolution works correctly.
- All-enemy resolution works correctly.
- Existing effect and direct-health-change behaviour remains available.
Focused test command:
.\gradlew.bat :core:test `
--tests "*CorruptionCardsTest" `
--tests "*CardValidatorTest" `
--tests "*EffectExecutorTest" `
--tests "*CombatStatsComponentTest" `
--tests "*Team1EnemyStateAdapterTest" `
--console=plain
Full test command:
.\gradlew.bat :core:test --console=plain
Both the focused tests and the complete core test suite passed locally. GitHub’s unit-test and Java-format checks also passed for the merged pull requests.
Dependencies and Ownership
- Team 5 – In-Combat Card Mechanics: Reviewed the new PIERCE behaviour and owns the wider card-play and combat-resolution pipeline.
- Team 7 – Card Upgrade System: Owns the card-upgrade data structure and upgrade interaction. Upgrade implementation is outside the scope of the Corruption card task.
- Team 1 – Enemy System: Provides the enemy state used by the adapter when applying single-enemy and all-enemy effects.
- Card UI owners: Responsible for loading each configured texture path and rendering card information over the artwork.
Current Scope and Limitations
- Card upgrade configurations are not included in this task because upgrade ownership belongs to Team 7.
- The automated tests verify card configuration and combat behaviour.
- Final visual confirmation of artwork, names, descriptions and costs at the actual in-game card size should be recorded separately as UI evidence.
- Further numerical adjustments may be made after team playtesting and balance review.
Contribution
The Corruption cards, artwork, configuration tests and PIERCE integration were completed by Yu Zhu (@CHEPOO1)as part of Team 6’s Sprint 2 Cards Expansion.