39 override void CreateConditionComponents()
45 override void OnActionInfoUpdate(
PlayerBase player, ActionTarget target,
ItemBase item )
51 override string GetText()
59 if ( constrution_part )
61 return "#dismantle" +
" " + constrution_part.GetName();
68 override bool CanBeUsedLeaning()
73 override bool CanBeUsedInFreelook()
80 if ( player.IsPlacingLocal() )
84 if (player.GetBrokenLegs() ==
eBrokenLegs.BROKEN_LEGS)
90 override bool ActionConditionContinue( ActionData action_data )
92 return DismantleCondition( action_data.m_Player, action_data.m_Target, action_data.m_MainItem ,
false ) && action_data.m_Player.m_MovementState.m_iStanceIdx !=
DayZPlayerConstants.STANCEIDX_PRONE;
95 override void OnFinishProgressServer( ActionData action_data )
98 Construction construction = base_building.GetConstruction();
102 if ( construction.CanDismantlePart( construction_part.GetPartName(), action_data.m_MainItem ) )
105 construction.DismantlePartServer( action_data.m_Player, construction_part.GetPartName(),
AT_DISMANTLE_PART );
108 action_data.m_MainItem.DecreaseHealth(
UADamageApplied.DISMANTLE,
false );
113 override bool SetupAction(
PlayerBase player, ActionTarget target,
ItemBase item, out ActionData action_data,
Param extra_data = NULL )
115 if ( super.SetupAction( player, target, item, action_data, extra_data ) )
127 switch ( item.Type() )
146 if (player && !player.IsPlacingLocal() && !player.IsPlacingServer())
148 Object targetObject = target.GetObject();
150 if (targetObject && targetObject.CanUseConstruction())
153 if (
Class.CastTo(targetEntity, targetObject) && (targetEntity.FindAttachmentBySlotName(
"Att_CombinationLock") || targetEntity.FindAttachmentBySlotName(
"Material_FPole_Flag")) )
156 string partName = targetObject.GetActionComponentName(target.GetComponentIndex());
159 Construction construction = baseBuilding.GetConstruction();
160 ConstructionPart constructionPart = construction.GetConstructionPartToDismantle(partName, item);
162 if (constructionPart)
166 if (constructionPart.IsGate() && baseBuilding.
IsOpened())
170 bool checked =
false;
172 if (constructionPart.IsBase())
209 string message =
string.Format(
"Dismantled %1 from %2 with %3", construction_part.GetName(), action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName() );