CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.51k stars 4.16k forks source link

Health info misleading after health revamp, and junk food intolerance has become free points #59505

Closed PatrikLundell closed 1 year ago

PatrikLundell commented 2 years ago

Describe the bug

After a recent health rework "junk food" is now very harmful to PC health, but the UI field that's intended to warn against harmful food does not reflect that, so a player has to firstly know that "junk food" is directly harmful, and then check each food item to check whether it's labeled as such (salted popcorn is junk food, while unsalted popcorn isn't).

Also, the change makes junk food intolerance a free point pick, as you can't eat junk food anyway.

Steps to reproduce

  1. Upgrade the game to a recent version.
  2. Continue to eat whatever has the shortest expiry date that isn't marked as harmful.
  3. Get plagued by morning messages that are caused by bad heath, plummeting into very bad health within a week, as revealed by searching for the meaning of those obscure messages.
  4. Try to compensate with vitamin containing food and vitamin pills.
  5. Note that the inherent junk food danger isn't affected by vitamins. Sure, the enormous calorie consumption ought to have made the player put on weight rapidly, but that's required by the game not to lose weight.
  6. Be surprised that most of the worlds population hasn't died yet due to the incredibly dangerous junk food.

Expected behavior

If a food item has a significant negative health effect, the health column should indicate that. All junk food should have at least one bar, and probably two.

Remove the junk food intolerance trait, as junk food is now too harmful for anyone to eat (possibly with the exception of some iron guts trait or some mutations). It may be somewhat safe to eat at the same level as tainted meat presumably is.

Screenshots

No response

Versions and configuration

Additional context

No response

anoobindisguise commented 2 years ago

Not all junk food is unhealthy, right? Chocolate bars, cookies, cakes, sports drinks (gatorade I think), chocolate drinks, maple syrup, pretzels (chocolate covered pretzels), pudding, marshmallows, mayo, mustard, tortilla chips, toastems, pork sticks and potato chips are all things my Sweet Toothed survivor eats on the regular for the mood boost and they do not have (-) health, although I have noticed that despite chugging gamma globulin shots my health is still pretty poor. is there a separate mechanic that's causing all junk food to suck my health away?

PatrikLundell commented 2 years ago

My experience indicates the changes made has turned all junk food into toxic health hazards. My character's diet consisted of things like cookies, toastems, marshmallows, popcorn, etc. plus various chocolate covered things, etc. The health tanked like a stone after upgrading. After tossing out all junk food (into the base calorie store) my character's health modifier (debug info) has turned positive, but the health stat isn't recovering: it has just stopped sinking at -108. There may be some hidden hysteresis variable that might cause a positive modifier to not actually result in a positive change until inertia has stopped the drop, or there may be some bug at play.

I suspect Sweet Tooth is now shot, though, converted into a useless waste of points, and yes, I think all junk food is now toxic.

Edit: #59499 indicates the debug info is indeed not up to date.

Terrorforge commented 2 years ago

I'm not sure this is quite what's happening, but health history is essentially stored twice. daily_health is added to health_tally every day. but daily_health is never reset, it just decays slowly. This makes it incredibly hard to reverse a health shift in either direction, because you have to first overcome daily_health, which will only then start incrementing health_tally, which will then start moving the actual health value.

I've been unsure whether to report this as a bug, because being resistant to change is an intended feature of the new health system.

e: it occurs to me that there are some things that can absolutely crater daily_health (like.junk food and radiation), but there's no longer any equivalent ways to boost it by hundreds of points, so it's much easier to get trapped in a negative spiral

PatrikLundell commented 2 years ago

I'm completely fine with health being resistant to change, but it's completely wrong to try to implement that by applying all the resistance to the health trend. A better way would probably be to make the maximum health trend value quite small compared to the overall health value so daily changes would only make small dents, and I might consider major health threats to have their own negative factors so you can e.g. very rapidly get radiation poisoning, but it takes a long time to recover from it. I also find it odd that junk food should essentially contain large amounts of some nebulous health poison.

Edit: After further thinking, I believe a part of the problem is that health is linear. I think it would work better if health modifiers would only be able to exert so much effect, and as you near the ends of their effect their pressure would reach increasing resistance. In addition to that, each factor should act within its own pool, and each pool would be met by an increasing resistance as you near the ends of the health spectrum. Radiation and taint toxin should probably have shallow pools (with no positive axis) and their pools likewise should have little or no resistance towards the bottom of the health spectrum. Unhealthy food, or a lack of vitamins, on the other hand, would only pull you down so far before reaching the bottom of their influence. A healthy diet would likewise only be able to exert a certain amount of positive pressure, as would exercise, before reaching their limits, and combined their maximum pressure would be less than the sum of them.

chrispikula commented 2 years ago

The delay of player action -> player health is a bit hard to understand via gameplay. The phase delay doesn't appear to have any effect, until it is overwhelming.

Perhaps, if health_tally was to have some sort of indication in the log if you were abusing it, it would be nice? Things like the following output messages:

-- "Your skin feels greasy after eating all that junk food."

- "Your stomach rumbles after eating all that processed food."

+ "Your skin glows with natural vigor, it must be your diet."

++ "You have a pleasant dream about the tasty food you ate yesterday."

Getting an indication that junk food is really bad for you with the -- message would be nice.

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not bump or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.

kevingranade commented 1 year ago

Helping stalebot catch up. Closing vague characterization of problem.