X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fstate.qc;h=f117340ed948971560eaaffc383c2e7b27d57a92;hb=c859a2a87cbeb3dd30f402782cf7e59d132b1b81;hp=37813ef716c0bd5f393bc45a1f2fad39036e7b0b;hpb=69eda62d02bc02ff50547bad514af3f7ce487413;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/state.qc b/qcsrc/common/state.qc index 37813ef71..f117340ed 100644 --- a/qcsrc/common/state.qc +++ b/qcsrc/common/state.qc @@ -1,13 +1,18 @@ #include "state.qh" -void Inventory_new(entity this); +#include + +void Inventory_new(PlayerState this); void Inventory_delete(entity this); void PlayerState_attach(entity this) { + if (PS(this) && PS(this).m_client == this) + return; + this._ps = NEW(PlayerState, this); - Inventory_new(this); + Inventory_new(PS(this)); } void PlayerState_detach(entity this) @@ -18,14 +23,12 @@ void PlayerState_detach(entity this) if (ps.m_client != this) return; // don't own state, spectator ps.ps_push(ps, this); + Inventory_delete(ps); FOREACH_CLIENT(PS(it) == ps, { PS(it) = NULL; }); delete(ps); - - Inventory_delete(this); } -void GetCvars(entity this, entity store, int); void DecodeLevelParms(entity this); void PlayerScore_Attach(entity this); void ClientData_Attach(entity this); @@ -39,8 +42,6 @@ void ClientState_attach(entity this) { this._cs = NEW(ClientState, this); - GetCvars(this, CS(this), 0); // get other cvars from player - // TODO: fold all of these into ClientState DecodeLevelParms(this); @@ -52,8 +53,6 @@ void ClientState_attach(entity this) entcs_attach(this); anticheat_init(this); W_HitPlotOpen(this); - - bot_clientconnect(this); } void bot_clientdisconnect(entity this); @@ -71,12 +70,11 @@ void ClientState_detach(entity this) PlayerScore_Detach(this); // what ^they^ said W_HitPlotClose(this); ClientData_Detach(this); + entcs_detach(this); delete(CS(this)); this._cs = NULL; - bot_clientdisconnect(this); anticheat_report_to_eventlog(this); - entcs_detach(this); }