From 09dda82aff04a6cb2171913ad81f735515835f55 Mon Sep 17 00:00:00 2001 From: eebrozgi Date: Mon, 2 Jun 2025 22:24:19 +0300 Subject: [PATCH] Cap overshield stacking from sneaker boosts Previously the overshield you got from sneaker boosts could stack up to nonsensical amounts of overshield. This revises the behavior as follows: - Sneakers give you 25 tics of overshield, but will never stack - Rocket sneakers give you 1/2 second of overshield, but will never stack - Sneaker panels extend your existing overshield for 1/3 seconds, but cap at 1 full second --- src/k_kart.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index deac181f9..64cea1ec2 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7317,15 +7317,17 @@ void K_DoSneaker(player_t *player, INT32 type) { case 0: // Panel sneaker player->panelsneakertimer = sneakertime; - player->overshield += 1; + if (player->overshield > 0) { + player->overshield = min( player->overshield + TICRATE/3, max( TICRATE, player->overshield )); + } break; case 1: // Single item sneaker player->sneakertimer = sneakertime; - player->overshield += TICRATE/2; + player->overshield = max( player->overshield, 25 ); break; case 2: // Rocket sneaker (aka. weaksneaker) player->weaksneakertimer = 3*sneakertime/4; - player->overshield += TICRATE/2; + player->overshield = max( player->overshield, TICRATE/2 ); break; }