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]);
players[playernum].itemroulette = 0;
players[playernum].itemroulette = KROULETTE_DISABLED;
players[playernum].itemtype = item;
players[playernum].itemamount = amt;

View file

@ -185,6 +185,23 @@ typedef enum
NUMKARTRESULTS
} 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
{
KSHIELD_NONE = 0,

View file

@ -1451,6 +1451,20 @@ struct int_const_s const INT_CONST[] = {
// kartitems_t
{"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
{"KSPIN_THRUST",KSPIN_THRUST},
{"KSPIN_IFRAMES",KSPIN_IFRAMES},

View file

@ -2439,9 +2439,9 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
// SRB2kart
if (betweenmaps || leveltime <= starttime || spectator == true)
{
itemroulette = 0;
previtemroulette = 0;
roulettetype = 0;
itemroulette = KROULETTE_DISABLED;
previtemroulette = KROULETTE_DISABLED;
roulettetype = KROULETTETYPE_NORMAL;
itemtype = 0;
itemamount = 0;
growshrinktimer = 0;
@ -2473,8 +2473,8 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
}
else
{
itemroulette = (players[player].itemroulette > 0 ? 1 : 0);
previtemroulette = (players[player].previtemroulette > 0 ? 1 : 0);
itemroulette = (players[player].itemroulette > KROULETTE_DISABLED ? KROULETTE_ACTIVE : KROULETTE_DISABLED);
previtemroulette = (players[player].previtemroulette > KROULETTE_DISABLED ? KROULETTE_ACTIVE : KROULETTE_DISABLED);
roulettetype = players[player].roulettetype;
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_StripOther(t2->player);
t2->player->itemroulette = 1;
t2->player->roulettetype = 2;
t2->player->itemroulette = KROULETTE_ACTIVE;
t2->player->roulettetype = KROULETTETYPE_EGGMAN;
}
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 (player->roulettetype == 1 && oddsvalid[1] == true)
if (player->roulettetype == KROULETTETYPE_KARMA && oddsvalid[1] == true)
{
// 1 is the extreme odds of player-controlled "Karma" items
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 (player->roulettetype == 1 && oddsvalid[1] == true)
if (player->roulettetype == KROULETTETYPE_KARMA && oddsvalid[1] == true)
{
// 1 is the extreme odds of player-controlled "Karma" items
useodds = 1;
@ -1585,11 +1585,11 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
// SPECIAL CASE No. 1:
// Fake Eggman items
if (player->roulettetype == 2)
if (player->roulettetype == KROULETTETYPE_EGGMAN)
{
player->eggmanexplode = 4*TICRATE;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrole);
return;
@ -1601,9 +1601,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{
K_KartGetItemResult(player, cv_kartdebugitem.value);
player->itemblink = TICRATE;
player->itemblinkmode = 2;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemblinkmode = KITEMBLINKMODE_KARMA;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_dbgsal);
return;
@ -1617,9 +1617,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
K_KartGetItemResult(player, itemroll);
player->itemblink = TICRATE;
player->itemblinkmode = 0;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemblinkmode = KITEMBLINKMODE_NORMAL;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolf);
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.
{
K_KartGetItemResult(player, KITEM_SUPERRING);
player->itemblinkmode = 1;
player->itemblinkmode = KITEMBLINKMODE_MASHED;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm);
}
@ -1646,7 +1646,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
K_KartGetItemResult(player, KITEM_SNEAKER);
else // Default to sad if nothing's enabled...
K_KartGetItemResult(player, KITEM_SAD);
player->itemblinkmode = 0;
player->itemblinkmode = KITEMBLINKMODE_NORMAL;
if (P_IsDisplayPlayer(player))
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.
{
K_KartGetItemResult(player, KITEM_BANANA);
player->itemblinkmode = 1;
player->itemblinkmode = KITEMBLINKMODE_MASHED;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm);
}
else if (bossinfo.boss)
{
K_KartGetItemResult(player, KITEM_ORBINAUT);
player->itemblinkmode = 0;
player->itemblinkmode = KITEMBLINKMODE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolf);
}
else if (itembreaker)
{
K_KartGetItemResult(player, KITEM_SNEAKER);
player->itemblinkmode = 1;
player->itemblinkmode = KITEMBLINKMODE_MASHED;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm);
}
}
player->itemblink = TICRATE;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
return;
}
@ -1691,9 +1691,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{
K_KartGetItemResult(player, KITEM_SUPERRING);
player->itemblink = TICRATE;
player->itemblinkmode = 1;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemblinkmode = KITEMBLINKMODE_MASHED;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolm);
return;
@ -1710,9 +1710,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{
K_KartGetItemResult(player, KITEM_SPB);
player->itemblink = TICRATE;
player->itemblinkmode = 2;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemblinkmode = KITEMBLINKMODE_KARMA;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolk);
return;
@ -1735,9 +1735,9 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
{
K_KartGetItemResult(player, KITEM_SPB);
player->itemblink = TICRATE;
player->itemblinkmode = 2;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemblinkmode = KITEMBLINKMODE_KARMA;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolk);
return;
@ -1776,13 +1776,13 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
}
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->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->roulettetype = 0; // This too
player->itemroulette = KROULETTE_DISABLED; // Since we're done, clear the roulette number
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)
{
player->itemblinkmode = 0;
player->itemblinkmode = KITEMBLINKMODE_NORMAL;
player->itemblink = 0;
}
@ -7815,7 +7815,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_KartItemRoulette(player, cmd);
// 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);
}
@ -9693,8 +9695,8 @@ void K_StripItems(player_t *player)
if (!player->itemroulette || player->roulettetype != 2)
{
player->itemroulette = 0;
player->roulettetype = 0;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
}
player->hyudorotimer = 0;
@ -9711,8 +9713,8 @@ void K_StripItems(player_t *player)
void K_StripOther(player_t *player)
{
player->itemroulette = 0;
player->roulettetype = 0;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
player->invincibilitytimer = 0;
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)
{
actor->target->player->itemroulette = 1;
actor->target->player->itemroulette = KROULETTE_ACTIVE;
}
else if (itembreaker)
{

View file

@ -136,7 +136,7 @@ boolean P_CanPickupItem(player_t *player, UINT8 weapon)
return false;
// Already have fake
if (player->roulettetype == 2
if (player->roulettetype == KROULETTETYPE_EGGMAN
|| player->eggmanexplode)
return false;
}
@ -457,8 +457,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
special->target->player->karmadelay = comebacktime;
player->itemroulette = 1;
player->roulettetype = 1;
player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = KROULETTETYPE_KARMA;
}
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_StripOther(player);
player->itemroulette = 1;
player->roulettetype = 2;
player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = KROULETTETYPE_EGGMAN;
if (special->target->player->eggmanblame >= 0
&& 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))
return;
player->itemroulette = 1;
player->roulettetype = 1;
player->itemroulette = KROULETTE_ACTIVE;
player->roulettetype = KROULETTETYPE_KARMA;
// Karma fireworks
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->itemblink = TICRATE;
player->itemblinkmode = 0;
player->itemroulette = 0;
player->roulettetype = 0;
player->itemblinkmode = KITEMBLINKMODE_NORMAL;
player->itemroulette = KROULETTE_DISABLED;
player->roulettetype = KROULETTETYPE_NORMAL;
if (P_IsDisplayPlayer(player))
S_StartSound(NULL, sfx_itrolf);
}