A turn proceeds through five phases, in order:
RESET -> WAKE_UP -> PLAN -> DO_STUFF -> WIND_DOWN
There is no “advance phase” action. A phase ends — and the next begins — purely as a consequence of every player passing priority in a row while the stack is empty (see Priority below).
When the final phase (WIND_DOWN) ends:
RESET;Stubs, out of scope for the MVP: Wake Up housekeeping currently runs at end-of-turn rather than in the
WAKE_UPphase; combat inDO_STUFF(People assigning to Problems) is not implemented.
Two notions are kept deliberately separate:
active_player — whose turn it is. Slow: changes once per turn.priority_player — who may act right now. Fast: changes constantly.That separation is what lets a non-active player act during the active player’s turn.
Granting priority after a stack change. Whenever a card goes on the stack, the active player receives priority (even to respond to their own card), and the consecutive-pass counter resets.
Passing priority. When the player holding priority passes:
PlayCard: PERSON / APPLIANCE / HABIT / TASK) is the restrictive timing:
legal only for the active player, only during PLAN, and only when the stack is empty.CastInstant: INSTANT) is the permissive timing: legal for whoever
currently holds priority, in any phase, regardless of what is on the stack.The stack is a list; the most recently added item is the top.
id (assigned from GameState.next_stack_id), unique within the game,
so an effect can target a specific item.PERSON / APPLIANCE / HABIT) goes onto its controller’s
board; a one-shot (TASK / INSTANT) applies its effect and then goes to its controller’s
discard.