Event reference
Start with a category shortcut, then expand any event for its identity, payload fields, timing, and subscription example
The event shortcuts retain only the information needed to find an event. Complete details are in the corresponding collapsible entry below. These names match the Event tab in Game Card Monitor

The image above shows the event order in an actual battle. Locate the required event in the category shortcuts first, then expand its entry for the event name, Payload, exact timing, and subscription signature
Event shortcuts
- Battle and turns
- Cards
- Units and values
- Statuses
- Enemies and triggers
- Rewards and choices
| Event | Payload | Raised when |
|---|---|---|
OnBattleStarted | None | the player, enemies, battle piles, and opening hand have been created; the first enemy Intents are not guaranteed to be ready |
OnTurnStarted | TurnEventArgs | each player turn starts |
OnEnemyTurnStarted | TurnEventArgs | each enemy phase starts |
OnTurnEnded | TurnEventArgs | each player turn finishes |
OnDrawPhase | TurnEventArgs | the draw step of a player turn begins |
OnDiscardPhase | TurnEventArgs | the discard step of a player turn begins |
OnBattleEnded | BattleEndedEventArgs | the battle resolves as a win or loss |
| Event | Payload | Raised when |
|---|---|---|
OnCardPlayed | CardPlayedEventArgs | a card play is accepted and executed |
OnCardModified | CardModifiedEventArgs | a card instance's runtime cost or state changes |
OnCardDrawn | CardLifecycleEventArgs | each card enters the hand through drawing |
OnCardDiscarded | CardLifecycleEventArgs | overflow, end-of-turn cleanup, or an explicit move sends an existing card into Discard |
OnCardExhausted | CardLifecycleEventArgs | play cleanup, end-of-turn cleanup, or an explicit move sends an existing card into Exhaust |
OnCardRetained | CardLifecycleEventArgs | a card remains in hand during end-of-turn cleanup |
OnCardAddedToHand | CardLifecycleEventArgs | a card is created directly in the hand |
OnCardAddedToDeck | CardLifecycleEventArgs | a card is added directly to the draw pile |
OnDrawPileShuffled | None | the draw pile is shuffled |
| Event | Payload | Raised when |
|---|---|---|
OnUnitHpChanged | UnitHpChangedEventArgs | a unit's HP or armor changes |
OnUnitDied | UnitDiedEventArgs | a unit dies or is removed from battle |
OnDamageDealt | DamageEventArgs | an attacker causes HP loss to a target |
OnDamageTaken | DamageEventArgs | a unit loses HP from an attack or status |
OnArmorGained | ArmorChangedEventArgs | a unit gains armor |
OnArmorLost | ArmorChangedEventArgs | a unit loses armor |
OnEnergyChanged | EnergyChangedEventArgs | the player's current or maximum energy changes |
OnEnergyGained | EnergyDeltaEventArgs | the player gains energy |
OnEnergySpent | EnergyDeltaEventArgs | the player spends energy |
| Event | Payload | Raised when |
|---|---|---|
OnStatusChanged | StatusChangedEventArgs | a unit's status stack count changes |
OnStatusTicked | StatusTickedEventArgs | a status resolves at a turn boundary |
OnStatusInflicted | StatusTransitionEventArgs | a status application changes the unit's stored stack count |
OnStatusExpired | StatusTransitionEventArgs | a status naturally decays to 0 stacks |
OnStatusRemoved | StatusTransitionEventArgs | a status is explicitly removed |
| Event | Payload | Raised when |
|---|---|---|
OnEnemyUnitIntentChanged | EnemyUnitIntentChangedEventArgs | an enemy resolves or re-plans the intents exposed to the player |
OnEnemyUnitActing | EnemyUnitActingEventArgs | an enemy is about to execute its current intent |
OnEnemyUnitSummoned | EnemyUnitSummonedEventArgs | an enemy is summoned during battle |
OnEnemyPhaseChanged | EnemyPhaseChangedEventArgs | a sequence pattern advances to another authored child phase |
OnDelayedTriggerScheduled | DelayedTriggerScheduledEventArgs | a cross-turn effect is queued or its countdown advances |
OnDelayedTriggerFired | DelayedTriggerFiredEventArgs | the queued Body and nested deferred continuations finish |
OnDelayedTriggerCancelled | DelayedTriggerCancelledEventArgs | a delayed trigger is rejected or cancelled |
| Event | Payload | Raised when |
|---|---|---|
OnBattleRewardOffered | BattleRewardOfferedEventArgs | post-battle rewards become available |
OnBattleRewardSelected | BattleRewardSelectedEventArgs | the player applies a reward choice |
OnBattleRewardSkipped | None | the player declines the offered reward |
OnEffectChoiceOffered | EffectChoiceOfferedEventArgs | a card effect pauses for a player choice |
OnEffectChoiceSelected | EffectChoiceSelectedEventArgs | the presenter's submitted selection collection is stored, including an empty collection |
OnEffectChoiceSkipped | None | a choice is explicitly skipped or automatically falls back |
Battle and turn events
OnBattleStarted
Raised after the player, enemies, battle piles, and opening hand are created. Phase is still Initialize, and the first enemy Intents are resolved afterward. Use it for the initial HUD and battle-opening presentation. UI that refreshes Intent should listen to OnEnemyUnitIntentChanged or read current state after StartBattle returns
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnBattleStarted |
| String value | GCS_OnBattleStarted |
| Payload type | None |
public static IDisposable OnBattleStarted(Action handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
| — | — | This event has no payload parameters |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnBattleStarted(() => Debug.Log("OnBattleStarted"));
OnTurnStarted
Raised when each player turn starts. Typical use: Start-turn UI refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnTurnStarted |
| String value | GCS_OnTurnStarted |
| Payload type | TurnEventArgs |
public static IDisposable OnTurnStarted(Action<TurnEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TurnNumber | int | The current 1-based battle turn number |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnTurnStarted(args => Debug.Log(args.TurnNumber));
OnEnemyTurnStarted
Raised when each enemy phase starts. Typical use: Enemy-phase banner and input lock
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnemyTurnStarted |
| String value | GCS_OnEnemyTurnStarted |
| Payload type | TurnEventArgs |
public static IDisposable OnEnemyTurnStarted(Action<TurnEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TurnNumber | int | The current 1-based battle turn number |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnemyTurnStarted(args => Debug.Log(args.TurnNumber));
OnTurnEnded
Raised when each player turn finishes. Typical use: End-turn cleanup and combat logs
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnTurnEnded |
| String value | GCS_OnTurnEnded |
| Payload type | TurnEventArgs |
public static IDisposable OnTurnEnded(Action<TurnEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TurnNumber | int | The current 1-based battle turn number |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnTurnEnded(args => Debug.Log(args.TurnNumber));
OnDrawPhase
Raised when the draw step of a player turn begins. Typical use: Draw-phase UI and draw-count presentation
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDrawPhase |
| String value | GCS_OnDrawPhase |
| Payload type | TurnEventArgs |
public static IDisposable OnDrawPhase(Action<TurnEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TurnNumber | int | The current 1-based battle turn number |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDrawPhase(args => Debug.Log(args.TurnNumber));
OnDiscardPhase
Raised when the discard step of a player turn begins. Typical use: Discard-phase UI and cleanup
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDiscardPhase |
| String value | GCS_OnDiscardPhase |
| Payload type | TurnEventArgs |
public static IDisposable OnDiscardPhase(Action<TurnEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TurnNumber | int | The current 1-based battle turn number |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDiscardPhase(args => Debug.Log(args.TurnNumber));
OnBattleEnded
Raised when the battle resolves as a win or loss. Typical use: Victory or defeat presentation
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnBattleEnded |
| String value | GCS_OnBattleEnded |
| Payload type | BattleEndedEventArgs |
public static IDisposable OnBattleEnded(Action<BattleEndedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
Won | bool | Whether the player won the battle |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnBattleEnded(args => Debug.Log(args.Won));
Card events
OnCardPlayed
Raised when a card play is accepted and executed. Typical use: Play animation, combat log, and combo counters
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardPlayed |
| String value | GCS_OnCardPlayed |
| Payload type | CardPlayedEventArgs |
public static IDisposable OnCardPlayed(Action<CardPlayedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
Card | GameCard | The effective card definition that was played |
InstanceId | int | The played card instance's runtime ID |
TargetUnitId | int? | The selected target unit ID, or null for cards without a selected target |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardPlayed(args => Debug.Log(args.Card));
OnCardModified
Raised after a card instance's cost rule, successful upgrade, or successful transform changes its runtime state. Typical use: Refresh cost, upgrade, or transformed-card UI
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardModified |
| String value | GCS_OnCardModified |
| Payload type | CardModifiedEventArgs |
public static IDisposable OnCardModified(Action<CardModifiedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
InstanceId | int | The runtime ID of the card instance that changed |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardModified(args => Debug.Log(args.InstanceId));
OnCardDrawn
Raised when each card enters the hand through drawing. Typical use: Draw animation and hand refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardDrawn |
| String value | GCS_OnCardDrawn |
| Payload type | CardLifecycleEventArgs |
public static IDisposable OnCardDrawn(Action<CardLifecycleEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
InstanceId | int | The affected card instance's runtime ID |
Card | GameCard | The card instance's effective card definition |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardDrawn(args => Debug.Log(args.InstanceId));
OnCardDiscarded
Raised when overflow, end-of-turn cleanup, or an explicit move sends an existing card into Discard. Default post-play placement and direct creation in Discard do not publish it. Typical use: Discard animation and pile refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardDiscarded |
| String value | GCS_OnCardDiscarded |
| Payload type | CardLifecycleEventArgs |
public static IDisposable OnCardDiscarded(Action<CardLifecycleEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
InstanceId | int | The affected card instance's runtime ID |
Card | GameCard | The card instance's effective card definition |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardDiscarded(args => Debug.Log(args.InstanceId));
OnCardExhausted
Raised when play cleanup, end-of-turn cleanup, or an explicit move sends an existing card into Exhaust. Direct creation in Exhaust does not publish it. Typical use: Exhaust animation and pile refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardExhausted |
| String value | GCS_OnCardExhausted |
| Payload type | CardLifecycleEventArgs |
public static IDisposable OnCardExhausted(Action<CardLifecycleEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
InstanceId | int | The affected card instance's runtime ID |
Card | GameCard | The card instance's effective card definition |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardExhausted(args => Debug.Log(args.InstanceId));
OnCardRetained
Raised when a card remains in hand during end-of-turn cleanup. Typical use: Retain feedback and hand refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardRetained |
| String value | GCS_OnCardRetained |
| Payload type | CardLifecycleEventArgs |
public static IDisposable OnCardRetained(Action<CardLifecycleEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
InstanceId | int | The affected card instance's runtime ID |
Card | GameCard | The card instance's effective card definition |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardRetained(args => Debug.Log(args.InstanceId));
OnCardAddedToHand
Raised when a card is created directly in the hand. Typical use: Generated-card presentation
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardAddedToHand |
| String value | GCS_OnCardAddedToHand |
| Payload type | CardLifecycleEventArgs |
public static IDisposable OnCardAddedToHand(Action<CardLifecycleEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
InstanceId | int | The affected card instance's runtime ID |
Card | GameCard | The card instance's effective card definition |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardAddedToHand(args => Debug.Log(args.InstanceId));
OnCardAddedToDeck
Raised when a card is added directly to the draw pile. Typical use: Deck-add feedback and pile refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnCardAddedToDeck |
| String value | GCS_OnCardAddedToDeck |
| Payload type | CardLifecycleEventArgs |
public static IDisposable OnCardAddedToDeck(Action<CardLifecycleEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
InstanceId | int | The affected card instance's runtime ID |
Card | GameCard | The card instance's effective card definition |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnCardAddedToDeck(args => Debug.Log(args.InstanceId));
OnDrawPileShuffled
Raised when the draw pile is shuffled. Typical use: Shuffle animation and pile counter refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDrawPileShuffled |
| String value | GCS_OnDrawPileShuffled |
| Payload type | None |
public static IDisposable OnDrawPileShuffled(Action handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
| — | — | This event has no payload parameters |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDrawPileShuffled(() => Debug.Log("OnDrawPileShuffled"));
Unit, HP, armor, damage, and energy events
OnUnitHpChanged
Raised when a unit's HP or armor changes. Typical use: HP and armor bars
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnUnitHpChanged |
| String value | GCS_OnUnitHpChanged |
| Payload type | UnitHpChangedEventArgs |
public static IDisposable OnUnitHpChanged(Action<UnitHpChangedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
CurrentHp | int | HP after the change |
MaxHp | int | The unit's maximum HP |
CurrentArmor | int | Armor after the change |
PreviousHp | int | HP before the change |
PreviousArmor | int | Armor before the change |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnUnitHpChanged(args => Debug.Log(args.UnitId));
OnUnitDied
Raised when a unit dies or is removed from battle. Typical use: Death presentation, rewards, and target cleanup
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnUnitDied |
| String value | GCS_OnUnitDied |
| Payload type | UnitDiedEventArgs |
public static IDisposable OnUnitDied(Action<UnitDiedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The dead or removed unit's runtime ID |
Tier | string | The authored unit tier |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnUnitDied(args => Debug.Log(args.UnitId));
OnDamageDealt
Raised when an attacker causes HP loss to a target. Typical use: Outgoing damage logs and hit feedback
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDamageDealt |
| String value | GCS_OnDamageDealt |
| Payload type | DamageEventArgs |
public static IDisposable OnDamageDealt(Action<DamageEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
SourceUnitId | int | The source unit ID, or -1 when there is no unit source |
TargetUnitId | int | The damaged unit's runtime ID |
Amount | int | The actual HP lost after armor and modifiers |
Lethal | bool | Whether this damage killed the target |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDamageDealt(args => Debug.Log(args.SourceUnitId));
OnDamageTaken
Raised when a unit loses HP from an attack or status. Typical use: Incoming hit reactions
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDamageTaken |
| String value | GCS_OnDamageTaken |
| Payload type | DamageEventArgs |
public static IDisposable OnDamageTaken(Action<DamageEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
SourceUnitId | int | The source unit ID, or -1 when there is no unit source |
TargetUnitId | int | The damaged unit's runtime ID |
Amount | int | The actual HP lost after armor and modifiers |
Lethal | bool | Whether this damage killed the target |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDamageTaken(args => Debug.Log(args.SourceUnitId));
OnArmorGained
Raised when a unit gains armor. Typical use: Armor floating text and armor-bar refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnArmorGained |
| String value | GCS_OnArmorGained |
| Payload type | ArmorChangedEventArgs |
public static IDisposable OnArmorGained(Action<ArmorChangedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
Amount | int | The amount of armor gained or lost |
CurrentArmor | int | Armor after the change |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnArmorGained(args => Debug.Log(args.UnitId));
OnArmorLost
Raised when damage absorbs armor or an explicit armor-loss operation removes armor. Typical use: Armor-break feedback
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnArmorLost |
| String value | GCS_OnArmorLost |
| Payload type | ArmorChangedEventArgs |
public static IDisposable OnArmorLost(Action<ArmorChangedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
Amount | int | The armor actually removed after the zero floor |
CurrentArmor | int | Armor after the change |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnArmorLost(args => Debug.Log(args.UnitId));
OnEnergyChanged
Raised when the player's current or maximum energy changes. Typical use: Full energy UI refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnergyChanged |
| String value | GCS_OnEnergyChanged |
| Payload type | EnergyChangedEventArgs |
public static IDisposable OnEnergyChanged(Action<EnergyChangedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
CurrentEnergy | int | The player's energy after the change |
MaxEnergy | int | The player's resolved per-turn maximum energy |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnergyChanged(args => Debug.Log(args.CurrentEnergy));
OnEnergyGained
Raised when the player gains energy. Typical use: Energy-gain feedback
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnergyGained |
| String value | GCS_OnEnergyGained |
| Payload type | EnergyDeltaEventArgs |
public static IDisposable OnEnergyGained(Action<EnergyDeltaEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
Amount | int | The amount gained or spent |
CurrentEnergy | int | The player's energy after the change |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnergyGained(args => Debug.Log(args.Amount));
OnEnergySpent
Raised when a successful normal card play pays a positive cost or an explicit energy-loss operation removes energy. Typical use: Card payment and energy-drain feedback
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnergySpent |
| String value | GCS_OnEnergySpent |
| Payload type | EnergyDeltaEventArgs |
public static IDisposable OnEnergySpent(Action<EnergyDeltaEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
Amount | int | The energy actually spent |
CurrentEnergy | int | The player's energy after the change |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnergySpent(args => Debug.Log(args.Amount));
Status events
OnStatusChanged
Raised when a unit's status stack count changes. Typical use: Refresh the status widget
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnStatusChanged |
| String value | GCS_OnStatusChanged |
| Payload type | StatusChangedEventArgs |
public static IDisposable OnStatusChanged(Action<StatusChangedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
Status | GameStatus | The status whose stack count changed |
Stacks | int | The new stack count |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnStatusChanged(args => Debug.Log(args.UnitId));
OnStatusTicked
Raised when a status resolves at a turn boundary. Typical use: Status resolution animation and combat log
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnStatusTicked |
| String value | GCS_OnStatusTicked |
| Payload type | StatusTickedEventArgs |
public static IDisposable OnStatusTicked(Action<StatusTickedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
Status | GameStatus | The status that resolved |
Timing | string | The turn-boundary timing that resolved the status |
StacksBefore | int | Stack count before resolution |
StacksAfter | int | Stack count after resolution |
HpBefore | int | Unit HP before resolution |
HpAfter | int | Unit HP after resolution |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnStatusTicked(args => Debug.Log(args.UnitId));
OnStatusInflicted
Raised only when an application changes the unit's stored stack count after Hooks, stack rules, and caps. A capped or Max no-op is silent. Typical use: Status-application animation
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnStatusInflicted |
| String value | GCS_OnStatusInflicted |
| Payload type | StatusTransitionEventArgs |
public static IDisposable OnStatusInflicted(Action<StatusTransitionEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
Status | GameStatus | The status that was applied, expired, or removed |
Stacks | int | The stack count associated with the transition |
SourceUnitId | int | The applier unit ID, or -1 when no source is available |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnStatusInflicted(args => Debug.Log(args.UnitId));
OnStatusExpired
Raised when a status naturally decays to 0 stacks. Typical use: Natural-expiration animation
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnStatusExpired |
| String value | GCS_OnStatusExpired |
| Payload type | StatusTransitionEventArgs |
public static IDisposable OnStatusExpired(Action<StatusTransitionEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
Status | GameStatus | The status that was applied, expired, or removed |
Stacks | int | The stack count associated with the transition |
SourceUnitId | int | The applier unit ID, or -1 when no source is available |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnStatusExpired(args => Debug.Log(args.UnitId));
OnStatusRemoved
Raised when a status is explicitly removed. Typical use: Cleanse or explicit-removal feedback
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnStatusRemoved |
| String value | GCS_OnStatusRemoved |
| Payload type | StatusTransitionEventArgs |
public static IDisposable OnStatusRemoved(Action<StatusTransitionEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The affected unit's runtime ID |
Status | GameStatus | The status that was applied, expired, or removed |
Stacks | int | The stack count associated with the transition |
SourceUnitId | int | The applier unit ID, or -1 when no source is available |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnStatusRemoved(args => Debug.Log(args.UnitId));
Enemy and delayed trigger events
OnEnemyUnitIntentChanged
Raised when an enemy first resolves its plan, re-plans for a later turn, is summoned, or a status or active Hook changes the currently exposed preview. Typical use: Refresh the enemy intent widget
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnemyUnitIntentChanged |
| String value | GCS_OnEnemyUnitIntentChanged |
| Payload type | EnemyUnitIntentChangedEventArgs |
public static IDisposable OnEnemyUnitIntentChanged(Action<EnemyUnitIntentChangedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The enemy unit's runtime ID |
Intents | IReadOnlyList<IntentEntry> | The intents currently exposed to the player |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnemyUnitIntentChanged(args => Debug.Log(args.UnitId));
OnEnemyUnitActing
Raised when an enemy is about to execute its current intent. Typical use: Pre-action telegraphs such as a lunge
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnemyUnitActing |
| String value | GCS_OnEnemyUnitActing |
| Payload type | EnemyUnitActingEventArgs |
public static IDisposable OnEnemyUnitActing(Action<EnemyUnitActingEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The acting enemy's runtime ID |
Intent | IntentTag | The category of the action about to execute |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnemyUnitActing(args => Debug.Log(args.UnitId));
OnEnemyUnitSummoned
Raised when an enemy is summoned during battle. Typical use: Summon presentation and layout refresh
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnemyUnitSummoned |
| String value | GCS_OnEnemyUnitSummoned |
| Payload type | EnemyUnitSummonedEventArgs |
public static IDisposable OnEnemyUnitSummoned(Action<EnemyUnitSummonedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
SummonerId | int | The summoner unit ID, or -1 when no summoner was supplied |
SummonedUnitId | int | The summoned enemy's runtime ID |
Tier | string | The summoned enemy's authored tier |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnemyUnitSummoned(args => Debug.Log(args.SummonerId));
OnEnemyPhaseChanged
Raised when a SequencePatternNode advances to another authored child phase after its repeat count completes. Typical use: Enemy sequence-phase UI
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEnemyPhaseChanged |
| String value | GCS_OnEnemyPhaseChanged |
| Payload type | EnemyPhaseChangedEventArgs |
public static IDisposable OnEnemyPhaseChanged(Action<EnemyPhaseChangedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
UnitId | int | The enemy unit whose behavior phase changed |
PatternNodeId | string | The sequence pattern node whose active child changed |
OldIndex | int | The previous child index |
NewIndex | int | The new child index |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEnemyPhaseChanged(args =>
Debug.Log($"Enemy {args.UnitId}: {args.PatternNodeId} {args.OldIndex} -> {args.NewIndex}"));
OnDelayedTriggerScheduled
Raised when a cross-turn effect is queued and again whenever its selected phase advances the countdown without firing it; typical use: create or update one countdown indicator per TriggerId
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDelayedTriggerScheduled |
| String value | GCS_OnDelayedTriggerScheduled |
| Payload type | DelayedTriggerScheduledEventArgs |
public static IDisposable OnDelayedTriggerScheduled(Action<DelayedTriggerScheduledEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TriggerId | int | Battle-local identifier reused by every update and terminal event for this trigger |
SourceUnitId | int | The captured source unit ID, or -1 when no source is available |
TargetUnitId | int | The captured target unit ID, or -1 when no target is available |
RemainingTurns | int | Matching phase boundaries remaining before the trigger fires |
TickPhase | DelayedTickPhase | Phase boundary that advances and fires the trigger |
Card | GameCard | Associated card definition captured when the trigger was registered, or null when no card is associated |
ActionTypeName | string | Associated card name, or Delayed Effect when no named card is available |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDelayedTriggerScheduled(args =>
Debug.Log($"Trigger {args.TriggerId}: {args.RemainingTurns}"));
OnDelayedTriggerFired
Raised after a queued cross-turn Body has fully resolved, including every nested Wait or Choice continuation; typical use: complete the indicator and feedback associated with its TriggerId
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDelayedTriggerFired |
| String value | GCS_OnDelayedTriggerFired |
| Payload type | DelayedTriggerFiredEventArgs |
public static IDisposable OnDelayedTriggerFired(Action<DelayedTriggerFiredEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TriggerId | int | Battle-local identifier previously reported by OnDelayedTriggerScheduled |
SourceUnitId | int | The captured source unit ID, or -1 when no source is available |
TargetUnitId | int | The captured target unit ID, or -1 when no target is available |
TickPhase | DelayedTickPhase | Phase boundary at which the trigger fired |
Card | GameCard | Associated card definition captured when the trigger was registered, or null when no card is associated |
ActionTypeName | string | Associated card name, or Delayed Effect when no named card is available |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDelayedTriggerFired(args => Debug.Log(args.TriggerId));
OnDelayedTriggerCancelled
Raised when a delayed trigger is rejected before entering the queue or a queued cross-turn effect is cancelled; typical use: remove the pending indicator associated with its TriggerId
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnDelayedTriggerCancelled |
| String value | GCS_OnDelayedTriggerCancelled |
| Payload type | DelayedTriggerCancelledEventArgs |
public static IDisposable OnDelayedTriggerCancelled(Action<DelayedTriggerCancelledEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
TriggerId | int | Battle-local identifier assigned to the cancelled trigger, matching any earlier scheduled updates |
SourceUnitId | int | The captured source unit ID, or -1 when no source is available |
TargetUnitId | int | The captured target unit ID, or -1 when no target is available |
TickPhase | DelayedTickPhase | Phase boundary the cancelled trigger was waiting for |
Card | GameCard | Associated card definition captured when the trigger was registered, or null when no card is associated |
ActionTypeName | string | Associated card name, or Delayed Effect when no named card is available |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnDelayedTriggerCancelled(args => Debug.Log(args.TriggerId));
Reward and choice events
OnBattleRewardOffered
Raised when post-battle rewards become available. Typical use: Open the reward picker
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnBattleRewardOffered |
| String value | GCS_OnBattleRewardOffered |
| Payload type | BattleRewardOfferedEventArgs |
public static IDisposable OnBattleRewardOffered(Action<BattleRewardOfferedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
CardCandidates | IReadOnlyList<GameCard> | The card choices offered for a card reward |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnBattleRewardOffered(args => Debug.Log(args.CardCandidates.Count));
OnBattleRewardSelected
Raised when the player applies a reward choice. Typical use: Close the reward picker and refresh the run deck
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnBattleRewardSelected |
| String value | GCS_OnBattleRewardSelected |
| Payload type | BattleRewardSelectedEventArgs |
public static IDisposable OnBattleRewardSelected(Action<BattleRewardSelectedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
Choice | RewardChoice | The selected reward kind |
SelectedCard | GameCard | The selected card for a card reward; otherwise null |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnBattleRewardSelected(args => Debug.Log(args.Choice));
OnBattleRewardSkipped
Raised when the player declines the offered reward. Typical use: Close the reward picker
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnBattleRewardSkipped |
| String value | GCS_OnBattleRewardSkipped |
| Payload type | None |
public static IDisposable OnBattleRewardSkipped(Action handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
| — | — | This event has no payload parameters |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnBattleRewardSkipped(() => Debug.Log("OnBattleRewardSkipped"));
OnEffectChoiceOffered
Raised when a card effect pauses for a player choice. Typical use: Open the FlowGraph choice picker
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEffectChoiceOffered |
| String value | GCS_OnEffectChoiceOffered |
| Payload type | EffectChoiceOfferedEventArgs |
public static IDisposable OnEffectChoiceOffered(Action<EffectChoiceOfferedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
PromptText | string | The prompt shown to the player |
Candidates | IReadOnlyList<ChoiceCandidate> | The choices produced by the effect graph |
AllowSkip | bool | Whether the player may skip the choice |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEffectChoiceOffered(args => Debug.Log(args.PromptText));
OnEffectChoiceSelected
Raised after the presenter's submitted selection collection is stored on the Choice node's Chosen port and before the waiting Choice state is cleared; the submitted collection may be empty, in which case SelectedIndex is -1. Typical use: Record the submitted selection
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEffectChoiceSelected |
| String value | GCS_OnEffectChoiceSelected |
| Payload type | EffectChoiceSelectedEventArgs |
public static IDisposable OnEffectChoiceSelected(Action<EffectChoiceSelectedEventArgs> handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
SelectedIndex | int | Compatibility field containing the first selected index, or -1 when the presenter reports an empty selection |
SelectedIndices | IReadOnlyList<int> | All selected indexes in presenter order, relative to the candidates supplied by OnEffectChoiceOffered |
SelectedCandidates | IReadOnlyList<ChoiceCandidate> | All selected candidate objects in presenter order |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEffectChoiceSelected(args =>
Debug.Log($"Selected {args.SelectedIndices.Count} candidates"));
OnEffectChoiceSkipped
Raised when the presenter invokes onSkipped, or when GCS resolves the Choice through its skipped path because no presenter or no candidates are available. Typical use: Close the choice picker or record an automatic fallback
Event identity:
| Item | Value |
|---|---|
| Constant | GCSEventNames.OnEffectChoiceSkipped |
| String value | GCS_OnEffectChoiceSkipped |
| Payload type | None |
public static IDisposable OnEffectChoiceSkipped(Action handler);
Event parameters:
| Name | Type | Description |
|---|---|---|
| — | — | This event has no payload parameters |
Returns: An IDisposable subscription handle; call Dispose() to unsubscribe
Example:
IDisposable subscription = GCSApi.OnEffectChoiceSkipped(() => Debug.Log("OnEffectChoiceSkipped"));
Subscription lifetime
Store the IDisposable returned by GCSApi.On* or GCSApi.Subscribe*, then call Dispose() when the subscriber is disabled or destroyed so it does not keep receiving events after a scene change
private IDisposable _subscription;
private void OnEnable()
{
_subscription = GCSApi.OnBattleEnded(args => Debug.Log(args.Won));
}
private void OnDisable()
{
_subscription?.Dispose();
_subscription = null;
}
Nullability
| Field | Contract |
|---|---|
CardPlayedEventArgs.TargetUnitId | null when the card has no selected target |
BattleRewardSelectedEventArgs.SelectedCard | null for non-card rewards |
SourceUnitId / SummonerId | -1 when no source unit is available |
IReadOnlyList fields | Built-in events provide non-null lists |
Event names versus FlowGraph entries
Graph entries and Hooks, including On Card Played and damage Hooks, are FlowGraph timing points rather than event-channel broadcasts, so they have no GCSEventNames constant
See FlowGraph fundamentals for the timing model