Common mistakes
The mistakes that produce no error at all, in one place.
None of these raise an error. All of them give you a rule that looks right and does nothing.
Reading a stat by display name. $.stat('brawn') breaks when the stat is renamed, and a
missing stat reads 0, so the rule keeps running on a wrong number. Use the role:
$.stat('might'). → Reading values
Treating a missing field as 0. It's null, and null fails every comparison, <
included. infection < 5 matches nobody who lacks the field. → Missing values
$.player when you meant everyone. $.player is the host only. Use $.party.
Charging per hour off $.event.minutes in a clockless game. Those minutes are the
narrator's guess; wordy turns cost seven times more. → Minutes are not time
refuse where you meant veto. refuse stops the player's action; veto stops another
plugin's event. → Steps
A dial copied as a number. Right until someone retunes the dial. → Formulas and dials
$.damage with a zero dial. Damage floors at 1. Check the dial first. → Steps
Reading a different place than you wrote. Settings filled into a table, hook reads
$.location.fields. → Reading values
Numbers in narration. $.narrate('fever reduced by 2') breaks the voice. Write the sentence
a player should read. → Steps
optional used as a fork. An unfinished optional quest step blocks the quest. Use skipIf.
→ Quests
Rolling dice in a condition. $.random() returns null outside a rule body. → Expressions