X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fcasings.qc;h=70ed9f4b07d74b597a39d67968bf99bdba7cd807;hb=d719b4d3b3edb3a675c121c5942ede0d92cd1ceb;hp=d809c79802b2b5e4effa7fecef4e48aff5441e1f;hpb=6d6a01255c7a5c146bbeb3daae6f527dd40f98d4;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/casings.qc b/qcsrc/client/casings.qc index d809c7980..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; @@ -107,23 +110,28 @@ void Ent_Casing(float isNew) casing.cnt = time + autocvar_cl_casings_shell_time; break; default: - setmodel(casing, "models/casing_bronze.mdl"); + setmodel(casing, "models/casing_bronze.iqm"); casing.cnt = time + autocvar_cl_casings_bronze_time; break; } 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() { precache_model("models/casing_shell.mdl"); - precache_model("models/casing_bronze.mdl"); + precache_model("models/casing_bronze.iqm"); precache_sound("weapons/brass1.wav"); precache_sound("weapons/brass2.wav"); precache_sound("weapons/brass3.wav");