MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / KillEffect

Function KillEffect

TombEngine/Game/items.cpp:483–532  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

481}
482
483void KillEffect(short fxNumber)
484{
485 if (InItemControlLoop)
486 {
487 ItemNewRooms[2 * ItemNewRoomNo] = fxNumber | 0x8000;
488 ItemNewRoomNo++;
489 }
490 else
491 {
492 auto* fx = &EffectList[fxNumber];
493 DetatchSpark(fxNumber, SP_FX);
494
495 if (NextFxActive == fxNumber)
496 NextFxActive = fx->nextActive;
497 else
498 {
499 for (short linkNumber = NextFxActive; linkNumber != NO_VALUE; linkNumber = EffectList[linkNumber].nextActive)
500 {
501 if (EffectList[linkNumber].nextActive == fxNumber)
502 {
503 EffectList[linkNumber].nextActive = fx->nextActive;
504 break;
505 }
506 }
507 }
508
509 if (g_Level.Rooms[fx->roomNumber].fxNumber == fxNumber)
510 g_Level.Rooms[fx->roomNumber].fxNumber = fx->nextFx;
511 else
512 {
513 for (short linkNumber = g_Level.Rooms[fx->roomNumber].fxNumber; linkNumber != NO_VALUE; linkNumber = EffectList[linkNumber].nextFx)
514 {
515 if (EffectList[linkNumber].nextFx == fxNumber)
516 {
517 EffectList[linkNumber].nextFx = fx->nextFx;
518 break;
519 }
520 }
521 }
522
523 fx->nextFx = NextFxFree;
524 NextFxFree = fxNumber;
525 }
526
527 // HACK: Garbage collect nextFx if no active effects were detected.
528 // This fixes random crashes after spawining multiple FXs (like body part).
529
530 if (NextFxActive == NO_VALUE)
531 InitializeFXArray();
532}
533
534short CreateNewEffect(short roomNumber)
535{

Callers 7

ControlTonyFireBallFunction · 0.85
MissileControlFunction · 0.85
ControlBodyPartFunction · 0.85
ControlEnemyMissileFunction · 0.85
ControlMissileFunction · 0.85
ControlNatlaGunFunction · 0.85
KillMoveEffectsFunction · 0.85

Calls 2

DetatchSparkFunction · 0.85
InitializeFXArrayFunction · 0.85

Tested by

no test coverage detected