X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Frace.qc;h=94f3100a40cb7bd76d9d4f710d5e98586e3573c8;hp=eab7017d1cb877ccc78e15c57c5849503f76fa55;hb=437d67dbc7631d6c49e922990d96461d3ff4b7b2;hpb=3cc2f37092129be173109ef4c47d765945e94b7a diff --git a/qcsrc/server/race.qc b/qcsrc/server/race.qc index eab7017d1..94f3100a4 100644 --- a/qcsrc/server/race.qc +++ b/qcsrc/server/race.qc @@ -1,5 +1,4 @@ #include "race.qh" -#include "_all.qh" #include "cl_client.qh" #include "portals.qh" @@ -8,10 +7,13 @@ #include "bot/waypoints.qh" #include "bot/navigation.qh" #include "command/getreplies.qh" -#include "../common/deathtypes.qh" +#include "../common/deathtypes/all.qh" #include "../common/notifications.qh" #include "../common/mapinfo.qh" -#include "../warpzonelib/util_server.qh" +#include "../common/triggers/subs.qh" +#include "../lib/warpzone/util_server.qh" +#include "../lib/warpzone/common.qh" +#include "../common/mutators/mutator/waypoints/waypointsprites.qh" void W_Porto_Fail(float failhard); @@ -86,7 +88,7 @@ string race_readName(string map, float pos) const float MAX_CHECKPOINTS = 255; -void spawnfunc_target_checkpoint(); +spawnfunc(target_checkpoint); .float race_penalty; .float race_penalty_accumulator; @@ -548,28 +550,28 @@ void dumpsurface(entity e) { float n, si, ni; vector norm, vec; - print("Surfaces of ", etos(e), ":\n"); + LOG_INFO("Surfaces of ", etos(e), ":\n"); - print("TEST = ", ftos(getsurfacenearpoint(e, '0 0 0')), "\n"); + LOG_INFO("TEST = ", ftos(getsurfacenearpoint(e, '0 0 0')), "\n"); for(si = 0; ; ++si) { n = getsurfacenumpoints(e, si); if(n <= 0) break; - print(" Surface ", ftos(si), ":\n"); + LOG_INFO(" Surface ", ftos(si), ":\n"); norm = getsurfacenormal(e, si); - print(" Normal = ", vtos(norm), "\n"); + LOG_INFO(" Normal = ", vtos(norm), "\n"); for(ni = 0; ni < n; ++ni) { vec = getsurfacepoint(e, si, ni); - print(" Point ", ftos(ni), " = ", vtos(vec), " (", ftos(norm * vec), ")\n"); + LOG_INFO(" Point ", ftos(ni), " = ", vtos(vec), " (", ftos(norm * vec), ")\n"); } } } void checkpoint_passed() -{ +{SELFPARAM(); string oldmsg; entity cp; @@ -577,7 +579,7 @@ void checkpoint_passed() { // do not allow portalling through checkpoints trace_plane_normal = normalize(-1 * other.velocity); - self = other; + setself(other); W_Porto_Fail(0); return; } @@ -704,7 +706,7 @@ void checkpoint_passed() else { if(self.spawnflags & 4) - Damage (other, self, self, 10000, DEATH_HURTTRIGGER, other.origin, '0 0 0'); + Damage (other, self, self, 10000, DEATH_HURTTRIGGER.m_id, other.origin, '0 0 0'); } } @@ -724,7 +726,7 @@ void checkpoint_use() } float race_waypointsprite_visible_for_player(entity e) -{ +{SELFPARAM(); if(e.race_checkpoint == -1 || self.owner.race_checkpoint == -2) return true; else if(e.race_checkpoint == self.owner.race_checkpoint) @@ -735,8 +737,8 @@ float race_waypointsprite_visible_for_player(entity e) float have_verified; void trigger_race_checkpoint_verify() -{ - entity oldself, cp; +{SELFPARAM(); + entity cp; float i, p; float qual; @@ -746,8 +748,7 @@ void trigger_race_checkpoint_verify() qual = g_race_qualifying; - oldself = self; - self = spawn(); + setself(spawn()); self.classname = "player"; if(g_race) @@ -895,11 +896,11 @@ void trigger_race_checkpoint_verify() } } remove(self); - self = oldself; + setself(this); } vector trigger_race_checkpoint_spawn_evalfunc(entity player, entity spot, vector current) -{ +{SELFPARAM(); if(g_race_qualifying) { // spawn at first @@ -930,7 +931,7 @@ vector trigger_race_checkpoint_spawn_evalfunc(entity player, entity spot, vector return current; } -void spawnfunc_trigger_race_checkpoint() +spawnfunc(trigger_race_checkpoint) { vector o; if(!g_race && !g_cts) { remove(self); return; } @@ -978,7 +979,7 @@ void spawnfunc_trigger_race_checkpoint() InitializeEntity(self, trigger_race_checkpoint_verify, INITPRIO_FINDTARGET); } -void spawnfunc_target_checkpoint() // defrag entity +spawnfunc(target_checkpoint) // defrag entity { vector o; if(!g_race && !g_cts) { remove(self); return; } @@ -1019,8 +1020,8 @@ void spawnfunc_target_checkpoint() // defrag entity InitializeEntity(self, trigger_race_checkpoint_verify, INITPRIO_FINDTARGET); } -void spawnfunc_target_startTimer() { spawnfunc_target_checkpoint(); } -void spawnfunc_target_stopTimer() { spawnfunc_target_checkpoint(); } +spawnfunc(target_startTimer) { spawnfunc_target_checkpoint(this); } +spawnfunc(target_stopTimer) { spawnfunc_target_checkpoint(this); } void race_AbandonRaceCheck(entity p) { @@ -1043,7 +1044,7 @@ void race_StartCompleting() } void race_PreparePlayer() -{ +{SELFPARAM(); race_ClearTime(self); self.race_place = 0; self.race_started = 0; @@ -1052,7 +1053,7 @@ void race_PreparePlayer() } void race_RetractPlayer() -{ +{SELFPARAM(); if(!g_race && !g_cts) return; if(self.race_respawn_checkpoint == 0 || self.race_respawn_checkpoint == race_timed_checkpoint) @@ -1060,11 +1061,11 @@ void race_RetractPlayer() self.race_checkpoint = self.race_respawn_checkpoint; } -void spawnfunc_info_player_race (void) +spawnfunc(info_player_race) { if(!g_race && !g_cts) { remove(self); return; } ++race_spawns; - spawnfunc_info_player_deathmatch(); + spawnfunc_info_player_deathmatch(this); if(self.race_place > race_highest_place_spawn) race_highest_place_spawn = self.race_place; @@ -1073,9 +1074,8 @@ void spawnfunc_info_player_race (void) } void race_ClearRecords() -{ +{SELFPARAM(); float i; - entity e; for(i = 0; i < MAX_CHECKPOINTS; ++i) { @@ -1085,15 +1085,13 @@ void race_ClearRecords() race_checkpoint_recordholders[i] = string_null; } - e = self; - FOR_EACH_CLIENT(self) + entity e; + FOR_EACH_CLIENT(e) { - float p; - p = self.race_place; - race_PreparePlayer(); - self.race_place = p; + float p = e.race_place; + WITH(entity, self, e, race_PreparePlayer()); + e.race_place = p; } - self = e; } void race_ImposePenaltyTime(entity pl, float penalty, string reason) @@ -1131,7 +1129,7 @@ void race_ImposePenaltyTime(entity pl, float penalty, string reason) } void penalty_touch() -{ +{SELFPARAM(); EXACTTRIGGER_TOUCH; if(other.race_lastpenalty != self) { @@ -1141,11 +1139,11 @@ void penalty_touch() } void penalty_use() -{ +{SELFPARAM(); race_ImposePenaltyTime(activator, self.race_penalty, self.race_penalty_reason); } -void spawnfunc_trigger_race_penalty() +spawnfunc(trigger_race_penalty) { EXACTTRIGGER_INIT;