Skip to main content

Common Status Patterns

GCS ยท Recipes

The node chains behind the six status archetypes: damage over time, stat buff, stat debuff, damage absorber, reactive damage, and control. Every recipe is a shipped demo status you can open.

For authors building their own status set: use Poison, Strength, Thorns, Buffer, and Silence as verified graph references.

A status is a rule that lives on a unit: it persists across turns, reacts to what happens, and can rewrite numbers before they land. Authoring one has two halves. The asset fields decide how stacks behave; the Behavior graph decides what the status actually does. Every pattern below exists in the demo status database, so you can open the real graph next to this page.

The demo Poison status in the FlowGraph editor: On Turn Start feeds stack count into an armor-ignoring Deal Damage, then a Play Effect group


Stack behavior lives on the assetโ€‹

Three fields in the Workbench Status mode control stacking, and none of them needs a node:

FieldOptionsWhat the player experiences
Stack RuleAdditive / Max / ReplaceNew applications add up, keep the higher count, or overwrite the current count
Max Stacks-1 or a positive cap-1 means unlimited; a cap silently clips anything above it
Decay RulePerTurn / NeverLose one stack automatically each turn, or persist until removed

Decide these before touching the graph. Half of the classic status behaviors ("stacks fall off each turn", "does not stack beyond 3") are pure asset configuration.


Damage over time (Poison)โ€‹

Status text: "At the start of your turn, take 1 damage per stack, ignoring armor, then lose 1 stack."

The demo Poison asset: debuff on, Stack Rule Additive, Decay Rule PerTurn, Max Stacks -1. The graph is the screenshot above:

On Turn Start โ†’ Deal Damage, with three settings doing the work:

  1. Target is Self. In a status graph, Self means the unit carrying the status, whoever that is.
  2. Amount is not typed in. It comes from Status Info, whose Stacks output reports the current stack count. Leave the node's Status field empty and it reads the status the graph belongs to. A wired port always beats the number typed in the field.
  3. Ignore Armor is on, so the tick hurts even a fully armored unit.

Notice what is missing: there is no "lose 1 stack" node. Decay Rule PerTurn handles that on the asset side. Burn in the demo is the same skeleton ticking at turn end through On Turn End; Bleed swaps the entry for On Attack Taken, so it hurts whenever the holder is struck.


Stat buff (Strength)โ€‹

Status text: "Your attacks deal 1 extra damage per stack."

Buffs that change numbers do not deal damage themselves. They intercept a value on its way through, via a Hook entry:

Damage Dealt Hook โ†’ Math Binary โ†’ Write Hook

  1. Damage Dealt Hook fires whenever the holder is about to deal damage, and exposes the pending number on its Value output.
  2. Math Binary (Add) sums that value with Status Info โ†’ Stacks.
  3. Write Hook submits the adjusted number, and the attack lands that much harder.

The demo Strength asset uses Decay Rule Never, so the buff stays until something removes it.


Stat debuff (Weak, Vulnerable)โ€‹

The debuff versions are the same hook chain pointed the other way. Reduce the holder's outgoing damage through Damage Dealt Hook, or raise its incoming damage through Damage Taken Hook. Pick the hook by asking whose number changes: the holder always owns the hook, so "this unit hits softer" and "this unit gets hit harder" are both statuses on that unit.

When you subtract, run the result through Clamp before Write Hook. Without it a big debuff can push damage negative, which heals the target.

One design note from the demo: Weak and Vulnerable adjust the number by a fixed Constant instead of reading Status Info โ†’ Stacks. Extra stacks therefore extend the duration rather than deepen the penalty. Both scalings are legitimate; make the printed text match the one you wired.


Damage absorber (Buffer)โ€‹

Status text: "Each stack prevents 1 HP of loss, then is consumed."

HP Loss Hook โ†’ Math Binary chain โ†’ Write Hook, plus Change Status to burn the stacks:

  1. HP Loss Hook intercepts HP loss with the pending amount on Value.
  2. Math nodes work out how much the stacks can absorb and what remains.
  3. Write Hook submits the reduced loss, and Change Status (negative Amount, Self) consumes the stacks that were spent.

Use this pattern whenever an effect trades its own stacks against an incoming value.


Reactive damage (Thorns)โ€‹

Status text: "When you take damage, deal 1 damage per stack to the attacker."

Reactive statuses use a plain Entry instead of a Hook, because they respond to an event rather than rewrite a number:

On Damage Taken โ†’ Deal Damage

  1. On Damage Taken fires after the holder is hit and exposes the attacking unit on its Source output.
  2. Wire Source into the damage node's Target port, so the bounce hits whoever attacked, not a fixed target.
  3. Amount again comes from Status Info โ†’ Stacks.
warning

Reflected damage is damage. If two units both carry a reflect-style status, test them against each other in Play Mode and watch the Monitor Flow tab to confirm the exchange settles the way you intend.


Control status (Silence)โ€‹

Status text: "Cannot play Skill cards. Lose 1 stack each turn."

Control effects veto a decision instead of changing a number. The demo Silence graph:

Card Playable Hook โ†’ Card Info โ†’ Condition โ†’ Branch โ†’ Cancel Hook

  1. Card Playable Hook fires while the battle checks whether a card may be played, exposing the candidate on its Card output.
  2. Card Info reads the card's Type; Condition compares it with a Constant set to Skill.
  3. On the True branch, Cancel Hook vetoes the play. The card stays in hand and cannot be played while the status holds.

Silence's "lose 1 stack each turn" half is Decay Rule PerTurn again, with no extra nodes. The demo's other lockouts each pull a different lever instead of repeating the veto: Stunned makes the holder skip its entire turn (On Turn Start into Skip Next Turn, with Max Stacks 1 so it cannot pile up), Frozen shrinks outgoing damage through Damage Dealt Hook, and Restricted cuts cards drawn through Draw Count Hook. Pick the lever that matches the text you want to print.


Status authoring checklistโ€‹

  • Does the display name state the rule, or at least not contradict it?
  • Buff or debuff? The IsDebuff flag drives how the UI presents it.
  • Should new applications add, keep the max, or replace? That is Stack Rule, not graph logic.
  • Should stacks fall off each turn? That is Decay Rule, not a node.
  • Which half does the behavior need: an Entry (react to an event), a Hook (rewrite a value), or both?
  • Does the player see an icon and a stack count that actually changes? Confirm in the Monitor Unit tab during a test battle.