Cataclysm-dda: Can't fill container with water of different temperatures

Created on 17 Nov 2020  路  8Comments  路  Source: CleverRaven/Cataclysm-DDA

Game version:
Build #11168

Operating system:
Windows 10 64-bit

Tiles or curses:
Tiles

Mods active:
Disable NPC Needs
No Fungal Monsters
SpeedyDex
Stats Through Skills

Expected behavior

Container fills with two types of water and perhaps averages the temperatures.

Actual behavior

Option to unload water into container does not show up if container has different temperature water than what you're trying to unload.

Steps to reproduce the behavior

Fill any portable container partially with water (cold).
Attempting to further fill it with anything but water (cold) is impossible.

(S1 - Need confirmation) <Bug>

All 8 comments

The (U) Unload menu the option is there.

Pouring water (cold) into bottle with normal water:
unload

Latest experimental build 11168.

Confirmed in 0.E-7587-g8d87f156b9 - however, I am not convinced the temperature has anything to do with it.

In my inventory I have some clean water (cold) in a gallon jug, and some clean water (not cold) in a plastic bottle:

image

The gallon jug has only one 0.25L serving of clean water (cold), plenty of room for more:

image

When I select the clean water (plastic bottle) and Unload, choosing to "Pour into a container":

image

The only container I can put it in is my empty plastic bottle. The gallon jug of clean water is not available, despite having enough remaining volume:

image

However, if I wait an hour until all the water is the same temperature, I still cannot Unload the plastic bottle's water into the gallon jug. And if I put them both in a refrigerator until they are both (cold), even then I cannot combine them into the gallon jug.

Edit On further testing, I am surprised to see this bug only seems to affect clean water. If I use salt water instead, I can combine them into a gallon jug via Unload, regardless of temperature. The same is true of tomato juice.

Edit again And now I may be going mad, because after juggling all these liquids around in my RV's minifridge, I can now combine multiple bottles of clean water in a single gallon jug or plastic jerrycan.

If you enable debug mode and look at the water are there any extra tags, variables or other differences on them?

Edit: Clean water from debug menu has tags "EATEN_COLD" and "NO_REPAIR". Clean water that was crafted has no such tags. The spawned clean water also shows different satiety level. The "made from" attribute is also missing from spawned water.

I don't think that kind of tag differences should ever happen.

Spawned clean water:
spawned

Cooked clean water:
cooked

The attached savegame has a reproduction case. Player has 1 sealed plastic bottle of clean water, and 2 partially-full gallon jugs of clean water:

image

If you attempt to Unload the sealed plastic bottle, neither of the gallon jugs is eligible for filling, though they have room.

Using debug mode, I can confirm that the water in the gallon jugs is EATEN_COLD and NO_REPAIR, while the water in the plastic bottle has neither of those flags.

All of the water and other liquids I have tested with were spawned from the debug menu.

Savegame .zip: water-unload.zip

Possibly related #45191

So the problem is that naturally generated liquids are different from crafted ones?

Yeah. The game asks if the 2 liquids can be stacked together. One condition it checks are the flags of the 2 items:
https://github.com/CleverRaven/Cataclysm-DDA/blob/c764d46aac54e9bf2a7a7d52ab244373e6cdd876/src/item.cpp#L972-L978
Here you can see it compares all the flags except the flags for hot, cold, or frozen. Since the debug water has extra flags, this returns false.

So to fix this, either modify this code. Or change the way debug spawning works.

After some investigation, I see that the debug-menu spawned item instances have all the item type flags explicitly added to them since #44675. The instance flags can be removed by pressing F before spawning the item, and deleting the flags:

image

When testing with liquids spawned in this way, they work as intended - hot and cold water can be mixed in the same container, since they do not have any conflicting instance flags.

Liquids spawned in the game world - water from a puddle, clean water from a water heater tank, mead or moonshine from a barrel - as well as crafted liquids, correctly have no instance "tags" shown (since the flags are inherited from the parent item type), and in all of my testing so far, can be mixed in the same container regardless of temperature.

In other words, I believe now this is working as intended, and there is no bug. Would like to know if anyone can reproduce this issue using only in-game spawned liquids, or with cleared instance flags using F from the debug item spawning screen.

Was this page helpful?
0 / 5 - 0 ratings