]> icculus.org git repositories - divverent/nexuiz.git/blob - TeamNexuiz/game/gamec/tfgrenades.c
- Spring cleaning! Cleaned up a lot of FTE warnings regarding unused locals
[divverent/nexuiz.git] / TeamNexuiz / game / gamec / tfgrenades.c
1 entity msg_entity;\r
2 void () TeamFortress_GrenadePrimed;\r
3 .float grenade_timer;\r
4 .float FlashTime;\r
5 void () CP_Timer;\r
6 \r
7 /*=======================\r
8  General grenade explode\r
9  ======================*/\r
10 void () GrenadeExplode =\r
11 {\r
12 /*      if (self.voided)\r
13         {\r
14                 return;\r
15         }\r
16         self.voided = 1;\r
17         if ((self.classname == "pipebomb"))\r
18         {\r
19                 num_world_pipebombs = (num_world_pipebombs - 1);\r
20                 decrement_team_pipebombs (self.team_no);\r
21                 if (!(self.flags & 512))\r
22                 {\r
23                         self.weapon = 40;\r
24                 }\r
25         }*/\r
26         if ((self.owner.has_disconnected != 1))\r
27         {\r
28                 deathmsg = self.weapon;\r
29                 T_RadiusDamage (self, self.owner, 120, world);\r
30         }\r
31 /*      local entity te;\r
32         if ((self.no_active_nail_grens != 0))\r
33         {\r
34                 self.no_active_nail_grens = 0;\r
35                 self.owner.no_active_nail_grens = (self.owner.no_active_nail_grens - 1);\r
36                 te = find (world, classname, "grenade");\r
37                 while (te)\r
38                 {\r
39                         if (((te.owner == self.owner) && (te.no_active_nail_grens != 0)))\r
40                         {\r
41                                 te.no_active_nail_grens = (te.no_active_nail_grens - 1);\r
42                         }\r
43                         te = find (te, classname, "grenade");\r
44                 }\r
45         }*/\r
46         WriteByte (0, 23);\r
47         WriteByte (0, 3);\r
48         WriteCoord (0, self.origin_x);\r
49         WriteCoord (0, self.origin_y);\r
50         WriteCoord (0, self.origin_z);\r
51         BecomeExplosion ();\r
52 };\r
53 \r
54 // TF Recoil? Anyhoo, this entity causes oddities :/\r
55 void(float psize, entity p) KickPlayer = \r
56 {\r
57         return;                 // temp\r
58         msg_entity = p;\r
59         if (psize > -3)\r
60         {\r
61                 WriteByte(1, 34);\r
62         }\r
63         else\r
64         {\r
65                 WriteByte(1, 35);\r
66         }\r
67 };\r
68 \r
69 /* ================\r
70  Flash grenade\r
71   ===============*/\r
72 void () FlashGrenadeTouch =\r
73 {\r
74         sound (self, 1, "weapons/bounce.wav", 1, 1);\r
75         if ((self.velocity == '0 0 0'))\r
76         {\r
77                 self.avelocity = '0 0 0';\r
78         }\r
79 };\r
80 \r
81 void () FlashTimer =\r
82 {\r
83         local entity te;\r
84         local string st;\r
85 \r
86         te = self.owner;\r
87         te.FlashTime = (te.FlashTime - 0.100000);\r
88         if ((te.FlashTime <= 0.000000))\r
89         {\r
90                 te.FlashTime = 0.000000;\r
91                 stuffcmd (te, "v_cshift 0\n");\r
92                 stuffcmd (te, "r_bloom_power 2\n");\r
93                 stuffcmd (te, "r_bloom_intensity 1.5\n");\r
94                 remove (self);\r
95                 return;\r
96         }\r
97         if ((te.FlashTime < 1.700000))\r
98         {\r
99                 st = ftos ((te.FlashTime * 150.000000));\r
100 // lets add a bloom check later?\r
101 /*\r
102 <LordHavoc> avirox: stuffcmd(self, "cmd mycvar $mycvar\n");\r
103 <LordHavoc> avirox: then later in your SV_ParseClientCommand() qc function you'll see a string come in like "mycvar 1"\r
104 */              \r
105                 stuffcmd (te, "v_cshift ");\r
106                 stuffcmd (te, st);\r
107                 stuffcmd (te, " ");\r
108                 stuffcmd (te, st);\r
109                 stuffcmd (te, " ");\r
110                 stuffcmd (te, st);\r
111                 stuffcmd (te, " ");\r
112                 stuffcmd (te, st);\r
113                 stuffcmd (te, "\n");\r
114 \r
115                 // BLOOM!!! :D\r
116                 stuffcmd (te, "r_bloom_power 1\n");\r
117 \r
118                 st = ftos(2 + (te.FlashTime * 10));\r
119                 stuffcmd (te, "r_bloom_intensity ");\r
120                 stuffcmd (te, st);\r
121                 stuffcmd (te, "\n");\r
122                 \r
123         }\r
124         if ((te.FlashTime >= 1.700000))\r
125         {\r
126                 stuffcmd (te, "v_cshift 255 255 255 255\n");\r
127         }\r
128         if ((te.FlashTime <= 0.000000))\r
129         {\r
130                 te.FlashTime = 0.000000;\r
131                 stuffcmd (te, "v_cshift 0\n");\r
132                 stuffcmd (te, "r_bloom_power 2\n");\r
133                 stuffcmd (te, "r_bloom_intensity 1.5\n");\r
134                 remove (self);\r
135                 return;\r
136         }\r
137         self.nextthink = (time + 0.100000);\r
138 };\r
139 \r
140 void () FlashGrenadeExplode =\r
141 {\r
142         local entity te;\r
143 \r
144         self.effects = (self.effects | 4);\r
145         WriteByte (0, 23);\r
146         WriteByte (0, 4);\r
147         WriteCoord (0, self.origin_x);\r
148         WriteCoord (0, self.origin_y);\r
149         WriteCoord (0, self.origin_z);\r
150         te = findradius (self.origin, 300);\r
151         while (te)\r
152         {\r
153                 if ((te.classname == "player" && te.team_no != self.owner.team_no || te == self.owner))\r
154                 {\r
155                         traceline (self.origin, te.origin, 1, self);\r
156                         if ((trace_fraction == 1))\r
157                         {\r
158                                 if ((vlen ((self.origin - te.origin)) <= 200))\r
159                                 {\r
160                                         deathmsg = 35;\r
161                                         TF_T_Damage (te, self, self.owner, 60, 2, (16 | 4));\r
162                                 }\r
163                                 if (te.health > TF_FLARE_LIT)\r
164                                 {\r
165                                         if (te.FlashTime == TF_FLARE_LIT)\r
166                                         {\r
167                                                 newmis = spawn ();\r
168                                                 newmis.classname = "timer";\r
169                                                 newmis.netname = "flashtimer";\r
170                                                 newmis.team_no = self.owner.team_no;\r
171                                                 newmis.owner = te;\r
172                                                 newmis.think = FlashTimer;\r
173                                                 newmis.nextthink = (time + 0.100000);\r
174                                         }\r
175                                         te.FlashTime = 4.500000;\r
176                                         stuffcmd (te, "v_cshift 255 255 255 255\n");\r
177                                 }\r
178                         }\r
179                 }\r
180                 te = te.chain;\r
181         }\r
182         BecomeExplosion ();\r
183 };\r
184 \r
185 /*=============\r
186  Nail Grenade\r
187  ============*/\r
188 void() NailGrenadeTouch;\r
189 void() NailGrenadeExplode;\r
190 void() NailGrenadeNailEm;\r
191 void() NailGrenadeLaunchNail;\r
192 void() GrenadeExplode;\r
193 \r
194 void() NailGrenadeTouch = \r
195 {\r
196         if (other == self.owner)\r
197         {\r
198                 return;\r
199         }\r
200         sound(self, TF_FLARE_OFF, "weapons/bounce.wav", TF_FLARE_OFF, TF_FLARE_OFF);\r
201         if (self.velocity == '0 0 0')\r
202         {\r
203                 self.avelocity = '0 0 0';\r
204         }\r
205 };\r
206 \r
207 void() NailGrenadeExplode = \r
208 {\r
209         self.movetype = 5;\r
210         setorigin(self, self.origin + '0 0 32');\r
211         self.avelocity = '0 500 0';\r
212         self.nextthink = time + 0.7;\r
213         self.think = NailGrenadeNailEm;\r
214 };\r
215 \r
216 void() NailGrenadeNailEm = \r
217 {\r
218         self.velocity = '0 0 0';\r
219         self.nextthink = time + 0.1;\r
220         self.think = NailGrenadeLaunchNail;\r
221         self.playerclass = TF_FLARE_LIT;\r
222 };\r
223 \r
224 void() NailGrenadeLaunchNail = \r
225 {\r
226         local float i;\r
227         local float j;\r
228         i = TF_FLARE_LIT;\r
229         while (i < TF_FLARE_OFF)\r
230         {\r
231                 j = (random() + 2) * 5;\r
232                 current_yaw = anglemod(self.angles_y + j);\r
233                 self.angles_y = current_yaw;\r
234                 self.angles_x = TF_FLARE_LIT;\r
235                 self.angles_z = TF_FLARE_LIT;\r
236                 makevectors(self.angles);\r
237                 deathmsg = 99;                  //temp\r
238                 launch_spike(self.origin, v_forward);\r
239                 newmis.touch = superspike_touch;\r
240                 newmis.weapon = 9;\r
241                 i = i + TF_FLARE_OFF;\r
242         }\r
243         self.playerclass = self.playerclass + TF_FLARE_OFF;\r
244         self.nextthink = time + 0.1;\r
245         if (self.playerclass > 40)\r
246         {\r
247                 self.weapon = 9;\r
248                 self.think = GrenadeExplode;\r
249         }\r
250 };\r
251 \r
252 /*=====================\r
253   TF Gren Prime Code\r
254   ===================*/\r
255 \r
256 void() TeamFortress_ExplodePerson = \r
257 {\r
258 //      local entity te;\r
259         self.owner.tfstate = self.owner.tfstate - (self.owner.tfstate & 1);\r
260         KickPlayer(-2, self.owner);             // Doesnt wanna work right\r
261         newmis = spawn();\r
262         newmis.movetype = 10;\r
263         newmis.solid = 2;\r
264         newmis.classname = "grenade";\r
265         newmis.team_no = self.owner.team_no;\r
266         newmis.owner = self.owner;\r
267         newmis.velocity = '0 0 0';\r
268         newmis.angles = vectoangles(newmis.velocity);\r
269         newmis.think = SUB_Null;\r
270 //      newmis.think = NormalGrenadeExplode;\r
271         newmis.nextthink = time + 0.1;\r
272         if (self.weapon == 1)\r
273         {\r
274                 newmis.touch = NormalGrenadeTouch;\r
275                 newmis.think = NormalGrenadeExplode;\r
276                 newmis.skin = 0;\r
277                 newmis.avelocity = '300 300 300';\r
278                 self.owner.velocity = (((v_forward * 900) + '0 0 250') + (v_up * 100)); // Shoot the player hehe\r
279 //              setmodel(newmis, "progs/hgren2.mdl");\r
280                 setmodel(newmis, "models/grenades/fragnade.md3");\r
281                 \r
282         }\r
283         else\r
284 /*      {\r
285                 if (self.weapon == 2)\r
286                 {\r
287                         newmis.touch = ConcussionGrenadeTouch;\r
288                         newmis.think = ConcussionGrenadeExplode;\r
289                         newmis.skin = 1;\r
290                         newmis.avelocity = '300 300 300';\r
291                         setmodel(newmis, "progs/hgren2.mdl");\r
292                 }\r
293                 else\r
294                 {*/\r
295                         if (self.weapon == 3)\r
296                         {\r
297                                 newmis.touch = NailGrenadeTouch;\r
298                                 newmis.think = NailGrenadeExplode;\r
299                                 newmis.skin = 1;\r
300                                 newmis.avelocity = '0 300 0';\r
301                                 setmodel(newmis, "progs/biggren.mdl");\r
302                         }/*\r
303                         else\r
304                         {\r
305                                 if (self.weapon == 4)\r
306                                 {\r
307                                         newmis.touch = MirvGrenadeTouch;\r
308                                         newmis.think = MirvGrenadeExplode;\r
309                                         newmis.skin = 0;\r
310                                         newmis.avelocity = '0 300 0';\r
311                                         setmodel(newmis, "progs/biggren.mdl");\r
312                                 }\r
313                                 else\r
314                                 {\r
315                                         if (self.weapon == 5)\r
316                                         {\r
317                                                 newmis.touch = NapalmGrenadeTouch;\r
318                                                 newmis.think = NapalmGrenadeExplode;\r
319                                                 newmis.skin = 2;\r
320                                                 newmis.avelocity = '0 300 0';\r
321                                                 setmodel(newmis, "progs/biggren.mdl");\r
322                                         }\r
323                                         else\r
324                                         {\r
325                                                 if (self.weapon == 6)\r
326                                                 {\r
327                                                         sprint(self.owner, "Flare lit.\n");\r
328                                                         te = spawn();\r
329                                                         te.touch = SUB_Null;\r
330                                                         te.think = RemoveFlare;\r
331                                                         te.nextthink = time + 25;\r
332                                                         te.owner = self.owner;\r
333                                                         te.solid = 0;\r
334                                                         self.owner.effects = self.owner.effects | 4;\r
335                                                         dremove(self);\r
336                                                         dremove(newmis);\r
337                                                         return;\r
338                                                 }\r
339                                                 else\r
340                                                 {\r
341                                                         if (self.weapon == 7)\r
342                                                         {\r
343                                                                 newmis.touch = GasGrenadeTouch;\r
344                                                                 newmis.think = GasGrenadeExplode;\r
345                                                                 newmis.skin = 2;\r
346                                                                 newmis.avelocity = '300 300 300';\r
347                                                                 setmodel(newmis, "progs/grenade2.mdl");\r
348                                                         }\r
349                                                         else\r
350                                                         {\r
351                                                                 if (self.weapon == 8)\r
352                                                                 {\r
353                                                                         newmis.touch = EMPGrenadeTouch;\r
354                                                                         newmis.think = EMPGrenadeExplode;\r
355                                                                         newmis.skin = 4;\r
356                                                                         newmis.avelocity = '300 300 300';\r
357                                                                         setmodel(newmis, "progs/grenade2.mdl");\r
358                                                                 }\r
359                                                                 else\r
360                                                                 {*/\r
361                                                                         if (self.weapon == 9)\r
362                                                                         {\r
363                                                                                 newmis.touch = FlashGrenadeTouch;\r
364                                                                                 newmis.think = FlashGrenadeExplode;\r
365                                                                                 newmis.skin = 1;\r
366                                                                                 newmis.avelocity = '300 300 300';\r
367                                                                                 setmodel(newmis, "progs/grenade2.mdl");\r
368                                                                         }/*\r
369                                                                 }\r
370                                                         }\r
371                                                 }\r
372                                         }\r
373                                 }\r
374                         }\r
375                 }\r
376         }*/\r
377         setsize(newmis, '0 0 0', '0 0 0');\r
378         setorigin(newmis, self.owner.origin);\r
379         bprint("No ");\r
380         bprint(self.owner.netname);\r
381         bprint(", throw the grenade, not the pin!\n");\r
382         dremove(self);\r
383 };\r
384 \r
385 void() NormalGrenadeTouch = \r
386 {\r
387         if (other == self.owner)\r
388         {\r
389                 return;\r
390         }\r
391         sound(self, 1, "weapons/bounce.wav", 1, 1);\r
392         if (self.velocity == '0 0 0')\r
393         {\r
394                 self.avelocity = '0 0 0';\r
395         }\r
396 };\r
397 \r
398 void () NormalGrenadeExplode =\r
399 {\r
400         deathmsg = 88;\r
401         T_RadiusDamage (self, self.owner, 180, world);\r
402         WriteByte (0, 23);\r
403         WriteByte (0, 3);\r
404         WriteCoord (0, self.origin_x);\r
405         WriteCoord (0, self.origin_y);\r
406         WriteCoord (0, self.origin_z);\r
407         BecomeExplosion ();\r
408 };\r
409 \r
410 // TF Prime Grenade Function\r
411 void () TeamFortress_PrimeGrenade =\r
412 {\r
413         local float gtype;\r
414         local string gs;\r
415         local string ptime;\r
416         local entity tGrenade;\r
417 \r
418         if (((self.tfstate & 1) || (self.tfstate & 1024)))\r
419         {\r
420                 return;\r
421         }\r
422         if ((self.impulse == 150))\r
423         {\r
424                 gtype = self.tp_grenades_1;\r
425                 \r
426                 if ((self.tp_grenades_1 == 2))\r
427                 {\r
428                         gs = "Concussion grenade";\r
429                 }\r
430                 else\r
431                 {\r
432                         if ((self.tp_grenades_1 == 3))\r
433                         {\r
434                                 gs = "Nail grenade";\r
435                         }\r
436                         else\r
437                         {\r
438                                 if ((self.tp_grenades_1 == 4))\r
439                                 {\r
440                                         gs = "Mirv grenade";\r
441                                 }\r
442                                 else\r
443                                 {\r
444                                         if ((self.tp_grenades_1 == 5))\r
445                                         {\r
446                                                 gs = "Napalm grenade";\r
447                                         }\r
448                                         else\r
449                                         {\r
450                                                 if ((self.tp_grenades_1 == 6))\r
451                                                 {\r
452                                                         gs = "Flare";\r
453                                                 }\r
454                                                 else\r
455                                                 {\r
456                                                         if ((self.tp_grenades_1 == 7))\r
457                                                         {\r
458                                                                 gs = "Gas grenade";\r
459                                                         }\r
460                                                         else\r
461                                                         {\r
462                                                                 if ((self.tp_grenades_1 == 8))\r
463                                                                 {\r
464                                                                         gs = "EMP grenade";\r
465                                                                 }\r
466                                                                 else\r
467                                                                 {\r
468                                                                         if ((self.tp_grenades_1 == 10))\r
469                                                                         {\r
470                                                                                 gs = "Caltrop canister";\r
471                                                                         }\r
472                                                                         else\r
473                                                                         {\r
474                                                                                 if ((self.tp_grenades_1 == 9))\r
475                                                                                 {\r
476                                                                                         gs = "Flash grenade";\r
477                                                                                 }\r
478                                                                                 else\r
479                                                                                 {\r
480                                                                                         gs = "Grenade";\r
481                                                                                 }\r
482                                                                         }\r
483                                                                 }\r
484                                                         }\r
485                                                 }\r
486                                         }\r
487                                 }\r
488                         }\r
489                 }\r
490 //              gs = "Grenade";\r
491 \r
492                 if ((self.no_grenades_1 > 0))\r
493                 {\r
494                         self.no_grenades_1 = (self.no_grenades_1 - 1);\r
495                         /*if ((gtype == 6))\r
496                         {\r
497                                 newmis = spawn ();\r
498                                 newmis.owner = self;\r
499                                 newmis.movetype = 6;\r
500                                 newmis.solid = 2;\r
501                                 newmis.classname = "grenade";\r
502                                 makevectors (self.v_angle);\r
503                                 newmis.velocity = ((v_forward * 600) + (v_up * 25));\r
504                                 newmis.velocity = (newmis.velocity * 700);\r
505                                 newmis.angles = vectoangles (newmis.velocity);\r
506                                 newmis.weapon = self.team_no;\r
507                                 newmis.think = FlareGrenadeExplode;\r
508                                 newmis.nextthink = (time + 0.8);\r
509                                 newmis.touch = FlareGrenadeTouch;\r
510                                 newmis.skin = 1;\r
511                                 newmis.mdl = "flare";\r
512                                 setmodel (newmis, "progs/flare.mdl");\r
513                                 setsize (newmis, '0 0 0', '0 0 0');\r
514                                 setorigin (newmis, self.origin);\r
515                                 return;\r
516                         }*/\r
517                         if ((gtype == 10))\r
518                         {\r
519                                 ptime = ftos (0.5);\r
520                                 sprint (self, "Opening ");\r
521                                 sprint (self, gs);\r
522                                 sprint (self, "...\n");\r
523                         }\r
524                         else\r
525                         {\r
526                                 sound (self, CHAN_WEAPON, "weapons/prime.wav", 1, ATTN_STATIC);\r
527                                 sound (self, CHAN_AUTO, "weapons/gren.wav", 1, ATTN_STATIC);\r
528                                 ptime = ftos (3);\r
529                                 sprint (self, gs);\r
530                                 sprint (self, " primed, ");\r
531                                 sprint (self, ptime);\r
532                                 sprint (self, " seconds...\n");\r
533                         }\r
534                 }\r
535                 else\r
536                 {\r
537                         sprint (self, "No ");\r
538                         sprint (self, gs);\r
539                         sprint (self, "s left.\n");\r
540                         return;\r
541                 }\r
542         }\r
543         if ((self.impulse == 151))\r
544         {\r
545                 if (self.tp_grenades_2 == 0)\r
546                         return;\r
547                 gtype = self.tp_grenades_2;\r
548 /*              if ((self.tp_grenades_2 == 2))\r
549                 {\r
550                         gs = "Concussion grenade";\r
551                 }\r
552                 else\r
553                 {*/\r
554                         if ((self.tp_grenades_2 == 3))\r
555                         {\r
556                                 gs = "Nail grenade";\r
557                         }/*\r
558                         else\r
559                         {\r
560                                 if ((self.tp_grenades_2 == 4))\r
561                                 {\r
562                                         gs = "Mirv grenade";\r
563                                 }\r
564                                 else\r
565                                 {\r
566                                         if ((self.tp_grenades_2 == 5))\r
567                                         {\r
568                                                 gs = "Napalm grenade";\r
569                                         }\r
570                                         else\r
571                                         {\r
572                                                 if ((self.tp_grenades_2 == 6))\r
573                                                 {\r
574                                                         gs = "Flare";\r
575                                                 }\r
576                                                 else\r
577                                                 {\r
578                                                         if ((self.tp_grenades_2 == 7))\r
579                                                         {\r
580                                                                 gs = "Gas grenade";\r
581                                                         }\r
582                                                         else\r
583                                                         {\r
584                                                                 if ((self.tp_grenades_2 == 8))\r
585                                                                 {\r
586                                                                         gs = "EMP grenade";\r
587                                                                 }\r
588                                                                 else\r
589                                                                 {\r
590                                                                         if ((self.tp_grenades_2 == 9))\r
591                                                                         {\r
592                                                                                 gs = "Flash grenade";\r
593                                                                         }*/\r
594                                                                         else\r
595                                                                         {\r
596                                                                                 gs = "Grenade";\r
597                                                                         }/*\r
598                                                                 }\r
599                                                         }\r
600                                                 }\r
601                                         }\r
602                                 }\r
603                         }\r
604                 }*/\r
605                 if ((self.no_grenades_2 > 0))\r
606                 {\r
607                         self.no_grenades_2 = (self.no_grenades_2 - 1);\r
608 /*                      if ((gtype == 6))\r
609                         {\r
610                                 newmis = spawn ();\r
611                                 newmis.owner = self;\r
612                                 newmis.movetype = 6;\r
613                                 newmis.solid = 2;\r
614                                 newmis.classname = "grenade";\r
615                                 makevectors (self.v_angle);\r
616                                 if (self.v_angle_x)\r
617                                 {\r
618                                         newmis.velocity = ((v_forward * 1200) + (v_up * 200));\r
619                                 }\r
620                                 else\r
621                                 {\r
622                                         newmis.velocity = aim (self, 10000);\r
623                                         newmis.velocity = (newmis.velocity * 1200);\r
624                                         newmis.velocity_z = 75;\r
625                                 }\r
626                                 newmis.angles = vectoangles (newmis.velocity);\r
627                                 newmis.weapon = self.team_no;\r
628                                 newmis.think = FlareGrenadeExplode;\r
629                                 newmis.nextthink = (time + 0.8);\r
630                                 newmis.touch = FlareGrenadeTouch;\r
631                                 newmis.skin = 1;\r
632                                 newmis.mdl = "flare";\r
633                                 setmodel (newmis, "progs/flare.mdl");\r
634                                 setsize (newmis, '0 0 0', '0 0 0');\r
635                                 setorigin (newmis, self.origin);\r
636                                 return;\r
637                         }*/\r
638                         if ((gtype == 10))\r
639                         {\r
640                                 ptime = ftos (0.5);\r
641                                 sprint (self, "Opening ");\r
642                                 sprint (self, gs);\r
643                                 sprint (self, "...\n");\r
644                         }\r
645                         else\r
646                         {\r
647                                 ptime = ftos (3);\r
648                                 sprint (self, gs);\r
649                                 sprint (self, " primed, ");\r
650                                 sprint (self, ptime);\r
651                                 sprint (self, " seconds...\n");\r
652                         }\r
653                 }\r
654                 else\r
655                 {\r
656                         sprint (self, "No ");\r
657                         sprint (self, gs);\r
658                         sprint (self, "s left.\n");\r
659                         return;\r
660                 }\r
661         }\r
662         self.tfstate = (self.tfstate | 1);\r
663         tGrenade = spawn ();\r
664         tGrenade.owner = self;\r
665         tGrenade.weapon = gtype;\r
666         tGrenade.classname = "primer";\r
667         tGrenade.impulse = self.impulse;\r
668         tGrenade.nextthink = (time + 0.8);\r
669         tGrenade.heat = time + 4;\r
670 \r
671 /*      // Make Centerprint timer                       // Taken out due to the fact that the function sucked\r
672         newmis = spawn ();\r
673         newmis.owner = self;\r
674         newmis.classname = "primedtimer";\r
675         newmis.think = CP_Timer;\r
676         newmis.nextthink = (time);\r
677         self.grenade_timer = time;              */\r
678         /*if ((gtype == 10))\r
679         {\r
680                 tGrenade.heat = ((time + 0.5) + 0.5);\r
681         }\r
682         else\r
683         {\r
684                 tGrenade.heat = ((time + 3) + 0.8);\r
685         }*/\r
686         tGrenade.think = TeamFortress_GrenadePrimed;\r
687 };\r
688 \r
689 void () TeamFortress_GrenadePrimed =\r
690 {\r
691         local entity user;\r
692         local entity oldself;\r
693 \r
694         user = self.owner;\r
695         if ((!(user.tfstate & 1024) && !user.deadflag))\r
696         {\r
697                 self.nextthink = (time + 0.1);\r
698                 if (!self.think)\r
699                 {\r
700                         dremove (self);\r
701                 }\r
702                 if ((time > self.heat))\r
703                 {\r
704                         TeamFortress_ExplodePerson ();\r
705                 }\r
706                 return;\r
707         }\r
708         if (!(user.tfstate & 1))\r
709         {\r
710                 dprint ("GrenadePrimed logic error\n");\r
711         }\r
712         user.tfstate = (user.tfstate - (user.tfstate & 1));\r
713         user.tfstate = (user.tfstate - (user.tfstate & 1024));\r
714 //      sound (user, 1, "weapons/grenade.wav", 1, 1);\r
715         KickPlayer (-1, user);\r
716         newmis = spawn ();\r
717         newmis.owner = user;\r
718         newmis.movetype = 10;\r
719         newmis.solid = 2;\r
720         newmis.classname = "grenade";\r
721         makevectors (user.v_angle);\r
722         if (user.deadflag)\r
723         {\r
724                 newmis.velocity = '0 0 200';\r
725         }\r
726         else\r
727         {\r
728                 if (user.v_angle_x)\r
729                 {\r
730                         newmis.velocity = ((((v_forward * 600) + (v_up * 200)) + ((crandom () * v_right) * 10)) + ((crandom () * v_up) * 10));\r
731                 }\r
732                 else\r
733                 {\r
734                         newmis.velocity = aim (user, 10000);\r
735                         newmis.velocity = (newmis.velocity * 600);\r
736                         newmis.velocity_z = 200;\r
737                 }\r
738         }\r
739         newmis.angles = vectoangles (newmis.velocity);\r
740         newmis.think = SUB_Null;\r
741         newmis.nextthink = self.heat;\r
742         if ((self.weapon == 1))\r
743         {\r
744                 newmis.touch = NormalGrenadeTouch;\r
745                 newmis.think = NormalGrenadeExplode;\r
746                 newmis.skin = 0;\r
747                 newmis.avelocity = '300 300 300';\r
748 //              setmodel (newmis, "progs/hgren2.mdl");\r
749                 setmodel(newmis, "models/grenades/fragnade.md3");\r
750         }\r
751         else if ((self.weapon == 9))\r
752         {\r
753                 newmis.touch = FlashGrenadeTouch;\r
754                 newmis.think = FlashGrenadeExplode;\r
755                 newmis.skin = 2;\r
756                 newmis.avelocity = '300 300 300';\r
757                 setmodel (newmis, "progs/hgren2.mdl");\r
758         }\r
759 /*      else\r
760         {\r
761                 if ((self.weapon == 2))\r
762                 {\r
763                         newmis.touch = ConcussionGrenadeTouch;\r
764                         newmis.think = ConcussionGrenadeExplode;\r
765                         newmis.skin = 1;\r
766                         newmis.avelocity = '300 300 300';\r
767                         setmodel (newmis, "progs/hgren2.mdl");\r
768                 }\r
769                 else\r
770                 {*/\r
771                         if ((self.weapon == 3))\r
772                         {\r
773                                 newmis.touch = NailGrenadeTouch;\r
774                                 newmis.think = NailGrenadeExplode;\r
775                                 newmis.skin = 1;\r
776                                 newmis.avelocity = '0 300 0';\r
777                                 setmodel (newmis, "progs/biggren.mdl");\r
778                         }/*\r
779                         else\r
780                         {\r
781                                 if ((self.weapon == 4))\r
782                                 {\r
783                                         newmis.touch = MirvGrenadeTouch;\r
784                                         newmis.think = MirvGrenadeExplode;\r
785                                         newmis.skin = 0;\r
786                                         newmis.avelocity = '0 300 0';\r
787                                         setmodel (newmis, "progs/biggren.mdl");\r
788                                 }\r
789                                 else\r
790                                 {\r
791                                         if ((self.weapon == 5))\r
792                                         {\r
793                                                 newmis.touch = NapalmGrenadeTouch;\r
794                                                 newmis.think = NapalmGrenadeExplode;\r
795                                                 newmis.skin = 2;\r
796                                                 newmis.avelocity = '0 300 0';\r
797                                                 setmodel (newmis, "progs/biggren.mdl");\r
798                                         }\r
799                                         else\r
800                                         {\r
801                                                 if ((self.weapon == 6))\r
802                                                 {\r
803                                                         newmis.touch = FlareGrenadeTouch;\r
804                                                         newmis.weapon = self.team_no;\r
805                                                         newmis.think = FlareGrenadeExplode;\r
806                                                         newmis.skin = 1;\r
807                                                         newmis.avelocity = '300 300 300';\r
808                                                         newmis.mdl = "flare";\r
809                                                         setmodel (newmis, "progs/flare.mdl");\r
810                                                 }\r
811                                                 else\r
812                                                 {\r
813                                                         if ((self.weapon == 7))\r
814                                                         {\r
815                                                                 newmis.touch = GasGrenadeTouch;\r
816                                                                 newmis.think = GasGrenadeExplode;\r
817                                                                 newmis.skin = 3;\r
818                                                                 newmis.avelocity = '300 300 300';\r
819                                                                 setmodel (newmis, "progs/grenade2.mdl");\r
820                                                         }\r
821                                                         else\r
822                                                         {\r
823                                                                 if ((self.weapon == 8))\r
824                                                                 {\r
825                                                                         newmis.touch = EMPGrenadeTouch;\r
826                                                                         newmis.think = EMPGrenadeExplode;\r
827                                                                         newmis.skin = 4;\r
828                                                                         newmis.avelocity = '300 300 300';\r
829                                                                         setmodel (newmis, "progs/grenade2.mdl");\r
830                                                                 }\r
831                                                                 else\r
832                                                                 {\r
833                                                                         if ((self.weapon == 10))\r
834                                                                         {\r
835                                                                                 newmis.touch = CanisterTouch;\r
836                                                                                 newmis.think = ScatterCaltrops;\r
837                                                                                 newmis.skin = 0;\r
838                                                                                 newmis.avelocity = '0 0 0';\r
839                                                                         }\r
840                                                                         else\r
841                                                                         {\r
842                                                                                 if ((self.weapon == 9))\r
843                                                                                 {\r
844                                                                                         newmis.touch = FlashGrenadeTouch;\r
845                                                                                         newmis.think = FlashGrenadeExplode;\r
846                                                                                         newmis.skin = 2;\r
847                                                                                         newmis.avelocity = '300 300 300';\r
848                                                                                         setmodel (newmis, "progs/hgren2.mdl");\r
849                                                                                 }\r
850                                                                         }\r
851                                                                 }\r
852                                                         }\r
853                                                 }\r
854                                         }\r
855                                 }\r
856                         }\r
857                 }\r
858         }*/\r
859         setsize (newmis, '0 0 0', '0 0 0');\r
860         setorigin (newmis, user.origin);\r
861         oldself = self;\r
862         self = self.owner;\r
863         self = oldself;\r
864         dremove (self);\r
865 };\r
866 \r
867 void () TeamFortress_ThrowGrenade =\r
868 {\r
869         if (!(self.tfstate & 1))\r
870         {\r
871                 return;\r
872         }\r
873         sound(self, 3, "weapons/throw.wav", 1, 1);\r
874         self.tfstate = (self.tfstate | 1024);\r
875 };\r
876 \r
877 // TF Grenade CenterPrint Timer - it sucks so I took it out:x\r
878 void () CP_Timer =\r
879 {\r
880         local float countdown;\r
881 \r
882         countdown = (time - self.owner.grenade_timer);\r
883 \r
884         if (countdown > 0)\r
885         {\r
886                 CenterPrint (self.owner, "^7\80\81\81\81\81\81\81\81\81\81\81\81\81\82^1\n");\r
887         }\r
888         if (countdown > .25)\r
889         {\r
890                 CenterPrint (self.owner, "^1\80^7\81\81\81\81\81\81\81\81\81\81\81\81\82\n");\r
891         }\r
892         if (countdown > .5)\r
893         {\r
894                 CenterPrint (self.owner, "^1\80\81^7\81\81\81\81\81\81\81\81\81\81\81\82\n");\r
895         }\r
896         if (countdown > .75)\r
897         {\r
898                 CenterPrint (self.owner, "^1\80\81\81^7\81\81\81\81\81\81\81\81\81\81\82\n");\r
899         }\r
900         if (countdown > 1)\r
901         {\r
902                 CenterPrint (self.owner, "^1\80\81\81\81^7\81\81\81\81\81\81\81\81\81\82\n");\r
903         }\r
904         if (countdown > 1.25)\r
905         {\r
906                 CenterPrint (self.owner, "^1\80\81\81\81\81^7\81\81\81\81\81\81\81\81\82\n");\r
907         }\r
908         if (countdown > 1.5)\r
909         {\r
910                 CenterPrint (self.owner, "^1\80\81\81\81\81\81^7\81\81\81\81\81\81\81\82\n");\r
911         }\r
912         if (countdown > 1.75)\r
913         {\r
914                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81^7\81\81\81\81\81\81\82\n");\r
915         }\r
916         if (countdown > 2)\r
917         {\r
918                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81\81^7\81\81\81\81\81\82\n");\r
919         }\r
920         if (countdown > 2.25)\r
921         {\r
922                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81\81\81^7\81\81\81\81\82\n");\r
923         }\r
924         if (countdown > 2.5)\r
925         {\r
926                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81\81\81\81^7\81\81\81\82\n");\r
927         }\r
928         if (countdown > 2.75)\r
929         {\r
930                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81\81\81\81\81^7\81\81\82\n");\r
931         }\r
932         if (countdown > 3)\r
933         {\r
934                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81\81\81\81\81\81^7\81\82\n");\r
935         }\r
936         if (countdown > 3.25)\r
937         {\r
938                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81\81\81\81\81\81\81^7\82\n");\r
939         }\r
940         if (countdown > 3.5)\r
941         {\r
942                 CenterPrint (self.owner, "^1\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");\r
943         }\r
944         if (countdown > 3.75)\r
945         {\r
946                 CenterPrint (self.owner, "^3\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");\r
947         }\r
948         if (countdown > 4)\r
949         {\r
950                 CenterPrint (self.owner, "\n");\r
951                 dremove(self);\r
952         }\r
953         else\r
954         {\r
955                 self.nextthink = (time + .25);\r
956         }\r
957 };