Boss Status Effects and Animations - UQcsse3200/2026-studio-3 GitHub Wiki
Team 1 — Boss Status Effects and Animations
Overview
The boss uses two special status effects to change how the player approaches combat:
- Silence — prevents the player from playing cards while active.
- Damage on Card Play — damages the player whenever a card is successfully played.
Both effects use the existing player status-effect system and are applied through:
CombatStatsComponent.applyStatusEffect(...)
Their duration is managed through:
StatusEffect.tickAndCheckExpired()
Silence
Silence blocks card plays before the card enters the normal resolution process.
The check is handled in the existing BattleActions card-play guard.
Player attempts card
↓
BattleActions guard
↓
Silence active?
↙ ↘
Yes No
↓ ↓
Reject Continue
When a card is rejected, the reason is reported through:
BATTLE_LOG_EVENT
A rejected card should not execute its effects or trigger "cardPlayed".
Damage on Card Play
This effect listens to the existing:
"cardPlayed"
event in BattleActions.
Whenever a card is successfully played, the player's active status effects are checked.
If Damage-on-Play is active, the configured amount of damage is applied to the player.
Card successfully played
↓
"cardPlayed"
↓
Check status
↓
Damage-on-Play active
↓
Damage player
Rejected card attempts do not trigger this effect.
Status Duration
Both effects use the normal StatusEffect lifecycle.
Effect applied
↓
Active
↓
tickAndCheckExpired()
↓
Duration decreases
↓
Effect expires
Once expired, Silence no longer blocks cards and Damage-on-Play no longer reacts to "cardPlayed".
Boss Intent Integration
The effects are triggered through the boss intent system.
Boss AI
↓
EnemyIntent
↓
executeIntent()
↓
DEBUFF
↓
applyStatusEffect()
The intent provides the effect type, duration, and effect value where required.
Boss Animations
The boss also supports Cast and Death animations.
Cast animations are used when the boss performs special actions such as applying a debuff.
IDLE
↓
CAST
↓
IDLE
When the boss reaches zero health, it enters the death animation:
IDLE / CAST
↓
DEATH
DEATH is treated as a final animation state and should not return to normal idle or cast animations.
Cast and death frames are stored in the boss animation atlas and should use the same sprite size, alignment, and visual style as the other boss animations.
Integration Summary
Boss Intent
↓
DEBUFF
↓
applyStatusEffect()
↓
Player Status
↙ ↘
Silence Damage-on-Play
↓ ↓
Card Guard "cardPlayed"
↓ ↓
Reject Damage Player
This keeps the boss mechanics integrated with the existing combat, status-effect, event, and animation systems.