X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fcasings.qc;h=2225c0f35260d6ac88320cc2027939d4ba5d528e;hb=e0ac5f9f14e169a1e19d0e36b85cab061a74ed93;hp=d809c79802b2b5e4effa7fecef4e48aff5441e1f;hpb=5b902bfabe6575373dac2ffe636074c0308c6abf;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/casings.qc b/qcsrc/client/casings.qc index d809c7980..2225c0f35 100644 --- a/qcsrc/client/casings.qc +++ b/qcsrc/client/casings.qc @@ -11,10 +11,12 @@ void Casing_Draw() { self.move_angles_x = 0; self.move_angles_z = 0; - self.flags &~= FL_ONGROUND; + self.flags &= ~FL_ONGROUND; } 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, ATTEN_LARGE); } } } @@ -68,20 +70,21 @@ void Casing_Damage(float thisdmg, float hittype, vector org, vector thisforce) if(thisforce_z < 0) thisforce_z = 0; self.move_velocity = self.move_velocity + thisforce + '0 0 100'; - self.move_flags &~= FL_ONGROUND; + self.move_flags &= ~FL_ONGROUND; } 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");