diff --git a/src/p_inter.c b/src/p_inter.c index bd3c15a456f06d61978ec7aadf95de70d5c6b1ee..907388a8c555b34afbcd175731e28a0fd250bbc9 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -798,6 +798,17 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) boolean prevCollected; const boolean isServer = ((player - players) == serverplayer); + if ((special->flags2 & MF2_NIGHTSPULL) + && (toucher == special->tracer)) + { + // Since collecting may not remove the object, + // we need to manually stop it from chasing. + P_SetTarget(&special->tracer, NULL); + special->flags2 &= ~MF2_NIGHTSPULL; + special->movefactor = 0; + special->momx = special->momy = special->momz = 0; + } + if (!P_CanPickupEmblem(player, special->health - 1)) { return;