36 {
37 Object tgObject = action_data.m_Target.GetObject();
38
39 string damageZone = RepairVehiclePartActionData.Cast(action_data).m_DamageZone;
42
43 if (tgObject && damageZone != "")
44 {
45 Transport vehicle = Transport.Cast(tgObject);
46 if (vehicle)
47 {
48 int newDmgLevel = Math.Clamp(vehicle.GetHealthLevel(damageZone) - 1, GameConstants.STATE_WORN, GameConstants.STATE_RUINED);
49 float zoneMax = vehicle.GetMaxHealth(damageZone, "");
50 float randomValue = Math.RandomFloatInclusive(zoneMax * 0.05, zoneMax * 0.15);
51
52 switch (newDmgLevel)
53 {
54 case GameConstants.STATE_BADLY_DAMAGED:
55 vehicle.SetHealth(damageZone, "", (zoneMax * GameConstants.DAMAGE_RUINED_VALUE) + randomValue);
56 break;
57 case GameConstants.STATE_DAMAGED:
58 vehicle.SetHealth(damageZone, "", (zoneMax * GameConstants.DAMAGE_BADLY_DAMAGED_VALUE) + randomValue);
59 break;
60 case GameConstants.STATE_WORN:
61 vehicle.SetHealth(damageZone, "", (zoneMax * GameConstants.DAMAGE_DAMAGED_VALUE) + randomValue);
62 break;
63 }
64 }
65 }
66 }
string m_CurrentDamageZone
proto native CGame GetGame()