CleverRaven / Cataclysm-DDA

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

Make Exercise Generate Body Heat #13234

Closed railmonkey closed 7 years ago

railmonkey commented 9 years ago

Because it just makes sense. Now that stamina is a thing, how plausible is it to link it to warmth? Also, survivors seem to lack sweat glands. (Repost from the forums because I forgot that you can make suggestions here, too.)

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

drbig commented 9 years ago

It makes sense on first glance. I wonder however how it would actually work in practice... have to undress in a middle of a fight because all this machete swinging makes you overheat?

railmonkey commented 9 years ago

No, that's when you suck it up and go Rambo. -Then- you can undress. Mostly, I'm thinking of body heat being there to take a bit of the edge off of extreme temperatures. Not enough to make a difference in the long run if you can't find a better source of temperature moderation, but enough to stave off the effects temporarily. And now I'm just repeating myself, so here's the link to the forum topic: http://smf.cataclysmdda.com/index.php?topic=11029.0

Coolthulhu commented 9 years ago

Requiring player to waste stamina when waiting to stay warm in cold weather is a no-go. We can just handwave it as the survivor doing jumping jacks or whatever when it's too cold.

On the other hand making the player uncomfortably warm while working in the summer sun doesn't sound tedious and could provide some extra immersion.

railmonkey commented 9 years ago

