mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-28 04:51:42 +00:00
Merge branch 'fix-ringblock-counter-shenanigans' into 'master'
Fix ring counter desync when whipping/bailing while attracting rings Closes ring-racers#99 See merge request kart-krew-dev/ring-racers-internal!2851
This commit is contained in:
commit
1f324ac7af
1 changed files with 13 additions and 2 deletions
|
|
@ -3510,9 +3510,20 @@ 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 blocked = (actor->target->player->baildrop || actor->target->player->bailcharge);
|
||||||
|
if (G_CompatLevel(0x0010))
|
||||||
|
blocked |= (actor->target->player->defenseLockout > PUNISHWINDOW);
|
||||||
|
|
||||||
|
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