183 {
184 string zone_name;
185
186 Object target_object = target.GetObject();
187 if ( target_object && target_object.CanUseConstruction() )
188 {
189 string part_name = target_object.GetActionComponentName( target.GetComponentIndex() );
190
192 Construction construction = base_building.GetConstruction();
193 ConstructionPart construction_part = construction.GetConstructionPart( part_name );
194
195 if ( construction_part )
196 {
197
199 {
200
201 if ( camera_check )
202 {
204 {
206 {
207 return false;
208 }
209 }
210 }
211
212
213 DamageSystem.GetDamageZoneFromComponentName(base_building,part_name,zone_name);
214 if ( base_building.GetHealthLevel(zone_name) < GameConstants.STATE_WORN || base_building.GetHealthLevel(zone_name) == GameConstants.STATE_RUINED )
215 {
216 return false;
217 }
218
219
220 if ( !construction.HasMaterials(part_name,true) )
221 {
222 return false;
223 }
224
225 ConstructionActionData construction_action_data = player.GetConstructionActionData();
227 return true;
228 }
229 }
230 }
231
232 return false;
233 }
void Construction(BaseBuildingBase parent)
override bool IsFacingCamera(string selection)
override bool IsFacingPlayer(PlayerBase player, string selection)
override bool HasProperDistance(string selection, PlayerBase player)
void SetTargetPart(ConstructionPart target_part)
proto native CGame GetGame()