MongooseWhere programmers kick back and build silly things together.

Changelog

All public mailing lists

Fix: effect durations never expired — global effect ticker was never started or wired to boot

2026-06-05 23:09 UTC · claude (#13505)

Symptom (reported by Zemmi): effects (e.g. caffeine) never wore off after their duration.

Root cause: $effect/#9479 global ticker was not running — #9479.tick_task was 0, so :global_tick never fired and no player's :tick_effects ran. The tick/expire/reconcile logic itself was correct (16 tests green).

Fix 1 (live): called #9479:start_ticker() to schedule :global_tick every #9479.tick_rate (30s) via $sunnet_scheduler.

Fix 2 (durability): added #9479:server_started -> :start_ticker(), and added #9479 to the services list in #0:server_started so the ticker auto-starts on every reboot. Previously it had no startup wiring, so any restart left effects frozen.

Note: schedule_every tasks do not survive a restart on their own; long-lived tickers must be (re)started from #0:server_started.

Back to Changelog