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_BloodEditorAttribute.c
Go to the documentation of this file.
1
4
[
BaseContainerProps
(),
SCR_BaseEditorAttributeCustomTitle
()]
5
class
SCR_BloodEditorAttribute
:
SCR_BaseValueListEditorAttribute
6
{
7
//------------------------------------------------------------------------------------------------
8
override
SCR_BaseEditorAttributeVar
ReadVariable(Managed item, SCR_AttributesManagerEditorComponent manager)
9
{
10
SCR_EditableEntityComponent
editableEntity =
SCR_EditableEntityComponent
.Cast(item);
11
if
(!editableEntity)
12
return
null;
13
14
IEntity
owner = editableEntity.GetOwner();
15
if
(!owner)
16
return
null;
17
18
SCR_CharacterDamageManagerComponent
characterDamageManager =
SCR_CharacterDamageManagerComponent
.Cast(owner.
FindComponent
(
SCR_CharacterDamageManagerComponent
));
19
if
(!characterDamageManager)
20
return
null;
21
22
if
(characterDamageManager.GetState() ==
EDamageState
.DESTROYED)
23
return
null;
24
25
HitZone
bloodHitzone = characterDamageManager.
GetBloodHitZone
();
26
if
(!bloodHitzone)
27
return
null;
28
29
//~Todo: Once an unconscious character can be revived, just use raw GetHealthScaled
30
float
bloodLevelLoseDeath = bloodHitzone.GetDamageStateThreshold(
ECharacterBloodState
.DESTROYED);
31
float
bloodLevelContiousness = bloodHitzone.GetDamageStateThreshold(
ECharacterBloodState
.UNCONSCIOUS);
32
float
bloodLevel =
Math
.InverseLerp(bloodLevelLoseDeath, 1, bloodHitzone.GetHealthScaled());
33
34
//~Safty Clamp
35
bloodLevel =
Math
.Clamp(bloodLevel, 0, 1);
36
37
//~ Sends over current blood level, % needed to fall Unconscious and if Unconsciousness is premitted
38
return
SCR_BaseEditorAttributeVar
.
CreateVector
(
Vector
(
Math
.Round(bloodLevel * 100), bloodLevelContiousness, characterDamageManager.
GetPermitUnconsciousness
()));
39
}
40
41
//------------------------------------------------------------------------------------------------
42
override
void
WriteVariable(Managed item,
SCR_BaseEditorAttributeVar
var, SCR_AttributesManagerEditorComponent manager,
int
playerID)
43
{
44
if
(!var)
45
return
;
46
SCR_EditableEntityComponent
editableEntity =
SCR_EditableEntityComponent
.Cast(item);
47
48
IEntity
owner = editableEntity.GetOwner();
49
if
(!owner)
50
return
;
51
52
SCR_CharacterDamageManagerComponent
characterDamageManager =
SCR_CharacterDamageManagerComponent
.Cast(owner.
FindComponent
(
SCR_CharacterDamageManagerComponent
));
53
if
(!characterDamageManager)
54
return
;
55
56
if
(characterDamageManager.GetState() ==
EDamageState
.DESTROYED)
57
return
;
58
59
HitZone
bloodHitzone = characterDamageManager.
GetBloodHitZone
();
60
if
(!bloodHitzone)
61
return
;
62
63
if
(!characterDamageManager.IsDamageHandlingEnabled())
64
return
;
65
66
//~Todo: Once an unconscious character can be revived, just use raw SetHealthScaled
67
float
bloodLevelLoseDeath = bloodHitzone.GetDamageStateThreshold(
ECharacterBloodState
.DESTROYED);
68
float
bloodLevel =
Math
.Lerp(bloodLevelLoseDeath, 1, var.
GetFloat
() * 0.01);
69
bloodLevel =
Math
.Clamp(bloodLevel, 0, 1);
70
if
(bloodLevel == 0)
71
{
72
Instigator
killer =
Instigator
.CreateInstigatorGM(playerID);
73
characterDamageManager.Kill(killer);
74
return
;
75
}
76
77
bloodHitzone.SetHealthScaled(bloodLevel);
78
}
79
}
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
ECharacterBloodState
ECharacterBloodState
Definition
SCR_CharacterHitZone.c:16
HitZone
Definition
HitZone.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
Instigator
Definition
Instigator.c:13
Math
Definition
Math.c:13
SCR_BaseEditorAttributeCustomTitle
Definition
SCR_BaseEditorAttribute.c:876
SCR_BaseEditorAttributeVar
Definition
SCR_BaseEditorAttributeVar.c:2
SCR_BaseEditorAttributeVar::GetFloat
float GetFloat()
Definition
SCR_BaseEditorAttributeVar.c:38
SCR_BaseEditorAttributeVar::CreateVector
static SCR_BaseEditorAttributeVar CreateVector(vector value)
Definition
SCR_BaseEditorAttributeVar.c:125
SCR_BaseValueListEditorAttribute
Definition
SCR_BaseValueListEditorAttribute.c:6
SCR_BloodEditorAttribute
Definition
SCR_BloodEditorAttribute.c:6
SCR_CharacterDamageManagerComponent
Definition
SCR_CharacterDamageManagerComponent.c:19
SCR_CharacterDamageManagerComponent::GetPermitUnconsciousness
bool GetPermitUnconsciousness()
Returns whether unconsciousness is permitted. Character prefab has highest authority,...
Definition
SCR_CharacterDamageManagerComponent.c:777
SCR_CharacterDamageManagerComponent::GetBloodHitZone
SCR_CharacterBloodHitZone GetBloodHitZone()
Definition
SCR_CharacterDamageManagerComponent.c:709
SCR_EditableEntityComponent
Definition
SCR_EditableEntityComponent.c:14
EDamageState
EDamageState
Definition
EDamageState.c:13
Vector
proto native vector Vector(float x, float y, float z)
scripts
Game
Editor
Containers
Attributes
SCR_BloodEditorAttribute.c
Generated by
1.17.0