From 78652200f68356c5881b56a7759b208e2a45356d Mon Sep 17 00:00:00 2001 From: eebrozgi Date: Tue, 3 Jun 2025 04:34:06 +0300 Subject: [PATCH 1/3] Sneaker panel overshield stacking code to actually run Using a stronger sneaker boost promoted the boost type variable so that the sneaker panel specific code virtually never ran. Oops! Fixed. --- src/k_kart.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 64cea1ec2..3f0a707ce 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7213,6 +7213,7 @@ static void K_FlameDashLeftoverSmoke(mobj_t *src) void K_DoSneaker(player_t *player, INT32 type) { + INT32 originaltype = type; fixed_t intendedboost = FRACUNIT/2; // If you've already got an rocket sneaker type boost, panel sneakers will instead turn into rocket sneaker boosts @@ -7317,16 +7318,27 @@ void K_DoSneaker(player_t *player, INT32 type) { case 0: // Panel sneaker player->panelsneakertimer = sneakertime; + break; + case 1: // Single item sneaker + player->sneakertimer = sneakertime; + break; + case 2: // Rocket sneaker (aka. weaksneaker) + player->weaksneakertimer = 3*sneakertime/4; + break; + } + + // Give invincibility based on the ACTUAL boost type used, not the "promoted" boost type + switch (originaltype) + { + case 0: // Panel sneaker 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 = max( player->overshield, 25 ); break; case 2: // Rocket sneaker (aka. weaksneaker) - player->weaksneakertimer = 3*sneakertime/4; player->overshield = max( player->overshield, TICRATE/2 ); break; } From 333734fdf362880bcfd368df7b6803bb49126c39 Mon Sep 17 00:00:00 2001 From: eebrozgi Date: Tue, 3 Jun 2025 06:43:44 +0300 Subject: [PATCH 2/3] Fixing and cleaning rocket sneaker boost state separation shit - Fixed rocket sneaker tripwire state not activating - Exposed sneaker boost variables to lua - Made bots at least aware of the new sneaker boost type...? Probably. --- src/k_botitem.cpp | 6 +++--- src/k_kart.c | 3 ++- src/lua_playerlib.c | 8 ++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/k_botitem.cpp b/src/k_botitem.cpp index e3bb56c33..7bf222a62 100644 --- a/src/k_botitem.cpp +++ b/src/k_botitem.cpp @@ -531,7 +531,7 @@ static void K_BotItemSneaker(const player_t *player, ticcmd_t *cmd) || player->speedboost > (FRACUNIT/8) // Have another type of boost (tethering) || player->botvars.itemconfirm > 4*TICRATE) // Held onto it for too long { - if (player->sneakertimer == 0 && K_ItemButtonWasDown(player) == false) + if (player->sneakertimer == 0 && player->weaksneakertimer == 0 && K_ItemButtonWasDown(player) == false) { cmd->buttons |= BT_ATTACK; //player->botvars.itemconfirm = 2*TICRATE; @@ -567,7 +567,7 @@ static void K_BotItemRocketSneaker(const player_t *player, ticcmd_t *cmd) if (player->botvars.itemconfirm > TICRATE) { - if (player->sneakertimer == 0 && K_ItemButtonWasDown(player) == false) + if (player->sneakertimer == 0 && player->weaksneakertimer == 0 && K_ItemButtonWasDown(player) == false) { cmd->buttons |= BT_ATTACK; //player->botvars.itemconfirm = 0; @@ -1605,7 +1605,7 @@ static void K_BotItemIceCube(const player_t *player, ticcmd_t *cmd) return; } - if (player->sneakertimer) + if (player->sneakertimer || player->weaksneakertimer) { return; } diff --git a/src/k_kart.c b/src/k_kart.c index 3f0a707ce..ef8aa95b3 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3071,7 +3071,8 @@ tripwirepass_t K_TripwirePassConditions(const player_t *player) { if ( player->invincibilitytimer || - player->sneakertimer + player->sneakertimer || + player->weaksneakertimer ) return TRIPWIRE_BLASTER; diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index a71b3214d..498a1bddf 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -1124,6 +1124,14 @@ static int player_set(lua_State *L) plr->sneakertimer = luaL_checkinteger(L, 3); else if (fastcmp(field,"numsneakers")) plr->numsneakers = luaL_checkinteger(L, 3); + else if (fastcmp(field,"panelsneakertimer")) + plr->panelsneakertimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"numpanelsneakers")) + plr->numpanelsneakers = luaL_checkinteger(L, 3); + else if (fastcmp(field,"weaksneakertimer")) + plr->weaksneakertimer = luaL_checkinteger(L, 3); + else if (fastcmp(field,"numpweaksneakers")) + plr->numweaksneakers = luaL_checkinteger(L, 3); else if (fastcmp(field,"floorboost")) plr->floorboost = luaL_checkinteger(L, 3); else if (fastcmp(field,"growshrinktimer")) From 906c9ea62dce96b18f5e7e9d0fc5f28325032092 Mon Sep 17 00:00:00 2001 From: eebrozgi Date: Tue, 3 Jun 2025 06:58:22 +0300 Subject: [PATCH 3/3] numweaksneakers LUA EXPOSE TYPO AAAAAAEIUGHYHHG --- src/lua_playerlib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 498a1bddf..2f580553a 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -1130,7 +1130,7 @@ static int player_set(lua_State *L) plr->numpanelsneakers = luaL_checkinteger(L, 3); else if (fastcmp(field,"weaksneakertimer")) plr->weaksneakertimer = luaL_checkinteger(L, 3); - else if (fastcmp(field,"numpweaksneakers")) + else if (fastcmp(field,"numweaksneakers")) plr->numweaksneakers = luaL_checkinteger(L, 3); else if (fastcmp(field,"floorboost")) plr->floorboost = luaL_checkinteger(L, 3);