Skip to main content

Resolution, Initiative, and Reactions

Resolution, Initiative, and Reactions

Tick resolution

Each tick runs one loop over every actor, in initiative order:

  1. Actor action processing. Does the actor have an action in progress?
    • No - select the next action (monsters: from the profile's ranked triggers; player: input - the game stops until they commit) and process its first tick. A zero-prep action flows straight through to the next phase.
    • Yes - process the current tick of the PER cycle.
  2. Reaction collection. After the actor's processing, loop the other actors: did this tick trigger a reaction? If yes, add it to the queue - an actor may collect multiple reactions in the same tick. The reactor-side gate applies at collection: an actor in its own exec adds nothing (it is committed, not observing).
  3. Reaction pass. Loop the reaction queue in initiative order:
    • An actor with several queued reactions evaluates them and uses the best one for the current circumstances; the rest are discarded. Monsters rank by profile; the player is offered the choice.
    • If the actor executes the reaction: pause or cancel their current action (if any), per that action's interruptibility, then process the first tick of the reaction's own PER cycle. A short reaction may complete its exec within this tick and spend subsequent ticks in recover.

Movement is not a special phase - it is an action like any other and runs through the same actor loop. Within a movement action, "leaving" reaction triggers queue before "entering" triggers; initiative breaks ties within each kind.

Deterministic, seeded, logged. This is what makes fights replayable for debugging and tuning.

Initiative

  • Rolled at combat start (Perception or Stealth style, as in Pathfinder), fixed for the whole fight.
  • Used as priority for same-tick, world-affecting resolutions only (actor order, reactions, movement events) - not for internal phase transitions.
  • Tiebreakers: dex, then level, then PCs-over-monsters, then a coin flip pre-rolled once per combat (so identical actors stay consistent all fight).
  • Initiative as a speed stat: a small random jitter is added to PER cycles; initiative reduces prep and recover time (never exec - exec durations stay consistent so active windows remain readable). High initiative therefore produces more actions over a fight. The jitter is seeded per combat so replays reproduce.

Reactions

Reactions are short actions taken out of sequence, triggered by observing another actor's phase.

Can I react at all? - gated by your own phase:

My phase React? Cost
Prep Yes Pauses or cancels my prep, per the action's interruptibility
Exec No Committed - this is the point
Recover Yes The reaction's own PER handles the cost

What can my reaction do? - gated by the observed target's phase:

Observed phase What a reaction can do
Prep Can cancel the target's action (interrupt the windup). Knowledge-gated: only actors who can read prep as prep can target it.
Exec Can mitigate the action (reduce or disrupt its effect) - or do something entirely unrelated.
Recover Cannot affect the completed action at all - but the target is vulnerable, so this is an exploit window: act while they wind down.

Reactions never need to counter the triggering action. They trigger on phase events, not as restricted counters: a magehunter reacts to a mage's casting by throwing a knife; a mage under attack reacts by casting shield for extra AC.

Reactor cost - the reaction's own PER. The tax lives in the reaction's own cycle, never the parent action's. Reactions should be built with short or zero prep and short exec; the recover is the throttle - pad it to tax use. This composes with the exploit window: reaction spam leaves the actor in a long recover, where enemies can take advantage.

Interruptibility (pause vs cancel). When an actor reacts, what happens to their in-progress action is an action property: actions that demand deep concentration are cancellable on reaction; lighter actions pause and resume once the reaction fully completes (including its recover). Set per action, like any other parameter.

Baiting is a core player skill: a monster that has already spent its reaction window has no answer to a maneuver.