Skip to content

More refined weight gain/loss #36976

Open
@I-am-Erk

Description

Is your feature request related to a problem? Please describe.
Our current system of directly translating extra calories to weight gain/loss makes these things fluctuate too quickly. Really, it's very difficult to lose more than 1/2 a kilo a week, and more than 1 kilo a week is exceptional unless you're starving. Weight gain is tougher to determine: it's got less of a cap, but it's still hard to put on fat at the rate our survivors can.

Describe the solution you'd like

  • Calculate the survivor's average stored calories loss or gain over the last week based on activity and intake.

Addendum to following: when I wrote this I used flat kcal values for cutoffs, but I think we should actually use the character's base calorie needs per day, BMR in code. For the numbers I've used, consider every 2000kcal to be 1 BMR, so 4000kcal means "2x the character's BMR".

Weight Loss:

  • No changes if the total stored loss is 4000kcal or less, roughly 1/2 kg of weight.
  • Add messages at 4000, 6000, and 8000 kcal deficit to indicate that the player is dieting: "your blood sugar is a bit low, it's hard to concentrate." "You just find it hard to get enough energy."
  • From 4000-8000 kcal, decrease wthreshold, per weariness system recommendation, by [(deficit-4000)/4000]*25%], so at a deficit of 8000 kcal this caps to a 50% penalty to wthreshold.
  • If anyone wants to get mathy, what we really want is a sigmoid curve where the inflection points are at 4000kcal and 8000kcal deficit and the asymptote is a 50% penalty.

Weight Gain

  • Change hunger messages at 4000 kcal to indicate that the player is overeating, unless the player is at a dangerously low BMI already. "You're hungry, but also feeling a bit bloated." "Despite feeling hungry, you can still feel the weight of the last few meals in your guts."
  • After 4000 kcal, reduce the amount of calories going into storage by 1% per 100kcal over 4000. So if you've stored 5000kcal extra in the last week you still get full calories from the food you eat, but whatever excess there is is reduced by 10% before going into storage. This isn't much but it does limit the possibility of absolutely absurd weight gain.

Describe alternatives you've considered
We may want to figure out some sort of time-based cap to weight changes as well, so the effects aren't seen instantly.

Debatably, the average weight lost or gained could also impact hunger. There's a better argument for the loss side of things: if you're constantly dieting you could feel a bit more hungry. There's less of an argument for overeating reducing your appetite irl, but in game it might be helpful just for the feedback element.

Additional context
Adding penalties for too much weight loss, along with the effects associated with them, would help limit people from losing weight too quickly I think.

BOUNTY NOTE: If someone implements this, I'll make at least two sprites of their choice for any mainline tileset

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions