Skip to content

Statuses

A status is a temporary buff or debuff applied to a fighter. Statuses can change stats, restrict actions, deal damage over time, modify attacks, or provide a shield.

Status types

Buffs

Debuffs

  • StatsDown: reduces one or more stats.
  • Control: skips a fighter's turn or active skill.
  • DOT: deals damage over time.

Runtime status instances

Every accepted status application creates a runtime instance with its own identity and remaining duration. Independent stacks can therefore expire or be removed at different times.

The runtime ID starts with the status's configured name, with surrounding whitespace removed and internal whitespace replaced by underscores. An application timestamp follows that name. For example, a status named Magic Barrier produces an ID such as Magic_Barrier_1750000000.25.

The status name determines which instances count as matching stacks. Statuses with different names do not replace or stack with each other.

Applying another status with the same name may replace existing instances, add an independent stack, or be rejected. See Reapplication and stacking for the configuration and behavior.

Later same-name applications use the stack_policy and max_stacks values already active on those statuses. stack_policy: "replace" replaces the active same-name group and does not accept max_stacks. stack_policy: "stack" adds independent instances and requires max_stacks. Once every matching instance has expired or been removed, the next application uses its own configuration. Runtime status snapshots include the established stack_policy, so replay clients can preserve the active group's behavior.

Status duration

Each status instance decreases its own remaining duration at the end of the affected fighter's normal turn, after energy and health regeneration. When an instance reaches zero, its natural-expiry event appears in turn_end.events and the expired status is absent from the turn-end snapshot. Other same-name instances keep their own remaining durations. Natural expiry applies whether or not the status is configured as removable.

A duration-1 status applied to an opponent remains active throughout that opponent's next normal turn, then expires at turn end. A duration-1 status that a fighter applies to itself remains active for the rest of the current normal turn, then expires at the end of that same turn.

An opponent receives a duration-1 debuff

During Cow's turn, Cow applies Attack Down with duration: 1 to Dog.

  1. Application: Dog receives the debuff with remaining_duration: 1. It does not decrease at the end of Cow's turn because Dog owns the status.
  2. Dog's next turn: Attack Down remains active while DOT, passives, and Dog's action are processed.
  3. Dog's turn end: Energy and health regenerate first. The debuff then ticks from 1 to 0 and expires.
  4. Battle result: A remove_status event with reason: "duration_expired" appears in Dog's turn_end.events. The following turn-end snapshot no longer contains Attack Down.

If Cow applies a duration-1 status to itself instead, that status ticks and expires at the end of Cow's current normal turn.

skip_turn is the exception. When it prevents a normal turn, only active skip_turn statuses decrease their duration. The fighter's other statuses do not. See Control debuffs for the full behavior.

Statuses can also be removed by a skill action when configured as removable. See RemoveStatus for eligibility, filtering, and selection behavior.

See ApplyStatus to configure a status action and BattleResult to consume status events and snapshots.

Looking for exact fields?

Use the OpenAPI reference for complete status schemas, enum values, defaults, and validation rules.