From 20c0c4d591129b2338f399d0a4c60daa7039925d Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Wed, 28 Feb 2024 18:19:49 -0700 Subject: [PATCH 1/2] WIP: Limit bot tethering while turning --- src/k_kart.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 6084a259d..a504b9ac3 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1410,6 +1410,18 @@ static boolean K_TryDraft(player_t *player, mobj_t *dest, fixed_t minDist, fixed } #endif + // Bots are unusually good at keeping their facing aligned on long, tight turns. + // Force them to give up tether in these situations, like a drifting player typically would. + UINT16 rejectThreshold = KART_FULLTURN/4; + if (K_PlayerUsesBotMovement(player) && (abs(player->oldcmd.turning + player->cmd.turning) >= rejectThreshold)) + { + mobj_t *indicator = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_THOK); + indicator->scale *= 2; + indicator->color = SKINCOLOR_RED; + indicator->tics = 2; + return false; + } + olddraft = player->draftpower; player->draftleeway = leniency; @@ -1504,12 +1516,9 @@ static void K_UpdateDraft(player_t *player) leniency *= 4; } - // Want to berserk attack? Get your speed FIRST. - if (player->instaWhipCharge >= INSTAWHIP_TETHERBLOCK || player->defenseLockout) - return; - - // Not enough speed to draft. - if (player->speed >= 20 * player->mo->scale) + // You need speed and commitment to draft. + if (player->speed >= 20 * player->mo->scale + && player->instaWhipCharge < INSTAWHIP_TETHERBLOCK && !player->defenseLockout) { if (addUfo != NULL) { From 80990c82b097bc5660d6a6d7f026b64c49e6af3a Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Thu, 29 Feb 2024 21:56:19 -0700 Subject: [PATCH 2/2] Remove debug bot tether block indicator --- src/k_kart.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index a504b9ac3..83c706d84 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1415,10 +1415,6 @@ static boolean K_TryDraft(player_t *player, mobj_t *dest, fixed_t minDist, fixed UINT16 rejectThreshold = KART_FULLTURN/4; if (K_PlayerUsesBotMovement(player) && (abs(player->oldcmd.turning + player->cmd.turning) >= rejectThreshold)) { - mobj_t *indicator = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_THOK); - indicator->scale *= 2; - indicator->color = SKINCOLOR_RED; - indicator->tics = 2; return false; }