]> icculus.org git repositories - divverent/nexuiz.git/blob - TeamNexuiz/game/gamec/tfbuttons.c
Added new GameC with class selection and random class selection working
[divverent/nexuiz.git] / TeamNexuiz / game / gamec / tfbuttons.c
1 void () button_return;\r
2 \r
3 void () button_wait =\r
4 {\r
5         self.state = 0;\r
6         self.nextthink = (self.ltime + self.wait);\r
7         self.think = button_return;\r
8         activator = self.enemy;\r
9         SUB_UseTargets ();\r
10 //      self.frame = 1;                 // causes crash :((\r
11 };\r
12 \r
13 void () button_done =\r
14 {\r
15         self.state = 1;\r
16 };\r
17 \r
18 void () button_return =\r
19 {\r
20         self.goal_state = 2;\r
21         self.state = 3;\r
22         SUB_CalcMove (self.pos1, self.speed, button_done);\r
23         self.frame = 0;\r
24         if (self.health)\r
25         {\r
26                 self.takedamage = 1;\r
27         }\r
28 };\r
29 \r
30 void () button_blocked =\r
31 {\r
32 };\r
33 \r
34 void () button_fire =\r
35 {\r
36         if (((self.state == 2) || (self.state == 0)))\r
37         {\r
38                 return;\r
39         }\r
40         sound (self, 2, self.noise, 1, 1);\r
41         self.state = 2;\r
42         SUB_CalcMove (self.pos2, self.speed, button_wait);\r
43 };\r
44 \r
45 void () button_use =\r
46 {\r
47         self.enemy = activator;\r
48         button_fire ();\r
49 };\r
50 \r
51 float () button_touch =\r
52 {\r
53         local entity te;\r
54 \r
55         if ((cb_prematch_time > time))\r
56         {\r
57                 return;\r
58         }\r
59         if ((other.classname != "player"))\r
60         {\r
61                 return;\r
62         }\r
63         if ((self.goal_activation & 8))\r
64         {\r
65                 return;\r
66         }\r
67         if ((other.playerclass == 0))\r
68         {\r
69                 return (0);\r
70         }\r
71         if (!Activated (self, other))\r
72         {\r
73                 if ((self.else_goal != 0))\r
74                 {\r
75                         te = Findgoal (self.else_goal);\r
76                         if (te)\r
77                         {\r
78                                 AttemptToActivate (te, other, self);\r
79                         }\r
80                 }\r
81                 return;\r
82         }\r
83         self.enemy = other;\r
84         button_fire ();\r
85 };\r
86 \r
87 void () button_killed =\r
88 {\r
89         if ((self.goal_activation & 8))\r
90         {\r
91                 return;\r
92         }\r
93         self.enemy = damage_attacker;\r
94         self.health = self.max_health;\r
95         self.takedamage = 0;\r
96         button_fire ();\r
97 };\r
98 \r
99 void () func_button =\r
100 {\r
101         local float gtemp;\r
102         local float ftemp;\r
103 \r
104         if (self.activetarget != "")\r
105         {\r
106                 self.target = self.activetarget;\r
107         }\r
108 \r
109         if ((CheckExistence () == 0))\r
110         {\r
111                 dremove (self);\r
112                 return;\r
113         }\r
114         if ((self.sounds == 0))\r
115         {\r
116                 precache_sound ("buttons/airbut1.wav");\r
117                 self.noise = "buttons/airbut1.wav";\r
118         }\r
119         if ((self.sounds == 1))\r
120         {\r
121                 precache_sound ("buttons/switch21.wav");\r
122                 self.noise = "buttons/switch21.wav";\r
123         }\r
124         if ((self.sounds == 2))\r
125         {\r
126                 precache_sound ("buttons/switch02.wav");\r
127                 self.noise = "buttons/switch02.wav";\r
128         }\r
129         if ((self.sounds == 3))\r
130         {\r
131                 precache_sound ("buttons/switch04.wav");\r
132                 self.noise = "buttons/switch04.wav";\r
133         }\r
134         SetMovedir ();\r
135         self.movetype = 7;\r
136         self.solid = 4;\r
137         setmodel (self, self.model);\r
138         self.blocked = button_blocked;\r
139         self.use = button_use;\r
140         if (self.health)\r
141         {\r
142                 self.max_health = self.health;\r
143                 self.th_die = button_killed;\r
144                 self.takedamage = 1;\r
145         }\r
146         else\r
147         {\r
148                 self.touch = button_touch;\r
149         }\r
150         if (!self.speed)\r
151         {\r
152                 self.speed = 40;\r
153         }\r
154         if (!self.wait)\r
155         {\r
156                 self.wait = 1;\r
157         }\r
158         if (!self.lip)\r
159         {\r
160                 self.lip = 4;\r
161         }\r
162         self.state = 1;\r
163         self.pos1 = self.origin;\r
164         self.pos2 = (self.pos1 + (self.movedir * (fabs ((self.movedir * self.size)) - self.lip)));\r
165         if ((self.spawnflags & 32))\r
166         {\r
167                 button_fire ();\r
168         }\r
169 };\r