DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnWorkStart()

override void GetBurningMaterial::OnWorkStart ( )

См. определение в файле Broom.c строка 159

160{
161 override void Init()
162 {
163 super.Init();
164 m_DecraftResult = "LongWoodenStick";
165 m_ParticleLocalPos = Vector(0, 1.2, 0);
166 }
167
168 override void SetActions()
169 {
170 super.SetActions();
171
174 }
175
176 override bool CanReceiveUpgrade()
177 {
178 return false;
179 }
180
181 override void OnWorkStart()
182 {
183 super.OnWorkStart();
185 }
186
187 override void ApplyResultModifications(ItemBase result)
188 {
189 result.SetHealth(result.GetHealthLevelValue(2,""));
190 result.SetQuantity(1);
191 }
192
193 override bool CanTransformIntoStick()
194 {
195 if ( GetGame().IsServer() && !IsIgnited() && GetEnergy() < 1 && !IsSetForDeletion())
196 return true;
197 else
198 return false;
199 }
200
201
202 override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
203 {
204 super.EEHitBy(damageResult, damageType, source, component, dmgZone, ammo, modelPos, speedCoef);
205
206 GetCompEM().SetEnergy0To1(GetHealth01("",""));
207 }
208
209
210 override void CalculateQuantity()
211 {
212 if (GetGame().IsServer())
213 {
214 float currentHealth01 = GetHealth01();
215 float currentEnergy01 = GetCompEM().GetEnergy0To1();
216
217 //Health needs to copy internal energy, but only if that means it will be going down from its current value(the item can't heal itself after obtaining damage just because it has full internal energy)
218 SetHealth01("","",Math.Min(currentHealth01,currentEnergy01));
219 //Energy needs to copy health, but only if it is higher(in 01 terms) than health, that means if an item with full energy gets damaged and lit, the internal energy needs to be adjusted to follow the health. Situations where internal energy is lower than health are handled on the line above
220 GetCompEM().SetEnergy0To1(GetHealth01());
221 }
222 }
223
224 override void UpdateParticle()
225 {
226 float normalizedQuant = GetQuantity() / GetQuantityMax();
227
228 if (!m_FireParticle)
229 {
230 m_FireParticle = ParticleManager.GetInstance().PlayOnObject(ParticleList.BROOM_TORCH_T1, this, m_ParticleLocalPos);
231 }
232 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.VELOCITY, 1.0);
233 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.VELOCITY_RND, 1.0);
234 if (m_FireParticle)
235 {
236 float scale = Math.Max(normalizedQuant * 2.4, 0.4);
237
238 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.SIZE, scale);
239 }
240 }
241
242 // DEBUG BELLOW
243 void DebugSetHealthAndEnergy(float time)
244 {
245 float max_energy = GetCompEM().GetEnergyMaxPristine();
246 float health01 = Math.InverseLerp(0, max_energy, time);
247 SetHealth01("","", health01);
248 GetCompEM().SetEnergy( time );
249 }
250
251 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
252 {
253 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_VERY_SHORT, "SetBurnTimeTo15Secs", FadeColors.LIGHT_GREY));
254 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_SHORT, "SetBurnTimeTo1Min", FadeColors.LIGHT_GREY));
255 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_MEDIUM, "SetBurnTimeTo10Min", FadeColors.LIGHT_GREY));
256 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_LONG, "SetBurnTimeToMax", FadeColors.LIGHT_GREY));
257 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.SEPARATOR, "___________________________", FadeColors.LIGHT_GREY));
258
259 super.GetDebugActions(outputList);
260 }
261
262 override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
263 {
264 if (super.OnAction(action_id, player, ctx))
265 return true;
266 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
267 {
268 if (action_id == EActions.BROOM_BURN_VERY_SHORT)
269 {
271 OnIgnitedThis(null);
272 }
273 else if (action_id == EActions.BROOM_BURN_SHORT)
274 {
276 OnIgnitedThis(null);
277 }
278 else if (action_id == EActions.BROOM_BURN_MEDIUM)
279 {
281 OnIgnitedThis(null);
282 }
283 else if (action_id == EActions.BROOM_BURN_LONG)
284 {
285 DebugSetHealthAndEnergy(GetCompEM().GetEnergyMaxPristine());
286 OnIgnitedThis(null);
287 }
288 }
289 return false;
290 }
291
292}
293
294class Broom: BroomBase
295{
296 override string GetBurningMaterial()
297 {
298 return "DZ\\gear\\tools\\data\\broom_emissive.rvmat";
299 }
300
301 override string GetBurntMaterial()
302 {
303 return "DZ\\gear\\tools\\data\\broom_burn.rvmat";
304 }
305}
Param4< int, int, string, int > TSelectableActionInfoWithColor
Определения EntityAI.c:97
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
override void UpdateParticle()
Определения Broom.c:202
override void CalculateQuantity()
Определения Broom.c:188
override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
Определения Broom.c:229
override bool CanReceiveUpgrade()
Определения Broom.c:154
override void SetActions()
Определения Broom.c:146
override void OnWorkStart()
Определения Broom.c:159
override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
Определения Broom.c:240
override bool CanTransformIntoStick()
Определения Broom.c:171
override void Init()
Launched from 'DayZGame.DeferredInit' to make earlier access, use, and updates impossible (downside o...
Определения Broom.c:139
override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
Определения Broom.c:180
void DebugSetHealthAndEnergy(float time)
Определения Broom.c:221
override void ApplyResultModifications(ItemBase result)
Определения Broom.c:165
EActions
Определения EActions.c:2
override void OnIgnitedThis(EntityAI fire_source)
Executed on Server when some item ignited this one.
Определения FireworksBase.c:96
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
override float GetQuantity()
Определения ItemBase.c:8154
float GetEnergy()
Определения ItemBase.c:8278
override int GetQuantityMax()
Определения ItemBase.c:8106
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Определения ParticleManager.c:88
Определения Broom.c:2
Определения Building.c:6
override void SetActions()
Определения Torch.c:754
string GetBurningMaterial()
Определения Torch.c:796
string GetBurntMaterial()
Определения Torch.c:801
Определения Torch.c:2
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfWoodenPlanks.c:88
Определения InventoryItem.c:731
Определения EnMath.c:7
static const int BROOM_TORCH_T1
Определения ParticleList.c:78
Определения ParticleList.c:12
Определения DamageSystem.c:2
Определения EnConvert.c:106
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Min(float x, float y)
Returns smaller of two given values.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
EmitorParam
Определения EnVisual.c:114
const int SAT_DEBUG_ACTION
Определения constants.c:452