mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-20 19:02:37 +00:00
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
13 changed files with 233 additions and 96 deletions
|
@ -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_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_sizeup = {"sizeup", "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_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_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};
|
||||
|
|
|
@ -111,7 +111,7 @@ extern consvar_t cv_recycler;*/
|
|||
// SRB2kart items
|
||||
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_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_triplesneaker, cv_triplebanana, cv_tripleorbinaut, cv_dualjawz;
|
||||
|
|
|
@ -244,8 +244,8 @@ typedef enum
|
|||
KITEM_MINE,
|
||||
KITEM_BALLHOG,
|
||||
KITEM_SPB,
|
||||
KITEM_SIZEUP,
|
||||
KITEM_SIZEDOWN,
|
||||
KITEM_GROW,
|
||||
KITEM_SHRINK,
|
||||
KITEM_LIGHTNINGSHIELD,
|
||||
KITEM_HYUDORO,
|
||||
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_spinouttimer, // Spin-out from a banana peel or oil slick (was "pw_bananacam")
|
||||
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_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_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
|
||||
"S_FAKEITEM1",
|
||||
"S_FAKEITEM2",
|
||||
|
@ -6395,7 +6414,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_BLUELIGHTNING4",
|
||||
"S_BLUEEXPLODE",
|
||||
|
||||
// Size Down
|
||||
// Grow/shrink beams
|
||||
"S_LIGHTNING1",
|
||||
"S_LIGHTNING2",
|
||||
"S_LIGHTNING3",
|
||||
|
@ -6457,7 +6476,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_PLAYERARROW_BALLHOG",
|
||||
"S_PLAYERARROW_ORBINAUT",
|
||||
"S_PLAYERARROW_INVINCIBILITY",
|
||||
"S_PLAYERARROW_SIZEUP",
|
||||
"S_PLAYERARROW_GROW",
|
||||
"S_PLAYERARROW_KITCHENSINK",
|
||||
"S_PLAYERARROW_EMPTY",
|
||||
"S_PLAYERARROW_ROULETTE",
|
||||
|
@ -6984,6 +7003,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_RANDOMITEMPOP",
|
||||
|
||||
"MT_SNEAKERTRAIL",
|
||||
"MT_SPARKLETRAIL",
|
||||
"MT_DRIFT",
|
||||
"MT_DRIFTSMOKE",
|
||||
|
||||
|
@ -7010,7 +7030,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_SMOLDERING", // New explosion
|
||||
"MT_BOOMPARTICLE",
|
||||
|
||||
"MT_BLUELIGHTNING", // Size Down stuff
|
||||
"MT_BLUELIGHTNING", // Grow/shrink stuff
|
||||
"MT_BLUEEXPLOSION",
|
||||
"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",
|
||||
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
|
||||
//SRB2kart Sprites
|
||||
"SPRG","BSPR","RNDM","KFRE","DRIF","DSMO","FITM","BANA","GSHE","RSHE",
|
||||
"SSMN","KRBM","BLIG","LIGH","SINK","SITR","KBLN","LAKI","POKE","AUDI",
|
||||
"DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB","SHAD",
|
||||
"BUMP","FLEN","CLAS","PSHW","ARRO","PBOM"
|
||||
"SPRG","BSPR","RNDM","KFRE","KINV","KINF","DRIF","DSMO","FITM","BANA",
|
||||
"GSHE","RSHE","SSMN","KRBM","BLIG","LIGH","SINK","SITR","KBLN","LAKI",
|
||||
"POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO",
|
||||
"CRAB","SHAD","BUMP","FLEN","CLAS","PSHW","ARRO","PBOM"
|
||||
};
|
||||
|
||||
// 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|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, 1, 3, {NULL}, 0, 0, S_FAKEITEM3}, // S_FAKEITEM2
|
||||
{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|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|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|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
|
||||
|
@ -14352,6 +14369,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
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
|
||||
-1, // doomednum
|
||||
S_DRIFTSPARK1, // spawnstate
|
||||
|
|
28
src/info.h
28
src/info.h
|
@ -580,6 +580,8 @@ typedef enum sprite
|
|||
|
||||
SPR_RNDM, // Random Item Box
|
||||
SPR_KFRE, // Sneaker fire trail
|
||||
SPR_KINV, // Invincibility sparkle trail
|
||||
SPR_KINF, // Invincibility flash
|
||||
SPR_DRIF, // Drift Sparks
|
||||
SPR_DSMO, // Drift Smoke
|
||||
|
||||
|
@ -591,7 +593,7 @@ typedef enum sprite
|
|||
SPR_SSMN, // SS Mine
|
||||
SPR_KRBM, // SS Mine BOOM
|
||||
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_SITR, // Kitchen Sink Trail
|
||||
SPR_KBLN, // Battle Mode Balloon
|
||||
|
@ -3091,6 +3093,25 @@ typedef enum state
|
|||
S_KARTFIRE7,
|
||||
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
|
||||
S_FAKEITEM1,
|
||||
S_FAKEITEM2,
|
||||
|
@ -3417,7 +3438,7 @@ typedef enum state
|
|||
S_PLAYERARROW_BALLHOG,
|
||||
S_PLAYERARROW_ORBINAUT,
|
||||
S_PLAYERARROW_INVINCIBILITY,
|
||||
S_PLAYERARROW_SIZEUP,
|
||||
S_PLAYERARROW_GROW,
|
||||
S_PLAYERARROW_KITCHENSINK,
|
||||
S_PLAYERARROW_EMPTY,
|
||||
S_PLAYERARROW_ROULETTE,
|
||||
|
@ -3961,6 +3982,7 @@ typedef enum mobj_type
|
|||
MT_RANDOMITEMPOP,
|
||||
|
||||
MT_SNEAKERTRAIL,
|
||||
MT_SPARKLETRAIL,
|
||||
MT_DRIFT,
|
||||
MT_DRIFTSMOKE,
|
||||
|
||||
|
@ -3986,7 +4008,7 @@ typedef enum mobj_type
|
|||
MT_SMOLDERING, // New explosion
|
||||
MT_BOOMPARTICLE,
|
||||
|
||||
MT_BLUELIGHTNING, // Size Down stuff
|
||||
MT_BLUELIGHTNING, // Grow/shrink stuff
|
||||
MT_BLUEEXPLOSION,
|
||||
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_ballhog);
|
||||
CV_RegisterVar(&cv_selfpropelledbomb);
|
||||
CV_RegisterVar(&cv_sizeup);
|
||||
CV_RegisterVar(&cv_sizedown);
|
||||
CV_RegisterVar(&cv_grow);
|
||||
CV_RegisterVar(&cv_shrink);
|
||||
CV_RegisterVar(&cv_lightningshield);
|
||||
CV_RegisterVar(&cv_hyudoro);
|
||||
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
|
||||
/*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
|
||||
/*Size Up*/ { 0, 0, 0, 0, 0, 1, 1, 0, 0 }, // Size Up
|
||||
/*Size Down*/ { 0, 0, 0, 0, 0, 0, 1, 2, 0 }, // Size Down
|
||||
/*Grow*/ { 0, 0, 0, 0, 0, 1, 1, 0, 0 }, // Grow
|
||||
/*Shrink*/ { 0, 0, 0, 0, 0, 0, 1, 2, 0 }, // Shrink
|
||||
/*Lightning Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0 }, // Lightning Shield
|
||||
/*Hyudoro*/ { 0, 0, 2, 2, 1, 0, 0, 0, 0 }, // Hyudoro
|
||||
/*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
|
||||
/*Ballhog*/ { 0, 3, 3, 0, 0 }, // Ballhog
|
||||
/*Self-Propelled Bomb*/ { 0, 0, 0, 0, 0 }, // Self-Propelled Bomb
|
||||
/*Size Up*/ { 1, 1, 0, 0, 0 }, // Size Up
|
||||
/*Size Down*/ { 0, 0, 0, 0, 0 }, // Size Down
|
||||
/*Grow*/ { 1, 1, 0, 0, 0 }, // Grow
|
||||
/*Shrink*/ { 0, 0, 0, 0, 0 }, // Shrink
|
||||
/*Lightning Shield*/ { 0, 0, 0, 0, 0 }, // Lightning Shield
|
||||
/*Hyudoro*/ { 0, 1, 1, 1, 0 }, // Hyudoro
|
||||
/*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 (!cv_selfpropelledbomb.value || pexiting <= 0) newodds = 0;
|
||||
break;
|
||||
case KITEM_SIZEUP:
|
||||
case KITEM_GROW:
|
||||
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;
|
||||
case KITEM_SIZEDOWN:
|
||||
case KITEM_SHRINK:
|
||||
if (franticitems) newodds *= 2;
|
||||
if (!cv_sizedown.value || pingame-1 <= pexiting) newodds = 0;
|
||||
if (!cv_shrink.value || pingame-1 <= pexiting) newodds = 0;
|
||||
break;
|
||||
case KITEM_LIGHTNINGSHIELD:
|
||||
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_BALLHOG); // Ballhog
|
||||
SETITEMRESULT(useodds, KITEM_SPB); // Self-Propelled Bomb
|
||||
SETITEMRESULT(useodds, KITEM_SIZEUP); // Size Up
|
||||
SETITEMRESULT(useodds, KITEM_SIZEDOWN); // Size Down
|
||||
SETITEMRESULT(useodds, KITEM_GROW); // Grow
|
||||
SETITEMRESULT(useodds, KITEM_SHRINK); // Shrink
|
||||
SETITEMRESULT(useodds, KITEM_LIGHTNINGSHIELD); // Lightning Shield
|
||||
SETITEMRESULT(useodds, KITEM_HYUDORO); // Hyudoro
|
||||
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
|
||||
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;
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
// 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 (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
|
||||
&& (player->kartstuff[k_growshrinktimer] > ((itemtime + TICRATE*2) - 25)
|
||||
|| player->kartstuff[k_growshrinktimer] <= 26))
|
||||
{ // Size Up - Mid-size
|
||||
{ // Grow - Mid-size
|
||||
if (speed)
|
||||
{
|
||||
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)
|
||||
&& player->kartstuff[k_growshrinktimer] > 26)
|
||||
{ // Size Up
|
||||
{ // Grow
|
||||
if (speed)
|
||||
{
|
||||
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)
|
||||
{
|
||||
mobj_t *mo;
|
||||
|
@ -2218,7 +2250,7 @@ void K_DoSneaker(player_t *player, boolean doPFlag, boolean startboost)
|
|||
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;
|
||||
thinker_t *think;
|
||||
|
@ -2239,7 +2271,8 @@ static void K_DoSizeDown(player_t *player, boolean spb)
|
|||
|
||||
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);
|
||||
else
|
||||
continue;
|
||||
|
@ -2723,6 +2756,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
S_ChangeMusicInternal("minvnc", true);
|
||||
if (!cv_kartstarsfx.value && !P_IsLocalPlayer(player))
|
||||
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
|
||||
K_PlayTauntSound(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
|
@ -2996,13 +3035,13 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
case KITEM_SPB:
|
||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
||||
{
|
||||
K_DoSizeDown(player, true);
|
||||
K_DoShrink(player, true);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
}
|
||||
break;
|
||||
case KITEM_SIZEUP:
|
||||
case KITEM_GROW:
|
||||
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)
|
||||
S_ChangeMusicInternal("mega", true);
|
||||
|
@ -3017,10 +3056,10 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
player->kartstuff[k_poweritemtimer] = 10*TICRATE;
|
||||
}
|
||||
break;
|
||||
case KITEM_SIZEDOWN:
|
||||
case KITEM_SHRINK:
|
||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
||||
{
|
||||
K_DoSizeDown(player, false);
|
||||
K_DoShrink(player, false);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
}
|
||||
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)
|
||||
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 (leveltime & 2)
|
||||
|
@ -3089,7 +3128,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
else if (player->kartstuff[k_growshrinktimer] > 26
|
||||
&& player->kartstuff[k_growshrinktimer] <= ((itemtime + TICRATE*2) - 25))
|
||||
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
|
||||
&& player->kartstuff[k_growshrinktimer] <= 26)
|
||||
{
|
||||
|
@ -3103,7 +3142,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
|
||||
if ((gametype != GT_RACE)
|
||||
&& (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_growshrinktimer] > 0))
|
||||
player->kartstuff[k_poweritemtimer] = 10*TICRATE;
|
||||
|
@ -3212,7 +3251,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
|
@ -3364,20 +3403,15 @@ static patch_t *kp_jawz;
|
|||
static patch_t *kp_mine;
|
||||
static patch_t *kp_ballhog;
|
||||
static patch_t *kp_selfpropelledbomb;
|
||||
static patch_t *kp_sizeup;
|
||||
static patch_t *kp_sizedown;
|
||||
static patch_t *kp_grow;
|
||||
static patch_t *kp_shrink;
|
||||
static patch_t *kp_lightningshield;
|
||||
static patch_t *kp_hyudoro;
|
||||
static patch_t *kp_pogospring;
|
||||
static patch_t *kp_kitchensink;
|
||||
static patch_t *kp_sadface;
|
||||
|
||||
static patch_t *kp_check;
|
||||
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;
|
||||
static patch_t *kp_check[6];
|
||||
|
||||
void K_LoadKartHUDGraphics(void)
|
||||
{
|
||||
|
@ -3486,8 +3520,8 @@ void K_LoadKartHUDGraphics(void)
|
|||
kp_mine = W_CachePatchName("K_ITMINE", PU_HUDGFX);
|
||||
kp_ballhog = W_CachePatchName("K_ITBHOG", PU_HUDGFX);
|
||||
kp_selfpropelledbomb = W_CachePatchName("K_ITSPB", PU_HUDGFX);
|
||||
kp_sizeup = W_CachePatchName("K_ITSUP", PU_HUDGFX);
|
||||
kp_sizedown = W_CachePatchName("K_ITSDWN", PU_HUDGFX);
|
||||
kp_grow = W_CachePatchName("K_ITGROW", PU_HUDGFX);
|
||||
kp_shrink = W_CachePatchName("K_ITSHRK", PU_HUDGFX);
|
||||
kp_lightningshield = W_CachePatchName("K_ITLITS", PU_HUDGFX);
|
||||
kp_hyudoro = W_CachePatchName("K_ITHYUD", 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);
|
||||
|
||||
// CHECK indicators
|
||||
kp_check = W_CachePatchName("K_CHECK1", PU_HUDGFX);
|
||||
kp_checkw = W_CachePatchName("K_CHECK2", PU_HUDGFX);
|
||||
kp_checkinvuln = W_CachePatchName("K_CHECK3", PU_HUDGFX);
|
||||
kp_checkinvulnw = W_CachePatchName("K_CHECK4", PU_HUDGFX);
|
||||
kp_checksizeup = W_CachePatchName("K_CHECK5", PU_HUDGFX);
|
||||
kp_checksizeupw = W_CachePatchName("K_CHECK6", PU_HUDGFX);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
sprintf(buffer, "K_CHECK%d", i+1);
|
||||
kp_check[i] = (patch_t *) W_CachePatchName(buffer, PU_HUDGFX);
|
||||
}
|
||||
}
|
||||
|
||||
//}
|
||||
|
@ -3672,12 +3705,12 @@ static void K_drawKartItem(void)
|
|||
case 1: localpatch = kp_banana; break; // Banana
|
||||
case 2: localpatch = kp_orbinaut; break; // Orbinaut
|
||||
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 6: localpatch = kp_rocketsneaker; break; // Rocket Sneaker
|
||||
case 7: localpatch = kp_jawz; break; // Jawz
|
||||
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 11: localpatch = kp_fakeitem; break; // Fake Item
|
||||
case 12: localpatch = kp_ballhog; break; // Ballhog
|
||||
|
@ -3710,7 +3743,7 @@ static void K_drawKartItem(void)
|
|||
else if (stplyr->kartstuff[k_growshrinktimer] > 1)
|
||||
{
|
||||
if (leveltime & 1)
|
||||
localpatch = kp_sizeup;
|
||||
localpatch = kp_grow;
|
||||
else if (!(leveltime & 1))
|
||||
localpatch = kp_nodraw;
|
||||
}
|
||||
|
@ -3738,8 +3771,8 @@ static void K_drawKartItem(void)
|
|||
case KITEM_MINE: localpatch = kp_mine; break;
|
||||
case KITEM_BALLHOG: localpatch = kp_ballhog; break;
|
||||
case KITEM_SPB: localpatch = kp_selfpropelledbomb; break;
|
||||
case KITEM_SIZEUP: localpatch = kp_sizeup; break;
|
||||
case KITEM_SIZEDOWN: localpatch = kp_sizedown; break;
|
||||
case KITEM_GROW: localpatch = kp_grow; break;
|
||||
case KITEM_SHRINK: localpatch = kp_shrink; break;
|
||||
case KITEM_LIGHTNINGSHIELD: localpatch = kp_lightningshield; break;
|
||||
case KITEM_HYUDORO: localpatch = kp_hyudoro; break;
|
||||
case KITEM_POGOSPRING: localpatch = kp_pogospring; break;
|
||||
|
@ -4183,11 +4216,11 @@ static void K_drawKartPlayerCheck(void)
|
|||
INT32 i;
|
||||
UINT8 *colormap;
|
||||
INT32 x;
|
||||
patch_t *localpatch;
|
||||
UINT8 pnum = 0;
|
||||
|
||||
INT32 splitflags = K_calcSplitFlags(V_SNAPTOBOTTOM);
|
||||
|
||||
if (!(stplyr->mo))
|
||||
if (!stplyr->mo || stplyr->spectator)
|
||||
return;
|
||||
|
||||
if (stplyr->awayviewtics)
|
||||
|
@ -4200,27 +4233,18 @@ static void K_drawKartPlayerCheck(void)
|
|||
{
|
||||
if (&players[i] == stplyr)
|
||||
continue;
|
||||
if (!(players[i].mo))
|
||||
if (!playeringame[i] || players[i].spectator)
|
||||
continue;
|
||||
if (!players[i].mo)
|
||||
continue;
|
||||
|
||||
if ((players[i].kartstuff[k_invincibilitytimer] <= 0) && (leveltime & 2))
|
||||
{
|
||||
if (players[i].kartstuff[k_itemtype] == KITEM_SIZEUP || players[i].kartstuff[k_growshrinktimer] > 0)
|
||||
localpatch = kp_checksizeupw;
|
||||
else if (players[i].kartstuff[k_itemtype] == KITEM_INVINCIBILITY || players[i].kartstuff[k_invincibilitytimer])
|
||||
localpatch = kp_checkinvulnw;
|
||||
else
|
||||
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;
|
||||
}
|
||||
pnum++; // white frames
|
||||
|
||||
if (players[i].kartstuff[k_itemtype] == KITEM_GROW || players[i].kartstuff[k_growshrinktimer] > 0)
|
||||
pnum += 4;
|
||||
else if (players[i].kartstuff[k_itemtype] == KITEM_INVINCIBILITY || players[i].kartstuff[k_invincibilitytimer])
|
||||
pnum += 2;
|
||||
|
||||
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)
|
||||
|
@ -4231,7 +4255,7 @@ static void K_drawKartPlayerCheck(void)
|
|||
x = 306;
|
||||
|
||||
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_SpawnMineExplosion(mobj_t *source, UINT8 color);
|
||||
void K_SpawnDriftTrail(player_t *player);
|
||||
void K_SpawnSparkleTrail(player_t *player);
|
||||
void K_DoSneaker(player_t *player, boolean doPFlag, boolean startboost);
|
||||
void K_DoBouncePad(mobj_t *mo, fixed_t vertispeed);
|
||||
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
|
||||
|
|
|
@ -2090,6 +2090,16 @@ static int lib_kSpawnDriftTrail(lua_State *L)
|
|||
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)
|
||||
{
|
||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||
|
@ -2336,6 +2346,7 @@ static luaL_Reg lib[] = {
|
|||
{"K_StealBalloon",lib_kStealBalloon},
|
||||
{"K_SpawnKartExplosion",lib_kSpawnKartExplosion},
|
||||
{"K_SpawnDriftTrail",lib_kSpawnDriftTrail},
|
||||
{"K_SpawnSparkleTrail",lib_kSpawnSparkleTrail},
|
||||
{"K_DoSneaker",lib_kDoSneaker},
|
||||
{"K_DoBouncePad",lib_kDoBouncePad},
|
||||
{"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, "Ballhogs", &cv_ballhog, 106},
|
||||
{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, "Size Down", &cv_sizedown, 130},
|
||||
{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, "Hyudoros", &cv_hyudoro, 146},
|
||||
{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->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)
|
||||
{
|
||||
player->kartstuff[k_growshrinktimer] = 2;
|
||||
|
|
21
src/p_mobj.c
21
src/p_mobj.c
|
@ -6117,7 +6117,7 @@ static boolean P_AddShield(mobj_t *thing)
|
|||
}
|
||||
|
||||
if (shield != SH_FORCE)
|
||||
{ // Regular shields check for themselves only
|
||||
{ // Regular shields check for themselves only
|
||||
if ((shieldtype_t)(thing->target->player->powers[pw_shield] & SH_NOSTACK) != shield)
|
||||
{
|
||||
P_RemoveMobj(thing);
|
||||
|
@ -6154,6 +6154,7 @@ void P_RunOverlays(void)
|
|||
|
||||
if (!mo->target)
|
||||
continue;
|
||||
|
||||
if (!splitscreen /*&& rendermode != render_soft*/)
|
||||
{
|
||||
angle_t viewingangle;
|
||||
|
@ -6487,7 +6488,10 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
// Don't touch my fuse!
|
||||
return;
|
||||
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);
|
||||
return;
|
||||
|
@ -6852,7 +6856,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
switch(mobj->target->player->kartstuff[k_itemtype])
|
||||
{
|
||||
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_ORBINAUT: P_SetMobjState(mobj, S_PLAYERARROW_ORBINAUT); 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))
|
||||
P_SetMobjState(mobj, S_PLAYERARROW_SIZEUP);
|
||||
P_SetMobjState(mobj, S_PLAYERARROW_GROW);
|
||||
else if (mobj->target->player->kartstuff[k_growshrinktimer] > 1 && !(leveltime & 1))
|
||||
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);
|
||||
#endif
|
||||
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_SNEAKERTRAIL:
|
||||
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.
|
||||
if (!player->exiting)
|
||||
{
|
||||
// Item - Size Up
|
||||
// Item - Grow
|
||||
if (player->kartstuff[k_growshrinktimer] > 1)
|
||||
S_ChangeMusicInternal("mega", true);
|
||||
|
||||
|
@ -2268,12 +2268,12 @@ static void P_CheckInvincibilityTimer(player_t *player)
|
|||
|
||||
//if (mariomode && !player->powers[pw_super]) // SRB2kart
|
||||
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);
|
||||
sparkle->destscale = player->mo->scale;
|
||||
P_SetScale(sparkle, player->mo->scale);
|
||||
}
|
||||
}*/
|
||||
|
||||
// Resume normal music stuff.
|
||||
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
|
||||
if ((player->kartstuff[k_drift] != 0 || player->kartstuff[k_sneakertimer] > 0) && onground && (leveltime & 1))
|
||||
K_SpawnDriftTrail(player);
|
||||
if (player->kartstuff[k_invincibilitytimer] > 0)
|
||||
K_SpawnSparkleTrail(player);
|
||||
|
||||
/* // SRB2kart - nadah
|
||||
// If the player isn't on the ground, make sure they aren't in a "starting dash" position.
|
||||
|
|
Loading…
Reference in a new issue