Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_FuelHitZone.c
Go to the documentation of this file.
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))]
8
9 [Attribute("0.5", desc: "Minimum factor for determining explosion scale from fuel amount", category: "Fuel Damage Config")]
11
12 protected SCR_FuelNode m_FuelTank;
13
14 //------------------------------------------------------------------------------------------------
16 {
17 return m_eHitZoneGroup;
18 }
19
20 //------------------------------------------------------------------------------------------------
21 override void OnInit(IEntity pOwnerEntity, GenericComponent pManagerComponent)
22 {
23 super.OnInit(pOwnerEntity, pManagerComponent);
24
26 }
27
28 //------------------------------------------------------------------------------------------------
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 //------------------------------------------------------------------------------------------------
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
80 }
81
82 //------------------------------------------------------------------------------------------------
83 override void OnDamageStateChanged(EDamageState newState, EDamageState previousDamageState, bool isJIP)
84 {
85 super.OnDamageStateChanged(newState, previousDamageState, isJIP);
86
88 }
89
90 //------------------------------------------------------------------------------------------------
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
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition Math.c:13
SCR_DamageManagerComponent m_RootDamageManager
SCR_FuelNode m_FuelTank
SCR_FuelNode GetFuelTank()
override void OnInit(IEntity pOwnerEntity, GenericComponent pManagerComponent)
override void OnDamageStateChanged(EDamageState newState, EDamageState previousDamageState, bool isJIP)
override EHitZoneGroup GetHitZoneGroup()
override float GetSecondaryExplosionScale()
Get secondary explosion desired scale. It will determine the prefab retrieved from secondary explosio...
void SetFuelNodeID(int fuelNodeID)
Assign hitzone to a simulation fuel tank.
EVehicleHitZoneGroup m_eHitZoneGroup
float m_fMinExplosionScaleFactor
IEntity GetOwner()
Definition SCR_HitZone.c:42
LogLevel
Enum with severity of the logging message.
Definition LogLevel.c:14
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)
SCR_FieldOfViewSettings Attribute
EDamageState