DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionRepairVehiclePartBase.c
См. документацию.
1class RepairVehiclePartActionReciveData : ActionReciveData
2{
4}
5
6class RepairVehiclePartActionData : ActionData
7{
9}
10
18
20{
21 protected string m_CurrentDamageZone; // needs to be assigned in action condition so it can be properly written to context
22
28
29 override void OnFinishProgressServer(ActionData action_data)
30 {
31 AdjustVehicleHealthServer(action_data);
32 AdjustItemQuantityServer(action_data);
33 }
34
35 protected void AdjustVehicleHealthServer(ActionData action_data)
36 {
37 Object tgObject = action_data.m_Target.GetObject();
38
39 string damageZone = RepairVehiclePartActionData.Cast(action_data).m_DamageZone;
40 if (!GetGame().IsMultiplayer())
41 damageZone = m_CurrentDamageZone;
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 {
55 vehicle.SetHealth(damageZone, "", (zoneMax * GameConstants.DAMAGE_RUINED_VALUE) + randomValue);
56 break;
58 vehicle.SetHealth(damageZone, "", (zoneMax * GameConstants.DAMAGE_BADLY_DAMAGED_VALUE) + randomValue);
59 break;
61 vehicle.SetHealth(damageZone, "", (zoneMax * GameConstants.DAMAGE_DAMAGED_VALUE) + randomValue);
62 break;
63 }
64 }
65 }
66 }
67
68 protected void AdjustItemQuantityServer(ActionData action_data)
69 {
70 if (action_data.m_MainItem.HasQuantity())
71 {
72 if (action_data.m_MainItem.GetQuantity() > 1)
73 {
74 int qnt = action_data.m_MainItem.GetQuantity() - action_data.m_MainItem.GetQuantityMax() * 0.25;
75 action_data.m_MainItem.SetQuantity(qnt);
76 }
77 else
78 {
79 action_data.m_MainItem.Delete();
80 }
81 }
82 }
83
85 {
86 RepairVehiclePartActionData actionData = new RepairVehiclePartActionData();
87 return actionData;
88 }
89
90 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
91 {
92 super.WriteToContext(ctx, action_data);
93 RepairVehiclePartActionData repairActionData;
94
95 if (HasTarget() && Class.CastTo(repairActionData, action_data))
96 {
97 repairActionData.m_DamageZone = m_CurrentDamageZone;
98 ctx.Write(repairActionData.m_DamageZone);
99 }
100 }
101
102 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
103 {
104 if (!action_recive_data)
105 {
106 action_recive_data = new RepairVehiclePartActionReciveData();
107 }
108
109 super.ReadFromContext(ctx, action_recive_data);
110 RepairVehiclePartActionReciveData recieveDataRepair = RepairVehiclePartActionReciveData.Cast(action_recive_data);
111
112 if (HasTarget())
113 {
114 string zone;
115 if (!ctx.Read(zone))
116 {
117 return false;
118 }
119
120 recieveDataRepair.m_DamageZoneRecived = zone;
121 }
122
123 return true;
124 }
125
126 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
127 {
128 super.HandleReciveData(action_recive_data, action_data);
129
130 RepairVehiclePartActionReciveData recieveDataRepair = RepairVehiclePartActionReciveData.Cast(action_recive_data);
131 RepairVehiclePartActionData.Cast(action_data).m_DamageZone = recieveDataRepair.m_DamageZoneRecived;
132 }
133};
ActionBase ActionData
Определения ActionBase.c:30
RepairTentActionReciveData m_DamageZone
bool HasTarget()
Определения ActionBase.c:244
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
override void CreateConditionComponents()
Определения ActionRepairVehiclePartBase.c:23
override void OnFinishProgressServer(ActionData action_data)
Определения ActionRepairVehiclePartBase.c:29
void AdjustItemQuantityServer(ActionData action_data)
Определения ActionRepairVehiclePartBase.c:68
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionRepairVehiclePartBase.c:126
void AdjustVehicleHealthServer(ActionData action_data)
Определения ActionRepairVehiclePartBase.c:35
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionRepairVehiclePartBase.c:90
override ActionData CreateActionData()
Определения ActionRepairVehiclePartBase.c:84
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionRepairVehiclePartBase.c:102
override void CreateActionComponent()
Определения ActionRepairVehiclePartBase.c:13
Определения CCINonRuined.c:2
Определения CCTCursor.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения constants.c:659
Определения EnMath.c:7
Определения ObjectTyped.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
Base native class for all motorized wheeled vehicles.
Определения Boat.c:28
const float REPAIR
Определения ActionConstants.c:113
const float BASEBUILDING_REPAIR_FAST
Определения ActionConstants.c:67
Определения ActionConstants.c:28
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
const float DAMAGE_BADLY_DAMAGED_VALUE
Определения constants.c:861
const float DAMAGE_RUINED_VALUE
Определения constants.c:862
const float DAMAGE_DAMAGED_VALUE
Определения constants.c:860
const int STATE_RUINED
Определения constants.c:846
const int STATE_WORN
Определения constants.c:849
const int STATE_DAMAGED
Определения constants.c:848
const int STATE_BADLY_DAMAGED
Определения constants.c:847
static float RandomFloatInclusive(float min, float max)
Returns a random float number between and min [inclusive] and max [inclusive].
Определения EnMath.c:106
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.