diff --git a/src/k_battle.c b/src/k_battle.c index 5c99b657d..d7566257b 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -669,8 +669,9 @@ void K_RunBattleOvertime(void) const fixed_t minradius = 768 * mapobjectscale; if (battleovertime.radius > minradius) - battleovertime.radius -= 2*mapobjectscale; - else + battleovertime.radius -= (battleovertime.initial_radius / (30*TICRATE)); + + if (battleovertime.radius < minradius) battleovertime.radius = minradius; } diff --git a/src/k_battle.h b/src/k_battle.h index c95c5bf91..f5a7547aa 100644 --- a/src/k_battle.h +++ b/src/k_battle.h @@ -19,6 +19,7 @@ extern struct battleovertime { UINT16 enabled; ///< Has this been initalized yet? fixed_t radius; ///< Radius of kill field + fixed_t initial_radius; ///< Starting radius of kill field fixed_t x, y, z; ///< Position to center on } battleovertime; diff --git a/src/p_inter.c b/src/p_inter.c index 9c5b7a24c..2c81ef6e7 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -860,7 +860,9 @@ void P_CheckTimeLimit(void) battleovertime.z = center->z; } - battleovertime.radius = 4096 * mapobjectscale; + battleovertime.initial_radius = 4096 * mapobjectscale; + battleovertime.radius = battleovertime.initial_radius; + battleovertime.enabled = 1; S_StartSound(NULL, sfx_kc47); diff --git a/src/p_saveg.c b/src/p_saveg.c index 87a8f636b..885b7b5c0 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -5734,6 +5734,7 @@ static void P_NetArchiveMisc(savebuffer_t *save, boolean resending) // battleovertime_t WRITEUINT16(save->p, battleovertime.enabled); WRITEFIXED(save->p, battleovertime.radius); + WRITEFIXED(save->p, battleovertime.initial_radius); WRITEFIXED(save->p, battleovertime.x); WRITEFIXED(save->p, battleovertime.y); WRITEFIXED(save->p, battleovertime.z); @@ -5908,6 +5909,7 @@ static boolean P_NetUnArchiveMisc(savebuffer_t *save, boolean reloading) // battleovertime_t battleovertime.enabled = READUINT16(save->p); battleovertime.radius = READFIXED(save->p); + battleovertime.initial_radius = READFIXED(save->p); battleovertime.x = READFIXED(save->p); battleovertime.y = READFIXED(save->p); battleovertime.z = READFIXED(save->p);