From 119f309cb853374a8a692094602d20351813de02 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 26 Nov 2023 15:34:11 -0700 Subject: [PATCH] Scale Prison bonus time to remaining time and difficulty --- src/k_kart.c | 4 +--- src/p_inter.c | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index a3e8fc452..119619bd0 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -13042,9 +13042,7 @@ tic_t K_TimeLimitForGametype(void) { if (grandprixinfo.gp) { - if (grandprixinfo.masterbots) - return 15*TICRATE; - else if (grandprixinfo.gamespeed == KARTSPEED_EASY) + if (grandprixinfo.gamespeed == KARTSPEED_EASY) return 30*TICRATE; } return 20*TICRATE; diff --git a/src/p_inter.c b/src/p_inter.c index bcb2aade4..d3fd0cbe0 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -44,6 +44,8 @@ #include "acs/interface.h" #include "k_powerup.h" #include "k_collide.h" +#include "m_easing.h" + // CTF player names #define CTFTEAMCODE(pl) pl->ctfteam ? (pl->ctfteam == 1 ? "\x85" : "\x84") : "" @@ -1123,15 +1125,35 @@ static void P_AddBrokenPrison(mobj_t *target, mobj_t *inflictor, mobj_t *source) if (timelimitintics) { UINT16 bonustime = 10*TICRATE; + INT16 clamptime = 0; // Don't allow reserve time past this value (by much)... + INT16 mintime = 2*TICRATE; // But give SOME reward for every hit. if (grandprixinfo.gp) { if (grandprixinfo.masterbots) - bonustime = 8*TICRATE; + { + clamptime = 8*TICRATE; + mintime = 1*TICRATE; + } + else if (grandprixinfo.gamespeed == KARTSPEED_HARD) + { + clamptime = 12*TICRATE; + } + else if (grandprixinfo.gamespeed == KARTSPEED_NORMAL) + { + clamptime = 15*TICRATE; + } else if (grandprixinfo.gamespeed == KARTSPEED_EASY) - bonustime = 15*TICRATE; + { + // "I think Easy Mode should be about Trying Not To Kill Your Self" -VelocitOni + clamptime = 45*TICRATE; + mintime = 20*TICRATE; + } } + if (clamptime) // Lower bonus if you have more reserve, keep it tense. + bonustime = Easing_InOutSine(min(FRACUNIT, (timelimitintics - leveltime + starttime) * FRACUNIT / clamptime), clamptime, mintime); + extratimeintics += bonustime; secretextratime = TICRATE/2; }