]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/casings.qc
don't do this if death_time is zero
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / casings.qc
index 348e4a1a6ebefd8b2820168fe2b65a2616a20d81..a43d1726fcdce42a09aa30356391dc25cca57ac1 100644 (file)
@@ -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, CHAN_PROJECTILE, s, VOL_BASE, ATTN_NORM);
+                               sound (self, CH_SHOTS, s, VOL_BASE, ATTN_LARGE);
                        }
                }
        }
@@ -88,7 +90,7 @@ void Ent_Casing(float isNew)
        casing.angles_z = ReadByte() * 360 / 256;
        casing.drawmask = MASK_NORMAL;
 
-       if(cvar("cl_casings") && isNew) {
+       if(autocvar_cl_casings && isNew) {
                casing.draw = Casing_Draw;
                casing.move_origin = casing.origin;
                casing.move_velocity = casing.velocity + 2 * prandomvec();
@@ -104,26 +106,31 @@ void Ent_Casing(float isNew)
                {
                        case 1:
                                setmodel(casing, "models/casing_shell.mdl");
-                               casing.cnt = time + cvar("cl_casings_shell_time");
+                               casing.cnt = time + autocvar_cl_casings_shell_time;
                                break;
                        default:
-                               setmodel(casing, "models/casing_bronze.mdl");
-                               casing.cnt = time + cvar("cl_casings_bronze_time");
+                               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", cvar_or("cl_casings_maxcount",100), 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");