ActionConsume.c
class ActionConsumeCB : ActionContinuousBaseCB
{
override void CreateActionComponent()
{
m_ActionData.m_ActionComponent = new CAContinuousQuantityEdible(UAQuantityConsumed.DEFAULT, UATimeSpent.DEFAULT);
}
};
class ActionConsume: ActionContinuousBase
{
void ActionConsume()
{
m_CallbackClass = ActionConsumeCB;
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_EAT;
m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_EAT;
m_Text = "#eat";
}
override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
{
if (!super.ActionCondition(player, target, item))
return false;
ConsumeConditionData dta = new ConsumeConditionData(player,item);
return player.CanEatAndDrink() && player.CanConsumeFood(dta) && item.CanBeConsumed(dta);
}
override bool HasProneException()
{
return true;
}
override bool HasTarget()
{
return false;
}
override void CreateConditionComponents()
{
m_ConditionItem = new CCINotRuinedAndEmpty();
m_ConditionTarget = new CCTSelf();
}
override void OnEndServer(ActionData action_data)
{
super.OnEndServer(action_data);
ItemBase item = action_data.m_MainItem;
if (item && item.GetQuantity() <= 0.01)
{
item.SetQuantity(0);
}
else if (item && GetProgress(action_data) > 0)
{
// we don't want to inject an agent into an empty container
PlayerBase player = action_data.m_Player;
PluginTransmissionAgents plugin = PluginTransmissionAgents.Cast(GetPlugin(PluginTransmissionAgents));
plugin.TransmitAgents(player, item, AGT_UACTION_TO_ITEM);
}
}
};