From fef77b3be4c68b8ad1bce9bcadb2b54b67bba951 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Tue, 22 Apr 2025 01:24:56 -0400 Subject: [PATCH] ItemOdds tweak, Nerf bots a bit --- src/d_netcmd.c | 1 + src/d_netcmd.h | 1 + src/k_bot.cpp | 7 ++++++- src/k_kart.c | 23 +++++++---------------- src/k_waypoint.cpp | 2 +- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index f4c47f304..e018bd911 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -439,6 +439,7 @@ static CV_PossibleValue_t kartbot_cons_t[] = { {0, NULL} }; consvar_t cv_kartbot = CVAR_INIT ("kartbot", "0", CV_NETVAR, kartbot_cons_t, NULL); +consvar_t cv_kartbot_modifiermax = CVAR_INIT ("kartbot_modifiermax", "1.0", CV_NETVAR|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_karteliminatelast = CVAR_INIT ("karteliminatelast", "Yes", CV_NETVAR|CV_CALL, CV_YesNo, KartEliminateLast_OnChange); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 016659871..cf8f1ffc7 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -116,6 +116,7 @@ extern consvar_t cv_kartgametypepreference; extern consvar_t cv_kartspeedometer; extern consvar_t cv_kartvoices; extern consvar_t cv_kartbot; +extern consvar_t cv_kartbot_modifiermax; extern consvar_t cv_karteliminatelast; extern consvar_t cv_kartusepwrlv; extern consvar_t cv_kartrings; diff --git a/src/k_bot.cpp b/src/k_bot.cpp index e44bd1bdc..455f3c748 100644 --- a/src/k_bot.cpp +++ b/src/k_bot.cpp @@ -510,7 +510,12 @@ const botcontroller_t *K_GetBotController(mobj_t *mobj) fixed_t K_BotMapModifier(void) { constexpr INT32 complexity_scale = 10000; - constexpr fixed_t modifier_max = FRACUNIT * 2; + fixed_t modifier_max = cv_kartbot_modifiermax.value; + + if (K_CanChangeRules() == false) + { + modifier_max = FRACUNIT; + } const fixed_t complexity_value = std::clamp( FixedDiv(K_GetTrackComplexity(), complexity_scale), diff --git a/src/k_kart.c b/src/k_kart.c index 34c7d2e26..424298030 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -252,6 +252,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartspeedometer); CV_RegisterVar(&cv_kartvoices); CV_RegisterVar(&cv_kartbot); + CV_RegisterVar(&cv_kartbot_modifiermax); CV_RegisterVar(&cv_forcebots); CV_RegisterVar(&cv_botcontrol); CV_RegisterVar(&cv_karteliminatelast); @@ -426,7 +427,7 @@ consvar_t *KartItemCVars[NUMKARTRESULTS-1] = static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][8] = { //B C D E F G H I - { 0, 0, 4, 5, 3, 0, 0, 0 }, // Sneaker + { 0, 0, 3, 3, 2, 0, 0, 0 }, // Sneaker { 0, 0, 0, 0, 2, 5, 8, 5 }, // Rocket Sneaker { 0, 0, 0, 0, 1, 4, 6,10 }, // Invincibility { 9, 4, 2, 1, 0, 0, 0, 0 }, // Banana @@ -447,7 +448,7 @@ static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][8] = { 0, 1, 2, 1, 0, 0, 0, 0 }, // Bubble Shield { 0, 0, 0, 0, 2, 5, 5, 0 }, // Flame Shield { 1, 0, 0, 0, 0, 0, 0, 0 }, // Drop Target - { 0, 0, 4, 3, 4, 0, 0, 0 }, // Sneaker x2 + { 0, 0, 3, 4, 3, 0, 0, 0 }, // Sneaker x2 { 0, 0, 0, 1, 5, 6, 3, 0 }, // Sneaker x3 { 0, 1, 1, 0, 0, 0, 0, 0 }, // Banana x3 { 0, 0, 0, 1, 0, 0, 0, 0 }, // Banana x10 @@ -489,8 +490,8 @@ static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS][2] = { 5, 1 } // Jawz x2 }; -#define DISTVAR (2048) // Magic number distance for use with item roulette tiers -#define SPBSTARTDIST (5*DISTVAR) // Distance when SPB is forced onto 2nd place +#define DISTVAR (1280) // Magic number distance for use with item roulette tiers +#define SPBSTARTDIST (5*DISTVAR) // Distance when SPB can start appearing #define SPBFORCEDIST (15*DISTVAR) // Distance when SPB is forced onto 2nd place #define ENDDIST (12*DISTVAR) // Distance when the game stops giving you bananas @@ -1166,8 +1167,6 @@ UINT8 K_FindUseodds(player_t *player, fixed_t mashed, UINT32 pdis, UINT8 bestbum return useodds; } - - INT32 K_FindLegacyUseodds(player_t *player, fixed_t mashed, INT32 pingame, INT32 bestbumper, boolean spbrush, boolean dontforcespb) { SINT8 sortedPlayers[MAXPLAYERS]; @@ -1557,8 +1556,6 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) if (player->roulettetype == 2) { player->eggmanexplode = 4*TICRATE; - //player->itemblink = TICRATE; - //player->itemblinkmode = 1; player->itemroulette = 0; player->roulettetype = 0; if (P_IsDisplayPlayer(player)) @@ -3680,12 +3677,6 @@ fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower, boolean dorubberb const fixed_t modifier = K_BotMapModifier(); fixed_t add = ((player->botvars.difficulty-1) * FixedMul(FRACUNIT / 10, modifier)) / (DIFFICULTBOT-1); finalspeed = FixedMul(finalspeed, FRACUNIT + add); - - if (player->bot && player->botvars.rival) - { - // +10% top speed for the rival - finalspeed = FixedMul(finalspeed, 11*FRACUNIT/10); - } } if (dorubberband == true && player->botvars.rubberband < FRACUNIT && K_PlayerUsesBotMovement(player) == true) @@ -8824,8 +8815,8 @@ INT32 K_GetKartRingPower(player_t *player, boolean boosted) if (boosted == true && K_PlayerUsesBotMovement(player)) { - // Double for Lv. 9 - ringPower += (player->botvars.difficulty * ringPower) / DIFFICULTBOT; + // 1.5x for Lv. 9 + ringPower += ((player->botvars.difficulty * ringPower) /2) / DIFFICULTBOT; } if (player->kartspeed == 9 && player->kartweight == 9) diff --git a/src/k_waypoint.cpp b/src/k_waypoint.cpp index 55e64f283..7337286e5 100644 --- a/src/k_waypoint.cpp +++ b/src/k_waypoint.cpp @@ -45,7 +45,7 @@ static waypoint_t *startingwaypoint = NULL; static UINT32 circuitlength = 0U; -#define BASE_TRACK_COMPLEXITY (-5000) // Arbritrary, vibes-based value +#define BASE_TRACK_COMPLEXITY (-6000) // Arbritrary, vibes-based value static INT32 trackcomplexity = 0; static size_t numwaypoints = 0U;