class ActionDeconstructShelter : ActionContinuousBase { void ActionDeconstructShelter() { m_CallbackClass = ActionPackTentCB; m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW; m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DEPLOY_2HD; m_FullBody = true; m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH; m_Text = "#pack_tent"; } override void CreateConditionComponents() { m_ConditionTarget = new CCTCursor(UAMaxDistances.DEFAULT); m_ConditionItem = new CCINone(); } override typename GetInputType() { return ContinuousInteractActionInput; } override bool HasProgress() { return true; } override bool HasAlternativeInterrupt() { return true; } override bool ActionConditionContinue(ActionData action_data) { return true; } override ActionData CreateActionData() { PlaceObjectActionData action_data = new PlaceObjectActionData(); return action_data; } override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item) { if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS) return false; Object targetObject = target.GetObject(); if (targetObject) { ShelterBase shelter = ShelterBase.Cast(targetObject); return shelter && shelter.CanBePacked(); } return false; } override void OnStart(ActionData action_data) { super.OnStart(action_data); action_data.m_Player.TryHideItemInHands(true); } override void OnEnd(ActionData action_data) { super.OnEnd(action_data); action_data.m_Player.TryHideItemInHands(false); } override void OnFinishProgressServer(ActionData action_data) { ShelterBase shelter = ShelterBase.Cast(action_data.m_Target.GetObject()); if (shelter) shelter.Deconstruct(); } override string GetAdminLogMessage(ActionData action_data) { return " packed " + action_data.m_Target.GetObject().GetDisplayName() + " with Hands "; } }