DIFF

ActionExtinguishFireplaceByLiquid.c

class ActionExtinguishFireplaceByLiquidCB : ActionContinuousBaseCB
{
	private const float TIME_TO_REPEAT 			= 0.5;
	private const float WETNESS_GAIN_MULTIPLIER	= 1.0;
	
	override void CreateActionComponent()
	{
		m_ActionData.m_ActionComponent = new CAContinuousQuantityExtinguish(UAQuantityConsumed.FIREPLACE_LIQUID, TIME_TO_REPEAT, WETNESS_GAIN_MULTIPLIER);
		CAContinuousQuantityExtinguish.Cast(m_ActionData.m_ActionComponent).MultiplyQuantityUsed(m_ActionData.m_MainItem.GetLiquidThroughputCoef());
	}
}

class ActionExtinguishFireplaceByLiquid : ActionContinuousBase
{
	void ActionExtinguishFireplaceByLiquid()
	{
		m_CallbackClass 	= ActionExtinguishFireplaceByLiquidCB;
		m_CommandUID 		= DayZPlayerConstants.CMD_ACTIONFB_EMPTY_VESSEL;
		m_SpecialtyWeight 	= UASoftSkillsWeight.ROUGH_MEDIUM;
		m_FullBody 			= true;

		m_Text 		= "#extinguish";
	}
	
	override void CreateConditionComponents()  
	{
		m_ConditionItem 	= new CCINotRuinedAndEmpty();
		m_ConditionTarget 	= new CCTObject(UAMaxDistances.SMALL);
	}

	override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
	{
		Object targetObject = target.GetObject();
		
		if (targetObject.IsFireplace())
		{
			FireplaceBase fireplace = FireplaceBase.Cast(targetObject);
			
			if (fireplace.CanExtinguishFire() && !item.IsDamageDestroyed() && (item.GetLiquidType() & (GROUP_LIQUID_BLOOD | LIQUID_WATER | LIQUID_BEER)))
			{
				return !item.GetIsFrozen();
			}
		}
		
		return false;
	}
	
	override void OnStartAnimationLoop(ActionData action_data)
	{
		super.OnStartAnimationLoop(action_data);
		
		FireplaceBase fireplace = FireplaceBase.Cast(action_data.m_Target.GetObject());
		fireplace.SetExtinguishingState();
	}
	
	override void OnEndServer(ActionData action_data)
	{
		super.OnEndServer(action_data);
		
		FireplaceBase fireplace = FireplaceBase.Cast(action_data.m_Target.GetObject());		
		fireplace.RefreshFireState();
	}
}