Event Reference
All 43 built-in events: constant, string value, payload type, every payload field, and what usually subscribes to each.
Keep this open while wiring listeners. Every row matches the shipped GCSEventNames and GCSEventArgs source.This page tabulates every constant in GCSEventNames and every payload class in GCSEventArgs.cs: 43 events across six groups. String values follow one rule, the constant's name prefixed with GCS_, so OnCardPlayed broadcasts as GCS_OnCardPlayed.
These are the same names the Game Card Monitor prints on its Event tab. The fastest way to learn which events a card actually raises is to play it once in Play Mode with the Monitor open:

Battle and turn eventsโ
| Constant | String value | Payload | Fields | Typical use |
|---|---|---|---|---|
OnBattleStarted | GCS_OnBattleStarted | None | None | Initial HUD refresh, battle start animation. |
OnTurnStarted | GCS_OnTurnStarted | TurnEventArgs | TurnNumber | Start-turn UI refresh. |
OnEnemyTurnStarted | GCS_OnEnemyTurnStarted | TurnEventArgs | TurnNumber | Enemy phase banner or input lock. |
OnTurnEnded | GCS_OnTurnEnded | TurnEventArgs | TurnNumber | End-turn cleanup and logs. |
OnDrawPhase | GCS_OnDrawPhase | TurnEventArgs | TurnNumber | Draw-phase UI and draw count effects. |
OnDiscardPhase | GCS_OnDiscardPhase | TurnEventArgs | TurnNumber | Discard-phase UI and cleanup. |
OnBattleEnded | GCS_OnBattleEnded | BattleEndedEventArgs | Won | Victory or defeat overlay. |
Card eventsโ
| Constant | String value | Payload | Fields | Typical use |
|---|---|---|---|---|
OnCardPlayed | GCS_OnCardPlayed | CardPlayedEventArgs | Card, InstanceId, TargetUnitId | Combat log, play animation, combo counters. |
OnCardModified | GCS_OnCardModified | CardModifiedEventArgs | InstanceId | Refresh cost, upgrade, or transformed card UI. |
OnCardDrawn | GCS_OnCardDrawn | CardLifecycleEventArgs | InstanceId, Card | Draw animation and hand refresh. |
OnCardDiscarded | GCS_OnCardDiscarded | CardLifecycleEventArgs | InstanceId, Card | Discard animation and pile refresh. |
OnCardExhausted | GCS_OnCardExhausted | CardLifecycleEventArgs | InstanceId, Card | Exhaust animation and pile refresh. |
OnCardRetained | GCS_OnCardRetained | CardLifecycleEventArgs | InstanceId, Card | Retain feedback. |
OnCardAddedToHand | GCS_OnCardAddedToHand | CardLifecycleEventArgs | InstanceId, Card | Generated-card UI. |
OnCardAddedToDeck | GCS_OnCardAddedToDeck | CardLifecycleEventArgs | InstanceId, Card | Run deck or deck-add feedback. |
OnDrawPileShuffled | GCS_OnDrawPileShuffled | None | None | Shuffle animation or pile counter refresh. |
Unit, HP, armor, damage, and energy eventsโ
| Constant | String value | Payload | Fields | Typical use |
|---|---|---|---|---|
OnUnitHpChanged | GCS_OnUnitHpChanged | UnitHpChangedEventArgs | UnitId, CurrentHp, MaxHp, CurrentArmor, PreviousHp, PreviousArmor | HP and armor bars. |
OnUnitDied | GCS_OnUnitDied | UnitDiedEventArgs | UnitId, Tier | Death animation, rewards, target cleanup. |
OnDamageDealt | GCS_OnDamageDealt | DamageEventArgs | SourceUnitId, TargetUnitId, Amount, Lethal | Outgoing damage log and hit feedback. |
OnDamageTaken | GCS_OnDamageTaken | DamageEventArgs | SourceUnitId, TargetUnitId, Amount, Lethal | Incoming hit reactions. |
OnArmorGained | GCS_OnArmorGained | ArmorChangedEventArgs | UnitId, Amount, CurrentArmor | Armor floating text and armor bar refresh. |
OnArmorLost | GCS_OnArmorLost | ArmorChangedEventArgs | UnitId, Amount, CurrentArmor | Armor break feedback. |
OnEnergyChanged | GCS_OnEnergyChanged | EnergyChangedEventArgs | CurrentEnergy, MaxEnergy | Energy UI refresh. |
OnEnergyGained | GCS_OnEnergyGained | EnergyDeltaEventArgs | Amount, CurrentEnergy | Energy gain feedback. |
OnEnergySpent | GCS_OnEnergySpent | EnergyDeltaEventArgs | Amount, CurrentEnergy | Card spend feedback. |
Status eventsโ
| Constant | String value | Payload | Fields | Typical use |
|---|---|---|---|---|
OnStatusChanged | GCS_OnStatusChanged | StatusChangedEventArgs | UnitId, Status, Stacks | Refresh status widget. |
OnStatusTicked | GCS_OnStatusTicked | StatusTickedEventArgs | UnitId, Status, Timing, StacksBefore, StacksAfter, HpBefore, HpAfter | Tick animation and combat log. |
OnStatusInflicted | GCS_OnStatusInflicted | StatusTransitionEventArgs | UnitId, Status, Stacks, SourceUnitId | Status apply animation. |
OnStatusExpired | GCS_OnStatusExpired | StatusTransitionEventArgs | UnitId, Status, Stacks, SourceUnitId | Natural expiration animation. |
OnStatusRemoved | GCS_OnStatusRemoved | StatusTransitionEventArgs | UnitId, Status, Stacks, SourceUnitId | Cleanse or removal animation. |
Enemy and delayed trigger eventsโ
| Constant | String value | Payload | Fields | Typical use |
|---|---|---|---|---|
OnEnemyUnitIntentChanged | GCS_OnEnemyUnitIntentChanged | EnemyUnitIntentChangedEventArgs | UnitId, Intents | Intent widget refresh. |
OnEnemyUnitActing | GCS_OnEnemyUnitActing | EnemyUnitActingEventArgs | UnitId, Intent | Attack telegraphs such as the demo's lunge animation. |
OnEnemyUnitSummoned | GCS_OnEnemyUnitSummoned | EnemyUnitSummonedEventArgs | SummonerId, SummonedUnitId, Tier | Summon animation and layout refresh. |
OnEnemyPhaseChanged | GCS_OnEnemyPhaseChanged | EnemyPhaseChangedEventArgs | UnitId, OldIndex, NewIndex | Enemy behavior phase UI. |
OnDelayedTriggerScheduled | GCS_OnDelayedTriggerScheduled | DelayedTriggerScheduledEventArgs | SourceUnitId, RemainingTurns, ActionTypeName | Countdown indicator. |
OnDelayedTriggerFired | GCS_OnDelayedTriggerFired | DelayedTriggerFiredEventArgs | SourceUnitId, ActionTypeName | Delayed effect activation feedback. |
OnDelayedTriggerCancelled | GCS_OnDelayedTriggerCancelled | DelayedTriggerCancelledEventArgs | SourceUnitId | Remove countdown UI. |
Reward and choice eventsโ
| Constant | String value | Payload | Fields | Typical use |
|---|---|---|---|---|
OnBattleRewardOffered | GCS_OnBattleRewardOffered | BattleRewardOfferedEventArgs | CardCandidates | Show the reward picker. |
OnBattleRewardSelected | GCS_OnBattleRewardSelected | BattleRewardSelectedEventArgs | Choice, SelectedCard | Close the reward picker and update the run deck. |
OnBattleRewardSkipped | GCS_OnBattleRewardSkipped | None | None | Close the reward picker. |
OnEffectChoiceOffered | GCS_OnEffectChoiceOffered | EffectChoiceOfferedEventArgs | PromptText, Candidates, AllowSkip | Show the FlowGraph choice picker. |
OnEffectChoiceSelected | GCS_OnEffectChoiceSelected | EffectChoiceSelectedEventArgs | SelectedIndex | Close the choice picker and log the selection. |
OnEffectChoiceSkipped | GCS_OnEffectChoiceSkipped | None | None | Close the choice picker. |
Payload typesโ
| Payload type | Fields |
|---|---|
TurnEventArgs | int TurnNumber |
CardPlayedEventArgs | GameCard Card, int InstanceId, int? TargetUnitId |
CardModifiedEventArgs | int InstanceId |
UnitHpChangedEventArgs | int UnitId, int CurrentHp, int MaxHp, int CurrentArmor, int PreviousHp, int PreviousArmor |
UnitDiedEventArgs | int UnitId, string Tier |
StatusChangedEventArgs | int UnitId, GameStatus Status, int Stacks |
StatusTickedEventArgs | int UnitId, GameStatus Status, string Timing, int StacksBefore, int StacksAfter, int HpBefore, int HpAfter |
EnemyUnitIntentChangedEventArgs | int UnitId, IReadOnlyList<IntentEntry> Intents |
EnemyUnitActingEventArgs | int UnitId, IntentTag Intent |
EnemyPhaseChangedEventArgs | int UnitId, int OldIndex, int NewIndex |
EnergyChangedEventArgs | int CurrentEnergy, int MaxEnergy |
DelayedTriggerScheduledEventArgs | int SourceUnitId, int RemainingTurns, string ActionTypeName |
DelayedTriggerFiredEventArgs | int SourceUnitId, string ActionTypeName |
DelayedTriggerCancelledEventArgs | int SourceUnitId |
BattleRewardOfferedEventArgs | IReadOnlyList<GameCard> CardCandidates |
BattleRewardSelectedEventArgs | RewardChoice Choice, GameCard SelectedCard |
EffectChoiceOfferedEventArgs | string PromptText, IReadOnlyList<ChoiceCandidate> Candidates, bool AllowSkip |
EffectChoiceSelectedEventArgs | int SelectedIndex |
BattleEndedEventArgs | bool Won |
EnemyUnitSummonedEventArgs | int SummonerId, int SummonedUnitId, string Tier |
CardLifecycleEventArgs | int InstanceId, GameCard Card |
DamageEventArgs | int SourceUnitId, int TargetUnitId, int Amount, bool Lethal |
ArmorChangedEventArgs | int UnitId, int Amount, int CurrentArmor |
EnergyDeltaEventArgs | int Amount, int CurrentEnergy |
StatusTransitionEventArgs | int UnitId, GameStatus Status, int Stacks, int SourceUnitId |
Shortcut coverageโ
Every event in the tables above except one has a GCSApi shortcut with the same name, so GCSEventNames.OnUnitHpChanged pairs with GCSApi.OnUnitHpChanged(...). Four subscription forms cover everything:
GCSApi.OnBattleStarted(handler)and the other payload-free shortcuts take anAction.GCSApi.OnUnitHpChanged(args => ...)and the other typed shortcuts take anAction<TArgs>.GCSApi.Subscribe<TArgs>(GCSEventNames.SomeEvent, handler)subscribes by name with a typed handler.GCSApi.Subscribe(GCSEventNames.SomeEvent, handler)subscribes by name without a payload.
The exception is OnEnemyUnitActing, which has no shortcut. Subscribe to it by name with its payload type:
var sub = GCSApi.Subscribe<EnemyUnitActingEventArgs>(
GCSEventNames.OnEnemyUnitActing,
args => PlayAttackWindup(args.UnitId, args.Intent));
Custom events raised through GCSApi.RaiseGameEvent have no shortcuts either; subscribe to them by name.
Nullability notesโ
| Field | Can be null | Why |
|---|---|---|
CardPlayedEventArgs.TargetUnitId | Yes | Some cards play without a target; the field is int?. |
GameCard fields in payloads | Rarely, but guard UI code anyway | The runtime skips null cards where it can; defensive UI costs nothing. |
GameStatus fields in payloads | Rarely, but guard UI code anyway | Status databases can change while content is being authored. |
IReadOnlyList payloads | Treat as non-null | The runtime supplies lists for every built-in event. |
Event names versus FlowGraph entriesโ
Graph entries and hooks (the On Card Played entry, the damage hooks, and the rest) are authoring-level timing points inside a graph, not channel broadcasts, so they have no GCSEventNames constant. This reference covers the runtime event channel only. For graph-side timing, see Entries and Hooks.