2 void () TeamFortress_GrenadePrimed;
\r
3 .float grenade_timer;
\r
7 /*=======================
\r
8 General grenade explode
\r
9 ======================*/
\r
10 void () GrenadeExplode =
\r
19 if ((self.classname == "pipebomb"))
\r
21 num_world_pipebombs = (num_world_pipebombs - 1);
\r
22 decrement_team_pipebombs (self.team_no);
\r
23 if (!(self.flags & 512))
\r
28 if ((self.owner.has_disconnected != 1))
\r
30 deathmsg = self.weapon;
\r
31 T_RadiusDamage (self, self.owner, 120, world);
\r
33 /* if ((self.no_active_nail_grens != 0))
\r
35 self.no_active_nail_grens = 0;
\r
36 self.owner.no_active_nail_grens = (self.owner.no_active_nail_grens - 1);
\r
37 te = find (world, classname, "grenade");
\r
40 if (((te.owner == self.owner) && (te.no_active_nail_grens != 0)))
\r
42 te.no_active_nail_grens = (te.no_active_nail_grens - 1);
\r
44 te = find (te, classname, "grenade");
\r
49 WriteCoord (0, self.origin_x);
\r
50 WriteCoord (0, self.origin_y);
\r
51 WriteCoord (0, self.origin_z);
\r
55 // TF Recoil? Anyhoo, this entity causes oddities :/
\r
56 void(float psize, entity p) KickPlayer =
\r
73 void () FlashGrenadeTouch =
\r
75 sound (self, 1, "weapons/bounce.wav", 1, 1);
\r
76 if ((self.velocity == '0 0 0'))
\r
78 self.avelocity = '0 0 0';
\r
82 void () FlashTimer =
\r
88 te.FlashTime = (te.FlashTime - 0.100000);
\r
89 if ((te.FlashTime <= 0.000000))
\r
91 te.FlashTime = 0.000000;
\r
92 stuffcmd (te, "v_cshift 0\n");
\r
93 stuffcmd (te, "r_bloom_power 2\n");
\r
94 stuffcmd (te, "r_bloom_intensity 1.5\n");
\r
98 if ((te.FlashTime < 1.700000))
\r
100 st = ftos ((te.FlashTime * 150.000000));
\r
101 // lets add a bloom check later?
\r
103 <LordHavoc> avirox: stuffcmd(self, "cmd mycvar $mycvar\n");
\r
104 <LordHavoc> avirox: then later in your SV_ParseClientCommand() qc function you'll see a string come in like "mycvar 1"
\r
106 stuffcmd (te, "v_cshift ");
\r
108 stuffcmd (te, " ");
\r
110 stuffcmd (te, " ");
\r
112 stuffcmd (te, " ");
\r
114 stuffcmd (te, "\n");
\r
117 stuffcmd (te, "r_bloom_power 1\n");
\r
119 st = ftos(2 + (te.FlashTime * 10));
\r
120 stuffcmd (te, "r_bloom_intensity ");
\r
122 stuffcmd (te, "\n");
\r
125 if ((te.FlashTime >= 1.700000))
\r
127 stuffcmd (te, "v_cshift 255 255 255 255\n");
\r
129 if ((te.FlashTime <= 0.000000))
\r
131 te.FlashTime = 0.000000;
\r
132 stuffcmd (te, "v_cshift 0\n");
\r
133 stuffcmd (te, "r_bloom_power 2\n");
\r
134 stuffcmd (te, "r_bloom_intensity 1.5\n");
\r
138 self.nextthink = (time + 0.100000);
\r
141 void () FlashGrenadeExplode =
\r
143 local float expsize;
\r
145 local entity oldself;
\r
148 self.effects = (self.effects | 4);
\r
151 WriteCoord (0, self.origin_x);
\r
152 WriteCoord (0, self.origin_y);
\r
153 WriteCoord (0, self.origin_z);
\r
154 te = findradius (self.origin, 300);
\r
157 if ((te.classname == "player" && te.team_no != self.owner.team_no || te == self.owner))
\r
159 traceline (self.origin, te.origin, 1, self);
\r
160 if ((trace_fraction == 1))
\r
162 if ((vlen ((self.origin - te.origin)) <= 200))
\r
165 TF_T_Damage (te, self, self.owner, 60, 2, (16 | 4));
\r
167 if (te.health > TF_FLARE_LIT)
\r
169 if (te.FlashTime == TF_FLARE_LIT)
\r
172 newmis.classname = "timer";
\r
173 newmis.netname = "flashtimer";
\r
174 newmis.team_no = self.owner.team_no;
\r
176 newmis.think = FlashTimer;
\r
177 newmis.nextthink = (time + 0.100000);
\r
179 te.FlashTime = 4.500000;
\r
180 stuffcmd (te, "v_cshift 255 255 255 255\n");
\r
186 BecomeExplosion ();
\r
192 void() NailGrenadeTouch;
\r
193 void() NailGrenadeExplode;
\r
194 void() NailGrenadeNailEm;
\r
195 void() NailGrenadeLaunchNail;
\r
196 void() GrenadeExplode;
\r
198 void() NailGrenadeTouch =
\r
200 if (other == self.owner)
\r
204 sound(self, TF_FLARE_OFF, "weapons/bounce.wav", TF_FLARE_OFF, TF_FLARE_OFF);
\r
205 if (self.velocity == '0 0 0')
\r
207 self.avelocity = '0 0 0';
\r
211 void() NailGrenadeExplode =
\r
214 setorigin(self, self.origin + '0 0 32');
\r
215 self.avelocity = '0 500 0';
\r
216 self.nextthink = time + 0.7;
\r
217 self.think = NailGrenadeNailEm;
\r
220 void() NailGrenadeNailEm =
\r
222 self.velocity = '0 0 0';
\r
223 self.nextthink = time + 0.1;
\r
224 self.think = NailGrenadeLaunchNail;
\r
225 self.playerclass = TF_FLARE_LIT;
\r
228 void() NailGrenadeLaunchNail =
\r
233 while (i < TF_FLARE_OFF)
\r
235 j = (random() + 2) * 5;
\r
236 current_yaw = anglemod(self.angles_y + j);
\r
237 self.angles_y = current_yaw;
\r
238 self.angles_x = TF_FLARE_LIT;
\r
239 self.angles_z = TF_FLARE_LIT;
\r
240 makevectors(self.angles);
\r
241 deathmsg = 99; //temp
\r
242 launch_spike(self.origin, v_forward);
\r
243 newmis.touch = superspike_touch;
\r
245 i = i + TF_FLARE_OFF;
\r
247 self.playerclass = self.playerclass + TF_FLARE_OFF;
\r
248 self.nextthink = time + 0.1;
\r
249 if (self.playerclass > 40)
\r
252 self.think = GrenadeExplode;
\r
256 /*=====================
\r
258 ===================*/
\r
260 void() TeamFortress_ExplodePerson =
\r
263 self.owner.tfstate = self.owner.tfstate - (self.owner.tfstate & 1);
\r
264 KickPlayer(-2, self.owner); // Doesnt wanna work right
\r
266 newmis.movetype = 10;
\r
268 newmis.classname = "grenade";
\r
269 newmis.team_no = self.owner.team_no;
\r
270 newmis.owner = self.owner;
\r
271 newmis.velocity = '0 0 0';
\r
272 newmis.angles = vectoangles(newmis.velocity);
\r
273 newmis.think = SUB_Null;
\r
274 // newmis.think = NormalGrenadeExplode;
\r
275 newmis.nextthink = time + 0.1;
\r
276 if (self.weapon == 1)
\r
278 newmis.touch = NormalGrenadeTouch;
\r
279 newmis.think = NormalGrenadeExplode;
\r
281 newmis.avelocity = '300 300 300';
\r
282 self.owner.velocity = (((v_forward * 900) + '0 0 250') + (v_up * 100)); // Shoot the player hehe
\r
283 // setmodel(newmis, "progs/hgren2.mdl");
\r
284 setmodel(newmis, "models/grenades/fragnade.md3");
\r
289 if (self.weapon == 2)
\r
291 newmis.touch = ConcussionGrenadeTouch;
\r
292 newmis.think = ConcussionGrenadeExplode;
\r
294 newmis.avelocity = '300 300 300';
\r
295 setmodel(newmis, "progs/hgren2.mdl");
\r
299 if (self.weapon == 3)
\r
301 newmis.touch = NailGrenadeTouch;
\r
302 newmis.think = NailGrenadeExplode;
\r
304 newmis.avelocity = '0 300 0';
\r
305 setmodel(newmis, "progs/biggren.mdl");
\r
309 if (self.weapon == 4)
\r
311 newmis.touch = MirvGrenadeTouch;
\r
312 newmis.think = MirvGrenadeExplode;
\r
314 newmis.avelocity = '0 300 0';
\r
315 setmodel(newmis, "progs/biggren.mdl");
\r
319 if (self.weapon == 5)
\r
321 newmis.touch = NapalmGrenadeTouch;
\r
322 newmis.think = NapalmGrenadeExplode;
\r
324 newmis.avelocity = '0 300 0';
\r
325 setmodel(newmis, "progs/biggren.mdl");
\r
329 if (self.weapon == 6)
\r
331 sprint(self.owner, "Flare lit.\n");
\r
333 te.touch = SUB_Null;
\r
334 te.think = RemoveFlare;
\r
335 te.nextthink = time + 25;
\r
336 te.owner = self.owner;
\r
338 self.owner.effects = self.owner.effects | 4;
\r
345 if (self.weapon == 7)
\r
347 newmis.touch = GasGrenadeTouch;
\r
348 newmis.think = GasGrenadeExplode;
\r
350 newmis.avelocity = '300 300 300';
\r
351 setmodel(newmis, "progs/grenade2.mdl");
\r
355 if (self.weapon == 8)
\r
357 newmis.touch = EMPGrenadeTouch;
\r
358 newmis.think = EMPGrenadeExplode;
\r
360 newmis.avelocity = '300 300 300';
\r
361 setmodel(newmis, "progs/grenade2.mdl");
\r
365 if (self.weapon == 9)
\r
367 newmis.touch = FlashGrenadeTouch;
\r
368 newmis.think = FlashGrenadeExplode;
\r
370 newmis.avelocity = '300 300 300';
\r
371 setmodel(newmis, "progs/grenade2.mdl");
\r
381 setsize(newmis, '0 0 0', '0 0 0');
\r
382 setorigin(newmis, self.owner.origin);
\r
384 bprint(self.owner.netname);
\r
385 bprint(", throw the grenade, not the pin!\n");
\r
389 void() NormalGrenadeTouch =
\r
391 if (other == self.owner)
\r
395 sound(self, 1, "weapons/bounce.wav", 1, 1);
\r
396 if (self.velocity == '0 0 0')
\r
398 self.avelocity = '0 0 0';
\r
402 void () NormalGrenadeExplode =
\r
405 T_RadiusDamage (self, self.owner, 180, world);
\r
408 WriteCoord (0, self.origin_x);
\r
409 WriteCoord (0, self.origin_y);
\r
410 WriteCoord (0, self.origin_z);
\r
411 BecomeExplosion ();
\r
414 // TF Prime Grenade Function
\r
415 void () TeamFortress_PrimeGrenade =
\r
419 local string ptime;
\r
420 local entity tGrenade;
\r
422 if (((self.tfstate & 1) || (self.tfstate & 1024)))
\r
426 if ((self.impulse == 150))
\r
428 gtype = self.tp_grenades_1;
\r
430 if ((self.tp_grenades_1 == 2))
\r
432 gs = "Concussion grenade";
\r
436 if ((self.tp_grenades_1 == 3))
\r
438 gs = "Nail grenade";
\r
442 if ((self.tp_grenades_1 == 4))
\r
444 gs = "Mirv grenade";
\r
448 if ((self.tp_grenades_1 == 5))
\r
450 gs = "Napalm grenade";
\r
454 if ((self.tp_grenades_1 == 6))
\r
460 if ((self.tp_grenades_1 == 7))
\r
462 gs = "Gas grenade";
\r
466 if ((self.tp_grenades_1 == 8))
\r
468 gs = "EMP grenade";
\r
472 if ((self.tp_grenades_1 == 10))
\r
474 gs = "Caltrop canister";
\r
478 if ((self.tp_grenades_1 == 9))
\r
480 gs = "Flash grenade";
\r
496 if ((self.no_grenades_1 > 0))
\r
498 self.no_grenades_1 = (self.no_grenades_1 - 1);
\r
499 /*if ((gtype == 6))
\r
502 newmis.owner = self;
\r
503 newmis.movetype = 6;
\r
505 newmis.classname = "grenade";
\r
506 makevectors (self.v_angle);
\r
507 newmis.velocity = ((v_forward * 600) + (v_up * 25));
\r
508 newmis.velocity = (newmis.velocity * 700);
\r
509 newmis.angles = vectoangles (newmis.velocity);
\r
510 newmis.weapon = self.team_no;
\r
511 newmis.think = FlareGrenadeExplode;
\r
512 newmis.nextthink = (time + 0.8);
\r
513 newmis.touch = FlareGrenadeTouch;
\r
515 newmis.mdl = "flare";
\r
516 setmodel (newmis, "progs/flare.mdl");
\r
517 setsize (newmis, '0 0 0', '0 0 0');
\r
518 setorigin (newmis, self.origin);
\r
523 ptime = ftos (0.5);
\r
524 sprint (self, "Opening ");
\r
526 sprint (self, "...\n");
\r
530 sound (self, CHAN_WEAPON, "weapons/prime.wav", 1, ATTN_STATIC);
\r
531 stuffcmd (self, "play weapons/gren.wav\n");
\r
534 sprint (self, " primed, ");
\r
535 sprint (self, ptime);
\r
536 sprint (self, " seconds...\n");
\r
541 sprint (self, "No ");
\r
543 sprint (self, "s left.\n");
\r
547 if ((self.impulse == 151))
\r
549 if (self.tp_grenades_2 == 0)
\r
551 gtype = self.tp_grenades_2;
\r
552 /* if ((self.tp_grenades_2 == 2))
\r
554 gs = "Concussion grenade";
\r
558 if ((self.tp_grenades_2 == 3))
\r
560 gs = "Nail grenade";
\r
564 if ((self.tp_grenades_2 == 4))
\r
566 gs = "Mirv grenade";
\r
570 if ((self.tp_grenades_2 == 5))
\r
572 gs = "Napalm grenade";
\r
576 if ((self.tp_grenades_2 == 6))
\r
582 if ((self.tp_grenades_2 == 7))
\r
584 gs = "Gas grenade";
\r
588 if ((self.tp_grenades_2 == 8))
\r
590 gs = "EMP grenade";
\r
594 if ((self.tp_grenades_2 == 9))
\r
596 gs = "Flash grenade";
\r
609 if ((self.no_grenades_2 > 0))
\r
611 self.no_grenades_2 = (self.no_grenades_2 - 1);
\r
612 /* if ((gtype == 6))
\r
615 newmis.owner = self;
\r
616 newmis.movetype = 6;
\r
618 newmis.classname = "grenade";
\r
619 makevectors (self.v_angle);
\r
620 if (self.v_angle_x)
\r
622 newmis.velocity = ((v_forward * 1200) + (v_up * 200));
\r
626 newmis.velocity = aim (self, 10000);
\r
627 newmis.velocity = (newmis.velocity * 1200);
\r
628 newmis.velocity_z = 75;
\r
630 newmis.angles = vectoangles (newmis.velocity);
\r
631 newmis.weapon = self.team_no;
\r
632 newmis.think = FlareGrenadeExplode;
\r
633 newmis.nextthink = (time + 0.8);
\r
634 newmis.touch = FlareGrenadeTouch;
\r
636 newmis.mdl = "flare";
\r
637 setmodel (newmis, "progs/flare.mdl");
\r
638 setsize (newmis, '0 0 0', '0 0 0');
\r
639 setorigin (newmis, self.origin);
\r
644 ptime = ftos (0.5);
\r
645 sprint (self, "Opening ");
\r
647 sprint (self, "...\n");
\r
653 sprint (self, " primed, ");
\r
654 sprint (self, ptime);
\r
655 sprint (self, " seconds...\n");
\r
660 sprint (self, "No ");
\r
662 sprint (self, "s left.\n");
\r
666 self.tfstate = (self.tfstate | 1);
\r
667 tGrenade = spawn ();
\r
668 tGrenade.owner = self;
\r
669 tGrenade.weapon = gtype;
\r
670 tGrenade.classname = "primer";
\r
671 tGrenade.impulse = self.impulse;
\r
672 tGrenade.nextthink = (time + 0.8);
\r
673 tGrenade.heat = time + 4;
\r
675 /* // Make Centerprint timer // Taken out due to the fact that the function sucked
\r
677 newmis.owner = self;
\r
678 newmis.classname = "primedtimer";
\r
679 newmis.think = CP_Timer;
\r
680 newmis.nextthink = (time);
\r
681 self.grenade_timer = time; */
\r
682 /*if ((gtype == 10))
\r
684 tGrenade.heat = ((time + 0.5) + 0.5);
\r
688 tGrenade.heat = ((time + 3) + 0.8);
\r
690 tGrenade.think = TeamFortress_GrenadePrimed;
\r
693 void () TeamFortress_GrenadePrimed =
\r
696 local entity oldself;
\r
699 if ((!(user.tfstate & 1024) && !user.deadflag))
\r
701 self.nextthink = (time + 0.1);
\r
706 if ((time > self.heat))
\r
708 TeamFortress_ExplodePerson ();
\r
712 if (!(user.tfstate & 1))
\r
714 dprint ("GrenadePrimed logic error\n");
\r
716 user.tfstate = (user.tfstate - (user.tfstate & 1));
\r
717 user.tfstate = (user.tfstate - (user.tfstate & 1024));
\r
718 // sound (user, 1, "weapons/grenade.wav", 1, 1);
\r
719 KickPlayer (-1, user);
\r
721 newmis.owner = user;
\r
722 newmis.movetype = 10;
\r
724 newmis.classname = "grenade";
\r
725 makevectors (user.v_angle);
\r
728 newmis.velocity = '0 0 200';
\r
732 if (user.v_angle_x)
\r
734 newmis.velocity = ((((v_forward * 600) + (v_up * 200)) + ((crandom () * v_right) * 10)) + ((crandom () * v_up) * 10));
\r
738 newmis.velocity = aim (user, 10000);
\r
739 newmis.velocity = (newmis.velocity * 600);
\r
740 newmis.velocity_z = 200;
\r
743 newmis.angles = vectoangles (newmis.velocity);
\r
744 newmis.think = SUB_Null;
\r
745 newmis.nextthink = self.heat;
\r
746 if ((self.weapon == 1))
\r
748 newmis.touch = NormalGrenadeTouch;
\r
749 newmis.think = NormalGrenadeExplode;
\r
751 newmis.avelocity = '300 300 300';
\r
752 // setmodel (newmis, "progs/hgren2.mdl");
\r
753 setmodel(newmis, "models/grenades/fragnade.md3");
\r
755 else if ((self.weapon == 9))
\r
757 newmis.touch = FlashGrenadeTouch;
\r
758 newmis.think = FlashGrenadeExplode;
\r
760 newmis.avelocity = '300 300 300';
\r
761 setmodel (newmis, "progs/hgren2.mdl");
\r
765 if ((self.weapon == 2))
\r
767 newmis.touch = ConcussionGrenadeTouch;
\r
768 newmis.think = ConcussionGrenadeExplode;
\r
770 newmis.avelocity = '300 300 300';
\r
771 setmodel (newmis, "progs/hgren2.mdl");
\r
775 if ((self.weapon == 3))
\r
777 newmis.touch = NailGrenadeTouch;
\r
778 newmis.think = NailGrenadeExplode;
\r
780 newmis.avelocity = '0 300 0';
\r
781 setmodel (newmis, "progs/biggren.mdl");
\r
785 if ((self.weapon == 4))
\r
787 newmis.touch = MirvGrenadeTouch;
\r
788 newmis.think = MirvGrenadeExplode;
\r
790 newmis.avelocity = '0 300 0';
\r
791 setmodel (newmis, "progs/biggren.mdl");
\r
795 if ((self.weapon == 5))
\r
797 newmis.touch = NapalmGrenadeTouch;
\r
798 newmis.think = NapalmGrenadeExplode;
\r
800 newmis.avelocity = '0 300 0';
\r
801 setmodel (newmis, "progs/biggren.mdl");
\r
805 if ((self.weapon == 6))
\r
807 newmis.touch = FlareGrenadeTouch;
\r
808 newmis.weapon = self.team_no;
\r
809 newmis.think = FlareGrenadeExplode;
\r
811 newmis.avelocity = '300 300 300';
\r
812 newmis.mdl = "flare";
\r
813 setmodel (newmis, "progs/flare.mdl");
\r
817 if ((self.weapon == 7))
\r
819 newmis.touch = GasGrenadeTouch;
\r
820 newmis.think = GasGrenadeExplode;
\r
822 newmis.avelocity = '300 300 300';
\r
823 setmodel (newmis, "progs/grenade2.mdl");
\r
827 if ((self.weapon == 8))
\r
829 newmis.touch = EMPGrenadeTouch;
\r
830 newmis.think = EMPGrenadeExplode;
\r
832 newmis.avelocity = '300 300 300';
\r
833 setmodel (newmis, "progs/grenade2.mdl");
\r
837 if ((self.weapon == 10))
\r
839 newmis.touch = CanisterTouch;
\r
840 newmis.think = ScatterCaltrops;
\r
842 newmis.avelocity = '0 0 0';
\r
846 if ((self.weapon == 9))
\r
848 newmis.touch = FlashGrenadeTouch;
\r
849 newmis.think = FlashGrenadeExplode;
\r
851 newmis.avelocity = '300 300 300';
\r
852 setmodel (newmis, "progs/hgren2.mdl");
\r
863 setsize (newmis, '0 0 0', '0 0 0');
\r
864 setorigin (newmis, user.origin);
\r
871 void () TeamFortress_ThrowGrenade =
\r
873 if (!(self.tfstate & 1))
\r
877 sound(self, 3, "weapons/throw.wav", 1, 1);
\r
878 self.tfstate = (self.tfstate | 1024);
\r
881 // TF Grenade CenterPrint Timer - it sucks so I took it out:x
\r
884 local float countdown;
\r
886 countdown = (time - self.owner.grenade_timer);
\r
890 CenterPrint (self.owner, "^7
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^1\n");
\r
892 if (countdown > .25)
\r
894 CenterPrint (self.owner, "^1
\80^7
\81\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
896 if (countdown > .5)
\r
898 CenterPrint (self.owner, "^1
\80\81^7
\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
900 if (countdown > .75)
\r
902 CenterPrint (self.owner, "^1
\80\81\81^7
\81\81\81\81\81\81\81\81\81\81\82\n");
\r
906 CenterPrint (self.owner, "^1
\80\81\81\81^7
\81\81\81\81\81\81\81\81\81\82\n");
\r
908 if (countdown > 1.25)
\r
910 CenterPrint (self.owner, "^1
\80\81\81\81\81^7
\81\81\81\81\81\81\81\81\82\n");
\r
912 if (countdown > 1.5)
\r
914 CenterPrint (self.owner, "^1
\80\81\81\81\81\81^7
\81\81\81\81\81\81\81\82\n");
\r
916 if (countdown > 1.75)
\r
918 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81^7
\81\81\81\81\81\81\82\n");
\r
922 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81^7
\81\81\81\81\81\82\n");
\r
924 if (countdown > 2.25)
\r
926 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81^7
\81\81\81\81\82\n");
\r
928 if (countdown > 2.5)
\r
930 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81^7
\81\81\81\82\n");
\r
932 if (countdown > 2.75)
\r
934 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81^7
\81\81\82\n");
\r
938 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81^7
\81\82\n");
\r
940 if (countdown > 3.25)
\r
942 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81^7
\82\n");
\r
944 if (countdown > 3.5)
\r
946 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
948 if (countdown > 3.75)
\r
950 CenterPrint (self.owner, "^3
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
954 CenterPrint (self.owner, "\n");
\r
959 self.nextthink = (time + .25);
\r