Flow, Operator, Intent, and Event Nodes
Flow nodes decide where execution goes. Operator nodes calculate, compare, filter, and pick values. Intent patterns, event raising, and groups round out the set.
For graph authors building the logic between an entry and the action it drives.This page covers the Flow, Operator, Intent, Event, and Group menu groups. They belong together because none of them changes battle state. They route execution or transform values on the way to the Action node that does.
Rapid Fire uses both halves in one small graph. Loop is the Flow node: it runs its body four times. Random Elements is the Operator: on each pass it picks one enemy from the All Enemies collection and feeds it to Deal Damage as the target.

Flow nodesโ
| Node | Purpose | Inputs and settings | Outputs | Use with | Avoid when |
|---|---|---|---|---|---|
| Sequence | Run several control outputs in order. | Outputs. | Step0, Step1, more steps by count. | Multi-part card effects. | Later steps depend on a condition; use Branch or Switch. |
| Branch | Choose the True or False path. | Condition. | True, False. | Condition, Logic, hooks. | More than two outcomes are needed; use Switch. |
| Switch | Route by integer or string case. | Kind, CaseValues, input On. | One output per case, plus Default. | Card type, team, intent, turn number. | A yes/no condition is enough; use Branch. |
| Gate | Continue only when allowed. | Allow. | Out. | Optional effects, guard clauses. | You need separate false-path behavior; use Branch. |
| Loop | Run a body a fixed number of times. | Count. | Body, Done, Index. | Repeat damage, repeat draw, scaling effects. | You want one pass per collection element; use Foreach. |
| Foreach | Run once per collection element. | Kind, input Collection. | Body, Done, Index, Element for the current element. | Per-target presentation, per-card processing. | A collection action can do the same work in one step. |
| While | Run while a condition stays true. | Condition. | Body, Done. | Rare scripted logic with a clear stopping condition. | The count is known up front; use Loop. |
| Wait | Delay the presentation flow. | Mode Seconds or Animation, Seconds, AnimationId. | Out. | VFX timing, animation beats. | Gameplay state must wait on a reliable async result. |
| Delayed Trigger | Schedule behavior for a later turn phase. | DelayTurns, TickPhase, CancelOnSourceDeath. | Body, Done. | Delayed status effects, countdown attacks. | The effect belongs in the current execution path. |
| Choice | Ask the player to choose from a collection. | Kind, Prompt, Count, Mode, AllowSkip. | OnChosen, Skipped. | Draft, select-card, select-target mechanics. | The choice can be decided automatically. |
Numeric and boolean operatorsโ
| Node | Purpose | Inputs and settings | Outputs | Use with | Avoid when |
|---|---|---|---|---|---|
| Math Binary | Combine two numbers. | Kind, A, B, Op Add/Sub/Mul/Div/Mod/Min/Max/Pow. | Result. | Damage scaling, cost changes, hook writes. | One number needs cleanup; use Math Unary or Clamp. |
| Math Unary | Transform one number. | Kind, A, Op Neg/Abs/Sign/Sqrt/Floor/Ceil/Round. | Result. | Rounding, absolute values, signs. | Two inputs are involved; use Math Binary. |
| Clamp | Restrict a number to a min and max. | Kind, Value, Min, Max. | Result. | Preventing negative damage, capping scaling. | The value is meant to exceed the range. |
| Condition | Compare two values. | A, B, Op Greater/GreaterEqual/Less/LessEqual/Equal/NotEqual/In. | Result. | Branch, Gate, hook rules. | You are comparing object identity; use Ref Equal. |
| Logic | Combine booleans. | A, B, Op And/Or/Xor/Not. | Result. | Compound branch rules. | One Condition already expresses the rule. |
| Ref Equal | Check whether two references are the same object. | A, B, Op Equal or NotEqual. | Result. | "Is this that exact card, unit, or status?" checks. | You are comparing text, numbers, tags, or categories; use Condition. |
| Convert | Convert a value to Int, Float, Bool, or String. | A, To. | Result. | Event args, text and numeric bridges. | The source already outputs the needed kind. |
| Select | Choose between two values by condition. | Condition, IfTrue, IfFalse, Kind. | Result. | Inline fallback values, hook calculations. | Different paths need different side effects; use Branch. |
| Constant | Provide a fixed value, or a database-backed dropdown choice. | Kind, value fields, optional entity field. | Result. | Reused constants, dropdown-backed card, status, and tag values. | The value reads better as a field on the consuming node. |
| Random | Produce a random value. | Kind, Min, Max, Probability. | Result. | Chance-based branches, random scaling. | You want random elements from a collection; use Random Elements. |
Collection operatorsโ
| Node | Purpose | Inputs and settings | Outputs | Use with | Avoid when |
|---|---|---|---|---|---|
| Count | Count a unit, card, or status collection. | Kind, input Collection. | Result. | Combo scaling, hand-size checks. | You only care whether it is empty; use Is Empty. |
| Is Empty | Check whether a collection has no entries. | Kind, input Collection. | Result. | Branch, fallback effects. | You need the actual count. |
| Filter | Keep entries matching visible criteria. | Kind, filter fields for unit, card, or status. | Result. | All Enemies, Card Piles, status collections. | A more precise source already exists. |
| Contains | Check whether a collection contains a specific entry. | Kind, Collection, Value. | Result. | Guards, membership tests. | You are comparing categories such as tags; use Condition or Filter. |
| Take | Keep the top or bottom N entries. | Kind, Count, From. | Result. | Ordered card piles, sorted collections. | You want a random selection; use Random Elements. |
| Pick Element | Pick the first, last, or indexed element. | Kind, By, Index. | The selected element. | A single-target action after filtering. | The action should hit every element. |
| Random Elements | Pick random entries without replacement. | Kind, Count, input Collection. | Result. | Random target cards or enemies. | You want weighted enemy intent; use Weighted Random Pattern. |
| Shuffle | Randomize a collection's order. | Kind, input Collection. | Result. | Random draws from a temporary list. | You mean the actual draw pile; use Shuffle Draw Pile. |
| Sort | Sort a collection. | Kind, unit, card, or status sort field, Order. | Result. | Lowest-HP target, highest-cost card. | The source order matters. |
| Exclude | Remove one collection's entries from another. | Kind, source collection, excluded collection. | Result. | "All enemies except the target" effects. | A plain Filter can express the rule. |
| Merge Collections | Combine two collections. | Kind, two collection inputs. | Result. | Multi-source target sets. | Duplicates must go; filter or exclude afterward. |
| Make Collection | Build a collection from individual slots. | Kind, SlotCount, slot inputs. | Result. | Hand-picked target sets. | A selector already returns the collection. |
Filter fields are player-facing criteria, not code. Unit filters cover team, tags, tier, status, HP above or below a value, and alive. Card filters cover type, rarity, keyword, tags, and cost above or below a value. Status filters cover type and tags.
Intent nodesโ
Intent nodes only make sense in enemy graphs. Patterns decide which move an enemy telegraphs; each Leaf Intent carries the preview icon and the behavior that runs on the enemy's turn.
| Node | Purpose | Inputs and settings | Outputs | Use with | Avoid when |
|---|---|---|---|---|---|
| Leaf Intent | Declare one previewed intent and run its behavior. | Intent. | Out, Intent, Target. | Sequence, threshold, or random patterns. | The node must choose between child branches; use a pattern. |
| Sequence Pattern | Choose intent branches in a fixed order. | RepeatCounts. | Step branches. | Predictable enemies. | Phase-based enemies; use HP Threshold Pattern. |
| HP Threshold Pattern | Choose a branch by current HP percent. | Thresholds. | Threshold branches plus default. | Boss phase changes. | Behavior should be random. |
| Weighted Random Pattern | Choose a branch by weight. | Weights. | Weighted branches. | Unpredictable enemies. | The pattern must stay readable and fixed. |
| Once Per Battle | Run Body once, then Done forever after. | None. | Body, Done. | One-time boss moves. | It should repeat on a rhythm; use Every N Turns. |
| Every N Turns | Run Body every N turns. | N. | Body, Done. | Periodic enemy actions. | It should fire exactly once; use Once Per Battle. |
The demo enemy Mire Reaper puts the pattern vocabulary together in one graph. On Enemy Behavior Start feeds an HP Threshold Pattern, which moves the enemy to a different plan once its HP falls past the threshold. Each plan is a Weighted Random Pattern rolling between Leaf Intent nodes, and each leaf chains the Action and FX nodes its telegraphed move performs:

Event and group nodesโ
| Node | Purpose | Inputs and settings | Outputs | Use with | Avoid when |
|---|---|---|---|---|---|
| Raise Internal Event | Send a named GCS event with optional arguments. | EventName, argument bindings. | None. | On Internal Event, Event Arg. | A direct control wire is simpler. |
| Raise GES Event | Send a Game Event System event. | GES event GUID, arg type, source, and value, sender type, source, and value. | None. | On GES Event, projects that use GES. | The GES bridge is not installed. |
| Group | Wrap reusable graph logic behind exposed ports. | GroupName, Body, ExposedParams. | The group's exposed ports. | Repeated graph fragments. | The logic runs once and grouping only hides it. |
Readability rulesโ
Graphs get read far more often than they get written. Match the sentence in your head to the standard shape:
| The graph says... | Prefer |
|---|---|
| "If this is true, do this." | Condition โ Branch |
| "Do this to every selected target." | Collection source โ Foreach |
| "Choose one of several named cases." | Switch |
| "Calculate a number, then apply it." | Math nodes โ an Action input port |
| "Change a hook's value." | Hook entry โ operators โ Write Hook |
| "The enemy telegraphs a move." | Intent pattern โ Leaf Intent |