DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionLightItemOnFire.c
Go to the documentation of this file.
2{
3 override void CreateActionComponent()
4 {
6 }
7}
8
10{
12 {
13 m_CallbackClass = ActionLightItemOnFireCB;
14 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_STARTFIRE;
15 m_FullBody = true;
16 m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
17
19 m_Text = "#ignite";
20 }
21
23 {
26 }
27
29 {
30 return true;
31 }
32
33 // Removed as a fix for igniting Torch by Matchbox through drag&drop in inventory
34 /*override bool CanBePerformedFromInventory()
35 {
36 return true;
37 }*/
38
39 // Check if ignite candidate is in cargo of something or not.
41 {
42 if ( item.GetInventory() )
43 {
45 item.GetInventory().GetCurrentInventoryLocation(loc);
46
47 if ( loc.GetIdx() > -1 )
48 {
49 return true;
50 }
51 }
52
53 return false;
54 }
55
56 override bool ActionConditionContinue( ActionData action_data )
57 {
58 FireworksBase fireworks = FireworksBase.Cast( action_data.m_Target.GetObject() );
59
60 if (fireworks)
61 {
62 return true;//something might begin occluding the item after the ignition began, we don't want that to cancel the ignition process, not the prettiest solution, but it works
63 }
64 else
65 {
66 return ActionCondition(action_data.m_Player, action_data.m_Target,action_data.m_MainItem);
67 }
68 }
69
70 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
71 {
72 ItemBase target_item = ItemBase.Cast(target.GetObject());
73
74 if (target_item && item)
75 {
76 // when igniting item on the ground with igniter in hands
77 if (!target_item.IsIgnited() && !IsItemInCargoOfSomething(target_item) && item.CanIgniteItem(target_item) && target_item.CanBeIgnitedBy(item))
78 {
79 // oven stage of standard fireplace
80 if (target_item.IsKindOf("Fireplace"))
81 {
82 if (Fireplace.Cast(target_item).IsOven())
83 {
84 return true;
85 }
86
87 if (Fireplace.CanIgniteEntityAsFireplace(target_item))
88 {
89 return true;
90 }
91
92 return false;
93 }
94
95 return true;
96 }
97 // when igniting item in hands from something on ground
98 else if (!item.IsIgnited() && !IsItemInCargoOfSomething(item) && target_item.CanIgniteItem(item) && item.CanBeIgnitedBy(target_item))
99 {
100 return true;
101 }
102 }
103
104 return false;
105 }
106
107 override void OnFinishProgressServer( ActionData action_data )
108 {
109 ItemBase target_item = ItemBase.Cast( action_data.m_Target.GetObject() );
110 ItemBase item = action_data.m_MainItem;
111
112 bool is_ignition_successful;
113 ItemBase ignited_item; //item that was lit on fire
114 ItemBase fire_source_item; //item that was the source of fire
115
116 if ( item.CanIgniteItem( target_item ) )
117 {
118 is_ignition_successful = target_item.IsThisIgnitionSuccessful( item );
119 ignited_item = target_item;
120 fire_source_item = item;
121 }
122 else if ( item.CanBeIgnitedBy( target_item ) )
123 {
124 is_ignition_successful = target_item.IsTargetIgnitionSuccessful( item );
125 ignited_item = item;
126 fire_source_item = target_item;
127 }
128
129 if ( is_ignition_successful )
130 {
131 fire_source_item.OnIgnitedTarget( ignited_item );
132 ignited_item.OnIgnitedThis( fire_source_item );
133 }
134 else
135 {
136 fire_source_item.OnIgnitedTargetFailed( ignited_item );
137 ignited_item.OnIgnitedThisFailed( fire_source_item );
138 }
139 }
140
141 //setup
142 override bool SetupAction( PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
143 {
144 if ( super.SetupAction( player, target, item, action_data, extra_data ) )
145 {
146 ItemBase target_item = ItemBase.Cast( target.GetObject() );
147 if ( target_item )
148 {
149 SetIgnitingAnimation( target_item );
150 }
151
152 return true;
153 }
154
155 return false;
156 }
157
158 void SetIgnitingAnimation( ItemBase target_item )
159 {
160 if ( target_item.HasFlammableMaterial() )
161 {
162 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_STARTFIRE;
163 }
164 else
165 {
166 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
167 }
168 }
169}
void CreateConditionComponents()
Definition ActionBase.c:218
protected float m_SpecialtyWeight
Definition ActionBase.c:68
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56
bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Definition ActionBase.c:144
bool CanBePerformedFromQuickbar()
Definition ActionBase.c:291
protected string m_Text
Definition ActionBase.c:49
protected bool m_FullBody
Definition ActionBase.c:52
protected int m_StanceMask
Definition ActionBase.c:53
bool IsItemInCargoOfSomething(ItemBase item)
void SetIgnitingAnimation(ItemBase target_item)
ActionLightItemOnFireCB ActionContinuousBaseCB ActionLightItemOnFire()
class ActionTargets ActionTarget
void FireworksBase()
protected ActionData m_ActionData
protected void OnFinishProgressServer(ActionData action_data)
ItemBase m_MainItem
Definition ActionBase.c:28
PlayerBase m_Player
Definition ActionBase.c:33
ref CABase m_ActionComponent
Definition ActionBase.c:30
ref ActionTarget m_Target
Definition ActionBase.c:32
override void CreateActionComponent()
override bool ActionConditionContinue(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
InventoryLocation.
proto native int GetIdx()
returns index of cargo if current type is Cargo / ProxyCargo
override void OnIgnitedTargetFailed(EntityAI target_item)
override void OnIgnitedTarget(EntityAI ignited_item)
override bool CanBeIgnitedBy(EntityAI igniter=NULL)
override bool IsIgnited()
Definition Blowtorch.c:76
override void OnIgnitedThis(EntityAI fire_source)
override bool CanIgniteItem(EntityAI ignite_target=NULL)
override bool IsThisIgnitionSuccessful(EntityAI item_source=NULL)
override bool HasFlammableMaterial()
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Definition param.c:12
const float DEFAULT
const float FIREPLACE_IGNITE
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602