Pular para o conteúdo principal

Balancing

These values are constants in the code, not configuration. Changing them means editing and rebuilding. They are documented here so you know what the numbers mean before you touch them.

Need decay

Per tick, from Needs.tickDecay:

NeedRateWith trait
Hunger0.0001
Energy0.00020.0004 if LAZY
Social0.00015
Fun0.00010.00005 if FUNNY
Hygiene0.0002

At 20 ticks per second, hunger takes roughly 13.9 in-game hours to fall from 100 to 0.

Hunger thresholds

ConstantValueEffect
Idle search70Looks for food when idle
HUNGRY_ENOUGH_TO_EAT70Eats a gift on the spot instead of pocketing it
HUNGER_INTERRUPT_THRESHOLD25Drops its current task to eat
STARVATION_THRESHOLD5Stops working and cries

Starvation

Starvation costs an NPC its usefulness, not its life. Below STARVATION_THRESHOLD it abandons its job, its hobby and its social life, turns SAD and plays the crying animation. It stays that way indefinitely until someone feeds it.

It still walks to a chest and eats — the "stop everything" rule excludes the tasks that lead to food, and excludes sleep.

Hunger does not kill

Aging and disease will own death. A second cause competing with them would make both harder to reason about, so hunger was deliberately taken out of that role.

Earlier versions of this page described a starvationDamage counter that killed at 200 damage. That system was removed along with Needs.java; the constants it named no longer exist.

Food values

TierHungerHealth
1+25+6
2+45+14
3+65+24

Tiers come from the item's own Root_Secondary_Consume_Food_T1..T3 interaction, not from its name.

Sleep

ConstantValue
Night windowday progress < 0.25 or > 0.75
Tired threshold30 energy, or 60 if LAZY
Energy recovered while asleep0.045 per tick

Guards invert the window: they sleep during the day.

Search radii and cooldowns

ConstantValueWhy it exists
CHEST_SEARCH_RADIUS24 blocksHow far an NPC walks for a meal
FOOD_SEARCH_COOLDOWN_TICKS100Stops a search storm when no food is reachable
MOVE_TIMEOUT_TICKS600 (30 s)Gives up on an unreachable chest
Furniture scan radius on join32 blocksPicks up pre-existing beds and chests
Do not remove the cooldowns

Without them, an NPC with no reachable bed or food re-enters the search every tick. One real session logged 3447 rejections of the same bed in a few seconds, with the NPC standing still the whole time.