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