状态创作
定义一层状态意味着什么、层数如何合并与衰减,以及状态在各个战斗时机执行什么行为。
适合在 Workbench Status 模式中制作 buff、debuff 和计数器的开发者。状态是挂在单位身上的 buff、debuff、计数器和持续规则。一个清晰的状态应说明它的含义,明确显示有益或有害,并让层数与衰减规则符合该含义。在 Workbench > Status 中创作状态;Demo 自带 30 个状态,包括 Poison、Burn、Strength 和 Marked。

每个列表行的名称下方会显示叠层与衰减规则(Demo 的 Strength 显示 Additive · Never)。浏览列表时,可以直接区分哪些状态会持续保留、哪些状态会自行衰减。
创作顺序
- 先用玩家的语言决定"一层"是什么意思。
- 填写 Name、Description、Type 和 Icon。
- 设置 Stack Rule、Max Stacks、Decay Rule 和 Show Stack Count。
- 只有当 Tags 对过滤或目标选择有用时才添加。
- 如果状态要响应战斗时机或修改数值,打开 Edit FlowGraph。
- 从卡牌或敌人施加这个状态,进战斗测试。
如果"一层"无法用一句话说明,例如"一层 Poison 每回合造成 1 点伤害",状态语义还不够明确,不建议开始配置。
基础字段
| 字段 | 作用 |
|---|---|
| Name | 显示名称。非空时 Workbench 会同步重命名状态资产。 |
| Description | 面向玩家的规则或风味文本。写清这个状态只是被动标记,还是自己会做事。 |
| Type | Buff / Debuff 开关。只是显示分类,不参与目标选择。 |
| Tags | 用于过滤和目标选择的自由标签。没有自动行为。 |
有益效果使用 Buff,有害效果使用 Debuff。既不明显有益也不明显有害的计数器,可选择更接近的类型,并保持中性描述。
视觉字段
Icon 是显示在单位状态栏上的 sprite。早期测试可以使用临时图标,但名称和层数规则需要先保持清晰,因为玩家查看状态时首先看到这些信息。
层数与衰减
| 字段 | 作用 |
|---|---|
| Stack Rule | 再次施加时如何与已有层数合并。Additive 相加,Max 取较高值,Replace 覆盖。 |
| Max Stacks | 正数是层数上限,-1 表示不设上限,0 几乎必然是配置失误,校验会警告。 |
| Decay Rule | Never 表示层数一直保留,直到被移除。PerTurn 在持有者自己的回合结束时减 1 层。 |
| Show Stack Count | 是否在状态图标上显示数字。纯开关型标记应关闭。 |

需要明确三个语义。
第一,重复施加不会出现第二个图标。新层数会先经过 hook(先是施加者的 Inflict Status Hook,再是持有者的 Receive Status Hook,任一环节都可以削减或取消本次施加),然后按 Stack Rule 与当前层数合并,最后由 Max Stacks 封顶。
第二,PerTurn 的减层时机跟随持有者:挂在玩家身上的状态在玩家回合结束时减 1 层,挂在敌人身上的状态在那个敌人自己行动结束时减 1 层。
第三,最后一层消失分为两种情况。衰减清空时,状态视为"到期":图的 On Status Expired 入口运行,代码收到 OnStatusExpired。被效果移除时(Remove Statuses 节点、净化、层数被改到零),状态视为"被移除":对应 On Status Removed 和 OnStatusRemoved。清理反应应挂在与设计匹配的时机上;需要同时覆盖两种情况时,可以同时使用两个入口。
Demo 的 Poison 是完整示例:Debuff、Additive、不设上限、PerTurn 衰减、显示层数。每一项设置都服务于它的规则定义。

不要把层数当作隐藏状态使用。数字会影响玩法,通常应向玩家显示;如果状态只是开关,关闭数字显示,避免界面上出现没有意义的 1。
行为图
当状态需要时机或反应式行为时,在 Behavior 区域点击 Edit FlowGraph。常见模式:
| 行为 | 示例 |
|---|---|
| 回合时机 | 回合开始获得护甲,回合结束受到伤害。 |
| 反应 | 通过 hook 修改数值、响应打出卡牌、响应层数变化。 |
| 清理 | 条件满足后移除自身。 |
| 表现 | 施加或触发时播放 buff/debuff 效果。 |

Demo 的 Strength 展示了没有回合时机的反应型状态:一个 Damage Dealt Hook 给持有者的每次攻击增加每层 1 点伤害,这个 hook 就是整张图。预览列的 Behavior Summary 折叠面板会把这套结构压缩成一行,不打开图就能确认状态的形态。

还有一个值得了解的时机:On Status Received 入口会在 hook 放行的每次施加时运行,包括合并进已有层数的重复施加,因此适合挂"施加时"的特效或音效。
Burn 是回合时机模式的最小形态:一个 On Turn End 入口驱动指向持有者的 Deal Damage 节点,伤害数值直接连自状态自身的层数,灼烧特效排在伤害之后。

标记型状态不需要行为图。像 Marked 这样的状态,可能只需要名称、图标和层数规则;读取该标记的卡牌会在自己的行为图中处理它。
施加状态
只有当某个环节施加状态时,它才会出现在战斗里:
- 卡牌图施加层数。Poison Arrow 的 Change Status 节点给目标叠 2 层 Poison。
- 敌人图在行动中施加层数。
- 另一个状态发生反应并施加层数。
- 运行时代码通过战斗 controller 施加层数。
一个存在于数据库中、但没有任何内容施加它的状态,不会出现在战斗中。这不是状态定义错误,而是缺少施加入口。预览列的 Used By 面板可用于排查:Demo 的 Strength 会列出 Rally、Intimidate、Lord of Ruin 三张卡、Ritual 状态和三个敌人,这些就是该 buff 进入战斗的入口。
校验
Status 模式报告:
- Name 为空是错误。
- Max Stacks 恰好为
0是警告,并提示改成-1(不限层数)或一个正数上限。 - FlowGraph 校验器的发现是警告。
校验无法判断描述是否符合设计。发布前仍需审阅状态名称、描述和实际行为是否一致。
常见错误
| 症状 | 可能原因 |
|---|---|
| 状态从不出现 | 状态数据库未启用、图施加的是另一个状态,或目标解析没有返回单位。 |
| 实际层数比施加的少 | Max Stacks 在合并时封了顶,或某个 Inflict / Receive Status Hook 削减了传入层数。 |
| 层数让玩家困惑 | Max Stacks、Stack Rule 或 Show Stack Count 与玩家理解的含义矛盾。 |
| 状态消失得太早 | Decay Rule 是 PerTurn,而设计想要的是持续状态。 |
| 状态从不触发 | 行为图缺少匹配的入口或 hook。 |
| 表现为有害状态但实际是 buff | Type 设置错误,或名称与描述存在误导。 |