mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Auto respawn after 35 tics if distancetofinish jumped too much
This commit is contained in:
parent
b4402a9486
commit
9d4f57ddfb
4 changed files with 26 additions and 0 deletions
|
|
@ -671,6 +671,7 @@ struct player_t
|
||||||
mobj_t *ringShooter; // DEZ respawner object
|
mobj_t *ringShooter; // DEZ respawner object
|
||||||
tic_t airtime; // Used to track just air time, but has evolved over time into a general "karted" timer. Rename this variable?
|
tic_t airtime; // Used to track just air time, but has evolved over time into a general "karted" timer. Rename this variable?
|
||||||
tic_t lastairtime;
|
tic_t lastairtime;
|
||||||
|
UINT8 bigwaypointgap; // timer counts down if finish line distance gap is too big to update waypoint
|
||||||
UINT8 startboost; // (0 to 125) - Boost you get from start of race
|
UINT8 startboost; // (0 to 125) - Boost you get from start of race
|
||||||
UINT8 dropdashboost; // Boost you get when holding A while respawning
|
UINT8 dropdashboost; // Boost you get when holding A while respawning
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5527,6 +5527,11 @@ static void K_DrawWaypointDebugger(void)
|
||||||
put("Cheat Check:", "{} / {}", stplyr->cheatchecknum, numcheatchecks);
|
put("Cheat Check:", "{} / {}", stplyr->cheatchecknum, numcheatchecks);
|
||||||
put("Last Safe Cheat Check:", "{}", stplyr->lastsafecheatcheck);
|
put("Last Safe Cheat Check:", "{}", stplyr->lastsafecheatcheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (stplyr->bigwaypointgap)
|
||||||
|
{
|
||||||
|
put("Auto Respawn Timer:", "{}", stplyr->bigwaypointgap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void K_DrawBotDebugger(void)
|
static void K_DrawBotDebugger(void)
|
||||||
|
|
|
||||||
18
src/k_kart.c
18
src/k_kart.c
|
|
@ -8709,6 +8709,13 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
||||||
K_DoIngameRespawn(player);
|
K_DoIngameRespawn(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player->bigwaypointgap)
|
||||||
|
{
|
||||||
|
player->bigwaypointgap--;
|
||||||
|
if (!player->bigwaypointgap)
|
||||||
|
K_DoIngameRespawn(player);
|
||||||
|
}
|
||||||
|
|
||||||
if (player->tripwireUnstuck && !player->mo->hitlag)
|
if (player->tripwireUnstuck && !player->mo->hitlag)
|
||||||
player->tripwireUnstuck--;
|
player->tripwireUnstuck--;
|
||||||
|
|
||||||
|
|
@ -9874,6 +9881,17 @@ static void K_UpdatePlayerWaypoints(player_t *const player)
|
||||||
player->currentwaypoint = old_currentwaypoint;
|
player->currentwaypoint = old_currentwaypoint;
|
||||||
player->nextwaypoint = old_nextwaypoint;
|
player->nextwaypoint = old_nextwaypoint;
|
||||||
K_UpdateDistanceFromFinishLine(player);
|
K_UpdateDistanceFromFinishLine(player);
|
||||||
|
|
||||||
|
// Start the auto respawn timer when the distance jumps.
|
||||||
|
if (!player->bigwaypointgap)
|
||||||
|
{
|
||||||
|
player->bigwaypointgap = 35;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Reset the auto respawn timer if distance changes are back to normal.
|
||||||
|
player->bigwaypointgap = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Respawn point should only be updated when we're going to a nextwaypoint
|
// Respawn point should only be updated when we're going to a nextwaypoint
|
||||||
|
|
|
||||||
|
|
@ -417,6 +417,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
||||||
WRITEUINT32(save->p, K_GetWaypointHeapIndex(players[i].nextwaypoint));
|
WRITEUINT32(save->p, K_GetWaypointHeapIndex(players[i].nextwaypoint));
|
||||||
WRITEUINT32(save->p, players[i].airtime);
|
WRITEUINT32(save->p, players[i].airtime);
|
||||||
WRITEUINT32(save->p, players[i].lastairtime);
|
WRITEUINT32(save->p, players[i].lastairtime);
|
||||||
|
WRITEUINT8(save->p, players[i].bigwaypointgap);
|
||||||
WRITEUINT8(save->p, players[i].startboost);
|
WRITEUINT8(save->p, players[i].startboost);
|
||||||
WRITEUINT8(save->p, players[i].dropdashboost);
|
WRITEUINT8(save->p, players[i].dropdashboost);
|
||||||
|
|
||||||
|
|
@ -996,6 +997,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
||||||
players[i].nextwaypoint = (waypoint_t *)(size_t)READUINT32(save->p);
|
players[i].nextwaypoint = (waypoint_t *)(size_t)READUINT32(save->p);
|
||||||
players[i].airtime = READUINT32(save->p);
|
players[i].airtime = READUINT32(save->p);
|
||||||
players[i].lastairtime = READUINT32(save->p);
|
players[i].lastairtime = READUINT32(save->p);
|
||||||
|
players[i].bigwaypointgap = READUINT8(save->p);
|
||||||
players[i].startboost = READUINT8(save->p);
|
players[i].startboost = READUINT8(save->p);
|
||||||
players[i].dropdashboost = READUINT8(save->p);
|
players[i].dropdashboost = READUINT8(save->p);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue