Skip to main content

Event Reference

Guide

Start with a compact overview, then expand any event for its identity, payload fields, timing, and subscription example

The overview tables keep only the information needed to find an event. Expand an event for the complete contract. These names match the Event tab in Game Card Monitor

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

Battle and turn events

EventPayloadRaised when
OnBattleStartedNonebattle setup, the opening hand, and initial enemy intents are 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
OnBattleStarted

Raised when battle setup, the opening hand, and initial enemy intents are ready. Typical use: Initial HUD refresh and battle-opening presentation.

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

EventPayloadRaised when
OnCardPlayedCardPlayedEventArgsa card play is accepted and executed
OnCardModifiedCardModifiedEventArgsa card instance's runtime cost or state changes
OnCardDrawnCardLifecycleEventArgseach card enters the hand through drawing
OnCardDiscardedCardLifecycleEventArgsa card is discarded by overflow or end-of-turn cleanup
OnCardExhaustedCardLifecycleEventArgsa card moves to the exhaust pile
OnCardRetainedCardLifecycleEventArgsa card remains in hand during end-of-turn cleanup
OnCardAddedToHandCardLifecycleEventArgsa card is created directly in the hand
OnCardAddedToDeckCardLifecycleEventArgsa card is added directly to the draw pile
OnDrawPileShuffledNonethe draw pile is shuffled
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 when a card instance's runtime cost or state changes. 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 a card is discarded by overflow or end-of-turn cleanup. 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 a card moves to the exhaust pile. 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

EventPayloadRaised when
OnUnitHpChangedUnitHpChangedEventArgsa unit's HP or armor changes
OnUnitDiedUnitDiedEventArgsa unit dies or is removed from battle
OnDamageDealtDamageEventArgsan attacker causes HP loss to a target
OnDamageTakenDamageEventArgsa unit loses HP from an attack or status
OnArmorGainedArmorChangedEventArgsa unit gains armor
OnArmorLostArmorChangedEventArgsa unit loses armor
OnEnergyChangedEnergyChangedEventArgsthe player's current or maximum energy changes
OnEnergyGainedEnergyDeltaEventArgsthe player gains energy
OnEnergySpentEnergyDeltaEventArgsthe player spends energy
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 a unit loses 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 amount of armor gained or lost
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 the player spends energy. Typical use: Card-spend feedback.

Event identity:

ItemValue
ConstantGCSEventNames.OnEnergySpent
String valueGCS_OnEnergySpent
Payload typeEnergyDeltaEventArgs
public static IDisposable OnEnergySpent(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.OnEnergySpent(args => Debug.Log(args.Amount));

Status events

EventPayloadRaised when
OnStatusChangedStatusChangedEventArgsa unit's status stack count changes
OnStatusTickedStatusTickedEventArgsa status resolves at a turn boundary
OnStatusInflictedStatusTransitionEventArgsa status is applied to a unit
OnStatusExpiredStatusTransitionEventArgsa status naturally decays to 0 stacks
OnStatusRemovedStatusTransitionEventArgsa status is explicitly removed
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 when a status is applied to a unit. 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

EventPayloadRaised when
OnEnemyUnitIntentChangedEnemyUnitIntentChangedEventArgsan enemy resolves or re-plans the intents exposed to the player
OnEnemyUnitActingEnemyUnitActingEventArgsan enemy is about to execute its current intent
OnEnemyUnitSummonedEnemyUnitSummonedEventArgsan enemy is summoned during battle
OnEnemyPhaseChangedEnemyPhaseChangedEventArgsan enemy advances to another authored behavior phase
OnDelayedTriggerScheduledDelayedTriggerScheduledEventArgsa cross-turn effect is queued
OnDelayedTriggerFiredDelayedTriggerFiredEventArgsa queued cross-turn effect resolves
OnDelayedTriggerCancelledDelayedTriggerCancelledEventArgsa queued cross-turn effect is cancelled
OnEnemyUnitIntentChanged

Raised when an enemy resolves or re-plans the intents exposed to the player. 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 Subscribe<EnemyUnitActingEventArgs>(
string eventName,
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.Subscribe<EnemyUnitActingEventArgs>(
GCSEventNames.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 an enemy advances to another authored behavior phase. Typical use: Enemy behavior-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
OldIndexintThe previous behavior phase index
NewIndexintThe new behavior phase index

Returns: An IDisposable subscription handle; call Dispose() to unsubscribe

Example:

IDisposable subscription = GCSApi.OnEnemyPhaseChanged(args => Debug.Log(args.UnitId));
OnDelayedTriggerScheduled

Raised when a cross-turn effect is queued. Typical use: Create a countdown indicator.

Event identity:

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

Event parameters:

NameTypeDescription
SourceUnitIdintThe source unit ID associated with the queued effect
RemainingTurnsintTurns remaining before the effect resolves
ActionTypeNamestringThe queued action's runtime type name

Returns: An IDisposable subscription handle; call Dispose() to unsubscribe

Example:

IDisposable subscription = GCSApi.OnDelayedTriggerScheduled(args => Debug.Log(args.SourceUnitId));
OnDelayedTriggerFired

Raised when a queued cross-turn effect resolves. Typical use: Delayed-effect activation feedback.

Event identity:

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

Event parameters:

NameTypeDescription
SourceUnitIdintThe source unit ID associated with the effect
ActionTypeNamestringThe resolved action's runtime type name

Returns: An IDisposable subscription handle; call Dispose() to unsubscribe

Example:

IDisposable subscription = GCSApi.OnDelayedTriggerFired(args => Debug.Log(args.SourceUnitId));
OnDelayedTriggerCancelled

Raised when a queued cross-turn effect is cancelled. Typical use: Remove a countdown indicator.

Event identity:

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

Event parameters:

NameTypeDescription
SourceUnitIdintThe source unit ID associated with the cancelled effect

Returns: An IDisposable subscription handle; call Dispose() to unsubscribe

Example:

IDisposable subscription = GCSApi.OnDelayedTriggerCancelled(args => Debug.Log(args.SourceUnitId));

Reward and choice events

EventPayloadRaised when
OnBattleRewardOfferedBattleRewardOfferedEventArgspost-battle rewards become available
OnBattleRewardSelectedBattleRewardSelectedEventArgsthe player applies a reward choice
OnBattleRewardSkippedNonethe player declines the offered reward
OnEffectChoiceOfferedEffectChoiceOfferedEventArgsa card effect pauses for a player choice
OnEffectChoiceSelectedEffectChoiceSelectedEventArgsthe player resolves an effect choice
OnEffectChoiceSkippedNonean optional effect choice is skipped
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 when the player resolves an effect choice. Typical use: Close the choice picker and record the selection.

Event identity:

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

Event parameters:

NameTypeDescription
SelectedIndexintThe player-selected candidate index, starting at 0

Returns: An IDisposable subscription handle; call Dispose() to unsubscribe

Example:

IDisposable subscription = GCSApi.OnEffectChoiceSelected(args => Debug.Log(args.SelectedIndex));
OnEffectChoiceSkipped

Raised when an optional effect choice is skipped. Typical use: Close the choice picker.

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. See FlowGraph Fundamentals for the timing model