跳到主要内容

Hook 节点

GCS · 内置节点库

在 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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Damage Dealt Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Damage Taken Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Attack Taken Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

HP Gain Hook 节点

HP Loss Hook

拦截即将实际扣除的 HP。伤害路径中,它位于护甲确定 HP 部分之后;直接 Lose HP 也会进入该处理点。需要统一修改各种 HP 损失时,将 Value 写入 Write Hook

输入

  • :匹配的值处理点直接启动分支

输出

  • Value(Int):待扣除的 HP
  • Source(UnitRef):即将损失 HP 的 Hook 持有者
  • Target(UnitRef):同一个 Hook 持有者
  • Out(Flow):继续执行 Hook 计算

参数

  • Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略
  • Scope(Option):Battle;仅 Card 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

HP Loss Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Armor Gain Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Armor Loss Hook 节点

Armor Reset Hook

遭遇战规则为 Reset On Turn Start 时,在持有者回合开始触发。传入的 Value 为常规重置目标 0,写入其他非负数可指定重置后保留的护甲,使用 Cancel Hook 则完全保留当前护甲

输入

  • :匹配的值处理点直接启动分支

输出

  • Value(Int):重置后的待定护甲,初始为 0
  • Target(UnitRef):正在重置护甲的 Hook 持有者
  • Out(Flow):继续执行 Hook 计算

参数

  • Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略
  • Scope(Option):Battle;仅 Card 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Armor Reset Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Energy Gain Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Energy Spend Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Energy Per Turn Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Inflict Status Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Receive Status Hook 节点

Status Damage Hook

在通用 Damage Taken Hook 之前拦截状态提供的伤害。Status 行为图中,给 Status 指定资产可只匹配这一种状态,不指定则匹配全部状态伤害。将 Value 写入 Write Hook 可单独调整状态跳伤

Card 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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Status Damage Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Card Cost Hook 节点

Card Playable Hook

TryPlayCard 确认能量足够并通过内置 Unplayable 关键字检查后执行,内部待定值为 true。控制分支本身可以使用,可连接 Cancel Hook 拒绝出牌,也可根据其他可用上下文写入明确的布尔值

当前 CardPlayable 输出都不可用

两个端口虽然已经注册,但执行器都没有写入。待定布尔值保存在内部的 Value 中,而该节点没有公开 Value 端口。运行时与端口目录统一之前,不要连接 CardPlayable

输入

  • :可出牌检查直接启动分支

输出

  • Card(CardRef):当前未写入,不要使用
  • Playable(Bool):当前未写入,不能作为待定判断使用
  • Out(Flow):继续执行 Hook 控制分支

参数

  • Priority(Number):0;仅 Status 有效,数字越小越先执行;Card Hook 当前忽略
  • Scope(Option):Battle;仅 Card 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Card Playable Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Draw Count Hook 节点

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 有效,可选 BattleTurns;Status Hook 忽略
  • Turns(Number):1;仅 Card 有效,Scope = Turns 时的持续回合数,最小为 1

Hand Size Hook 节点

本页总览