-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Perspiration, evaporation cooling #44880
Conversation
That's pretty awesome feature to have! Would you consider adding an action of pouring water on player character? Like putting water from a flask or w/e on your clothes if there's no place to dive into to get wet. |
Indeed I am. I thought about leaving it to separate PR, but having this feature for my test run might be quite useful. |
2bedee1
to
811a949
Compare
I implemented the pouring action via unload from container / interaction with other sources of water on map, though I am probably going to PR it as a followup. To keep things simple for reviewers and the person who can do the merge. |
Earlier, being wet used to lower your morale. Now it can be useful, so being wet when it's hot should raise morale, right? As a general rule, if being wet decreases heat from positive values down to zero (or 30), it's fun, otherwise not fun. |
Whether you gain or loose morale for being wet depends on clothing you have. Swim and some sports gear give morale bonus. Just being sweaty is not going to give you a penalty, as sweat should evaporate before lots of it accumulate. Unless you are running in leather or similarly unbreathable gear while sweating. |
would low stamina not cause additional heat and thus perspiration too? |
There is new Weariness system #43985 that tracks weariness from activities that have activity level ranging from NO_EXERCISE to EXTRA_EXERCISE. I can definitely see the possibility of modifying it to not only raise weariness, but also body heat. That will in turn cause perspiration once the body part reaches the Warm status. There is also a discussion about weariness in issue #44326. |
It doesn't make a difference where it came from, but it matters where it is when it evaporates. Only evaporation very close to the skin carries heat away from the body. Water in clothing is going to evaporate, but not impact body heat much, unless the clothes are so soaked that it acts like a big heat sink. Overall I'm a bit concerned about the lack of either reference to IRL sources or in-game use cases. This really needs some stuff like, "character wearing so-and-so outfit doing exercise foo is comfortable" for validation. |
True, though I believe that the game tracks only wetness that actually got to your skin, not wetness on the gear itself, that did not penetrate. Given that wetness causes morale penalty.
Body using perspiration as a way to regulate its temperature is not in a dispute I believe? Nor is the evaporative cooling? In-game use case is that the player has currently good options about dealing with cold, not so much with heat. It seems to me (individual player experience, though if we go by the referenced issue I am not alone) that it is pretty easy to get warm in mild temperatures. It could be solved by tweaking the numbers instead of introducing new system, but given the existence of TODO comments in the code, I thought that something akin to what I implemented was planned to be added at some date. Other use is, that it fit well in tandem with suggestion about activities raising your body heat, if that was implemented at a later date.
Hmm, wouldn't such stuff be related more to a PR that would tweak what clothing gives what morale bonus during activity x? This PR is not changing what clothing is giving bonus / penalty when character is wet. These are kept as they are, sorry if I implied differently. |
Player is in summer, heat sucks for movement speed and extra thirst, player perspires. Player instead wears light nomad gear for summer, is far les wet, is able to perspire and cool down, therefore not getting heat penalties nearly as much nor horrible morale from wetness without having to strip down to essentially naked and take full damage from dangers. case made. |
I can see that I did a pretty bad job explaining things in the Purpose of change section, though @dissociativity got it right. I am not good at explaining my thoughts, sorry about that. Let me try to amend it. The purpose of change is to simulate the fact, that human body is capable to handle excessive heat on its own, to a degree, and with associated cost of increased thirst, via perspiration through the evaporative cooling. The evaporative cooling is hindered by wearing clothing made from material with low breathability, thus incentivizing the player to choose more fitting clothing for his current situation. Now that I read it after myself, I am not sure if I did better job than before... well, I tried. |
4517b0f
to
793e155
Compare
Suggestion: replace the integers for breathability and similar with string values, that the loading turns into integers. Raw integers are messy, provide too much control, and don't really mean anything to humans. Having a few enumerated states would be better. |
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. |
@Robik81 is this being worked on? |
@Night-Pryanik I didn't have time to test it properly, though I do plan to return to it this month. |
Ok, could you please convert it to draft and remove the WIP tag then? |
Any chance that the scent system could eventually link in what that? e.g. more sweat-stronger scent etc. |
I didn't realize there was a WIP pr for this, I had just started writing up an implementation. I would really like to see this get done. @Robik81 are you still around? if you'd like, we could try to get this in as one of the last big parts of 0.G, calling it part of the armour revamp. If you're not around, I may see if we can get someone to adopt this and not let it languish. |
@I-am-Erk I am currently busy with work and only god knows when I will be able to return to finish it. Feel free to take it over completely, in part or as an inspiration for your own implementation. That goes for everyone who is willing and able to do it, of course. Though I don't have time to play CDDA currently, I would be really happy if something akin this is implemented when I will have time to play again! |
Thanks for the quick reply. I'll look and see, maybe this can be quickly made functional and merged and we can sort out the fallout from there. |
Was going to take this over directly but on second thought if I do, I'd prefer it to be another PR. I have moved it to the appropriate projects so it doesn't get missed and I will close this PR. |
Summary
SUMMARY: Features "Perspiration, Evaporation cooling, heat effect balancing"
Purpose of change
Human body is awesome. And one of its awesome features is perspiration - thermoregulation via evaporative cooling.
I had some problems while cooking near the stove in late spring... well, I had to cook naked to not cook myself as well. Which led me to GitHub issues where I found issue #43451 this PR hopefully at least partially fixes. Issue talks about heat effect in general and ways to balance it, but what struck my eye the most was mention about perspiration.
I started digging in the code and I found that in relevant function that handles character wetness are following lines:
// TODO: Make evaporation reduce body heat
and
// TODO: Make clothing slow down drying
It was like a glove to be picked up.
Describe the solution
notes about implementation
Describe alternatives you've considered
It was possible to just tweak existing heat effect around the edges, but...
Testing
I tested that the code is running without any noticeable issues and it appears that it does what was intended. What is yet to come is live play test, hence the WIP tag in the caption.
Useful tool for testing is wet-o-meter. Feel free to spawn one.
Additional context
Perspy was not harmed in any way during the testing...