ActionUncoverHeadSelf.c
class ActionUncoverHeadSelfCB : ActionContinuousBaseCB
{
override void CreateActionComponent()
{
m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.COVER_HEAD);
}
};
class ActionUncoverHeadBase: ActionContinuousBase
{
void UncoverHead(PlayerBase target, PlayerBase source)
{
EntityAI attachment;
if (Class.CastTo(attachment, target.GetInventory().FindAttachment(InventorySlots.HEADGEAR)) && attachment.GetType() == "BurlapSackCover")
{
ItemBase new_item = null;
if (!source.GetEntityInHands())
{
new_item = ItemBase.Cast(HumanInventory.Cast(source.GetInventory()).CreateInHands("BurlapSack"));
}
else
{
if (!Class.CastTo(new_item,source.GetInventory().CreateInInventory("BurlapSack")))//full inventory
{
vector m4[4];
source.GetTransformWS(m4);
InventoryLocation target_gnd = new InventoryLocation;
target_gnd.SetGround(null, m4);
new_item = ItemBase.Cast(GameInventory.LocationCreateEntity(target_gnd, "BurlapSack",ECE_IN_INVENTORY,RF_DEFAULT));
}
}
if (new_item)
{
MiscGameplayFunctions.TransferItemProperties(attachment,new_item,true,false,true);
attachment.Delete();
}
}
}
}
class ActionUncoverHeadSelf: ActionUncoverHeadBase
{
void ActionUncoverHeadSelf()
{
m_CallbackClass = ActionUncoverHeadSelfCB;
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_COVERHEAD_SELF;
m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_PRONE;
m_Text = "#uncover_head";
}
override void CreateConditionComponents()
{
m_ConditionItem = new CCINone;
m_ConditionTarget = new CCTNone;
}
override bool HasTarget()
{
return false;
}
override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
{
if ( IsWearingBurlap(player) )
return true;
return false;
}
override void OnFinishProgressServer( ActionData action_data )
{
UncoverHead(action_data.m_Player, action_data.m_Player);
}
bool IsWearingBurlap( PlayerBase player )
{
EntityAI attachment;
Class.CastTo(attachment, player.GetInventory().FindAttachment(InventorySlots.HEADGEAR));
if ( attachment && attachment.IsInherited(BurlapSackCover) )
{
return true;
}
return false;
}
};