More adjustments
- Comeback timer gets higher the more you get hit - Your ghost appears over the bomb - Speed & accel is set to worst while a bomb - CHECK range scales with kartcc
This commit is contained in:
parent
8756293906
commit
7eb4a958f7
|
@ -306,7 +306,8 @@ typedef enum
|
||||||
// 0x4 = 3 Red Shells orbiting, 0x8 = Triple Red Shell in inventory
|
// 0x4 = 3 Red Shells orbiting, 0x8 = Triple Red Shell in inventory
|
||||||
k_lightning, // 0x1 = Lightning in inventory
|
k_lightning, // 0x1 = Lightning in inventory
|
||||||
k_kitchensink, // 0x1 = Sink in inventory
|
k_kitchensink, // 0x1 = Sink in inventory
|
||||||
k_balloon, // Number of balloons left
|
k_balloon, // Battle mode, number of balloons left
|
||||||
|
k_comebackhits, // Battle mode, number of times hit in comeback mode
|
||||||
|
|
||||||
NUMKARTSTUFF
|
NUMKARTSTUFF
|
||||||
} kartstufftype_t;
|
} kartstufftype_t;
|
||||||
|
|
|
@ -205,7 +205,7 @@ INT32 bootime = 7*TICRATE;
|
||||||
INT32 boostealtime = TICRATE/2;
|
INT32 boostealtime = TICRATE/2;
|
||||||
INT32 mushroomtime = TICRATE + (TICRATE/3);
|
INT32 mushroomtime = TICRATE + (TICRATE/3);
|
||||||
INT32 itemtime = 8*TICRATE;
|
INT32 itemtime = 8*TICRATE;
|
||||||
INT32 comebacktime = 15*TICRATE;
|
INT32 comebacktime = 10*TICRATE;
|
||||||
|
|
||||||
INT32 gameovertics = 15*TICRATE;
|
INT32 gameovertics = 15*TICRATE;
|
||||||
|
|
||||||
|
@ -2194,6 +2194,7 @@ void G_PlayerReborn(INT32 player)
|
||||||
INT32 starpostwp;
|
INT32 starpostwp;
|
||||||
INT32 offroad;
|
INT32 offroad;
|
||||||
INT32 balloon;
|
INT32 balloon;
|
||||||
|
INT32 comebackhits;
|
||||||
|
|
||||||
score = players[player].score;
|
score = players[player].score;
|
||||||
lives = players[player].lives;
|
lives = players[player].lives;
|
||||||
|
@ -2249,6 +2250,7 @@ void G_PlayerReborn(INT32 player)
|
||||||
starpostwp = players[player].kartstuff[k_starpostwp];
|
starpostwp = players[player].kartstuff[k_starpostwp];
|
||||||
offroad = players[player].kartstuff[k_offroad];
|
offroad = players[player].kartstuff[k_offroad];
|
||||||
balloon = players[player].kartstuff[k_balloon];
|
balloon = players[player].kartstuff[k_balloon];
|
||||||
|
comebackhits = players[player].kartstuff[k_comebackhits];
|
||||||
|
|
||||||
p = &players[player];
|
p = &players[player];
|
||||||
memset(p, 0, sizeof (*p));
|
memset(p, 0, sizeof (*p));
|
||||||
|
@ -2305,7 +2307,8 @@ void G_PlayerReborn(INT32 player)
|
||||||
p->kartstuff[k_starpostwp] = starpostwp; // TODO: get these out of kartstuff, it causes desync
|
p->kartstuff[k_starpostwp] = starpostwp; // TODO: get these out of kartstuff, it causes desync
|
||||||
p->kartstuff[k_offroad] = offroad;
|
p->kartstuff[k_offroad] = offroad;
|
||||||
p->kartstuff[k_balloon] = balloon;
|
p->kartstuff[k_balloon] = balloon;
|
||||||
p->kartstuff[k_comebacktimer] = comebacktime;
|
p->kartstuff[k_comebackhits] = comebackhits;
|
||||||
|
p->kartstuff[k_comebacktimer] = comebacktime * (comebackhits+1);
|
||||||
|
|
||||||
// Don't do anything immediately
|
// Don't do anything immediately
|
||||||
p->pflags |= PF_USEDOWN;
|
p->pflags |= PF_USEDOWN;
|
||||||
|
|
|
@ -2881,7 +2881,7 @@ state_t states[NUMSTATES] =
|
||||||
{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
|
||||||
|
|
||||||
{SPR_PBOM, 0, -1, {NULL}, 0, 0, S_NULL}, // S_PLAYERBOMB
|
{SPR_PBOM, 0, -1, {NULL}, 1, 0, S_NULL}, // S_PLAYERBOMB
|
||||||
|
|
||||||
#ifdef SEENAMES
|
#ifdef SEENAMES
|
||||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
|
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
|
||||||
|
|
110
src/k_kart.c
110
src/k_kart.c
|
@ -1301,13 +1301,8 @@ void K_LakituChecker(player_t *player)
|
||||||
void K_KartMoveAnimation(player_t *player)
|
void K_KartMoveAnimation(player_t *player)
|
||||||
{
|
{
|
||||||
ticcmd_t *cmd = &player->cmd;
|
ticcmd_t *cmd = &player->cmd;
|
||||||
// Battle Mode bomb overrides everything else
|
|
||||||
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0)
|
|
||||||
{
|
|
||||||
P_SetPlayerMobjState(player->mo, S_PLAYERBOMB);
|
|
||||||
}
|
|
||||||
// Standing frames - S_KART_STND1 S_KART_STND1_L S_KART_STND1_R
|
// Standing frames - S_KART_STND1 S_KART_STND1_L S_KART_STND1_R
|
||||||
else if (player->speed == 0)
|
if (player->speed == 0)
|
||||||
{
|
{
|
||||||
if (cmd->buttons & BT_DRIFTRIGHT && !(player->mo->state >= &states[S_KART_STND1_R] && player->mo->state <= &states[S_KART_STND2_R]))
|
if (cmd->buttons & BT_DRIFTRIGHT && !(player->mo->state >= &states[S_KART_STND1_R] && player->mo->state <= &states[S_KART_STND2_R]))
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_STND1_R);
|
P_SetPlayerMobjState(player->mo, S_KART_STND1_R);
|
||||||
|
@ -1434,6 +1429,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
if (player->kartstuff[k_sounds])
|
if (player->kartstuff[k_sounds])
|
||||||
player->kartstuff[k_sounds]--;
|
player->kartstuff[k_sounds]--;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_comebackhits] > 5)
|
||||||
|
player->kartstuff[k_comebackhits] = 5;
|
||||||
|
|
||||||
// ???
|
// ???
|
||||||
/*
|
/*
|
||||||
if (player->kartstuff[k_jmp] > 1 && onground)
|
if (player->kartstuff[k_jmp] > 1 && onground)
|
||||||
|
@ -1600,7 +1598,10 @@ fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
k_speed += player->kartspeed*3; // 153 - 177
|
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0)
|
||||||
|
k_speed += 3; // 153
|
||||||
|
else
|
||||||
|
k_speed += player->kartspeed*3; // 153 - 177
|
||||||
|
|
||||||
finalspeed = FixedMul(FixedMul(k_speed<<14, g_cc), player->mo->scale);
|
finalspeed = FixedMul(FixedMul(k_speed<<14, g_cc), player->mo->scale);
|
||||||
|
|
||||||
|
@ -1613,8 +1614,11 @@ static fixed_t K_GetKartAccel(player_t *player)
|
||||||
{
|
{
|
||||||
fixed_t k_accel = 32; // 36;
|
fixed_t k_accel = 32; // 36;
|
||||||
|
|
||||||
//k_accel += 3 * (9 - player->kartspeed); // 36 - 60
|
if (gametype == GT_RACE || player->kartstuff[k_balloon] > 0)
|
||||||
k_accel += 4 * (9 - player->kartspeed); // 32 - 64
|
{
|
||||||
|
//k_accel += 3 * (9 - player->kartspeed); // 36 - 60
|
||||||
|
k_accel += 4 * (9 - player->kartspeed); // 32 - 64
|
||||||
|
}
|
||||||
|
|
||||||
return FixedMul(k_accel, K_GetKartBoostPower(player, false));
|
return FixedMul(k_accel, K_GetKartBoostPower(player, false));
|
||||||
}
|
}
|
||||||
|
@ -1671,7 +1675,6 @@ void K_SpinPlayer(player_t *player, mobj_t *source)
|
||||||
|
|
||||||
player->kartstuff[k_mushroomtimer] = 0;
|
player->kartstuff[k_mushroomtimer] = 0;
|
||||||
player->kartstuff[k_driftboost] = 0;
|
player->kartstuff[k_driftboost] = 0;
|
||||||
player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
|
|
||||||
if (gametype != GT_RACE)
|
if (gametype != GT_RACE)
|
||||||
{
|
{
|
||||||
|
@ -1681,16 +1684,17 @@ void K_SpinPlayer(player_t *player, mobj_t *source)
|
||||||
CONS_Printf(M_GetText("%s lost all of their balloons!\n"), player_names[player-players]);
|
CONS_Printf(M_GetText("%s lost all of their balloons!\n"), player_names[player-players]);
|
||||||
player->kartstuff[k_balloon]--;
|
player->kartstuff[k_balloon]--;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
player->kartstuff[k_comebackhits]++;
|
||||||
|
|
||||||
if (source && source->player && player != source->player)
|
if (source && source->player && player != source->player)
|
||||||
{
|
|
||||||
P_AddPlayerScore(source->player, 1);
|
P_AddPlayerScore(source->player, 1);
|
||||||
source->player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
}
|
|
||||||
|
|
||||||
K_CheckBalloons();
|
K_CheckBalloons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player->kartstuff[k_comebacktimer] = comebacktime * (player->kartstuff[k_comebackhits]+1);
|
||||||
|
|
||||||
if (player->kartstuff[k_spinouttype] <= 0)
|
if (player->kartstuff[k_spinouttype] <= 0)
|
||||||
{
|
{
|
||||||
if (player->kartstuff[k_spinouttype] == 0)
|
if (player->kartstuff[k_spinouttype] == 0)
|
||||||
|
@ -1731,7 +1735,6 @@ void K_SquishPlayer(player_t *player, mobj_t *source)
|
||||||
|
|
||||||
player->kartstuff[k_mushroomtimer] = 0;
|
player->kartstuff[k_mushroomtimer] = 0;
|
||||||
player->kartstuff[k_driftboost] = 0;
|
player->kartstuff[k_driftboost] = 0;
|
||||||
player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
|
|
||||||
if (gametype != GT_RACE)
|
if (gametype != GT_RACE)
|
||||||
{
|
{
|
||||||
|
@ -1741,16 +1744,17 @@ void K_SquishPlayer(player_t *player, mobj_t *source)
|
||||||
CONS_Printf(M_GetText("%s lost all of their balloons!\n"), player_names[player-players]);
|
CONS_Printf(M_GetText("%s lost all of their balloons!\n"), player_names[player-players]);
|
||||||
player->kartstuff[k_balloon]--;
|
player->kartstuff[k_balloon]--;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
player->kartstuff[k_comebackhits]++;
|
||||||
|
|
||||||
if (source && source->player && player != source->player)
|
if (source && source->player && player != source->player)
|
||||||
{
|
|
||||||
P_AddPlayerScore(source->player, 1);
|
P_AddPlayerScore(source->player, 1);
|
||||||
source->player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
}
|
|
||||||
|
|
||||||
K_CheckBalloons();
|
K_CheckBalloons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player->kartstuff[k_comebacktimer] = comebacktime * (player->kartstuff[k_comebackhits]+1);
|
||||||
|
|
||||||
player->kartstuff[k_squishedtimer] = 1*TICRATE;
|
player->kartstuff[k_squishedtimer] = 1*TICRATE;
|
||||||
|
|
||||||
player->powers[pw_flashing] = flashingtics;
|
player->powers[pw_flashing] = flashingtics;
|
||||||
|
@ -1780,7 +1784,6 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju
|
||||||
|
|
||||||
player->kartstuff[k_mushroomtimer] = 0;
|
player->kartstuff[k_mushroomtimer] = 0;
|
||||||
player->kartstuff[k_driftboost] = 0;
|
player->kartstuff[k_driftboost] = 0;
|
||||||
player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
|
|
||||||
if (gametype != GT_RACE)
|
if (gametype != GT_RACE)
|
||||||
{
|
{
|
||||||
|
@ -1790,16 +1793,17 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju
|
||||||
CONS_Printf(M_GetText("%s lost all of their balloons!\n"), player_names[player-players]);
|
CONS_Printf(M_GetText("%s lost all of their balloons!\n"), player_names[player-players]);
|
||||||
player->kartstuff[k_balloon]--;
|
player->kartstuff[k_balloon]--;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
player->kartstuff[k_comebackhits]++;
|
||||||
|
|
||||||
if (source && source->player && player != source->player)
|
if (source && source->player && player != source->player)
|
||||||
{
|
|
||||||
P_AddPlayerScore(source->player, 1);
|
P_AddPlayerScore(source->player, 1);
|
||||||
source->player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
}
|
|
||||||
|
|
||||||
K_CheckBalloons();
|
K_CheckBalloons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player->kartstuff[k_comebacktimer] = comebacktime * (player->kartstuff[k_comebackhits]+1);
|
||||||
|
|
||||||
player->kartstuff[k_spinouttype] = 1;
|
player->kartstuff[k_spinouttype] = 1;
|
||||||
player->kartstuff[k_spinouttimer] = 2*TICRATE+(TICRATE/2);
|
player->kartstuff[k_spinouttimer] = 2*TICRATE+(TICRATE/2);
|
||||||
player->kartstuff[k_spinout] = player->kartstuff[k_spinouttimer];
|
player->kartstuff[k_spinout] = player->kartstuff[k_spinouttimer];
|
||||||
|
@ -2509,9 +2513,16 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue)
|
||||||
|
|
||||||
static void K_KartDrift(player_t *player, boolean onground)
|
static void K_KartDrift(player_t *player, boolean onground)
|
||||||
{
|
{
|
||||||
|
fixed_t dsone;
|
||||||
|
fixed_t dstwo;
|
||||||
|
|
||||||
// IF YOU CHANGE THESE: MAKE SURE YOU UPDATE THE SAME VALUES IN p_mobjc, "case MT_DRIFT:"
|
// IF YOU CHANGE THESE: MAKE SURE YOU UPDATE THE SAME VALUES IN p_mobjc, "case MT_DRIFT:"
|
||||||
fixed_t dsone = 26*4 + player->kartspeed*2 + (9 - player->kartweight);
|
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0)
|
||||||
fixed_t dstwo = dsone*2;
|
dsone = 26*4 + 2;
|
||||||
|
else
|
||||||
|
dsone = 26*4 + player->kartspeed*2 + (9 - player->kartweight);
|
||||||
|
|
||||||
|
dstwo = dsone*2;
|
||||||
|
|
||||||
// Drifting is actually straffing + automatic turning.
|
// Drifting is actually straffing + automatic turning.
|
||||||
// Holding the Jump button will enable drifting.
|
// Holding the Jump button will enable drifting.
|
||||||
|
@ -3287,23 +3298,38 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_bootimer] == 0)
|
else if (player->kartstuff[k_bootimer] == 0)
|
||||||
{
|
{
|
||||||
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // dead in match? you da bomb
|
player->mo->flags2 &= ~MF2_DONTDRAW;
|
||||||
{
|
}
|
||||||
K_StripItems(player);
|
|
||||||
if (player->kartstuff[k_comebacktimer] > 0)
|
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // dead in match? you da bomb
|
||||||
{
|
{
|
||||||
if (leveltime & 1)
|
K_StripItems(player);
|
||||||
player->mo->flags2 |= MF2_DONTDRAW;
|
player->mo->flags2 |= MF2_SHADOW;
|
||||||
else
|
|
||||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
|
||||||
|
|
||||||
player->powers[pw_flashing] = player->kartstuff[k_comebacktimer];
|
if (!(player->mo->tracer))
|
||||||
}
|
player->mo->tracer = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_OVERLAY);
|
||||||
|
|
||||||
|
P_SetTarget(&player->mo->tracer->target, player->mo);
|
||||||
|
P_SetMobjState(player->mo->tracer, S_PLAYERBOMB);
|
||||||
|
player->mo->tracer->color = player->mo->color;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_comebacktimer] > 0)
|
||||||
|
{
|
||||||
|
if (leveltime & 1)
|
||||||
|
player->mo->tracer->flags2 |= MF2_DONTDRAW;
|
||||||
else
|
else
|
||||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
player->mo->tracer->flags2 &= ~MF2_DONTDRAW;
|
||||||
|
|
||||||
|
player->powers[pw_flashing] = player->kartstuff[k_comebacktimer];
|
||||||
}
|
}
|
||||||
else if (gametype == GT_RACE || player->kartstuff[k_balloon] > 0)
|
else
|
||||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
player->mo->tracer->flags2 &= ~MF2_DONTDRAW;
|
||||||
|
}
|
||||||
|
else if (gametype == GT_RACE || player->kartstuff[k_balloon] > 0)
|
||||||
|
{
|
||||||
|
player->mo->flags2 &= ~MF2_SHADOW;
|
||||||
|
if (player->mo->tracer && player->mo->tracer->state == &states[S_PLAYERBOMB])
|
||||||
|
P_RemoveMobj(player->mo->tracer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3381,6 +3407,11 @@ void K_CheckBalloons(void)
|
||||||
UINT8 numingame = 0;
|
UINT8 numingame = 0;
|
||||||
INT8 winnernum = -1;
|
INT8 winnernum = -1;
|
||||||
|
|
||||||
|
// Quick thing for testing comeback in splitscreen
|
||||||
|
#if 0
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!(multiplayer || netgame))
|
if (!(multiplayer || netgame))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -4236,10 +4267,13 @@ static void K_drawKartSpeedometer(void)
|
||||||
fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fixed_t my)
|
fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fixed_t my)
|
||||||
{
|
{
|
||||||
fixed_t dist, x;
|
fixed_t dist, x;
|
||||||
|
fixed_t range = RING_DIST/4;
|
||||||
angle_t diff;
|
angle_t diff;
|
||||||
|
|
||||||
|
range *= (K_GetKartCC()/50);
|
||||||
|
|
||||||
dist = abs(R_PointToDist2(px, py, mx, my));
|
dist = abs(R_PointToDist2(px, py, mx, my));
|
||||||
if (dist > RING_DIST/4)
|
if (dist > range)
|
||||||
return -320;
|
return -320;
|
||||||
|
|
||||||
diff = R_PointToAngle2(px, py, mx, my) - ang;
|
diff = R_PointToAngle2(px, py, mx, my) - ang;
|
||||||
|
|
44
src/p_map.c
44
src/p_map.c
|
@ -1621,34 +1621,41 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
{
|
{
|
||||||
thing->player->kartstuff[k_justbumped] = 6;
|
thing->player->kartstuff[k_justbumped] = 6;
|
||||||
tmthing->player->kartstuff[k_justbumped] = 6;
|
tmthing->player->kartstuff[k_justbumped] = 6;
|
||||||
|
|
||||||
if (tmthing->player->kartstuff[k_balloon] > 0)
|
if (tmthing->player->kartstuff[k_balloon] > 0)
|
||||||
{
|
{
|
||||||
if (tmthing->player->kartstuff[k_balloon] == 1)
|
if (tmthing->player->kartstuff[k_balloon] == 1)
|
||||||
K_StealBalloon(thing->player, tmthing->player);
|
K_StealBalloon(thing->player, tmthing->player);
|
||||||
thing->player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
K_ExplodePlayer(tmthing->player, thing);
|
K_ExplodePlayer(tmthing->player, thing);
|
||||||
|
|
||||||
|
thing->player->kartstuff[k_comebackhits]++;
|
||||||
|
thing->player->kartstuff[k_comebacktimer] = comebacktime * (thing->player->kartstuff[k_comebackhits]+1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (thing->player->kartstuff[k_balloon] > 0)
|
else if (thing->player->kartstuff[k_balloon] > 0)
|
||||||
{
|
{
|
||||||
if (thing->player->kartstuff[k_balloon] == 1)
|
if (thing->player->kartstuff[k_balloon] == 1)
|
||||||
K_StealBalloon(tmthing->player, thing->player);
|
K_StealBalloon(tmthing->player, thing->player);
|
||||||
tmthing->player->kartstuff[k_comebacktimer] = comebacktime;
|
|
||||||
K_ExplodePlayer(thing->player, thing);
|
K_ExplodePlayer(thing->player, tmthing);
|
||||||
|
|
||||||
|
tmthing->player->kartstuff[k_comebackhits]++;
|
||||||
|
tmthing->player->kartstuff[k_comebacktimer] = comebacktime * (tmthing->player->kartstuff[k_comebackhits]+1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
else if (thing->player->kartstuff[k_balloon] <= 0 && tmthing->player->kartstuff[k_balloon] <= 0)
|
||||||
else
|
|
||||||
{
|
|
||||||
if (thing->player->kartstuff[k_mushroomtimer] && !(tmthing->player->kartstuff[k_mushroomtimer]))
|
|
||||||
{
|
{
|
||||||
K_StealBalloon(thing->player, tmthing->player);
|
K_KartBouncing(tmthing, thing, false);
|
||||||
K_SpinPlayer(tmthing->player, thing);
|
|
||||||
}
|
|
||||||
else if (tmthing->player->kartstuff[k_mushroomtimer] && !(thing->player->kartstuff[k_mushroomtimer]))
|
|
||||||
{
|
|
||||||
K_StealBalloon(tmthing->player, thing->player);
|
|
||||||
K_SpinPlayer(thing->player, tmthing);
|
K_SpinPlayer(thing->player, tmthing);
|
||||||
|
K_SpinPlayer(tmthing->player, thing);
|
||||||
|
|
||||||
|
thing->player->kartstuff[k_comebackhits]++;
|
||||||
|
thing->player->kartstuff[k_comebacktimer] = comebacktime * (thing->player->kartstuff[k_comebackhits]+1);
|
||||||
|
tmthing->player->kartstuff[k_comebackhits]++;
|
||||||
|
tmthing->player->kartstuff[k_comebacktimer] = comebacktime * (tmthing->player->kartstuff[k_comebackhits]+1);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1660,6 +1667,17 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
else
|
else
|
||||||
K_KartBouncing(tmthing, thing, false);
|
K_KartBouncing(tmthing, thing, false);
|
||||||
|
|
||||||
|
if (thing->player->kartstuff[k_mushroomtimer] && !(tmthing->player->kartstuff[k_mushroomtimer]))
|
||||||
|
{
|
||||||
|
K_StealBalloon(thing->player, tmthing->player);
|
||||||
|
K_SpinPlayer(tmthing->player, thing);
|
||||||
|
}
|
||||||
|
else if (tmthing->player->kartstuff[k_mushroomtimer] && !(thing->player->kartstuff[k_mushroomtimer]))
|
||||||
|
{
|
||||||
|
K_StealBalloon(tmthing->player, thing->player);
|
||||||
|
K_SpinPlayer(thing->player, tmthing);
|
||||||
|
}
|
||||||
|
|
||||||
thing->player->kartstuff[k_justbumped] = 6;
|
thing->player->kartstuff[k_justbumped] = 6;
|
||||||
tmthing->player->kartstuff[k_justbumped] = 6;
|
tmthing->player->kartstuff[k_justbumped] = 6;
|
||||||
return true;
|
return true;
|
||||||
|
|
13
src/p_mobj.c
13
src/p_mobj.c
|
@ -6456,8 +6456,16 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
//{ SRB2kart mobs
|
//{ SRB2kart mobs
|
||||||
case MT_DRIFT:
|
case MT_DRIFT:
|
||||||
{
|
{
|
||||||
fixed_t dsone = 26*4 + mobj->target->player->kartspeed*2 + (9 - mobj->target->player->kartweight);
|
fixed_t dsone;
|
||||||
fixed_t dstwo = dsone*2;
|
fixed_t dstwo;
|
||||||
|
|
||||||
|
if (gametype != GT_RACE && mobj->target->player->kartstuff[k_balloon] <= 0)
|
||||||
|
dsone = 26*4 + 2 + (9 - mobj->target->player->kartweight);
|
||||||
|
else
|
||||||
|
dsone = 26*4 + mobj->target->player->kartspeed*2 + (9 - mobj->target->player->kartweight);
|
||||||
|
|
||||||
|
dstwo = dsone*2;
|
||||||
|
|
||||||
if ((mobj->target && mobj->target->player && mobj->target->player->mo && mobj->target->player->health > 0 && !mobj->target->player->spectator)
|
if ((mobj->target && mobj->target->player && mobj->target->player->mo && mobj->target->player->health > 0 && !mobj->target->player->spectator)
|
||||||
&& (mobj->type == MT_DRIFT && mobj->target->player->kartstuff[k_driftcharge] >= dsone))
|
&& (mobj->type == MT_DRIFT && mobj->target->player->kartstuff[k_driftcharge] >= dsone))
|
||||||
{
|
{
|
||||||
|
@ -6696,6 +6704,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
if ((splitscreen || !netgame)
|
if ((splitscreen || !netgame)
|
||||||
|| gametype == GT_RACE
|
|| gametype == GT_RACE
|
||||||
|| mobj->target->player == &players[displayplayer]
|
|| mobj->target->player == &players[displayplayer]
|
||||||
|
|| mobj->target->player->kartstuff[k_balloon] <= 0
|
||||||
|| (mobj->target->player->mo->flags2 & MF2_DONTDRAW))
|
|| (mobj->target->player->mo->flags2 & MF2_DONTDRAW))
|
||||||
mobj->flags2 |= MF2_DONTDRAW;
|
mobj->flags2 |= MF2_DONTDRAW;
|
||||||
else
|
else
|
||||||
|
|
|
@ -8694,7 +8694,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make player translucent if camera is too close (only in single player).
|
// Make player translucent if camera is too close (only in single player).
|
||||||
if (!(multiplayer || netgame) && !splitscreen)
|
/*if (!(multiplayer || netgame) && !splitscreen)
|
||||||
{
|
{
|
||||||
fixed_t vx = 0, vy = 0;
|
fixed_t vx = 0, vy = 0;
|
||||||
if (player->awayviewtics) {
|
if (player->awayviewtics) {
|
||||||
|
@ -8713,7 +8713,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
player->mo->flags2 &= ~MF2_SHADOW;
|
player->mo->flags2 &= ~MF2_SHADOW;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
player->mo->flags2 &= ~MF2_SHADOW;
|
player->mo->flags2 &= ~MF2_SHADOW;*/
|
||||||
|
|
||||||
/* if (!resetcalled && (player->pflags & PF_NIGHTSMODE && player->exiting))
|
/* if (!resetcalled && (player->pflags & PF_NIGHTSMODE && player->exiting))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue