diff --git a/src/d_netcmd.c b/src/d_netcmd.c index c364136cc..5185d4fc3 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -68,6 +68,7 @@ #include "k_zvote.h" #include "k_bot.h" #include "k_powerup.h" +#include "k_roulette.h" #ifdef SRB2_CONFIG_ENABLE_WEBM_MOVIES #include "m_avrecorder.h" @@ -6179,7 +6180,7 @@ static void Got_Cheat(UINT8 **cp, INT32 playernum) K_StripItems(player); // Cancel roulette if rolling - player->itemRoulette.active = false; + K_StopRoulette(&player->itemRoulette); player->itemtype = item; player->itemamount = amt; diff --git a/src/g_game.c b/src/g_game.c index 931ba08a2..1e193b205 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -70,6 +70,7 @@ #include "k_serverstats.h" #include "k_zvote.h" #include "music.h" +#include "k_roulette.h" #ifdef HAVE_DISCORDRPC #include "discord.h" @@ -2583,7 +2584,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) if (betweenmaps || leveltime < introtime) { - itemRoulette.active = false; + K_StopRoulette(&itemRoulette); itemtype = 0; itemamount = 0; diff --git a/src/k_kart.c b/src/k_kart.c index 0e02d2763..5acc11719 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -9972,7 +9972,7 @@ void K_StripItems(player_t *player) if (player->itemRoulette.eggman == false) { - player->itemRoulette.active = false; + K_StopRoulette(&player->itemRoulette); } player->hyudorotimer = 0; @@ -9988,7 +9988,7 @@ void K_StripItems(player_t *player) void K_StripOther(player_t *player) { - player->itemRoulette.active = false; + K_StopRoulette(&player->itemRoulette); player->invincibilitytimer = 0; if (player->growshrinktimer) @@ -12119,16 +12119,14 @@ void K_EggmanTransfer(player_t *source, player_t *victim) K_AddHitLag(victim->mo, 2, true); K_DropItems(victim); victim->eggmanexplode = 6*TICRATE; - victim->itemRoulette.eggman = false; - victim->itemRoulette.active = false; + K_StopRoulette(&victim->itemRoulette); if (P_IsDisplayPlayer(victim) && !demo.freecam) S_StartSound(NULL, sfx_itrole); K_AddHitLag(source->mo, 2, true); source->eggmanexplode = 0; - source->itemRoulette.eggman = false; - source->itemRoulette.active = false; + K_StopRoulette(&source->itemRoulette); source->eggmanTransferDelay = 10; S_StopSoundByID(source->mo, sfx_s3k53); diff --git a/src/k_roulette.c b/src/k_roulette.c index f7b1b9ed3..f54b2c9e4 100644 --- a/src/k_roulette.c +++ b/src/k_roulette.c @@ -1485,6 +1485,18 @@ void K_StartEggmanRoulette(player_t *const player) roulette->eggman = true; } +/*-------------------------------------------------- + void K_StopRoulette(itemroulette_t *const roulette) + + See header file for description. +--------------------------------------------------*/ +void K_StopRoulette(itemroulette_t *const roulette) +{ + roulette->active = false; + roulette->eggman = false; + roulette->ringbox = false; +} + /*-------------------------------------------------- fixed_t K_GetRouletteOffset(itemroulette_t *const roulette, fixed_t renderDelta) diff --git a/src/k_roulette.h b/src/k_roulette.h index 294e8dd04..7c1eb6c80 100644 --- a/src/k_roulette.h +++ b/src/k_roulette.h @@ -156,6 +156,21 @@ void K_StartItemRoulette(player_t *const player, boolean ringbox); void K_StartEggmanRoulette(player_t *const player); +/*-------------------------------------------------- + void K_StopRoulette(itemroulette_t *const roulette); + + Resets the roulette back to a default state. + Stops item roulette, Eggman and Ringbox. + + Input Arguments:- + roulette - The roulette to stop. + + Return:- + N/A +--------------------------------------------------*/ + +void K_StopRoulette(itemroulette_t *const roulette); + /*-------------------------------------------------- fixed_t K_GetRouletteOffset(itemroulette_t *const roulette, fixed_t renderDelta); diff --git a/src/p_inter.c b/src/p_inter.c index fb21ddac8..cd2ce10c4 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1629,7 +1629,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget } player->karthud[khud_itemblink] = TICRATE; player->karthud[khud_itemblinkmode] = 0; - player->itemRoulette.active = false; + K_StopRoulette(&player->itemRoulette); if (P_IsDisplayPlayer(player)) S_StartSound(NULL, sfx_itrolf); }