Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ConsumableBandage.c
Go to the documentation of this file.
1
3class SCR_ConsumableBandage : SCR_ConsumableEffectHealthItems
4{
5 //------------------------------------------------------------------------------------------------
6 override void ApplyEffect(notnull IEntity target, notnull IEntity user, IEntity item, ItemUseParameters animParams)
7 {
8 ChimeraCharacter char = ChimeraCharacter.Cast(target);
9 if (!char)
10 return;
11
13 if (!damageMgr)
14 return;
15
16 m_eTargetHZGroup = damageMgr.FindAssociatedHitZoneGroup(animParams.GetIntParam());
17
18 super.ApplyEffect(target, user, item, animParams);
19 }
20
21 //------------------------------------------------------------------------------------------------
22 override bool CanApplyEffect(notnull IEntity target, notnull IEntity user, out SCR_EConsumableFailReason failReason)
23 {
24 ChimeraCharacter char = ChimeraCharacter.Cast(target);
25 if (!char)
26 return false;
27
29 if (!damageMgr)
30 return false;
31
32 return damageMgr.IsBleeding();
33 }
34
35 //------------------------------------------------------------------------------------------------
36 override bool CanApplyEffectToHZ(notnull IEntity target, notnull IEntity user, ECharacterHitZoneGroup group, out SCR_EConsumableFailReason failReason = SCR_EConsumableFailReason.NONE)
37 {
38 ChimeraCharacter char = ChimeraCharacter.Cast(target);
39 if (!char)
40 return false;
41
43 return damageMgr && damageMgr.GetGroupDamageOverTime(group, EDamageType.BLEEDING) > 0;
44 }
45
46 //------------------------------------------------------------------------------------------------
48 override ItemUseParameters GetAnimationParameters(IEntity item, notnull IEntity target, ECharacterHitZoneGroup group = ECharacterHitZoneGroup.VIRTUAL)
49 {
50 ChimeraCharacter char = ChimeraCharacter.Cast(target);
51 if (!char)
52 return null;
53
55 if (!damageMgr)
56 return null;
57
59
60 if (group != ECharacterHitZoneGroup.VIRTUAL)
61 {
62 if (!damageMgr.GetGroupIsBeingHealed(group))
63 bodyPartToBandage = damageMgr.FindAssociatedBandagingBodyPart(group);
64 }
65 else
66 {
67 group = damageMgr.GetCharMostDOTHitzoneGroup(EDamageType.BLEEDING, ignoreIfBeingTreated: true);
68 array<HitZone> hitzones = {};
69 damageMgr.GetHitZonesOfGroupFromOwner(group, hitzones);
70 if (!hitzones || hitzones.IsEmpty())
71 return null;
72
73 SCR_CharacterHitZone hitzone = SCR_CharacterHitZone.Cast(hitzones[0]);
74 if (!hitzone)
75 return null;
76
77 bodyPartToBandage = hitzone.GetBodyPartToHeal();
78 }
79
80 if (bodyPartToBandage == EBandagingAnimationBodyParts.Invalid)
81 return null;
82
83 bool allowMovement = bodyPartToBandage != EBandagingAnimationBodyParts.RightLeg && bodyPartToBandage != EBandagingAnimationBodyParts.LeftLeg;
84
86 params.SetEntity(item);
87 params.SetAllowMovementDuringAction(allowMovement);
88 params.SetKeepInHandAfterSuccess(false);
89 params.SetCommandID(GetApplyToSelfAnimCmnd(target));
90 params.SetCommandIntArg(1);
91 params.SetCommandFloatArg(0.0);
92 params.SetMaxAnimLength(m_fApplyToSelfDuration);
93 params.SetIntParam(bodyPartToBandage);
94
95 return params;
96 }
97
98 //------------------------------------------------------------------------------------------------
99 // constructor
100 void SCR_ConsumableBandage()
101 {
102 m_eConsumableType = SCR_EConsumableType.BANDAGE;
103 }
104}
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
EBandagingAnimationBodyParts
SCR_EConsumableType
Type of consumable gadget.
SCR_VehicleDamageManagerComponent GetDamageManager()
ECharacterHitZoneGroup GetCharMostDOTHitzoneGroup(EDamageType damageType, bool onlyExtremities=false, bool ignoreTQdHitZones=false, bool ignoreIfBeingTreated=false)
bool GetGroupIsBeingHealed(ECharacterHitZoneGroup hitZoneGroup)
bool IsBleeding()
the official and globally used way of checking if bleeding tests for any PERSISTENT damage effects of...
EBandagingAnimationBodyParts FindAssociatedBandagingBodyPart(ECharacterHitZoneGroup hitZoneGroup)
ECharacterHitZoneGroup FindAssociatedHitZoneGroup(EBandagingAnimationBodyParts bodyPartToBandage)
override float GetGroupDamageOverTime(ECharacterHitZoneGroup hitZoneGroup, EDamageType damageType)
EDamageType
Definition EDamageType.c:13