Hook 节点
在 GCS 提交玩法数值或判断之前修改它
需要在数值或判断生效前修改结果时使用 Hook,从 Hook 输出读取待定值,完成计算后连接 `Write Hook`;该 Hook 支持取消时,也可以在对应分支连接 `Cancel Hook`需要在数值或判断生效前修改结果时使用 Hook,从 Hook 输出读取待定值,完成计算后连接 Write Hook;该 Hook 支持取消时,也可以在对应分支连接 Cancel Hook
节点用法
Damage Dealt Hook
在攻击者的输出伤害进入防守方 Hook 之前拦截数值。将 Value 经过数学或条件节点计算后写入 Write Hook;伤害结算后的行为应使用 On Damage Dealt
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待结算的输出伤害Source(UnitRef):Hook 持有者,在该处理点中是攻击者Target(UnitRef):同一个 Hook 持有者,不是防守方Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1

Damage Taken Hook
攻击伤害会先经过攻击专用 Hook,状态伤害会先经过 Status Damage Hook,随后该节点在护甲吸收前拦截通用承伤值。将新的 Value 写入 Write Hook 可实现易伤或减伤
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):护甲吸收前的待定伤害Source(UnitRef):Hook 持有者,在该处理点中是防守方Target(UnitRef):同一个 Hook 持有者,不是攻击者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1

Attack Taken Hook
在防守方拦截带攻击者的伤害,并先于通用 Damage Taken Hook 执行。状态伤害与直接 HP 损失不会进入该处理点。只想修改攻击伤害时,将 Value 写入 Write Hook
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待结算的攻击伤害Source(UnitRef):Hook 持有者,在该处理点中是防守方Target(UnitRef):同一个 Hook 持有者,不是攻击者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1

HP Gain Hook
在最大 HP 限制之前拦截请求的治疗量。将计算后的 Value 写入 Write Hook 可放大或压低治疗,治疗真正生效后的响应使用 On HP Gained
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):最大 HP 限制前的待定治疗量Source(UnitRef):被治疗的 Hook 持有者Target(UnitRef):同一个 Hook 持有者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
HP Loss Hook
拦截即将实际扣除的 HP。伤害路径中,它位于护甲确定 HP 部分之后;直接 Lose HP 也会进入该处理点。需要统一修改各种 HP 损失时,将 Value 写入 Write Hook
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待扣除的 HPSource(UnitRef):即将损失 HP 的 Hook 持有者Target(UnitRef):同一个 Hook 持有者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Armor Gain Hook
在 Gain Armor 把护甲加到持有者之前拦截数值。将 Value 写入 Write Hook 可调整护甲收益,护甲生效后的响应使用 On Armor Gained
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待增加的护甲Source(UnitRef):获得护甲的 Hook 持有者Target(UnitRef):同一个 Hook 持有者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1

Armor Loss Hook
拦截显式 Lose Armor 的数值,伤害吸收护甲与回合开始重置不会进入该处理点。需要抵抗明确的护甲移除时,将 Value 写入 Write Hook
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待移除的显式护甲值Source(UnitRef):失去护甲的 Hook 持有者Target(UnitRef):同一个 Hook 持有者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Armor Reset Hook
遭遇战规则为 Reset On Turn Start 时,在持有者回合开始触发。传入的 Value 为常规重置目标 0,写入其他非负数可指定重置后保留的护甲,使用 Cancel Hook 则完全保留当前护甲
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):重置后的待定护甲,初始为0Target(UnitRef):正在重置护甲的 Hook 持有者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Energy Gain Hook
在显式 Gain Energy 把能量加给玩家之前拦截数值,不控制常规回合开始补充,后者应使用 Energy Per Turn Hook。将 Value 写入 Write Hook 可调整额外获得的能量
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待增加的显式能量Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Energy Spend Hook
拦截显式 Lose Energy 的数值。打出卡牌会直接扣除已确认费用,不经过该处理点,因此卡牌折扣应使用 Card Cost Hook。将 Value 写入 Write Hook 可调整额外能量损失
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待扣除的显式能量Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Energy Per Turn Hook
拦截玩家的最大能量基准,Battle Rules > Starting Energy 大于零时采用该值,否则采用玩家单位的基础能量,之后再加上 Run 加成。回合开始时 GCS 会把该结果作为补充值,刷新战斗 UI 时也可能再次查询。Cancel Hook 会回退到这个未经 Hook 修改的基础值,不会停止回合开始的能量补充。该分支应保持纯计算,不要加入一次性特效或音效;将 Value 写入 Write Hook 可修改能量基准
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待定的最大能量与回合开始补充值Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Inflict Status Hook
在施加方拦截状态层数,执行顺序位于接收方 Hook 与状态叠加规则之前。Status 可识别传入状态,但两个单位端口当前都指向施加方这个 Hook 持有者。将 Out 连接到取消操作或写入明确的替代层数
Stacks 输出编辑器已注册 Stacks,但执行器没有把待定层数写入该端口,因此不能把它当作传入值使用。Status 会正确写入,仍可使用 Cancel Hook 或写入常量替代值
输入
- 无:匹配的值处理点直接启动分支
输出
Status(StatusRef):即将施加的状态Stacks(Int):当前未写入,不能作为待定层数使用Source(UnitRef):施加状态的 Hook 持有者Target(UnitRef):同一个 Hook 持有者,不是接收方Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1

