79 {
81
82 string damageZone = RepairCarPartActionData.Cast(action_data).m_DamageZone;
83 if (!
g_Game.IsMultiplayer())
85
86 if (tgObject)
87 {
88 CarDoor carDoor = CarDoor.Cast(tgObject);
89 if (carDoor)
90 {
91 int newDmgLevel = Math.Clamp(carDoor.GetHealthLevel(damageZone) - 1, GameConstants.STATE_WORN, GameConstants.STATE_RUINED);
92 float zoneMax = carDoor.GetMaxHealth("", "");
93 float randomValue = Math.RandomFloatInclusive(zoneMax * 0.05, zoneMax * 0.15);
94
95 switch (newDmgLevel)
96 {
97 case GameConstants.STATE_BADLY_DAMAGED:
98 carDoor.SetHealth("", "", (zoneMax * GameConstants.DAMAGE_RUINED_VALUE) + randomValue);
99 break;
100
101 case GameConstants.STATE_DAMAGED:
102 carDoor.SetHealth("", "", (zoneMax * GameConstants.DAMAGE_BADLY_DAMAGED_VALUE) + randomValue);
103 break;
104
105 case GameConstants.STATE_WORN:
106 carDoor.SetHealth("", "", (zoneMax * GameConstants.DAMAGE_DAMAGED_VALUE) + randomValue);
107 break;
108
109 default:
110 break;
111 }
112
114 {
116 {
117 int qnt = action_data.
m_MainItem.GetQuantity();
118 qnt -= action_data.
m_MainItem.GetQuantityMax() * 0.25;
120 }
121 else
123 }
124 }
125 }
126 }
ref ActionTarget m_Target
string m_CurrentDamageZone
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)