DIFF

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