diff --git a/src/d_netcmd.c b/src/d_netcmd.c index ac05208a8..7634c68b0 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -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; diff --git a/src/d_player.h b/src/d_player.h index 7b5e2b5a3..674a69e92 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -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, diff --git a/src/deh_tables.c b/src/deh_tables.c index 0a35ee43c..7e5bfd2c6 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -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}, diff --git a/src/g_game.c b/src/g_game.c index cdf4e70a6..3f36d9862 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -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) diff --git a/src/k_collide.c b/src/k_collide.c index e24950cde..bc08097f7 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -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) diff --git a/src/k_kart.c b/src/k_kart.c index 4ec058742..c47930e0a 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -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) diff --git a/src/p_enemy.c b/src/p_enemy.c index 35c3da2ae..d45b3fbb6 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -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) { diff --git a/src/p_inter.c b/src/p_inter.c index 357e4d996..7e435af2a 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -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); }