From 3fb4a4257ea47e89876e224a89db0d2d85ae88f9 Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 1 Apr 2024 19:06:56 +0100 Subject: [PATCH] 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. --- src/p_inter.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/p_inter.c b/src/p_inter.c index fe42febb9..2b9f253f3 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -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;