Minutes are not time
Why pricing a rule off $.event.minutes can make a wordy turn seven times costlier.
onTimePasses fires in every game — including one with no clock at all.
But in a clockless game, those minutes are the narrator's estimate of how long the prose took. Across live sessions, comparable turns have run anywhere from 3 to 22 minutes.
What goes wrong
Bill an hourly rate against that, and a wordy turn is seven times hungrier than a terse one. Nothing errors. The game just feels arbitrary in a way no playtest report will diagnose correctly, because the cause is prose length.
This is not hypothetical: it is why stamina and mana were moved off the clock entirely.
Ask what the game has
$.timed
True when the world runs a real clock. Price yourself in the unit the game actually has:
$.adjustField({ field: "satiety", by: -($.timed
? ($.event.minutes / 60) * $.dial('foodDrainPerHour')
: $.dial('foodDrainPerTurn')) })
Two dials, not one — an hourly rate and a per-turn rate — because they are genuinely different numbers, and an author tuning your plugin needs to set both.
Or use the right trigger
For anything that ticks once per character per turn, use onTurnEnd instead. It fires
once per actor per turn in every game, clock or no clock, and carries no estimate at all.
That is the correct home for resource regeneration, cooldowns, and per-turn drains.
Do not move an hourly rule to onTurnEnd to dodge this: onTurnEnd already fires in
every game, so a rule that exists on both triggers double-charges.
Next
Hooks — the full trigger list.