diff --git a/src/p_enemy.c b/src/p_enemy.c index 8c6aed7c1..3570f0f76 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3519,15 +3519,20 @@ void A_AttractChase(mobj_t *actor) if (G_CompatLevel(0x0010)) blocked |= !!(actor->target->player->bailcharge || actor->target->player->defenseLockout > PUNISHWINDOW); - if (stale || blocked) + if (!G_CompatLevel(0x0010) || actor->extravalue2) { - if (!G_CompatLevel(0x0010) && !stale) - actor->target->player->pickuprings--; + if (stale || blocked) + { + if (!G_CompatLevel(0x0010) && !stale) + if (actor->target->player->pickuprings) + actor->target->player->pickuprings--; - P_RemoveMobj(actor); - return; + P_RemoveMobj(actor); + return; + } } + if (actor->extravalue2) // Using for ring boost { // Always fullbright @@ -3605,7 +3610,9 @@ void A_AttractChase(mobj_t *actor) actor->target->player->ringvolume -= RINGVOLUMECOLLECTPENALTY; actor->target->player->ringtransparency -= RINGTRANSPARENCYCOLLECTPENALTY; - actor->target->player->pickuprings--; + if (actor->target->player->pickuprings || !G_CompatLevel(0x0011)) + actor->target->player->pickuprings--; + P_RemoveMobj(actor); return; }