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
Clean up water purification #72
Comments
If water from the same source (river/lake/etc) retains the same cleanliness, etc when I get more of it later, then yeah, this sounds interesting. Nontrivial chance for tedium though, I'm thinking? |
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 bugIt 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 requestIf 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 issueThen 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. |
Here's my take on water and its sources:
Questions:
I agree with the types of water laid out by Kevin. There's been recent upgrades to recipes to track calories from the base ingredients and will carry the (rotten) effect across; will that system work for water contamination? (See here) Will the types of contamination have different effects? Requiring different purification types? I don't know if there were as many options for water purification when Kevin proposed this. As it stands, boiling, the water purification tablets, charcoal water filter and the electronic water filter all would deal with biological contaminants, but only a distillation system like a still or a solar distiller would consistently separate the chemical contaminants from polluted water. Some chemicals have a lower boiling point than water, so even those wouldn't be removed IRL, but we might handwave that issue. |
This issue has been mentioned on Cataclysm: Dark Days Ahead. There might be relevant details there: https://discourse.cataclysmdda.org/t/why-are-swamps-in-this-game-filled-with-salt-water/25349/6 |
There's really no reason not to implement this now, it should be pretty trivial (to start on the framework, at least) |
I was requested to add some implementation details here, so here are some general thoughts. Let me know here or on discord if you're interested and want more implementation talk.
|
Thinking through some more technical/implementation details.
flowchart LR
cloudy_water -->|filter| water -->|sterilize| sterilized_water -->|distill| clean_water
sterilized_water -->|time unsealed| water
clean_water -->|time unsealed| water
water -->|distill| clean_water
I think it's reasonable to assume a survivor would have a pretty good idea of what water is how safe to drink. Drinking from a river, or puddle in the dirt? Probably not great. Drinking from a toilet tank? ehhh if it's been a few months it'll probably look pretty yucky. So I don't think it's worth trying to hide the particulate/biological contaminant status of water from the player behind a test kit—especially as such test kits are not reasonably craftable by a survivor, so they'd be a consumable resource. I could see it being interesting/fun to have certain chemical contaminants be undetectable without a test kit, e.g. radiological or other contaminants leached from a toxic waste dump, perhaps with the possibility of causing mutations if you drink too much? [Edited to add a line from water --> clean_water via distillation without sterilization, as distillation also removes contaminants.] |
I've been looking through the current system for water contamination, wanted to note down what's currently there to capture existing thought. Whether or not we want to preserve any of this behavior, we should at least know what we're replacing :) How does water become contaminated?The definition for water doesn't include anything pertaining to contamination, so how does it become contaminated?
What are the effects of poison?
|
My feeling on the existing system is that it is fairly incoherent and doesn't provide that much interesting play. Water from different sources will have different likelihoods of poisoning you, but in a quite opaque-to-the-player way. It's fairly easy to purify water for drinking, so most players group all unclean water together as "not safe to drink" regardless of its source, which flattens all the mechanics described above about source location. I propose we actually flatten the mechanics and make the different contamination levels more visible to the player.
I think this is a bit of a different vision from what others proposed in that there's less hidden information about contaminants, rather than more. But I think this system makes the underlying mechanics more visible and thus more interesting to the player. I think I have enough here to start working on a PR, but I'll wait a few days to see if there's comment on this direction before going ahead with the work. |
Throwing a few ideas here. 'Visibly unclean water' ( 'Visibly clean but risky water' (Just called
'Potable water' (Current 'Distilled water' Then there's the problem with commercial bottled water, currently there's sealed bottles of This would give you 4 or 5 types of water: |
I'm currently trying to finish up #71971, which reworks the behaviour of water purification tablets (mostly so that they can no longer any amount of water instantly). The aquatabs you reference are also the ones I based the new version off of. The system in that PR when you use the tablets is water->water_purifying (wait 40 minutes)->water_clean. |
@XygenSS I'm in agreement. Perhaps instead of "sterilized water" being the new thing, we use "clean water" to mean "water that is guaranteed safe to drink" (i.e. it's been sterilized), and introduce a new type for "bottled water" / "pure water" (maybe "spring water"?) that's more or less the same as mineral water. @ZeroInternalReflection thanks for the PR reference, agreed that the tabs should be usable to sterilize murky water as well. I'm not sure about how that works with something like Aquatabs, if it takes longer and/or uses more tablets that should be relatively easy to model. Also, if we go with the suggestion from @XygenSS to make "clean water" mean "sterilized water", then your PR shouldn't need any JSON changes at all in that regard :) |
So here's the new transition graph, quite a bit simpler. flowchart LR
water_murky -->|filter| water -->|sterilize| water_clean
water_clean -->|time unsealed| water
Pre-Cata bottled water would become |
That's one thing I forgot to mention in my note above. The specific tablet I'm basing things off of calls for 1 tablet/L, or, if the water is cloudy or <4C, 2 tablets/L. (That's the Canadian website, but I believe the same tablet is sold in the US. The US website is just substantially more annoying) That's a check that would need to happen in the iuse function, where after the player selects the water, we check "is it murky? Is it cold? Then we need bonus tablets" It looks like the timeline/other instructions are the same, which is good because different processing times on water_purifying would probably be annoying. |
Clean water/purified for sterilized/boiled water seems good enough for me. Maybe tap water for pre-cata water? Then add those to those heaters and other places. Would also differentiate from the mineral bottled water we have now. |
Fungal spores. If I ever met them in real life. I'd boil water ten times. Remind me how the survivor interacts with the blob? Which is contained in the water. Did he gain immunity or was he lucky to survive? flowchart LR
ocean --> ocean_shallow_water --> |always| salt_water_murky
swamp --> swamp_shallow_water -->|always| salt_water_murky
ocean --> ocean_deep_water --> |always| salt_water
ocean --> ocean_submerced_salt_water --> |always| salt_water
swamp --> swamp_deep_water -->|always| salt_water
swamp --> swamp_murky_shallow_water -->|always| water_murky
puddle ---> |always| water_murky
pool --> pool_water -->|chance? | water_murky
pool_water --> |chance? | water
pond --> pond_shallow_water --> |always| water_murky
pond --> pond_deep_water --> |always?| water_murky
fishing_pond --> fishing_pond_shallow_water --> |always| water_murky
fishing_pond --> fishing_pond_deep_water --> |always?| water_murky
stream --> stream_flowing_shallow_water -->|always?| water_murky
stream --> stream_shallow_water -->|always| water_murky
lakes --> lakes_shallow_water --> |always| water_murky
lakes --> lakes_deep_water --> |always| water_murky
lakes --> lakes_bulkhead --> |always| water_murky
lakes --> lakes_flowing_shallow_water --> |always| water
lakes --> lakes_flowing_deep_water --> |always| water
lakes --> lakes_submerced_water --> |always| water
river --> river_flowing_shallow_water --> |always?| water
river --> river_flowing_deep_water --> |always| water
sewer ---> sewage
sewage_treatment_plant --> STP_sewage --> sewage
sewage_treatment_plant --> STP_pool_water --> |always| water_murky
sewage_treatment_plant --> STP_shallow_pool_water --> |always| water_murky
natural_spring -->natural_spring_shallow_water --> |always| water
natural_spring -->natural_spring_deep_water --> |always| water_clean
water_heater --->|always| water_clean
hot_spring -->hot_spring_water --> |always ?| water_clean
There are still random encounters (?) with the ponds:
And I'm probably forgetting something. |
flowchart LR
water_clean -->|time unsealed| water
water_murky -->|filter| water -->|sterilize| water_clean
water -->|Distillation| distilled_water
salt_water_murky --> |???| salt_water --> |Distillation| distilled_water --> |mineralization| water_clean
salt_water --> |Electrodialysis| water
salt_water --> |Freeze–thaw| water
As for electrodialysis, it would be best to check with those who understand. UPD. My opinion. I'm against spoiling clean water. Because it will lead to additional lags. Based on the topic: #71419 (comment) But that's not relevant to the topic. |
Mycus-infected water and how to render it safe would be a cool mechanic but IMO out of scope for now. Mycus infestations are pretty regional, both in lore and ingame, there is little to no sign that mycus spores are spread everywhere. (real, non-anomalous fungal spores are everywhere, but that's just ordinary business and nothing our immune systems can handle... most of the time)
Every living thing on Earth is contaminated with Blob including all survivors, some kept their sanity, some went feral, some recovered, but all of them including the survivor will zombify when killed. The blob infection inside the survivor is what drives mutations as well |
I'm talking about the blob being in the water. If a survivor drinks this water, will they mutate further? In other words, is it necessary to add a small amount of mutagens to the water? |
No, mutagen is a specific thing. Drinking more blob when you're already blobbed does nothing |
Btw @nornagon - Per Kevin in discord on the topic of the survivor distilling water per-recipe, "No that's not a remotely sensible thing to do, distillation can take a very long time and is very good at being run in big batches." So adding RO/DI water or distilled water is greenlit it seems. |
@XygenSS Yeah, RO/DI is a good idea for a followup, but this issue is mainly about collecting water for consumption, so I'll leave that for later. @IdleSol I hadn't gotten to thinking about salt water, I think the only reasonable way for a survivor to convert salt water to drinkable water is through distillation, so that can maybe happen when we implement RO/DI water. Distilling murky salt water should be fine and directly produce distilled water; any particulate matter will remain in the undistilled portion. I'm not sure about freeze-thaw or electrodialysis for removing salt from water; I'm not familiar with those methods. As for mineralization of distilled water, how do you imagine that happening? What's the process for that? And regards rot processing, I don't think the fact that it's currently under-optimized is a good reason not to have clean water spoil. The performance problems seem solvable :) |
Think of it as a starting point. The main sources encountered in the game. Variants of tiles for these sources and my variant, what water can be taken from them. It can be simplified if necessary. I was under the assumption that you might want to make different water for different sources. So I added the name of the source to the name of the tile.
https://en.wikipedia.org/wiki/Desalination#Freeze–thaw It's more like content for labs and treatment plants. Maybe for oceanfront buildings, ships. I doubt it would be found in a garage. Freezing and thawing of water. In the simplest case, it can be used for rough water purification. That is to turn murky water into water. It does not remove parasites or poisons. Based on the fact that ice begins to form around impurities. The main thing is to filter it in time.
There's a patent. Stumbled across it while looking for ways to do it. https://patents.google.com/patent/RU2616658C1/en Fundamentally possible, with some simplifications and assumptions. Take salt water from the ocean and mix it with distilled water. Some scientific instruments are needed. P.S. I apologize for the quality of the text. |
For something that's pretty central to survival, water purification is quite haphazard.
Some cleanups we can do:
To be more concrete, I'm proposing:
New Items:
cloudy water (obviously dirty, probably unsafe, from rivers)
toxic water (obviously dirty water from an obviously dangerous source)
sterilized water (flat or chemical-tasting water, biologically safe, output of boiling or chemical purification, lower morale boost than clean water)
water test kit (item used to detect chemical contamination in water)
New item attributes:
bio_contamination
chem_contamination
Code changes:
Enhancing recipe code to copy contamination from inputs to output
Enhance recipes to indicate whether they transfer contamination
Item changes:
Let iodine be used to sterilize (percent chance?) water.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The text was updated successfully, but these errors were encountered: