Skip to main content

Event reference

Guide

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

Game Card Monitor Event tab listing raised GCS event names in chronological order

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

EventPayloadRaised when
OnBattleStartedNonethe player, enemies, battle piles, and opening hand have been created; the first enemy Intents are not guaranteed to be ready
OnTurnStartedTurnEventArgseach player turn starts
OnEnemyTurnStartedTurnEventArgseach enemy phase starts
OnTurnEndedTurnEventArgseach player turn finishes
OnDrawPhaseTurnEventArgsthe draw step of a player turn begins
OnDiscardPhaseTurnEventArgsthe discard step of a player turn begins
OnBattleEndedBattleEndedEventArgsthe battle resolves as a win or loss

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:

ItemValue
ConstantGCSEventNames.OnBattleStarted
String valueGCS_OnBattleStarted
Payload typeNone
public static IDisposable OnBattleStarted(Action handler);

Event parameters:

NameTypeDescription
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:

ItemValue
ConstantGCSEventNames.OnTurnStarted
String valueGCS_OnTurnStarted
Payload typeTurnEventArgs
public static IDisposable OnTurnStarted(Action<TurnEventArgs> handler);

Event parameters:

NameTypeDescription
TurnNumberintThe 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:

ItemValue
ConstantGCSEventNames.OnEnemyTurnStarted
String valueGCS_OnEnemyTurnStarted
Payload typeTurnEventArgs
public static IDisposable OnEnemyTurnStarted(Action<TurnEventArgs> handler);

Event parameters:

NameTypeDescription
TurnNumberintThe 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:

ItemValue
ConstantGCSEventNames.OnTurnEnded
String valueGCS_OnTurnEnded
Payload typeTurnEventArgs
public static IDisposable OnTurnEnded(Action<TurnEventArgs> handler);

Event parameters:

NameTypeDescription
TurnNumberintThe 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:

ItemValue
ConstantGCSEventNames.OnDrawPhase
String valueGCS_OnDrawPhase
Payload typeTurnEventArgs
public static IDisposable OnDrawPhase(Action<TurnEventArgs> handler);

Event parameters:

NameTypeDescription
TurnNumberintThe 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:

ItemValue
ConstantGCSEventNames.OnDiscardPhase
String valueGCS_OnDiscardPhase
Payload typeTurnEventArgs
public static IDisposable OnDiscardPhase(Action<TurnEventArgs> handler);

Event parameters:

NameTypeDescription
TurnNumberintThe 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:

ItemValue
ConstantGCSEventNames.OnBattleEnded
String valueGCS_OnBattleEnded
Payload typeBattleEndedEventArgs
public static IDisposable OnBattleEnded(Action<BattleEndedEventArgs> handler);

Event parameters:

NameTypeDescription
WonboolWhether 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:

ItemValue
ConstantGCSEventNames.OnCardPlayed
String valueGCS_OnCardPlayed
Payload typeCardPlayedEventArgs
public static IDisposable OnCardPlayed(Action<CardPlayedEventArgs> handler);

Event parameters:

NameTypeDescription
CardGameCardThe effective card definition that was played
InstanceIdintThe played card instance's runtime ID
TargetUnitIdint?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:

ItemValue
ConstantGCSEventNames.OnCardModified
String valueGCS_OnCardModified
Payload typeCardModifiedEventArgs
public static IDisposable OnCardModified(Action<CardModifiedEventArgs> handler);

Event parameters:

NameTypeDescription
InstanceIdintThe 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:

ItemValue
ConstantGCSEventNames.OnCardDrawn
String valueGCS_OnCardDrawn
Payload typeCardLifecycleEventArgs
public static IDisposable OnCardDrawn(Action<CardLifecycleEventArgs> handler);

Event parameters:

NameTypeDescription
InstanceIdintThe affected card instance's runtime ID
CardGameCardThe 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:

ItemValue
ConstantGCSEventNames.OnCardDiscarded
String valueGCS_OnCardDiscarded
Payload typeCardLifecycleEventArgs
public static IDisposable OnCardDiscarded(Action<CardLifecycleEventArgs> handler);

Event parameters:

NameTypeDescription
InstanceIdintThe affected card instance's runtime ID
CardGameCardThe 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:

ItemValue
ConstantGCSEventNames.OnCardExhausted
String valueGCS_OnCardExhausted
Payload typeCardLifecycleEventArgs
public static IDisposable OnCardExhausted(Action<CardLifecycleEventArgs> handler);

Event parameters:

NameTypeDescription
InstanceIdintThe affected card instance's runtime ID
CardGameCardThe 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:

ItemValue
ConstantGCSEventNames.OnCardRetained
String valueGCS_OnCardRetained
Payload typeCardLifecycleEventArgs
public static IDisposable OnCardRetained(Action<CardLifecycleEventArgs> handler);

Event parameters:

NameTypeDescription
InstanceIdintThe affected card instance's runtime ID
CardGameCardThe 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:

ItemValue
ConstantGCSEventNames.OnCardAddedToHand
String valueGCS_OnCardAddedToHand
Payload typeCardLifecycleEventArgs
public static IDisposable OnCardAddedToHand(Action<CardLifecycleEventArgs> handler);

Event parameters:

NameTypeDescription
InstanceIdintThe affected card instance's runtime ID
CardGameCardThe 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:

ItemValue
ConstantGCSEventNames.OnCardAddedToDeck
String valueGCS_OnCardAddedToDeck
Payload typeCardLifecycleEventArgs
public static IDisposable OnCardAddedToDeck(Action<CardLifecycleEventArgs> handler);

Event parameters:

NameTypeDescription
InstanceIdintThe affected card instance's runtime ID
CardGameCardThe 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:

ItemValue
ConstantGCSEventNames.OnDrawPileShuffled
String valueGCS_OnDrawPileShuffled
Payload typeNone
public static IDisposable OnDrawPileShuffled(Action handler);

Event parameters:

NameTypeDescription
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:

ItemValue
ConstantGCSEventNames.OnUnitHpChanged
String valueGCS_OnUnitHpChanged
Payload typeUnitHpChangedEventArgs
public static IDisposable OnUnitHpChanged(Action<UnitHpChangedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
CurrentHpintHP after the change
MaxHpintThe unit's maximum HP
CurrentArmorintArmor after the change
PreviousHpintHP before the change
PreviousArmorintArmor 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:

ItemValue
ConstantGCSEventNames.OnUnitDied
String valueGCS_OnUnitDied
Payload typeUnitDiedEventArgs
public static IDisposable OnUnitDied(Action<UnitDiedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe dead or removed unit's runtime ID
TierstringThe 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:

ItemValue
ConstantGCSEventNames.OnDamageDealt
String valueGCS_OnDamageDealt
Payload typeDamageEventArgs
public static IDisposable OnDamageDealt(Action<DamageEventArgs> handler);

Event parameters:

NameTypeDescription
SourceUnitIdintThe source unit ID, or -1 when there is no unit source
TargetUnitIdintThe damaged unit's runtime ID
AmountintThe actual HP lost after armor and modifiers
LethalboolWhether 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:

ItemValue
ConstantGCSEventNames.OnDamageTaken
String valueGCS_OnDamageTaken
Payload typeDamageEventArgs
public static IDisposable OnDamageTaken(Action<DamageEventArgs> handler);

Event parameters:

NameTypeDescription
SourceUnitIdintThe source unit ID, or -1 when there is no unit source
TargetUnitIdintThe damaged unit's runtime ID
AmountintThe actual HP lost after armor and modifiers
LethalboolWhether 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:

ItemValue
ConstantGCSEventNames.OnArmorGained
String valueGCS_OnArmorGained
Payload typeArmorChangedEventArgs
public static IDisposable OnArmorGained(Action<ArmorChangedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
AmountintThe amount of armor gained or lost
CurrentArmorintArmor 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:

ItemValue
ConstantGCSEventNames.OnArmorLost
String valueGCS_OnArmorLost
Payload typeArmorChangedEventArgs
public static IDisposable OnArmorLost(Action<ArmorChangedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
AmountintThe armor actually removed after the zero floor
CurrentArmorintArmor 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:

ItemValue
ConstantGCSEventNames.OnEnergyChanged
String valueGCS_OnEnergyChanged
Payload typeEnergyChangedEventArgs
public static IDisposable OnEnergyChanged(Action<EnergyChangedEventArgs> handler);

Event parameters:

NameTypeDescription
CurrentEnergyintThe player's energy after the change
MaxEnergyintThe 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:

ItemValue
ConstantGCSEventNames.OnEnergyGained
String valueGCS_OnEnergyGained
Payload typeEnergyDeltaEventArgs
public static IDisposable OnEnergyGained(Action<EnergyDeltaEventArgs> handler);

Event parameters:

NameTypeDescription
AmountintThe amount gained or spent
CurrentEnergyintThe 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:

ItemValue
ConstantGCSEventNames.OnEnergySpent
String valueGCS_OnEnergySpent
Payload typeEnergyDeltaEventArgs
public static IDisposable OnEnergySpent(Action<EnergyDeltaEventArgs> handler);

Event parameters:

NameTypeDescription
AmountintThe energy actually spent
CurrentEnergyintThe 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:

ItemValue
ConstantGCSEventNames.OnStatusChanged
String valueGCS_OnStatusChanged
Payload typeStatusChangedEventArgs
public static IDisposable OnStatusChanged(Action<StatusChangedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
StatusGameStatusThe status whose stack count changed
StacksintThe 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:

ItemValue
ConstantGCSEventNames.OnStatusTicked
String valueGCS_OnStatusTicked
Payload typeStatusTickedEventArgs
public static IDisposable OnStatusTicked(Action<StatusTickedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
StatusGameStatusThe status that resolved
TimingstringThe turn-boundary timing that resolved the status
StacksBeforeintStack count before resolution
StacksAfterintStack count after resolution
HpBeforeintUnit HP before resolution
HpAfterintUnit 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:

ItemValue
ConstantGCSEventNames.OnStatusInflicted
String valueGCS_OnStatusInflicted
Payload typeStatusTransitionEventArgs
public static IDisposable OnStatusInflicted(Action<StatusTransitionEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
StatusGameStatusThe status that was applied, expired, or removed
StacksintThe stack count associated with the transition
SourceUnitIdintThe 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:

ItemValue
ConstantGCSEventNames.OnStatusExpired
String valueGCS_OnStatusExpired
Payload typeStatusTransitionEventArgs
public static IDisposable OnStatusExpired(Action<StatusTransitionEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
StatusGameStatusThe status that was applied, expired, or removed
StacksintThe stack count associated with the transition
SourceUnitIdintThe 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:

ItemValue
ConstantGCSEventNames.OnStatusRemoved
String valueGCS_OnStatusRemoved
Payload typeStatusTransitionEventArgs
public static IDisposable OnStatusRemoved(Action<StatusTransitionEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe affected unit's runtime ID
StatusGameStatusThe status that was applied, expired, or removed
StacksintThe stack count associated with the transition
SourceUnitIdintThe 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:

ItemValue
ConstantGCSEventNames.OnEnemyUnitIntentChanged
String valueGCS_OnEnemyUnitIntentChanged
Payload typeEnemyUnitIntentChangedEventArgs
public static IDisposable OnEnemyUnitIntentChanged(Action<EnemyUnitIntentChangedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe enemy unit's runtime ID
IntentsIReadOnlyList<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:

ItemValue
ConstantGCSEventNames.OnEnemyUnitActing
String valueGCS_OnEnemyUnitActing
Payload typeEnemyUnitActingEventArgs
public static IDisposable OnEnemyUnitActing(Action<EnemyUnitActingEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe acting enemy's runtime ID
IntentIntentTagThe 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:

ItemValue
ConstantGCSEventNames.OnEnemyUnitSummoned
String valueGCS_OnEnemyUnitSummoned
Payload typeEnemyUnitSummonedEventArgs
public static IDisposable OnEnemyUnitSummoned(Action<EnemyUnitSummonedEventArgs> handler);

Event parameters:

NameTypeDescription
SummonerIdintThe summoner unit ID, or -1 when no summoner was supplied
SummonedUnitIdintThe summoned enemy's runtime ID
TierstringThe 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:

ItemValue
ConstantGCSEventNames.OnEnemyPhaseChanged
String valueGCS_OnEnemyPhaseChanged
Payload typeEnemyPhaseChangedEventArgs
public static IDisposable OnEnemyPhaseChanged(Action<EnemyPhaseChangedEventArgs> handler);

Event parameters:

NameTypeDescription
UnitIdintThe enemy unit whose behavior phase changed
PatternNodeIdstringThe sequence pattern node whose active child changed
OldIndexintThe previous child index
NewIndexintThe 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:

ItemValue
ConstantGCSEventNames.OnDelayedTriggerScheduled
String valueGCS_OnDelayedTriggerScheduled
Payload typeDelayedTriggerScheduledEventArgs
public static IDisposable OnDelayedTriggerScheduled(Action<DelayedTriggerScheduledEventArgs> handler);

Event parameters:

NameTypeDescription
TriggerIdintBattle-local identifier reused by every update and terminal event for this trigger
SourceUnitIdintThe captured source unit ID, or -1 when no source is available
TargetUnitIdintThe captured target unit ID, or -1 when no target is available
RemainingTurnsintMatching phase boundaries remaining before the trigger fires
TickPhaseDelayedTickPhasePhase boundary that advances and fires the trigger
CardGameCardAssociated card definition captured when the trigger was registered, or null when no card is associated
ActionTypeNamestringAssociated 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:

ItemValue
ConstantGCSEventNames.OnDelayedTriggerFired
String valueGCS_OnDelayedTriggerFired
Payload typeDelayedTriggerFiredEventArgs
public static IDisposable OnDelayedTriggerFired(Action<DelayedTriggerFiredEventArgs> handler);

Event parameters:

NameTypeDescription
TriggerIdintBattle-local identifier previously reported by OnDelayedTriggerScheduled
SourceUnitIdintThe captured source unit ID, or -1 when no source is available
TargetUnitIdintThe captured target unit ID, or -1 when no target is available
TickPhaseDelayedTickPhasePhase boundary at which the trigger fired
CardGameCardAssociated card definition captured when the trigger was registered, or null when no card is associated
ActionTypeNamestringAssociated 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:

ItemValue
ConstantGCSEventNames.OnDelayedTriggerCancelled
String valueGCS_OnDelayedTriggerCancelled
Payload typeDelayedTriggerCancelledEventArgs
public static IDisposable OnDelayedTriggerCancelled(Action<DelayedTriggerCancelledEventArgs> handler);

Event parameters:

NameTypeDescription
TriggerIdintBattle-local identifier assigned to the cancelled trigger, matching any earlier scheduled updates
SourceUnitIdintThe captured source unit ID, or -1 when no source is available
TargetUnitIdintThe captured target unit ID, or -1 when no target is available
TickPhaseDelayedTickPhasePhase boundary the cancelled trigger was waiting for
CardGameCardAssociated card definition captured when the trigger was registered, or null when no card is associated
ActionTypeNamestringAssociated 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:

ItemValue
ConstantGCSEventNames.OnBattleRewardOffered
String valueGCS_OnBattleRewardOffered
Payload typeBattleRewardOfferedEventArgs
public static IDisposable OnBattleRewardOffered(Action<BattleRewardOfferedEventArgs> handler);

Event parameters:

NameTypeDescription
CardCandidatesIReadOnlyList<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:

ItemValue
ConstantGCSEventNames.OnBattleRewardSelected
String valueGCS_OnBattleRewardSelected
Payload typeBattleRewardSelectedEventArgs
public static IDisposable OnBattleRewardSelected(Action<BattleRewardSelectedEventArgs> handler);

Event parameters:

NameTypeDescription
ChoiceRewardChoiceThe selected reward kind
SelectedCardGameCardThe 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:

ItemValue
ConstantGCSEventNames.OnBattleRewardSkipped
String valueGCS_OnBattleRewardSkipped
Payload typeNone
public static IDisposable OnBattleRewardSkipped(Action handler);

Event parameters:

NameTypeDescription
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:

ItemValue
ConstantGCSEventNames.OnEffectChoiceOffered
String valueGCS_OnEffectChoiceOffered
Payload typeEffectChoiceOfferedEventArgs
public static IDisposable OnEffectChoiceOffered(Action<EffectChoiceOfferedEventArgs> handler);

Event parameters:

NameTypeDescription
PromptTextstringThe prompt shown to the player
CandidatesIReadOnlyList<ChoiceCandidate>The choices produced by the effect graph
AllowSkipboolWhether 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:

ItemValue
ConstantGCSEventNames.OnEffectChoiceSelected
String valueGCS_OnEffectChoiceSelected
Payload typeEffectChoiceSelectedEventArgs
public static IDisposable OnEffectChoiceSelected(Action<EffectChoiceSelectedEventArgs> handler);

Event parameters:

NameTypeDescription
SelectedIndexintCompatibility field containing the first selected index, or -1 when the presenter reports an empty selection
SelectedIndicesIReadOnlyList<int>All selected indexes in presenter order, relative to the candidates supplied by OnEffectChoiceOffered
SelectedCandidatesIReadOnlyList<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:

ItemValue
ConstantGCSEventNames.OnEffectChoiceSkipped
String valueGCS_OnEffectChoiceSkipped
Payload typeNone
public static IDisposable OnEffectChoiceSkipped(Action handler);

Event parameters:

NameTypeDescription
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

FieldContract
CardPlayedEventArgs.TargetUnitIdnull when the card has no selected target
BattleRewardSelectedEventArgs.SelectedCardnull for non-card rewards
SourceUnitId / SummonerId-1 when no source unit is available
IReadOnlyList fieldsBuilt-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

Reference

See FlowGraph fundamentals for the timing model