11 static int CYCLES = 4;
24 override void CreateConditionComponents()
30 override void OnActionInfoUpdate(
PlayerBase player, ActionTarget target,
ItemBase item )
36 override bool CanBeUsedLeaning()
44 if (player.GetBrokenLegs() ==
eBrokenLegs.BROKEN_LEGS)
50 override bool ActionConditionContinue( ActionData action_data )
52 return DestroyCondition( action_data.m_Player, action_data.m_Target, action_data.m_MainItem ,
false );
55 override void OnFinishProgressServer( ActionData action_data )
58 Construction construction = base_building.GetConstruction();
62 if ( construction.CanDestroyPart( construction_part.GetPartName() ) )
65 string part_name = construction_part.GetPartName();
67 DamageSystem.GetDamageZoneFromComponentName(base_building,part_name,zone_name);
71 base_building.AddHealth(zone_name,
"Health",-(base_building.GetMaxHealth(zone_name,
"")/CYCLES));
72 if ( base_building.GetHealth(zone_name,
"Health") < 1 )
73 construction.DestroyPartServer( action_data.m_Player, construction_part.GetPartName(),
AT_DESTROY_PART );
77 construction.DestroyPartServer( action_data.m_Player, construction_part.GetPartName(),
AT_DESTROY_PART );
81 action_data.m_MainItem.DecreaseHealth(
UADamageApplied.DESTROY,
false );
87 Object target_object = target.GetObject();
88 if ( target_object && target_object.CanUseConstruction() )
90 string part_name = target_object.GetActionComponentName( target.GetComponentIndex() );
93 Construction construction = base_building.GetConstruction();
94 ConstructionPart construction_part = construction.GetConstructionPartToDestroy( part_name );
96 if ( construction_part )
99 if ( !player.GetInputController().CameraIsFreeLook() &&
IsInReach(player, target,
UAMaxDistances.DEFAULT) && !player.GetInputController().CameraIsFreeLook() )
126 return " destroyed " + action_data.m_Target.GetObject().GetDisplayName() +
" with " + action_data.m_MainItem.GetDisplayName();