]> icculus.org git repositories - divverent/nexuiz.git/blob - TeamNexuiz/game/gamec/cl_impulse.c
Fixed GUI menu flicker and added support to select Yellow and Green (pink in GUI...
[divverent/nexuiz.git] / TeamNexuiz / game / gamec / cl_impulse.c
1 void CopyBody(float keepvelocity);\r
2 \r
3 // changes by LordHavoc on 03/30/04\r
4 // cleaned up dummy code\r
5 // dummies are now removed eventually after being gibbed (norespawn = TRUE)\r
6 // dummy impulse now checks sv_cheats to prevent players from overwhelming server with dummies\r
7 // dummies now use player code where possible\r
8 \r
9 void player_anim (void);\r
10 void DummyThink(void)\r
11 {\r
12         self.think = DummyThink;\r
13         self.nextthink = time;\r
14         SV_PlayerPhysics();\r
15         PlayerPreThink();\r
16         //player_anim();\r
17         PlayerPostThink();\r
18 }\r
19 \r
20 void CopyBody2(float keepvelocity, float testbody);\r
21 void ImpulseCommands (void)\r
22 {\r
23         local float swpn;\r
24 \r
25         if (self.impulse_wait > time)   // So the GUI menus doesnt flicker\r
26                 return;\r
27 \r
28         if (self.playerclass < 1)               // Bring up menu if no team/class\r
29         {\r
30                 if (self.team_no < 1)\r
31                 {\r
32                         stuffcmd(self, "set scmenu_directmenu TeamSelect; togglemenu\n");\r
33                 }\r
34                 else \r
35                 {\r
36                         stuffcmd(self, "set scmenu_directmenu ClassSelect; togglemenu\n");\r
37                 }\r
38                 self.impulse = 0;\r
39                 self.impulse_wait = time + .5;  \r
40                 return;\r
41         }\r
42         if (self.impulse == 71)\r
43         {\r
44                 local string whee;\r
45                 whee = ftos (self.maxammo_rockets);\r
46                 sprint(self, whee);\r
47                 sprint(self, "\n");\r
48         }\r
49 \r
50         if (self.impulse == 73)\r
51         {\r
52                 stuffcmd(self, "cmd changeclass\n");\r
53                 self.impulse = 0;\r
54                 return;\r
55         }\r
56         if (self.impulse == 70) {               // reload impulse\r
57                 swpn = self.weapon;\r
58                         if(self.class == CLASS_SOLDIER)\r
59                         {\r
60                                 if (swpn == WEP4)\r
61                                         DoReload (3, (CLIP_MAX_ROCKETS - self.clip_rockets));   // weapon type 3 is RL, and reload X rockets.\r
62                         }\r
63                         else if(self.class == CLASS_PYRO)\r
64                         {\r
65                                 if (swpn == WEP1)\r
66                                         DoReload (4, (CLIP_MAX_PIPEGRENADES - self.clip_pipegrenades));\r
67                         }\r
68                         else if(self.class == CLASS_SCOUT || self.class == CLASS_ENGINEER)\r
69                         {\r
70                                 if (swpn == WEP4)\r
71                                         DoReload (2, (CLIP_MAX_CRYLINK - self.clip_crylink));\r
72                         }\r
73         }\r
74         if (self.impulse == 68) {\r
75                         local entity barrel;\r
76                         barrel = spawn();\r
77                         barrel.mdl = "models/sentry/turr1_barrel.md3";\r
78                         barrel.yaw_speed = 10;\r
79                         setmodel(barrel, barrel.mdl);\r
80                         setorigin(barrel, self.origin + '8 0 8');\r
81                         barrel.angles_y = barrel.angles_y;\r
82 \r
83                         local entity barrel2;\r
84                         barrel2 = spawn();\r
85                         barrel2.mdl = "models/sentry/turr1_barrel.md3";\r
86                         barrel2.yaw_speed = 10;\r
87                         barrel2.angles_y = barrel2.angles_z + 90;\r
88                         setmodel(barrel2, barrel.mdl);\r
89                         setorigin(barrel2, '0 0 0');\r
90 \r
91                         setattachment(barrel2, barrel, "tag_barrel_bullet1");\r
92                         \r
93                         local float barrel_tag;\r
94                         local vector fire_from;\r
95                         barrel_tag = gettagindex (barrel2, "tag_barrel_bullet1");\r
96                         fire_from = gettaginfo (barrel2, barrel_tag);\r
97                         bprint(vtos(fire_from));\r
98                         bprint("\n");\r
99 \r
100                         local entity e;\r
101                         e = spawn();\r
102                         e.scale = 4;\r
103                         setmodel(e, "models/plasmatrail.mdl");\r
104                         setorigin (e, fire_from);\r
105                         bprint(vtos(e.origin));\r
106                         bprint("\n");\r
107 \r
108         }\r
109         if (self.impulse == 67) {\r
110                 TeamFortress_Build (3);\r
111                 //self.current_menu = 18;\r
112         }\r
113         if (self.impulse == 69) {\r
114 /*              local entity isneardoor;\r
115                 local string st;\r
116                 isneardoor = findradius (self.origin, 200);\r
117                 while (isneardoor)\r
118                 {\r
119                         if ((isneardoor.classname == "door"))\r
120                         {\r
121 //                              st = stos(isneardoor.model);\r
122                                 sprint (self, isneardoor.model);\r
123                                 sprint (self, "\n");\r
124                                 dremove(newmis);\r
125                                 return;\r
126                         }\r
127                         isneardoor = isneardoor.chain;\r
128                 }*/\r
129                 TeamFortress_Build (2);\r
130         }\r
131         if (self.impulse == 8) {\r
132         TeamFortress_ThrowGrenade(); }\r
133         if ((self.impulse == 150))              // GREN TYPE 1\r
134         {\r
135                 TeamFortress_PrimeGrenade();\r
136         }\r
137         if ((self.impulse == 151))              // GREN TYPE 2\r
138         {\r
139                 TeamFortress_PrimeGrenade();\r
140         }\r
141         if ((self.impulse == 152))\r
142         {\r
143                 TeamFortress_ThrowGrenade();\r
144         }\r
145 \r
146         if (self.impulse >= 1 && self.impulse <= 5)\r
147         {\r
148                 if(self.buttonuse)\r
149                 {\r
150                         if(self.impulse == 5 && self.wpn5.weapon)\r
151                         {\r
152                                 weapon_action(self.weapon, WR_DROP);\r
153                                 SpawnThrownWeapon (self.origin + (self.mins + self.maxs) * 0.5, self.wpn5.weapon);\r
154                                 self.weapon = 0;\r
155                                 ResetExtraWeapon();\r
156                                 self.switchweapon = w_getbestweapon(self);\r
157                                 if(self.switchweapon == WEP5)\r
158                                         self.switchweapon = WEP1;\r
159                         }\r
160                 }\r
161                 else\r
162                         if (self.reload_time < time) { \r
163                                 W_SwitchWeapon (self.impulse); }\r
164         }\r
165         else if (self.impulse == 10)\r
166                 if (self.reload_time < time) { \r
167                         W_NextWeapon (); }\r
168         else if (self.impulse == 12)\r
169                 if (self.reload_time < time) { \r
170                         W_PreviousWeapon (); }\r
171         else if (self.impulse == 13 && cvar("sv_cheats"))\r
172         {\r
173                 makevectors (self.v_angle);\r
174                 self.velocity = self.velocity + v_forward * 300;\r
175                 CopyBody2(1, TRUE);\r
176                 self.velocity = self.velocity - v_forward * 300;\r
177         }\r
178         else if (self.impulse == 14 && cvar("sv_cheats"))\r
179                 CopyBody2(0, TRUE);\r
180         else if (self.impulse == 99 && cvar("sv_cheats"))\r
181         {\r
182                 self.items = IT_WEP1 | IT_WEP2 | IT_WEP3 | IT_WEP4 | IT_WEP5;\r
183                 self.ammo_shells = 999;\r
184                 self.ammo_nails = 999;\r
185                 self.ammo_rockets = 999;\r
186                 self.ammo_cells = 999;\r
187         }\r
188 \r
189         if(self.impulse == 20)\r
190         {\r
191                 ClassSpecial();\r
192         }\r
193 \r
194         if(self.impulse == 30)\r
195         {\r
196                 ClassGrenade(WR_GRENADE1);\r
197         }\r
198         if(self.impulse == 31)\r
199         {\r
200                 ClassGrenade(WR_GRENADE2);\r
201         }\r
202 \r
203         // model/class test\r
204         if(self.impulse == 57)\r
205         {\r
206                 //self.class = GetPlayerClass();\r
207                 sprint(self, "Current class: ");\r
208                 sprint(self, NameOfClass(self.class));\r
209                 sprint(self, ", model: ");\r
210                 sprint(self, self.playermodel);\r
211                 sprint(self, "\n");\r
212         }\r
213         if(self.impulse == 211)         // XavioR test impulse\r
214         {\r
215                 local string woottest;\r
216                 woottest = ftos(self.team_no);\r
217                 sprint (self, woottest);\r
218                 sprint (self, "\n");\r
219         }\r
220         //TetrisImpulses();\r
221         self.impulse = 0;\r
222 }