DIFF

ActionClose.c

class ActionClose: ActionSingleUseBase
{
	void ActionClose()
	{
		m_Text = "#close";
	}
	
	override void CreateConditionComponents()  
	{
		m_ConditionItem = new CCINonRuined;
		m_ConditionTarget = new CCTNone;
	}

	override bool HasTarget()
	{
		return false;
	}

	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{
		if ( item && item.IsOpen() ) 
		{
			return true;
		}
		return false;
	}

	//setup
	override bool SetupAction( PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
	{	
		if( super.SetupAction( player, target, item, action_data, extra_data ) )
		{
			SetCloseAnimation( item );
			
			return true;
		}
		
		return false;
	}
	
	void SetCloseAnimation( ItemBase item )
	{
		switch( item.Type() )
		{
			case Compass:
				m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_CLOSEITEM_ONCE;
				break;
			case TelescopicBaton:
				m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
				break;
		}
	}
	
	override void OnExecuteServer( ActionData action_data )
	{
		action_data.m_MainItem.Close();
	}
};