Page MenuHomeFeedback Tracker

[DayZ Experimental] Drinking from well causes sickness unless using a container
Closed, ResolvedPublic

Description

On the last 2 experimental versions my character gets sick no matter what I drink, well water, pipsi, etc. I did some testing to try to see what is going on. This seems broken?

Tests on version 1.04.151915 but behavior seems same on 1.04.151959 (did 1 iteration of Test 2 and got sick after about 1m 45s)

Test 1 - drink from well, walk around
sick after 1m45s - reproduced 3 times

Test 2 - drink from well, crouch
sick after 1m45s - reproduced 3 times

Test 3 - fill bottle from well, drink 1 bottle
not sick after 15 minutes

Test 4 - fill bottle from well, drink 2 bottles
not sick after 15 minutes

Test 5 - "disinfect" hands with tincture, then drink from well 2 circles
sick after 1m 45s - reproduced 3 times

Test 6 - "disinfect" gloves with tincture, then drink from well 2 circles wearing gloves
sick after 1m 45s - did test once

Details

Severity
Tweak
Resolution
Open
Reproducibility
Always
Operating System
Windows 7
Category
General
Steps To Reproduce

I experienced this on official hive and was able to reproduce using offline mode so used that for testing.

Changed mission so I would login by well in Olsha and had empty water bottle for testing
// near Olsha
player_pos = "13366.0 0 12866.0";

.....

itemEnt = itemTop.GetInventory().CreateInInventory("WaterBottle");
if ( Class.CastTo(itemBs, itemEnt ) )

itemBs.SetQuantity(0);

Steps

  1. Start offline mode
  2. Drink from well as noted in test steps

Event Timeline

wriley created this task.Jun 24 2019, 7:02 PM
Futro added a subscriber: Futro.Jun 24 2019, 7:11 PM

Could possibly be all wells?, I got sick from drinking directly from a well at Kamensk. On the exp branch before latest patch release. Took 2 charcoal tabs and 2 tetracycline and resolved it.

Could possibly be all wells?

It actually is happening with _ALL_ wells.

Supposed to be fixed in the patch they released today .. havent tried wells yet

Supposed to be fixed in the patch they released today .. havent tried wells yet

As noted in the bug description it's also happening on today's build

wriley added a comment.EditedJun 25 2019, 3:45 AM

I'm not sure what the intended behavior is supposed to be but I think I found why using a container makes it safe to drink from a well.

In 4_World/Classes/UserActionsComponent/ActionComponents/CAContinuousFill.c if filling a container then agents are set to false if filling from a well

if(action_data.m_Target.GetObject() && action_data.m_Target.GetObject().IsWell())
			{
				inject_agents = false;
			}

If drinking from a well directly then cholera is added as an agent even if no bloody hands in ./4_World/Entities/ManBase/PlayerBase.c

bool Consume(ItemBase source, float amount, EConsumeType consume_type )
	{
		PluginTransmissionAgents plugin = PluginTransmissionAgents.Cast( GetPlugin(PluginTransmissionAgents) );
		int agents;
		if( consume_type == EConsumeType.ENVIRO_POND || consume_type == EConsumeType.ENVIRO_WELL )
		{
			agents = agents | eAgents.CHOLERA;
			m_PlayerStomach.AddToStomach(Liquid.GetLiquidClassname(LIQUID_WATER), amount, 0 , agents );

but cholera is also added if you have bloody hands in ./4_World/Classes/UserActionsComponent/Actions/Continuous/ActionDrinkWellContinuous.c

override void OnEndAnimationLoopServer( ActionData action_data )
	{
		if(action_data.m_Player.HasBloodyHands())
		{
			action_data.m_Player.InsertAgent(eAgents.CHOLERA, 1);
		}
	}
wriley renamed this task from Drinking from well causes sickness unless using a container to [DayZ Experimental] Drinking from well causes sickness unless using a container.Jun 25 2019, 3:51 AM
wriley updated the task description. (Show Details)

Looks like this is fixed in 1.04.151974

bool Consume(ItemBase source, float amount, EConsumeType consume_type )
	{
		PluginTransmissionAgents plugin = PluginTransmissionAgents.Cast( GetPlugin(PluginTransmissionAgents) );
		int agents;
		if( consume_type == EConsumeType.ENVIRO_POND || consume_type == EConsumeType.ENVIRO_WELL )
		{
			if ( consume_type == EConsumeType.ENVIRO_POND )
			{
				agents = agents | eAgents.CHOLERA;
				//plugin.TransmitAgents(NULL, this, AGT_WATER_POND, amount);
			}
			m_PlayerStomach.AddToStomach(Liquid.GetLiquidClassname(LIQUID_WATER), amount, 0 , agents );
			
			
			return true;
		}
Geez closed this task as Resolved.Jul 1 2019, 3:13 PM
Geez claimed this task.