MUTATOR_HOOKFUNCTION(rc, ClientConnect)
{SELFPARAM();
- race_PreparePlayer();
+ race_PreparePlayer(this);
self.race_checkpoint = -1;
string rr = RACE_RECORD;
else
self.frags = FRAGS_SPECTATOR;
- race_PreparePlayer();
+ race_PreparePlayer(this);
self.race_checkpoint = -1;
return false;
}
MUTATOR_HOOKFUNCTION(rc, PlayerSpawn)
-{SELFPARAM();
+{
+ entity player = M_ARGV(0, entity);
+ entity spawn_spot = M_ARGV(1, entity);
+
if(spawn_spot.target == "")
// Emergency: this wasn't a real spawnpoint. Can this ever happen?
- race_PreparePlayer();
+ race_PreparePlayer(player);
// if we need to respawn, do it right
- self.race_respawn_checkpoint = self.race_checkpoint;
- self.race_respawn_spotref = spawn_spot;
+ player.race_respawn_checkpoint = player.race_checkpoint;
+ player.race_respawn_spotref = spawn_spot;
- self.race_place = 0;
+ player.race_place = 0;
return false;
}
MUTATOR_HOOKFUNCTION(rc, PutClientInServer)
-{SELFPARAM();
- if(IS_PLAYER(self))
+{
+ entity player = M_ARGV(0, entity);
+
+ if(IS_PLAYER(player))
if(!gameover)
{
- if(self.killcount == FRAGS_SPECTATOR /* initial spawn */ || g_race_qualifying) // spawn
- race_PreparePlayer();
+ if(player.killcount == FRAGS_SPECTATOR /* initial spawn */ || g_race_qualifying) // spawn
+ race_PreparePlayer(player);
else // respawn
- race_RetractPlayer();
+ race_RetractPlayer(player);
- race_AbandonRaceCheck(self);
+ race_AbandonRaceCheck(player);
}
return false;
}
MUTATOR_HOOKFUNCTION(rc, PlayerDies)
{
+ entity frag_target = M_ARGV(2, entity);
+
frag_target.respawn_flags |= RESPAWN_FORCE;
race_AbandonRaceCheck(frag_target);
return false;
{
if(!g_race_qualifying)
{
- ret_float = WinningCondition_QualifyingThenRace(checkrules_fraglimit);
+ ret_float = WinningCondition_Race(checkrules_fraglimit);
return true;
}
else if(g_race_qualifying == 2)
qualifying_override = autocvar_g_race_qualifying_timelimit_override;
fraglimit_override = autocvar_g_race_laps_limit;
leadlimit_override = 0; // currently not supported by race
- timelimit_override = -1; // use default if we don't set it below
+ timelimit_override = autocvar_timelimit_override;
- // we need to find out the correct value for g_race_qualifying
float want_qualifying = ((qualifying_override >= 0) ? qualifying_override : autocvar_g_race_qualifying_timelimit) > 0;
if(autocvar_g_campaign)
g_race_qualifying = 1;
independent_players = 1;
}
- else if(!autocvar_g_campaign && want_qualifying)
+ else if(want_qualifying)
{
g_race_qualifying = 2;
independent_players = 1;
- race_fraglimit = (race_fraglimit >= 0) ? fraglimit_override : autocvar_fraglimit;
- race_leadlimit = (race_leadlimit >= 0) ? leadlimit_override : autocvar_leadlimit;
- race_timelimit = (race_timelimit >= 0) ? timelimit_override : autocvar_timelimit;
+ race_fraglimit = (fraglimit_override >= 0) ? fraglimit_override : autocvar_fraglimit;
+ race_leadlimit = (leadlimit_override >= 0) ? leadlimit_override : autocvar_leadlimit;
+ race_timelimit = (timelimit_override >= 0) ? timelimit_override : autocvar_timelimit;
+ qualifying_override = (qualifying_override >= 0) ? qualifying_override : autocvar_g_race_qualifying_timelimit;
fraglimit_override = 0;
leadlimit_override = 0;
- timelimit_override = autocvar_g_race_qualifying_timelimit;
+ timelimit_override = qualifying_override;
}
else
g_race_qualifying = 0;
-
SetLimits(fraglimit_override, leadlimit_override, timelimit_override, qualifying_override);
}