Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
actionattachexplosivestrigger.c
Go to the documentation of this file.
2{
3 override void CreateActionComponent()
4 {
5 m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.EXPLOSIVE_ARM);
6 }
7}
8
10{
12 {
13 m_CallbackClass = ActionAttachExplosivesTriggerCB;
14 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
15 m_FullBody = true;
16 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
17
18 m_Text = "#STR_ArmExplosive";
19 }
20
22 {
23 m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
24 m_ConditionItem = new CCINonRuined();
25 }
26
27 override bool ActionConditionContinue(ActionData action_data)
28 {
29 return true;
30 }
31
32 override bool CanBeSetFromInventory()
33 {
34 return true;
35 }
36
37 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
38 {
39 if (target.GetParent())
40 {
41 return false;
42 }
43
44 if (ClaymoreMine.Cast(target.GetObject()))
45 {
46 return false;
47 }
48
49 ExplosivesBase explosive = ExplosivesBase.Cast(target.GetObject());
50 if (explosive)
51 {
52 ClockBase timedTrigger;
53 if (ClockBase.CastTo(timedTrigger, item))
54 {
55 return timedTrigger.IsAlarmOn() && explosive.IsTimerDetonable() && explosive.CanBeArmed();
56 }
57
58 return explosive.CanBeArmed();
59 }
60
61
62 return false;
63 }
64
65 override void OnStartServer(ActionData action_data)
66 {
67 super.OnStartServer(action_data);
68
69 ExplosivesBase item = ExplosivesBase.Cast(action_data.m_Target.GetObject());
70 if (item.GetArmSoundset() != string.Empty)
71 item.StartItemSoundServer(SoundConstants.ITEM_EXPLOSIVE_ARM);
72 }
73
74 override void OnEndServer(ActionData action_data)
75 {
76 super.OnEndServer(action_data);
77
78 ExplosivesBase item = ExplosivesBase.Cast(action_data.m_Target.GetObject());
79 if (item.GetArmSoundset() != string.Empty)
80 item.StopItemSoundServer(SoundConstants.ITEM_EXPLOSIVE_ARM);
81 }
82
83 override void OnFinishProgressServer(ActionData action_data)
84 {
85 ClearInventoryReservationEx(action_data);
86
87 ExplosivesBase explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
88 if (explosive)
89 {
90 explosive.OnPlacementComplete(action_data.m_Player, explosive.GetPosition(), action_data.m_Player.GetOrientation());
91 explosive.UnlockTriggerSlots();
92 }
93
94 if (action_data.m_MainItem.IsInherited(RemoteDetonator))
95 {
97
98 return;
99 }
100 else
101 {
102 AttachItem(action_data);
103 }
104 }
105
106 override void OnFinishProgressClient(ActionData action_data)
107 {
108 ClearInventoryReservationEx(action_data);
109
110 ExplosivesBase explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
111 if (explosive)
112 {
113 explosive.UnlockTriggerSlots();
114 }
115
116 if (!action_data.m_MainItem.IsInherited(RemoteDetonator))
117 {
118 AttachItem(action_data);
119 }
120 }
121
122 protected void CreateRemoteDetonatorReceiverAsAttachment(ActionData action_data)
123 {
124 ExplosivesBase explosive;
125 if (action_data.m_Target.IsProxy())
126 {
127 explosive = ExplosivesBase.Cast(action_data.m_Target.GetParent());
128 }
129 else
130 {
131 explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
132 }
133
134 if (explosive && action_data.m_MainItem)
135 {
136 explosive.UnlockTriggerSlots();
137 RemoteDetonatorTrigger.SpawnInPlayerHands(action_data.m_Player, explosive);
138 }
139 }
140
141 protected void AttachItem(ActionData action_data)
142 {
143 EntityAI targetEAI;
144 if (action_data.m_Target.IsProxy())
145 {
146 targetEAI = EntityAI.Cast(action_data.m_Target.GetParent());
147 }
148 else
149 {
150 targetEAI = EntityAI.Cast(action_data.m_Target.GetObject());
151 }
152
153 if (targetEAI && action_data.m_MainItem)
154 {
155 int slotId = InventorySlots.GetSlotIdFromString(action_data.m_MainItem.GetExplosiveTriggerSlotName());
156 action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx(targetEAI, action_data.m_MainItem, slotId);
157 }
158 }
159}
ActionAttachExplosivesTriggerCB ActionContinuousBaseCB ActionAttachExplosivesTrigger()
void CreateRemoteDetonatorReceiverAsAttachment(ActionData action_data)
void AttachItem(ActionData action_data)
int m_CommandUID
Definition actionbase.c:31
ActionData m_ActionData
void ClearInventoryReservationEx(ActionData action_data)
bool CanBeSetFromInventory()
Definition actionbase.c:319
void CreateConditionComponents()
Definition actionbase.c:230
void OnFinishProgressClient(ActionData action_data)
void OnFinishProgressServer(ActionData action_data)
override void OnStartServer(ActionData action_data)
override bool ActionConditionContinue(ActionData action_data)
override void OnEndServer(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
provides access to slot configuration
static RemoteDetonatorTrigger SpawnInPlayerHands(notnull EntityAI pEntity, EntityAI deviceToPair=null)
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602