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_EngineHitZone.c
Go to the documentation of this file.
1
class
SCR_EngineHitZone
:
SCR_VehicleHitZone
2
{
3
[
Attribute
(
"25"
,
UIWidgets
.Auto,
desc
:
"Minimum engine power scale (% of initial)"
,
params
:
"0 100 0.1"
)]
4
protected
float
m_fMinimumEnginePowerScale
;
5
6
[
Attribute
(
"20"
,
UIWidgets
.Auto,
desc
:
"Minimum engine startup chance (% of initial)"
,
params
:
"0 100 0.1"
)]
7
protected
float
m_fMinimumEngineStartupChance
;
8
9
protected
SCR_PowerComponent
m_Power
;
10
11
//------------------------------------------------------------------------------------------------
12
float
GetEfficiency
()
13
{
14
EDamageState
state = GetDamageState();
15
float
efficiency = GetDamageStateThreshold(state);
16
17
// Battery influence on engine power output
18
if
(
m_Power
&&
m_Power
.ShouldApplyNoPowerPenalty() && !
m_Power
.HasPower())
19
efficiency *=
m_Power
.GetNoPowerMultiplier();
20
21
return
Math
.Lerp(0.01 *
m_fMinimumEnginePowerScale
, 1, efficiency);
22
}
23
25
override
void
OnInit
(
IEntity
pOwnerEntity,
GenericComponent
pManagerComponent)
26
{
27
super.OnInit(pOwnerEntity, pManagerComponent);
28
29
Vehicle
vehicle =
Vehicle
.Cast(pOwnerEntity.
GetRootParent
());
30
if
(!vehicle)
31
return
;
32
33
SCR_VehicleDamageManagerComponent
damageManager =
SCR_VehicleDamageManagerComponent
.Cast(vehicle.FindComponent(
SCR_VehicleDamageManagerComponent
));
34
if
(damageManager)
35
damageManager.RegisterVehicleHitZone(
this
);
36
37
m_Power
= SCR_PowerComponent.Cast(vehicle.FindComponent(SCR_PowerComponent));
38
if
(
m_Power
)
39
m_Power
.GetEventBatteryStateChanged().Insert(
UpdateEngineState
);
40
}
41
42
//------------------------------------------------------------------------------------------------
55
override
void
OnDamage
(notnull
BaseDamageContext
damageContext)
56
{
57
super.OnDamage(damageContext);
58
59
// Powerful impact should always stop engine
60
if
(damageContext.damageValue < GetCriticalDamageThreshold()*
GetMaxHealth
())
61
return
;
62
63
BaseVehicleNodeComponent node = BaseVehicleNodeComponent.Cast(
GetOwner
().FindComponent(BaseVehicleNodeComponent));
64
65
VehicleControllerComponent controller;
66
if
(node)
67
controller = VehicleControllerComponent.Cast(node.FindComponent(VehicleControllerComponent));
68
69
if
(controller && controller.IsEngineOn())
70
controller.StopEngine(
false
);
71
}
72
73
//------------------------------------------------------------------------------------------------
77
override
void
OnDamageStateChanged
(
EDamageState
newState,
EDamageState
previousDamageState,
bool
isJIP)
78
{
79
super.OnDamageStateChanged(newState, previousDamageState, isJIP);
80
81
UpdateEngineState
();
82
}
83
84
//------------------------------------------------------------------------------------------------
88
void
UpdateEngineState
()
89
{
90
Vehicle
vehicle =
Vehicle
.Cast(
GetOwner
().GetRootParent());
91
if
(!vehicle)
92
return
;
93
94
SCR_VehicleDamageManagerComponent
damageManager =
SCR_VehicleDamageManagerComponent
.Cast(vehicle.GetDamageManager());
95
if
(damageManager)
96
damageManager.UpdateVehicleState();
97
98
// Damage and battery influence on starter and engine power output
99
// TODO: Delegate this feature to controller/damage manager
100
EDamageState
state = GetDamageState();
101
float
health = GetDamageStateThreshold(state);
102
float
startupChance;
103
if
(
m_Power
&& !
m_Power
.HasPower())
104
startupChance = 0;
105
else
106
startupChance =
Math
.Lerp(
m_fMinimumEngineStartupChance
, 100, health);
107
108
VehicleControllerComponent controller = vehicle.GetVehicleController();
109
if
(controller)
110
controller.SetEngineStartupChance(startupChance);
111
}
112
}
GetMaxHealth
float GetMaxHealth()
Definition
SCR_DestructibleEntity.c:58
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
SCR_VehicleDamageManagerComponent
void SCR_VehicleDamageManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_VehicleDamageManagerComponent.c:2166
BaseDamageContext
Definition
BaseDamageContext.c:13
GenericComponent
Definition
GenericComponent.c:13
IEntity
Definition
IEntity.c:13
IEntity::GetRootParent
proto external IEntity GetRootParent()
Math
Definition
Math.c:13
SCR_EngineHitZone
Definition
SCR_EngineHitZone.c:2
SCR_EngineHitZone::m_fMinimumEngineStartupChance
float m_fMinimumEngineStartupChance
Definition
SCR_EngineHitZone.c:7
SCR_EngineHitZone::UpdateEngineState
void UpdateEngineState()
Definition
SCR_EngineHitZone.c:88
SCR_EngineHitZone::m_Power
SCR_PowerComponent m_Power
Definition
SCR_EngineHitZone.c:9
SCR_EngineHitZone::OnDamageStateChanged
override void OnDamageStateChanged(EDamageState newState, EDamageState previousDamageState, bool isJIP)
Definition
SCR_EngineHitZone.c:77
SCR_EngineHitZone::OnInit
override void OnInit(IEntity pOwnerEntity, GenericComponent pManagerComponent)
Called when hit zone is initialized.
Definition
SCR_EngineHitZone.c:25
SCR_EngineHitZone::m_fMinimumEnginePowerScale
float m_fMinimumEnginePowerScale
Definition
SCR_EngineHitZone.c:4
SCR_EngineHitZone::OnDamage
override void OnDamage(notnull BaseDamageContext damageContext)
Definition
SCR_EngineHitZone.c:55
SCR_EngineHitZone::GetEfficiency
float GetEfficiency()
Definition
SCR_EngineHitZone.c:12
SCR_HitZone::GetOwner
IEntity GetOwner()
Definition
SCR_HitZone.c:42
SCR_VehicleHitZone
Definition
SCR_VehicleHitZone.c:2
UIWidgets
Definition
attributes.c:40
Vehicle
enum EPhysicsLayerPresets Vehicle
Definition
gameLib.c:24
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EDamageState
EDamageState
Definition
EDamageState.c:13
scripts
Game
HitZone
SCR_EngineHitZone.c
Generated by
1.17.0