mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-20 19:02:37 +00:00
Did you know: Battle Mode
- Different sizes for the balloons, depending on how many you have - Balloons are fullbright, cast shadows, and stick closer to players - Mega Mushrooms can now appear - Can steal items with Boo in Battle Mode now, as intended - Death pits make you lose only 1 balloon - Balloons disappear properly if you use Boo - Boo item icon should no longer appear if you're out of balloons - You can now properly respawn in Battle Mode - Can no longer collide with items if you are already holding one
This commit is contained in:
parent
f84485c680
commit
b36fd5c5f9
9 changed files with 327 additions and 234 deletions
|
@ -6382,7 +6382,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_SINKTRAIL3",
|
||||
|
||||
// Battle Mode balloon
|
||||
"S_BATTLEBALLOON",
|
||||
"S_BATTLEBALLOON1",
|
||||
"S_BATTLEBALLOON2",
|
||||
"S_BATTLEBALLOON3",
|
||||
|
||||
// Pokey
|
||||
"S_POKEY1",
|
||||
|
|
|
@ -2188,6 +2188,7 @@ void G_PlayerReborn(INT32 player)
|
|||
// SRB2kart
|
||||
INT32 starpostwp;
|
||||
INT32 offroad;
|
||||
INT32 balloon;
|
||||
|
||||
score = players[player].score;
|
||||
lives = players[player].lives;
|
||||
|
@ -2242,6 +2243,7 @@ void G_PlayerReborn(INT32 player)
|
|||
// SRB2kart
|
||||
starpostwp = players[player].kartstuff[k_starpostwp];
|
||||
offroad = players[player].kartstuff[k_offroad];
|
||||
balloon = players[player].kartstuff[k_balloon];
|
||||
|
||||
p = &players[player];
|
||||
memset(p, 0, sizeof (*p));
|
||||
|
@ -2297,6 +2299,7 @@ void G_PlayerReborn(INT32 player)
|
|||
// SRB2kart
|
||||
p->kartstuff[k_starpostwp] = starpostwp; // TODO: get these out of kartstuff, it causes desync
|
||||
p->kartstuff[k_offroad] = offroad;
|
||||
p->kartstuff[k_balloon] = balloon;
|
||||
|
||||
// Don't do anything immediately
|
||||
p->pflags |= PF_USEDOWN;
|
||||
|
@ -2801,7 +2804,8 @@ boolean G_GametypeHasTeams(void)
|
|||
//
|
||||
boolean G_GametypeHasSpectators(void)
|
||||
{
|
||||
return (gametype != GT_COOP && gametype != GT_COMPETITION && gametype != GT_RACE);
|
||||
return (gametype != GT_COOP && gametype != GT_COMPETITION && gametype != GT_RACE
|
||||
&& gametype != GT_MATCH); // srb2kart: temporary?
|
||||
}
|
||||
|
||||
//
|
||||
|
|
234
src/info.c
234
src/info.c
|
@ -2718,7 +2718,9 @@ state_t states[NUMSTATES] =
|
|||
{SPR_SITR, 1, 5, {NULL}, 0, 0, S_SINKTRAIL3}, // S_SINKTRAIL2
|
||||
{SPR_SITR, 2, 3, {NULL}, 0, 0, S_NULL}, // S_SINKTRAIL3
|
||||
|
||||
{SPR_KBLN, 0, 1, {NULL}, 0, 0, S_BATTLEBALLOON}, // S_BATTLEBALLOON
|
||||
{SPR_KBLN, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BATTLEBALLOON1}, // S_BATTLEBALLOON1
|
||||
{SPR_KBLN, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BATTLEBALLOON2}, // S_BATTLEBALLOON2
|
||||
{SPR_KBLN, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BATTLEBALLOON3}, // S_BATTLEBALLOON3
|
||||
|
||||
{SPR_LAKI, 0, 64, {NULL}, 1, 0, S_LAKITU2}, // S_LAKITU1
|
||||
{SPR_LAKI, 1, 35, {NULL}, 0, 0, S_NULL}, // S_LAKITU2
|
||||
|
@ -15136,138 +15138,138 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
},
|
||||
|
||||
{ // MT_BATTLEBALLOON1
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON,// 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
|
||||
5*FRACUNIT, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON1,// 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
|
||||
5*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BATTLEBALLOON2
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON,// 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
|
||||
5*FRACUNIT, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON1,// 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
|
||||
5*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BATTLEBALLOON3
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON,// 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
|
||||
5*FRACUNIT, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON1,// 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
|
||||
5*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BATTLEBALLOON4
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON,// 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
|
||||
5*FRACUNIT, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON1,// 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
|
||||
5*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BATTLEBALLOON5
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON,// 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
|
||||
5*FRACUNIT, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
-1, // doomednum
|
||||
S_BATTLEBALLOON1,// 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
|
||||
5*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_LAKITU
|
||||
|
|
|
@ -3225,7 +3225,9 @@ typedef enum state
|
|||
S_SINKTRAIL3,
|
||||
|
||||
// Battle Mode balloons
|
||||
S_BATTLEBALLOON,
|
||||
S_BATTLEBALLOON1,
|
||||
S_BATTLEBALLOON2,
|
||||
S_BATTLEBALLOON3,
|
||||
|
||||
// Lakitu
|
||||
S_LAKITU1,
|
||||
|
|
121
src/k_kart.c
121
src/k_kart.c
|
@ -685,7 +685,7 @@ static INT32 K_KartItemOddsDistance_Retro[NUMKARTITEMS][10] =
|
|||
/*Boo*/ { 1, 0, 0, 2, 2, 1, 0, 0, 0, 0 }, // Boo
|
||||
/*Mushroom*/ { 1, 1, 0, 0, 3, 7, 5, 0, 0, 0 }, // Mushroom
|
||||
/*Triple Mushroom*/ { 0, 0, 0, 0, 0, 3,10, 6, 4, 0 }, // Triple Mushroom
|
||||
/*Mega Mushroom*/ { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 }, // Mega Mushroom
|
||||
/*Mega Mushroom*/ { 1, 0, 0, 0, 0, 0, 1, 1, 0, 0 }, // Mega Mushroom
|
||||
/*Gold Mushroom*/ { 0, 0, 0, 0, 0, 0, 1, 6, 8,12 }, // Gold Mushroom
|
||||
/*Star*/ { 1, 0, 0, 0, 0, 0, 0, 4, 6, 8 }, // Star
|
||||
|
||||
|
@ -1633,8 +1633,8 @@ void K_SpinPlayer(player_t *player, mobj_t *source)
|
|||
//return;
|
||||
}
|
||||
|
||||
if (source && source->player)
|
||||
source->player->score++;
|
||||
if (source && source->player && player != source->player)
|
||||
P_AddPlayerScore(source->player, 1);
|
||||
|
||||
K_CheckBalloons();
|
||||
}
|
||||
|
@ -1697,8 +1697,8 @@ void K_SquishPlayer(player_t *player, mobj_t *source)
|
|||
//return;
|
||||
}
|
||||
|
||||
if (source && source->player)
|
||||
source->player->score++;
|
||||
if (source && source->player && player != source->player)
|
||||
P_AddPlayerScore(source->player, 1);
|
||||
|
||||
K_CheckBalloons();
|
||||
}
|
||||
|
@ -1750,8 +1750,8 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju
|
|||
//return;
|
||||
}
|
||||
|
||||
if (source && source->player)
|
||||
source->player->score++;
|
||||
if (source && source->player && player != source->player)
|
||||
P_AddPlayerScore(source->player, 1);
|
||||
|
||||
K_CheckBalloons();
|
||||
}
|
||||
|
@ -2156,15 +2156,15 @@ static void K_DoBooSteal(player_t *player)
|
|||
INT32 stealplayer = 0; // The player that's getting stolen from
|
||||
INT32 prandom = 0;
|
||||
|
||||
if (!multiplayer)
|
||||
if (!multiplayer || (gametype == GT_MATCH && player->kartstuff[k_balloon] <= 0))
|
||||
return;
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (playeringame[i] && players[i].mo && players[i].mo->health > 0 && players[i].playerstate == PST_LIVE
|
||||
&& !players[i].exiting && !players[i].powers[pw_super] && !((netgame || multiplayer) && players[i].spectator)
|
||||
&& players[i].kartstuff[k_position] < player->kartstuff[k_position] && player != &players[i]
|
||||
&& (gametype == GT_MATCH && players[i].kartstuff[k_balloon] > 0)
|
||||
&& player != &players[i] && !players[i].exiting && !players[i].powers[pw_super] && !(players[i].spectator)
|
||||
&& ((gametype == GT_RACE && players[i].kartstuff[k_position] < player->kartstuff[k_position])
|
||||
|| (gametype == GT_MATCH && players[i].kartstuff[k_balloon] > 0))
|
||||
|
||||
&& (players[i].kartstuff[k_star] || players[i].kartstuff[k_mushroom] || players[i].kartstuff[k_goldshroom]
|
||||
|| players[i].kartstuff[k_megashroom] || players[i].kartstuff[k_lightning] || players[i].kartstuff[k_blueshell]
|
||||
|
@ -2623,30 +2623,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
|
||||
if (gametype == GT_RACE)
|
||||
K_KartUpdatePosition(player);
|
||||
else if (gametype == GT_MATCH && player->kartstuff[k_balloon] <= 0) // dead in match? BOO!
|
||||
{
|
||||
player->kartstuff[k_bootaketimer] = bootime;
|
||||
player->kartstuff[k_magnet] = 0; // reset all those dang items
|
||||
player->kartstuff[k_boo] = 0;
|
||||
player->kartstuff[k_mushroom] = 0;
|
||||
player->kartstuff[k_megashroom] = 0;
|
||||
player->kartstuff[k_goldshroom] = 0;
|
||||
player->kartstuff[k_star] = 0;
|
||||
player->kartstuff[k_triplebanana] = 0;
|
||||
player->kartstuff[k_fakeitem] = 0;
|
||||
player->kartstuff[k_banana] = 0;
|
||||
player->kartstuff[k_greenshell] = 0;
|
||||
player->kartstuff[k_redshell] = 0;
|
||||
player->kartstuff[k_laserwisp] = 0;
|
||||
player->kartstuff[k_triplegreenshell] = 0;
|
||||
player->kartstuff[k_bobomb] = 0;
|
||||
player->kartstuff[k_blueshell] = 0;
|
||||
player->kartstuff[k_jaws] = 0;
|
||||
player->kartstuff[k_fireflower] = 0;
|
||||
player->kartstuff[k_tripleredshell] = 0;
|
||||
player->kartstuff[k_lightning] = 0;
|
||||
player->kartstuff[k_kitchensink] = 0;
|
||||
}
|
||||
|
||||
// Position Taunt
|
||||
// If you were behind someone but just passed them, taunt at them!
|
||||
|
@ -3195,32 +3171,62 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
|
||||
player->kartstuff[k_boostcharge] = 0;
|
||||
}
|
||||
|
||||
if (gametype == GT_MATCH && player->kartstuff[k_balloon] <= 0) // dead in match? BOO!
|
||||
{
|
||||
player->kartstuff[k_bootaketimer] = bootime;
|
||||
player->kartstuff[k_magnet] = 0; // reset all those dang items
|
||||
player->kartstuff[k_boo] = 0;
|
||||
player->kartstuff[k_mushroom] = 0;
|
||||
player->kartstuff[k_megashroom] = 0;
|
||||
player->kartstuff[k_goldshroom] = 0;
|
||||
player->kartstuff[k_star] = 0;
|
||||
player->kartstuff[k_triplebanana] = 0;
|
||||
player->kartstuff[k_fakeitem] = 0;
|
||||
player->kartstuff[k_banana] = 0;
|
||||
player->kartstuff[k_greenshell] = 0;
|
||||
player->kartstuff[k_redshell] = 0;
|
||||
player->kartstuff[k_laserwisp] = 0;
|
||||
player->kartstuff[k_triplegreenshell] = 0;
|
||||
player->kartstuff[k_bobomb] = 0;
|
||||
player->kartstuff[k_blueshell] = 0;
|
||||
player->kartstuff[k_jaws] = 0;
|
||||
player->kartstuff[k_fireflower] = 0;
|
||||
player->kartstuff[k_tripleredshell] = 0;
|
||||
player->kartstuff[k_lightning] = 0;
|
||||
player->kartstuff[k_kitchensink] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void K_CheckBalloons(void)
|
||||
{
|
||||
UINT8 i;
|
||||
UINT8 numingame = 0;
|
||||
INT8 winnernum = -1;
|
||||
|
||||
if (gameaction == ga_completed)
|
||||
return;
|
||||
|
||||
if (!D_NumPlayers())
|
||||
if (gameaction == ga_completed)
|
||||
return;
|
||||
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i] || players[i].spectator || players[i].kartstuff[k_balloon] <= 0)
|
||||
if (!playeringame[i] || players[i].spectator) // not even in-game :V
|
||||
continue;
|
||||
|
||||
if (winnernum > -1)
|
||||
return;
|
||||
numingame++;
|
||||
|
||||
if (players[i].kartstuff[k_balloon] <= 0) // if you don't have any balloons, you're probably not a winner
|
||||
continue;
|
||||
else if (winnernum > -1) // TWO winners? that's dumb :V
|
||||
return;
|
||||
winnernum = i;
|
||||
}
|
||||
|
||||
players[winnernum].score += 20;
|
||||
CONS_Printf(M_GetText("%s has recieved 20 points for surviving!\n"), player_names[winnernum]);
|
||||
if (numingame <= 1)
|
||||
return;
|
||||
|
||||
P_AddPlayerScore(&players[winnernum], numingame);
|
||||
CONS_Printf(M_GetText("%s recieved %d points for surviving!\n"), player_names[winnernum], numingame); // numingame/2 == 1 ? "" : "s"
|
||||
|
||||
if (server)
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
}
|
||||
|
@ -3679,31 +3685,32 @@ static void K_drawKartRetroItem(void)
|
|||
// The only actual reason is to make triple/double/single mushrooms line up this way in the code below
|
||||
// This shouldn't have any actual baring over how it functions
|
||||
// Boo is first, because we're drawing it on top of the player's current item
|
||||
if ((stplyr->kartstuff[k_bootaketimer] > 0
|
||||
|| stplyr->kartstuff[k_boostolentimer] > 0) && (leveltime & 2)) localpatch = kp_boosteal;
|
||||
else if (stplyr->kartstuff[k_boostolentimer] > 0 && !(leveltime & 2)) localpatch = kp_noitem;
|
||||
if ((stplyr->kartstuff[k_bootaketimer] > 0 || stplyr->kartstuff[k_boostolentimer] > 0)
|
||||
&& !(gametype == GT_MATCH && stplyr->kartstuff[k_balloon] <= 0)
|
||||
&& (leveltime & 2)) localpatch = kp_boosteal;
|
||||
else if (stplyr->kartstuff[k_boostolentimer] > 0 && !(leveltime & 2)) localpatch = kp_noitem;
|
||||
else if (stplyr->kartstuff[k_kitchensink] == 1) localpatch = kp_kitchensink;
|
||||
else if (stplyr->kartstuff[k_lightning] == 1) localpatch = kp_lightning;
|
||||
else if (stplyr->kartstuff[k_tripleredshell]) localpatch = kp_tripleredshell; // &8
|
||||
else if (stplyr->kartstuff[k_lightning] == 1) localpatch = kp_lightning;
|
||||
else if (stplyr->kartstuff[k_tripleredshell]) localpatch = kp_tripleredshell; // &8
|
||||
else if (stplyr->kartstuff[k_fireflower] == 1) localpatch = kp_fireflower;
|
||||
else if (stplyr->kartstuff[k_blueshell] == 1) localpatch = kp_blueshell;
|
||||
else if (stplyr->kartstuff[k_bobomb]) localpatch = kp_bobomb; // &2
|
||||
else if (stplyr->kartstuff[k_blueshell] == 1) localpatch = kp_blueshell;
|
||||
else if (stplyr->kartstuff[k_bobomb]) localpatch = kp_bobomb; // &2
|
||||
else if (stplyr->kartstuff[k_triplegreenshell]) localpatch = kp_triplegreenshell; // &8
|
||||
else if (stplyr->kartstuff[k_redshell]) localpatch = kp_redshell; // &2
|
||||
else if (stplyr->kartstuff[k_greenshell]) localpatch = kp_greenshell; // &2
|
||||
else if (stplyr->kartstuff[k_banana]) localpatch = kp_banana; // &2
|
||||
else if (stplyr->kartstuff[k_greenshell]) localpatch = kp_greenshell; // &2
|
||||
else if (stplyr->kartstuff[k_banana]) localpatch = kp_banana; // &2
|
||||
else if (stplyr->kartstuff[k_fakeitem] & 2) localpatch = kp_fakeitem;
|
||||
else if (stplyr->kartstuff[k_triplebanana]) localpatch = kp_triplebanana; // &8
|
||||
else if (stplyr->kartstuff[k_star] == 1) localpatch = kp_star;
|
||||
else if (stplyr->kartstuff[k_star] == 1) localpatch = kp_star;
|
||||
else if (stplyr->kartstuff[k_goldshroom] == 1
|
||||
|| (stplyr->kartstuff[k_goldshroomtimer] > 1 && (leveltime & 1))) localpatch = kp_goldshroom;
|
||||
|| (stplyr->kartstuff[k_goldshroomtimer] > 1 && (leveltime & 1))) localpatch = kp_goldshroom;
|
||||
else if (stplyr->kartstuff[k_goldshroomtimer] > 1 && !(leveltime & 1)) localpatch = kp_noitem;
|
||||
else if (stplyr->kartstuff[k_megashroom] == 1
|
||||
|| (stplyr->kartstuff[k_growshrinktimer] > 1 && (leveltime & 1))) localpatch = kp_megashroom;
|
||||
|| (stplyr->kartstuff[k_growshrinktimer] > 1 && (leveltime & 1))) localpatch = kp_megashroom;
|
||||
else if (stplyr->kartstuff[k_growshrinktimer] > 1 && !(leveltime & 1)) localpatch = kp_noitem;
|
||||
else if (stplyr->kartstuff[k_mushroom] & 4) localpatch = kp_triplemushroom;
|
||||
else if (stplyr->kartstuff[k_mushroom] & 2) localpatch = kp_doublemushroom;
|
||||
else if (stplyr->kartstuff[k_mushroom] == 1) localpatch = kp_mushroom;
|
||||
else if (stplyr->kartstuff[k_mushroom] == 1) localpatch = kp_mushroom;
|
||||
else if (stplyr->kartstuff[k_boo] == 1) localpatch = kp_boo;
|
||||
else if (stplyr->kartstuff[k_magnet] == 1) localpatch = kp_magnet;
|
||||
|
||||
|
|
|
@ -150,6 +150,30 @@ boolean P_CanPickupItem(player_t *player, boolean weapon)
|
|||
//if (player->powers[pw_flashing] > (flashingtics/4)*3 && player->powers[pw_flashing] <= flashingtics)
|
||||
// return false;
|
||||
|
||||
if (player->kartstuff[k_bootaketimer]
|
||||
|| player->kartstuff[k_boostolentimer]
|
||||
|| player->kartstuff[k_magnet]
|
||||
|| player->kartstuff[k_boo]
|
||||
|| player->kartstuff[k_mushroom]
|
||||
|| player->kartstuff[k_megashroom]
|
||||
|| player->kartstuff[k_goldshroom]
|
||||
|| player->kartstuff[k_star]
|
||||
|| player->kartstuff[k_triplebanana] == 0x8
|
||||
|| player->kartstuff[k_fakeitem] == 0x2
|
||||
|| player->kartstuff[k_banana] == 0x2
|
||||
|| player->kartstuff[k_greenshell] == 0x2
|
||||
|| player->kartstuff[k_redshell] == 0x2
|
||||
|| player->kartstuff[k_laserwisp]
|
||||
|| player->kartstuff[k_triplegreenshell] == 0x8
|
||||
|| player->kartstuff[k_bobomb] == 0x2
|
||||
|| player->kartstuff[k_blueshell]
|
||||
|| player->kartstuff[k_jaws] == 0x4
|
||||
|| player->kartstuff[k_fireflower]
|
||||
|| player->kartstuff[k_tripleredshell] == 0x8
|
||||
|| player->kartstuff[k_lightning]
|
||||
|| player->kartstuff[k_kitchensink])
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -2224,7 +2248,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source)
|
|||
for (w=0; w < MAXPLAYERS; w++)
|
||||
{
|
||||
if (players[w].pflags & PF_TAGIT)
|
||||
P_AddPlayerScore(&players[w], 100);
|
||||
P_AddPlayerScore(&players[w], 1);
|
||||
}
|
||||
|
||||
target->player->pflags |= PF_TAGGED;
|
||||
|
@ -2594,7 +2618,7 @@ static inline boolean P_TagDamage(mobj_t *target, mobj_t *inflictor, mobj_t *sou
|
|||
// The tag occurs so long as you aren't shooting another tagger with friendlyfire on.
|
||||
if (source->player->pflags & PF_TAGIT && !(player->pflags & PF_TAGIT))
|
||||
{
|
||||
P_AddPlayerScore(source->player, 100); //award points to tagger.
|
||||
P_AddPlayerScore(source->player, 1); //award points to tagger.
|
||||
P_HitDeathMessages(player, inflictor, source);
|
||||
|
||||
if (gametype == GT_TAG) //survivor
|
||||
|
@ -2708,21 +2732,21 @@ static void P_KillPlayer(player_t *player, mobj_t *source, INT32 damage)
|
|||
P_ResetPlayer(player);
|
||||
|
||||
P_SetPlayerMobjState(player->mo, player->mo->info->deathstate);
|
||||
if (gametype == GT_CTF && (player->gotflag & (GF_REDFLAG|GF_BLUEFLAG)))
|
||||
/*if (gametype == GT_CTF && (player->gotflag & (GF_REDFLAG|GF_BLUEFLAG)))
|
||||
{
|
||||
P_PlayerFlagBurst(player, false);
|
||||
if (source && source->player)
|
||||
{
|
||||
// Award no points when players shoot each other when cv_friendlyfire is on.
|
||||
if (!G_GametypeHasTeams() || !(source->player->ctfteam == player->ctfteam && source != player->mo))
|
||||
P_AddPlayerScore(source->player, 25);
|
||||
P_AddPlayerScore(source->player, 1);
|
||||
}
|
||||
}
|
||||
if (source && source->player && !player->powers[pw_super]) //don't score points against super players
|
||||
{
|
||||
// Award no points when players shoot each other when cv_friendlyfire is on.
|
||||
if (!G_GametypeHasTeams() || !(source->player->ctfteam == player->ctfteam && source != player->mo))
|
||||
P_AddPlayerScore(source->player, 100);
|
||||
P_AddPlayerScore(source->player, 1);
|
||||
}
|
||||
|
||||
// If the player was super, tell them he/she ain't so super nomore.
|
||||
|
@ -2732,6 +2756,20 @@ static void P_KillPlayer(player_t *player, mobj_t *source, INT32 damage)
|
|||
HU_SetCEchoFlags(0);
|
||||
HU_SetCEchoDuration(5);
|
||||
HU_DoCEcho(va("%s\\is no longer super.\\\\\\\\", player_names[player-players]));
|
||||
}*/
|
||||
|
||||
if (player->kartstuff[k_balloon])
|
||||
{
|
||||
if (player->kartstuff[k_balloon] & 16)
|
||||
player->kartstuff[k_balloon] &= ~16;
|
||||
else if (player->kartstuff[k_balloon] & 8)
|
||||
player->kartstuff[k_balloon] &= ~8;
|
||||
else if (player->kartstuff[k_balloon] & 4)
|
||||
player->kartstuff[k_balloon] &= ~4;
|
||||
else if (player->kartstuff[k_balloon] & 2)
|
||||
player->kartstuff[k_balloon] &= ~2;
|
||||
else if (player->kartstuff[k_balloon] & 1)
|
||||
player->kartstuff[k_balloon] &= ~1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2868,11 +2906,11 @@ static void P_RingDamage(player_t *player, mobj_t *inflictor, mobj_t *source, IN
|
|||
S_StartSound(player->mo, sfx_spkdth);
|
||||
}
|
||||
|
||||
if (source && source->player && !player->powers[pw_super]) //don't score points against super players
|
||||
/*if (source && source->player && !player->powers[pw_super]) //don't score points against super players
|
||||
{
|
||||
// Award no points when players shoot each other when cv_friendlyfire is on.
|
||||
if (!G_GametypeHasTeams() || !(source->player->ctfteam == player->ctfteam && source != player->mo))
|
||||
P_AddPlayerScore(source->player, 50);
|
||||
P_AddPlayerScore(source->player, 1);
|
||||
}
|
||||
|
||||
if (gametype == GT_CTF && (player->gotflag & (GF_REDFLAG|GF_BLUEFLAG)))
|
||||
|
@ -2882,9 +2920,9 @@ static void P_RingDamage(player_t *player, mobj_t *inflictor, mobj_t *source, IN
|
|||
{
|
||||
// Award no points when players shoot each other when cv_friendlyfire is on.
|
||||
if (!G_GametypeHasTeams() || !(source->player->ctfteam == player->ctfteam && source != player->mo))
|
||||
P_AddPlayerScore(source->player, 25);
|
||||
P_AddPlayerScore(source->player, 1);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// Ring loss sound plays despite hitting spikes
|
||||
P_PlayRinglossSound(player->mo); // Ringledingle!
|
||||
|
|
108
src/p_mobj.c
108
src/p_mobj.c
|
@ -6581,21 +6581,21 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
if (mobj->health > 0 && mobj->target && mobj->target->player && mobj->target->player->mo
|
||||
&& mobj->target->player->health > 0 && !mobj->target->player->spectator)
|
||||
{
|
||||
INT32 zfixds = 56;
|
||||
INT32 DIST = FixedMul(zfixds, mobj->target->scale);
|
||||
INT32 HEIGHT;
|
||||
const fixed_t radius = DIST*FRACUNIT; // mobj's distance from its Target, or Radius.
|
||||
fixed_t HEIGHT;
|
||||
fixed_t radius = 56*mobj->target->scale; // mobj's distance from its Target, or Radius.
|
||||
|
||||
if (mobj->type == MT_BANANASHIELD || mobj->type == MT_TRIPLEBANANASHIELD1 || mobj->type == MT_TRIPLEBANANASHIELD2 || mobj->type == MT_TRIPLEBANANASHIELD3)
|
||||
zfixds = 64;
|
||||
radius = 64*mobj->target->scale;
|
||||
else if (mobj->type == MT_BATTLEBALLOON1 || mobj->type == MT_BATTLEBALLOON2 || mobj->type == MT_BATTLEBALLOON3 || mobj->type == MT_BATTLEBALLOON4 || mobj->type == MT_BATTLEBALLOON5)
|
||||
radius = 32*mobj->target->scale;
|
||||
else
|
||||
zfixds = 56;
|
||||
radius = 56*mobj->target->scale;
|
||||
|
||||
//mobj->angle += FixedAngle(12*FRACUNIT); // mobj's actual speed.
|
||||
if (mobj->type == MT_TRIPLEGREENSHIELD1 || mobj->type == MT_TRIPLEGREENSHIELD2 || mobj->type == MT_TRIPLEGREENSHIELD3
|
||||
|| mobj->type == MT_TRIPLEREDSHIELD1 || mobj->type == MT_TRIPLEREDSHIELD2 || mobj->type == MT_TRIPLEREDSHIELD3
|
||||
|| mobj->type == MT_BATTLEBALLOON1 || mobj->type == MT_BATTLEBALLOON2 || mobj->type == MT_BATTLEBALLOON3
|
||||
|| mobj->type == MT_BATTLEBALLOON4 || mobj->type == MT_BATTLEBALLOON5)
|
||||
|| mobj->type == MT_TRIPLEREDSHIELD1 || mobj->type == MT_TRIPLEREDSHIELD2 || mobj->type == MT_TRIPLEREDSHIELD3
|
||||
|| mobj->type == MT_BATTLEBALLOON1 || mobj->type == MT_BATTLEBALLOON2 || mobj->type == MT_BATTLEBALLOON3
|
||||
|| mobj->type == MT_BATTLEBALLOON4 || mobj->type == MT_BATTLEBALLOON5)
|
||||
mobj->angle += FixedAngle(mobj->info->speed);
|
||||
else if (mobj->type == MT_TRIPLEBANANASHIELD2)
|
||||
mobj->angle = (mobj->target->angle + ANGLE_135);
|
||||
|
@ -6604,10 +6604,6 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
else
|
||||
mobj->angle = (mobj->target->angle + ANGLE_180);
|
||||
|
||||
if (mobj->type == MT_BATTLEBALLOON1 || mobj->type == MT_BATTLEBALLOON2 || mobj->type == MT_BATTLEBALLOON3
|
||||
|| mobj->type == MT_BATTLEBALLOON4 || mobj->type == MT_BATTLEBALLOON5)
|
||||
mobj->color = mobj->target->color;
|
||||
|
||||
// If the player is on the ceiling, then flip your items as well.
|
||||
if (mobj->target->eflags & MFE_VERTICALFLIP)
|
||||
{
|
||||
|
@ -6620,6 +6616,27 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
HEIGHT = mobj->target->height / 5;
|
||||
}
|
||||
|
||||
if (mobj->type == MT_BATTLEBALLOON1 || mobj->type == MT_BATTLEBALLOON2 || mobj->type == MT_BATTLEBALLOON3
|
||||
|| mobj->type == MT_BATTLEBALLOON4 || mobj->type == MT_BATTLEBALLOON5)
|
||||
{
|
||||
mobj->color = mobj->target->color;
|
||||
|
||||
if (!(mobj->target->player->kartstuff[k_balloon] & 4))
|
||||
P_SetMobjState(mobj, S_BATTLEBALLOON2);
|
||||
else if (!(mobj->target->player->kartstuff[k_balloon] & 2))
|
||||
P_SetMobjState(mobj, S_BATTLEBALLOON3);
|
||||
|
||||
if (mobj->target->flags2 & MF2_DONTDRAW)
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mobj->flags2 &= !MF2_DONTDRAW;
|
||||
|
||||
if (mobj->target->eflags & MFE_VERTICALFLIP)
|
||||
HEIGHT += 4*FRACUNIT;
|
||||
else
|
||||
HEIGHT -= 4*FRACUNIT;
|
||||
}
|
||||
|
||||
// Shrink your items if the player shrunk too.
|
||||
mobj->scale = mobj->target->scale;
|
||||
|
||||
|
@ -8369,10 +8386,11 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
case MT_GREENITEM: case MT_GREENSHIELD:
|
||||
case MT_TRIPLEGREENSHIELD1: case MT_TRIPLEGREENSHIELD2: case MT_TRIPLEGREENSHIELD3:
|
||||
case MT_REDITEM: case MT_REDSHIELD: case MT_REDITEMDUD:
|
||||
case MT_TRIPLEREDSHIELD1: case MT_TRIPLEREDSHIELD2: case MT_TRIPLEREDSHIELD3:
|
||||
case MT_TRIPLEREDSHIELD1: case MT_TRIPLEREDSHIELD2: case MT_TRIPLEREDSHIELD3:
|
||||
case MT_BATTLEBALLOON1: case MT_BATTLEBALLOON2: case MT_BATTLEBALLOON3:
|
||||
case MT_BATTLEBALLOON4: case MT_BATTLEBALLOON5: case MT_FIREBALL:
|
||||
case MT_FAKEITEM: case MT_FAKESHIELD:
|
||||
case MT_BOMBITEM: case MT_BOMBSHIELD:
|
||||
case MT_FIREBALL:
|
||||
P_SpawnShadowMobj(mobj);
|
||||
default:
|
||||
break;
|
||||
|
@ -9123,41 +9141,49 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
// Spawn with a pity shield if necessary.
|
||||
//P_DoPityCheck(p);
|
||||
|
||||
if (gametype == GT_MATCH && p->playerstate != PST_REBORN) // srb2kart
|
||||
if (gametype == GT_MATCH && (leveltime < 1 || p->kartstuff[k_balloon] > 0)) // srb2kart
|
||||
{
|
||||
angle_t newangle, diff;
|
||||
fixed_t newx;
|
||||
fixed_t newy;
|
||||
mobj_t *mo, *mo2, *mo3, *mo4, *mo5;
|
||||
|
||||
switch (cv_kartballoons.value) // Fallthrough intentional
|
||||
|
||||
if (leveltime < 1) // Start of the map?
|
||||
{
|
||||
case 5:
|
||||
p->kartstuff[k_balloon] |= 0x16;
|
||||
case 4:
|
||||
p->kartstuff[k_balloon] |= 0x08;
|
||||
case 3:
|
||||
p->kartstuff[k_balloon] |= 0x04;
|
||||
case 2:
|
||||
p->kartstuff[k_balloon] |= 0x02;
|
||||
case 1:
|
||||
p->kartstuff[k_balloon] |= 0x01;
|
||||
break;
|
||||
default:
|
||||
p->kartstuff[k_balloon] = 0x01|0x02|0x04;
|
||||
break;
|
||||
p->kartstuff[k_balloon] = 0; // Reset those balloons!
|
||||
switch (cv_kartballoons.value)
|
||||
{
|
||||
case 5:
|
||||
p->kartstuff[k_balloon] |= 0x16;
|
||||
case 4: // Fallthru's are intentional
|
||||
p->kartstuff[k_balloon] |= 0x08;
|
||||
case 3:
|
||||
p->kartstuff[k_balloon] |= 0x04;
|
||||
case 2:
|
||||
p->kartstuff[k_balloon] |= 0x02;
|
||||
case 1:
|
||||
p->kartstuff[k_balloon] |= 0x01;
|
||||
break;
|
||||
default:
|
||||
p->kartstuff[k_balloon] = 0x01|0x02|0x04; // 3 balloons
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
newangle = mobj->angle;
|
||||
diff = FixedAngle(360*FRACUNIT/cv_kartballoons.value);
|
||||
newx = mobj->x + P_ReturnThrustX(mobj, newangle + ANGLE_180, 64*FRACUNIT);
|
||||
newy = mobj->y + P_ReturnThrustY(mobj, newangle + ANGLE_180, 64*FRACUNIT);
|
||||
|
||||
|
||||
mo = P_SpawnMobj(newx, newy, mobj->z, MT_BATTLEBALLOON1);
|
||||
mo->threshold = 10;
|
||||
P_SetTarget(&mo->target, mobj);
|
||||
mo->angle = 0;
|
||||
mo->color = mobj->color;
|
||||
if (mobj->flags2 & MF2_DONTDRAW)
|
||||
mo->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mo->flags2 &= !MF2_DONTDRAW;
|
||||
|
||||
if (p->kartstuff[k_balloon] & 2)
|
||||
{
|
||||
|
@ -9166,6 +9192,10 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
P_SetTarget(&mo2->target, mobj);
|
||||
mo2->angle = diff;
|
||||
mo2->color = mobj->color;
|
||||
if (mobj->flags2 & MF2_DONTDRAW)
|
||||
mo2->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mo2->flags2 &= !MF2_DONTDRAW;
|
||||
}
|
||||
|
||||
if (p->kartstuff[k_balloon] & 4)
|
||||
|
@ -9175,6 +9205,10 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
P_SetTarget(&mo3->target, mobj);
|
||||
mo3->angle = diff*2;
|
||||
mo3->color = mobj->color;
|
||||
if (mobj->flags2 & MF2_DONTDRAW)
|
||||
mo3->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mo3->flags2 &= !MF2_DONTDRAW;
|
||||
}
|
||||
|
||||
if (p->kartstuff[k_balloon] & 8)
|
||||
|
@ -9184,6 +9218,10 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
P_SetTarget(&mo4->target, mobj);
|
||||
mo4->angle = diff*3;
|
||||
mo4->color = mobj->color;
|
||||
if (mobj->flags2 & MF2_DONTDRAW)
|
||||
mo4->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mo4->flags2 &= !MF2_DONTDRAW;
|
||||
}
|
||||
|
||||
if (p->kartstuff[k_balloon] & 16)
|
||||
|
@ -9193,6 +9231,10 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
P_SetTarget(&mo5->target, mobj);
|
||||
mo5->angle = diff*4;
|
||||
mo5->color = mobj->color;
|
||||
if (mobj->flags2 & MF2_DONTDRAW)
|
||||
mo5->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mo5->flags2 &= !MF2_DONTDRAW;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3878,7 +3878,7 @@ DoneSection2:
|
|||
mo->spawnpoint = bflagpoint;
|
||||
mo->flags2 |= MF2_JUSTATTACKED;
|
||||
redscore += 1;
|
||||
P_AddPlayerScore(player, 250);
|
||||
P_AddPlayerScore(player, 5);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -3911,7 +3911,7 @@ DoneSection2:
|
|||
mo->spawnpoint = rflagpoint;
|
||||
mo->flags2 |= MF2_JUSTATTACKED;
|
||||
bluescore += 1;
|
||||
P_AddPlayerScore(player, 250);
|
||||
P_AddPlayerScore(player, 5);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
24
src/p_user.c
24
src/p_user.c
|
@ -853,13 +853,13 @@ void P_DoPlayerPain(player_t *player, mobj_t *source, mobj_t *inflictor)
|
|||
|
||||
// Point penalty for hitting a hazard during tag.
|
||||
// Discourages players from intentionally hurting themselves to avoid being tagged.
|
||||
if (gametype == GT_TAG && (!(player->pflags & PF_TAGGED) && !(player->pflags & PF_TAGIT)))
|
||||
/*if (gametype == GT_TAG && (!(player->pflags & PF_TAGGED) && !(player->pflags & PF_TAGIT)))
|
||||
{
|
||||
//if (player->score >= 50)
|
||||
// player->score -= 50;
|
||||
//else
|
||||
// player->score = 0;
|
||||
}
|
||||
if (player->score >= 50)
|
||||
player->score -= 50;
|
||||
else
|
||||
player->score = 0;
|
||||
}*/
|
||||
|
||||
P_ResetPlayer(player);
|
||||
P_SetPlayerMobjState(player->mo, player->mo->info->painstate);
|
||||
|
@ -1007,9 +1007,6 @@ void P_AddPlayerScore(player_t *player, UINT32 amount)
|
|||
{
|
||||
UINT32 oldscore;
|
||||
|
||||
return; // SRB2kart - no score.
|
||||
// This will probably be temporary until we do battle modes?
|
||||
|
||||
if (player->bot)
|
||||
player = &players[consoleplayer];
|
||||
|
||||
|
@ -7973,13 +7970,12 @@ static void P_DeathThink(player_t *player)
|
|||
}
|
||||
//player->kartstuff[k_lakitu] = 48; // See G_PlayerReborn in g_game.c
|
||||
|
||||
// SRB2kart - spawn automatically after 1.5 seconds
|
||||
if (player->deadtimer > (TICRATE + TICRATE/2) && (gametype == GT_RACE || player->spectator))
|
||||
// SRB2kart - spawn automatically after 1 second
|
||||
if (player->deadtimer > TICRATE)
|
||||
player->playerstate = PST_REBORN;
|
||||
|
||||
// SRB2kart - spawn after 1.5 seconds & Button press
|
||||
if ((cmd->buttons & BT_JUMP || cmd->buttons & BT_ACCELERATE) && player->deadtimer > (TICRATE + TICRATE/2)
|
||||
&& (gametype == GT_RACE || player->spectator))
|
||||
// SRB2kart - spawn after 5 tics & Button press
|
||||
if ((cmd->buttons & BT_JUMP || cmd->buttons & BT_ACCELERATE) && player->deadtimer > 5)
|
||||
player->playerstate = PST_REBORN;
|
||||
|
||||
// Single player auto respawn
|
||||
|
|
Loading…
Reference in a new issue