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);
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);
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;
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);
}