No active sessions yet.

No games yet.

No conversations yet.

No characters yet.

Common mistakes

The failures that produce no error at all — collected in one place.

Every item here is silent. None of them produce an error; all of them produce a rule that looks right and does nothing.

$.stat('might') instead of $.stat('might')

Reads by display name, so it breaks the moment anyone renames the stat. A stat nobody has reads 0, so the rule keeps running with a wrong number.

Reading values

A var in a rule body

Not a step, and it takes the whole body with it. The rule does not partially run; it does not run.

Rule bodies

Treating a missing field as 0

It is null, and null loses every comparison including <. A rule gated on infection < 5 fires on nobody who lacks the field.

Missing values

Reading $.player when you meant the party

$.player is the host only. A rule about everyone uses $.party — otherwise the engine can refuse a sleep while a companion starves and your plugin cannot tell.

Pricing a per-turn system off $.event.minutes

In a clockless game those minutes are the narrator's estimate. A wordy turn becomes seven times more expensive than a terse one.

Minutes are not time

refuse where you meant veto

refuse stops the player's action. veto stops one proposed event. Answering another plugin's event with refuse tells a player standing still that hunger clawed them out of a sleep they never started.

Steps

Freezing a dial's value into a literal

Correct until someone retunes the dial, then silently wrong with two numbers that disagree.

Formulas and dials

Passing zero to $.damage()

Damage floors at 1, so a dial tuned to zero still costs a point. Branch around the step instead.

Steps

Putting a number in narration

The narrator never sees mechanics. $.narrate("fever reduced by 2") breaks voice; write the sentence a player should read.

Steps