DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Fireplace.c
См. документацию.
1class Fireplace extends FireplaceBase
2{
4 protected bool m_ContactDeletionProcessing = false;
5
25
34
35 override bool IsBaseFireplace()
36 {
37 return true;
38 }
39
40 override bool CanObstruct()
41 {
42 return IsOven();
43 }
44
45 override bool CanProxyObstruct()
46 {
47 return IsOven();
48 }
49
50 override void EOnTouch( IEntity other, int extra )
51 {
52 ContactEvent( other, GetPosition() );
53 }
54
55 override void EOnContact( IEntity other, Contact extra )
56 {
57 ContactEvent( other, extra.Position );
58 }
59
60 void ContactEvent( IEntity other, vector position )
61 {
62 if (GetGame().IsServer() && !m_ContactEventProcessing && dBodyIsActive(this) && !IsSetForDeletion())
64 }
65
66 override protected void EOnPostSimulate(IEntity other, float timeSlice)
67 {
68 super.EOnPostSimulate(other,timeSlice);
69
71 {
72 MiscGameplayFunctions.ThrowAllItemsInInventory(this, 0);
75 }
76 }
77
78 //attachments
79 override bool CanReceiveAttachment( EntityAI attachment, int slotId )
80 {
81 if ( !super.CanReceiveAttachment(attachment, slotId) )
82 return false;
83
84 ItemBase item = ItemBase.Cast( attachment );
85
86 //cookware
87 if ( ( item.Type() == ATTACHMENT_CAULDRON ) || ( item.Type() == ATTACHMENT_COOKING_POT ) )
88 {
89 if ( FindAttachmentBySlotName( "CookingTripod" ) || IsOven() )
90 return true;
91 return false;
92 }
93 if ( item.Type() == ATTACHMENT_FRYING_PAN )
94 {
95 if ( IsOven() )
96 return true;
97 return false;
98 }
99
100 // food on direct cooking slots
101 if ( item.IsKindOf( "Edible_Base" ) )
102 {
103 if ( IsOven() )
104 return true;
105 return false;
106 }
107 //tripod
108
109 if ( item.IsInherited(TripodBase) )
110 {
111 if (!IsOven() && !GetHierarchyParent())
112 return true;
113 return false;
114 }
115
116 //stones
117 if ( item.Type() == ATTACHMENT_STONES )
118 {
119 if ( !GetHierarchyParent() && !IsBurning() )
120 return true;
121 return false;
122 }
123
124 return true;
125 }
126
127 override bool CanDisplayAttachmentSlot( int slot_id )
128 {
129 string slot_name = InventorySlots.GetSlotName(slot_id);
130 if ( super.CanDisplayAttachmentSlot(slot_id) )
131 {
132 if ( slot_name != "CookingEquipment" || FindAttachmentBySlotName( "CookingTripod" ) )
133 return true;
134 }
135
136 return false;
137 }
138
139 override bool CanLoadAttachment( EntityAI attachment )
140 {
141 if ( !super.CanLoadAttachment(attachment) )
142 return false;
143
144 ItemBase item = ItemBase.Cast( attachment );
145
146 //cookware
147 if ( ( item.Type() == ATTACHMENT_CAULDRON ) || ( item.Type() == ATTACHMENT_COOKING_POT ) )
148 {
149 //if ( IsItemTypeAttached( ATTACHMENT_TRIPOD ) /*|| IsOven()*/ )
150 return true;
151 }
152 if ( item.Type() == ATTACHMENT_FRYING_PAN )
153 {
154 //if ( IsOven() )
155 return true;
156 }
157
158 // food on direct cooking slots
159 //if ( IsOven() )
160 //{
161 if ( item.IsKindOf( "Edible_Base" ) )
162 return true;
163 //}
164 //tripod
165 if ( item.Type() == ATTACHMENT_TRIPOD )
166 {
167 if ( GetHierarchyParent() == NULL )
168 return true;
169 }
170
171 //stones
172 if ( item.Type() == ATTACHMENT_STONES )
173 {
174 if ( GetHierarchyParent() /*|| IsBurning()*/ )
175 return false;
176
177 return true;
178 }
179
180 return true;
181 }
182
183 override bool CanReleaseAttachment( EntityAI attachment )
184 {
185 if (!super.CanReleaseAttachment(attachment))
186 {
187 return false;
188 }
189
190 ItemBase item = ItemBase.Cast(attachment);
191 //stones
192 if (item.Type() == ATTACHMENT_STONES)
193 {
194 if (IsBurning())
195 {
196 return false;
197 }
198
199 int stone_quantity = item.GetQuantity();
200 if (HasStoneCircle() && stone_quantity <= 8)
201 {
202 return false;
203 }
204
205 if (IsOven())
206 {
207 return false;
208 }
209 }
210
211 return true;
212 }
213
214 override void EEItemAttached(EntityAI item, string slot_name)
215 {
216 super.EEItemAttached(item, slot_name);
217
218 ItemBase item_base = ItemBase.Cast(item);
219
220 if (IsKindling(item_base) || IsFuel(item_base))
221 {
222 AddToFireConsumables(item_base);
223 }
224
225 //cookware
226 if (item_base.IsCookware())
227 SetCookingEquipment(item_base);
228
229 if (GetGame().IsServer() && !IsOven())
230 {
231 if (item_base.Type() == ATTACHMENT_COOKING_POT)
232 item_base.SetAnimationPhase(ANIMATION_COOKWARE_HANDLE, 0);
233 if (item.Type() == ATTACHMENT_CAULDRON)
234 item_base.SetAnimationPhase(ANIMATION_CAULDRON_HANDLE, 0);
235 }
236
237 // direct cooking/smoking slots
238 bool edible_base_attached = false;
239 switch (slot_name)
240 {
241 case "DirectCookingA":
242 m_DirectCookingSlots[0] = item_base;
243 edible_base_attached = true;
244 break;
245 case "DirectCookingB":
246 m_DirectCookingSlots[1] = item_base;
247 edible_base_attached = true;
248 break;
249 case "DirectCookingC":
250 m_DirectCookingSlots[2] = item_base;
251 edible_base_attached = true;
252 break;
253
254 case "SmokingA":
255 m_SmokingSlots[0] = item_base;
256 edible_base_attached = true;
257 break;
258 case "SmokingB":
259 m_SmokingSlots[1] = item_base;
260 edible_base_attached = true;
261 break;
262 case "SmokingC":
263 m_SmokingSlots[2] = item_base;
264 edible_base_attached = true;
265 break;
266 case "SmokingD":
267 m_SmokingSlots[3] = item_base;
268 edible_base_attached = true;
269 break;
270 }
271
272 //TODO
273 //add SetViewIndex when attaching various attachments
274
276 }
277
278 override void EEItemDetached(EntityAI item, string slot_name)
279 {
280 super.EEItemDetached(item, slot_name);
281
282 ItemBase item_base = ItemBase.Cast(item);
283
284 if (IsKindling(item_base) || IsFuel(item_base))
285 {
287 }
288
289 //cookware
290 if (item_base.IsCookware())
291 {
292 ClearCookingEquipment(item_base);
293 item_base.RemoveAudioVisualsOnClient();
294 }
295
296 if (item_base.IsLiquidContainer()) //boiling bottle effects stop
297 item_base.RemoveAudioVisualsOnClient();
298
299 if (GetGame().IsServer())
300 {
301 if (item_base.Type() == ATTACHMENT_COOKING_POT)
302 item_base.SetAnimationPhase(ANIMATION_COOKWARE_HANDLE, 1);
303 if (item_base.Type() == ATTACHMENT_CAULDRON)
304 item_base.SetAnimationPhase(ANIMATION_CAULDRON_HANDLE, 1);
305 }
306
307 // direct cooking/smoking slots
308 switch (slot_name)
309 {
310 case "DirectCookingA":
311 m_DirectCookingSlots[0] = null;
312 break;
313 case "DirectCookingB":
314 m_DirectCookingSlots[1] = null;
315 break;
316 case "DirectCookingC":
317 m_DirectCookingSlots[2] = null;
318 break;
319
320 case "SmokingA":
321 m_SmokingSlots[0] = null;
322 break;
323 case "SmokingB":
324 m_SmokingSlots[1] = null;
325 break;
326 case "SmokingC":
327 m_SmokingSlots[2] = null;
328 break;
329 case "SmokingD":
330 m_SmokingSlots[3] = null;
331 break;
332 }
333
334 //no attachments left, no cargo items & no ashes are present
337 }
338
339
340 override void SetCookingEquipment(ItemBase equipment)
341 {
342 super.SetCookingEquipment(equipment);
343
344 TripodBase stand = TripodBase.Cast(FindAttachmentBySlotName("CookingTripod"));
345 if (stand)
346 {
347 if (equipment)
348 stand.LockToParent();
349 else
350 stand.UnlockFromParent();
351 }
352 }
353
354 override void OnBeforeTryDelete()
355 {
356 super.OnBeforeTryDelete();
357
358 MiscGameplayFunctions.DropAllItemsInInventoryInBounds(this, m_HalfExtents);
359 }
360
361 override bool IsPrepareToDelete()
362 {
363 return GetInventory().AttachmentCount() == 0 && !IsBurning() && !HasAshes();
364 }
365
366 //CONDITIONS
367 //this into/outo parent.Cargo
368 override bool CanPutInCargo(EntityAI parent)
369 {
370 if (!super.CanPutInCargo(parent))
371 {
372 return false;
373 }
374
375 if (HasAshes() || IsBurning() || HasStones() || HasStoneCircle() || IsOven() || !IsCargoEmpty() || HasCookingStand())
376 {
377 return false;
378 }
379
380 return true;
381 }
382
383 override bool CanRemoveFromCargo( EntityAI parent )
384 {
385 return true;
386 }
387
388 //cargo item into/outo this.Cargo
389 override bool CanReceiveItemIntoCargo( EntityAI item )
390 {
391 if ( GetHierarchyParent() )
392 return false;
393
394 return super.CanReceiveItemIntoCargo( item );
395 }
396
397 override bool CanLoadItemIntoCargo( EntityAI item )
398 {
399 if (!super.CanLoadItemIntoCargo( item ))
400 return false;
401
402 if ( GetHierarchyParent() )
403 return false;
404
405 return true;
406 }
407
408 //hands
409 override bool CanPutIntoHands(EntityAI parent)
410 {
411 if (!super.CanPutIntoHands(parent))
412 {
413 return false;
414 }
415
416 if (HasAshes() || IsBurning() || HasStones() || HasStoneCircle() || IsOven() || !IsCargoEmpty() || HasCookingStand())
417 {
418 return false;
419 }
420
421 return true;
422 }
423
424 override bool CanDisplayAttachmentCategory( string category_name )
425 {
426 if ( !super.CanDisplayAttachmentCategory( category_name ) )
427 return false;
428
429 if ( IsOven() )
430 {
431 if ( category_name == "CookingEquipment" )
432 return false;
433 if ( ( category_name == "DirectCooking" ) || ( category_name == "Smoking" ) )
434 return true;
435 }
436 else
437 {
438 if ( category_name == "CookingEquipment" )
439 return true;
440 if ( ( category_name == "DirectCooking" ) || ( category_name == "Smoking" ) )
441 return false;
442 }
443 return true;
444 }
445
447 {
448 return false;
449 }
450
452 {
453 return 0.5;
454 }
455
456 //particles
457 override bool CanShowSmoke()
458 {
459 return !IsOven();
460 }
461
462
463 void DestroyClutterCutter( Object clutter_cutter )
464 {
465 GetGame().ObjectDelete( clutter_cutter );
466 }
467
468 override void RefreshPhysics()
469 {
470 super.RefreshPhysics();
471
472 //Oven
473 if ( IsOven() )
474 {
475 RemoveProxyPhysics( ANIMATION_OVEN );
476 AddProxyPhysics( ANIMATION_OVEN );
477 }
478 else
479 {
480 RemoveProxyPhysics( ANIMATION_OVEN );
481 }
482
483 //Tripod
485 {
486 RemoveProxyPhysics( ANIMATION_TRIPOD );
487 AddProxyPhysics( ANIMATION_TRIPOD );
488 }
489 else
490 {
491 RemoveProxyPhysics( ANIMATION_TRIPOD );
492 }
493 }
494
496 {
498 }
499
500 //on store save/load
501 override void OnStoreSave( ParamsWriteContext ctx )
502 {
503 super.OnStoreSave(ctx);
504
505 if ( GetGame().SaveVersion() >= 110 )
506 {
507 // save stone circle state
508 ctx.Write( m_HasStoneCircle );
509
510 // save stone oven state
511 ctx.Write( m_IsOven );
512 }
513 }
514
515 override bool OnStoreLoad( ParamsReadContext ctx, int version )
516 {
517 if ( !super.OnStoreLoad(ctx, version) )
518 return false;
519
520 if ( version >= 110 )
521 {
522 // read stone circle state
523 if ( !ctx.Read( m_HasStoneCircle ) )
524 {
525 m_HasStoneCircle = false;
526 return false;
527 }
528 // read stone oven state
529 if ( !ctx.Read( m_IsOven ) )
530 {
531 m_IsOven = false;
532 return false;
533 }
534 }
535 return true;
536 }
537
538 override void AfterStoreLoad()
539 {
540 super.AfterStoreLoad();
541
542 if ( IsBurning() )
543 {
544 if ( !m_ClutterCutter )
545 {
547 m_ClutterCutter.SetOrientation( GetOrientation() );
548 }
549 }
550 }
551
552 //================================================================
553 // IGNITION ACTION
554 //================================================================
555
556 // Item-to-item fire distribution
557 override bool HasFlammableMaterial()
558 {
559 return true;
560 }
561
562 override bool CanBeIgnitedBy(EntityAI igniter = NULL)
563 {
564 return HasAnyKindling() && !IsBurning() && !GetHierarchyParent();
565 }
566
567 override bool CanIgniteItem(EntityAI ignite_target = NULL)
568 {
569 return IsBurning();
570 }
571
572 override bool IsIgnited()
573 {
574 return IsBurning();
575 }
576
577 override void OnIgnitedTarget( EntityAI target_item )
578 {
579 }
580
581 override void OnIgnitedThis( EntityAI fire_source )
582 {
583 //remove grass
585 cc_object.SetOrientation ( GetOrientation() );
587
588 //start fire
589 StartFire();
590
591 if ( fire_source )
592 {
593 Man player = fire_source.GetHierarchyRootPlayer();
594
595 if ( player )
596 {
597 EFireIgniteType ignate_type = EFireIgniteType.Unknow;
598
599 if ( fire_source.ClassName() == "Matchbox" )
600 {
601 ignate_type = EFireIgniteType.Matchbox;
602 }
603 else if ( fire_source.ClassName() == "Roadflare" )
604 {
605 ignate_type = EFireIgniteType.Roadflare;
606 }
607 else if ( fire_source.ClassName() == "HandDrillKit" )
608 {
609 ignate_type = EFireIgniteType.HandDrill;
610 }
611
612
613 SyncEvents.SendPlayerIgnatedFireplace( player, ignate_type );
614 }
615 }
616 }
617
618 override bool IsThisIgnitionSuccessful( EntityAI item_source = NULL )
619 {
620 SetIgniteFailure( false );
621 Param1<bool> failure;
622
623 //check kindling
624 if ( !HasAnyKindling() )
625 {
626 return false;
627 }
628
629 //check roof
630 if ( !IsOven() )
631 {
633 {
634 return false;
635 }
636 }
637
638 //check surface
639 if ( IsOnWaterSurface() )
640 {
641 return false;
642 }
643
644 //check wetness
645 if ( IsWet() )
646 {
647 SetIgniteFailure( true );
648
649 failure = new Param1<bool>( GetIgniteFailure() );
650 GetGame().RPCSingleParam( this, FirePlaceFailure.WET, failure, true );
651 return false;
652 }
653
654 // check if the fireplace isnt below a roof
655 // excluding this check whein oven stage
657 if ( !IsOven() && !IsRoofAbove() )
658 {
659 // if not, check if there is strong rain or wind
660 if ( IsRainingAbove() )
661 {
662 SetIgniteFailure( true );
663
664 failure = new Param1<bool>( GetIgniteFailure() );
665 GetGame().RPCSingleParam( this, FirePlaceFailure.WET, failure, true );
666 return false;
667 }
668
669 if ( IsWindy() )
670 {
671 SetIgniteFailure( true );
672
673 failure = new Param1<bool>( GetIgniteFailure() );
674 GetGame().RPCSingleParam( this, FirePlaceFailure.WIND, failure, true );
675 return false;
676 }
677 }
678
679 return true;
680 }
681
682 //================================================================
683 // FIREPLACE ENTITY
684 //================================================================
685 static Fireplace IgniteEntityAsFireplace( notnull EntityAI entity, notnull EntityAI fire_source )
686 {
687 //get player
688 PlayerBase player = PlayerBase.Cast( fire_source.GetHierarchyRootPlayer() );
689
690 //create fireplace
691 Fireplace fireplace = Fireplace.Cast( GetGame().CreateObjectEx( "Fireplace" , entity.GetPosition(), ECE_PLACE_ON_SURFACE ) );
692
693 //attach
694 if ( !GetGame().IsMultiplayer() ) //clear inventory reservation (single player)
695 {
697 entity.GetInventory().GetCurrentInventoryLocation( loc );
698 player.GetInventory().ClearInventoryReservationEx( entity, loc );
699 }
700
701 if ( GetGame().IsServer() && GetGame().IsMultiplayer() )
702 {
703 player.ServerTakeEntityToTargetAttachment( fireplace, entity ); // multiplayer server side
704 }
705 else
706 {
707 player.LocalTakeEntityToTargetAttachment( fireplace, entity ); // single player or multiplayer client side
708 }
709
710 //start fire
711 fireplace.StartFire();
712 fireplace.OnIgnitedThis(fire_source);
713
714 return fireplace;
715 }
716
717 static bool CanIgniteEntityAsFireplace(notnull EntityAI entity)
718 {
719 //check surface
720 if (FireplaceBase.IsEntityOnWaterSurface(entity))
721 {
722 return false;
723 }
724
725 entity.CheckForRoofLimited(); //TODO: limit more severely? Should update at least once during UATimeSpent.FIREPLACE_IGNITE
726 if (!entity.IsRoofAbove())
727 return !FireplaceBase.IsRainingAboveEntity(entity);
728
729 //check ceiling (enough space for smoke)
730 if (IsEntityOnInteriorSurface(entity) && MiscGameplayFunctions.IsUnderRoof(entity, FireplaceBase.MIN_CEILING_HEIGHT))
731 {
732 return false;
733 }
734
735 return true;
736 }
737
738 //================================================================
739 // ADVANCED PLACEMENT
740 //================================================================
741
756}
ActionBuildOvenCB ActionContinuousBaseCB ActionBuildOven()
Определения ActionBuildOven.c:11
ActionBuildStoneCircleCB ActionContinuousBaseCB ActionBuildStoneCircle()
Определения ActionBuildStoneCircle.c:11
ActionDismantleOvenCB ActionContinuousBaseCB ActionDismantleOven()
Определения ActionDismantleOven.c:11
ActionDismantleStoneCircleCB ActionContinuousBaseCB ActionDismantleStoneCircle()
Определения ActionDismantleStoneCircle.c:11
ActionPlaceObjectCB ActiondeployObjectCB ActionPlaceObject()
Определения ActionPlaceObject.c:11
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
vector GetOrientation()
Определения AreaDamageManager.c:306
const int ECE_PLACE_ON_SURFACE
Определения CentralEconomy.c:37
Container_Base m_HalfExtents
EFireIgniteType
Определения EFireIgniteType.c:2
void RefreshFireplaceVisuals()
Определения FireplaceBase.c:665
void RemoveFromFireConsumables(FireConsumable fire_consumable)
Определения FireplaceBase.c:1409
ref UniversalTemperatureSourceSettings m_UTSSettings
Определения FireplaceBase.c:220
static bool IsEntityOnInteriorSurface(notnull EntityAI entity_ai)
Определения FireplaceBase.c:2459
bool HasAnyKindling()
Определения FireplaceBase.c:2366
override void CheckForDestroy()
Определения FireplaceBase.c:652
const string ANIMATION_OVEN
Определения FireplaceBase.c:172
Object m_ClutterCutter
Определения FireplaceBase.c:206
ATTACHMENT_FRYING_PAN
Определения FireplaceBase.c:201
ATTACHMENT_CAULDRON
Определения FireplaceBase.c:202
bool IsCeilingHighEnoughForSmoke()
Определения FireplaceBase.c:2409
void AddToFireConsumables(ItemBase item)
Определения FireplaceBase.c:1382
int PARTICLE_STEAM_END
Определения FireplaceBase.c:115
bool m_HasStoneCircle
Определения FireplaceBase.c:27
bool HasCookingStand()
Определения FireplaceBase.c:2483
int PARTICLE_NORMAL_FIRE
Определения FireplaceBase.c:109
bool IsOnWaterSurface()
Определения FireplaceBase.c:2453
const string OBJECT_CLUTTER_CUTTER
Определения FireplaceBase.c:205
const string ANIMATION_CAULDRON_HANDLE
Определения FireplaceBase.c:175
bool HasAshes()
Определения FireplaceBase.c:1633
bool IsRainingAbove()
Определения FireplaceBase.c:2420
const string ANIMATION_TRIPOD
Определения FireplaceBase.c:171
static bool IsWindy()
Определения FireplaceBase.c:2372
bool HasStones()
Определения FireplaceBase.c:1660
int PARTICLE_FIRE_START
Определения FireplaceBase.c:106
bool IsCargoEmpty()
Определения FireplaceBase.c:2478
bool IsFuel(ItemBase item)
Returns if item attached to fireplace is fuel.
Определения FireplaceBase.c:1573
bool GetIgniteFailure()
Определения FireplaceBase.c:2381
bool IsOnInteriorSurface()
Определения FireplaceBase.c:2466
const float PARAM_SMALL_FIRE_TEMPERATURE
Определения FireplaceBase.c:41
int PARTICLE_NORMAL_SMOKE
Определения FireplaceBase.c:112
ATTACHMENT_STONES
Определения FireplaceBase.c:199
ATTACHMENT_COOKING_POT
Определения FireplaceBase.c:200
bool IsBurning()
Определения FireplaceBase.c:1621
bool IsWet()
Определения FireplaceBase.c:2397
void StartFire(bool force_start=false)
Определения FireplaceBase.c:1742
ItemBase m_DirectCookingSlots[DIRECT_COOKING_SLOT_COUNT]
Определения FireplaceBase.c:101
int PARTICLE_FIRE_END
Определения FireplaceBase.c:113
void SetIgniteFailure(bool failure)
Определения FireplaceBase.c:2386
bool m_IsOven
Определения FireplaceBase.c:26
ATTACHMENT_TRIPOD
Определения FireplaceBase.c:197
bool HasStoneCircle()
Определения FireplaceBase.c:1655
ref UniversalTemperatureSourceLambdaFireplace m_UTSLFireplace
Определения FireplaceBase.c:221
ref UniversalTemperatureSource m_UTSource
Определения FireplaceBase.c:219
int PARTICLE_SMALL_SMOKE
Определения FireplaceBase.c:111
bool IsOven()
Определения FireplaceBase.c:1651
const string ANIMATION_COOKWARE_HANDLE
Определения FireplaceBase.c:174
void ClearCookingEquipment()
DEPRECATED.
Определения FireplaceBase.c:606
FireConsumable GetFireConsumableByItem(ItemBase item)
Определения FireplaceBase.c:1420
ItemBase m_SmokingSlots[SMOKING_SLOT_COUNT]
Определения FireplaceBase.c:102
bool IsKindling(ItemBase item)
Returns if item attached to fireplace is kindling.
Определения FireplaceBase.c:1555
bool m_ThawnSurfaceUnderSupport
size of wetness increment (per FP heating tick) added to overall FP wetness when ignited on wet surfa...
Определения FireplaceBase.c:227
bool IsItemTypeAttached(typename item_type)
Определения FireplaceBase.c:1591
int PARTICLE_SMALL_FIRE
Определения FireplaceBase.c:108
const float PARAM_OUTDOOR_FIRE_TEMPERATURE
maximum fireplace temperature of a normal fire (degree Celsius)
Определения FireplaceBase.c:43
override void CheckForRoofLimited(float timeTresholdMS=3000)
Roof check for entity, limited by time (anti-spam solution)
Определения ItemBase.c:8871
proto native void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
override ScriptCallQueue GetCallQueue(int call_category)
Определения DayZGame.c:1187
proto native Object CreateObjectEx(string type, vector pos, int iFlags, int iRotation=RF_DEFAULT)
Creates object of certain type.
proto native void ObjectDelete(Object obj)
Определения EnPhysics.c:326
override void OnBeforeTryDelete()
Определения Fireplace.c:354
void ContactEvent(IEntity other, vector position)
Определения Fireplace.c:60
void InitializeTemperatureSources()
Определения Fireplace.c:26
override void SetActions()
Определения Fireplace.c:742
override bool IsBaseFireplace()
Определения Fireplace.c:35
static Fireplace IgniteEntityAsFireplace(notnull EntityAI entity, notnull EntityAI fire_source)
Определения Fireplace.c:685
override void EOnTouch(IEntity other, int extra)
Определения Fireplace.c:50
override void EOnContact(IEntity other, Contact extra)
Определения Fireplace.c:55
override void RefreshFireplacePhysics()
Определения Fireplace.c:495
override bool CanIgniteItem(EntityAI ignite_target=NULL)
Определения Fireplace.c:567
override void EEItemAttached(EntityAI item, string slot_name)
Определения Fireplace.c:214
override bool IsPrepareToDelete()
Определения Fireplace.c:361
override void SetCookingEquipment(ItemBase equipment)
Определения Fireplace.c:340
override bool CanObstruct()
Определения Fireplace.c:40
override void RefreshPhysics()
Определения Fireplace.c:468
override bool CanPutIntoHands(EntityAI parent)
Определения Fireplace.c:409
override bool CanShowSmoke()
Определения Fireplace.c:457
void DestroyClutterCutter(Object clutter_cutter)
Определения Fireplace.c:463
override bool CanBeIgnitedBy(EntityAI igniter=NULL)
Определения Fireplace.c:562
bool m_ContactEventProcessing
Определения Fireplace.c:3
override bool CanDisplayAttachmentSlot(int slot_id)
Определения Fireplace.c:127
void EOnPostSimulate(IEntity other, float timeSlice)
Определения Fireplace.c:66
override bool HasFlammableMaterial()
Определения Fireplace.c:557
override bool CanPutInCargo(EntityAI parent)
Определения Fireplace.c:368
override void OnIgnitedTarget(EntityAI target_item)
Определения Fireplace.c:577
override bool CanReceiveAttachment(EntityAI attachment, int slotId)
Определения Fireplace.c:79
override bool CanLoadAttachment(EntityAI attachment)
Определения Fireplace.c:139
override bool IsIgnited()
Определения Fireplace.c:572
void Fireplace()
Определения Fireplace.c:6
override void OnIgnitedThis(EntityAI fire_source)
Определения Fireplace.c:581
override bool CanAssignAttachmentsToQuickbar()
Определения Fireplace.c:446
static bool CanIgniteEntityAsFireplace(notnull EntityAI entity)
Определения Fireplace.c:717
bool m_ContactDeletionProcessing
Определения Fireplace.c:4
override bool CanReceiveItemIntoCargo(EntityAI item)
Определения Fireplace.c:389
override bool CanProxyObstruct()
Определения Fireplace.c:45
override void AfterStoreLoad()
Определения Fireplace.c:538
override float HeightStartCheckOverride()
Определения Fireplace.c:451
override bool IsThisIgnitionSuccessful(EntityAI item_source=NULL)
Определения Fireplace.c:618
override bool OnStoreLoad(ParamsReadContext ctx, int version)
Определения Fireplace.c:515
override void EEItemDetached(EntityAI item, string slot_name)
Определения Fireplace.c:278
override bool CanRemoveFromCargo(EntityAI parent)
Определения Fireplace.c:383
override void OnStoreSave(ParamsWriteContext ctx)
Определения Fireplace.c:501
override bool CanDisplayAttachmentCategory(string category_name)
Определения Fireplace.c:424
override bool CanReleaseAttachment(EntityAI attachment)
Определения Fireplace.c:183
override bool CanLoadItemIntoCargo(EntityAI item)
Определения Fireplace.c:397
Определения EnEntity.c:165
InventoryLocation.
Определения InventoryLocation.c:29
static proto native owned string GetSlotName(int id)
converts slot_id to string
provides access to slot configuration
Определения InventorySlots.c:6
Определения ObjectTyped.c:2
static const int CAMP_SMALL_SMOKE
Определения ParticleList.c:31
static const int CAMP_FIRE_START
Определения ParticleList.c:28
static const int CAMP_NORMAL_SMOKE
Определения ParticleList.c:32
static const int CAMP_STEAM_2END
Определения ParticleList.c:34
static const int CAMP_SMALL_FIRE
Определения ParticleList.c:29
static const int CAMP_FIRE_END
Определения ParticleList.c:33
static const int CAMP_NORMAL_FIRE
Определения ParticleList.c:30
Определения ParticleList.c:12
Определения PlayerBaseClient.c:2
proto void CallLater(func fn, int delay=0, bool repeat=false, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
adds call into the queue with given parameters and arguments (arguments are held in memory until the ...
proto bool Write(void value_out)
proto bool Read(void value_in)
static void SendPlayerIgnatedFireplace(Man player, EFireIgniteType ignite_type)
Определения SyncEvents.c:83
Определения SyncEvents.c:2
Определения CookingStand.c:2
original Timer deletes m_params which is unwanted
Определения UniversalTemperatureSource.c:38
Определения EnConvert.c:106
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
vector Position
Position of the contact point (world space)
Определения EnPhysics.c:345
EntityEvent
Entity events for event-mask, or throwing event from code.
Определения EnEntity.c:45
static const float ITEM_TEMPERATURE_NEUTRAL_ZONE_MIDDLE
Определения 3_Game/constants.c:808
proto native bool dBodyIsActive(notnull IEntity ent)
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9
const int CALL_CATEGORY_GAMEPLAY
Определения 3_Game/tools/tools.c:10