mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-11-16 09:42:33 +00:00
Thunder shield overlay
This commit is contained in:
parent
8d4fd5a1ea
commit
97ec385234
10 changed files with 175 additions and 44 deletions
|
@ -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};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
59
src/info.c
59
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
|
||||
|
|
31
src/info.h
31
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,
|
||||
|
||||
|
|
71
src/k_kart.c
71
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;
|
||||
|
|
|
@ -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},
|
||||
};
|
||||
|
|
|
@ -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]))
|
||||
|
|
|
@ -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},
|
||||
|
|
Loading…
Reference in a new issue