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