Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_BaseDamageHealSupportStationComponent.c
Go to the documentation of this file.
1 [ComponentEditorProps(category: "GameScripted/SupportStation", description: "")]
3 {
4  [Attribute("SOUND_VEHICLE_REPAIR_PARTIAL", desc: "Sound effect played when heal is updated and not done. Broadcast to players. Leave empty if no sfx", category: "Heal/Repair Support Station")]
5  protected string m_sOnHealUpdateSoundEffectEventName;
6 
7  [Attribute(desc: "Sound effect played when Damage over Time is removed (Other than fire). Broadcast to players. Leave empty if no sfx", category: "Heal/Repair Support Station")]
8  protected string m_sOnDoTRemovedSoundEffectEventName;
9 
10  protected ref SCR_AudioSourceConfiguration m_OnHealUpdateAudioSourceConfiguration;
11  protected ref SCR_AudioSourceConfiguration m_OnDoTRemovedAudioSourceConfiguration;
12 
13  //------------------------------------------------------------------------------------------------
18  SCR_AudioSourceConfiguration CreateSoundAudioConfig(string soundEventName)
19  {
20  //~ Does not have audio assigned
21  if (SCR_StringHelper.IsEmptyOrWhiteSpace(m_sOnUseSoundEffectFile) || SCR_StringHelper.IsEmptyOrWhiteSpace(soundEventName))
22  return null;
23 
24  //~ Create Audio source
25  SCR_AudioSourceConfiguration audioSourceConfiguration = new SCR_AudioSourceConfiguration();
26  audioSourceConfiguration.m_sSoundProject = m_sOnUseSoundEffectFile;
27  audioSourceConfiguration.m_sSoundEventName = soundEventName;
28 
29  if (!CanMoveWithPhysics())
30  audioSourceConfiguration.m_eFlags = SCR_Enum.SetFlag(audioSourceConfiguration.m_eFlags, EAudioSourceConfigurationFlag.Static);
31  else
32  audioSourceConfiguration.m_eFlags = SCR_Enum.RemoveFlag(audioSourceConfiguration.m_eFlags, EAudioSourceConfigurationFlag.Static);
33 
34  return audioSourceConfiguration;
35  }
36 
37  //------------------------------------------------------------------------------------------------
39  SCR_AudioSourceConfiguration GetOnHealUpdateAudioConfig()
40  {
41  //~ Create Audio source if it does not yet exist
44 
46  }
47 
48  //------------------------------------------------------------------------------------------------
50  SCR_AudioSourceConfiguration GetOnDoTRemovedAudioConfig()
51  {
52  //~ Create Audio source if it does not yet exist
55 
57  }
58 }
59 
60 class SCR_BaseDamageHealSupportStationComponent : SCR_BaseSupportStationComponent
61 {
62  [Attribute("500", desc: "Max damage healed each execute. If you hold the action it will heal each time the action ends", category: "Heal/Repair Support Station", params: "0.01 inf")]
63  protected float m_iDamageHealedEachExecution;
64 
65  [Attribute("100", desc: "Supply cost for ever 'Damage Healed Each Execution' damage healed. If the left over damage is less then it will of course be cheaper with a min value of 1", category: "Heal/Repair Support Station", params: "0 inf")]
66  protected int m_iSupplyCostDamageHealed;
67 
68  [Attribute("1", desc: "The max percentage that this support station can heal scaled. 1 == 100%, This is not calculated as a whole but for each hitZone. Aka if hitZone A is less than this percentage then the heal action can be executed even if total health is more than this %", params: "0.01 1", category: "Heal/Repair Support Station")]
69  protected float m_fMaxHealScaled;
70 
71  //~ Hotfixed
72  [Attribute("0.05", desc: "Hotfix: If server then this value is added on top of the m_fMaxHealScaled. This is because there is a potential desync of around 5% between client and server. EG: client can only heal up to 20% but server up to 25% so if client things the health is 19% and server things it is 21% the heal is still executed up to 25%", params: "0 0.10", category: "Heal/Repair Support Station")]
73  protected float m_fServerAddedMaxHealScaled;
74 
75  [Attribute(desc: "The DPS types that cost supplies to be healed/repaired. It will still remove the DPS effect even if it is not included here. It simply does not cost extra", uiwidget: UIWidgets.SearchComboBox, enums: ParamEnumArray.FromEnum(EDamageType), category: "Heal/Repair Support Station")]
76  protected ref array<EDamageType> m_aDoTTypesHealed;
77 
78  [Attribute("100", desc: "Supplies needed to heal conditions such as bleeding. Ignored if 0 or m_aDoTTypesHealed is empty. Fire uses own supply calculation", params: "0 inf 1", category: "Heal/Repair Support Station")]
79  protected int m_iSuppliesPerDoTHealed;
80 
81  [Attribute(ESupportStationReasonInvalid.HEAL_MAX_HEALABLE_HEALTH_REACHED_EMERGENCY.ToString(), desc: "Invalid reason when healing is done but full health not reached. For repair vehicle this is HEAL_MAX_HEALABLE_HEALTH_REACHED_FIELD for repair wrench only this is HEAL_MAX_HEALABLE_HEALTH_REACHED_EMERGENCY", uiwidget: UIWidgets.SearchComboBox, enums: ParamEnumArray.FromEnum(ESupportStationReasonInvalid), category: "Heal/Repair Support Station")]
82  protected ESupportStationReasonInvalid m_eMaxHealDone;
83 
84  //~ Damage that can be healed if there are less supplies than the entire damage that can be healed
85  protected float m_fMaxDamageToHealSupplyCap = -1;
86 
87  //------------------------------------------------------------------------------------------------
88  //~ Hotfix to prevent the heal action to be stuck because of the potential 5% desycn of health between server and client
89  protected float GetMaxHealScaled()
90  {
91  if (m_fMaxHealScaled >= 1 || Replication.IsClient())
92  return m_fMaxHealScaled;
93  else
94  return Math.Clamp(m_fMaxHealScaled + m_fServerAddedMaxHealScaled, m_fMaxHealScaled, 1);
95  }
96 
97  //------------------------------------------------------------------------------------------------
98  override bool IsValid(IEntity actionOwner, IEntity actionUser, SCR_BaseUseSupportStationAction action, vector actionPosition, out ESupportStationReasonInvalid reasonInvalid, out int supplyCost)
99  {
100  if (!SCR_BaseDamageHealSupportStationAction.Cast(action))
101  {
102  Debug.Error2("SCR_BaseDamageHealSupportStationComponent", "'IsValid' fails as the damage heal support station is executed with a non SCR_BaseDamageHealSupportStationAction action! This is will break the support station!");
103  return false;
104  }
105 
106  if (!super.IsValid(actionOwner, actionUser, action, actionPosition, reasonInvalid, supplyCost))
107  return false;
108 
109  EDamageType activeDot;
110  array<HitZone> hitZones = {};
111  float damageToHeal = GetDamageOrStateToHeal(actionOwner, actionUser, SCR_BaseDamageHealSupportStationAction.Cast(action), activeDot, hitZones);
112 
113  if (activeDot == -1 && damageToHeal <= 0)
114  {
115  foreach (HitZone hitzone : hitZones)
116  {
117  //~ No damage can be healed yet a hitzone is not full heath
118  if (hitzone.GetDamageState() != EDamageState.UNDAMAGED)
119  {
120  reasonInvalid = m_eMaxHealDone;
121  return false;
122  }
123  }
124 
125  //~ Entity has no damage
126  reasonInvalid = ESupportStationReasonInvalid.HEAL_ENTITY_UNDAMAGED;
127  return false;
128  }
129 
130  return true;
131  }
132 
133  //------------------------------------------------------------------------------------------------
134  protected float GetDamageOrStateToHeal(IEntity actionOwner, IEntity actionUser, notnull SCR_BaseDamageHealSupportStationAction action, out EDamageType activeDoT, out notnull array<HitZone> hitZones)
135  {
136  action.GetHitZonesToHeal(hitZones);
137 
138  activeDoT = -1;
139 
140  //~ Has DoT so this gets priority over healing damage (Excluding fire)
141  foreach (EDamageType DoT : m_aDoTTypesHealed)
142  {
143  foreach (HitZone hitZone : hitZones)
144  {
145  if (hitZone.GetDamageOverTime(DoT))
146  {
147  activeDoT = DoT;
148  return 1;
149  }
150  }
151  }
152 
153  //~ Get amount healed (Cap to damage healed each execute)
154  return Math.Clamp(action.GetActionDamageManager().GetHitZonesDamage(GetMaxHealScaled(), hitZones), 0, m_iDamageHealedEachExecution);
155  }
156 
157  //------------------------------------------------------------------------------------------------
158  protected override int GetSupplyCostAction(IEntity actionOwner, IEntity actionUser, SCR_BaseUseSupportStationAction action)
159  {
160  m_fMaxDamageToHealSupplyCap = -1;
161 
162  if (!AreSuppliesEnabled())
163  return 0;
164 
165  EDamageType activeDoT;
166  array<HitZone> hitZones = {};
167 
168  float damageToHeal = GetDamageOrStateToHeal(actionOwner, actionUser, SCR_BaseDamageHealSupportStationAction.Cast(action), activeDoT, hitZones);
169 
170  //~ Has DoT, this is always healed first
171  if (activeDoT != -1)
172  {
173  return m_iSuppliesPerDoTHealed + m_iBaseSupplyCostOnUse;
174  }
175 
176  //~ No damage to heal
177  if (damageToHeal <= 0)
178  return 0;
179 
180  //~ Calculate the supply cost
181  float damageHealCost = (damageToHeal / m_iDamageHealedEachExecution) * m_iSupplyCostDamageHealed;
182 
183  //~ Check if there aren't enough supplies for the heal action how much damage can be healed instead. The available supplies should be at least >= than baseSupplyCost + 1
184  float availableSupplies = GetMaxAvailableSupplies();
185  if (availableSupplies > 0 && damageHealCost > 0 && (damageHealCost + m_iBaseSupplyCostOnUse) > availableSupplies && availableSupplies >= m_iBaseSupplyCostOnUse +1)
186  {
187  //~ Calculate how many can be healed depending on how many supplies there are
188  m_fMaxDamageToHealSupplyCap = (m_iDamageHealedEachExecution / m_iSupplyCostDamageHealed) * availableSupplies;
189  return availableSupplies;
190  }
191  //~ If there aren't enough supplies show the cost of the action for the min cost it can be executed.
192  else if (availableSupplies < m_iBaseSupplyCostOnUse +1)
193  {
194  return m_iBaseSupplyCostOnUse + 1;
195  }
196 
197  //~ There is damage so there should always be a cost of 1
198  if ((damageHealCost + m_iBaseSupplyCostOnUse) < 1)
199  return 1;
200 
201  return Math.Ceil(damageHealCost + m_iBaseSupplyCostOnUse);
202  }
203 
204  //------------------------------------------------------------------------------------------------
205  override void OnExecutedServer(notnull IEntity actionOwner, notnull IEntity actionUser, notnull SCR_BaseUseSupportStationAction action)
206  {
207  //~ Consume supplies
208  if (AreSuppliesEnabled())
209  {
210  //~ Failed to consume supplies, meaning there weren't enough supplies for the action. Also sets m_fMaxDamageToHealSupplyCap GetSupplyCostAction to make sure the system can still heal even if there is a limited amount of supplies
211  if (!OnConsumeSuppliesServer(GetSupplyCostAction(actionOwner, actionUser, action)))
212  return;
213  }
214 
216 
217  //~ Get damage to heal
218  EDamageType activeDoT;
219  array<HitZone> hitZones = {};
220  float damageToHeal = GetDamageOrStateToHeal(actionOwner, actionUser, damageHealAction, activeDoT, hitZones);
221 
222  //~ There are not enough supplies to heal full damage. So heal to amount supplies allow it
223  if (m_fMaxDamageToHealSupplyCap > 0 && m_fMaxDamageToHealSupplyCap < damageToHeal)
224  damageToHeal = m_fMaxDamageToHealSupplyCap;
225 
226  //~ Get broadcast ids
227  RplId ownerId;
228  RplId userId;
229  int playerId;
231  FindEntityIds(actionOwner, actionUser, ownerId, userId, playerId);
232 
233  //~ Remove the active Damage over Time
234  if (activeDoT != -1)
235  {
236  healState = SCR_EDamageSupportStationHealState.DOT_REMOVED;
237 
238  foreach (HitZone hitZone : hitZones)
239  {
240  hitZone.SetDamageOverTime(activeDoT, 0);
241  }
242 
243  //~ Execute default logics
244  OnExecuteDamageSystem(actionOwner, actionUser, healState, SCR_BaseDamageHealSupportStationAction.Cast(action), 0);
245  Rpc(OnExecuteDamageSystemBroadcast, ownerId, userId, healState, action.GetActionID(), 0);
246  return;
247  }
248 
249  SCR_DamageManagerComponent damageManager = damageHealAction.GetActionDamageManager();
250  if (!damageManager)
251  return;
252 
253  float maxHealScaled = GetMaxHealScaled();
254 
255  //~ No DoT so get hitZones to heal
256  damageManager.HealHitZones(damageToHeal, true, maxHealScaled, hitZones);
257 
258  //~ The support station can still heal more
259  if (damageManager.GetHitZonesDamage(maxHealScaled, hitZones) > 0)
260  {
261  healState = SCR_EDamageSupportStationHealState.HEAL_UPDATE;
262  }
263  else
264  {
265  //~ Entity health is full health
266  if (maxHealScaled >= 1)
267  healState = SCR_EDamageSupportStationHealState.HEAL_DONE;
268  //~ The support station reached the max health
269  else
270  healState = SCR_EDamageSupportStationHealState.HEAL_DONE_NOT_FULL_HEAL;
271  }
272 
273  //~ Get the current percentage of healing and if all hitZones are healed to the max
274  float healthScaled = damageHealAction.GetActionDamageManager().GetSingleHitZonesHealthScaled(hitZones);
275 
276  OnExecuteDamageSystem(actionOwner, actionUser, healState, SCR_BaseDamageHealSupportStationAction.Cast(action), healthScaled);
277  Rpc(OnExecuteDamageSystemBroadcast, ownerId, userId, healState, action.GetActionID(), healthScaled);
278  }
279 
280  //------------------------------------------------------------------------------------------------
281  protected override void OnExecute(IEntity actionOwner, IEntity actionUser, int playerId, SCR_BaseUseSupportStationAction action)
282  {
283  //~ Clear on execute so it does not call on complete as it has a custom on execute
284  }
285 
286  //------------------------------------------------------------------------------------------------
287  [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
288  protected void OnExecuteDamageSystemBroadcast(RplId ownerId, RplId userId, SCR_EDamageSupportStationHealState healState, int actionId, float healthScaled)
289  {
290  IEntity actionOwner, actionUser;
291  GetEntitiesFromID(ownerId, userId, actionOwner, actionUser);
292 
294  if (actionOwner)
295  {
296  ActionsManagerComponent actionManager = ActionsManagerComponent.Cast(actionOwner.FindComponent(ActionsManagerComponent));
297 
298  if (actionManager)
299  action = SCR_BaseUseSupportStationAction.Cast(actionManager.FindAction(actionId));
300  }
301 
302  OnExecuteDamageSystem(actionOwner, actionUser, healState, SCR_BaseDamageHealSupportStationAction.Cast(action), healthScaled);
303  }
304 
305  //------------------------------------------------------------------------------------------------
306  protected void OnExecuteDamageSystem(IEntity actionOwner, IEntity actionUser, SCR_EDamageSupportStationHealState healState, SCR_BaseDamageHealSupportStationAction action, float healthScaled)
307  {
308  //~ On succesfully executed
309  OnSuccessfullyExecuted(actionOwner, actionUser, action);
310 
311  if (!actionOwner)
312  return;
313 
314  //~ Play sound effect
316  if (classData)
317  {
318  switch (healState)
319  {
320  case SCR_EDamageSupportStationHealState.HEAL_UPDATE :
321  {
322  PlaySoundEffect(classData.GetOnHealUpdateAudioConfig(), actionOwner, action);
323  break;
324  }
325  case SCR_EDamageSupportStationHealState.HEAL_DONE_NOT_FULL_HEAL :
326  {
327  PlaySoundEffect(GetOnUseAudioConfig(), actionOwner, action);
328  break;
329  }
330  case SCR_EDamageSupportStationHealState.HEAL_DONE :
331  {
332  PlaySoundEffect(GetOnUseAudioConfig(), actionOwner, action);
333 
334  //~ Play done voice event (if any) if character is fully healed
335  SCR_DamageManagerComponent damageManager = SCR_DamageManagerComponent.GetDamageManager(actionOwner);
336  if (damageManager)
337  {
338  if (damageManager.GetState() == EDamageState.UNDAMAGED)
339  PlayCharacterVoiceEvent(actionOwner);
340  }
341 
342  break;
343  }
344  case SCR_EDamageSupportStationHealState.DOT_REMOVED :
345  {
346  PlaySoundEffect(classData.GetOnDoTRemovedAudioConfig(), actionOwner, action);
347  break;
348  }
349  }
350  }
351 
352  //~ Do not send notification
354  return;
355 
356  SendDamageSupportStationNotification(actionOwner, actionUser, action, healState, healthScaled);
357  }
358 
359  //------------------------------------------------------------------------------------------------
360  protected void SendDamageSupportStationNotification(IEntity actionOwner, IEntity actionUser, SCR_BaseUseSupportStationAction action, SCR_EDamageSupportStationHealState healState, float healthScaled)
361  {
362  //~ Override in inherited classes
363  }
364 }
365 
367 {
377 }
SCR_BaseSupportStationComponentClass
Definition: SCR_BaseSupportStationComponent.c:2
m_sOnUseSoundEffectFile
protected ResourceName m_sOnUseSoundEffectFile
Definition: SCR_BaseSupportStationComponent.c:12
ComponentEditorProps
SCR_FragmentEntityClass ComponentEditorProps
BLOOD_DONE_NOT_FULL_HEAL
@ BLOOD_DONE_NOT_FULL_HEAL
To notify the system that blood amount was updated and healing is done, but the entity is not full bl...
Definition: SCR_BaseDamageHealSupportStationComponent.c:375
SCR_Enum
Definition: SCR_Enum.c:1
m_iBaseSupplyCostOnUse
protected int m_iBaseSupplyCostOnUse
Definition: SCR_BaseSupportStationComponent.c:100
BLOOD_UPDATE
@ BLOOD_UPDATE
To notify the system that blood amount was updated but healing is not done.
Definition: SCR_BaseDamageHealSupportStationComponent.c:374
FindEntityIds
protected void FindEntityIds(IEntity owner, IEntity user, out RplId ownerId, out RplId userId, out int playerId)
Definition: SCR_BaseSupportStationComponent.c:148
HitZone
Definition: HitZone.c:12
SendDamageSupportStationNotification
protected void SendDamageSupportStationNotification(IEntity actionOwner, IEntity actionUser, SCR_BaseUseSupportStationAction action, SCR_EDamageSupportStationHealState healState, float healthScaled)
Definition: SCR_BaseDamageHealSupportStationComponent.c:360
m_OnHealUpdateAudioSourceConfiguration
protected ref SCR_AudioSourceConfiguration m_OnHealUpdateAudioSourceConfiguration
Definition: SCR_BaseDamageHealSupportStationComponent.c:8
EAudioSourceConfigurationFlag
EAudioSourceConfigurationFlag
Definition: SCR_AudioSourceConfiguration.c:1
m_sOnHealUpdateSoundEffectEventName
protected string m_sOnHealUpdateSoundEffectEventName
Definition: SCR_BaseDamageHealSupportStationComponent.c:3
GetEntitiesFromID
protected void GetEntitiesFromID(RplId ownerId, RplId userId, out IEntity owner, out IEntity user)
Definition: SCR_BaseSupportStationComponent.c:171
SCR_StringHelper
Definition: SCR_StringHelper.c:1
OnSuccessfullyExecuted
protected void OnSuccessfullyExecuted(IEntity actionOwner, IEntity actionUser, SCR_BaseUseSupportStationAction action)
Definition: SCR_BaseSupportStationComponent.c:214
EDamageState
EDamageState
Definition: EDamageState.c:12
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
GetSupplyCostAction
protected override int GetSupplyCostAction(IEntity actionOwner, IEntity actionUser, SCR_BaseUseSupportStationAction action)
Definition: SCR_BaseDamageHealSupportStationComponent.c:158
RplRpc
SCR_AchievementsHandlerClass ScriptComponentClass RplRpc(RplChannel.Reliable, RplRcver.Owner)] void UnlockOnClient(AchievementId achievement)
Definition: SCR_AchievementsHandler.c:11
Attribute
SCR_BaseDamageHealSupportStationComponentClass SCR_BaseSupportStationComponentClass Attribute("500", desc:"Max damage healed each execute. If you hold the action it will heal each time the action ends", category:"Heal/Repair Support Station", params:"0.01 inf")
Definition: SCR_BaseDamageHealSupportStationComponent.c:62
PlaySoundEffect
protected void PlaySoundEffect(SCR_AudioSourceConfiguration audioConfig, notnull IEntity soundOwner, SCR_BaseUseSupportStationAction action)
Definition: SCR_BaseSupportStationComponent.c:222
PlayCharacterVoiceEvent
protected void PlayCharacterVoiceEvent(IEntity character)
Definition: SCR_BaseSupportStationComponent.c:269
ESupportStationReasonInvalid
ESupportStationReasonInvalid
Definition: ESupportStationReasonInvalid.c:3
OnExecutedServer
override void OnExecutedServer(notnull IEntity actionOwner, notnull IEntity actionUser, notnull SCR_BaseUseSupportStationAction action)
Definition: SCR_BaseDamageHealSupportStationComponent.c:205
OnExecuteDamageSystem
protected void OnExecuteDamageSystem(IEntity actionOwner, IEntity actionUser, SCR_EDamageSupportStationHealState healState, SCR_BaseDamageHealSupportStationAction action, float healthScaled)
Definition: SCR_BaseDamageHealSupportStationComponent.c:306
GetSendNotificationOnUse
bool GetSendNotificationOnUse()
Definition: SCR_BaseSupportStationComponent.c:28
DOT_REMOVED
@ DOT_REMOVED
To notify the system that a Damage over time effect was removed.
Definition: SCR_BaseDamageHealSupportStationComponent.c:370
OnConsumeSuppliesServer
protected bool OnConsumeSuppliesServer(int amount)
Definition: SCR_BaseSupportStationComponent.c:630
GetDamageOrStateToHeal
protected float GetDamageOrStateToHeal(IEntity actionOwner, IEntity actionUser, notnull SCR_BaseDamageHealSupportStationAction action, out EDamageType activeDoT, out notnull array< HitZone > hitZones)
Definition: SCR_BaseDamageHealSupportStationComponent.c:134
HEAL_DONE
@ HEAL_DONE
To notify the system that health was updated and healing is done.
Definition: SCR_BaseDamageHealSupportStationComponent.c:373
FIRE_EXTINGUISH_UPDATE
@ FIRE_EXTINGUISH_UPDATE
To notify the system that the fire extinguish was updated but the fire state is not removed.
Definition: SCR_BaseDamageHealSupportStationComponent.c:368
m_OnDoTRemovedAudioSourceConfiguration
protected ref SCR_AudioSourceConfiguration m_OnDoTRemovedAudioSourceConfiguration
Definition: SCR_BaseDamageHealSupportStationComponent.c:9
HEAL_UPDATE
@ HEAL_UPDATE
To notify the system that health was updated but healing is not done.
Definition: SCR_BaseDamageHealSupportStationComponent.c:371
OnExecuteDamageSystemBroadcast
protected void OnExecuteDamageSystemBroadcast(RplId ownerId, RplId userId, SCR_EDamageSupportStationHealState healState, int actionId, float healthScaled)
Definition: SCR_BaseDamageHealSupportStationComponent.c:288
GetOwner
IEntity GetOwner()
Owner entity of the fuel tank.
Definition: SCR_FuelNode.c:128
OnExecute
protected override void OnExecute(IEntity actionOwner, IEntity actionUser, int playerId, SCR_BaseUseSupportStationAction action)
Definition: SCR_BaseDamageHealSupportStationComponent.c:281
SCR_BaseDamageHealSupportStationAction
Allows healing of action owner (not user)
Definition: SCR_BaseDamageHealSupportStationAction.c:2
EDamageType
EDamageType
Definition: EDamageType.c:12
SCR_BaseDamageHealSupportStationComponentClass
Definition: SCR_BaseDamageHealSupportStationComponent.c:2
FIRE_EXTINGUISH_DONE
@ FIRE_EXTINGUISH_DONE
To notify the system that the fire extinguish was updated but the fire state was removed.
Definition: SCR_BaseDamageHealSupportStationComponent.c:369
params
Configs ServerBrowser KickDialogs params
Definition: SCR_NotificationSenderComponent.c:24
AreSuppliesEnabled
bool AreSuppliesEnabled()
Definition: SCR_BaseSupportStationComponent.c:644
SCR_EDamageSupportStationHealState
SCR_EDamageSupportStationHealState
Definition: SCR_BaseDamageHealSupportStationComponent.c:366
SCR_BaseUseSupportStationAction
Definition: SCR_BaseUseSupportStationAction.c:1
IsValid
override bool IsValid(IEntity actionOwner, IEntity actionUser, SCR_BaseUseSupportStationAction action, vector actionPosition, out ESupportStationReasonInvalid reasonInvalid, out int supplyCost)
Definition: SCR_BaseDamageHealSupportStationComponent.c:98
CanMoveWithPhysics
bool CanMoveWithPhysics()
Definition: SCR_BaseSupportStationComponent.c:36
m_sOnDoTRemovedSoundEffectEventName
protected string m_sOnDoTRemovedSoundEffectEventName
Definition: SCR_BaseDamageHealSupportStationComponent.c:6
GetOnUseAudioConfig
SCR_AudioSourceConfiguration GetOnUseAudioConfig()
Definition: SCR_BaseSupportStationComponent.c:54
BLOOD_DONE
@ BLOOD_DONE
To notify the system that blood amount was updated and healing is done.
Definition: SCR_BaseDamageHealSupportStationComponent.c:376
GetMaxAvailableSupplies
int GetMaxAvailableSupplies()
Definition: SCR_BaseSupportStationComponent.c:579
HEAL_DONE_NOT_FULL_HEAL
@ HEAL_DONE_NOT_FULL_HEAL
To notify the system that health was updated and healing is done. But the entity is not full heal aka...
Definition: SCR_BaseDamageHealSupportStationComponent.c:372
category
params category
Definition: SCR_VehicleDamageManagerComponent.c:180