]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/mutator/gamemode_race.qc
Purge self from the damage/death mutator hooks
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator / gamemode_race.qc
index 7b769e29ff152f193fd1573c09697da7dede3dd6..c3be9b247e29ef7db104d86983ffe13fe8b80a5c 100644 (file)
@@ -246,7 +246,7 @@ MUTATOR_HOOKFUNCTION(rc, reset_map_global)
 
 MUTATOR_HOOKFUNCTION(rc, ClientConnect)
 {SELFPARAM();
-       race_PreparePlayer();
+       race_PreparePlayer(this);
        self.race_checkpoint = -1;
 
        string rr = RACE_RECORD;
@@ -279,44 +279,51 @@ MUTATOR_HOOKFUNCTION(rc, MakePlayerObserver)
        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;