ActionCookOnStick.c
class ActionCookOnStickCB : ActionContinuousBaseCB
{
private const float COOKING_ON_STICK_UPDATE_TIME = 1;
override void CreateActionComponent()
{
m_ActionData.m_ActionComponent = new CAContinuousTimeCooking( COOKING_ON_STICK_UPDATE_TIME );
}
};
class ActionCookOnStick: ActionContinuousBase
{
void ActionCookOnStick()
{
m_CallbackClass = ActionCookOnStickCB;
m_CommandUID = DayZPlayerConstants.CMD_GESTUREFB_CAMPFIRE;
m_FullBody = true;
m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT;
m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_LOW;
m_LockTargetOnUse = false;
m_Text = "#cook_on_stick";
}
override void CreateConditionComponents()
{
m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
m_ConditionItem = new CCINonRuined;
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
FireplaceBase fireplace_target = FireplaceBase.Cast(target.GetObject());
Object targetObject = target.GetObject();
Edible_Base item_on_stick = Edible_Base.Cast(item.GetAttachmentByType(Edible_Base));
if (fireplace_target && fireplace_target.CanCookOnStick() && item_on_stick && item_on_stick.CanBeCookedOnStick())
{
//fireplace
if (fireplace_target.IsBaseFireplace())
{
Fireplace fireplace = Fireplace.Cast(fireplace_target);
if (fireplace && fireplace.IsOven())
return false;
if (fireplace_target.CanCookOnStick())
return true;
}
//fireplace indoor
if (fireplace_target.IsFireplaceIndoor())
{
if (fireplace_target.CanCookOnStick())
return true;
}
}
return false;
}
override void OnEndServer(ActionData action_data)
{
super.OnEndServer(action_data);
ItemBase stick = action_data.m_MainItem;
Edible_Base item_on_stick = Edible_Base.Cast(stick.GetAttachmentByType(Edible_Base));
if (item_on_stick)
{
item_on_stick.MakeSoundsOnClient(false);
}
}
};