跳到主要内容

枚举参考

GCS · Reference

目标模式、战斗阶段、层数规则、牌堆范围,以及 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到达失败

两个终局状态不固定在循环里的某个位置。任何阶段里只要有一方被清空,战斗立刻跳到 BattleWonBattleLost


战斗规则

这些位于 GameEncounterRules 上,在 Workbench Encounter 模式里显示为一排 chip

Workbench Encounter 模式的 Battle Rules 折叠区与规则 chip

OptionValues含义
ArmorDecayRuleResetOnTurnStart, Persist护甲是每回合开始清零,还是跨回合保留
HandDiscardRuleDiscardOnTurnEnd, Persist手牌是回合结束弃掉,还是保留
EnemyIntentDisplayModeHidden, IconOnly, Full玩家能看到敌人已宣告意图的多少:什么都不显示、只有图标、还是完整意图

保留护甲加保留手牌,适合防御和手牌规划跨回合累积的玩法;清零和弃牌的默认值给出经典 deckbuilder 节奏


状态规则

在 Workbench Status 模式里逐个 GameStatus 设置

OptionValues含义
StatusStackRuleAdditive, Max, Replace状态被再次施加时,如何与已有层数合并
StatusDecayRulePerTurn, NeverPerTurn 在持有者回合结束时减一层;Never 让层数保持不动,直到有其他规则改写它

Poison 这类累积效果用 Additive,只认最强一次施加用 Max,最新施加决定数值用 Replace


FlowGraph 时机与牌堆

多个内置节点共用的选项

OptionValues在哪里遇到
WaitModeSeconds, AnimationWait 节点:等固定秒数,或等动画释放动画门
DelayedTickPhasePlayerTurnEnd, PlayerTurnStart, EnemyPhaseEnd延迟触发:哪个阶段边界算一跳
PileScopeHand, Draw, Discard, Exhaust, Master, All卡牌移动和牌堆查询
DrawModeCount, ToHandLimit抽牌节点:抽固定张数,或抽到手牌上限
ChoiceModeExactly, UpTo选择节点:必须选满,或允许少选
DrawPilePositionTop, Bottom, Random造卡和移卡节点:卡从哪个位置进入抽牌堆
ModifierDurationThisTurn, ForNTurns, WholeBattleModify 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 用得到第二个参数;EnergyCostnull 即可


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