2 void () TeamFortress_GrenadePrimed;
\r
3 .float grenade_timer;
\r
7 /*=======================
\r
8 General grenade explode
\r
9 ======================*/
\r
10 void () GrenadeExplode =
\r
17 if ((self.classname == "pipebomb"))
\r
19 num_world_pipebombs = (num_world_pipebombs - 1);
\r
20 decrement_team_pipebombs (self.team_no);
\r
21 if (!(self.flags & 512))
\r
26 if ((self.owner.has_disconnected != 1))
\r
28 deathmsg = self.weapon;
\r
29 T_RadiusDamage (self, self.owner, 120, world);
\r
32 if ((self.no_active_nail_grens != 0))
\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
39 if (((te.owner == self.owner) && (te.no_active_nail_grens != 0)))
\r
41 te.no_active_nail_grens = (te.no_active_nail_grens - 1);
\r
43 te = find (te, classname, "grenade");
\r
48 WriteCoord (0, self.origin_x);
\r
49 WriteCoord (0, self.origin_y);
\r
50 WriteCoord (0, self.origin_z);
\r
54 // TF Recoil? Anyhoo, this entity causes oddities :/
\r
55 void(float psize, entity p) KickPlayer =
\r
72 void () FlashGrenadeTouch =
\r
74 sound (self, 1, "weapons/bounce.wav", 1, 1);
\r
75 if ((self.velocity == '0 0 0'))
\r
77 self.avelocity = '0 0 0';
\r
81 void () FlashTimer =
\r
87 te.FlashTime = (te.FlashTime - 0.100000);
\r
88 if ((te.FlashTime <= 0.000000))
\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
97 if ((te.FlashTime < 1.700000))
\r
99 st = ftos ((te.FlashTime * 150.000000));
\r
100 // lets add a bloom check later?
\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
105 stuffcmd (te, "v_cshift ");
\r
107 stuffcmd (te, " ");
\r
109 stuffcmd (te, " ");
\r
111 stuffcmd (te, " ");
\r
113 stuffcmd (te, "\n");
\r
116 stuffcmd (te, "r_bloom_power 1\n");
\r
118 st = ftos(2 + (te.FlashTime * 10));
\r
119 stuffcmd (te, "r_bloom_intensity ");
\r
121 stuffcmd (te, "\n");
\r
124 if ((te.FlashTime >= 1.700000))
\r
126 stuffcmd (te, "v_cshift 255 255 255 255\n");
\r
128 if ((te.FlashTime <= 0.000000))
\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
137 self.nextthink = (time + 0.100000);
\r
140 void () FlashGrenadeExplode =
\r
144 self.effects = (self.effects | 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
153 if ((te.classname == "player" && te.team_no != self.owner.team_no || te == self.owner))
\r
155 traceline (self.origin, te.origin, 1, self);
\r
156 if ((trace_fraction == 1))
\r
158 if ((vlen ((self.origin - te.origin)) <= 200))
\r
161 TF_T_Damage (te, self, self.owner, 60, 2, (16 | 4));
\r
163 if (te.health > TF_FLARE_LIT)
\r
165 if (te.FlashTime == TF_FLARE_LIT)
\r
168 newmis.classname = "timer";
\r
169 newmis.netname = "flashtimer";
\r
170 newmis.team_no = self.owner.team_no;
\r
172 newmis.think = FlashTimer;
\r
173 newmis.nextthink = (time + 0.100000);
\r
175 te.FlashTime = 4.500000;
\r
176 stuffcmd (te, "v_cshift 255 255 255 255\n");
\r
182 BecomeExplosion ();
\r
188 void() NailGrenadeTouch;
\r
189 void() NailGrenadeExplode;
\r
190 void() NailGrenadeNailEm;
\r
191 void() NailGrenadeLaunchNail;
\r
192 void() GrenadeExplode;
\r
194 void() NailGrenadeTouch =
\r
196 if (other == self.owner)
\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
203 self.avelocity = '0 0 0';
\r
207 void() NailGrenadeExplode =
\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
216 void() NailGrenadeNailEm =
\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
224 void() NailGrenadeLaunchNail =
\r
229 while (i < TF_FLARE_OFF)
\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
241 i = i + TF_FLARE_OFF;
\r
243 self.playerclass = self.playerclass + TF_FLARE_OFF;
\r
244 self.nextthink = time + 0.1;
\r
245 if (self.playerclass > 40)
\r
248 self.think = GrenadeExplode;
\r
252 /*=====================
\r
254 ===================*/
\r
256 void() TeamFortress_ExplodePerson =
\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
262 newmis.movetype = 10;
\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
274 newmis.touch = NormalGrenadeTouch;
\r
275 newmis.think = NormalGrenadeExplode;
\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
285 if (self.weapon == 2)
\r
287 newmis.touch = ConcussionGrenadeTouch;
\r
288 newmis.think = ConcussionGrenadeExplode;
\r
290 newmis.avelocity = '300 300 300';
\r
291 setmodel(newmis, "progs/hgren2.mdl");
\r
295 if (self.weapon == 3)
\r
297 newmis.touch = NailGrenadeTouch;
\r
298 newmis.think = NailGrenadeExplode;
\r
300 newmis.avelocity = '0 300 0';
\r
301 setmodel(newmis, "progs/biggren.mdl");
\r
305 if (self.weapon == 4)
\r
307 newmis.touch = MirvGrenadeTouch;
\r
308 newmis.think = MirvGrenadeExplode;
\r
310 newmis.avelocity = '0 300 0';
\r
311 setmodel(newmis, "progs/biggren.mdl");
\r
315 if (self.weapon == 5)
\r
317 newmis.touch = NapalmGrenadeTouch;
\r
318 newmis.think = NapalmGrenadeExplode;
\r
320 newmis.avelocity = '0 300 0';
\r
321 setmodel(newmis, "progs/biggren.mdl");
\r
325 if (self.weapon == 6)
\r
327 sprint(self.owner, "Flare lit.\n");
\r
329 te.touch = SUB_Null;
\r
330 te.think = RemoveFlare;
\r
331 te.nextthink = time + 25;
\r
332 te.owner = self.owner;
\r
334 self.owner.effects = self.owner.effects | 4;
\r
341 if (self.weapon == 7)
\r
343 newmis.touch = GasGrenadeTouch;
\r
344 newmis.think = GasGrenadeExplode;
\r
346 newmis.avelocity = '300 300 300';
\r
347 setmodel(newmis, "progs/grenade2.mdl");
\r
351 if (self.weapon == 8)
\r
353 newmis.touch = EMPGrenadeTouch;
\r
354 newmis.think = EMPGrenadeExplode;
\r
356 newmis.avelocity = '300 300 300';
\r
357 setmodel(newmis, "progs/grenade2.mdl");
\r
361 if (self.weapon == 9)
\r
363 newmis.touch = FlashGrenadeTouch;
\r
364 newmis.think = FlashGrenadeExplode;
\r
366 newmis.avelocity = '300 300 300';
\r
367 setmodel(newmis, "progs/grenade2.mdl");
\r
377 setsize(newmis, '0 0 0', '0 0 0');
\r
378 setorigin(newmis, self.owner.origin);
\r
380 bprint(self.owner.netname);
\r
381 bprint(", throw the grenade, not the pin!\n");
\r
385 void() NormalGrenadeTouch =
\r
387 if (other == self.owner)
\r
391 sound(self, 1, "weapons/bounce.wav", 1, 1);
\r
392 if (self.velocity == '0 0 0')
\r
394 self.avelocity = '0 0 0';
\r
398 void () NormalGrenadeExplode =
\r
401 T_RadiusDamage (self, self.owner, 180, world);
\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
410 // TF Prime Grenade Function
\r
411 void () TeamFortress_PrimeGrenade =
\r
415 local string ptime;
\r
416 local entity tGrenade;
\r
418 if (((self.tfstate & 1) || (self.tfstate & 1024)))
\r
422 if ((self.impulse == 150))
\r
424 gtype = self.tp_grenades_1;
\r
426 if ((self.tp_grenades_1 == 2))
\r
428 gs = "Concussion grenade";
\r
432 if ((self.tp_grenades_1 == 3))
\r
434 gs = "Nail grenade";
\r
438 if ((self.tp_grenades_1 == 4))
\r
440 gs = "Mirv grenade";
\r
444 if ((self.tp_grenades_1 == 5))
\r
446 gs = "Napalm grenade";
\r
450 if ((self.tp_grenades_1 == 6))
\r
456 if ((self.tp_grenades_1 == 7))
\r
458 gs = "Gas grenade";
\r
462 if ((self.tp_grenades_1 == 8))
\r
464 gs = "EMP grenade";
\r
468 if ((self.tp_grenades_1 == 10))
\r
470 gs = "Caltrop canister";
\r
474 if ((self.tp_grenades_1 == 9))
\r
476 gs = "Flash grenade";
\r
492 if ((self.no_grenades_1 > 0))
\r
494 self.no_grenades_1 = (self.no_grenades_1 - 1);
\r
495 /*if ((gtype == 6))
\r
498 newmis.owner = self;
\r
499 newmis.movetype = 6;
\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
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
519 ptime = ftos (0.5);
\r
520 sprint (self, "Opening ");
\r
522 sprint (self, "...\n");
\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
530 sprint (self, " primed, ");
\r
531 sprint (self, ptime);
\r
532 sprint (self, " seconds...\n");
\r
537 sprint (self, "No ");
\r
539 sprint (self, "s left.\n");
\r
543 if ((self.impulse == 151))
\r
545 if (self.tp_grenades_2 == 0)
\r
547 gtype = self.tp_grenades_2;
\r
548 /* if ((self.tp_grenades_2 == 2))
\r
550 gs = "Concussion grenade";
\r
554 if ((self.tp_grenades_2 == 3))
\r
556 gs = "Nail grenade";
\r
560 if ((self.tp_grenades_2 == 4))
\r
562 gs = "Mirv grenade";
\r
566 if ((self.tp_grenades_2 == 5))
\r
568 gs = "Napalm grenade";
\r
572 if ((self.tp_grenades_2 == 6))
\r
578 if ((self.tp_grenades_2 == 7))
\r
580 gs = "Gas grenade";
\r
584 if ((self.tp_grenades_2 == 8))
\r
586 gs = "EMP grenade";
\r
590 if ((self.tp_grenades_2 == 9))
\r
592 gs = "Flash grenade";
\r
605 if ((self.no_grenades_2 > 0))
\r
607 self.no_grenades_2 = (self.no_grenades_2 - 1);
\r
608 /* if ((gtype == 6))
\r
611 newmis.owner = self;
\r
612 newmis.movetype = 6;
\r
614 newmis.classname = "grenade";
\r
615 makevectors (self.v_angle);
\r
616 if (self.v_angle_x)
\r
618 newmis.velocity = ((v_forward * 1200) + (v_up * 200));
\r
622 newmis.velocity = aim (self, 10000);
\r
623 newmis.velocity = (newmis.velocity * 1200);
\r
624 newmis.velocity_z = 75;
\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
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
640 ptime = ftos (0.5);
\r
641 sprint (self, "Opening ");
\r
643 sprint (self, "...\n");
\r
649 sprint (self, " primed, ");
\r
650 sprint (self, ptime);
\r
651 sprint (self, " seconds...\n");
\r
656 sprint (self, "No ");
\r
658 sprint (self, "s left.\n");
\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
671 /* // Make Centerprint timer // Taken out due to the fact that the function sucked
\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
680 tGrenade.heat = ((time + 0.5) + 0.5);
\r
684 tGrenade.heat = ((time + 3) + 0.8);
\r
686 tGrenade.think = TeamFortress_GrenadePrimed;
\r
689 void () TeamFortress_GrenadePrimed =
\r
692 local entity oldself;
\r
695 if ((!(user.tfstate & 1024) && !user.deadflag))
\r
697 self.nextthink = (time + 0.1);
\r
702 if ((time > self.heat))
\r
704 TeamFortress_ExplodePerson ();
\r
708 if (!(user.tfstate & 1))
\r
710 dprint ("GrenadePrimed logic error\n");
\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
717 newmis.owner = user;
\r
718 newmis.movetype = 10;
\r
720 newmis.classname = "grenade";
\r
721 makevectors (user.v_angle);
\r
724 newmis.velocity = '0 0 200';
\r
728 if (user.v_angle_x)
\r
730 newmis.velocity = ((((v_forward * 600) + (v_up * 200)) + ((crandom () * v_right) * 10)) + ((crandom () * v_up) * 10));
\r
734 newmis.velocity = aim (user, 10000);
\r
735 newmis.velocity = (newmis.velocity * 600);
\r
736 newmis.velocity_z = 200;
\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
744 newmis.touch = NormalGrenadeTouch;
\r
745 newmis.think = NormalGrenadeExplode;
\r
747 newmis.avelocity = '300 300 300';
\r
748 // setmodel (newmis, "progs/hgren2.mdl");
\r
749 setmodel(newmis, "models/grenades/fragnade.md3");
\r
751 else if ((self.weapon == 9))
\r
753 newmis.touch = FlashGrenadeTouch;
\r
754 newmis.think = FlashGrenadeExplode;
\r
756 newmis.avelocity = '300 300 300';
\r
757 setmodel (newmis, "progs/hgren2.mdl");
\r
761 if ((self.weapon == 2))
\r
763 newmis.touch = ConcussionGrenadeTouch;
\r
764 newmis.think = ConcussionGrenadeExplode;
\r
766 newmis.avelocity = '300 300 300';
\r
767 setmodel (newmis, "progs/hgren2.mdl");
\r
771 if ((self.weapon == 3))
\r
773 newmis.touch = NailGrenadeTouch;
\r
774 newmis.think = NailGrenadeExplode;
\r
776 newmis.avelocity = '0 300 0';
\r
777 setmodel (newmis, "progs/biggren.mdl");
\r
781 if ((self.weapon == 4))
\r
783 newmis.touch = MirvGrenadeTouch;
\r
784 newmis.think = MirvGrenadeExplode;
\r
786 newmis.avelocity = '0 300 0';
\r
787 setmodel (newmis, "progs/biggren.mdl");
\r
791 if ((self.weapon == 5))
\r
793 newmis.touch = NapalmGrenadeTouch;
\r
794 newmis.think = NapalmGrenadeExplode;
\r
796 newmis.avelocity = '0 300 0';
\r
797 setmodel (newmis, "progs/biggren.mdl");
\r
801 if ((self.weapon == 6))
\r
803 newmis.touch = FlareGrenadeTouch;
\r
804 newmis.weapon = self.team_no;
\r
805 newmis.think = FlareGrenadeExplode;
\r
807 newmis.avelocity = '300 300 300';
\r
808 newmis.mdl = "flare";
\r
809 setmodel (newmis, "progs/flare.mdl");
\r
813 if ((self.weapon == 7))
\r
815 newmis.touch = GasGrenadeTouch;
\r
816 newmis.think = GasGrenadeExplode;
\r
818 newmis.avelocity = '300 300 300';
\r
819 setmodel (newmis, "progs/grenade2.mdl");
\r
823 if ((self.weapon == 8))
\r
825 newmis.touch = EMPGrenadeTouch;
\r
826 newmis.think = EMPGrenadeExplode;
\r
828 newmis.avelocity = '300 300 300';
\r
829 setmodel (newmis, "progs/grenade2.mdl");
\r
833 if ((self.weapon == 10))
\r
835 newmis.touch = CanisterTouch;
\r
836 newmis.think = ScatterCaltrops;
\r
838 newmis.avelocity = '0 0 0';
\r
842 if ((self.weapon == 9))
\r
844 newmis.touch = FlashGrenadeTouch;
\r
845 newmis.think = FlashGrenadeExplode;
\r
847 newmis.avelocity = '300 300 300';
\r
848 setmodel (newmis, "progs/hgren2.mdl");
\r
859 setsize (newmis, '0 0 0', '0 0 0');
\r
860 setorigin (newmis, user.origin);
\r
867 void () TeamFortress_ThrowGrenade =
\r
869 if (!(self.tfstate & 1))
\r
873 sound(self, 3, "weapons/throw.wav", 1, 1);
\r
874 self.tfstate = (self.tfstate | 1024);
\r
877 // TF Grenade CenterPrint Timer - it sucks so I took it out:x
\r
880 local float countdown;
\r
882 countdown = (time - self.owner.grenade_timer);
\r
886 CenterPrint (self.owner, "^7
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^1\n");
\r
888 if (countdown > .25)
\r
890 CenterPrint (self.owner, "^1
\80^7
\81\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
892 if (countdown > .5)
\r
894 CenterPrint (self.owner, "^1
\80\81^7
\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
896 if (countdown > .75)
\r
898 CenterPrint (self.owner, "^1
\80\81\81^7
\81\81\81\81\81\81\81\81\81\81\82\n");
\r
902 CenterPrint (self.owner, "^1
\80\81\81\81^7
\81\81\81\81\81\81\81\81\81\82\n");
\r
904 if (countdown > 1.25)
\r
906 CenterPrint (self.owner, "^1
\80\81\81\81\81^7
\81\81\81\81\81\81\81\81\82\n");
\r
908 if (countdown > 1.5)
\r
910 CenterPrint (self.owner, "^1
\80\81\81\81\81\81^7
\81\81\81\81\81\81\81\82\n");
\r
912 if (countdown > 1.75)
\r
914 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81^7
\81\81\81\81\81\81\82\n");
\r
918 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81^7
\81\81\81\81\81\82\n");
\r
920 if (countdown > 2.25)
\r
922 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81^7
\81\81\81\81\82\n");
\r
924 if (countdown > 2.5)
\r
926 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81^7
\81\81\81\82\n");
\r
928 if (countdown > 2.75)
\r
930 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81^7
\81\81\82\n");
\r
934 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81^7
\81\82\n");
\r
936 if (countdown > 3.25)
\r
938 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81^7
\82\n");
\r
940 if (countdown > 3.5)
\r
942 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
944 if (countdown > 3.75)
\r
946 CenterPrint (self.owner, "^3
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
950 CenterPrint (self.owner, "\n");
\r
955 self.nextthink = (time + .25);
\r