diff --git a/src/d_netcmd.c b/src/d_netcmd.c index f7954747..fb5234c9 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -332,7 +332,7 @@ consvar_t cv_ballhog = {"ballhog", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NU consvar_t cv_selfpropelledbomb = {"selfpropelledbomb", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_grow = {"grow", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_shrink = {"shrink", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_lightningshield = {"lightningshield", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_thundershield = {"thundershield", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_hyudoro = {"hyudoro", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_pogospring = {"pogospring", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 371df720..b2a57bc0 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -112,7 +112,7 @@ extern consvar_t cv_recycler;*/ extern consvar_t cv_sneaker, cv_rocketsneaker, cv_invincibility, cv_banana; extern consvar_t cv_eggmanmonitor, cv_orbinaut, cv_jawz, cv_mine; extern consvar_t cv_ballhog, cv_selfpropelledbomb, cv_grow, cv_shrink; -extern consvar_t cv_lightningshield, cv_hyudoro, cv_pogospring; +extern consvar_t cv_thundershield, cv_hyudoro, cv_pogospring; extern consvar_t cv_triplesneaker, cv_triplebanana, cv_tripleorbinaut, cv_dualjawz; diff --git a/src/d_player.h b/src/d_player.h index 7b5aeafc..baa03f3e 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -246,7 +246,7 @@ typedef enum KITEM_SPB, KITEM_GROW, KITEM_SHRINK, - KITEM_LIGHTNINGSHIELD, + KITEM_THUNDERSHIELD, KITEM_HYUDORO, KITEM_POGOSPRING, KITEM_KITCHENSINK, @@ -306,7 +306,8 @@ typedef enum k_itemheld, // Are you holding an item? // Some items use timers for their duration or effects - k_attractiontimer, // Duration of Lightning Shield's item-break and item box pull + //k_thunderanim, // Duration of Thunder Shield's use animation + k_curshield, // 0 = no shield, 1 = thunder shield k_hyudorotimer, // Duration of the Hyudoro offroad effect itself k_stealingtimer, // You are stealing an item, this is your timer k_stolentimer, // You are being stolen from, this is your timer diff --git a/src/dehacked.c b/src/dehacked.c index 03884474..70cf730f 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6247,7 +6247,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_DRIFTDUST3", "S_DRIFTDUST4", - // Lightning Shield Burst + // Thunder Shield Burst // Sneaker Fire Trail "S_KARTFIRE1", @@ -6446,6 +6446,32 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_LIGHTNING3", "S_LIGHTNING4", + // Thunder Shield + "S_THUNDERSHIELD1", + "S_THUNDERSHIELD2", + "S_THUNDERSHIELD3", + "S_THUNDERSHIELD4", + "S_THUNDERSHIELD5", + "S_THUNDERSHIELD6", + "S_THUNDERSHIELD7", + "S_THUNDERSHIELD8", + "S_THUNDERSHIELD9", + "S_THUNDERSHIELD10", + "S_THUNDERSHIELD11", + "S_THUNDERSHIELD12", + "S_THUNDERSHIELD13", + "S_THUNDERSHIELD14", + "S_THUNDERSHIELD15", + "S_THUNDERSHIELD16", + "S_THUNDERSHIELD17", + "S_THUNDERSHIELD18", + "S_THUNDERSHIELD19", + "S_THUNDERSHIELD20", + "S_THUNDERSHIELD21", + "S_THUNDERSHIELD22", + "S_THUNDERSHIELD23", + "S_THUNDERSHIELD24", + // The legend "S_SINK", "S_SINKTRAIL1", @@ -7185,8 +7211,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_FAKESHIELD", "MT_FAKEITEM", - "MT_BANANA", - "MT_BANANA_SHIELD", // Banana Stuff + "MT_BANANA", // Banana Stuff + "MT_BANANA_SHIELD", "MT_ORBINAUT", // Orbinaut stuff "MT_ORBINAUT_SHIELD", @@ -7211,6 +7237,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_BLUEEXPLOSION", "MT_LIGHTNING", + "MT_THUNDERSHIELD", // Thunder Shield stuff + "MT_SINK", // Kitchen Sink Stuff "MT_SINKTRAIL", @@ -7652,7 +7680,8 @@ static const char *const KARTSTUFF_LIST[] = { "ITEMHELD", // Some items use timers for their duration or effects - "ATTRACTIONTIMER", + //"THUNDERANIM", + "CURSHIELD", "HYUDOROTIMER", "STEALINGTIMER", "STOLENTIMER", diff --git a/src/info.c b/src/info.c index 41e89ae6..0a3d0668 100644 --- a/src/info.c +++ b/src/info.c @@ -57,9 +57,10 @@ char sprnames[NUMSPRITES + 1][5] = //SRB2kart Sprites "SPRG","BSPR","RNDM","RPOP","KFRE","KINV","KINF","WIPD","DRIF","DUST", "FITM","BANA","ORBN","JAWZ","SSMN","KRBM","BHOG","BHBM","BLIG","LIGH", - "SINK","SITR","KBLN","DEZL","POKE","AUDI","DECO","DOOD","SNES","GBAS", - "SPRS","BUZB","CHOM","SACO","CRAB","SHAD","BRNG","BUMP","FLEN","CLAS", - "PSHW","ISTA","ISTB","ARRO","ITEM","ITMI","ITMN","WANT","PBOM","VIEW" + "THNS","SINK","SITR","KBLN","DEZL","POKE","AUDI","DECO","DOOD","SNES", + "GBAS","SPRS","BUZB","CHOM","SACO","CRAB","SHAD","BRNG","BUMP","FLEN", + "CLAS","PSHW","ISTA","ISTB","ARRO","ITEM","ITMI","ITMN","WANT","PBOM", + "VIEW" }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) @@ -2762,6 +2763,31 @@ state_t states[NUMSTATES] = {SPR_LIGH, 2, 2, {NULL}, 0, 0, S_LIGHTNING4}, // S_LIGHTNING3 {SPR_LIGH, 3, 2, {NULL}, 0, 0, S_NULL}, // S_LIGHTNING4 + {SPR_THNS, 0, 2, {NULL}, 0, 0, S_THUNDERSHIELD2}, // S_THUNDERSHIELD1 + {SPR_THNS, 1, 2, {NULL}, 0, 0, S_THUNDERSHIELD3}, // S_THUNDERSHIELD2 + {SPR_THNS, 2, 2, {NULL}, 0, 0, S_THUNDERSHIELD4}, // S_THUNDERSHIELD3 + {SPR_THNS, 3, 2, {NULL}, 0, 0, S_THUNDERSHIELD5}, // S_THUNDERSHIELD4 + {SPR_THNS, 4, 2, {NULL}, 0, 0, S_THUNDERSHIELD6}, // S_THUNDERSHIELD5 + {SPR_THNS, 5, 2, {NULL}, 0, 0, S_THUNDERSHIELD7}, // S_THUNDERSHIELD6 + {SPR_THNS, 6, 2, {NULL}, 0, 0, S_THUNDERSHIELD8}, // S_THUNDERSHIELD7 + {SPR_THNS, 7, 2, {NULL}, 0, 0, S_THUNDERSHIELD9}, // S_THUNDERSHIELD8 + {SPR_THNS, 8, 2, {NULL}, 0, 0, S_THUNDERSHIELD10}, // S_THUNDERSHIELD9 + {SPR_THNS, 9, 2, {NULL}, 0, 0, S_THUNDERSHIELD11}, // S_THUNDERSHIELD10 + {SPR_THNS, 10, 2, {NULL}, 0, 0, S_THUNDERSHIELD12}, // S_THUNDERSHIELD11 + {SPR_THNS, 11, 2, {NULL}, 0, 0, S_THUNDERSHIELD13}, // S_THUNDERSHIELD12 + {SPR_THNS, 8, 2, {NULL}, 0, 0, S_THUNDERSHIELD14}, // S_THUNDERSHIELD13 + {SPR_THNS, 7, 2, {NULL}, 0, 0, S_THUNDERSHIELD15}, // S_THUNDERSHIELD14 + {SPR_THNS, 6, 2, {NULL}, 0, 0, S_THUNDERSHIELD16}, // S_THUNDERSHIELD15 + {SPR_THNS, 5, 2, {NULL}, 0, 0, S_THUNDERSHIELD17}, // S_THUNDERSHIELD16 + {SPR_THNS, 4, 2, {NULL}, 0, 0, S_THUNDERSHIELD18}, // S_THUNDERSHIELD17 + {SPR_THNS, 3, 2, {NULL}, 0, 0, S_THUNDERSHIELD19}, // S_THUNDERSHIELD18 + {SPR_THNS, 2, 2, {NULL}, 0, 0, S_THUNDERSHIELD20}, // S_THUNDERSHIELD19 + {SPR_THNS, 1, 2, {NULL}, 0, 0, S_THUNDERSHIELD21}, // S_THUNDERSHIELD20 + {SPR_THNS, 0, 2, {NULL}, 0, 0, S_THUNDERSHIELD22}, // S_THUNDERSHIELD21 + {SPR_THNS, 9, 2, {NULL}, 0, 0, S_THUNDERSHIELD23}, // S_THUNDERSHIELD22 + {SPR_THNS, 10, 2, {NULL}, 0, 0, S_THUNDERSHIELD24}, // S_THUNDERSHIELD23 + {SPR_THNS, 11, 2, {NULL}, 0, 0, S_THUNDERSHIELD1}, // S_THUNDERSHIELD24 + {SPR_SINK, 0, 4, {A_SmokeTrailer}, MT_SINKTRAIL, 0, S_SINK}, // S_SINK {SPR_SITR, 0, 1, {NULL}, 0, 0, S_SINKTRAIL2}, // S_SINKTRAIL1 {SPR_SITR, 1, 5, {NULL}, 0, 0, S_SINKTRAIL3}, // S_SINKTRAIL2 @@ -15087,6 +15113,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, + { // MT_THUNDERSHIELD + -1, // doomednum + S_THUNDERSHIELD1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 8, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 8, // speed + 16*FRACUNIT, // radius + 56*FRACUNIT, // height + 1, // display offset + 16, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + { // MT_SINK -1, // doomednum S_SINK, // spawnstate diff --git a/src/info.h b/src/info.h index 3186fc88..ea07e2f3 100644 --- a/src/info.h +++ b/src/info.h @@ -600,6 +600,7 @@ typedef enum sprite SPR_BHBM, // Ballhog BOOM SPR_BLIG, // Self-Propelled Bomb SPR_LIGH, // Grow/shrink beams (Metallic Maddness) + SPR_THNS, // Thunder Shield SPR_SINK, // Kitchen Sink SPR_SITR, // Kitchen Sink Trail SPR_KBLN, // Battle Mode Bumper @@ -3282,12 +3283,38 @@ typedef enum state S_BLUELIGHTNING4, S_BLUEEXPLODE, - // Size-Down + // Grow/Shrink S_LIGHTNING1, S_LIGHTNING2, S_LIGHTNING3, S_LIGHTNING4, + // Thunder Shield + S_THUNDERSHIELD1, + S_THUNDERSHIELD2, + S_THUNDERSHIELD3, + S_THUNDERSHIELD4, + S_THUNDERSHIELD5, + S_THUNDERSHIELD6, + S_THUNDERSHIELD7, + S_THUNDERSHIELD8, + S_THUNDERSHIELD9, + S_THUNDERSHIELD10, + S_THUNDERSHIELD11, + S_THUNDERSHIELD12, + S_THUNDERSHIELD13, + S_THUNDERSHIELD14, + S_THUNDERSHIELD15, + S_THUNDERSHIELD16, + S_THUNDERSHIELD17, + S_THUNDERSHIELD18, + S_THUNDERSHIELD19, + S_THUNDERSHIELD20, + S_THUNDERSHIELD21, + S_THUNDERSHIELD22, + S_THUNDERSHIELD23, + S_THUNDERSHIELD24, + // The legend S_SINK, S_SINKTRAIL1, @@ -4070,6 +4097,8 @@ typedef enum mobj_type MT_BLUEEXPLOSION, MT_LIGHTNING, + MT_THUNDERSHIELD, // Thunder Shield stuff + MT_SINK, // Kitchen Sink Stuff MT_SINKTRAIL, diff --git a/src/k_kart.c b/src/k_kart.c index 50d03c1e..a1733f1b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -385,7 +385,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_selfpropelledbomb); CV_RegisterVar(&cv_grow); CV_RegisterVar(&cv_shrink); - CV_RegisterVar(&cv_lightningshield); + CV_RegisterVar(&cv_thundershield); CV_RegisterVar(&cv_hyudoro); CV_RegisterVar(&cv_pogospring); @@ -476,7 +476,7 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS][9] = /*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 /*Shrink*/ { 0, 0, 0, 0, 0, 0, 0, 1, 0 }, // Shrink - /*Lightning Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Lightning Shield + /*Thunder Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Thunder Shield /*Hyudoro*/ { 0, 0, 0, 0, 1, 2, 1, 0, 0 }, // Hyudoro /*Pogo Spring*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Pogo Spring /*Kitchen Sink*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Kitchen Sink @@ -502,7 +502,7 @@ static INT32 K_KartItemOddsBattle[NUMKARTRESULTS][6] = /*Self-Propelled Bomb*/ { 0, 0, 0, 0 }, // Self-Propelled Bomb /*Grow*/ { 4, 2, 0, 2 }, // Grow /*Shrink*/ { 0, 0, 0, 0 }, // Shrink - /*Lightning Shield*/ { 0, 0, 0, 0 }, // Lightning Shield + /*Thunder Shield*/ { 0, 0, 0, 0 }, // Thunder Shield /*Hyudoro*/ { 0, 0, 1, 0 }, // Hyudoro /*Pogo Spring*/ { 0, 0, 1, 0 }, // Pogo Spring /*Kitchen Sink*/ { 0, 0, 0, 0 }, // Kitchen Sink @@ -680,9 +680,9 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) || (indirectitemcooldown > 0) || (pingame-1 <= pexiting)) newodds = 0; break; - case KITEM_LIGHTNINGSHIELD: + case KITEM_THUNDERSHIELD: POWERITEMODDS(newodds); - if (!cv_lightningshield.value) newodds = 0; + if (!cv_thundershield.value) newodds = 0; break; case KITEM_HYUDORO: if (!cv_hyudoro.value) newodds = 0; @@ -899,7 +899,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) SETITEMRESULT(useodds, KITEM_SPB); // Self-Propelled Bomb SETITEMRESULT(useodds, KITEM_GROW); // Grow SETITEMRESULT(useodds, KITEM_SHRINK); // Shrink - SETITEMRESULT(useodds, KITEM_LIGHTNINGSHIELD); // Lightning Shield + SETITEMRESULT(useodds, KITEM_THUNDERSHIELD); // Thunder Shield SETITEMRESULT(useodds, KITEM_HYUDORO); // Hyudoro SETITEMRESULT(useodds, KITEM_POGOSPRING); // Pogo Spring //SETITEMRESULT(useodds, KITEM_KITCHENSINK); // Kitchen Sink @@ -2537,10 +2537,10 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map return mo; } -static void K_DoLightningShield(player_t *player) +static void K_DoThunderShield(player_t *player) { S_StartSound(player->mo, sfx_s3k45); - player->kartstuff[k_attractiontimer] = 35; + //player->kartstuff[k_thunderanim] = 35; P_NukeEnemies(player->mo, player->mo, RING_DIST/4); } @@ -2550,7 +2550,7 @@ static void K_DoHyudoroSteal(player_t *player) INT32 playerswappable[MAXPLAYERS]; INT32 stealplayer = -1; // The player that's getting stolen from INT32 prandom = 0; - fixed_t sink = P_RandomChance(FRACUNIT/64); + boolean sink = P_RandomChance(FRACUNIT/64); for (i = 0; i < MAXPLAYERS; i++) { @@ -2574,7 +2574,7 @@ static void K_DoHyudoroSteal(player_t *player) prandom = P_RandomFixed(); S_StartSound(player->mo, sfx_s3k92); - if (sink) // BEHOLD THE KITCHEN SINK + if (sink && numplayers > 0) // BEHOLD THE KITCHEN SINK { player->kartstuff[k_hyudorotimer] = hyudorotime; player->kartstuff[k_stealingtimer] = stealtime; @@ -3010,8 +3010,8 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (player->kartstuff[k_spinouttimer] == 0 && player->powers[pw_flashing] == K_GetKartFlashing()) player->powers[pw_flashing]--; - if (player->kartstuff[k_attractiontimer]) - player->kartstuff[k_attractiontimer]--; + /*if (player->kartstuff[k_thunderanim]) + player->kartstuff[k_thunderanim]--;*/ if (player->kartstuff[k_sneakertimer]) player->kartstuff[k_sneakertimer]--; @@ -3538,7 +3538,9 @@ void K_StripItems(player_t *player) player->kartstuff[k_stealingtimer] = 0; player->kartstuff[k_stolentimer] = 0; - player->kartstuff[k_attractiontimer] = 0; + player->kartstuff[k_curshield] = 0; + //player->kartstuff[k_thunderanim] = 0; + player->kartstuff[k_bananadrag] = 0; player->kartstuff[k_sadtimer] = 0; } @@ -3871,10 +3873,16 @@ void K_MoveKartPlayer(player_t *player, boolean onground) player->kartstuff[k_itemamount]--; } break; - case KITEM_LIGHTNINGSHIELD: + case KITEM_THUNDERSHIELD: + if (player->kartstuff[k_curshield] <= 0) + { + mobj_t *shield = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THUNDERSHIELD); + P_SetTarget(&shield->target, player->mo); + player->kartstuff[k_curshield] = 1; + } if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO) { - K_DoLightningShield(player); + K_DoThunderShield(player); player->pflags |= PF_ATTACKDOWN; player->kartstuff[k_itemamount]--; } @@ -3924,6 +3932,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (!player->kartstuff[k_itemamount] && !player->kartstuff[k_itemheld]) player->kartstuff[k_itemtype] = KITEM_NONE; + if (player->kartstuff[k_itemtype] != KITEM_THUNDERSHIELD) + player->kartstuff[k_curshield] = 0; + if (player->kartstuff[k_itemtype] == KITEM_SPB || player->kartstuff[k_itemtype] == KITEM_SHRINK || player->kartstuff[k_growshrinktimer] < 0 @@ -4384,7 +4395,7 @@ static patch_t *kp_ballhog[2]; static patch_t *kp_selfpropelledbomb[2]; static patch_t *kp_grow[2]; static patch_t *kp_shrink[2]; -static patch_t *kp_lightningshield[2]; +static patch_t *kp_thundershield[2]; static patch_t *kp_hyudoro[2]; static patch_t *kp_pogospring[2]; static patch_t *kp_kitchensink[2]; @@ -4494,7 +4505,7 @@ void K_LoadKartHUDGraphics(void) kp_selfpropelledbomb[0] = W_CachePatchName("K_ITSPB", PU_HUDGFX); kp_grow[0] = W_CachePatchName("K_ITGROW", PU_HUDGFX); kp_shrink[0] = W_CachePatchName("K_ITSHRK", PU_HUDGFX); - kp_lightningshield[0] = W_CachePatchName("K_ITLITS", PU_HUDGFX); + kp_thundershield[0] = W_CachePatchName("K_ITTHNS", PU_HUDGFX); kp_hyudoro[0] = W_CachePatchName("K_ITHYUD", PU_HUDGFX); kp_pogospring[0] = W_CachePatchName("K_ITPOGO", PU_HUDGFX); kp_kitchensink[0] = W_CachePatchName("K_ITSINK", PU_HUDGFX); @@ -4522,7 +4533,7 @@ void K_LoadKartHUDGraphics(void) kp_selfpropelledbomb[1] = W_CachePatchName("K_ISSPB", PU_HUDGFX); kp_grow[1] = W_CachePatchName("K_ISGROW", PU_HUDGFX); kp_shrink[1] = W_CachePatchName("K_ISSHRK", PU_HUDGFX); - kp_lightningshield[1] = W_CachePatchName("K_ISLITS", PU_HUDGFX); + kp_thundershield[1] = W_CachePatchName("K_ISTHNS", PU_HUDGFX); kp_hyudoro[1] = W_CachePatchName("K_ISHYUD", PU_HUDGFX); kp_pogospring[1] = W_CachePatchName("K_ISPOGO", PU_HUDGFX); kp_kitchensink[1] = W_CachePatchName("K_ISSINK", PU_HUDGFX); @@ -4756,22 +4767,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 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 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 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 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_lightningshield[offset]; break; // Lightning Shield - //case 14: localpatch = kp_pogospring[offset]; break; // Pogo Spring - //case 15: localpatch = kp_kitchensink[offset]; break; // Kitchen Sink + 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; } } @@ -4832,7 +4843,7 @@ static void K_drawKartItem(void) case KITEM_SPB: localpatch = kp_selfpropelledbomb[offset]; break; case KITEM_GROW: localpatch = kp_grow[offset]; break; case KITEM_SHRINK: localpatch = kp_shrink[offset]; break; - case KITEM_LIGHTNINGSHIELD: localpatch = kp_lightningshield[offset]; break; + case KITEM_THUNDERSHIELD: localpatch = kp_thundershield[offset]; break; case KITEM_HYUDORO: localpatch = kp_hyudoro[offset]; break; case KITEM_POGOSPRING: localpatch = kp_pogospring[offset]; break; case KITEM_KITCHENSINK: localpatch = kp_kitchensink[offset]; break; diff --git a/src/m_menu.c b/src/m_menu.c index ce4e7486..4364a0f5 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1500,7 +1500,7 @@ static menuitem_t OP_MonitorToggleMenu[] = {IT_STRING | IT_CVAR, NULL, "Self-Propelled Bombs",&cv_selfpropelledbomb,114}, {IT_STRING | IT_CVAR, NULL, "Grow", &cv_grow, 122}, {IT_STRING | IT_CVAR, NULL, "Shrink", &cv_shrink, 130}, - {IT_STRING | IT_CVAR, NULL, "Lightning Shields", &cv_lightningshield, 138}, + {IT_STRING | IT_CVAR, NULL, "Thunder Shields", &cv_thundershield, 138}, {IT_STRING | IT_CVAR, NULL, "Hyudoros", &cv_hyudoro, 146}, {IT_STRING | IT_CVAR, NULL, "Pogo Springs", &cv_pogospring, 154}, }; diff --git a/src/p_mobj.c b/src/p_mobj.c index 9cf78ebf..c2c08f33 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8220,6 +8220,14 @@ void P_MobjThinker(mobj_t *mobj) } P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->target->z); break; + case MT_THUNDERSHIELD: + if (!mobj->target || !mobj->target->health || (mobj->target->player && mobj->target->player->kartstuff[k_curshield] != 1)) + { + P_RemoveMobj(mobj); + return; + } + P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->target->z); + break; case MT_KARMAHITBOX: if (!mobj->target || !mobj->target->health || !mobj->target->player || mobj->target->player->spectator || (G_RaceGametype() || mobj->target->player->kartstuff[k_bumper])) diff --git a/src/sounds.c b/src/sounds.c index 60cbb676..3b41dfa1 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -415,7 +415,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"s3k42", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k43", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k44", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, - {"s3k45", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Kart Lightning Shield use + {"s3k45", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Kart Thunder Shield use {"s3k46", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k47", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k48", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},