From b59a9272ea4e0720dbd4501c393b7c867c80845d Mon Sep 17 00:00:00 2001 From: minenice55 Date: Tue, 4 Nov 2025 23:30:28 -0500 Subject: [PATCH] egg mine bracket --- src/d_player.h | 3 +++ src/k_kart.c | 2 +- src/k_odds.c | 53 +++++++++++++++++++++++++++++++++++--------------- 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index 872b3dc32..e97940990 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -182,6 +182,9 @@ typedef enum KRITEM_TRIPLEORBINAUT, KRITEM_QUADORBINAUT, KRITEM_DUALJAWZ, + + // alt items implemented as separate things + KAITEM_EGGMINE, // also landmine NUMKARTRESULTS } kartitems_t; diff --git a/src/k_kart.c b/src/k_kart.c index b848b6a1b..d425d51f2 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -251,7 +251,7 @@ void K_RegisterKartStuff(void) // Nu-ITEMS CV_RegisterVar(&cv_superring); - CV_RegisterVar(&cv_landmine); + // CV_RegisterVar(&cv_landmine); CV_RegisterVar(&cv_bubbleshield); CV_RegisterVar(&cv_flameshield); diff --git a/src/k_odds.c b/src/k_odds.c index 7ad24ea05..c17277a55 100644 --- a/src/k_odds.c +++ b/src/k_odds.c @@ -56,7 +56,7 @@ consvar_t *KartItemCVars[NUMKARTRESULTS-1] = &cv_pogospring, &cv_kitchensink, &cv_superring, - &cv_landmine, + // &cv_landmine, &cv_bubbleshield, &cv_flameshield, &cv_dualsneaker, @@ -108,7 +108,7 @@ static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][MAXODDS] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Pogo Spring { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Kitchen Sink { 7, 11, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Super Ring - { 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Land Mine / Egg Mine + { 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Land Mine { 0, 0, 0, 12, 15, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Bubble Shield { 0, 0, 0, 0, 0, 0, 2, 4, 12, 24, 27, 12, 7, 4, 0, 0}, // Flame Shield { 0, 0, 0, 0, 0, 0, 8, 20, 40, 12, 0, 0, 0, 0, 0, 0}, // Sneaker x2 @@ -117,7 +117,8 @@ static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][MAXODDS] = { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Banana x10 { 0, 0, 0, 2, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Orbinaut x3 { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Orbinaut x4 - { 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // Jawz x2 + { 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // Jawz x2 + { 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // Egg Mine }; static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS][2] = @@ -140,7 +141,7 @@ static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS][2] = { 3, 0 }, // Pogo Spring { 0, 0 }, // Kitchen Sink { 0, 0 }, // Super Ring - { 2, 0 }, // Land Mine / Egg Mine + { 2, 0 }, // Land Mine { 1, 0 }, // Bubble Shield { 1, 0 }, // Flame Shield { 0, 0 }, // Sneaker x2 @@ -149,7 +150,8 @@ static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS][2] = { 1, 1 }, // Banana x10 { 2, 0 }, // Orbinaut x3 { 1, 1 }, // Orbinaut x4 - { 5, 1 } // Jawz x2 + { 5, 1 }, // Jawz x2 + { 2, 0 } // Egg Mine }; /* @@ -173,7 +175,7 @@ static UINT8 K_KartItemOddsSpecial[NUMKARTRESULTS-1][4] = { 0, 0, 0, 0 }, // Pogo Spring { 0, 0, 0, 0 }, // Kitchen Sink { 0, 0, 0, 0 }, // Super Ring - { 0, 0, 0, 0 }, // Land Mine / Egg Mine + { 0, 0, 0, 0 }, // Land Mine { 0, 0, 0, 0 }, // Bubble Shield { 0, 0, 0, 0 }, // Flame Shield { 0, 1, 1, 0 }, // Sneaker x2 @@ -182,7 +184,8 @@ static UINT8 K_KartItemOddsSpecial[NUMKARTRESULTS-1][4] = { 0, 0, 0, 0 }, // Banana x10 { 0, 1, 1, 0 }, // Orbinaut x3 { 0, 0, 1, 1 }, // Orbinaut x4 - { 0, 0, 1, 1 } // Jawz x2 + { 0, 0, 1, 1 }, // Jawz x2 + { 0, 0, 0, 0 } // Egg Mine }; */ @@ -209,7 +212,7 @@ tic_t ItemBGone[NUMKARTRESULTS][2] = { 0, 0 }, // Pogo Spring { 0, 0 }, // Kitchen Sink { 0, 0 }, // Super Ring - { 0, 0 }, // Land Mine / Egg Mine + { 0, 0 }, // Land Mine { 5, 0 }, // Bubble Shield { 8, 0 }, // Flame Shield { 0, 0 }, // Sneaker x2 @@ -218,7 +221,8 @@ tic_t ItemBGone[NUMKARTRESULTS][2] = { 30, 0 }, // Banana x10 { 10, 0 }, // Orbinaut x3 { 20, 0 }, // Orbinaut x4 - { 10, 0 } // Jawz x2 + { 10, 0 }, // Jawz x2 + { 0, 0 } // Egg Mine }; // TODO: Vectorize all item tables and shove them into gamemode-uniqe pools (k_oddstable.cpp?). @@ -718,12 +722,27 @@ INT32 K_KartGetItemOdds( notForBottom = true; break; case KITEM_EGGMAN: - // It blows you up and is overall ridiculous. This was *overdue*. - cooldownOnStart = true; - powerItem = true; - - notNearEnd = true; - notForBottom = true; + if (K_IsKartItemAlternate(KITEM_EGGMAN)) + { + notForBottom = true; + if (gametyperules & GTR_BATTLEODDS) + { + newodds = K_KartItemOddsBattle[KAITEM_EGGMINE-1][pos]; + } + else if (gametyperules & GTR_RACEODDS) + { + newodds = K_KartItemOddsRace[KAITEM_EGGMINE-1][pos]; + } + } + else + { + // It blows you up and is overall ridiculous. This was *overdue*. + cooldownOnStart = true; + powerItem = true; + + notNearEnd = true; + notForBottom = true; + } break; case KITEM_SUPERRING: notNearEnd = true; @@ -734,9 +753,11 @@ INT32 K_KartGetItemOdds( newodds = 0; } + break; + case KITEM_LANDMINE: // au revoir + newodds = 0; break; case KITEM_ROCKETSNEAKER: - case KITEM_LANDMINE: case KRITEM_TRIPLESNEAKER: powerItem = true; break;