Cleanup itemroulette

This commit is contained in:
GenericHeroGuy 2025-11-12 23:12:58 +01:00
parent e95faf8b55
commit 1385692e83
10 changed files with 35 additions and 42 deletions

View file

@ -6192,7 +6192,7 @@ static void Got_Cheat(UINT8 **cp, INT32 playernum)
K_StripItems(player);
// Cancel roulette if rolling
player->itemroulette = KROULETTE_DISABLED;
player->itemroulette = 0;
player->itemtype = item;
player->itemamount = amt;

View file

@ -137,17 +137,6 @@ typedef enum
IF_HOLDREADY = 1<<3, // Hold button-style item is ready to activate
} itemflags_t;
typedef enum {
KROULETTE_DISABLED,
KROULETTE_ACTIVE,
} kartroulettestate_t;
typedef enum {
KROULETTETYPE_NORMAL,
KROULETTETYPE_KARMA,
KROULETTETYPE_EGGMAN,
} kartroulettetype_t;
typedef enum
{
KSHIELD_NONE = 0,

View file

@ -1545,11 +1545,7 @@ struct int_const_s const INT_CONST[] = {
{"KSHIELD_FLAME",KSHIELD_FLAME},
{"NUMKARTSHIELDS",NUMKARTSHIELDS},
// kartroulettestate_t
{"KROULETTE_DISABLED",KROULETTE_DISABLED},
{"KROULETTE_ACTIVE",KROULETTE_ACTIVE},
// kartroulettetype_t
// kartroulettetype_e
{"KROULETTETYPE_NORMAL",KROULETTETYPE_NORMAL},
{"KROULETTETYPE_KARMA",KROULETTETYPE_KARMA},
{"KROULETTETYPE_EGGMAN",KROULETTETYPE_EGGMAN},

View file

@ -2806,8 +2806,8 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
// SRB2kart
if (betweenmaps || leveltime <= starttime || spectator == true)
{
itemroulette = KROULETTE_DISABLED;
previtemroulette = KROULETTE_DISABLED;
itemroulette = 0;
previtemroulette = 0;
roulettetype = KROULETTETYPE_NORMAL;
itemtype = 0;
itemamount = 0;
@ -2847,8 +2847,8 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
}
else
{
itemroulette = (players[player].itemroulette > KROULETTE_DISABLED ? KROULETTE_ACTIVE : KROULETTE_DISABLED);
previtemroulette = (players[player].previtemroulette > KROULETTE_DISABLED ? KROULETTE_ACTIVE : KROULETTE_DISABLED);
itemroulette = players[player].itemroulette > 0 ? 1 : 0;
previtemroulette = players[player].previtemroulette > 0 ? 1 : 0;
roulettetype = players[player].roulettetype;
if (players[player].itemflags & IF_ITEMOUT)

View file

@ -256,10 +256,7 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2)
}
else
{
K_DropItems(t2->player); //K_StripItems(t2->player);
//K_StripOther(t2->player);
t2->player->itemroulette = KROULETTE_ACTIVE;
t2->player->roulettetype = KROULETTETYPE_EGGMAN;
K_StartRoulette(t2->player, KROULETTETYPE_EGGMAN);
}
if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME))

View file

@ -337,7 +337,7 @@ void K_AwardPlayerItem(player_t *player, kartitemtype_e type, UINT8 amount, kart
player->itemblink = TICRATE;
player->itemblinkmode = blink;
player->itemroulette = KROULETTE_DISABLED; // Since we're done, clear the roulette number
player->itemroulette = 0; // Since we're done, clear the roulette number
player->roulettetype = KROULETTETYPE_NORMAL; // This too
if (P_IsDisplayPlayer(player))
@ -1316,7 +1316,7 @@ void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
if (player->roulettetype == KROULETTETYPE_EGGMAN)
{
player->eggmanexplode = 4*TICRATE;
player->itemroulette = KROULETTE_DISABLED;
player->itemroulette = 0;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrole);
@ -1455,6 +1455,15 @@ void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
K_AwardPlayerResult(player, result, player->roulettetype == KROULETTETYPE_KARMA ? KITEMBLINK_KARMA : mashed ? KITEMBLINK_MASHED : KITEMBLINK_NORMAL);
}
void K_StartRoulette(player_t *player, kartroulettetype_e roulettetype)
{
if (roulettetype == KROULETTETYPE_EGGMAN)
K_DropItems(player);
player->itemroulette = 1;
player->roulettetype = roulettetype;
}
void K_SetPlayerItemCooldown(player_t *player, tic_t timer, boolean force)
{
if ((timer >= player->itemusecooldown) || force)

View file

@ -51,6 +51,13 @@ typedef enum
KITEMBLINK_DEBUG,
} kartitemblink_e;
typedef enum
{
KROULETTETYPE_NORMAL,
KROULETTETYPE_KARMA,
KROULETTETYPE_EGGMAN,
} kartroulettetype_e;
typedef enum
{
ODDS_RACE,
@ -184,6 +191,7 @@ UINT8 K_FindUseodds(const player_t *player, fixed_t mashed, UINT32 pdis, UINT8 b
UINT32 K_ScaleItemDistance(UINT32 distance, UINT8 numPlayers, boolean spbrush);
INT32 K_GetRollingRouletteItem(player_t *player);
void K_KartItemRoulette(player_t *player, ticcmd_t *cmd);
void K_StartRoulette(player_t *player, kartroulettetype_e roulettetype);
void K_SetPlayerItemCooldown(player_t *player, tic_t timer, boolean force);

View file

@ -7285,8 +7285,8 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_KartItemRoulette(player, cmd);
// Gain rings when roulette starts.
if (player->itemroulette > KROULETTE_DISABLED
&& player->previtemroulette == KROULETTE_DISABLED
if (player->itemroulette > 0
&& player->previtemroulette == 0
&& player->roulettetype != KROULETTETYPE_EGGMAN)
{
K_AwardScaledPlayerRings(player, ASR_ITEMBOX);
@ -9669,9 +9669,9 @@ void K_StripItems(player_t *player)
player->itemflags &= ~IF_EGGMANOUT;
K_UnsetItemOut(player);
if (!player->itemroulette || player->roulettetype != 2)
if (!player->itemroulette || player->roulettetype != KROULETTETYPE_EGGMAN)
{
player->itemroulette = KROULETTE_DISABLED;
player->itemroulette = 0;
player->roulettetype = KROULETTETYPE_NORMAL;
}
@ -9690,7 +9690,7 @@ void K_StripItems(player_t *player)
void K_StripOther(player_t *player)
{
player->itemroulette = KROULETTE_DISABLED;
player->itemroulette = 0;
player->roulettetype = KROULETTETYPE_NORMAL;
player->invincibilitytimer = 0;

View file

@ -10839,7 +10839,7 @@ void A_ItemPop(void *thing)
if (!((gametyperules & GTR_BUMPERS) && actor->target->player->bumper <= 0) && !itembreaker)
{
actor->target->player->itemroulette = KROULETTE_ACTIVE;
K_StartRoulette(actor->target->player, KROULETTETYPE_NORMAL);
}
else if (itembreaker)
{

View file

@ -459,8 +459,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
special->target->player->karmadelay = comebacktime;
player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = KROULETTETYPE_KARMA;
K_StartRoulette(player, KROULETTETYPE_KARMA);
}
else if (special->target->player->karmamode == 2 && P_CanPickupItem(player, 2))
{
@ -495,11 +494,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
special->target->player->karmadelay = comebacktime;
K_DropItems(player); //K_StripItems(player);
//K_StripOther(player);
player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = KROULETTETYPE_EGGMAN;
K_StartRoulette(player, KROULETTETYPE_EGGMAN);
if (special->target->player->eggmanblame >= 0
&& special->target->player->eggmanblame < MAXPLAYERS
@ -591,8 +586,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
if (special->fuse || !P_CanPickupItem(player, 1) || ((gametyperules & GTR_BUMPERS) && player->bumper <= 0))
return;
player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = KROULETTETYPE_KARMA;
K_StartRoulette(player, KROULETTETYPE_KARMA);
// Karma fireworks
for (i = 0; i < 5; i++)