ActionUngagTarget.c
class ActionUngagTarget: ActionContinuousBase
{
void ActionUngagTarget()
{
m_CallbackClass = ActionUncoverHeadTargetCB;
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_COVERHEAD_TARGET;
//m_FullBody = true;
m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
m_Text = "#ungag_person";
}
override void CreateConditionComponents()
{
m_ConditionItem = new CCINone;
m_ConditionTarget = new CCTMan(UAMaxDistances.DEFAULT,false);
}
override typename GetInputType()
{
return ContinuousInteractActionInput;
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
PlayerBase targetPlayer;
if (Class.CastTo(targetPlayer, target.GetObject()))
{
if (IsWearingGag(targetPlayer) && null == player.GetEntityInHands())
{
return true;
}
}
return false;
}
override void OnFinishProgressServer(ActionData action_data)
{
PlayerBase ntarget = PlayerBase.Cast(action_data.m_Target.GetObject());
if (CanReceiveAction(action_data.m_Target))
{
EntityAI attachment;
Class.CastTo(attachment, ntarget.GetInventory().FindAttachment(InventorySlots.MASK));
if (attachment && attachment.GetType() == "MouthRag")
{
UngagSelfLambda lamb = new UngagSelfLambda(attachment, "Rag", action_data.m_Player);
lamb.SetTransferParams(true, true, true, false, 1);
action_data.m_Player.ServerReplaceItemElsewhereWithNewInHands(lamb);
}
}
}
bool IsWearingGag(PlayerBase player)
{
EntityAI attachment;
Class.CastTo(attachment, player.GetInventory().FindAttachment(InventorySlots.MASK));
if (attachment && attachment.GetType() == "MouthRag")
{
return true;
}
return false;
}
};