]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/client.qc
Merged master
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / client.qc
index 400d4b5b8e0c199646ab9436825e9335ebbb0931..513a79678075668f3753857df65fd0716ee1a961 100644 (file)
@@ -267,7 +267,9 @@ void PutObserverInServer(entity this)
        if (mutator_returnvalue) {
            // mutator prevents resetting teams+score
        } else {
+               int oldteam = this.team;
                this.team = -1;  // move this as it is needed to log the player spectating in eventlog
+               MUTATOR_CALLHOOK(Player_ChangedTeam, this, oldteam, this.team);
         this.frags = FRAGS_SPECTATOR;
         PlayerScore_Clear(this);  // clear scores when needed
     }
@@ -501,7 +503,7 @@ void PutPlayerInServer(entity this)
 
        TRANSMUTE(Player, this);
 
-       this.wasplayer = true;
+       CS(this).wasplayer = true;
        this.iscreature = true;
        this.teleportable = TELEPORT_NORMAL;
        if(!this.damagedbycontents)
@@ -578,7 +580,7 @@ void PutPlayerInServer(entity this)
        setthink(this, func_null); // players have no think function
        this.nextthink = 0;
        this.dmg_team = 0;
-       this.ballistics_density = autocvar_g_ballistics_density_player;
+       PS(this).ballistics_density = autocvar_g_ballistics_density_player;
 
        this.deadflag = DEAD_NO;
 
@@ -891,8 +893,10 @@ void ClientKill_Now(entity this)
        if(CS(this).killindicator_teamchange)
                ClientKill_Now_TeamChange(this);
 
-       if(!IS_SPEC(this) && !IS_OBSERVER(this))
+       if (!IS_SPEC(this) && !IS_OBSERVER(this) && MUTATOR_CALLHOOK(ClientKill_Now, this) == false)
+       {
                Damage(this, this, this, 100000, DEATH_KILL.m_id, this.origin, '0 0 0');
+       }
 
        // now I am sure the player IS dead
 }
@@ -1957,7 +1961,7 @@ void ShowRespawnCountdown(entity this)
 .bool team_selected;
 bool ShowTeamSelection(entity this)
 {
-       if(!teamplay || autocvar_g_campaign || autocvar_g_balance_teams || this.team_selected || (this.wasplayer && autocvar_g_changeteam_banned) || this.team_forced > 0)
+       if(!teamplay || autocvar_g_campaign || autocvar_g_balance_teams || this.team_selected || (CS(this).wasplayer && autocvar_g_changeteam_banned) || this.team_forced > 0)
                return false;
        stuffcmd(this, "menu_showteamselect\n");
        return true;