Receive Status Hook
在接收方拦截经过 Inflict Status Hook 处理后的层数,执行顺序位于状态叠加规则之前。Status 可识别传入状态,但两个单位端口当前都指向接收方这个 Hook 持有者。将 Out 连接到取消操作或写入明确的替代层数
Stacks 输出编辑器已注册 Stacks,但执行器没有把待定层数写入该端口,因此不能把它当作传入值使用。Status 会正确写入,仍可使用 Cancel Hook 或写入常量替代值
输入
- 无:匹配的值处理点直接启动分支
输出
Status(StatusRef):即将接收的状态Stacks(Int):当前未写入,不能作为待定层数使用Source(UnitRef):接收状态的 Hook 持有者,不是施加方Target(UnitRef):同一个接收方 Hook 持有者Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1

Status Damage Hook
在通用 Damage Taken Hook 之前拦截状态提供的伤害。Status 行为图中,给 Status 指定资产可只匹配这一种状态,不指定则匹配全部状态伤害。将 Value 写入 Write Hook 可单独调整状态跳伤
Status 筛选执行器只在发现 Status Hook 时检查该字段,已注册的 Card Hook 目前只保存值处理点,不会检查 Status,因此卡牌行为图中的 Status Damage Hook 会匹配全部状态伤害
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):匹配状态的待定伤害Source(UnitRef):受伤的 Hook 持有者,不是状态施加者Target(UnitRef):同一个受伤 Hook 持有者Out(Flow):继续执行 Hook 计算
参数
Status(GameStatus):无;Status Hook 中指定状态或留空匹配全部;Card Hook 中当前忽略Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1

Card Cost Hook
在持久费用规则结算后拦截玩家卡牌的有效费用。费用可能被反复查询,GCS 在正式出牌前还会用传入值 0 再执行一次同一值处理点作为出牌门控,因此该 Hook 只应做计算,不要放一次性特效或音效。常规费用查询中,Cancel Hook 会保留进入 Hook 前的费用;同一个 Hook 在之后的出牌门控中取消,则会直接拒绝本次出牌。将 Value 写入 Write Hook 修改数字费用
Card 输出运行时上下文中带有待打出的卡牌,但执行器没有把它写入该节点已注册的 Card 端口。Value 可以使用,Card 当前不能作为 Card Info 或筛选条件的来源
输入
- 无:匹配的值处理点直接启动分支
输出
Card(CardRef):当前未写入,不要使用Value(Int):待定有效费用,额外的出牌门控会以0再调用一次Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Card Playable Hook
TryPlayCard 确认能量足够并通过内置 Unplayable 关键字检查后执行,内部待定值为 true。控制分支本身可以使用,可连接 Cancel Hook 拒绝出牌,也可根据其他可用上下文写入明确的布尔值
Card 与 Playable 输出都不可用两个端口虽然已经注册,但执行器都没有写入。待定布尔值保存在内部的 Value 中,而该节点没有公开 Value 端口。运行时与端口目录统一之前,不要连接 Card 或 Playable
输入
- 无:可出牌检查直接启动分支
输出
Card(CardRef):当前未写入,不要使用Playable(Bool):当前未写入,不能作为待定判断使用Out(Flow):继续执行 Hook 控制分支
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Draw Count Hook
在 Draw Cards 开始抽牌循环前拦截数量,结果同时影响能进入手牌的数量与手牌上限后的溢出处理。将 Value 写入 Write Hook 可增加或减少本次抽牌数
抽牌循环会使用 Hook 结果,但 DrawAndDispatch 仍按原始请求数量计算溢出。降低 Hook 值可能把额外卡牌作为溢出送入弃牌堆,提高 Hook 值则不会同步扩大溢出数量
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待抽取的卡牌数量Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1
Hand Size Hook
GCS 在抽牌、创建手牌或其他上限检查中查询遭遇战最大手牌数时拦截该值。Cancel Hook 会回退到 Battle Rules > Max Hand Size,忽略本次查询中的 Hook 修改。解析器可能执行多次,因此分支应保持确定性,不要放展示效果。将 Value 写入 Write Hook 可替换手牌上限
输入
- 无:匹配的值处理点直接启动分支
输出
Value(Int):待定的最大手牌数Out(Flow):继续执行 Hook 计算
参数
Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略Scope(Option):Battle;仅 Card 有效,可选Battle或Turns;Status Hook 忽略Turns(Number):1;仅 Card 有效,Scope = Turns时的持续回合数,最小为 1