2 void () TeamFortress_GrenadePrimed;
\r
3 .float grenade_timer;
\r
6 // TF Recoil? Anyhoo, this entity causes oddities :/
\r
7 void(float psize, entity p) KickPlayer =
\r
21 void() TeamFortress_ExplodePerson =
\r
24 self.owner.tfstate = self.owner.tfstate - (self.owner.tfstate & 1);
\r
25 KickPlayer(-2, self.owner); // Doesnt wanna work right
\r
27 newmis.movetype = 10;
\r
29 newmis.classname = "grenade";
\r
30 newmis.team_no = self.owner.team_no;
\r
31 newmis.owner = self.owner;
\r
32 newmis.velocity = '0 0 0';
\r
33 newmis.angles = vectoangles(newmis.velocity);
\r
34 newmis.think = SUB_Null;
\r
35 // newmis.think = NormalGrenadeExplode;
\r
36 newmis.nextthink = time + 0.1;
\r
37 // if (self.weapon == 1)
\r
39 newmis.touch = NormalGrenadeTouch;
\r
40 newmis.think = NormalGrenadeExplode;
\r
42 newmis.avelocity = '300 300 300';
\r
43 self.owner.velocity = (((v_forward * 900) + '0 0 250') + (v_up * 100)); // Shoot the player hehe
\r
44 // setmodel(newmis, "progs/hgren2.mdl");
\r
45 setmodel(newmis, "models/grenades/fragnade.md3");
\r
50 if (self.weapon == 2)
\r
52 newmis.touch = ConcussionGrenadeTouch;
\r
53 newmis.think = ConcussionGrenadeExplode;
\r
55 newmis.avelocity = '300 300 300';
\r
56 setmodel(newmis, "progs/hgren2.mdl");
\r
60 if (self.weapon == 3)
\r
62 newmis.touch = NailGrenadeTouch;
\r
63 newmis.think = NailGrenadeExplode;
\r
65 newmis.avelocity = '0 300 0';
\r
66 setmodel(newmis, "progs/biggren.mdl");
\r
70 if (self.weapon == 4)
\r
72 newmis.touch = MirvGrenadeTouch;
\r
73 newmis.think = MirvGrenadeExplode;
\r
75 newmis.avelocity = '0 300 0';
\r
76 setmodel(newmis, "progs/biggren.mdl");
\r
80 if (self.weapon == 5)
\r
82 newmis.touch = NapalmGrenadeTouch;
\r
83 newmis.think = NapalmGrenadeExplode;
\r
85 newmis.avelocity = '0 300 0';
\r
86 setmodel(newmis, "progs/biggren.mdl");
\r
90 if (self.weapon == 6)
\r
92 sprint(self.owner, 2, "Flare lit.\n");
\r
94 te.touch = SUB_Null;
\r
95 te.think = RemoveFlare;
\r
96 te.nextthink = time + 25;
\r
97 te.owner = self.owner;
\r
99 self.owner.effects = self.owner.effects | 4;
\r
106 if (self.weapon == 7)
\r
108 newmis.touch = GasGrenadeTouch;
\r
109 newmis.think = GasGrenadeExplode;
\r
111 newmis.avelocity = '300 300 300';
\r
112 setmodel(newmis, "progs/grenade2.mdl");
\r
116 if (self.weapon == 8)
\r
118 newmis.touch = EMPGrenadeTouch;
\r
119 newmis.think = EMPGrenadeExplode;
\r
121 newmis.avelocity = '300 300 300';
\r
122 setmodel(newmis, "progs/grenade2.mdl");
\r
126 if (self.weapon == 9)
\r
128 newmis.touch = FlashGrenadeTouch;
\r
129 newmis.think = FlashGrenadeExplode;
\r
131 newmis.avelocity = '300 300 300';
\r
132 setmodel(newmis, "progs/grenade2.mdl");
\r
142 setsize(newmis, '0 0 0', '0 0 0');
\r
143 setorigin(newmis, self.owner.origin);
\r
145 bprint(self.owner.netname);
\r
146 bprint(", throw the grenade, not the pin!\n");
\r
150 void() NormalGrenadeTouch =
\r
152 if (other == self.owner)
\r
156 sound(self, 1, "weapons/bounce.wav", 1, 1);
\r
157 if (self.velocity == '0 0 0')
\r
159 self.avelocity = '0 0 0';
\r
163 void () NormalGrenadeExplode =
\r
166 T_RadiusDamage (self, self.owner, 180, world);
\r
169 WriteCoord (0, self.origin_x);
\r
170 WriteCoord (0, self.origin_y);
\r
171 WriteCoord (0, self.origin_z);
\r
172 BecomeExplosion ();
\r
175 // TF Prime Grenade Function
\r
176 void () TeamFortress_PrimeGrenade =
\r
180 local string ptime;
\r
181 local entity tGrenade;
\r
183 if (((self.tfstate & 1) || (self.tfstate & 1024)))
\r
187 if ((self.impulse == 150))
\r
189 gtype = self.tp_grenades_1;
\r
191 if ((self.tp_grenades_1 == 2))
\r
193 gs = "Concussion grenade";
\r
197 if ((self.tp_grenades_1 == 3))
\r
199 gs = "Nail grenade";
\r
203 if ((self.tp_grenades_1 == 4))
\r
205 gs = "Mirv grenade";
\r
209 if ((self.tp_grenades_1 == 5))
\r
211 gs = "Napalm grenade";
\r
215 if ((self.tp_grenades_1 == 6))
\r
221 if ((self.tp_grenades_1 == 7))
\r
223 gs = "Gas grenade";
\r
227 if ((self.tp_grenades_1 == 8))
\r
229 gs = "EMP grenade";
\r
233 if ((self.tp_grenades_1 == 10))
\r
235 gs = "Caltrop canister";
\r
239 if ((self.tp_grenades_1 == 9))
\r
241 gs = "Flash grenade";
\r
257 if ((self.no_grenades_1 > 0))
\r
259 self.no_grenades_1 = (self.no_grenades_1 - 1);
\r
260 /*if ((gtype == 6))
\r
263 newmis.owner = self;
\r
264 newmis.movetype = 6;
\r
266 newmis.classname = "grenade";
\r
267 makevectors (self.v_angle);
\r
268 newmis.velocity = ((v_forward * 600) + (v_up * 25));
\r
269 newmis.velocity = (newmis.velocity * 700);
\r
270 newmis.angles = vectoangles (newmis.velocity);
\r
271 newmis.weapon = self.team_no;
\r
272 newmis.think = FlareGrenadeExplode;
\r
273 newmis.nextthink = (time + 0.8);
\r
274 newmis.touch = FlareGrenadeTouch;
\r
276 newmis.mdl = "flare";
\r
277 setmodel (newmis, "progs/flare.mdl");
\r
278 setsize (newmis, '0 0 0', '0 0 0');
\r
279 setorigin (newmis, self.origin);
\r
284 ptime = ftos (0.5);
\r
285 sprint (self, "Opening ");
\r
287 sprint (self, "...\n");
\r
291 sound (self, CHAN_WEAPON, "weapons/prime.wav", 1, ATTN_STATIC);
\r
292 stuffcmd (self, "play weapons/gren.wav\n");
\r
295 sprint (self, " primed, ");
\r
296 sprint (self, ptime);
\r
297 sprint (self, " seconds...\n");
\r
302 sprint (self, "No ");
\r
304 sprint (self, "s left.\n");
\r
308 /* if ((self.impulse == 151))
\r
310 gtype = self.tp_grenades_2;
\r
311 if ((self.tp_grenades_2 == 2))
\r
313 gs = "Concussion grenade";
\r
317 if ((self.tp_grenades_2 == 3))
\r
319 gs = "Nail grenade";
\r
323 if ((self.tp_grenades_2 == 4))
\r
325 gs = "Mirv grenade";
\r
329 if ((self.tp_grenades_2 == 5))
\r
331 gs = "Napalm grenade";
\r
335 if ((self.tp_grenades_2 == 6))
\r
341 if ((self.tp_grenades_2 == 7))
\r
343 gs = "Gas grenade";
\r
347 if ((self.tp_grenades_2 == 8))
\r
349 gs = "EMP grenade";
\r
353 if ((self.tp_grenades_2 == 9))
\r
355 gs = "Flash grenade";
\r
368 if ((self.no_grenades_2 > 0))
\r
370 self.no_grenades_2 = (self.no_grenades_2 - 1);
\r
374 newmis.owner = self;
\r
375 newmis.movetype = 6;
\r
377 newmis.classname = "grenade";
\r
378 makevectors (self.v_angle);
\r
379 if (self.v_angle_x)
\r
381 newmis.velocity = ((v_forward * 1200) + (v_up * 200));
\r
385 newmis.velocity = aim (self, 10000);
\r
386 newmis.velocity = (newmis.velocity * 1200);
\r
387 newmis.velocity_z = 75;
\r
389 newmis.angles = vectoangles (newmis.velocity);
\r
390 newmis.weapon = self.team_no;
\r
391 newmis.think = FlareGrenadeExplode;
\r
392 newmis.nextthink = (time + 0.8);
\r
393 newmis.touch = FlareGrenadeTouch;
\r
395 newmis.mdl = "flare";
\r
396 setmodel (newmis, "progs/flare.mdl");
\r
397 setsize (newmis, '0 0 0', '0 0 0');
\r
398 setorigin (newmis, self.origin);
\r
403 ptime = ftos (0.5);
\r
404 sprint (self, 2, "Opening ");
\r
405 sprint (self, 2, gs);
\r
406 sprint (self, 2, "...\n");
\r
411 sprint (self, 2, gs);
\r
412 sprint (self, 2, " primed, ");
\r
413 sprint (self, 2, ptime);
\r
414 sprint (self, 2, " seconds...\n");
\r
419 sprint (self, 2, "No ");
\r
420 sprint (self, 2, gs);
\r
421 sprint (self, 2, "s left.\n");
\r
425 self.tfstate = (self.tfstate | 1);
\r
426 tGrenade = spawn ();
\r
427 tGrenade.owner = self;
\r
428 tGrenade.weapon = gtype;
\r
429 tGrenade.classname = "primer";
\r
430 tGrenade.impulse = self.impulse;
\r
431 tGrenade.nextthink = (time + 0.8);
\r
432 tGrenade.heat = time + 4;
\r
434 /* // Make Centerprint timer // Taken out due to the fact that the function sucked
\r
436 newmis.owner = self;
\r
437 newmis.classname = "primedtimer";
\r
438 newmis.think = CP_Timer;
\r
439 newmis.nextthink = (time);
\r
440 self.grenade_timer = time; */
\r
441 /*if ((gtype == 10))
\r
443 tGrenade.heat = ((time + 0.5) + 0.5);
\r
447 tGrenade.heat = ((time + 3) + 0.8);
\r
449 tGrenade.think = TeamFortress_GrenadePrimed;
\r
452 void () TeamFortress_GrenadePrimed =
\r
455 local entity oldself;
\r
458 if ((!(user.tfstate & 1024) && !user.deadflag))
\r
460 self.nextthink = (time + 0.1);
\r
465 if ((time > self.heat))
\r
467 TeamFortress_ExplodePerson ();
\r
471 if (!(user.tfstate & 1))
\r
473 dprint ("GrenadePrimed logic error\n");
\r
475 user.tfstate = (user.tfstate - (user.tfstate & 1));
\r
476 user.tfstate = (user.tfstate - (user.tfstate & 1024));
\r
477 // sound (user, 1, "weapons/grenade.wav", 1, 1);
\r
478 KickPlayer (-1, user);
\r
480 newmis.owner = user;
\r
481 newmis.movetype = 10;
\r
483 newmis.classname = "grenade";
\r
484 makevectors (user.v_angle);
\r
487 newmis.velocity = '0 0 200';
\r
491 if (user.v_angle_x)
\r
493 newmis.velocity = ((((v_forward * 600) + (v_up * 200)) + ((crandom () * v_right) * 10)) + ((crandom () * v_up) * 10));
\r
497 newmis.velocity = aim (user, 10000);
\r
498 newmis.velocity = (newmis.velocity * 600);
\r
499 newmis.velocity_z = 200;
\r
502 newmis.angles = vectoangles (newmis.velocity);
\r
503 newmis.think = SUB_Null;
\r
504 newmis.nextthink = self.heat;
\r
505 // if ((self.weapon == 1))
\r
507 newmis.touch = NormalGrenadeTouch;
\r
508 newmis.think = NormalGrenadeExplode;
\r
510 newmis.avelocity = '300 300 300';
\r
511 // setmodel (newmis, "progs/hgren2.mdl");
\r
512 setmodel(newmis, "models/grenades/fragnade.md3");
\r
516 if ((self.weapon == 2))
\r
518 newmis.touch = ConcussionGrenadeTouch;
\r
519 newmis.think = ConcussionGrenadeExplode;
\r
521 newmis.avelocity = '300 300 300';
\r
522 setmodel (newmis, "progs/hgren2.mdl");
\r
526 if ((self.weapon == 3))
\r
528 newmis.touch = NailGrenadeTouch;
\r
529 newmis.think = NailGrenadeExplode;
\r
531 newmis.avelocity = '0 300 0';
\r
532 setmodel (newmis, "progs/biggren.mdl");
\r
536 if ((self.weapon == 4))
\r
538 newmis.touch = MirvGrenadeTouch;
\r
539 newmis.think = MirvGrenadeExplode;
\r
541 newmis.avelocity = '0 300 0';
\r
542 setmodel (newmis, "progs/biggren.mdl");
\r
546 if ((self.weapon == 5))
\r
548 newmis.touch = NapalmGrenadeTouch;
\r
549 newmis.think = NapalmGrenadeExplode;
\r
551 newmis.avelocity = '0 300 0';
\r
552 setmodel (newmis, "progs/biggren.mdl");
\r
556 if ((self.weapon == 6))
\r
558 newmis.touch = FlareGrenadeTouch;
\r
559 newmis.weapon = self.team_no;
\r
560 newmis.think = FlareGrenadeExplode;
\r
562 newmis.avelocity = '300 300 300';
\r
563 newmis.mdl = "flare";
\r
564 setmodel (newmis, "progs/flare.mdl");
\r
568 if ((self.weapon == 7))
\r
570 newmis.touch = GasGrenadeTouch;
\r
571 newmis.think = GasGrenadeExplode;
\r
573 newmis.avelocity = '300 300 300';
\r
574 setmodel (newmis, "progs/grenade2.mdl");
\r
578 if ((self.weapon == 8))
\r
580 newmis.touch = EMPGrenadeTouch;
\r
581 newmis.think = EMPGrenadeExplode;
\r
583 newmis.avelocity = '300 300 300';
\r
584 setmodel (newmis, "progs/grenade2.mdl");
\r
588 if ((self.weapon == 10))
\r
590 newmis.touch = CanisterTouch;
\r
591 newmis.think = ScatterCaltrops;
\r
593 newmis.avelocity = '0 0 0';
\r
597 if ((self.weapon == 9))
\r
599 newmis.touch = FlashGrenadeTouch;
\r
600 newmis.think = FlashGrenadeExplode;
\r
602 newmis.avelocity = '300 300 300';
\r
603 setmodel (newmis, "progs/hgren2.mdl");
\r
614 setsize (newmis, '0 0 0', '0 0 0');
\r
615 setorigin (newmis, user.origin);
\r
622 void () TeamFortress_ThrowGrenade =
\r
624 if (!(self.tfstate & 1))
\r
628 sound(self, 3, "weapons/throw.wav", 1, 1);
\r
629 self.tfstate = (self.tfstate | 1024);
\r
632 // TF Grenade CenterPrint Timer - it sucks so I took it out:x
\r
635 local float countdown;
\r
637 countdown = (time - self.owner.grenade_timer);
\r
641 CenterPrint (self.owner, "^7
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^1\n");
\r
643 if (countdown > .25)
\r
645 CenterPrint (self.owner, "^1
\80^7
\81\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
647 if (countdown > .5)
\r
649 CenterPrint (self.owner, "^1
\80\81^7
\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
651 if (countdown > .75)
\r
653 CenterPrint (self.owner, "^1
\80\81\81^7
\81\81\81\81\81\81\81\81\81\81\82\n");
\r
657 CenterPrint (self.owner, "^1
\80\81\81\81^7
\81\81\81\81\81\81\81\81\81\82\n");
\r
659 if (countdown > 1.25)
\r
661 CenterPrint (self.owner, "^1
\80\81\81\81\81^7
\81\81\81\81\81\81\81\81\82\n");
\r
663 if (countdown > 1.5)
\r
665 CenterPrint (self.owner, "^1
\80\81\81\81\81\81^7
\81\81\81\81\81\81\81\82\n");
\r
667 if (countdown > 1.75)
\r
669 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81^7
\81\81\81\81\81\81\82\n");
\r
673 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81^7
\81\81\81\81\81\82\n");
\r
675 if (countdown > 2.25)
\r
677 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81^7
\81\81\81\81\82\n");
\r
679 if (countdown > 2.5)
\r
681 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81^7
\81\81\81\82\n");
\r
683 if (countdown > 2.75)
\r
685 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81^7
\81\81\82\n");
\r
689 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81^7
\81\82\n");
\r
691 if (countdown > 3.25)
\r
693 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81^7
\82\n");
\r
695 if (countdown > 3.5)
\r
697 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
699 if (countdown > 3.75)
\r
701 CenterPrint (self.owner, "^3
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
705 CenterPrint (self.owner, "\n");
\r
710 self.nextthink = (time + .25);
\r