mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
K_StartCeremony: Directly modify spectator status for bots as early as possible
The problem with bots randomly going towards the same spot in podium was... - If you failed a Sealed Star, K_UpdateGrandPrixBots wouldn't make the puppies non-spectators - P_SpawnPlayer catches the spectator status... - ...but it's in a loop that calls K_GetPodiumPosition... - ...which ignores spectators... - ...which means this is too late to catch it, so we simply have to do it earlier. Also short circuits P_SpawnPlayer's and K_UpdateGrandPrixBot's attempts to set so the author of this commit can be certain what is being done is correct
This commit is contained in:
parent
8240dbe4e6
commit
5e76ea6f8f
3 changed files with 15 additions and 4 deletions
|
|
@ -17,6 +17,7 @@
|
||||||
#include "g_game.h"
|
#include "g_game.h"
|
||||||
#include "k_bot.h"
|
#include "k_bot.h"
|
||||||
#include "k_kart.h"
|
#include "k_kart.h"
|
||||||
|
#include "k_podium.h"
|
||||||
#include "m_random.h"
|
#include "m_random.h"
|
||||||
#include "p_local.h"
|
#include "p_local.h"
|
||||||
#include "r_things.h"
|
#include "r_things.h"
|
||||||
|
|
@ -326,6 +327,9 @@ void K_UpdateGrandPrixBots(void)
|
||||||
UINT16 newrivalscore = 0;
|
UINT16 newrivalscore = 0;
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
|
|
||||||
|
if (K_PodiumSequence())
|
||||||
|
return;
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
if (!playeringame[i] || !players[i].bot)
|
if (!playeringame[i] || !players[i].bot)
|
||||||
|
|
|
||||||
|
|
@ -258,9 +258,13 @@ boolean K_StartCeremony(void)
|
||||||
// and be present for the podium
|
// and be present for the podium
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
if (playeringame[i] && !players[i].spectator && !players[i].bot)
|
if (playeringame[i])
|
||||||
{
|
{
|
||||||
players[i].lives = max(1, players[i].lives);
|
if (players[i].lives < 1)
|
||||||
|
players[i].lives = 1;
|
||||||
|
|
||||||
|
if (players[i].bot)
|
||||||
|
players[i].spectator = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11645,8 +11645,11 @@ void P_SpawnPlayer(INT32 playernum)
|
||||||
}
|
}
|
||||||
else if (p->bot)
|
else if (p->bot)
|
||||||
{
|
{
|
||||||
if (K_PodiumSequence() == false
|
if (K_PodiumSequence() == true)
|
||||||
&& (!(gametyperules & GTR_BOTS) || (grandprixinfo.gp == true && grandprixinfo.eventmode != GPEVENT_NONE)))
|
; // This is too late to correct spectator status. Whatever state we're in at this point, our (dog) bed is made.
|
||||||
|
else if (!(gametyperules & GTR_BOTS)
|
||||||
|
|| (grandprixinfo.gp == true
|
||||||
|
&& grandprixinfo.eventmode != GPEVENT_NONE))
|
||||||
{
|
{
|
||||||
// Bots aren't supposed to be here.
|
// Bots aren't supposed to be here.
|
||||||
p->spectator = true;
|
p->spectator = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue