枚举参考
目标模式、战斗阶段、层数规则、牌堆范围,以及 GCS 创作下拉框背后的其他选项集。
盯着一个下拉框、想知道第三个选项在对局里到底干什么的人,看这页。GCS 的大多数下拉框背后是小型枚举。本页列出创作卡牌、状态和遭遇战时会遇到的那些,外加你通过 GCSApi 读回的运行时值。节点专属的下拉框(排序方向、数学运算符、过滤字段)跟着节点走,见内置节点库
CardTargetMode
设置在每张 GameCard 上,决定打出这张卡时是否要求玩家选目标
| Value | 什么时候选它 |
|---|---|
None | 卡牌不需要选择目标 |
SingleEnemyUnit | 卡牌结算前玩家应点选一个敌人 |
AllEnemyUnits | 卡牌影响所有敌人,无选择步骤 |
Self | 卡牌影响玩家单位 |
只有 SingleEnemyUnit 会暂停等玩家点击,其余三个在出牌那一刻直接结算,GCSApi.RequiresTarget 也只对 SingleEnemyUnit 返回 true。demo 里三种风格都有:Poison Arrow 用 SingleEnemyUnit 要求点选一个敌人,Arcane Nova 用 AllEnemyUnits 横扫全场,Defend 则是 Self
UnitSource
FlowGraph 节点上标准的“作用于谁”下拉框
| Value | 含义 |
|---|---|
Self | 正在行动或拥有该效果的单位 |
Opponent | 自然的对立单位,通常是已选中的敌人 |
AllEnemies | 当前上下文里有效的所有敌方单位 |
AllUnits | 玩家加所有敌人 |
CardSource
FlowGraph 节点上标准的“哪些卡”下拉框
| Value | 含义 |
|---|---|
ThisCard | 当前正在结算的卡牌 |
HandPile | 当前手牌中的卡 |
DrawPile | 抽牌堆中的卡 |
DiscardPile | 弃牌堆中的卡 |
ExhaustPile | 消耗(exhaust)堆中的卡 |
AllPiles | 所有运行时牌堆合在一起 |
HandPile 指节点执行那一刻的手牌。同回合稍后才抽到的卡不会被追溯算进来
BattlePhase
GCSApi.Phase 返回的值。阶段机每回合在中间四个阶段之间循环
| Value | 含义 |
|---|---|
None | 没有进行中的战斗 |
Initialize | 运行时正在从遭遇战构建战斗状态 |
PlayerTurnStart | 回合开始规则正在结算:护甲衰减、能量补满、回合抽牌 |
PlayerPhase | 玩家可以出牌。TryPlayCard 只在这个阶段成功 |
PlayerTurnEnd | 回合结束清理:弃手牌、状态衰减、延迟触发 |
EnemyPhase | 敌人意图执行中 |
BattleWon | 到达胜利,奖励流程可以开始 |
BattleLost | 到达失败 |
两个终局状态不固定在循环里的某个位置。任何阶段里只要有一方被清空,战斗立刻跳到 BattleWon 或 BattleLost
战斗规则
这些位于 GameEncounter 的 Rules 上,在 Workbench Encounter 模式里显示为一排 chip

| Option | Values | 含义 |
|---|---|---|
ArmorDecayRule | ResetOnTurnStart, Persist | 护甲是每回合开始清零,还是跨回合保留 |
HandDiscardRule | DiscardOnTurnEnd, Persist | 手牌是回合结束弃掉,还是保留 |
EnemyIntentDisplayMode | Hidden, IconOnly, Full | 玩家能看到敌人已宣告意图的多少:什么都不显示、只有图标、还是完整意图 |
保留护甲加保留手牌,适合防御和手牌规划跨回合累积的玩法;清零和弃牌的默认值给出经典 deckbuilder 节奏
状态规则
在 Workbench Status 模式里逐个 GameStatus 设置
| Option | Values | 含义 |
|---|---|---|
StatusStackRule | Additive, Max, Replace | 状态被再次施加时,如何与已有层数合并 |
StatusDecayRule | PerTurn, Never | PerTurn 在持有者回合结束时减一层;Never 让层数保持不动,直到有其他规则改写它 |
Poison 这类累积效果用 Additive,只认最强一次施加用 Max,最新施加决定数值用 Replace
FlowGraph 时机与牌堆
多个内置节点共用的选项
| Option | Values | 在哪里遇到 |
|---|---|---|
WaitMode | Seconds, Animation | Wait 节点:等固定秒数,或等动画释放动画门 |
DelayedTickPhase | PlayerTurnEnd, PlayerTurnStart, EnemyPhaseEnd | 延迟触发:哪个阶段边界算一跳 |
PileScope | Hand, Draw, Discard, Exhaust, Master, All | 卡牌移动和牌堆查询 |
DrawMode | Count, ToHandLimit | 抽牌节点:抽固定张数,或抽到手牌上限 |
ChoiceMode | Exactly, UpTo | 选择节点:必须选满,或允许少选 |
DrawPilePosition | Top, Bottom, Random | 造卡和移卡节点:卡从哪个位置进入抽牌堆 |
ModifierDuration | ThisTurn, ForNTurns, WholeBattle | Modify Card Cost 节点:费用修改持续多久 |
选和卡面文本一致的值。“最多选 2 张”是 UpTo;“抽到手牌满”是 ToHandLimit
PileScope 的读取和移动语义并不对称,最后两个值尤其要看清:
| Value | 作为读取范围 | 作为移动目的地 |
|---|---|---|
Hand, Draw, Discard, Exhaust | 返回对应的单个牌堆 | 把卡放进该牌堆。手牌已满时溢出到弃牌堆 |
Master | 返回局外主卡组(只读),与每张卡当前在哪无关 | 把卡从所有战斗牌堆里移除,主卡组本身不受影响 |
All | 返回全部四个战斗牌堆里的每张卡,含消耗堆 | 把卡从所有战斗牌堆里移除,与 Master 相同 |
IntentKind
敌人已宣告意图的类别,在敌人 pattern 节点里设置。它决定敌人头顶意图组件显示哪一族图标
Attack, Defend, Buff, Debuff, Heal, Special, Multi, Hidden
Multi 标记组合意图,Hidden 声明一个不允许玩家读到的意图
通过 GCSApi.CurrentIntentTag 读回意图时,拿到的是姊妹枚举 IntentTag。两者逐值对应,只有一处不同:创作时的 Hidden 意图会报告为 IntentTag.Unknown,运行时永远不会泄露隐藏敌人的盘算
RewardChoice
胜利结算时传给 GCSApi.ApplyReward 的值
| Value | 玩家得到什么 |
|---|---|
Card | 选中的卡加入本局的主卡组(未升级)。传这个值时要一并传入所选 GameCard |
Energy | 本局后续每场战斗的每回合能量永久 +1 |
Cost | 主卡组里当前的每张卡永久减费 1 |
只有 Card 用得到第二个参数;Energy 和 Cost 传 null 即可
ArgSource
事件节点用它填充对外事件的参数
| Value | 含义 |
|---|---|
Fixed | 使用节点上的固定字段值 |
SourceUnitId | 来源单位的 id |
DefaultTargetUnitId | 已选中目标单位的 id |
AttackerUnitId | 攻击者单位的 id |
LastDamage | 最近一次伤害数值 |
LastArmor | 最近一次护甲数值 |
LastHeal | 最近一次治疗数值 |
CardInstanceId | 当前卡牌实例 id |
CardSourceGuid | 当前卡牌定义的 GUID |
BattleTurnNumber | 当前回合数 |
PlayerEnergy | 玩家当前能量 |
ValuePoint
ValuePoint 标识一个可被 Hook 的值。注册在这些点上的状态 hook entry,可以在数值落地前改写它:
OnDealDamage, OnTakeDamage, OnGainArmor, OnLoseArmor, OnResetArmor,
OnGainHp, OnLoseHp, OnGainEnergy, OnLoseEnergy, OnEnergyPerTurn,
OnInflictStatus, OnReceiveStatus, OnPlayCard, OnDrawCards,
OnHandSizeLimit, OnCardPlayable, OnTakeAttack, OnStatusDamage
举例:力量(Strength)状态 hook 住 OnDealDamage,把自己的层数加到即将打出的伤害上。完整 hook 管线见入口与 Hook