Reactions & puzzle rules#
There are two places to say what happens when the player uses a verb on a hotspot: the verb's reaction (Reactions Editor) and a puzzle rule (Puzzle Editor, or the ⚡ button right on the verb row). Both are lists of effects — the difference is that a reaction always plays the same way, while a puzzle rule checks conditions first and can answer differently depending on the state of your game.
The one thing to burn in early: only one of them runs. The engine picks a single winner, plays its effect list from top to bottom, and ignores everything else. It never mixes two sources — there's no "play the rule and then the reaction".
The two pieces, in plain words#
- A reaction is the hotspot's default answer. "Use the doorbell → chime." No conditions, no state — every click, same result. You author it on the verb's row in the Reactions Editor, as a message or a chain of effects.
- A puzzle rule is a list of condition → effects branches for that same verb. "If the door is already open → say something snarky. Otherwise → open it." The engine walks the branches top to bottom and plays the first one whose condition passes. When a verb row has a rule, you'll see the amber ⚡ puzzle rule badge on it; rows without one show a dashed +⚡ create puzzle rule button instead.
Who wins, drawn out#
Every verb click walks this ladder from the top and stops at the first step that answers "yes":
"My sound stopped playing" — the classic surprise#
Say your doorbell's use reaction plays a chime and winds up a timer, and later you
add a puzzle rule to that same verb. Next click: silence. No chime, no timer.
That's the ladder doing its job. The rule passed, so its effect list ran — and the reaction's list (chime and timer, the whole thing) was skipped as a block. Effects are never merged item by item; the winner takes the entire turn.
Two ways to get the doorbell back, depending on what you meant:
- The rule is now the verb's whole story → move the chime and the timer into the rule's effect list (each branch plays exactly what it needs).
- The rule is only for a special state → give the rule a real condition. When the condition doesn't pass, the ladder falls through and the plain reaction plays like it always did.
The pattern that scales#
Use the two pieces for what they're each good at:
- Plain reaction = the default behaviour. What the verb does on an ordinary day.
- Puzzle rules = the exceptions. "Only while the timer runs", "only if the player has the key", "only after Act 2". Conditional branches for special states, nothing else.
A rule with no condition passes every time — which means the verb's reaction below it will never play again while that rule exists. That's a legitimate tool (sometimes the rule is the whole behaviour), but reach for it deliberately, not by default.
Branches are checked top to bottom, and the first pass wins. Put the most specific condition first and the catch-all (if you need one) last — same instinct as if/else.
A rule that passes with an empty effect list means "do nothing", on purpose. It silences the verb entirely. Handy for locking a verb during a sequence; confusing if it happens by accident.
The same ladder, as a table#
| # | Source | Where you author it | Runs when… |
|---|---|---|---|
| 1 | Puzzle rule, verb + item | Puzzle Editor, or the ⚡ badge on the row | An item is armed and one of its branches passes |
| 2 | Puzzle rule, verb | Puzzle Editor, or the ⚡ badge | One of its branches passes |
| 3 | Item interaction | Reactions Editor → Item interactions | An item is armed and the pairing exists |
| 4 | Plain reaction | Reactions Editor → the verb's row | The reaction exists (msg or chain) |
| — | Generic fallback | System Messages | Nothing above applied |
One winner, whole list, everything else ignored — that's the entire contract.
One reaction, a different line per character#
A plain reaction doesn't have to say the same thing to everybody. On any verb row, + Msg per character adds a line for a specific character on top of the default one. Bernard looks at the radio and worries it's Ed's; Dave looks at the same radio and thinks about the noise he could make — one reaction, one row in the editor, two voices.
Whoever is walking around at that moment picks their own line; anybody without one falls back to the default. This works the same way on hotspots, on characters, and on items in the bag.
Write the default line. A character-specific row only covers that character. If you write per-character lines and leave the default empty, everybody else gets nothing at all and the verb falls through to the generic system message.
It's not only hotspots — characters too#
Everything above is drawn around hotspots, but the same two pieces work on characters. A character — an NPC, or another playable one — has the same verb rows in the Character Editor, with the same ⚡ puzzle rule badge and the same plain-reaction authoring, and the engine resolves a verb on a character with the same "one winner, whole list" ladder. Authoring a simple line straight on a character's verb row is enough; you don't need the ⚡ modal unless you want conditions.
The one wrinkle is that a character isn't tied to a single room, so its puzzle rules can be room-specific or global:
- A character's puzzle rule authored in a room only applies while the character is standing in that room.
- A character's puzzle rule authored globally (the
_globalbucket, same place global watchers live) applies wherever the character is. - Room-specific wins over global — the same "most specific first" instinct as branch order.
Below both, the character's plain reaction rows fire anywhere the character stands. So the full character ladder is: room-specific rule → global rule → item-paired reaction → plain reaction → generic fallback — the hotspot ladder, plus the room/global split at the top.
GIVEis authored on the character receiving the item. Handing one item to a character is a two-object action, and it's the character on the other end who decides what happens — so its reaction lives on the receiver's verb rows, not on the item. The Items Editor shows a hint pointing you there.
Where to go next#
The doorbell in this guide is the same one from Timers & watchers — that guide picks up right here, chaining the timer you just started into a watcher and a cutscene that answers the door.