Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_ConsumableTourniquet.c
Go to the documentation of this file.
1
2
[
BaseContainerProps
()]
3
class
SCR_ConsumableTourniquet :
SCR_ConsumableEffectHealthItems
4
{
5
6
//------------------------------------------------------------------------------------------------
7
override
void
ApplyEffect(notnull
IEntity
target, notnull
IEntity
user,
IEntity
item,
ItemUseParameters
animParams)
8
{
9
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(target);
10
if
(!
char
)
11
return
;
12
13
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
14
if
(!damageMgr)
15
return
;
16
17
m_eTargetHZGroup
= damageMgr.
FindAssociatedHitZoneGroup
(animParams.GetIntParam());
18
19
SCR_TourniquetStorageComponent
tqStorageComp =
SCR_TourniquetStorageComponent
.Cast(user.FindComponent(
SCR_TourniquetStorageComponent
));
20
if
(!tqStorageComp)
21
{
22
Print
(
"SCR_TourniquetStorageComponent missing"
,
LogLevel
.ERROR);
23
return
;
24
}
25
26
tqStorageComp.
AddTourniquetToSlot
(target,
m_eTargetHZGroup
, item);
27
28
super.ApplyEffect(target, user, item, animParams);
29
}
30
31
//------------------------------------------------------------------------------------------------
32
override
bool
CanApplyEffect(notnull
IEntity
target, notnull
IEntity
user, out SCR_EConsumableFailReason failReason = SCR_EConsumableFailReason.NONE)
33
{
34
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(target);
35
if
(!
char
)
36
return
false
;
37
38
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
39
if
(!damageMgr || !damageMgr.
IsBleeding
())
40
return
false
;
41
42
return
damageMgr.
GetCharMostDOTHitzoneGroup
(
EDamageType
.BLEEDING,
true
,
true
);
43
}
44
45
//------------------------------------------------------------------------------------------------
46
override
bool
CanApplyEffectToHZ(notnull
IEntity
target, notnull
IEntity
user,
ECharacterHitZoneGroup
group, out SCR_EConsumableFailReason failReason = SCR_EConsumableFailReason.NONE)
47
{
48
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(target);
49
if
(!
char
)
50
return
false
;
51
52
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
53
if
(!damageMgr)
54
return
false
;
55
56
array<ECharacterHitZoneGroup> limbs = {};
57
damageMgr.
GetAllExtremities
(limbs);
58
59
if
(!limbs.Contains(group))
60
return
false
;
61
62
if
(damageMgr.
GetGroupTourniquetted
(group))
63
{
64
failReason = SCR_EConsumableFailReason.ALREADY_APPLIED;
65
return
false
;
66
}
67
68
if
(damageMgr.
GetGroupDamageOverTime
(group,
EDamageType
.BLEEDING) > 0)
69
return
true
;
70
71
failReason = SCR_EConsumableFailReason.NOT_BLEEDING;
72
return
false
;
73
}
74
75
//------------------------------------------------------------------------------------------------
76
override
ItemUseParameters
GetAnimationParameters(
IEntity
item, notnull
IEntity
target,
ECharacterHitZoneGroup
group =
ECharacterHitZoneGroup
.VIRTUAL)
77
{
78
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(target);
79
if
(!
char
)
80
return
null;
81
82
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
83
if
(!damageMgr)
84
return
null;
85
86
EBandagingAnimationBodyParts
bodyPartToBandage =
EBandagingAnimationBodyParts
.Invalid;
87
88
if
(group !=
ECharacterHitZoneGroup
.VIRTUAL)
89
{
90
if
(!damageMgr.
GetGroupIsBeingHealed
(group))
91
bodyPartToBandage = damageMgr.
FindAssociatedBandagingBodyPart
(group);
92
}
93
else
94
{
95
group = damageMgr.
GetCharMostDOTHitzoneGroup
(
EDamageType
.BLEEDING,
true
,
true
,
true
);
96
if
(!group)
97
return
null;
98
99
array<HitZone> groupHitZones = {};
100
damageMgr.GetHitZonesOfGroup(group, groupHitZones);
101
102
SCR_CharacterHitZone charHitZone = SCR_CharacterHitZone.Cast(groupHitZones[0]);
103
if
(!charHitZone)
104
return
null;
105
106
bodyPartToBandage = charHitZone.GetBodyPartToHeal();
107
}
108
109
if
(bodyPartToBandage ==
EBandagingAnimationBodyParts
.Invalid)
110
return
null;
111
112
bool
allowMovement = bodyPartToBandage !=
EBandagingAnimationBodyParts
.RightLeg && bodyPartToBandage !=
EBandagingAnimationBodyParts
.LeftLeg;
113
114
ItemUseParameters
params
=
ItemUseParameters
();
115
params
.SetEntity(item);
116
params
.SetAllowMovementDuringAction(allowMovement);
117
params
.SetKeepInHandAfterSuccess(
false
);
118
params
.SetCommandID(GetApplyToSelfAnimCmnd(target));
119
params
.SetCommandIntArg(1);
120
params
.SetCommandFloatArg(0.0);
121
params
.SetMaxAnimLength(m_fApplyToSelfDuration);
122
params
.SetIntParam(bodyPartToBandage);
123
124
return
params
;
125
}
126
127
//------------------------------------------------------------------------------------------------
128
// constructor
129
void
SCR_ConsumableTourniquet()
130
{
131
m_eConsumableType =
SCR_EConsumableType
.TOURNIQUET;
132
}
133
}
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
ECharacterHitZoneGroup
ECharacterHitZoneGroup
Definition
SCR_CharacterDamageManagerComponent.c:2
EBandagingAnimationBodyParts
EBandagingAnimationBodyParts
Definition
SCR_CharacterHitZone.c:30
SCR_EConsumableType
SCR_EConsumableType
Type of consumable gadget.
Definition
SCR_ConsumableEffectBase.c:3
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
GetDamageManager
SCR_VehicleDamageManagerComponent GetDamageManager()
Definition
VehicleControllerComponent.c:44
ChimeraCharacter
Definition
ChimeraCharacter.c:13
IEntity
Definition
IEntity.c:13
ItemUseParameters
Definition
ItemUseParameters.c:16
SCR_CharacterDamageManagerComponent
Definition
SCR_CharacterDamageManagerComponent.c:19
SCR_CharacterDamageManagerComponent::GetCharMostDOTHitzoneGroup
ECharacterHitZoneGroup GetCharMostDOTHitzoneGroup(EDamageType damageType, bool onlyExtremities=false, bool ignoreTQdHitZones=false, bool ignoreIfBeingTreated=false)
Definition
SCR_CharacterDamageManagerComponent.c:1461
SCR_CharacterDamageManagerComponent::GetGroupIsBeingHealed
bool GetGroupIsBeingHealed(ECharacterHitZoneGroup hitZoneGroup)
Definition
SCR_CharacterDamageManagerComponent.c:1273
SCR_CharacterDamageManagerComponent::GetAllExtremities
static void GetAllExtremities(notnull out array< ECharacterHitZoneGroup > limbs)
Definition
SCR_CharacterDamageManagerComponent.c:1406
SCR_CharacterDamageManagerComponent::GetGroupTourniquetted
bool GetGroupTourniquetted(ECharacterHitZoneGroup hitZoneGroup)
Definition
SCR_CharacterDamageManagerComponent.c:1241
SCR_CharacterDamageManagerComponent::IsBleeding
bool IsBleeding()
the official and globally used way of checking if bleeding tests for any PERSISTENT damage effects of...
Definition
SCR_CharacterDamageManagerComponent.c:1336
SCR_CharacterDamageManagerComponent::FindAssociatedBandagingBodyPart
EBandagingAnimationBodyParts FindAssociatedBandagingBodyPart(ECharacterHitZoneGroup hitZoneGroup)
Definition
SCR_CharacterDamageManagerComponent.c:1163
SCR_CharacterDamageManagerComponent::FindAssociatedHitZoneGroup
ECharacterHitZoneGroup FindAssociatedHitZoneGroup(EBandagingAnimationBodyParts bodyPartToBandage)
Definition
SCR_CharacterDamageManagerComponent.c:1145
SCR_CharacterDamageManagerComponent::GetGroupDamageOverTime
override float GetGroupDamageOverTime(ECharacterHitZoneGroup hitZoneGroup, EDamageType damageType)
Definition
SCR_CharacterDamageManagerComponent.c:1222
SCR_ConsumableEffectHealthItems
Definition
SCR_ConsumableEffectHealthItems.c:3
SCR_ConsumableEffectHealthItems::m_eTargetHZGroup
ECharacterHitZoneGroup m_eTargetHZGroup
Definition
SCR_ConsumableEffectHealthItems.c:17
SCR_TourniquetStorageComponent
Definition
SCR_TourniquetStorageComponent.c:52
SCR_TourniquetStorageComponent::AddTourniquetToSlot
void AddTourniquetToSlot(IEntity target, ECharacterHitZoneGroup eHitZoneGroup, IEntity tourniquet)
Definition
SCR_TourniquetStorageComponent.c:60
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
EDamageType
EDamageType
Definition
EDamageType.c:13
scripts
Game
Components
Gadgets
SCR_ConsumableTourniquet.c
Generated by
1.17.0