diff --git a/src/p_enemy.c b/src/p_enemy.c index 061d5526a..e3ba64846 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -11066,6 +11066,9 @@ void A_SPBChase(void *thing) specialring->colorized = true; specialring->color = SKINCOLOR_RED; specialring->flags |= MF_NOCLIPHEIGHT; + + // But don't let first pick these up. + specialring->extravalue3 = 1; } } diff --git a/src/p_inter.c b/src/p_inter.c index 547619eff..c0da4b857 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -629,7 +629,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->extravalue1) return; - // No picking up rings while SPB is targetting you + // No picking up rings while your rings are locked. if (player->pflags & PF_RINGLOCK) return; @@ -637,6 +637,10 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->threshold > 0 || P_PlayerInPain(player)) return; + // Don't pick up SPB rings in first. + if (special->extravalue3 && player->position == 1) + return; + if (!(P_CanPickupItem(player, PICKUPITEM_RING))) return;