X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fstate.qc;h=891461c6a4dd24f92886c1c89522af11e67f2093;hb=c17146a306030f59d8b161e5f0f7f1f561f3d340;hp=1d96923ed0fe314b643e8dd510421c5615b34476;hpb=f7a93f120afe7c93a10854ed186b95d7773f8bbf;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/state.qc b/qcsrc/common/state.qc index 1d96923ed..891461c6a 100644 --- a/qcsrc/common/state.qc +++ b/qcsrc/common/state.qc @@ -15,9 +15,15 @@ void PlayerState_detach(entity this) PlayerState ps = PS(this); if (!ps) return; // initial connect PS(this) = NULL; + if (ps.m_client != this) return; // don't own state, spectator + ps.m_switchweapon = WEP_Null; + ps.m_weapon = WEP_Null; + ps.m_switchingweapon = WEP_Null; + ps.ps_push(ps, this); + FOREACH_CLIENT(PS(it) == ps, { PS(it) = NULL; }); - remove(ps); + delete(ps); Inventory_delete(this); } @@ -39,13 +45,12 @@ void ClientState_attach(entity this) GetCvars(this, 0); // get other cvars from player - if (IS_REAL_CLIENT(this)) { PlayerStats_PlayerBasic_CheckUpdate(this); } - // TODO: fold all of these into ClientState DecodeLevelParms(this); PlayerScore_Attach(this); + PlayerStats_PlayerBasic_CheckUpdate(this); ClientData_Attach(this); accuracy_init(this); entcs_attach(this); @@ -59,7 +64,7 @@ void ClientState_attach(entity this) void bot_clientdisconnect(entity this); void W_HitPlotClose(entity this); void anticheat_report(entity this); -void playerdemo_shutdown(); +void playerdemo_shutdown(entity this); void entcs_detach(entity this); void accuracy_free(entity this); void ClientData_Detach(entity this); @@ -67,7 +72,7 @@ void PlayerScore_Detach(entity this); void ClientState_detach(entity this) { - remove(CS(this)); + delete(CS(this)); this._cs = NULL; GetCvars(this, -1); // free cvars @@ -76,9 +81,9 @@ void ClientState_detach(entity this) W_HitPlotClose(this); anticheat_report(this); - playerdemo_shutdown(); + playerdemo_shutdown(this); entcs_detach(this); - accuracy_free(self); + accuracy_free(this); ClientData_Detach(this); - PlayerScore_Detach(self); + PlayerScore_Detach(this); }