Use constants instead of magic numbers for roulette info

This commit is contained in:
NepDisk 2025-05-03 12:33:15 -04:00
parent ee92faabba
commit fea7aa001b
8 changed files with 89 additions and 56 deletions

View file

@ -5569,7 +5569,7 @@ static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum)
} }
K_StripItems(&players[playernum]); K_StripItems(&players[playernum]);
players[playernum].itemroulette = 0; players[playernum].itemroulette = KROULETTE_DISABLED;
players[playernum].itemtype = item; players[playernum].itemtype = item;
players[playernum].itemamount = amt; players[playernum].itemamount = amt;

View file

@ -185,6 +185,23 @@ typedef enum
NUMKARTRESULTS NUMKARTRESULTS
} kartitems_t; } kartitems_t;
typedef enum {
KROULETTE_DISABLED,
KROULETTE_ACTIVE,
} kartroulette_t;
typedef enum {
KROULETTETYPE_NORMAL,
KROULETTETYPE_KARMA,
KROULETTETYPE_EGGMAN,
} kartroulettetype_t;
typedef enum {
KITEMBLINKMODE_NORMAL,
KITEMBLINKMODE_MASHED,
KITEMBLINKMODE_KARMA,
} kartitemblinkmode_t;
typedef enum typedef enum
{ {
KSHIELD_NONE = 0, KSHIELD_NONE = 0,

View file

@ -1451,6 +1451,20 @@ struct int_const_s const INT_CONST[] = {
// kartitems_t // kartitems_t
{"KITEM_LIGHTNINGSHIELD",KITEM_THUNDERSHIELD}, {"KITEM_LIGHTNINGSHIELD",KITEM_THUNDERSHIELD},
// kartroulette_t
{"KROULETTE_DISABLED",KROULETTE_DISABLED},
{"KROULETTE_ACTIVE",KROULETTE_ACTIVE},
// kartroulettetype_t
{"KROULETTETYPE_NORMAL",KROULETTETYPE_NORMAL},
{"KROULETTETYPE_KARMA",KROULETTETYPE_KARMA},
{"KROULETTETYPE_EGGMAN",KROULETTETYPE_EGGMAN},
// kartitemblinkmode_t
{"KITEMBLINKMODE_NORMAL",KITEMBLINKMODE_NORMAL},
{"KITEMBLINKMODE_MASHED",KITEMBLINKMODE_MASHED},
{"KITEMBLINKMODE_KARMA",KITEMBLINKMODE_KARMA},
// kartspinoutflags_t // kartspinoutflags_t
{"KSPIN_THRUST",KSPIN_THRUST}, {"KSPIN_THRUST",KSPIN_THRUST},
{"KSPIN_IFRAMES",KSPIN_IFRAMES}, {"KSPIN_IFRAMES",KSPIN_IFRAMES},

View file

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

View file

@ -242,8 +242,8 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2)
{ {
K_DropItems(t2->player); //K_StripItems(t2->player); K_DropItems(t2->player); //K_StripItems(t2->player);
//K_StripOther(t2->player); //K_StripOther(t2->player);
t2->player->itemroulette = 1; t2->player->itemroulette = KROULETTE_ACTIVE;
t2->player->roulettetype = 2; t2->player->roulettetype = KROULETTETYPE_EGGMAN;
} }
if (t2->player->flamestore && t2->player->itemtype == KITEM_FLAMESHIELD) if (t2->player->flamestore && t2->player->itemtype == KITEM_FLAMESHIELD)

View file

@ -1144,7 +1144,7 @@ UINT8 K_FindUseodds(player_t *player, fixed_t mashed, UINT32 pdis, UINT8 bestbum
if (gametyperules & GTR_BATTLEODDS) // Battle Mode if (gametyperules & GTR_BATTLEODDS) // Battle Mode
{ {
if (player->roulettetype == 1 && oddsvalid[1] == true) if (player->roulettetype == KROULETTETYPE_KARMA && oddsvalid[1] == true)
{ {
// 1 is the extreme odds of player-controlled "Karma" items // 1 is the extreme odds of player-controlled "Karma" items
useodds = 1; useodds = 1;
@ -1353,7 +1353,7 @@ INT32 K_FindLegacyUseodds(player_t *player, fixed_t mashed, INT32 pingame, INT32
if (gametyperules & GTR_BATTLEODDS) // Battle Mode if (gametyperules & GTR_BATTLEODDS) // Battle Mode
{ {
if (player->roulettetype == 1 && oddsvalid[1] == true) if (player->roulettetype == KROULETTETYPE_KARMA && oddsvalid[1] == true)
{ {
// 1 is the extreme odds of player-controlled "Karma" items // 1 is the extreme odds of player-controlled "Karma" items
useodds = 1; useodds = 1;
@ -1585,11 +1585,11 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
// SPECIAL CASE No. 1: // SPECIAL CASE No. 1:
// Fake Eggman items // Fake Eggman items
if (player->roulettetype == 2) if (player->roulettetype == KROULETTETYPE_EGGMAN)
{ {
player->eggmanexplode = 4*TICRATE; player->eggmanexplode = 4*TICRATE;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrole); S_StartSound(NULL, sfx_itrole);
return; return;
@ -1601,9 +1601,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{ {
K_KartGetItemResult(player, cv_kartdebugitem.value); K_KartGetItemResult(player, cv_kartdebugitem.value);
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemblinkmode = 2; player->itemblinkmode = KITEMBLINKMODE_KARMA;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_dbgsal); S_StartSound(NULL, sfx_dbgsal);
return; return;
@ -1617,9 +1617,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
K_KartGetItemResult(player, itemroll); K_KartGetItemResult(player, itemroll);
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemblinkmode = 0; player->itemblinkmode = KITEMBLINKMODE_NORMAL;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolf); S_StartSound(NULL, sfx_itrolf);
return; return;
@ -1636,7 +1636,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
if (mashed && ((K_RingsActive() == true) && (modeattacking || cv_superring.value))) // ANY mashed value? You get rings. if (mashed && ((K_RingsActive() == true) && (modeattacking || cv_superring.value))) // ANY mashed value? You get rings.
{ {
K_KartGetItemResult(player, KITEM_SUPERRING); K_KartGetItemResult(player, KITEM_SUPERRING);
player->itemblinkmode = 1; player->itemblinkmode = KITEMBLINKMODE_MASHED;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm); S_StartSound(NULL, sfx_itrolm);
} }
@ -1646,7 +1646,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
K_KartGetItemResult(player, KITEM_SNEAKER); K_KartGetItemResult(player, KITEM_SNEAKER);
else // Default to sad if nothing's enabled... else // Default to sad if nothing's enabled...
K_KartGetItemResult(player, KITEM_SAD); K_KartGetItemResult(player, KITEM_SAD);
player->itemblinkmode = 0; player->itemblinkmode = KITEMBLINKMODE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolf); S_StartSound(NULL, sfx_itrolf);
} }
@ -1656,29 +1656,29 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
if (mashed && (bossinfo.boss || cv_banana.value) && !itembreaker) // ANY mashed value? You get a banana. if (mashed && (bossinfo.boss || cv_banana.value) && !itembreaker) // ANY mashed value? You get a banana.
{ {
K_KartGetItemResult(player, KITEM_BANANA); K_KartGetItemResult(player, KITEM_BANANA);
player->itemblinkmode = 1; player->itemblinkmode = KITEMBLINKMODE_MASHED;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm); S_StartSound(NULL, sfx_itrolm);
} }
else if (bossinfo.boss) else if (bossinfo.boss)
{ {
K_KartGetItemResult(player, KITEM_ORBINAUT); K_KartGetItemResult(player, KITEM_ORBINAUT);
player->itemblinkmode = 0; player->itemblinkmode = KITEMBLINKMODE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolf); S_StartSound(NULL, sfx_itrolf);
} }
else if (itembreaker) else if (itembreaker)
{ {
K_KartGetItemResult(player, KITEM_SNEAKER); K_KartGetItemResult(player, KITEM_SNEAKER);
player->itemblinkmode = 1; player->itemblinkmode = KITEMBLINKMODE_MASHED;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm); S_StartSound(NULL, sfx_itrolm);
} }
} }
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
return; return;
} }
@ -1691,9 +1691,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{ {
K_KartGetItemResult(player, KITEM_SUPERRING); K_KartGetItemResult(player, KITEM_SUPERRING);
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemblinkmode = 1; player->itemblinkmode = KITEMBLINKMODE_MASHED;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm); S_StartSound(NULL, sfx_itrolm);
return; return;
@ -1710,9 +1710,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{ {
K_KartGetItemResult(player, KITEM_SPB); K_KartGetItemResult(player, KITEM_SPB);
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemblinkmode = 2; player->itemblinkmode = KITEMBLINKMODE_KARMA;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolk); S_StartSound(NULL, sfx_itrolk);
return; return;
@ -1735,9 +1735,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{ {
K_KartGetItemResult(player, KITEM_SPB); K_KartGetItemResult(player, KITEM_SPB);
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemblinkmode = 2; player->itemblinkmode = KITEMBLINKMODE_KARMA;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolk); S_StartSound(NULL, sfx_itrolk);
return; return;
@ -1776,13 +1776,13 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
} }
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, ((player->roulettetype == 1) ? sfx_itrolk : (mashed ? sfx_itrolm : sfx_itrolf))); S_StartSound(NULL, ((player->roulettetype == KROULETTETYPE_KARMA) ? sfx_itrolk : (mashed ? sfx_itrolm : sfx_itrolf)));
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemblinkmode = ((player->roulettetype == 1) ? 2 : (mashed ? 1 : 0)); player->itemblinkmode = ((player->roulettetype == KROULETTETYPE_KARMA) ? KITEMBLINKMODE_KARMA : (mashed ? KITEMBLINKMODE_MASHED : KITEMBLINKMODE_NORMAL));
player->itemroulette = 0; // Since we're done, clear the roulette number player->itemroulette = KROULETTE_DISABLED; // Since we're done, clear the roulette number
player->roulettetype = 0; // This too player->roulettetype = KROULETTETYPE_NORMAL; // This too
} }
//} //}
@ -7722,7 +7722,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
if (player->itemblink && player->itemblink-- <= 0) if (player->itemblink && player->itemblink-- <= 0)
{ {
player->itemblinkmode = 0; player->itemblinkmode = KITEMBLINKMODE_NORMAL;
player->itemblink = 0; player->itemblink = 0;
} }
@ -7815,7 +7815,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_KartItemRoulette(player, cmd); K_KartItemRoulette(player, cmd);
// Gain rings when roulette starts. // Gain rings when roulette starts.
if (player->itemroulette > 0 && player->previtemroulette == 0) if (player->itemroulette > KROULETTE_DISABLED
&& player->previtemroulette == KROULETTE_DISABLED
&& player->roulettetype != KROULETTETYPE_EGGMAN)
{ {
K_AwardScaledPlayerRings(player, ASR_ITEMBOX); K_AwardScaledPlayerRings(player, ASR_ITEMBOX);
} }
@ -9693,8 +9695,8 @@ void K_StripItems(player_t *player)
if (!player->itemroulette || player->roulettetype != 2) if (!player->itemroulette || player->roulettetype != 2)
{ {
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
} }
player->hyudorotimer = 0; player->hyudorotimer = 0;
@ -9711,8 +9713,8 @@ void K_StripItems(player_t *player)
void K_StripOther(player_t *player) void K_StripOther(player_t *player)
{ {
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
player->invincibilitytimer = 0; player->invincibilitytimer = 0;
if (player->growshrinktimer) if (player->growshrinktimer)

View file

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

View file

@ -136,7 +136,7 @@ boolean P_CanPickupItem(player_t *player, UINT8 weapon)
return false; return false;
// Already have fake // Already have fake
if (player->roulettetype == 2 if (player->roulettetype == KROULETTETYPE_EGGMAN
|| player->eggmanexplode) || player->eggmanexplode)
return false; return false;
} }
@ -457,8 +457,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
special->target->player->karmadelay = comebacktime; special->target->player->karmadelay = comebacktime;
player->itemroulette = 1; player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = 1; player->roulettetype = KROULETTETYPE_KARMA;
} }
else if (special->target->player->karmamode == 2 && P_CanPickupItem(player, 2)) else if (special->target->player->karmamode == 2 && P_CanPickupItem(player, 2))
{ {
@ -496,8 +496,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
K_DropItems(player); //K_StripItems(player); K_DropItems(player); //K_StripItems(player);
//K_StripOther(player); //K_StripOther(player);
player->itemroulette = 1; player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = 2; player->roulettetype = KROULETTETYPE_EGGMAN;
if (special->target->player->eggmanblame >= 0 if (special->target->player->eggmanblame >= 0
&& special->target->player->eggmanblame < MAXPLAYERS && special->target->player->eggmanblame < MAXPLAYERS
@ -591,8 +591,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
if (special->fuse || !P_CanPickupItem(player, 1) || ((gametyperules & GTR_BUMPERS) && player->bumper <= 0)) if (special->fuse || !P_CanPickupItem(player, 1) || ((gametyperules & GTR_BUMPERS) && player->bumper <= 0))
return; return;
player->itemroulette = 1; player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = 1; player->roulettetype = KROULETTETYPE_KARMA;
// Karma fireworks // Karma fireworks
for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
@ -1723,9 +1723,9 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
player->itemamount = max(1, target->movecount); player->itemamount = max(1, target->movecount);
} }
player->itemblink = TICRATE; player->itemblink = TICRATE;
player->itemblinkmode = 0; player->itemblinkmode = KITEMBLINKMODE_NORMAL;
player->itemroulette = 0; player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = 0; player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolf); S_StartSound(NULL, sfx_itrolf);
} }