]> icculus.org git repositories - divverent/nexuiz.git/blob - TeamNexuiz/game/gamec/g_casings.c
Added a Game C folder
[divverent/nexuiz.git] / TeamNexuiz / game / gamec / g_casings.c
1 void() casingtouch =\r
2 {\r
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
10 };\r
11 \r
12 void() casingthink =\r
13 {\r
14         local   float   p;\r
15         self.nextthink = time + 0.1;\r
16         if (self.flags & FL_ONGROUND)\r
17         {\r
18         // just keep the yaw angle\r
19                 self.angles_x = 0;\r
20                 self.angles_z = 0;\r
21                 self.flags = self.flags - FL_ONGROUND;\r
22                 self.nextthink = time + 0.5;\r
23         }\r
24         p = pointcontents(self.origin);\r
25         if (p == CONTENT_SOLID || p == CONTENT_LAVA || p == CONTENT_SKY)\r
26         {\r
27                 removedecor(self);\r
28                 return;\r
29         }\r
30         if (time > self.cnt)\r
31         {\r
32                 self.nextthink = time;\r
33                 self.alpha = self.alpha - frametime;\r
34                 if (self.alpha < 0.0625)\r
35                         removedecor(self);\r
36         }\r
37 };\r
38 \r
39 // knock loose the casing when disturbed\r
40 void() casingknockedloosefunc =\r
41 {\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
47 };\r
48 \r
49 void(vector org, vector vel, float randomvel, vector ang, vector avel, float randomavel, float casingtype) SpawnCasing =\r
50 {\r
51         local entity e;\r
52         if (cvar("temp1") & 2048)\r
53                 return;\r
54 \r
55         e = newdecor();\r
56         //e.isdecor = TRUE;\r
57         e.alpha = 1;\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
62         e.angles = ang;\r
63         e.avelocity = avel + randomvec() * randomavel;\r
64         e.nextthink = time;\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
71         {\r
72                 setmodel (e, "models/casing_shell.mdl");\r
73                 e.cnt = time + 30;\r
74                 // bias to make these be considered more important than other things\r
75                 e.createdtime = time + 1;\r
76         }\r
77         else if (casingtype == 2)\r
78         {\r
79                 setmodel (e, "models/casing_steel.mdl");\r
80                 e.cnt = time + 10;\r
81         }\r
82         else\r
83         {\r
84                 setmodel (e, "models/casing_bronze.mdl");\r
85                 e.cnt = time + 10;\r
86         }\r
87         if (maxclients == 1)\r
88                 e.cnt = time + 3000;\r
89         setsize (e, '0 0 -1', '0 0 -1');\r
90         setorigin (e, org);\r
91 };\r