Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_InspectCasualtyUserAction.c
Go to the documentation of this file.
2{
3 //------------------------------------------------------------------------------------------------
4 override bool CanBeShownScript(IEntity user)
5 {
6 ChimeraCharacter userChar = ChimeraCharacter.Cast(user);
8 if (!userChar || !ownerChar)
9 return false;
10
11 if (userChar == ownerChar)
12 return false;
13
14 SCR_CharacterDamageManagerComponent damageMan = SCR_CharacterDamageManagerComponent.Cast(ownerChar.GetDamageManager());
15 if (!damageMan)
16 return false;
17
18 HitZone hz = damageMan.GetDefaultHitZone();
19 if (hz.GetDamageState() == EDamageState.UNDAMAGED)
20 {
21 SCR_CharacterBloodHitZone bloodHZ = damageMan.GetBloodHitZone();
22 if (!bloodHZ)
23 return false;
24
25 if (bloodHZ.GetDamageState() == EDamageState.UNDAMAGED)
26 return false;
27 }
28
29 CompartmentAccessComponent userCompAccessComp = userChar.GetCompartmentAccessComponent();
30 CompartmentAccessComponent targetCompAccessComp = ownerChar.GetCompartmentAccessComponent();
31 if (!userCompAccessComp || !targetCompAccessComp)
32 return false;
33
34 IEntity userVeh = userCompAccessComp.GetVehicleIn(userChar);
35 IEntity targetVeh = targetCompAccessComp.GetVehicleIn(ownerChar);
36
37 // If inspector and target are not in vehicle return true
38 if (!userVeh && !targetVeh)
39 return CanBePerformedScript(user);
40
41 // If inspector and target are both in vehicle, check if they're in the same one, and if so, return true
42 if (userVeh && targetVeh && targetVeh == userVeh)
43 return CanBePerformedScript(user);
44
45 return false;
46 }
47
48 //------------------------------------------------------------------------------------------------
49 override bool CanBePerformedScript(IEntity user)
50 {
52 if (!char)
53 return false;
54
55 // Don't inspect dead people
56 CharacterControllerComponent controller = char.GetCharacterController();
57 if (controller.GetLifeState() == ECharacterLifeState.DEAD)
58 return false;
59
60 // Don't show inspect userAction when already showing SCR_InspectCasualtyWidget
61 SCR_InspectCasualtyWidget casualtyInspectDisplay;
62 array<BaseInfoDisplay> infoDisplays = {};
63
64 PlayerController playerController = GetGame().GetPlayerController();
65 if (!playerController)
66 return false;
67
68 HUDManagerComponent hudMan = playerController.GetHUDManagerComponent();
69 if (!hudMan)
70 return false;
71
72 hudMan.GetInfoDisplays(infoDisplays);
73
74 foreach (BaseInfoDisplay baseInfoDisplays : infoDisplays)
75 {
76 casualtyInspectDisplay = SCR_InspectCasualtyWidget.Cast(baseInfoDisplays);
77 if (!casualtyInspectDisplay)
78 continue;
79
80 if (casualtyInspectDisplay.IsActive() && casualtyInspectDisplay.m_Target == GetOwner())
81 return false;
82 }
83
84 return true;
85 }
86
87 //------------------------------------------------------------------------------------------------
88 override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
89 {
90 array<BaseInfoDisplay> infoDisplays = {};
91 GetGame().GetPlayerController().GetHUDManagerComponent().GetInfoDisplays(infoDisplays);
92 foreach (BaseInfoDisplay baseInfoDisplays : infoDisplays)
93 {
94 SCR_InspectCasualtyWidget casualtyInspectDisplay = SCR_InspectCasualtyWidget.Cast(baseInfoDisplays);
95 if (!casualtyInspectDisplay)
96 continue;
97
98 casualtyInspectDisplay.SetTarget(pOwnerEntity);
99 casualtyInspectDisplay.ShowInspectCasualtyWidget(pOwnerEntity);
100 return;
101 }
102 }
103
104 //------------------------------------------------------------------------------------------------
105 override void OnActionStart(IEntity pUserEntity)
106 {
107 ChimeraCharacter char = ChimeraCharacter.Cast(pUserEntity);
108 if (!char)
109 return;
110
111 CharacterControllerComponent contr = char.GetCharacterController();
112 if(!contr)
113 return;
114
115 if (contr.CanPartialLower() && !contr.IsPartiallyLowered())
116 contr.SetPartialLower(true);
117 }
118
119 //------------------------------------------------------------------------------------------------
121 override bool HasLocalEffectOnlyScript()
122 {
123 return true;
124 }
125
126 //------------------------------------------------------------------------------------------------
128 override bool CanBroadcastScript()
129 {
130 return false;
131 };
132}
ArmaReforgerScripted GetGame()
Definition game.c:1398
override bool CanBroadcastScript()
override bool HasLocalEffectOnlyScript()
proto external IEntity GetOwner()
Returns the parent entity of this action.
Blood - does not receive damage directly, only via scripted events.
bool ShowInspectCasualtyWidget(IEntity targetCharacter)
Start showing the widget.
ECharacterLifeState
EDamageState
@ PerformAction