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_FuelHitZone.c
Go to the documentation of this file.
1
class
SCR_FuelHitZone
:
SCR_DestructibleHitzone
2
{
3
[
Attribute
(defvalue:
"1"
, uiwidget:
UIWidgets
.Auto,
desc
:
"Fuel Tank ID"
,
category
:
"Fuel Damage Config"
)]
4
protected
int
m_iFuelTankID
;
5
6
[
Attribute
(
EVehicleHitZoneGroup
.FUEL_TANKS.ToString(),
UIWidgets
.ComboBox, enums: ParamEnumArray.FromEnum(
EVehicleHitZoneGroup
))]
7
protected
EVehicleHitZoneGroup
m_eHitZoneGroup
;
8
9
[
Attribute
(
"0.5"
,
desc
:
"Minimum factor for determining explosion scale from fuel amount"
,
category
:
"Fuel Damage Config"
)]
10
protected
float
m_fMinExplosionScaleFactor
;
11
12
protected
SCR_FuelNode
m_FuelTank
;
13
14
//------------------------------------------------------------------------------------------------
15
override
EHitZoneGroup
GetHitZoneGroup
()
16
{
17
return
m_eHitZoneGroup
;
18
}
19
20
//------------------------------------------------------------------------------------------------
21
override
void
OnInit
(
IEntity
pOwnerEntity,
GenericComponent
pManagerComponent)
22
{
23
super.OnInit(pOwnerEntity, pManagerComponent);
24
25
SetFuelNodeID
(
m_iFuelTankID
);
26
}
27
28
//------------------------------------------------------------------------------------------------
29
void
UpdateFuelTankState
()
30
{
31
if
(!
m_FuelTank
)
32
return
;
33
34
EDamageState
state = GetDamageState();
35
float
health = GetDamageStateThreshold(state);
36
m_FuelTank
.SetHealth(health);
37
}
38
39
//------------------------------------------------------------------------------------------------
40
SCR_FuelNode
GetFuelTank
()
41
{
42
return
m_FuelTank
;
43
}
44
45
//------------------------------------------------------------------------------------------------
46
int
GetFuelTankID
()
47
{
48
return
m_iFuelTankID
;
49
}
50
51
//------------------------------------------------------------------------------------------------
53
void
SetFuelNodeID
(
int
fuelNodeID)
54
{
55
m_iFuelTankID
= fuelNodeID;
56
57
FuelManagerComponent fuelManager = FuelManagerComponent.Cast(
GetOwner
().FindComponent(FuelManagerComponent));
58
if
(!fuelManager)
59
return
;
60
61
SCR_FuelNode scrFuelNode;
62
array<BaseFuelNode> fuelNodes = {};
63
fuelManager.GetFuelNodesList(fuelNodes);
64
foreach
(
BaseFuelNode
fuelNode : fuelNodes)
65
{
66
scrFuelNode = SCR_FuelNode.Cast(fuelNode);
67
if
(scrFuelNode && scrFuelNode.GetFuelTankID() ==
m_iFuelTankID
)
68
{
69
m_FuelTank
= scrFuelNode;
70
break
;
71
}
72
}
73
74
#ifdef WORKBENCH
75
if
(!
m_FuelTank
)
76
PrintFormat
(
"SCR_FuelHitZone %1: fuel tank #%2 not found in %3"
,
GetName
(),
m_iFuelTankID
,
GetOwner
(), level:
LogLevel
.WARNING);
77
#endif
// WORKBENCH
78
79
UpdateFuelTankState
();
80
}
81
82
//------------------------------------------------------------------------------------------------
83
override
void
OnDamageStateChanged
(
EDamageState
newState,
EDamageState
previousDamageState,
bool
isJIP)
84
{
85
super.OnDamageStateChanged(newState, previousDamageState, isJIP);
86
87
UpdateFuelTankState
();
88
}
89
90
//------------------------------------------------------------------------------------------------
92
override
float
GetSecondaryExplosionScale
()
93
{
94
if
(!
m_FuelTank
)
95
return
0;
96
97
// Truck addon fuel cargo that does not have its own health
98
float
damage;
99
if
(
m_RootDamageManager
&&
m_RootDamageManager
.GetDefaultHitZone().GetDamageState() ==
EDamageState
.DESTROYED)
100
damage = 1;
101
else
if
(GetBaseDamageMultiplier() == 0 && GetHitZoneContainer().GetDefaultHitZone() ==
this
)
102
damage = 1;
103
else
104
damage =
Math
.Lerp(
m_fMinExplosionScaleFactor
, 1, 1 - GetDamageStateThreshold(GetDamageState()));
105
106
// TODO: Curve based on fuel to air ratio
107
return
m_FuelTank
.GetFuel() * damage;
108
}
109
}
EHitZoneGroup
EHitZoneGroup
Definition
EHitZoneGroup.c:2
GetName
string GetName()
Definition
SCR_NotificationSenderComponent.c:15
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
category
params category
Definition
SCR_VehicleDamageManagerComponent.c:302
EVehicleHitZoneGroup
EVehicleHitZoneGroup
Definition
SCR_VehicleDamageManagerComponent.c:2
BaseFuelNode
Definition
BaseFuelNode.c:13
GenericComponent
Definition
GenericComponent.c:13
IEntity
Definition
IEntity.c:13
Math
Definition
Math.c:13
SCR_DestructibleHitzone
Definition
SCR_DestructibleHitzone.c:5
SCR_DestructibleHitzone::m_RootDamageManager
SCR_DamageManagerComponent m_RootDamageManager
Definition
SCR_DestructibleHitzone.c:23
SCR_FuelHitZone
Definition
SCR_FuelHitZone.c:2
SCR_FuelHitZone::m_iFuelTankID
int m_iFuelTankID
Definition
SCR_FuelHitZone.c:4
SCR_FuelHitZone::m_FuelTank
SCR_FuelNode m_FuelTank
Definition
SCR_FuelHitZone.c:12
SCR_FuelHitZone::GetFuelTank
SCR_FuelNode GetFuelTank()
Definition
SCR_FuelHitZone.c:40
SCR_FuelHitZone::OnInit
override void OnInit(IEntity pOwnerEntity, GenericComponent pManagerComponent)
Definition
SCR_FuelHitZone.c:21
SCR_FuelHitZone::GetFuelTankID
int GetFuelTankID()
Definition
SCR_FuelHitZone.c:46
SCR_FuelHitZone::OnDamageStateChanged
override void OnDamageStateChanged(EDamageState newState, EDamageState previousDamageState, bool isJIP)
Definition
SCR_FuelHitZone.c:83
SCR_FuelHitZone::GetHitZoneGroup
override EHitZoneGroup GetHitZoneGroup()
Definition
SCR_FuelHitZone.c:15
SCR_FuelHitZone::GetSecondaryExplosionScale
override float GetSecondaryExplosionScale()
Get secondary explosion desired scale. It will determine the prefab retrieved from secondary explosio...
Definition
SCR_FuelHitZone.c:92
SCR_FuelHitZone::UpdateFuelTankState
void UpdateFuelTankState()
Definition
SCR_FuelHitZone.c:29
SCR_FuelHitZone::SetFuelNodeID
void SetFuelNodeID(int fuelNodeID)
Assign hitzone to a simulation fuel tank.
Definition
SCR_FuelHitZone.c:53
SCR_FuelHitZone::m_eHitZoneGroup
EVehicleHitZoneGroup m_eHitZoneGroup
Definition
SCR_FuelHitZone.c:7
SCR_FuelHitZone::m_fMinExplosionScaleFactor
float m_fMinExplosionScaleFactor
Definition
SCR_FuelHitZone.c:10
SCR_HitZone::GetOwner
IEntity GetOwner()
Definition
SCR_HitZone.c:42
UIWidgets
Definition
attributes.c:40
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
PrintFormat
proto void PrintFormat(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL, LogLevel level=LogLevel.NORMAL)
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EDamageState
EDamageState
Definition
EDamageState.c:13
scripts
Game
HitZone
SCR_FuelHitZone.c
Generated by
1.17.0