X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fcasings.qc;h=70ed9f4b07d74b597a39d67968bf99bdba7cd807;hb=d719b4d3b3edb3a675c121c5942ede0d92cd1ceb;hp=269f93087d77a7b996e001cdaa29d77715865d3d;hpb=8336dd123d142283c8e6199589d64c53fcde8388;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/casings.qc b/qcsrc/client/casings.qc index 269f93087..70ed9f4b0 100644 --- a/qcsrc/client/casings.qc +++ b/qcsrc/client/casings.qc @@ -15,6 +15,8 @@ void Casing_Draw() } Movetype_Physics_MatchTicrate(autocvar_cl_casings_ticrate, autocvar_cl_casings_sloppy); + if(wasfreed(self)) + return; // deleted by touch function self.renderflags = 0; self.alpha = bound(0, self.cnt - time, 1); @@ -55,7 +57,7 @@ void Casing_Touch() break; } - sound (self, CH_SHOTS, s, VOL_BASE, ATTN_NORM); + sound (self, CH_SHOTS, s, VOL_BASE, ATTN_LARGE); } } } @@ -75,13 +77,14 @@ void Ent_Casing(float isNew) { entity casing; - casing = RubbleNew("casing"); + casing = RubbleNew("casing"); casing.state = ReadByte(); casing.silent = (casing.state & 0x80); casing.state = (casing.state & 0x7F); casing.origin_x = ReadCoord(); casing.origin_y = ReadCoord(); casing.origin_z = ReadCoord(); + setorigin(casing, casing.origin); casing.velocity = decompressShortVector(ReadShort()); casing.angles_x = ReadByte() * 360 / 256; casing.angles_y = ReadByte() * 360 / 256; @@ -113,11 +116,16 @@ void Ent_Casing(float isNew) } setsize(casing, '0 0 -1', '0 0 -1'); - } - else - Casing_Delete(); - RubbleLimit("casing", autocvar_cl_casings_maxcount, Casing_Delete); + RubbleLimit("casing", autocvar_cl_casings_maxcount, Casing_Delete); + } + else + { + entity oldself = self; + self = casing; + Casing_Delete(); // yes, this IS stupid, but I don't need to duplicate all the read* stuff then + self = oldself; + } } void Casings_Precache()