FlowGraph 配方
十六个图模式,覆盖卡牌游戏最常用的行为,全部对照内置节点集核实过。可以先采用这些结构,再按具体设计调整字段。
面向已掌握 FlowGraph 基础、想从可用的起点而不是空白画布开始的创作者。下面每个配方按控制顺序列出节点,并标出关键字段。demo 内容用的就是这些形状,你可以随时对照已发布的卡牌、状态和敌人交叉验证。
对选中目标造成伤害
用于普通攻击卡。
On Card PlayedDeal Damage,TargetSource = Opponent,Amount设为卡牌伤害- 把
Deal Damage.Dealt连进Show Floating Text.Amount Play VFX和Play SFX放在伤害节点之后
Opponent 解析为玩家出牌时选中的单位。显示数字使用 Dealt 输出,而不是 Amount 字段:护甲、Hook 和阻止都会影响最终伤害。
对所有敌人造成伤害
用于 AoE 攻击。
On Card PlayedDeal Damage,TargetSource = AllEnemies- 伤害之后接
Shake Camera或全屏Play VFX
不需要任何选择器节点,枚举选项本身就是完整的目标集。只有需要收窄集合时才改用连线(All Enemies -> Filter -> Deal Damage.Target);每个敌人需要单独表现节奏时用 Foreach。
多次攻击随机敌人
demo 的 Rapid Fire,也是多段随机攻击的基础模式。这张卡的文本是 "Deal 3 damage to a random enemy 4 times",图结构直接对应这句效果文本。

On Card PlayedLoop,Count = 4- 在
Body上,Deal Damage,Amount = 3 - 连线
All Enemies->Random Elements(Count = 1)->Deal Damage.Target - 表现放进循环体内,每次命中一个节奏点
目标每次迭代重新随机,因为 Deal Damage 每次拉取时 Random Elements 都会重新求值。四次攻击,可能是四个不同的敌人。
低于半血时治疗
用于条件治疗。
- 用
Self Unit或入口的Target输出选中单位 - 连进
Unit Info - 把
Unit Info.HP%连进Condition的输入A,设Op = Less,输入B传入 50(用Constant即可) Condition连进Branch.Condition- 在
True上,Change HP,Affect = Current、Mode = Delta,Amount为正数 - 治疗浮动文字连
Change HP.Changed
比较 HP%,不要比较原始 HP。"低于半血"说的是百分比,而不同单位的最大 HP 不一样。
按本回合出牌数获得护甲
用于连击、蓄势类卡牌。
On Card PlayedCards Played This Turn->Count- 需要缩放时加一个
Math Binary Change Armor,TargetSource = Self,把算出的数字连进Amount
固定"获得 5 点护甲"的卡不需要这些节点:直接设置字段即可。
对所有敌人施加状态
用于中毒、灼烧、虚弱这类铺场效果。
On Card PlayedChange Status,在Status里选好状态,Mode = Delta,Amount设为层数,TargetSource = AllEnemies
只有部分敌人应该受到影响时(比如只有受过伤的敌人),再加 All Enemies -> Filter -> Change Status.Target。
消耗状态换取额外伤害
用于把层数花掉换收益的卡。
On Card Played- 对目标单位和该状态使用
Unit Status Stacks Condition设Op = Greater与 0 比较,接Branch- 在
True上,Math Binary算出加成,然后Deal Damage Change Status用负数Amount移除花掉的层数
层数在伤害之后再移除。结算过程中,Hook 和分支可能还需要原始层数。
抽到手牌上限
On Card PlayedDraw Cards,Mode = ToHandLimit
卡牌承诺抽固定张数时用 Mode = Count 加 Count 值,即使手牌可能中途抽满。
在抽牌堆创建一张卡
用于生成卡牌机制。
On Card PlayedAdd Cards,在CardId里选卡,Pile = Draw,Position设为Top、Bottom或Random- 新卡要立刻升级、移动或展示时,使用
Added输出
Add Cards 创建实例,Move Cards 搬运已有实例。如果目标卡牌还不存在,应使用 Add Cards,不要使用 Move Cards。
让卡牌打折 N 回合
用于临时降费。
Modify Card Cost,CardsSource设为目标牌堆(或连入卡牌集合)Mode = Delta,Amount为负数Duration = ForNTurns,Turns设为持续回合数
Duration 还有 ThisTurn 和 WholeBattle 可选。如果费用必须在每次检查时根据实时状态重算,改用 Card Cost Hook 而不是存一个修正值。
阻止一张卡被打出
用于沉默、眩晕、资源封锁类状态。
- 在状态的图上放
Card Playable Hook Card Info检查 Hook 正在询问的这张卡Condition或Contains逻辑接Branch- 在封锁路径上,
Write Hook,Kind = Bool、BoolValue = false
On Card Played 不能实现这个效果。它触发时,这张卡已经通过了可打出性检查。
减少受到的伤害
用于防御型状态。
Damage Taken Hook- 对 Hook 的
Target使用Unit Status Stacks Branch判断层数是否存在- 在
True上,Math Binary从Value减去减免量 - 减免绝不能把攻击变成治疗时,加
Clamp并设Min = 0 Write Hook,Kind = Int
当修正在概念上属于攻击方("这个单位打得更疼"),把逻辑挪到攻击方状态的 Damage Dealt Hook 上。
敌人序列意图
用于按固定轮转行动的敌人。

demo 的 Hunter boss,Mire Reaper,使用的就是这种结构。
On Enemy Behavior StartSequence Pattern,每一步一条分支,RepeatCounts控制每步重复几个回合再前进- 每条分支上的
Leaf Intent声明玩家看到的意图图标,然后接该步骤的行为节点
难以预测的敌人用 Weighted Random Pattern(按分支设 Weights)。
敌人 HP 阈值阶段
用于受伤后变招的 boss。
On Enemy Behavior StartHP Threshold Pattern,Thresholds设为 15、40、70 这样的 HP 百分比- 每个阈值区间一条行为路径,各自以
Leaf Intent开头
阈值从上到下检查,当前 HP 低于或等于哪个阈值,第一个命中的分支就生效。所以最重伤的档要放在最前面:15、40、70 的列表里,血量 30% 的敌人命中的是 40 这一档。Default 在 HP 高于所有阈值时运行,承担开场轮转。
一次性与周期性敌人招式
用于只发动一次的狂暴,或每三回合一次的特殊招式。这两个节点属于 Intent 组,是敌人图专用工具。
- 在敌人的模式树里插入
Once Per Battle - 一次性招式放在
Body上,常规轮转从Done继续
Every N Turns 用法相同,多一个 N 字段:匹配的回合走 Body,其余回合走 Done。
玩家侧的"每场战斗一次"不需要这两个节点。改用战斗作用域变量记录:Set Variable 打开 BattleScope,效果运行前用 Branch 检查它。
抛出内部事件
用于一张图通知另一张图,而不直接连线。
- 发送方运行
Raise Internal Event,设置EventName和可选的参数绑定 - 接收方以同名的
On Internal Event开始 - 接收方通过
Event Arg读取值
同一张图内部的先后顺序不要用事件,控制线更清楚。事件的价值在于发送方和接收方是两个不该互相认识的资产。