3 if (other.solid == SOLID_BSP)
4 if (vlen(self.velocity) >= 50)
5 if (time >= self.attack_finished)
6 sound (self, CHAN_IMPACT, "weapons/tink1.ogg", 0.5, ATTN_NORM);
7 self.attack_finished = time + 0.2;
8 //self.touch = SUB_Null; // one tink is enough
9 //self.dest = self.origin - self.groundentity.origin;
15 self.nextthink = time + 0.1;
16 if (self.flags & FL_ONGROUND)
18 // just keep the yaw angle
21 self.flags = self.flags - FL_ONGROUND;
22 self.nextthink = time + 0.5;
24 p = pointcontents(self.origin);
25 if (p == CONTENT_SOLID || p == CONTENT_LAVA || p == CONTENT_SKY)
32 self.nextthink = time;
33 self.alpha = self.alpha - frametime;
34 if (self.alpha < 0.0625)
39 // knock loose the casing when disturbed
40 void() casingknockedloosefunc =
42 self.movetype = MOVETYPE_BOUNCE;
43 self.flags = self.flags - (self.flags & FL_ONGROUND);
44 self.avelocity = randomvec() * 300;
45 self.nextthink = time + 0.1;
46 self.touch = casingtouch;
49 void(vector org, vector vel, float randomvel, vector ang, vector avel, float randomavel, float casingtype) SpawnCasing =
52 if (cvar("temp1") & 2048)
59 e.movetype = MOVETYPE_BOUNCE;
60 e.solid = SOLID_TRIGGER;
61 e.velocity = vel + randomvec() * randomvel;
63 e.avelocity = avel + randomvec() * randomavel;
65 e.think = casingthink;
66 e.touch = casingtouch;
67 //e.knockedloosefunc = casingknockedloosefunc;
68 e.effects = EF_LOWPRECISION;
72 setmodel (e, "models/casing_shell.mdl");
74 // bias to make these be considered more important than other things
75 e.createdtime = time + 1;
77 else if (casingtype == 2)
79 setmodel (e, "models/casing_steel.mdl");
84 setmodel (e, "models/casing_bronze.mdl");
89 setsize (e, '0 0 -1', '0 0 -1');