Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ScenarioFrameworkMedicalConditionBleeding.c
Go to the documentation of this file.
3{
4 [Attribute(desc: "If true, is satisfied by bleeding on any HitZone.", defvalue: "1")]
5 bool m_bCanBleedAnywhere;
6
7 [Attribute(desc: "Is satisfied by bleeding on any specified HitZone.", uiwidget: UIWidgets.EditComboBox, enums: SCR_AttributesHelper.ParamFromTitles("Health;Blood;Resilience;Head;Chest;Abdomen;Hips;RArm;LArm;RForearm;LForearm;RHand;LHand;RThigh;LThigh;RCalf;LCalf;RFoot;LFoot;Neck;"))]
8 ref array<string> m_aHitZoneNames;
9
10 [Attribute(desc: "Is satisfied by bleeding in any specified HitZoneGroups.", uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(ECharacterHitZoneGroup))]
11 ref array<ECharacterHitZoneGroup> m_aHitZonesGroups;
12
13 protected ref set<string> m_AllCheckedHitZones;
14
15 //------------------------------------------------------------------------------------------------
16 override bool Init(notnull SCR_ChimeraCharacter character, notnull SCR_CharacterDamageManagerComponent damageManager)
17 {
18 super.Init(character, damageManager);
19
20 if (m_bCanBleedAnywhere)
21 return damageManager.IsBleeding();
22
23 array<HitZone> bleedingHitZones = damageManager.GetBleedingHitZones();
24 if (!bleedingHitZones)
25 return false;
26
27 set<string> allCheckedHitZones = GetAllCheckedHitZones(damageManager);
28 foreach (HitZone hitZone : bleedingHitZones)
29 {
30 if (allCheckedHitZones.Contains(hitZone.GetName()))
31 return true;
32 }
33
34 return false;
35 }
36
37 //------------------------------------------------------------------------------------------------
39 protected set<string> GetAllCheckedHitZones(notnull SCR_CharacterDamageManagerComponent damageManager)
40 {
42 {
43 array<HitZone> hitZonesFromGroups = {};
44 foreach (ECharacterHitZoneGroup hitZoneGroup : m_aHitZonesGroups)
45 {
46 damageManager.GetHitZonesOfGroup(hitZoneGroup, hitZonesFromGroups, clearArray: false);
47 }
48
49 m_AllCheckedHitZones = new set<string>();
50 m_AllCheckedHitZones.Reserve(m_aHitZoneNames.Count() + hitZonesFromGroups.Count());
51
52 foreach (string hitZoneName : m_aHitZoneNames)
53 {
54 m_AllCheckedHitZones.Insert(hitZoneName);
55 }
56 foreach (HitZone hitZone : hitZonesFromGroups)
57 {
58 m_AllCheckedHitZones.Insert(hitZone.GetName());
59 }
60 }
62 }
63}
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
static ParamEnumArray ParamFromTitles(string titles)
set< string > GetAllCheckedHitZones(notnull SCR_CharacterDamageManagerComponent damageManager)
override bool Init(notnull SCR_ChimeraCharacter character, notnull SCR_CharacterDamageManagerComponent damageManager)
SCR_FieldOfViewSettings Attribute