MT_FLINGRING: Nullify fuse on touch

If the fuse caused the flingring to be deleted, it would hog a spot on player->pickuprings until the player respawned.

This is not a perfect solution, but it should resolve the problem in practice.

Needs testing to confirm this doesn't introduce TA desync, but in the worst case I would wager it affects a single digit number of runs at worst.
This commit is contained in:
toaster 2024-04-01 19:06:56 +01:00
parent d1910a6574
commit 3fb4a4257e

View file

@ -685,6 +685,11 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
special->extravalue1 = 1; // Ring collect animation timer
special->angle = R_PointToAngle2(toucher->x, toucher->y, special->x, special->y); // animation angle
P_SetTarget(&special->target, toucher); // toucher for thinker
// For MT_FLINGRING - don't delete yourself mid-pickup.
special->renderflags &= ~RF_DONTDRAW;
special->fuse = 0;
player->pickuprings++;
return;