DIFF

ActionPickupChicken.c

//!DEPRECATED
class ActionPickupChicken: ActionInteractBase
{
	void ActionPickupChicken()
	{
		m_Text = "#take";
	}
	
	override typename GetInputType()
	{
		return ContinuousInteractActionInput;
	}
	
	override void CreateConditionComponents()  
	{
		m_ConditionItem = new CCINone;
		m_ConditionTarget = new CCTNone;
	}

	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{
		if ( player.GetCommand_Vehicle() )
			return false;
		
		Animal_GallusGallusDomesticus chicken;
		if ( Class.CastTo( chicken, target.GetObject() ) )
		{
			return !chicken.IsAlive();
		}
		return false;
	}

	override void OnExecuteServer( ActionData action_data )
	{
		// We will switch the item
		Animal_GallusGallusDomesticus targetChicken = Animal_GallusGallusDomesticus.Cast( action_data.m_Target.GetObject() );
		if ( targetChicken )
		{
			DeadChicken_ColorBase deadChicken = DeadChicken_ColorBase.Cast( action_data.m_Player.GetHumanInventory().CreateInHands( targetChicken.GetDeadItemName() ) );
			
			if ( deadChicken == null )
			{
				deadChicken = DeadChicken_ColorBase.Cast( action_data.m_Player.GetHumanInventory().CreateInInventory( targetChicken.GetDeadItemName() ) );
			
				if ( deadChicken == null )
					deadChicken = DeadChicken_ColorBase.Cast( g_Game.CreateObjectEx( targetChicken.GetDeadItemName(), targetChicken.GetPosition(), ECE_PLACE_ON_SURFACE, RF_ORIGINAL ) );
			}
			targetChicken.Delete();
		}
	}
};