DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionLightItemOnFire.c
См. документацию.
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
18 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
19 m_Text = "#ignite";
20 }
21
23 {
24 m_ConditionTarget = new CCTNonRuined( UAMaxDistances.DEFAULT );
25 m_ConditionItem = new CCINonRuined;
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 targetItem = ItemBase.Cast(target.GetObject());
73
74 if (targetItem && item)
75 {
76 // when igniting item on the ground with igniter in hands
77 if (!targetItem.IsIgnited() && !IsItemInCargoOfSomething(targetItem) && item.CanIgniteItem(targetItem) && targetItem.CanBeIgnitedBy(item))
78 {
79 // oven stage of standard fireplace
80 if (targetItem.IsKindOf("Fireplace"))
81 {
82 if (Fireplace.Cast(targetItem).IsOven())
83 return true;
84
85 if (Fireplace.CanIgniteEntityAsFireplace(targetItem))
86 return true;
87
88 return false;
89 }
90
91 return true;
92 }
93 // when igniting item in hands from something on ground
94 else if (!item.IsIgnited() && !IsItemInCargoOfSomething(item) && targetItem.CanIgniteItem(item) && item.CanBeIgnitedBy(targetItem))
95 {
96 return true;
97 }
98 }
99
100 return false;
101 }
102
103 override void OnFinishProgressServer( ActionData action_data )
104 {
105 ClearActionJuncture(action_data);
106 ItemBase target_item = ItemBase.Cast( action_data.m_Target.GetObject() );
107 ItemBase item = action_data.m_MainItem;
108
109 bool is_ignition_successful;
110 ItemBase ignited_item; //item that was lit on fire
111 ItemBase fire_source_item; //item that was the source of fire
112
113 if ( item.CanIgniteItem( target_item ) )
114 {
115 is_ignition_successful = target_item.IsThisIgnitionSuccessful( item );
116 ignited_item = target_item;
117 fire_source_item = item;
118 }
119 else if ( item.CanBeIgnitedBy( target_item ) )
120 {
121 is_ignition_successful = target_item.IsTargetIgnitionSuccessful( item );
122 ignited_item = item;
123 fire_source_item = target_item;
124 }
125
126 if ( is_ignition_successful )
127 {
128 fire_source_item.OnIgnitedTarget( ignited_item );
129 ignited_item.OnIgnitedThis( fire_source_item );
130 }
131 else
132 {
133 fire_source_item.OnIgnitedTargetFailed( ignited_item );
134 ignited_item.OnIgnitedThisFailed( fire_source_item );
135 }
136 }
137
138 //setup
139 override bool SetupAction( PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
140 {
141 if ( super.SetupAction( player, target, item, action_data, extra_data ) )
142 {
143 ItemBase target_item = ItemBase.Cast( target.GetObject() );
144 if ( target_item )
145 {
146 SetIgnitingAnimation( target_item );
147 }
148
149 return true;
150 }
151
152 return false;
153 }
154
155 void SetIgnitingAnimation( ItemBase target_item )
156 {
157 if ( target_item.HasFlammableMaterial() )
158 {
159 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_STARTFIRE;
160 }
161 else
162 {
163 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
164 }
165 }
166}
int m_CommandUID
Определения ActionBase.c:31
int m_StanceMask
Определения ActionBase.c:33
ActionBase ActionData
Определения ActionBase.c:30
bool IsItemInCargoOfSomething(ItemBase item)
Определения ActionLightItemOnFire.c:40
void SetIgnitingAnimation(ItemBase target_item)
Определения ActionLightItemOnFire.c:155
ActionLightItemOnFireCB ActionContinuousBaseCB ActionLightItemOnFire()
Определения ActionLightItemOnFire.c:11
class ActionTargets ActionTarget
void FireworksBase()
Определения FireworksBase.c:18
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1083
bool CanBePerformedFromQuickbar()
Определения ActionBase.c:303
bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionBase.c:156
void CreateConditionComponents()
Определения ActionBase.c:230
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void OnFinishProgressServer(ActionData action_data)
Определения ActionContinuousBase.c:283
override void CreateActionComponent()
Определения ActionLightItemOnFire.c:3
override bool ActionConditionContinue(ActionData action_data)
Определения AnimatedActionBase.c:235
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения AnimatedActionBase.c:240
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
proto native int GetIdx()
returns index of cargo if current type is Cargo / ProxyCargo
InventoryLocation.
Определения InventoryLocation.c:29
override bool IsThisIgnitionSuccessful(EntityAI item_source=NULL)
Определения BandageDressing.c:32
override bool HasFlammableMaterial()
Определения BandageDressing.c:6
override bool IsIgnited()
Определения Blowtorch.c:76
override void OnIgnitedThis(EntityAI fire_source)
Определения BandageDressing.c:27
override void OnIgnitedTargetFailed(EntityAI target_item)
Определения HandDrillKit.c:17
override void OnIgnitedTarget(EntityAI target_item)
Определения BandageDressing.c:23
override bool CanBeIgnitedBy(EntityAI igniter=NULL)
Определения BandageDressing.c:11
override bool CanIgniteItem(EntityAI ignite_target=NULL)
Определения BandageDressing.c:18
Определения InventoryItem.c:731
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:112
const float FIREPLACE_IGNITE
Определения ActionConstants.c:96
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602