Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ArmorDamageManagerComponent.c
Go to the documentation of this file.
4
5class SCR_ArmorDamageManagerComponent : SCR_DamageManagerComponent
6{
7 [Attribute(defvalue: "0.4", uiwidget: UIWidgets.EditBox, desc: "Multiplies rawdamage to be passed to character from this armor piece")]
8 protected float m_fPassedDamageScale;
9
10 [Attribute(defvalue: "0", desc: "Can this armor element be detached when it is struck")]
11 protected bool m_bIsDetachable;
12
13 //------------------------------------------------------------------------------------------------
15 override bool FilterContact(IEntity owner, IEntity other, Contact contact)
16 {
17 return false;
18 }
19
20 //------------------------------------------------------------------------------------------------
22 override bool HijackDamageHandling(notnull BaseDamageContext damageContext)
23 {
24 if (damageContext.damageType != EDamageType.KINETIC && damageContext.damageType != EDamageType.MELEE)
25 {
27 KnockOffTheHelmet(damageContext);
28
29 return true;
30 }
31
33 IEntity parent = GetOwner();
34 while (parent)
35 {
36 char = ChimeraCharacter.Cast(parent);
37 if (char)
38 break;
39
40 parent = parent.GetParent();
41 }
42
43 if (!char)
44 return true;
45
47 if (!charDamMan)
48 return true;
49
50 charDamMan.ArmorHitEventEffects(damageContext.damageValue);
51 charDamMan.ArmorHitEventDamage(damageContext.damageType, damageContext.damageValue * m_fPassedDamageScale, damageContext.instigator.GetInstigatorEntity());
52
54 KnockOffTheHelmet(damageContext);
55
56 return true;
57 }
58
59 //------------------------------------------------------------------------------------------------
62 protected void KnockOffTheHelmet(notnull BaseDamageContext damageContext)
63 {
64 IEntity owner = GetOwner();
65 ChimeraCharacter character = ChimeraCharacter.Cast(owner.GetParent());
66 if (!character)
67 return;
68
69 SCR_HeadgearInventoryItemComponent hatIIC = SCR_HeadgearInventoryItemComponent.Cast(owner.FindComponent(SCR_HeadgearInventoryItemComponent));
70 if (hatIIC)
71 hatIIC.DetachHelmet(damageContext.damageValue, damageContext.damageType, damageContext.hitDirection, damageContext.hitPosition, character);
72 }
73}
void KnockOffTheHelmet(notnull BaseDamageContext damageContext)
override bool HijackDamageHandling(notnull BaseDamageContext damageContext)
We hijack damage on armor, and use it to damage the character. Always return true on the hijack to en...
override bool FilterContact(IEntity owner, IEntity other, Contact contact)
Armor doesn't take collisiondamage.
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
SCR_VehicleDamageManagerComponent GetDamageManager()
proto external Managed FindComponent(typename typeName)
proto external IEntity GetParent()
void ArmorHitEventEffects(float damage)
Function called from SCR_ArmorDamageManagerComponent in case player is shot in armor....
void ArmorHitEventDamage(EDamageType type, float damage, IEntity instigator)
Function called from SCR_ArmorDamageManagerComponent in case player is shot in armor....
IEntity GetOwner()
Owner entity of the fuel tank.
SCR_FieldOfViewSettings Attribute
EDamageType
Definition EDamageType.c:13