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();
}
}