From 5cdedd53bafaf12f062c5b93c703d6610e41967f Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 22 Oct 2023 17:16:04 -0700 Subject: [PATCH 1/4] Prisons: respond to game difficulty --- src/k_battle.c | 14 +++++++++++++- src/k_kart.c | 2 +- src/p_inter.c | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/k_battle.c b/src/k_battle.c index 8b8918d3d..f4ed87c7a 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -40,7 +40,19 @@ UINT8 numtargets = 0; // Capsules busted INT32 K_StartingBumperCount(void) { if (battleprisons) - return 0; // always 1 hit in Prison Break + { + if (grandprixinfo.gp == true && grandprixinfo.masterbots == true) + return 0; + switch (gamespeed) + { + case KARTSPEED_HARD: + return 1; + case KARTSPEED_NORMAL: + return 2; + case KARTSPEED_EASY: + return 3; + } + } return cv_kartbumpers.value; } diff --git a/src/k_kart.c b/src/k_kart.c index 182e0a7cb..490faec6f 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -12445,7 +12445,7 @@ tic_t K_TimeLimitForGametype(void) { if (battleprisons) { - return 20*TICRATE; + return (gamespeed == KARTSPEED_EASY) ? 30*TICRATE : 20*TICRATE; } return gametypeDefault; diff --git a/src/p_inter.c b/src/p_inter.c index 740ecc28f..689ffdc2d 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1082,7 +1082,7 @@ static void P_AddBrokenPrison(mobj_t *target, mobj_t *inflictor, mobj_t *source) S_StartSound(NULL, sfx_s221); if (timelimitintics) { - extratimeintics += 10*TICRATE; + extratimeintics += (gamespeed == KARTSPEED_EASY) ? 15*TICRATE : 10*TICRATE; secretextratime = TICRATE/2; } From dbe25d8be4f4a4169cf5e02411b8fc821b808c78 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Mon, 23 Oct 2023 19:55:54 -0700 Subject: [PATCH 2/4] Fix Prisons difficulty to respond to GP settings --- src/k_battle.c | 22 +++++++++++++--------- src/k_kart.c | 9 ++++++++- src/p_inter.c | 11 ++++++++++- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/k_battle.c b/src/k_battle.c index f4ed87c7a..1304489a3 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -41,17 +41,21 @@ INT32 K_StartingBumperCount(void) { if (battleprisons) { - if (grandprixinfo.gp == true && grandprixinfo.masterbots == true) - return 0; - switch (gamespeed) + if (grandprixinfo.gp) { - case KARTSPEED_HARD: - return 1; - case KARTSPEED_NORMAL: - return 2; - case KARTSPEED_EASY: - return 3; + switch (grandprixinfo.gamespeed) + { + case KARTSPEED_HARD: + return (grandprixinfo.masterbots == true) ? 0 : 1; + case KARTSPEED_NORMAL: + return 2; + case KARTSPEED_EASY: + return 3; + } + } + + return 2; // Normal } return cv_kartbumpers.value; diff --git a/src/k_kart.c b/src/k_kart.c index 490faec6f..919c09b91 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -12445,7 +12445,14 @@ tic_t K_TimeLimitForGametype(void) { if (battleprisons) { - return (gamespeed == KARTSPEED_EASY) ? 30*TICRATE : 20*TICRATE; + if (grandprixinfo.gp) + { + if (grandprixinfo.masterbots) + return 15*TICRATE; + else if (grandprixinfo.gamespeed == KARTSPEED_EASY) + return 30*TICRATE; + } + return 20*TICRATE; } return gametypeDefault; diff --git a/src/p_inter.c b/src/p_inter.c index 689ffdc2d..012d0717b 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1082,7 +1082,16 @@ static void P_AddBrokenPrison(mobj_t *target, mobj_t *inflictor, mobj_t *source) S_StartSound(NULL, sfx_s221); if (timelimitintics) { - extratimeintics += (gamespeed == KARTSPEED_EASY) ? 15*TICRATE : 10*TICRATE; + extratimeintics = 10*TICRATE; + + if (grandprixinfo.gp) + { + if (grandprixinfo.masterbots) + extratimeintics = 8*TICRATE; + else if (grandprixinfo.gamespeed == KARTSPEED_EASY) + extratimeintics = 15*TICRATE; + } + secretextratime = TICRATE/2; } From 80a9b5c3ecc6c730d304cc74cdda5a7d0cb75992 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Mon, 23 Oct 2023 19:57:23 -0700 Subject: [PATCH 3/4] Why did numlaps ever save --- src/cvars.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cvars.cpp b/src/cvars.cpp index 4aa73492f..1b7463be6 100644 --- a/src/cvars.cpp +++ b/src/cvars.cpp @@ -802,7 +802,7 @@ consvar_t cv_kartdebugwaypoints = OnlineCheat("debugwaypoints", "Off").values({{ extern CV_PossibleValue_t numlaps_cons_t[]; void NumLaps_OnChange(void); -consvar_t cv_numlaps = OnlineCheat("numlaps", "Map default").values(numlaps_cons_t).onchange(NumLaps_OnChange).save().description("Race maps always have the same number of laps"); +consvar_t cv_numlaps = OnlineCheat("numlaps", "Map default").values(numlaps_cons_t).onchange(NumLaps_OnChange).description("Race maps always have the same number of laps"); consvar_t cv_restrictskinchange = OnlineCheat("restrictskinchange", "Yes").yes_no().description("Don't let players change their skin in the middle of gameplay"); consvar_t cv_spbtest = OnlineCheat("spbtest", "Off").on_off().description("SPB can never target a player"); From be1ce929c712f44c75a6fbed9339f94f2ce60d54 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Tue, 24 Oct 2023 02:15:19 -0700 Subject: [PATCH 4/4] Fix time-increment overlap in prisons --- src/p_inter.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/p_inter.c b/src/p_inter.c index 012d0717b..5b43e67d0 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1082,16 +1082,17 @@ static void P_AddBrokenPrison(mobj_t *target, mobj_t *inflictor, mobj_t *source) S_StartSound(NULL, sfx_s221); if (timelimitintics) { - extratimeintics = 10*TICRATE; + UINT16 bonustime = 10*TICRATE; if (grandprixinfo.gp) { if (grandprixinfo.masterbots) - extratimeintics = 8*TICRATE; + bonustime = 8*TICRATE; else if (grandprixinfo.gamespeed == KARTSPEED_EASY) - extratimeintics = 15*TICRATE; + bonustime = 15*TICRATE; } + extratimeintics += bonustime; secretextratime = TICRATE/2; }