#include "../lib/warpzone/common.qh"
#include "../common/mutators/mutator/waypoints/waypointsprites.qh"
+void race_InitSpectator()
+{
+ if(g_race_qualifying)
+ if(msg_entity.enemy.race_laptime)
+ race_SendNextCheckpoint(msg_entity.enemy, 1);
+}
+
void W_Porto_Fail(float failhard);
float race_readTime(string map, float pos)
if(!spec)
msg_entity = e;
- WRITESPECTATABLE_MSG_ONE({
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(MSG_ONE, TE_CSQC_RACE);
if(spec)
{
else
msg = MSG_ALL;
msg_entity = e;
- WRITESPECTATABLE_MSG_ONE_VARNAME(dummy3, {
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(msg, TE_CSQC_RACE);
WriteByte(msg, RACE_NET_SERVER_STATUS);
WriteShort(msg, id);
void race_SendTime(entity e, float cp, float t, float tvalid)
{
float snew, l;
- entity p;
if(g_race_qualifying)
t += e.race_penalty_accumulator;
race_checkpoint_recordholders[cp] = strzone(e.netname);
if(g_race_qualifying)
{
- FOR_EACH_REALPLAYER(p)
- if(p.race_checkpoint == cp)
- race_SendNextCheckpoint(p, 0);
+ FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it) && it.race_checkpoint == cp, LAMBDA(race_SendNextCheckpoint(it, 0)));
}
}
}
msg_entity = e;
if(g_race_qualifying)
{
- WRITESPECTATABLE_MSG_ONE_VARNAME(dummy1, {
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(MSG_ONE, TE_CSQC_RACE);
WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_QUALIFYING);
WriteByte(MSG_ONE, race_CheckpointNetworkID(cp)); // checkpoint the player now is at
if(IS_REAL_CLIENT(e))
{
msg_entity = e;
- WRITESPECTATABLE_MSG_ONE_VARNAME(dummy2, {
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(MSG_ONE, TE_CSQC_RACE);
WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_RACE);
WriteByte(MSG_ONE, race_CheckpointNetworkID(cp)); // checkpoint the player now is at
if(IS_REAL_CLIENT(oth))
{
msg_entity = oth;
- WRITESPECTATABLE_MSG_ONE_VARNAME(dummy3, {
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(MSG_ONE, TE_CSQC_RACE);
WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_RACE_BY_OPPONENT);
WriteByte(MSG_ONE, race_CheckpointNetworkID(cp)); // checkpoint the player now is at
return;
msg_entity = e;
- WRITESPECTATABLE_MSG_ONE({
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(MSG_ONE, TE_CSQC_RACE);
WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_CLEAR); // next
});
other.race_checkpoint = race_NextCheckpoint(self.race_checkpoint);
other.race_started = 1;
- race_SendTime(other, self.race_checkpoint, other.race_movetime, !!other.race_laptime);
+ race_SendTime(other, self.race_checkpoint, other.race_movetime, boolean(other.race_laptime));
if(!self.race_checkpoint) // start line
{
self.touch = checkpoint_touch;
o = (self.absmin + self.absmax) * 0.5;
- tracebox(o, PL_MIN, PL_MAX, o - '0 0 1' * (o.z - self.absmin.z), MOVE_NORMAL, self);
+ tracebox(o, STAT(PL_MIN, NULL), STAT(PL_MAX, NULL), o - '0 0 1' * (o.z - self.absmin.z), MOVE_NORMAL, self);
waypoint_spawnforitem_force(self, trace_endpos);
self.nearestwaypointtimeout = time + 1000000000;
self.touch = checkpoint_touch;
o = (self.absmin + self.absmax) * 0.5;
- tracebox(o, PL_MIN, PL_MAX, o - '0 0 1' * (o.z - self.absmin.z), MOVE_NORMAL, self);
+ tracebox(o, STAT(PL_MIN, NULL), STAT(PL_MAX, NULL), o - '0 0 1' * (o.z - self.absmin.z), MOVE_NORMAL, self);
waypoint_spawnforitem_force(self, trace_endpos);
self.nearestwaypointtimeout = time + 1000000000;
void race_StartCompleting()
{
- entity p;
race_completing = 1;
- FOR_EACH_PLAYER(p)
- if(p.deadflag != DEAD_NO)
- race_AbandonRaceCheck(p);
+ FOREACH_CLIENT(IS_PLAYER(it) && IS_DEAD(it), LAMBDA(race_AbandonRaceCheck(it)));
}
void race_PreparePlayer()
race_checkpoint_recordholders[i] = string_null;
}
- entity e;
- FOR_EACH_CLIENT(e)
- {
- float p = e.race_place;
- WITH(entity, self, e, race_PreparePlayer());
- e.race_place = p;
- }
+ FOREACH_CLIENT(true, LAMBDA(
+ float p = it.race_place;
+ WITH(entity, self, it, race_PreparePlayer());
+ it.race_place = p;
+ ));
}
void race_ImposePenaltyTime(entity pl, float penalty, string reason)
if(IS_REAL_CLIENT(pl))
{
msg_entity = pl;
- WRITESPECTATABLE_MSG_ONE({
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(MSG_ONE, TE_CSQC_RACE);
WriteByte(MSG_ONE, RACE_NET_PENALTY_QUALIFYING);
WriteShort(MSG_ONE, TIME_ENCODE(penalty));
if(IS_REAL_CLIENT(pl))
{
msg_entity = pl;
- WRITESPECTATABLE_MSG_ONE_VARNAME(dummy, {
+ WRITESPECTATABLE_MSG_ONE(msg_entity, {
WriteHeader(MSG_ONE, TE_CSQC_RACE);
WriteByte(MSG_ONE, RACE_NET_PENALTY_RACE);
WriteShort(MSG_ONE, TIME_ENCODE(penalty));