]> icculus.org git repositories - divverent/nexuiz.git/blob - attic/TeamNexuiz/game/gamec/tfbuttons.c
moved navnodeedit & TeamNexuiz to attic
[divverent/nexuiz.git] / attic / 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 0;\r
58         }\r
59         if ((other.classname != "player"))\r
60         {\r
61                 return 0;\r
62         }\r
63         if ((self.goal_activation & 8))\r
64         {\r
65                 return 0;\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 0;\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         if (self.activetarget != "")\r
102         {\r
103                 self.target = self.activetarget;\r
104         }\r
105 \r
106         if ((CheckExistence () == 0))\r
107         {\r
108                 dremove (self);\r
109                 return;\r
110         }\r
111         if ((self.sounds == 0))\r
112         {\r
113                 precache_sound ("buttons/airbut1.wav");\r
114                 self.noise = "buttons/airbut1.wav";\r
115         }\r
116         if ((self.sounds == 1))\r
117         {\r
118                 precache_sound ("buttons/switch21.wav");\r
119                 self.noise = "buttons/switch21.wav";\r
120         }\r
121         if ((self.sounds == 2))\r
122         {\r
123                 precache_sound ("buttons/switch02.wav");\r
124                 self.noise = "buttons/switch02.wav";\r
125         }\r
126         if ((self.sounds == 3))\r
127         {\r
128                 precache_sound ("buttons/switch04.wav");\r
129                 self.noise = "buttons/switch04.wav";\r
130         }\r
131         SetMovedir ();\r
132         self.movetype = 7;\r
133         self.solid = 4;\r
134         setmodel (self, self.model);\r
135         self.blocked = button_blocked;\r
136         self.use = button_use;\r
137         if (self.health)\r
138         {\r
139                 self.max_health = self.health;\r
140                 self.th_die = button_killed;\r
141                 self.takedamage = 1;\r
142         }\r
143         else\r
144         {\r
145                 self.touch = button_touch;\r
146         }\r
147         if (!self.speed)\r
148         {\r
149                 self.speed = 40;\r
150         }\r
151         if (!self.wait)\r
152         {\r
153                 self.wait = 1;\r
154         }\r
155         if (!self.lip)\r
156         {\r
157                 self.lip = 4;\r
158         }\r
159         self.state = 1;\r
160         self.pos1 = self.origin;\r
161         self.pos2 = (self.pos1 + (self.movedir * (fabs ((self.movedir * self.size)) - self.lip)));\r
162         if ((self.spawnflags & 32))\r
163         {\r
164                 button_fire ();\r
165         }\r
166 };\r