DIFF

ActionPullBodyFromTransport.c

class ActionPullBodyFromTransport: ActionInteractBase
{
	void ActionPullBodyFromTransport()
	{
		m_StanceMask 	= DayZPlayerConstants.STANCEMASK_ALL;
		m_Text 			= "#pull_out_body";
	}

	override void CreateConditionComponents()  
	{
		m_ConditionItem 	= new CCINone();
		m_ConditionTarget 	= new CCTNone();
	}
	
	override bool HasProgress()
	{
		return false;
	}

	override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
	{
		PlayerBase targetPlayer = PlayerBase.Cast(target.GetObject());
		if (!targetPlayer)
			return false;
		
		if (targetPlayer.IsAlive())
			return false;
		
		IEntity parent = targetPlayer.GetParent();
		if (!parent || !parent.IsInherited(Transport))
			return false;
		
		bool found = false;
		Transport transportTarget = Transport.Cast(targetPlayer.GetParent());
		for (int i = 0; i < transportTarget.CrewSize(); ++i)
		{
			if (transportTarget.CrewMember(i) == targetPlayer)
			{
				found = true;
				break;
			}
		}
		
		return found && transportTarget.CrewCanGetThrough(i);
	}
	
	override void OnStartServer(ActionData action_data)
	{
		super.OnStartServer(action_data);
		
		DayZPlayerImplement player;
		if (!Class.CastTo(player, action_data.m_Target.GetObject()))
		{
			return;
		}
		
		player.TriggerPullPlayerOutOfVehicle();
	}
	
	override bool IsInstant()
	{
		return true;
	}
}