New invincibility effect, grow/shrink stuff
Whenever grow/shrink effects get made, I'll remove the Mario-style stuttered growth and whatever else needs doing beyond that
This commit is contained in:
parent
819d370fb3
commit
2889687d1d
|
@ -336,8 +336,8 @@ consvar_t cv_jawz = {"jawz", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0
|
||||||
consvar_t cv_mine = {"mine", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_mine = {"mine", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_ballhog = {"ballhog", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_ballhog = {"ballhog", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_selfpropelledbomb = {"selfpropelledbomb", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_selfpropelledbomb = {"selfpropelledbomb", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_sizeup = {"sizeup", "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_sizedown = {"sizedown", "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_lightningshield = {"lightningshield", "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_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};
|
consvar_t cv_pogospring = {"pogospring", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
|
@ -111,7 +111,7 @@ extern consvar_t cv_recycler;*/
|
||||||
// SRB2kart items
|
// SRB2kart items
|
||||||
extern consvar_t cv_sneaker, cv_rocketsneaker, cv_invincibility, cv_banana;
|
extern consvar_t cv_sneaker, cv_rocketsneaker, cv_invincibility, cv_banana;
|
||||||
extern consvar_t cv_fakeitem, cv_orbinaut, cv_jawz, cv_mine;
|
extern consvar_t cv_fakeitem, cv_orbinaut, cv_jawz, cv_mine;
|
||||||
extern consvar_t cv_ballhog, cv_selfpropelledbomb, cv_sizeup, cv_sizedown;
|
extern consvar_t cv_ballhog, cv_selfpropelledbomb, cv_grow, cv_shrink;
|
||||||
extern consvar_t cv_lightningshield, cv_hyudoro, cv_pogospring;
|
extern consvar_t cv_lightningshield, cv_hyudoro, cv_pogospring;
|
||||||
|
|
||||||
extern consvar_t cv_triplesneaker, cv_triplebanana, cv_tripleorbinaut, cv_dualjawz;
|
extern consvar_t cv_triplesneaker, cv_triplebanana, cv_tripleorbinaut, cv_dualjawz;
|
||||||
|
|
|
@ -244,8 +244,8 @@ typedef enum
|
||||||
KITEM_MINE,
|
KITEM_MINE,
|
||||||
KITEM_BALLHOG,
|
KITEM_BALLHOG,
|
||||||
KITEM_SPB,
|
KITEM_SPB,
|
||||||
KITEM_SIZEUP,
|
KITEM_GROW,
|
||||||
KITEM_SIZEDOWN,
|
KITEM_SHRINK,
|
||||||
KITEM_LIGHTNINGSHIELD,
|
KITEM_LIGHTNINGSHIELD,
|
||||||
KITEM_HYUDORO,
|
KITEM_HYUDORO,
|
||||||
KITEM_POGOSPRING,
|
KITEM_POGOSPRING,
|
||||||
|
@ -309,7 +309,7 @@ typedef enum
|
||||||
k_fakeitem, // Fake item held, separate from itemtype so it doesn't stop you from getting items
|
k_fakeitem, // Fake item held, separate from itemtype so it doesn't stop you from getting items
|
||||||
k_spinouttimer, // Spin-out from a banana peel or oil slick (was "pw_bananacam")
|
k_spinouttimer, // Spin-out from a banana peel or oil slick (was "pw_bananacam")
|
||||||
k_justbumped, // Prevent players from endlessly bumping into each other
|
k_justbumped, // Prevent players from endlessly bumping into each other
|
||||||
k_poweritemtimer, // Battle mode, how long before you're allowed another power item (Invincibility, Size Up)
|
k_poweritemtimer, // Battle mode, how long before you're allowed another power item (Invincibility, Grow)
|
||||||
k_comebacktimer, // Battle mode, how long before you become a bomb after death
|
k_comebacktimer, // Battle mode, how long before you become a bomb after death
|
||||||
k_sadtimer, // How long you've been sad
|
k_sadtimer, // How long you've been sad
|
||||||
|
|
||||||
|
|
|
@ -6258,6 +6258,25 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_KARTFIRE7",
|
"S_KARTFIRE7",
|
||||||
"S_KARTFIRE8",
|
"S_KARTFIRE8",
|
||||||
|
|
||||||
|
// Invincibility Sparks
|
||||||
|
"S_KARTINVULN_SMALL1",
|
||||||
|
"S_KARTINVULN_SMALL2",
|
||||||
|
"S_KARTINVULN_SMALL3",
|
||||||
|
"S_KARTINVULN_SMALL4",
|
||||||
|
"S_KARTINVULN_SMALL5",
|
||||||
|
|
||||||
|
"S_KARTINVULN_LARGE1",
|
||||||
|
"S_KARTINVULN_LARGE2",
|
||||||
|
"S_KARTINVULN_LARGE3",
|
||||||
|
"S_KARTINVULN_LARGE4",
|
||||||
|
"S_KARTINVULN_LARGE5",
|
||||||
|
|
||||||
|
// Invincibility flash overlay
|
||||||
|
"S_INVULNFLASH1",
|
||||||
|
"S_INVULNFLASH2",
|
||||||
|
"S_INVULNFLASH3",
|
||||||
|
"S_INVULNFLASH4",
|
||||||
|
|
||||||
//{ Fake Item
|
//{ Fake Item
|
||||||
"S_FAKEITEM1",
|
"S_FAKEITEM1",
|
||||||
"S_FAKEITEM2",
|
"S_FAKEITEM2",
|
||||||
|
@ -6395,7 +6414,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_BLUELIGHTNING4",
|
"S_BLUELIGHTNING4",
|
||||||
"S_BLUEEXPLODE",
|
"S_BLUEEXPLODE",
|
||||||
|
|
||||||
// Size Down
|
// Grow/shrink beams
|
||||||
"S_LIGHTNING1",
|
"S_LIGHTNING1",
|
||||||
"S_LIGHTNING2",
|
"S_LIGHTNING2",
|
||||||
"S_LIGHTNING3",
|
"S_LIGHTNING3",
|
||||||
|
@ -6457,7 +6476,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_PLAYERARROW_BALLHOG",
|
"S_PLAYERARROW_BALLHOG",
|
||||||
"S_PLAYERARROW_ORBINAUT",
|
"S_PLAYERARROW_ORBINAUT",
|
||||||
"S_PLAYERARROW_INVINCIBILITY",
|
"S_PLAYERARROW_INVINCIBILITY",
|
||||||
"S_PLAYERARROW_SIZEUP",
|
"S_PLAYERARROW_GROW",
|
||||||
"S_PLAYERARROW_KITCHENSINK",
|
"S_PLAYERARROW_KITCHENSINK",
|
||||||
"S_PLAYERARROW_EMPTY",
|
"S_PLAYERARROW_EMPTY",
|
||||||
"S_PLAYERARROW_ROULETTE",
|
"S_PLAYERARROW_ROULETTE",
|
||||||
|
@ -6984,6 +7003,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_RANDOMITEMPOP",
|
"MT_RANDOMITEMPOP",
|
||||||
|
|
||||||
"MT_SNEAKERTRAIL",
|
"MT_SNEAKERTRAIL",
|
||||||
|
"MT_SPARKLETRAIL",
|
||||||
"MT_DRIFT",
|
"MT_DRIFT",
|
||||||
"MT_DRIFTSMOKE",
|
"MT_DRIFTSMOKE",
|
||||||
|
|
||||||
|
@ -7010,7 +7030,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_SMOLDERING", // New explosion
|
"MT_SMOLDERING", // New explosion
|
||||||
"MT_BOOMPARTICLE",
|
"MT_BOOMPARTICLE",
|
||||||
|
|
||||||
"MT_BLUELIGHTNING", // Size Down stuff
|
"MT_BLUELIGHTNING", // Grow/shrink stuff
|
||||||
"MT_BLUEEXPLOSION",
|
"MT_BLUEEXPLOSION",
|
||||||
"MT_LIGHTNING",
|
"MT_LIGHTNING",
|
||||||
|
|
||||||
|
|
54
src/info.c
54
src/info.c
|
@ -55,10 +55,10 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"GWLR","SRBA","SRBB","SRBC","SRBD","SRBE","SRBF","SRBG","SRBH","SRBI",
|
"GWLR","SRBA","SRBB","SRBC","SRBD","SRBE","SRBF","SRBG","SRBH","SRBI",
|
||||||
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
|
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
|
||||||
//SRB2kart Sprites
|
//SRB2kart Sprites
|
||||||
"SPRG","BSPR","RNDM","KFRE","DRIF","DSMO","FITM","BANA","GSHE","RSHE",
|
"SPRG","BSPR","RNDM","KFRE","KINV","KINF","DRIF","DSMO","FITM","BANA",
|
||||||
"SSMN","KRBM","BLIG","LIGH","SINK","SITR","KBLN","LAKI","POKE","AUDI",
|
"GSHE","RSHE","SSMN","KRBM","BLIG","LIGH","SINK","SITR","KBLN","LAKI",
|
||||||
"DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB","SHAD",
|
"POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO",
|
||||||
"BUMP","FLEN","CLAS","PSHW","ARRO","PBOM"
|
"CRAB","SHAD","BUMP","FLEN","CLAS","PSHW","ARRO","PBOM"
|
||||||
};
|
};
|
||||||
|
|
||||||
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
|
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
|
||||||
|
@ -2592,6 +2592,23 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_KFRE, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_KARTFIRE8}, // S_KARTFIRE7
|
{SPR_KFRE, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_KARTFIRE8}, // S_KARTFIRE7
|
||||||
{SPR_KFRE, FF_FULLBRIGHT|6, 2, {NULL}, 0, 0, S_NULL}, // S_KARTFIRE8
|
{SPR_KFRE, FF_FULLBRIGHT|6, 2, {NULL}, 0, 0, S_NULL}, // S_KARTFIRE8
|
||||||
|
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_KARTINVULN_SMALL2}, // S_KARTINVULN_SMALL1
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_KARTINVULN_SMALL3}, // S_KARTINVULN_SMALL2
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_KARTINVULN_SMALL4}, // S_KARTINVULN_SMALL3
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_KARTINVULN_SMALL5}, // S_KARTINVULN_SMALL4
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_NULL}, // S_KARTINVULN_SMALL5
|
||||||
|
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE2}, // S_KARTINVULN_LARGE1
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE3}, // S_KARTINVULN_LARGE2
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE4}, // S_KARTINVULN_LARGE3
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|6, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE5}, // S_KARTINVULN_LARGE4
|
||||||
|
{SPR_KINV, FF_FULLBRIGHT|7, 1, {NULL}, 0, 0, S_NULL}, // S_KARTINVULN_LARGE5
|
||||||
|
|
||||||
|
{SPR_KINF, FF_FULLBRIGHT|FF_TRANS80, 1, {NULL}, 0, 0, S_INVULNFLASH2}, // S_INVULNFLASH1
|
||||||
|
{SPR_NULL, FF_FULLBRIGHT|FF_TRANS80, 1, {NULL}, 0, 0, S_INVULNFLASH3}, // S_INVULNFLASH2
|
||||||
|
{SPR_KINF, FF_FULLBRIGHT|FF_TRANS80|1, 1, {NULL}, 0, 0, S_INVULNFLASH4}, // S_INVULNFLASH3
|
||||||
|
{SPR_NULL, FF_FULLBRIGHT|FF_TRANS80, 1, {NULL}, 0, 0, S_INVULNFLASH1}, // S_INVULNFLASH4
|
||||||
|
|
||||||
{SPR_FITM, 0, 3, {NULL}, 0, 0, S_FAKEITEM2}, // S_FAKEITEM1
|
{SPR_FITM, 0, 3, {NULL}, 0, 0, S_FAKEITEM2}, // S_FAKEITEM1
|
||||||
{SPR_FITM, 1, 3, {NULL}, 0, 0, S_FAKEITEM3}, // S_FAKEITEM2
|
{SPR_FITM, 1, 3, {NULL}, 0, 0, S_FAKEITEM3}, // S_FAKEITEM2
|
||||||
{SPR_FITM, 2, 3, {NULL}, 0, 0, S_FAKEITEM4}, // S_FAKEITEM3
|
{SPR_FITM, 2, 3, {NULL}, 0, 0, S_FAKEITEM4}, // S_FAKEITEM3
|
||||||
|
@ -2899,7 +2916,7 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_ARRO, FF_FULLBRIGHT|9, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_BALLHOG
|
{SPR_ARRO, FF_FULLBRIGHT|9, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_BALLHOG
|
||||||
{SPR_ARRO, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_ORBINAUT
|
{SPR_ARRO, FF_FULLBRIGHT|10, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_ORBINAUT
|
||||||
{SPR_ARRO, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_INVINCIBILITY
|
{SPR_ARRO, FF_FULLBRIGHT|13, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_INVINCIBILITY
|
||||||
{SPR_ARRO, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_SIZEUP
|
{SPR_ARRO, FF_FULLBRIGHT|14, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_GROW
|
||||||
{SPR_ARRO, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_KITCHENSINK
|
{SPR_ARRO, FF_FULLBRIGHT|15, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_KITCHENSINK
|
||||||
{SPR_ARRO, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_EMPTY
|
{SPR_ARRO, FF_FULLBRIGHT|16, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERARROW_EMPTY
|
||||||
{SPR_ARRO, FF_FULLBRIGHT|FF_ANIMATE|1, -1, {NULL}, 5, 3, S_NULL}, // S_PLAYERARROW_ROULETTE
|
{SPR_ARRO, FF_FULLBRIGHT|FF_ANIMATE|1, -1, {NULL}, 5, 3, S_NULL}, // S_PLAYERARROW_ROULETTE
|
||||||
|
@ -14352,6 +14369,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_SPARKLETRAIL
|
||||||
|
-1, // doomednum
|
||||||
|
S_KARTINVULN_SMALL1, // spawnstate
|
||||||
|
1, // 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
|
||||||
|
14*FRACUNIT, // radius
|
||||||
|
14*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_DRIFT
|
{ // MT_DRIFT
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_DRIFTSPARK1, // spawnstate
|
S_DRIFTSPARK1, // spawnstate
|
||||||
|
|
28
src/info.h
28
src/info.h
|
@ -580,6 +580,8 @@ typedef enum sprite
|
||||||
|
|
||||||
SPR_RNDM, // Random Item Box
|
SPR_RNDM, // Random Item Box
|
||||||
SPR_KFRE, // Sneaker fire trail
|
SPR_KFRE, // Sneaker fire trail
|
||||||
|
SPR_KINV, // Invincibility sparkle trail
|
||||||
|
SPR_KINF, // Invincibility flash
|
||||||
SPR_DRIF, // Drift Sparks
|
SPR_DRIF, // Drift Sparks
|
||||||
SPR_DSMO, // Drift Smoke
|
SPR_DSMO, // Drift Smoke
|
||||||
|
|
||||||
|
@ -591,7 +593,7 @@ typedef enum sprite
|
||||||
SPR_SSMN, // SS Mine
|
SPR_SSMN, // SS Mine
|
||||||
SPR_KRBM, // SS Mine BOOM
|
SPR_KRBM, // SS Mine BOOM
|
||||||
SPR_BLIG, // Self-Propelled Bomb
|
SPR_BLIG, // Self-Propelled Bomb
|
||||||
SPR_LIGH, // Size Up/Down beams (Metallic Maddness)
|
SPR_LIGH, // Grow/shrink beams (Metallic Maddness)
|
||||||
SPR_SINK, // Kitchen Sink
|
SPR_SINK, // Kitchen Sink
|
||||||
SPR_SITR, // Kitchen Sink Trail
|
SPR_SITR, // Kitchen Sink Trail
|
||||||
SPR_KBLN, // Battle Mode Balloon
|
SPR_KBLN, // Battle Mode Balloon
|
||||||
|
@ -3091,6 +3093,25 @@ typedef enum state
|
||||||
S_KARTFIRE7,
|
S_KARTFIRE7,
|
||||||
S_KARTFIRE8,
|
S_KARTFIRE8,
|
||||||
|
|
||||||
|
// Invincibility Sparks
|
||||||
|
S_KARTINVULN_SMALL1,
|
||||||
|
S_KARTINVULN_SMALL2,
|
||||||
|
S_KARTINVULN_SMALL3,
|
||||||
|
S_KARTINVULN_SMALL4,
|
||||||
|
S_KARTINVULN_SMALL5,
|
||||||
|
|
||||||
|
S_KARTINVULN_LARGE1,
|
||||||
|
S_KARTINVULN_LARGE2,
|
||||||
|
S_KARTINVULN_LARGE3,
|
||||||
|
S_KARTINVULN_LARGE4,
|
||||||
|
S_KARTINVULN_LARGE5,
|
||||||
|
|
||||||
|
// Invincibility flash
|
||||||
|
S_INVULNFLASH1,
|
||||||
|
S_INVULNFLASH2,
|
||||||
|
S_INVULNFLASH3,
|
||||||
|
S_INVULNFLASH4,
|
||||||
|
|
||||||
//{ Fake Item
|
//{ Fake Item
|
||||||
S_FAKEITEM1,
|
S_FAKEITEM1,
|
||||||
S_FAKEITEM2,
|
S_FAKEITEM2,
|
||||||
|
@ -3417,7 +3438,7 @@ typedef enum state
|
||||||
S_PLAYERARROW_BALLHOG,
|
S_PLAYERARROW_BALLHOG,
|
||||||
S_PLAYERARROW_ORBINAUT,
|
S_PLAYERARROW_ORBINAUT,
|
||||||
S_PLAYERARROW_INVINCIBILITY,
|
S_PLAYERARROW_INVINCIBILITY,
|
||||||
S_PLAYERARROW_SIZEUP,
|
S_PLAYERARROW_GROW,
|
||||||
S_PLAYERARROW_KITCHENSINK,
|
S_PLAYERARROW_KITCHENSINK,
|
||||||
S_PLAYERARROW_EMPTY,
|
S_PLAYERARROW_EMPTY,
|
||||||
S_PLAYERARROW_ROULETTE,
|
S_PLAYERARROW_ROULETTE,
|
||||||
|
@ -3961,6 +3982,7 @@ typedef enum mobj_type
|
||||||
MT_RANDOMITEMPOP,
|
MT_RANDOMITEMPOP,
|
||||||
|
|
||||||
MT_SNEAKERTRAIL,
|
MT_SNEAKERTRAIL,
|
||||||
|
MT_SPARKLETRAIL,
|
||||||
MT_DRIFT,
|
MT_DRIFT,
|
||||||
MT_DRIFTSMOKE,
|
MT_DRIFTSMOKE,
|
||||||
|
|
||||||
|
@ -3986,7 +4008,7 @@ typedef enum mobj_type
|
||||||
MT_SMOLDERING, // New explosion
|
MT_SMOLDERING, // New explosion
|
||||||
MT_BOOMPARTICLE,
|
MT_BOOMPARTICLE,
|
||||||
|
|
||||||
MT_BLUELIGHTNING, // Size Down stuff
|
MT_BLUELIGHTNING, // Grow/shrink stuff
|
||||||
MT_BLUEEXPLOSION,
|
MT_BLUEEXPLOSION,
|
||||||
MT_LIGHTNING,
|
MT_LIGHTNING,
|
||||||
|
|
||||||
|
|
162
src/k_kart.c
162
src/k_kart.c
|
@ -303,8 +303,8 @@ void K_RegisterKartStuff(void)
|
||||||
CV_RegisterVar(&cv_mine);
|
CV_RegisterVar(&cv_mine);
|
||||||
CV_RegisterVar(&cv_ballhog);
|
CV_RegisterVar(&cv_ballhog);
|
||||||
CV_RegisterVar(&cv_selfpropelledbomb);
|
CV_RegisterVar(&cv_selfpropelledbomb);
|
||||||
CV_RegisterVar(&cv_sizeup);
|
CV_RegisterVar(&cv_grow);
|
||||||
CV_RegisterVar(&cv_sizedown);
|
CV_RegisterVar(&cv_shrink);
|
||||||
CV_RegisterVar(&cv_lightningshield);
|
CV_RegisterVar(&cv_lightningshield);
|
||||||
CV_RegisterVar(&cv_hyudoro);
|
CV_RegisterVar(&cv_hyudoro);
|
||||||
CV_RegisterVar(&cv_pogospring);
|
CV_RegisterVar(&cv_pogospring);
|
||||||
|
@ -352,8 +352,8 @@ static INT32 K_KartItemOddsDistance_Retro[NUMKARTRESULTS][9] =
|
||||||
/*Mine*/ { 0, 0, 1, 2, 1, 0, 0, 0, 0 }, // Mine
|
/*Mine*/ { 0, 0, 1, 2, 1, 0, 0, 0, 0 }, // Mine
|
||||||
/*Ballhog*/ { 0, 0, 1, 2, 1, 0, 0, 0, 0 }, // Ballhog
|
/*Ballhog*/ { 0, 0, 1, 2, 1, 0, 0, 0, 0 }, // Ballhog
|
||||||
/*Self-Propelled Bomb*/ { 0, 0, 0, 0, 0, 1, 2, 0, 0 }, // Self-Propelled Bomb
|
/*Self-Propelled Bomb*/ { 0, 0, 0, 0, 0, 1, 2, 0, 0 }, // Self-Propelled Bomb
|
||||||
/*Size Up*/ { 0, 0, 0, 0, 0, 1, 1, 0, 0 }, // Size Up
|
/*Grow*/ { 0, 0, 0, 0, 0, 1, 1, 0, 0 }, // Grow
|
||||||
/*Size Down*/ { 0, 0, 0, 0, 0, 0, 1, 2, 0 }, // Size Down
|
/*Shrink*/ { 0, 0, 0, 0, 0, 0, 1, 2, 0 }, // Shrink
|
||||||
/*Lightning Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Lightning Shield
|
/*Lightning Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Lightning Shield
|
||||||
/*Hyudoro*/ { 0, 0, 2, 2, 1, 0, 0, 0, 0 }, // Hyudoro
|
/*Hyudoro*/ { 0, 0, 2, 2, 1, 0, 0, 0, 0 }, // Hyudoro
|
||||||
/*Pogo Spring*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Pogo Spring
|
/*Pogo Spring*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Pogo Spring
|
||||||
|
@ -378,8 +378,8 @@ static INT32 K_KartItemOddsBalloons[NUMKARTRESULTS][5] =
|
||||||
/*Mine*/ { 0, 3, 3, 0, 0 }, // Mine
|
/*Mine*/ { 0, 3, 3, 0, 0 }, // Mine
|
||||||
/*Ballhog*/ { 0, 3, 3, 0, 0 }, // Ballhog
|
/*Ballhog*/ { 0, 3, 3, 0, 0 }, // Ballhog
|
||||||
/*Self-Propelled Bomb*/ { 0, 0, 0, 0, 0 }, // Self-Propelled Bomb
|
/*Self-Propelled Bomb*/ { 0, 0, 0, 0, 0 }, // Self-Propelled Bomb
|
||||||
/*Size Up*/ { 1, 1, 0, 0, 0 }, // Size Up
|
/*Grow*/ { 1, 1, 0, 0, 0 }, // Grow
|
||||||
/*Size Down*/ { 0, 0, 0, 0, 0 }, // Size Down
|
/*Shrink*/ { 0, 0, 0, 0, 0 }, // Shrink
|
||||||
/*Lightning Shield*/ { 0, 0, 0, 0, 0 }, // Lightning Shield
|
/*Lightning Shield*/ { 0, 0, 0, 0, 0 }, // Lightning Shield
|
||||||
/*Hyudoro*/ { 0, 1, 1, 1, 0 }, // Hyudoro
|
/*Hyudoro*/ { 0, 1, 1, 1, 0 }, // Hyudoro
|
||||||
/*Pogo Spring*/ { 0, 0, 3, 2, 1 }, // Pogo Spring
|
/*Pogo Spring*/ { 0, 0, 3, 2, 1 }, // Pogo Spring
|
||||||
|
@ -490,13 +490,13 @@ static INT32 K_KartGetItemOdds(UINT8 pos, INT8 item, player_t *player)
|
||||||
if (franticitems) newodds *= 2;
|
if (franticitems) newodds *= 2;
|
||||||
if (!cv_selfpropelledbomb.value || pexiting <= 0) newodds = 0;
|
if (!cv_selfpropelledbomb.value || pexiting <= 0) newodds = 0;
|
||||||
break;
|
break;
|
||||||
case KITEM_SIZEUP:
|
case KITEM_GROW:
|
||||||
if (franticitems) newodds *= 2;
|
if (franticitems) newodds *= 2;
|
||||||
if (!cv_sizeup.value || player->kartstuff[k_poweritemtimer]) newodds = 0;
|
if (!cv_grow.value || player->kartstuff[k_poweritemtimer]) newodds = 0;
|
||||||
break;
|
break;
|
||||||
case KITEM_SIZEDOWN:
|
case KITEM_SHRINK:
|
||||||
if (franticitems) newodds *= 2;
|
if (franticitems) newodds *= 2;
|
||||||
if (!cv_sizedown.value || pingame-1 <= pexiting) newodds = 0;
|
if (!cv_shrink.value || pingame-1 <= pexiting) newodds = 0;
|
||||||
break;
|
break;
|
||||||
case KITEM_LIGHTNINGSHIELD:
|
case KITEM_LIGHTNINGSHIELD:
|
||||||
if (franticitems) newodds *= 2;
|
if (franticitems) newodds *= 2;
|
||||||
|
@ -696,8 +696,8 @@ static void K_KartItemRouletteByDistance(player_t *player, ticcmd_t *cmd)
|
||||||
SETITEMRESULT(useodds, KITEM_MINE); // Mine
|
SETITEMRESULT(useodds, KITEM_MINE); // Mine
|
||||||
SETITEMRESULT(useodds, KITEM_BALLHOG); // Ballhog
|
SETITEMRESULT(useodds, KITEM_BALLHOG); // Ballhog
|
||||||
SETITEMRESULT(useodds, KITEM_SPB); // Self-Propelled Bomb
|
SETITEMRESULT(useodds, KITEM_SPB); // Self-Propelled Bomb
|
||||||
SETITEMRESULT(useodds, KITEM_SIZEUP); // Size Up
|
SETITEMRESULT(useodds, KITEM_GROW); // Grow
|
||||||
SETITEMRESULT(useodds, KITEM_SIZEDOWN); // Size Down
|
SETITEMRESULT(useodds, KITEM_SHRINK); // Shrink
|
||||||
SETITEMRESULT(useodds, KITEM_LIGHTNINGSHIELD); // Lightning Shield
|
SETITEMRESULT(useodds, KITEM_LIGHTNINGSHIELD); // Lightning Shield
|
||||||
SETITEMRESULT(useodds, KITEM_HYUDORO); // Hyudoro
|
SETITEMRESULT(useodds, KITEM_HYUDORO); // Hyudoro
|
||||||
SETITEMRESULT(useodds, KITEM_POGOSPRING); // Pogo Spring
|
SETITEMRESULT(useodds, KITEM_POGOSPRING); // Pogo Spring
|
||||||
|
@ -912,7 +912,7 @@ static void K_UpdateOffroad(player_t *player)
|
||||||
// A higher kart weight means you can stay offroad for longer without losing speed
|
// A higher kart weight means you can stay offroad for longer without losing speed
|
||||||
offroad = (1872 + 5*156 - kartweight*156)*offroadstrength;
|
offroad = (1872 + 5*156 - kartweight*156)*offroadstrength;
|
||||||
|
|
||||||
//if (player->kartstuff[k_growshrinktimer] > 1) // sizeup slows down half as fast
|
//if (player->kartstuff[k_growshrinktimer] > 1) // grow slows down half as fast
|
||||||
// offroad /= 2;
|
// offroad /= 2;
|
||||||
|
|
||||||
player->kartstuff[k_offroad] += offroad;
|
player->kartstuff[k_offroad] += offroad;
|
||||||
|
@ -1206,7 +1206,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
S_StopSoundByID(player->mo, sfx_star); // Stop it
|
S_StopSoundByID(player->mo, sfx_star); // Stop it
|
||||||
}
|
}
|
||||||
|
|
||||||
// And the same for the size up SFX
|
// And the same for the grow SFX
|
||||||
if (!(player->mo->health > 0 && player->mo->player->kartstuff[k_growshrinktimer] > 0)) // If you aren't big
|
if (!(player->mo->health > 0 && player->mo->player->kartstuff[k_growshrinktimer] > 0)) // If you aren't big
|
||||||
{
|
{
|
||||||
if (S_SoundPlaying(player->mo, sfx_mega)) // But the sound is playing
|
if (S_SoundPlaying(player->mo, sfx_mega)) // But the sound is playing
|
||||||
|
@ -1290,7 +1290,7 @@ static fixed_t K_GetKartBoostPower(player_t *player, boolean speed)
|
||||||
if (player->kartstuff[k_growshrinktimer] > 1
|
if (player->kartstuff[k_growshrinktimer] > 1
|
||||||
&& (player->kartstuff[k_growshrinktimer] > ((itemtime + TICRATE*2) - 25)
|
&& (player->kartstuff[k_growshrinktimer] > ((itemtime + TICRATE*2) - 25)
|
||||||
|| player->kartstuff[k_growshrinktimer] <= 26))
|
|| player->kartstuff[k_growshrinktimer] <= 26))
|
||||||
{ // Size Up - Mid-size
|
{ // Grow - Mid-size
|
||||||
if (speed)
|
if (speed)
|
||||||
{
|
{
|
||||||
boostvalue = max(boostvalue, FRACUNIT/8); // + 12.5%
|
boostvalue = max(boostvalue, FRACUNIT/8); // + 12.5%
|
||||||
|
@ -1298,7 +1298,7 @@ static fixed_t K_GetKartBoostPower(player_t *player, boolean speed)
|
||||||
}
|
}
|
||||||
if (player->kartstuff[k_growshrinktimer] < ((itemtime + TICRATE*2) - 25)
|
if (player->kartstuff[k_growshrinktimer] < ((itemtime + TICRATE*2) - 25)
|
||||||
&& player->kartstuff[k_growshrinktimer] > 26)
|
&& player->kartstuff[k_growshrinktimer] > 26)
|
||||||
{ // Size Up
|
{ // Grow
|
||||||
if (speed)
|
if (speed)
|
||||||
{
|
{
|
||||||
boostvalue = max(boostvalue, FRACUNIT/5); // + 20%
|
boostvalue = max(boostvalue, FRACUNIT/5); // + 20%
|
||||||
|
@ -1967,6 +1967,38 @@ void K_SpawnDriftTrail(player_t *player)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void K_SpawnSparkleTrail(player_t *player)
|
||||||
|
{
|
||||||
|
const INT32 rad = (player->mo->radius*2)>>FRACBITS;
|
||||||
|
fixed_t newx, newy, newz;
|
||||||
|
mobj_t *sparkle;
|
||||||
|
INT32 i;
|
||||||
|
|
||||||
|
I_Assert(player != NULL);
|
||||||
|
I_Assert(player->mo != NULL);
|
||||||
|
I_Assert(!P_MobjWasRemoved(player->mo));
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
newx = player->mo->x + player->mo->momx + (P_RandomRange(-rad, rad)<<FRACBITS);
|
||||||
|
newy = player->mo->y + player->mo->momy + (P_RandomRange(-rad, rad)<<FRACBITS);
|
||||||
|
newz = player->mo->z + player->mo->momz + (P_RandomRange(0, player->mo->height>>FRACBITS)<<FRACBITS);
|
||||||
|
|
||||||
|
sparkle = P_SpawnMobj(newx, newy, newz, MT_SPARKLETRAIL);
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
P_SetMobjState(sparkle, S_KARTINVULN_LARGE1);
|
||||||
|
|
||||||
|
P_SetTarget(&sparkle->target, player->mo);
|
||||||
|
//sparkle->fuse = 10;
|
||||||
|
sparkle->destscale = player->mo->scale;
|
||||||
|
P_SetScale(sparkle, player->mo->scale);
|
||||||
|
sparkle->eflags = (sparkle->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
|
||||||
|
sparkle->color = player->mo->color;
|
||||||
|
sparkle->colorized = player->mo->colorized;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, INT32 defaultDir, boolean minethrow)
|
static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, INT32 defaultDir, boolean minethrow)
|
||||||
{
|
{
|
||||||
mobj_t *mo;
|
mobj_t *mo;
|
||||||
|
@ -2218,7 +2250,7 @@ void K_DoSneaker(player_t *player, boolean doPFlag, boolean startboost)
|
||||||
player->kartstuff[k_sounds] = 50;
|
player->kartstuff[k_sounds] = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void K_DoSizeDown(player_t *player, boolean spb)
|
static void K_DoShrink(player_t *player, boolean spb)
|
||||||
{
|
{
|
||||||
mobj_t *mo;
|
mobj_t *mo;
|
||||||
thinker_t *think;
|
thinker_t *think;
|
||||||
|
@ -2239,7 +2271,8 @@ static void K_DoSizeDown(player_t *player, boolean spb)
|
||||||
|
|
||||||
mo = (mobj_t *)think;
|
mo = (mobj_t *)think;
|
||||||
|
|
||||||
if (mo->type == MT_PLAYER)
|
if (mo->player && !mo->player->spectator
|
||||||
|
&& mo->player->kartstuff[k_position] > player->kartstuff[k_position])
|
||||||
P_DamageMobj(mo, player->mo, player->mo, spb ? 65 : 64);
|
P_DamageMobj(mo, player->mo, player->mo, spb ? 65 : 64);
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
|
@ -2723,6 +2756,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
S_ChangeMusicInternal("minvnc", true);
|
S_ChangeMusicInternal("minvnc", true);
|
||||||
if (!cv_kartstarsfx.value && !P_IsLocalPlayer(player))
|
if (!cv_kartstarsfx.value && !P_IsLocalPlayer(player))
|
||||||
S_StartSound(player->mo, sfx_star);
|
S_StartSound(player->mo, sfx_star);
|
||||||
|
if (!player->kartstuff[k_invincibilitytimer])
|
||||||
|
{
|
||||||
|
mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_OVERLAY);
|
||||||
|
P_SetTarget(&overlay->target, player->mo);
|
||||||
|
P_SetMobjState(overlay, S_INVULNFLASH1);
|
||||||
|
}
|
||||||
player->kartstuff[k_invincibilitytimer] = itemtime; // Activate it
|
player->kartstuff[k_invincibilitytimer] = itemtime; // Activate it
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
|
@ -2996,13 +3035,13 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
case KITEM_SPB:
|
case KITEM_SPB:
|
||||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
||||||
{
|
{
|
||||||
K_DoSizeDown(player, true);
|
K_DoShrink(player, true);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KITEM_SIZEUP:
|
case KITEM_GROW:
|
||||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO
|
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO
|
||||||
&& player->kartstuff[k_growshrinktimer] <= 0) // Size Up holds the item box hostage
|
&& player->kartstuff[k_growshrinktimer] <= 0) // Grow holds the item box hostage
|
||||||
{
|
{
|
||||||
if (P_IsLocalPlayer(player) && !player->exiting)
|
if (P_IsLocalPlayer(player) && !player->exiting)
|
||||||
S_ChangeMusicInternal("mega", true);
|
S_ChangeMusicInternal("mega", true);
|
||||||
|
@ -3017,10 +3056,10 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
player->kartstuff[k_poweritemtimer] = 10*TICRATE;
|
player->kartstuff[k_poweritemtimer] = 10*TICRATE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KITEM_SIZEDOWN:
|
case KITEM_SHRINK:
|
||||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
||||||
{
|
{
|
||||||
K_DoSizeDown(player, false);
|
K_DoShrink(player, false);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -3078,7 +3117,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
else if (player->kartstuff[k_sneakertimer] == 0 && player->kartstuff[k_boosting] == 1)
|
else if (player->kartstuff[k_sneakertimer] == 0 && player->kartstuff[k_boosting] == 1)
|
||||||
player->kartstuff[k_boosting] = 0;
|
player->kartstuff[k_boosting] = 0;
|
||||||
|
|
||||||
// Size Up - Make the player grow!
|
// Grow - Make the player grow!
|
||||||
if (player->kartstuff[k_growshrinktimer] > ((itemtime + TICRATE*2) - 25))
|
if (player->kartstuff[k_growshrinktimer] > ((itemtime + TICRATE*2) - 25))
|
||||||
{
|
{
|
||||||
if (leveltime & 2)
|
if (leveltime & 2)
|
||||||
|
@ -3089,7 +3128,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
else if (player->kartstuff[k_growshrinktimer] > 26
|
else if (player->kartstuff[k_growshrinktimer] > 26
|
||||||
&& player->kartstuff[k_growshrinktimer] <= ((itemtime + TICRATE*2) - 25))
|
&& player->kartstuff[k_growshrinktimer] <= ((itemtime + TICRATE*2) - 25))
|
||||||
player->mo->destscale = (mapheaderinfo[gamemap-1]->mobj_scale)*3/2;
|
player->mo->destscale = (mapheaderinfo[gamemap-1]->mobj_scale)*3/2;
|
||||||
// Size Up - Back to normal...
|
// Grow - Back to normal...
|
||||||
else if (player->kartstuff[k_growshrinktimer] > 1
|
else if (player->kartstuff[k_growshrinktimer] > 1
|
||||||
&& player->kartstuff[k_growshrinktimer] <= 26)
|
&& player->kartstuff[k_growshrinktimer] <= 26)
|
||||||
{
|
{
|
||||||
|
@ -3103,7 +3142,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
|
|
||||||
if ((gametype != GT_RACE)
|
if ((gametype != GT_RACE)
|
||||||
&& (player->kartstuff[k_itemtype] == KITEM_INVINCIBILITY
|
&& (player->kartstuff[k_itemtype] == KITEM_INVINCIBILITY
|
||||||
|| player->kartstuff[k_itemtype] == KITEM_SIZEUP
|
|| player->kartstuff[k_itemtype] == KITEM_GROW
|
||||||
|| player->kartstuff[k_invincibilitytimer]
|
|| player->kartstuff[k_invincibilitytimer]
|
||||||
|| player->kartstuff[k_growshrinktimer] > 0))
|
|| player->kartstuff[k_growshrinktimer] > 0))
|
||||||
player->kartstuff[k_poweritemtimer] = 10*TICRATE;
|
player->kartstuff[k_poweritemtimer] = 10*TICRATE;
|
||||||
|
@ -3212,7 +3251,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Squishing
|
// Squishing
|
||||||
// If a Size Up player or a Thwomp crushes you, get flattened instead of being killed.
|
// If a Grow player or a Thwomp crushes you, get flattened instead of being killed.
|
||||||
|
|
||||||
if (player->kartstuff[k_squishedtimer] <= 0)
|
if (player->kartstuff[k_squishedtimer] <= 0)
|
||||||
{
|
{
|
||||||
|
@ -3364,20 +3403,15 @@ static patch_t *kp_jawz;
|
||||||
static patch_t *kp_mine;
|
static patch_t *kp_mine;
|
||||||
static patch_t *kp_ballhog;
|
static patch_t *kp_ballhog;
|
||||||
static patch_t *kp_selfpropelledbomb;
|
static patch_t *kp_selfpropelledbomb;
|
||||||
static patch_t *kp_sizeup;
|
static patch_t *kp_grow;
|
||||||
static patch_t *kp_sizedown;
|
static patch_t *kp_shrink;
|
||||||
static patch_t *kp_lightningshield;
|
static patch_t *kp_lightningshield;
|
||||||
static patch_t *kp_hyudoro;
|
static patch_t *kp_hyudoro;
|
||||||
static patch_t *kp_pogospring;
|
static patch_t *kp_pogospring;
|
||||||
static patch_t *kp_kitchensink;
|
static patch_t *kp_kitchensink;
|
||||||
static patch_t *kp_sadface;
|
static patch_t *kp_sadface;
|
||||||
|
|
||||||
static patch_t *kp_check;
|
static patch_t *kp_check[6];
|
||||||
static patch_t *kp_checkw;
|
|
||||||
static patch_t *kp_checkinvuln;
|
|
||||||
static patch_t *kp_checkinvulnw;
|
|
||||||
static patch_t *kp_checksizeup;
|
|
||||||
static patch_t *kp_checksizeupw;
|
|
||||||
|
|
||||||
void K_LoadKartHUDGraphics(void)
|
void K_LoadKartHUDGraphics(void)
|
||||||
{
|
{
|
||||||
|
@ -3486,8 +3520,8 @@ void K_LoadKartHUDGraphics(void)
|
||||||
kp_mine = W_CachePatchName("K_ITMINE", PU_HUDGFX);
|
kp_mine = W_CachePatchName("K_ITMINE", PU_HUDGFX);
|
||||||
kp_ballhog = W_CachePatchName("K_ITBHOG", PU_HUDGFX);
|
kp_ballhog = W_CachePatchName("K_ITBHOG", PU_HUDGFX);
|
||||||
kp_selfpropelledbomb = W_CachePatchName("K_ITSPB", PU_HUDGFX);
|
kp_selfpropelledbomb = W_CachePatchName("K_ITSPB", PU_HUDGFX);
|
||||||
kp_sizeup = W_CachePatchName("K_ITSUP", PU_HUDGFX);
|
kp_grow = W_CachePatchName("K_ITGROW", PU_HUDGFX);
|
||||||
kp_sizedown = W_CachePatchName("K_ITSDWN", PU_HUDGFX);
|
kp_shrink = W_CachePatchName("K_ITSHRK", PU_HUDGFX);
|
||||||
kp_lightningshield = W_CachePatchName("K_ITLITS", PU_HUDGFX);
|
kp_lightningshield = W_CachePatchName("K_ITLITS", PU_HUDGFX);
|
||||||
kp_hyudoro = W_CachePatchName("K_ITHYUD", PU_HUDGFX);
|
kp_hyudoro = W_CachePatchName("K_ITHYUD", PU_HUDGFX);
|
||||||
kp_pogospring = W_CachePatchName("K_ITPOGO", PU_HUDGFX);
|
kp_pogospring = W_CachePatchName("K_ITPOGO", PU_HUDGFX);
|
||||||
|
@ -3495,12 +3529,11 @@ void K_LoadKartHUDGraphics(void)
|
||||||
kp_sadface = W_CachePatchName("K_ITSAD", PU_HUDGFX);
|
kp_sadface = W_CachePatchName("K_ITSAD", PU_HUDGFX);
|
||||||
|
|
||||||
// CHECK indicators
|
// CHECK indicators
|
||||||
kp_check = W_CachePatchName("K_CHECK1", PU_HUDGFX);
|
for (i = 0; i < 6; i++)
|
||||||
kp_checkw = W_CachePatchName("K_CHECK2", PU_HUDGFX);
|
{
|
||||||
kp_checkinvuln = W_CachePatchName("K_CHECK3", PU_HUDGFX);
|
sprintf(buffer, "K_CHECK%d", i+1);
|
||||||
kp_checkinvulnw = W_CachePatchName("K_CHECK4", PU_HUDGFX);
|
kp_check[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX);
|
||||||
kp_checksizeup = W_CachePatchName("K_CHECK5", PU_HUDGFX);
|
}
|
||||||
kp_checksizeupw = W_CachePatchName("K_CHECK6", PU_HUDGFX);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
@ -3672,12 +3705,12 @@ static void K_drawKartItem(void)
|
||||||
case 1: localpatch = kp_banana; break; // Banana
|
case 1: localpatch = kp_banana; break; // Banana
|
||||||
case 2: localpatch = kp_orbinaut; break; // Orbinaut
|
case 2: localpatch = kp_orbinaut; break; // Orbinaut
|
||||||
case 3: localpatch = kp_mine; break; // Mine
|
case 3: localpatch = kp_mine; break; // Mine
|
||||||
case 4: localpatch = kp_sizeup; break; // Size Up
|
case 4: localpatch = kp_grow; break; // Grow
|
||||||
case 5: localpatch = kp_hyudoro; break; // Hyudoro
|
case 5: localpatch = kp_hyudoro; break; // Hyudoro
|
||||||
case 6: localpatch = kp_rocketsneaker; break; // Rocket Sneaker
|
case 6: localpatch = kp_rocketsneaker; break; // Rocket Sneaker
|
||||||
case 7: localpatch = kp_jawz; break; // Jawz
|
case 7: localpatch = kp_jawz; break; // Jawz
|
||||||
case 8: localpatch = kp_selfpropelledbomb; break; // Self-Propelled Bomb
|
case 8: localpatch = kp_selfpropelledbomb; break; // Self-Propelled Bomb
|
||||||
case 9: localpatch = kp_sizedown; break; // Size Down
|
case 9: localpatch = kp_shrink; break; // Shrink
|
||||||
case 10: localpatch = localinv; break; // Invincibility
|
case 10: localpatch = localinv; break; // Invincibility
|
||||||
case 11: localpatch = kp_fakeitem; break; // Fake Item
|
case 11: localpatch = kp_fakeitem; break; // Fake Item
|
||||||
case 12: localpatch = kp_ballhog; break; // Ballhog
|
case 12: localpatch = kp_ballhog; break; // Ballhog
|
||||||
|
@ -3710,7 +3743,7 @@ static void K_drawKartItem(void)
|
||||||
else if (stplyr->kartstuff[k_growshrinktimer] > 1)
|
else if (stplyr->kartstuff[k_growshrinktimer] > 1)
|
||||||
{
|
{
|
||||||
if (leveltime & 1)
|
if (leveltime & 1)
|
||||||
localpatch = kp_sizeup;
|
localpatch = kp_grow;
|
||||||
else if (!(leveltime & 1))
|
else if (!(leveltime & 1))
|
||||||
localpatch = kp_nodraw;
|
localpatch = kp_nodraw;
|
||||||
}
|
}
|
||||||
|
@ -3738,8 +3771,8 @@ static void K_drawKartItem(void)
|
||||||
case KITEM_MINE: localpatch = kp_mine; break;
|
case KITEM_MINE: localpatch = kp_mine; break;
|
||||||
case KITEM_BALLHOG: localpatch = kp_ballhog; break;
|
case KITEM_BALLHOG: localpatch = kp_ballhog; break;
|
||||||
case KITEM_SPB: localpatch = kp_selfpropelledbomb; break;
|
case KITEM_SPB: localpatch = kp_selfpropelledbomb; break;
|
||||||
case KITEM_SIZEUP: localpatch = kp_sizeup; break;
|
case KITEM_GROW: localpatch = kp_grow; break;
|
||||||
case KITEM_SIZEDOWN: localpatch = kp_sizedown; break;
|
case KITEM_SHRINK: localpatch = kp_shrink; break;
|
||||||
case KITEM_LIGHTNINGSHIELD: localpatch = kp_lightningshield; break;
|
case KITEM_LIGHTNINGSHIELD: localpatch = kp_lightningshield; break;
|
||||||
case KITEM_HYUDORO: localpatch = kp_hyudoro; break;
|
case KITEM_HYUDORO: localpatch = kp_hyudoro; break;
|
||||||
case KITEM_POGOSPRING: localpatch = kp_pogospring; break;
|
case KITEM_POGOSPRING: localpatch = kp_pogospring; break;
|
||||||
|
@ -4183,11 +4216,11 @@ static void K_drawKartPlayerCheck(void)
|
||||||
INT32 i;
|
INT32 i;
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
INT32 x;
|
INT32 x;
|
||||||
patch_t *localpatch;
|
UINT8 pnum = 0;
|
||||||
|
|
||||||
INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM);
|
INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM);
|
||||||
|
|
||||||
if (!(stplyr->mo))
|
if (!stplyr->mo || stplyr->spectator)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (stplyr->awayviewtics)
|
if (stplyr->awayviewtics)
|
||||||
|
@ -4200,27 +4233,18 @@ static void K_drawKartPlayerCheck(void)
|
||||||
{
|
{
|
||||||
if (&players[i] == stplyr)
|
if (&players[i] == stplyr)
|
||||||
continue;
|
continue;
|
||||||
if (!(players[i].mo))
|
if (!playeringame[i] || players[i].spectator)
|
||||||
|
continue;
|
||||||
|
if (!players[i].mo)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ((players[i].kartstuff[k_invincibilitytimer] <= 0) && (leveltime & 2))
|
if ((players[i].kartstuff[k_invincibilitytimer] <= 0) && (leveltime & 2))
|
||||||
{
|
pnum++; // white frames
|
||||||
if (players[i].kartstuff[k_itemtype] == KITEM_SIZEUP || players[i].kartstuff[k_growshrinktimer] > 0)
|
|
||||||
localpatch = kp_checksizeupw;
|
if (players[i].kartstuff[k_itemtype] == KITEM_GROW || players[i].kartstuff[k_growshrinktimer] > 0)
|
||||||
else if (players[i].kartstuff[k_itemtype] == KITEM_INVINCIBILITY || players[i].kartstuff[k_invincibilitytimer])
|
pnum += 4;
|
||||||
localpatch = kp_checkinvulnw;
|
else if (players[i].kartstuff[k_itemtype] == KITEM_INVINCIBILITY || players[i].kartstuff[k_invincibilitytimer])
|
||||||
else
|
pnum += 2;
|
||||||
localpatch = kp_checkw;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (players[i].kartstuff[k_itemtype] == KITEM_SIZEUP || players[i].kartstuff[k_growshrinktimer] > 0)
|
|
||||||
localpatch = kp_checksizeup;
|
|
||||||
else if (players[i].kartstuff[k_itemtype] == KITEM_INVINCIBILITY || players[i].kartstuff[k_invincibilitytimer])
|
|
||||||
localpatch = kp_checkinvuln;
|
|
||||||
else
|
|
||||||
localpatch = kp_check;
|
|
||||||
}
|
|
||||||
|
|
||||||
x = K_FindCheckX(stplyr->mo->x, stplyr->mo->y, stplyr->mo->angle, players[i].mo->x, players[i].mo->y);
|
x = K_FindCheckX(stplyr->mo->x, stplyr->mo->y, stplyr->mo->angle, players[i].mo->x, players[i].mo->y);
|
||||||
if (x <= 320 && x >= 0)
|
if (x <= 320 && x >= 0)
|
||||||
|
@ -4231,7 +4255,7 @@ static void K_drawKartPlayerCheck(void)
|
||||||
x = 306;
|
x = 306;
|
||||||
|
|
||||||
colormap = R_GetTranslationColormap(TC_DEFAULT, players[i].mo->color, 0);
|
colormap = R_GetTranslationColormap(TC_DEFAULT, players[i].mo->color, 0);
|
||||||
V_DrawMappedPatch(x, CHEK_Y, V_HUDTRANS|splitflags, localpatch, colormap);
|
V_DrawMappedPatch(x, CHEK_Y, V_HUDTRANS|splitflags, kp_check[pnum], colormap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ void K_StealBalloon(player_t *player, player_t *victim, boolean force);
|
||||||
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
|
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
|
||||||
void K_SpawnMineExplosion(mobj_t *source, UINT8 color);
|
void K_SpawnMineExplosion(mobj_t *source, UINT8 color);
|
||||||
void K_SpawnDriftTrail(player_t *player);
|
void K_SpawnDriftTrail(player_t *player);
|
||||||
|
void K_SpawnSparkleTrail(player_t *player);
|
||||||
void K_DoSneaker(player_t *player, boolean doPFlag, boolean startboost);
|
void K_DoSneaker(player_t *player, boolean doPFlag, boolean startboost);
|
||||||
void K_DoBouncePad(mobj_t *mo, fixed_t vertispeed);
|
void K_DoBouncePad(mobj_t *mo, fixed_t vertispeed);
|
||||||
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
|
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
|
||||||
|
|
|
@ -2090,6 +2090,16 @@ static int lib_kSpawnDriftTrail(lua_State *L)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lib_kSpawnSparkleTrail(lua_State *L)
|
||||||
|
{
|
||||||
|
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||||
|
NOHUD
|
||||||
|
if (!player)
|
||||||
|
return LUA_ErrInvalid(L, "player_t");
|
||||||
|
K_SpawnDriftTrail(player);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int lib_kDoSneaker(lua_State *L)
|
static int lib_kDoSneaker(lua_State *L)
|
||||||
{
|
{
|
||||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||||
|
@ -2336,6 +2346,7 @@ static luaL_Reg lib[] = {
|
||||||
{"K_StealBalloon",lib_kStealBalloon},
|
{"K_StealBalloon",lib_kStealBalloon},
|
||||||
{"K_SpawnKartExplosion",lib_kSpawnKartExplosion},
|
{"K_SpawnKartExplosion",lib_kSpawnKartExplosion},
|
||||||
{"K_SpawnDriftTrail",lib_kSpawnDriftTrail},
|
{"K_SpawnDriftTrail",lib_kSpawnDriftTrail},
|
||||||
|
{"K_SpawnSparkleTrail",lib_kSpawnSparkleTrail},
|
||||||
{"K_DoSneaker",lib_kDoSneaker},
|
{"K_DoSneaker",lib_kDoSneaker},
|
||||||
{"K_DoBouncePad",lib_kDoBouncePad},
|
{"K_DoBouncePad",lib_kDoBouncePad},
|
||||||
{"K_MomentumToFacing",lib_kMomentumToFacing},
|
{"K_MomentumToFacing",lib_kMomentumToFacing},
|
||||||
|
|
|
@ -1512,8 +1512,8 @@ static menuitem_t OP_MonitorToggleMenu[] =
|
||||||
{IT_STRING | IT_CVAR, NULL, "Mines", &cv_mine, 98},
|
{IT_STRING | IT_CVAR, NULL, "Mines", &cv_mine, 98},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Ballhogs", &cv_ballhog, 106},
|
{IT_STRING | IT_CVAR, NULL, "Ballhogs", &cv_ballhog, 106},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Self-Propelled Bombs",&cv_selfpropelledbomb,114},
|
{IT_STRING | IT_CVAR, NULL, "Self-Propelled Bombs",&cv_selfpropelledbomb,114},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Size Up", &cv_sizeup, 122},
|
{IT_STRING | IT_CVAR, NULL, "Grow", &cv_grow, 122},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Size Down", &cv_sizedown, 130},
|
{IT_STRING | IT_CVAR, NULL, "Shrink", &cv_shrink, 130},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Lightning Shields", &cv_lightningshield, 138},
|
{IT_STRING | IT_CVAR, NULL, "Lightning Shields", &cv_lightningshield, 138},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Hyudoros", &cv_hyudoro, 146},
|
{IT_STRING | IT_CVAR, NULL, "Hyudoros", &cv_hyudoro, 146},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Pogo Springs", &cv_pogospring, 154},
|
{IT_STRING | IT_CVAR, NULL, "Pogo Springs", &cv_pogospring, 154},
|
||||||
|
|
|
@ -3138,7 +3138,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
||||||
player->mo->destscale = 6*FRACUNIT/8;
|
player->mo->destscale = 6*FRACUNIT/8;
|
||||||
player->kartstuff[k_growshrinktimer] -= (100+20*(16-(player->kartstuff[k_position])));
|
player->kartstuff[k_growshrinktimer] -= (100+20*(16-(player->kartstuff[k_position])));
|
||||||
}
|
}
|
||||||
// Size Up? Let's take that away.
|
// Grow? Let's take that away.
|
||||||
if (player->kartstuff[k_growshrinktimer] > 0)
|
if (player->kartstuff[k_growshrinktimer] > 0)
|
||||||
{
|
{
|
||||||
player->kartstuff[k_growshrinktimer] = 2;
|
player->kartstuff[k_growshrinktimer] = 2;
|
||||||
|
|
19
src/p_mobj.c
19
src/p_mobj.c
|
@ -6154,6 +6154,7 @@ void P_RunOverlays(void)
|
||||||
|
|
||||||
if (!mo->target)
|
if (!mo->target)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!splitscreen /*&& rendermode != render_soft*/)
|
if (!splitscreen /*&& rendermode != render_soft*/)
|
||||||
{
|
{
|
||||||
angle_t viewingangle;
|
angle_t viewingangle;
|
||||||
|
@ -6487,7 +6488,10 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
// Don't touch my fuse!
|
// Don't touch my fuse!
|
||||||
return;
|
return;
|
||||||
case MT_OVERLAY:
|
case MT_OVERLAY:
|
||||||
if (!mobj->target)
|
if ((!mobj->target)
|
||||||
|
|| ((mobj->state == &states[S_INVULNFLASH1] || mobj->state == &states[S_INVULNFLASH2] // SRB2kart: BAD HACK X_X
|
||||||
|
|| mobj->state == &states[S_INVULNFLASH3] || mobj->state == &states[S_INVULNFLASH4])
|
||||||
|
&& mobj->target->player && mobj->target->player->kartstuff[k_invincibilitytimer] == 0))
|
||||||
{
|
{
|
||||||
P_RemoveMobj(mobj);
|
P_RemoveMobj(mobj);
|
||||||
return;
|
return;
|
||||||
|
@ -6852,7 +6856,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
switch(mobj->target->player->kartstuff[k_itemtype])
|
switch(mobj->target->player->kartstuff[k_itemtype])
|
||||||
{
|
{
|
||||||
case KITEM_KITCHENSINK: P_SetMobjState(mobj, S_PLAYERARROW_KITCHENSINK); break;
|
case KITEM_KITCHENSINK: P_SetMobjState(mobj, S_PLAYERARROW_KITCHENSINK); break;
|
||||||
case KITEM_SIZEUP: P_SetMobjState(mobj, S_PLAYERARROW_SIZEUP); break;
|
case KITEM_GROW: P_SetMobjState(mobj, S_PLAYERARROW_GROW); break;
|
||||||
case KITEM_INVINCIBILITY: P_SetMobjState(mobj, S_PLAYERARROW_INVINCIBILITY); break;
|
case KITEM_INVINCIBILITY: P_SetMobjState(mobj, S_PLAYERARROW_INVINCIBILITY); break;
|
||||||
case KITEM_ORBINAUT: P_SetMobjState(mobj, S_PLAYERARROW_ORBINAUT); break;
|
case KITEM_ORBINAUT: P_SetMobjState(mobj, S_PLAYERARROW_ORBINAUT); break;
|
||||||
case KITEM_BALLHOG: P_SetMobjState(mobj, S_PLAYERARROW_BALLHOG); break;
|
case KITEM_BALLHOG: P_SetMobjState(mobj, S_PLAYERARROW_BALLHOG); break;
|
||||||
|
@ -6868,7 +6872,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 && (leveltime & 1))
|
if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 && (leveltime & 1))
|
||||||
P_SetMobjState(mobj, S_PLAYERARROW_SIZEUP);
|
P_SetMobjState(mobj, S_PLAYERARROW_GROW);
|
||||||
else if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 && !(leveltime & 1))
|
else if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 && !(leveltime & 1))
|
||||||
P_SetMobjState(mobj, S_PLAYERARROW_EMPTY); // S_INVISIBLE
|
P_SetMobjState(mobj, S_PLAYERARROW_EMPTY); // S_INVISIBLE
|
||||||
|
|
||||||
|
@ -8016,6 +8020,15 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
mobj->tracer->y, mobj->tracer->floorz, SPLATDRAWMODE_SHADE);
|
mobj->tracer->y, mobj->tracer->floorz, SPLATDRAWMODE_SHADE);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
/*case MT_SPARKLETRAIL:
|
||||||
|
if (!mobj->target)
|
||||||
|
{
|
||||||
|
P_RemoveMobj(mobj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mobj->color = mobj->target->color;
|
||||||
|
mobj->colorized = mobj->target->colorized;
|
||||||
|
break;*/
|
||||||
case MT_SPINFIRE:
|
case MT_SPINFIRE:
|
||||||
case MT_SNEAKERTRAIL:
|
case MT_SNEAKERTRAIL:
|
||||||
if (mobj->eflags & MFE_VERTICALFLIP)
|
if (mobj->eflags & MFE_VERTICALFLIP)
|
||||||
|
|
|
@ -1134,7 +1134,7 @@ void P_RestoreMusic(player_t *player)
|
||||||
// SRB2kart - We have some different powers than vanilla, some of which tweak the music.
|
// SRB2kart - We have some different powers than vanilla, some of which tweak the music.
|
||||||
if (!player->exiting)
|
if (!player->exiting)
|
||||||
{
|
{
|
||||||
// Item - Size Up
|
// Item - Grow
|
||||||
if (player->kartstuff[k_growshrinktimer] > 1)
|
if (player->kartstuff[k_growshrinktimer] > 1)
|
||||||
S_ChangeMusicInternal("mega", true);
|
S_ChangeMusicInternal("mega", true);
|
||||||
|
|
||||||
|
@ -2268,12 +2268,12 @@ static void P_CheckInvincibilityTimer(player_t *player)
|
||||||
|
|
||||||
//if (mariomode && !player->powers[pw_super]) // SRB2kart
|
//if (mariomode && !player->powers[pw_super]) // SRB2kart
|
||||||
player->mo->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
player->mo->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
||||||
if (leveltime % (TICRATE/7) == 0)
|
/*if (leveltime % (TICRATE/7) == 0)
|
||||||
{
|
{
|
||||||
mobj_t *sparkle = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_IVSP);
|
mobj_t *sparkle = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_IVSP);
|
||||||
sparkle->destscale = player->mo->scale;
|
sparkle->destscale = player->mo->scale;
|
||||||
P_SetScale(sparkle, player->mo->scale);
|
P_SetScale(sparkle, player->mo->scale);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Resume normal music stuff.
|
// Resume normal music stuff.
|
||||||
if (player->powers[pw_invulnerability] == 1 || player->kartstuff[k_invincibilitytimer] == 1)
|
if (player->powers[pw_invulnerability] == 1 || player->kartstuff[k_invincibilitytimer] == 1)
|
||||||
|
@ -7074,6 +7074,8 @@ static void P_MovePlayer(player_t *player)
|
||||||
// SRB2kart - Drifting smoke and fire
|
// SRB2kart - Drifting smoke and fire
|
||||||
if ((player->kartstuff[k_drift] != 0 || player->kartstuff[k_sneakertimer] > 0) && onground && (leveltime & 1))
|
if ((player->kartstuff[k_drift] != 0 || player->kartstuff[k_sneakertimer] > 0) && onground && (leveltime & 1))
|
||||||
K_SpawnDriftTrail(player);
|
K_SpawnDriftTrail(player);
|
||||||
|
if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||||
|
K_SpawnSparkleTrail(player);
|
||||||
|
|
||||||
/* // SRB2kart - nadah
|
/* // SRB2kart - nadah
|
||||||
// If the player isn't on the ground, make sure they aren't in a "starting dash" position.
|
// If the player isn't on the ground, make sure they aren't in a "starting dash" position.
|
||||||
|
|
Loading…
Reference in a new issue