ActionConsumeSingle.c
class ActionConsumeSingle : ActionSingleUseBase
{
const int DEFAULT_CONSUMED_QUANTITY = 1;
void ActionConsumeSingle()
{
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_LICKBATTERY;
m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_LICKBATTERY;
m_Text = "#eat";
}
int GetConsumedQuantity()
{
return DEFAULT_CONSUMED_QUANTITY;
}
override bool HasProneException()
{
return true;
}
override bool HasTarget()
{
return false;
}
override void CreateConditionComponents()
{
m_ConditionItem = new CCINotRuinedAndEmpty();
m_ConditionTarget = new CCTSelf();
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
ConsumeConditionData dta = new ConsumeConditionData(player,item);
return super.ActionCondition(player, target, item) && player.CanEatAndDrink() && player.CanConsumeFood(dta) && item.CanBeConsumed(dta);
}
override void OnExecuteServer(ActionData action_data)
{
PlayerBase player = action_data.m_Player;
if (player && action_data.m_MainItem)
{
PlayerConsumeData consumeData = new PlayerConsumeData();
consumeData.m_Type = EConsumeType.ITEM_SINGLE_TIME;
consumeData.m_Amount = GetConsumedQuantity();
consumeData.m_Source = action_data.m_MainItem;
consumeData.m_Agents = action_data.m_Player.GetBloodyHandsPenaltyAgents();
player.Consume(consumeData);
}
}
override void OnEndServer(ActionData action_data)
{
super.OnEndServer(action_data);
if (action_data.m_MainItem && (action_data.m_MainItem.GetQuantity() <= 0))
action_data.m_MainItem.SetQuantity(0);
}
}
//! DEPRECATED
class ActionConsumeSingleCB : ActionSingleUseBaseCB
{
override void CreateActionComponent()
{
m_ActionData.m_ActionComponent = new CASingleUseQuantityEdible(UAQuantityConsumed.DEFAULT);
}
}