]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/state.qc
Some optimizations to client side items and spawn points
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / state.qc
index eaa96892f64aba3e9e1cb38f5b2e34af51358ed3..d3fd1d3bf41d80f70200330b5e336a7dc31e248c 100644 (file)
@@ -16,12 +16,9 @@ void PlayerState_detach(entity this)
        if (!ps) return;  // initial connect
        PS(this) = NULL;
 
-       ps.m_switchweapon = WEP_Null;
-       ps.m_weapon = WEP_Null;
-       ps.m_switchingweapon = WEP_Null;
+       if (ps.m_client != this) return;  // don't own state, spectator
        ps.ps_push(ps, this);
 
-       if (ps.m_client != this) return;  // don't own state, spectator
        FOREACH_CLIENT(PS(it) == ps, { PS(it) = NULL; });
        delete(ps);
 
@@ -63,7 +60,7 @@ void ClientState_attach(entity this)
 
 void bot_clientdisconnect(entity this);
 void W_HitPlotClose(entity this);
-void anticheat_report(entity this);
+void anticheat_report_to_eventlog(entity this);
 void playerdemo_shutdown(entity this);
 void entcs_detach(entity this);
 void accuracy_free(entity this);
@@ -72,6 +69,10 @@ void PlayerScore_Detach(entity this);
 
 void ClientState_detach(entity this)
 {
+    accuracy_free(this); // TODO: needs to be before CS() is deleted!
+    PlayerScore_Detach(this); // what ^they^ said
+    W_HitPlotClose(this);
+    ClientData_Detach(this);
        delete(CS(this));
        this._cs = NULL;
 
@@ -79,11 +80,7 @@ void ClientState_detach(entity this)
 
     bot_clientdisconnect(this);
 
-    W_HitPlotClose(this);
-    anticheat_report(this);
+    anticheat_report_to_eventlog(this);
     playerdemo_shutdown(this);
     entcs_detach(this);
-    accuracy_free(this);
-    ClientData_Detach(this);
-    PlayerScore_Detach(this);
 }