I understand the former. But you use stamina by running and fighting. (Or heck, even walking. I know I personally don't go faster than a walk at any given time. I always forget to switch modes.) I'm just looking for a bit of return on that. I don't really see the need to handwave. Any wasting would be done on the part of an overzealous player that's already in relative safety anyway.

Coolthulhu commented 9 years ago

I mean, forcing the player (as in, the person in front of the computer) to repeatedly press 2 buttons to have the survivor (the character in the game) go back and forth is not acceptable. It could simply be explained as the survivor automatically doing some minor exercises to heat up instead of wasting the stamina regen lost due to stamina being capped.

railmonkey commented 9 years ago

Right. And again, I'm saying that's not necessary. Just the ordinary exertion of finding more substantial warmth, normal city looting/forest scavenging, should be enough. Again, it isn't meant to be something that you grind. Your time is much better spent doing that looting and scavenging. If you just walk in circles repeatedly, you'll freeze anyway with nothing to show for it.

macrosblackd commented 9 years ago

Coolthulhu, I think he's basically just asking for body warmth for stamina expenditure, regardless of the actual activity.

On 8/10/15, railmonkey notifications@github.com wrote:

Right. And again, I'm saying that's not necessary. Just the ordinary exertion of finding more substantial warmth, normal city looting/forest scavenging should be enough. Again, it isn't meant to be something that you grind. Your time is much better spent doing that looting and scavenging. If you just walk in circles repeatedly, you'll freeze anyway with nothing to show for it.


Reply to this email directly or view it on GitHub: https://github.com/CleverRaven/Cataclysm-DDA/issues/13234#issuecomment-129452149

Coolthulhu commented 9 years ago

As I explained, in most cases it is either redundant or tedious. At least until stamina regeneration starts costing food and water.

Case 1: We assume that a full-stamina survivor does exercises to stay warm. In this case it doesn't really change much from the current version, except during hot weather, when staying cold is desired.

Unless we assume that all activity like crafting is too engaging to allow exercise. But then we'd run into silly cases like boiling water to clean it being too occupying to stay warm.

Case 2: Only active stamina usage counts. In this case it is unacceptably tedious in winter, because you'd need to stop what you're doing to run back and forth to heat up.

railmonkey commented 9 years ago

Fair enough, if that's all you were doing. But you don't -have- to keep running back and forth. By the time you're doing really serious crafting, you generally either have more layers, a way to make a fire, or both. When I said 'ordinary exertion', I was including all cases of moving about, including crafting.

As it stands, when you craft or do any other extended activity, you get colder without layers to protect you. The same would hold true even taking body heat into account, but as long as your body isn't standing still, you're actively generating heat, the net loss is smaller, and you can craft for longer, which is what I've been trying to get at. It's a stopgap until you can make/find yourself appropriate clothing and/or build a fire.

Heck, if you get right down to it, I'm looking for a handwave excuse to make temperature extremes more forgiving. Shivering is part of that, too. Its whole purpose, even. The fact that it's grounded in physiology is a convenient bonus. Homeostasis doesn't ever turn off. The body as a whole is interested in the business of staying alive. I'm saying it's silly to assume that it doesn't get factored in when it really could be. If nothing else, you could just make the shivering message grant a temporary effect that adds a few points of heat to all body parts. That, at least, is doable, yeah?

Coolthulhu commented 9 years ago

That, at least, is doable, yeah?

More than doable: it's already in. Though may be rather subtle in some cases.

railmonkey commented 9 years ago

Ah, even better. Really, you don't even have to have stamina come into it at all in that case. Even simpler than I was thinking it would be. Just comes down to rebalancing the timers of the temperature effects a bit, and all these points and counter points just become part of the handwave.

Coolthulhu commented 9 years ago

Yeah, if someone provides a concrete examples of what is vs. what should be, the system could be adjusted.

Examples like (probably not actual examples, just "examples of examples"):

kevingranade commented 9 years ago

Look at tests/player_test.cpp for the code that is tracking this. Basically, we have a temperature model we'd like to apply, and the current code is much more forgiving than that model.

I do think there are a few areas where this would make significant impact without adding tedium. These are roughly the features:

  1. Add thirst/hunger/fatigue as a result of exerting yourself.
  2. replace artificial increase to body temperature with tracking exertion and using it to generate heat.
  3. If cold and not doing something more important, exert self to increase body temperature.

Expected outcomes:

Skidborg commented 9 years ago

The current model is quite unforgiving at lower temperatures, and seems to error towards too cold, rather than warm enough. This is especially true for specific body parts. An active person shouldn't need to insulate their mouth against frostbite under most normally occurring temperatures, as blood flow should transfer heat from warm body parts to cooler ones.

Barhandar commented 9 years ago

It makes sense on first glance. I wonder however how it would actually work in practice... have to undress in a middle of a fight because all this machete swinging makes you overheat?

Fun fact: it's been known for medieval combatants to faint from heatstroke. In the middle of winter. Occasionally during a snowstorm.

Honestly, this should be an optional mod, because most won't like the bother - but some will appreciate needing to monitor their own temperature, clothes (cotton is better than steel and plastic is better than leather), and picking whether to continue fighting and risk fainting and dying, or running away.

tvm1 commented 9 years ago

Expected outcomes: * Increased hunger etc when cold. * Increased body temperature when very active (fighting, running). * Lower temperature when not exerting self, but busy, or taking longer to perform such activities (reading, most crafting). * More trouble managing temperature in summer, possibly encouraging nighttime activities.

That sounds good to me, OTOH it should also work in reverse. Your body really struggles to regulate all that stuff when hungry, thirsty or tired. Exhausted hungry PC should suffer severe penalties to his overall warmth figures, but same would also apply for heat. Thirsty PC will be unable to regulate his body temperature and it should skyrocket on direct sun.

So basically all this stuff should only speed up the temperature trend of the PC's body. If the PC is 100%, the change should be slowest.

illi-kun commented 7 years ago

This issue was closed as it appears inactive.

Reducing open issues to those which are (or will) be actively worked upon helps us focus our efforts. This issue has not been deleted - it still appears in searches and if it contains relevant information you are encouraged to continue to link to it.

If this issue was a bug

It should be reopened if it can be reproduced in the current build. You can obtain the most recent copy here. Please check there is not a more recent report of this bug before doing so. If no more recent report exists you should continue the discussion in this issue.

If this was a feature request

If the consensus was that the idea was good you could consider submitting an implementation via a PR. If you want to comment further please do so here as opposed to opening a new issue. Before posting check nobody has already made the same point and consider whether your comments are likely to lead to an implementation. If you have doubts about either consider instead voting for the issue

If you want to work on this issue

Then either assign it to yourself or if you are unable to do so claim it via adding a comment. Please don't assign others or make a general request for action.