mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Fix ring counter desync when whipping/bailing while attracting rings
This commit is contained in:
parent
3d5e60241c
commit
9222bfc5dd
1 changed files with 12 additions and 2 deletions
|
|
@ -3510,9 +3510,19 @@ void A_AttractChase(mobj_t *actor)
|
||||||
|
|
||||||
if (actor->extravalue1 && actor->type != MT_EMERALD) // SRB2Kart
|
if (actor->extravalue1 && actor->type != MT_EMERALD) // SRB2Kart
|
||||||
{
|
{
|
||||||
if (!actor->target || P_MobjWasRemoved(actor->target) || !actor->target->player
|
// Screwed this up for staffghosts, so have a mess.
|
||||||
|| actor->target->player->baildrop || actor->target->player->bailcharge || actor->target->player->defenseLockout > PUNISHWINDOW)
|
// 1. Insta-Whip's extended punish window used to delete flingrings off you while they were attracting
|
||||||
|
// 2. ALL conditions that deleted flingrings off you didn't decrement pickuprings, desyncing your ring count
|
||||||
|
boolean stale = (!actor->target || P_MobjWasRemoved(actor->target) || !actor->target->player);
|
||||||
|
|
||||||
|
boolean legacy_blocked = (actor->target->player->baildrop || actor->target->player->bailcharge || actor->target->player->defenseLockout > PUNISHWINDOW);
|
||||||
|
boolean new_blocked = (actor->target->player->baildrop || actor->target->player->bailcharge);
|
||||||
|
boolean blocked = (G_CompatLevel(0x0010) ? legacy_blocked : new_blocked);
|
||||||
|
if (stale || blocked)
|
||||||
{
|
{
|
||||||
|
if (!G_CompatLevel(0x0010) && !stale)
|
||||||
|
actor->target->player->pickuprings--;
|
||||||
|
|
||||||
P_RemoveMobj(actor);
|
P_RemoveMobj(actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue