]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/cl_client.qc
Merge branch 'master' into terencehill/dynamic_hud
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_client.qc
index 6b99bc4a5cdb74647bc4104c3e07a57e1e5dbccc..c157530fa7d39b9cbbb1e7597ce03aba5db0aa58 100644 (file)
@@ -68,7 +68,8 @@ void ClientDisconnect();
 STATIC_METHOD(Client, Remove, void(Client this))
 {
     TRANSMUTE(Observer, this);
-    WITHSELF(this, PutClientInServer(); ClientDisconnect());
+    WITHSELF(this, PutClientInServer());
+    WITHSELF(this, ClientDisconnect());
 }
 
 void send_CSQC_teamnagger() {
@@ -370,6 +371,19 @@ void FixPlayermodel(entity player)
                        defaultmodel = substring(defaultmodel, 0, i);
                }
        }
+       if(autocvar_sv_defaultcharacterskin && !defaultskin)
+       {
+               if(teamplay)
+               {
+                       string s = Static_Team_ColorName_Lower(player.team);
+                       if (s != "neutral")
+                               defaultskin = cvar(strcat("sv_defaultplayerskin_", s));
+               }
+
+               if(!defaultskin)
+                       defaultskin = autocvar_sv_defaultplayerskin;
+       }
+
        MUTATOR_CALLHOOK(FixPlayermodel, defaultmodel, defaultskin);
        defaultmodel = ret_string;
        defaultskin = ret_int;
@@ -400,8 +414,16 @@ void FixPlayermodel(entity player)
                        chmdl = true;
                }
 
-               oldskin = player.skin;
-               player.skin = stof(player.playerskin);
+               if(!autocvar_sv_defaultcharacterskin)
+               {
+                       oldskin = player.skin;
+                       player.skin = stof(player.playerskin);
+               }
+               else
+               {
+                       oldskin = player.skin;
+                       player.skin = defaultskin;
+               }
        }
 
        if(chmdl || oldskin != player.skin) // model or skin has changed
@@ -568,7 +590,8 @@ void PutClientInServer()
                this.oldorigin = this.origin;
                this.prevorigin = this.origin;
                this.lastteleporttime = time; // prevent insane speeds due to changing origin
-        this.hud = HUD_NORMAL;
+               this.conveyor = NULL; // prevent conveyors at the previous location from moving a freshly spawned player
+               this.hud = HUD_NORMAL;
 
                this.event_damage = PlayerDamage;
 
@@ -606,9 +629,7 @@ void PutClientInServer()
                {
                        string s = spot.target;
                        spot.target = string_null;
-                       WITH(entity, activator, this, LAMBDA(
-                               WITHSELF(spot, SUB_UseTargets())
-                       ));
+                       SUB_UseTargets(spot, this, NULL);
                        spot.target = s;
                }