From 01093f4ca24df2e517f9b9a68808d59f67427ea4 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 9 Aug 2018 22:52:22 -0400 Subject: [PATCH] Orbinaut x4 --- src/d_player.h | 1 + src/k_kart.c | 69 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index f3c50b60..371b315f 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -258,6 +258,7 @@ typedef enum KRITEM_TRIPLEBANANA, KRITEM_TENFOLDBANANA, KRITEM_TRIPLEORBINAUT, + KRITEM_QUADORBINAUT, KRITEM_DUALJAWZ, NUMKARTRESULTS diff --git a/src/k_kart.c b/src/k_kart.c index aa4eb680..18414b41 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -464,7 +464,7 @@ boolean K_IsPlayerWanted(player_t *player) static INT32 K_KartItemOddsRace[NUMKARTRESULTS][9] = { //P-Odds 0 1 2 3 4 5 6 7 8 - /*Sneaker*/ {20, 0, 0, 3, 5, 5, 0, 0, 0 }, // Sneaker + /*Sneaker*/ {20, 0, 0, 3, 6, 6, 0, 0, 0 }, // Sneaker /*Rocket Sneaker*/ { 0, 0, 0, 0, 0, 2, 5, 4, 0 }, // Rocket Sneaker /*Invincibility*/ { 0, 0, 0, 0, 0, 1, 5, 6,16 }, // Invincibility /*Banana*/ { 0, 9, 4, 2, 1, 0, 0, 0, 0 }, // Banana @@ -474,7 +474,7 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS][9] = /*Mine*/ { 0, 0, 1, 2, 1, 0, 0, 0, 0 }, // Mine /*Ballhog*/ { 0, 0, 1, 2, 1, 0, 0, 0, 0 }, // Ballhog /*Self-Propelled Bomb*/ { 0, 0, 1, 1, 1, 2, 2, 3, 2 }, // Self-Propelled Bomb - /*Grow*/ { 0, 0, 0, 0, 1, 2, 4, 6, 4 }, // Grow + /*Grow*/ { 0, 0, 0, 0, 0, 1, 3, 6, 4 }, // Grow /*Shrink*/ { 0, 0, 0, 0, 0, 0, 0, 1, 0 }, // Shrink /*Thunder Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Thunder Shield /*Hyudoro*/ { 0, 0, 0, 0, 1, 2, 1, 0, 0 }, // Hyudoro @@ -483,14 +483,15 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS][9] = /*Sneaker x3*/ { 0, 0, 0, 0, 3, 6, 5, 3, 0 }, // Sneaker x3 /*Banana x3*/ { 0, 0, 1, 1, 0, 0, 0, 0, 0 }, // Banana x3 /*Banana x10*/ { 0, 0, 0, 0, 1, 0, 0, 0, 0 }, // Banana x10 - /*Orbinaut x3*/ { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, // Orbinaut x3 + /*Orbinaut x3*/ { 0, 0, 0, 1, 1, 0, 0, 0, 0 }, // Orbinaut x3 + /*Orbinaut x4*/ { 0, 0, 0, 0, 0, 1, 1, 0, 0 }, // Orbinaut x4 /*Jawz x2*/ { 0, 0, 0, 1, 1, 0, 0, 0, 0 } // Jawz x2 }; static INT32 K_KartItemOddsBattle[NUMKARTRESULTS][6] = { //P-Odds 0 1 2 3 - /*Sneaker*/ { 3, 2, 2, 2 }, // Sneaker + /*Sneaker*/ { 2, 2, 2, 2 }, // Sneaker /*Rocket Sneaker*/ { 0, 0, 0, 0 }, // Rocket Sneaker /*Invincibility*/ { 4, 2, 1, 2 }, // Invincibility /*Banana*/ { 0, 0, 2, 0 }, // Banana @@ -509,7 +510,8 @@ static INT32 K_KartItemOddsBattle[NUMKARTRESULTS][6] = /*Sneaker x3*/ { 2, 0, 0, 2 }, // Sneaker x3 /*Banana x3*/ { 0, 1, 1, 1 }, // Banana x3 /*Banana x10*/ { 1, 0, 0, 1 }, // Banana x10 - /*Orbinaut x3*/ { 0, 2, 1, 2 }, // Orbinaut x3 + /*Orbinaut x3*/ { 0, 1, 1, 1 }, // Orbinaut x3 + /*Orbinaut x4*/ { 1, 1, 0, 1 }, // Orbinaut x4 /*Jawz x2*/ { 3, 2, 0, 2 } // Jawz x2 }; @@ -541,6 +543,10 @@ static void K_KartGetItemResult(player_t *player, SINT8 getitem) player->kartstuff[k_itemtype] = KITEM_ORBINAUT; player->kartstuff[k_itemamount] = 3; break; + case KRITEM_QUADORBINAUT: // Orbinaut x4 + player->kartstuff[k_itemtype] = KITEM_ORBINAUT; + player->kartstuff[k_itemamount] = 4; + break; case KRITEM_DUALJAWZ: // Jawz x2 player->kartstuff[k_itemtype] = KITEM_JAWZ; player->kartstuff[k_itemamount] = 2; @@ -709,6 +715,10 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) POWERITEMODDS(newodds); if (!cv_tripleorbinaut.value) newodds = 0; break; + case KRITEM_QUADORBINAUT: + POWERITEMODDS(newodds); + if (!cv_tripleorbinaut.value) newodds = 0; + break; case KRITEM_DUALJAWZ: POWERITEMODDS(newodds); if (!cv_dualjawz.value) newodds = 0; @@ -907,6 +917,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) SETITEMRESULT(useodds, KRITEM_TRIPLEBANANA); // Banana x3 SETITEMRESULT(useodds, KRITEM_TENFOLDBANANA); // Banana x10 SETITEMRESULT(useodds, KRITEM_TRIPLEORBINAUT); // Orbinaut x3 + SETITEMRESULT(useodds, KRITEM_QUADORBINAUT); // Orbinaut x4 SETITEMRESULT(useodds, KRITEM_DUALJAWZ); // Jawz x2 #undef SETITEMRESULT @@ -4430,7 +4441,7 @@ static patch_t *kp_rocketsneaker[2]; static patch_t *kp_invincibility[13]; static patch_t *kp_banana[2]; static patch_t *kp_eggman[2]; -static patch_t *kp_orbinaut[2]; +static patch_t *kp_orbinaut[5]; static patch_t *kp_jawz[2]; static patch_t *kp_mine[2]; static patch_t *kp_ballhog[2]; @@ -4545,7 +4556,12 @@ void K_LoadKartHUDGraphics(void) } kp_banana[0] = W_CachePatchName("K_ITBANA", PU_HUDGFX); kp_eggman[0] = W_CachePatchName("K_ITEGGM", PU_HUDGFX); - kp_orbinaut[0] = W_CachePatchName("K_ITORBN", PU_HUDGFX); + sprintf(buffer, "K_ITORBx"); + for (i = 0; i < 4; i++) + { + buffer[7] = '1'+i; + kp_orbinaut[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX); + } kp_jawz[0] = W_CachePatchName("K_ITJAWZ", PU_HUDGFX); kp_mine[0] = W_CachePatchName("K_ITMINE", PU_HUDGFX); kp_ballhog[0] = W_CachePatchName("K_ITBHOG", PU_HUDGFX); @@ -4573,7 +4589,7 @@ void K_LoadKartHUDGraphics(void) } kp_banana[1] = W_CachePatchName("K_ISBANA", PU_HUDGFX); kp_eggman[1] = W_CachePatchName("K_ISEGGM", PU_HUDGFX); - kp_orbinaut[1] = W_CachePatchName("K_ISORBN", PU_HUDGFX); + kp_orbinaut[4] = W_CachePatchName("K_ISORBN", PU_HUDGFX); kp_jawz[1] = W_CachePatchName("K_ISJAWZ", PU_HUDGFX); kp_mine[1] = W_CachePatchName("K_ISMINE", PU_HUDGFX); kp_ballhog[1] = W_CachePatchName("K_ISBHOG", PU_HUDGFX); @@ -4843,22 +4859,22 @@ static void K_drawKartItem(void) switch((stplyr->kartstuff[k_itemroulette] % (13*3)) / 3) { // Each case is handled in threes, to give three frames of in-game time to see the item on the roulette - case 0: localpatch = kp_sneaker[offset]; break; // Sneaker - case 1: localpatch = kp_banana[offset]; break; // Banana - case 2: localpatch = kp_orbinaut[offset]; break; // Orbinaut - case 3: localpatch = kp_mine[offset]; break; // Mine - case 4: localpatch = kp_grow[offset]; break; // Grow - case 5: localpatch = kp_hyudoro[offset]; break; // Hyudoro - case 6: localpatch = kp_rocketsneaker[offset]; break; // Rocket Sneaker - case 7: localpatch = kp_jawz[offset]; break; // Jawz - case 8: localpatch = kp_selfpropelledbomb[offset]; break; // Self-Propelled Bomb - case 9: localpatch = kp_shrink[offset]; break; // Shrink - case 10: localpatch = localinv; break; // Invincibility - case 11: localpatch = kp_eggman[offset]; break; // Eggman Monitor - case 12: localpatch = kp_ballhog[offset]; break; // Ballhog - case 13: localpatch = kp_thundershield[offset]; break; // Thunder Shield - //case 14: localpatch = kp_pogospring[offset]; break; // Pogo Spring - //case 15: localpatch = kp_kitchensink[offset]; break; // Kitchen Sink + case 0: localpatch = kp_sneaker[offset]; break; // Sneaker + case 1: localpatch = kp_banana[offset]; break; // Banana + case 2: localpatch = kp_orbinaut[3+offset]; break; // Orbinaut + case 3: localpatch = kp_mine[offset]; break; // Mine + case 4: localpatch = kp_grow[offset]; break; // Grow + case 5: localpatch = kp_hyudoro[offset]; break; // Hyudoro + case 6: localpatch = kp_rocketsneaker[offset]; break; // Rocket Sneaker + case 7: localpatch = kp_jawz[offset]; break; // Jawz + case 8: localpatch = kp_selfpropelledbomb[offset]; break; // Self-Propelled Bomb + case 9: localpatch = kp_shrink[offset]; break; // Shrink + case 10: localpatch = localinv; break; // Invincibility + case 11: localpatch = kp_eggman[offset]; break; // Eggman Monitor + case 12: localpatch = kp_ballhog[offset]; break; // Ballhog + case 13: localpatch = kp_thundershield[offset]; break; // Thunder Shield + //case 14: localpatch = kp_pogospring[offset]; break; // Pogo Spring + //case 15: localpatch = kp_kitchensink[offset]; break; // Kitchen Sink default: break; } } @@ -4912,7 +4928,10 @@ static void K_drawKartItem(void) case KITEM_INVINCIBILITY: localpatch = localinv; localbg = kp_itembg[offset+1]; break; case KITEM_BANANA: localpatch = kp_banana[offset]; break; case KITEM_EGGMAN: localpatch = kp_eggman[offset]; break; - case KITEM_ORBINAUT: localpatch = kp_orbinaut[offset]; break; + case KITEM_ORBINAUT: + localpatch = kp_orbinaut[(splitscreen ? 4 + : min(stplyr->kartstuff[k_itemamount]-1, 3))]; + break; case KITEM_JAWZ: localpatch = kp_jawz[offset]; break; case KITEM_MINE: localpatch = kp_mine[offset]; break; case KITEM_BALLHOG: localpatch = kp_ballhog[offset]; break;