From 1c3bb7fecb4e5ad139ca3736a2e5237ec62d970b Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Thu, 1 May 2025 20:31:51 -0400 Subject: [PATCH] nvm this is way funnier --- src/k_kart.c | 29 ++++++++++++++++++++--------- src/p_user.c | 3 --- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 063024c3c..c290ada07 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4154,6 +4154,9 @@ void K_AwardPlayerRings(player_t *player, UINT16 rings, boolean overload) void K_CheckpointCrossAward(player_t *player) { + if (gametype != GT_RACE) + return; + player->exp += K_GetExpAdjustment(player); K_AwardPlayerRings(player, (player->bot ? 20 : 10), true); } @@ -9590,15 +9593,23 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) UINT8 ringrate = 3 - min(2, player->superring / 20); // Used to consume fat stacks of cash faster. if (player->nextringaward >= ringrate) { - mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING); - ring->extravalue1 = 1; // Ring collect animation timer - ring->angle = player->mo->angle; // animation angle - P_SetTarget(&ring->target, player->mo); // toucher for thinker - player->pickuprings++; - if (player->superring == 1) - ring->cvmem = 1; // play caching when collected - player->nextringaward = 0; - player->superring--; + if (player->instaWhipCharge) + { + // Store award rings to do diabolical horseshit with later. + player->nextringaward = ringrate; + } + else + { + mobj_t *ring = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_RING); + ring->extravalue1 = 1; // Ring collect animation timer + ring->angle = player->mo->angle; // animation angle + P_SetTarget(&ring->target, player->mo); // toucher for thinker + player->pickuprings++; + if (player->superring == 1) + ring->cvmem = 1; // play caching when collected + player->nextringaward = 0; + player->superring--; + } } } else diff --git a/src/p_user.c b/src/p_user.c index 513669517..798c8a0f6 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -454,9 +454,6 @@ INT32 P_GivePlayerRings(player_t *player, INT32 num_rings) if ((gametyperules & GTR_SPHERES)) // No rings in Battle Mode return 0; - if (player->instaWhipCharge) // Even if a ring somehow makes contact with you, no it didn't - return 0; - if (gamedata && num_rings > 0 && P_IsPartyPlayer(player) && gamedata->totalrings <= GDMAX_RINGS) { gamedata->totalrings += num_rings;