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
94 stuffcmd (te, "r_bloom_power 2\n");
\r
95 stuffcmd (te, "r_bloom_intensity 1.5\n");
\r
100 if ((te.FlashTime < 1.700000))
\r
102 st = ftos ((te.FlashTime * 150.000000));
\r
103 stuffcmd (te, "v_cshift ");
\r
105 stuffcmd (te, " ");
\r
107 stuffcmd (te, " ");
\r
109 stuffcmd (te, " ");
\r
111 stuffcmd (te, "\n");
\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
120 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
174 stuffcmd(te, "cmd check_val r_bloom $r_bloom\n"); // checks if the client has bloom enabled
\r
176 te.FlashTime = 4.500000;
\r
177 stuffcmd (te, "v_cshift 255 255 255 255\n");
\r
183 BecomeExplosion ();
\r
189 void() NailGrenadeTouch;
\r
190 void() NailGrenadeExplode;
\r
191 void() NailGrenadeNailEm;
\r
192 void() NailGrenadeLaunchNail;
\r
193 void() GrenadeExplode;
\r
195 void() NailGrenadeTouch =
\r
197 if (other == self.owner)
\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
204 self.avelocity = '0 0 0';
\r
208 void() NailGrenadeExplode =
\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
217 void() NailGrenadeNailEm =
\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
225 void() NailGrenadeLaunchNail =
\r
230 while (i < TF_FLARE_OFF)
\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
242 i = i + TF_FLARE_OFF;
\r
244 self.playerclass = self.playerclass + TF_FLARE_OFF;
\r
245 self.nextthink = time + 0.1;
\r
246 if (self.playerclass > 40)
\r
249 self.think = GrenadeExplode;
\r
253 /*=====================
\r
255 ===================*/
\r
257 void() TeamFortress_ExplodePerson =
\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
263 newmis.movetype = 10;
\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
275 newmis.touch = NormalGrenadeTouch;
\r
276 newmis.think = NormalGrenadeExplode;
\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
286 if (self.weapon == 2)
\r
288 newmis.touch = ConcussionGrenadeTouch;
\r
289 newmis.think = ConcussionGrenadeExplode;
\r
291 newmis.avelocity = '300 300 300';
\r
292 setmodel(newmis, "progs/hgren2.mdl");
\r
296 if (self.weapon == 3)
\r
298 newmis.touch = NailGrenadeTouch;
\r
299 newmis.think = NailGrenadeExplode;
\r
301 newmis.avelocity = '0 300 0';
\r
302 setmodel(newmis, "progs/biggren.mdl");
\r
306 if (self.weapon == 4)
\r
308 newmis.touch = MirvGrenadeTouch;
\r
309 newmis.think = MirvGrenadeExplode;
\r
311 newmis.avelocity = '0 300 0';
\r
312 setmodel(newmis, "progs/biggren.mdl");
\r
316 if (self.weapon == 5)
\r
318 newmis.touch = NapalmGrenadeTouch;
\r
319 newmis.think = NapalmGrenadeExplode;
\r
321 newmis.avelocity = '0 300 0';
\r
322 setmodel(newmis, "progs/biggren.mdl");
\r
326 if (self.weapon == 6)
\r
328 sprint(self.owner, "Flare lit.\n");
\r
330 te.touch = SUB_Null;
\r
331 te.think = RemoveFlare;
\r
332 te.nextthink = time + 25;
\r
333 te.owner = self.owner;
\r
335 self.owner.effects = self.owner.effects | 4;
\r
342 if (self.weapon == 7)
\r
344 newmis.touch = GasGrenadeTouch;
\r
345 newmis.think = GasGrenadeExplode;
\r
347 newmis.avelocity = '300 300 300';
\r
348 setmodel(newmis, "progs/grenade2.mdl");
\r
352 if (self.weapon == 8)
\r
354 newmis.touch = EMPGrenadeTouch;
\r
355 newmis.think = EMPGrenadeExplode;
\r
357 newmis.avelocity = '300 300 300';
\r
358 setmodel(newmis, "progs/grenade2.mdl");
\r
362 if (self.weapon == 9)
\r
364 newmis.touch = FlashGrenadeTouch;
\r
365 newmis.think = FlashGrenadeExplode;
\r
367 newmis.avelocity = '300 300 300';
\r
368 setmodel(newmis, "progs/grenade2.mdl");
\r
378 setsize(newmis, '0 0 0', '0 0 0');
\r
379 setorigin(newmis, self.owner.origin);
\r
381 bprint(self.owner.netname);
\r
382 bprint(", throw the grenade, not the pin!\n");
\r
386 void() NormalGrenadeTouch =
\r
388 if (other == self.owner)
\r
392 sound(self, 1, "weapons/bounce.wav", 1, 1);
\r
393 if (self.velocity == '0 0 0')
\r
395 self.avelocity = '0 0 0';
\r
399 void () NormalGrenadeExplode =
\r
402 T_RadiusDamage (self, self.owner, 180, world);
\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
411 // TF Prime Grenade Function
\r
412 void () TeamFortress_PrimeGrenade =
\r
416 local string ptime;
\r
417 local entity tGrenade;
\r
419 if (((self.tfstate & 1) || (self.tfstate & 1024) || self.is_feigning == 1))
\r
423 if ((self.impulse == 150))
\r
425 gtype = self.tp_grenades_1;
\r
427 if ((self.tp_grenades_1 == 2))
\r
429 gs = "Concussion grenade";
\r
433 if ((self.tp_grenades_1 == 3))
\r
435 gs = "Nail grenade";
\r
439 if ((self.tp_grenades_1 == 4))
\r
441 gs = "Mirv grenade";
\r
445 if ((self.tp_grenades_1 == 5))
\r
447 gs = "Napalm grenade";
\r
451 if ((self.tp_grenades_1 == 6))
\r
457 if ((self.tp_grenades_1 == 7))
\r
459 gs = "Gas grenade";
\r
463 if ((self.tp_grenades_1 == 8))
\r
465 gs = "EMP grenade";
\r
469 if ((self.tp_grenades_1 == 10))
\r
471 gs = "Caltrop canister";
\r
475 if ((self.tp_grenades_1 == 9))
\r
477 gs = "Flash grenade";
\r
493 if ((self.no_grenades_1 > 0))
\r
495 self.no_grenades_1 = (self.no_grenades_1 - 1);
\r
496 /*if ((gtype == 6))
\r
499 newmis.owner = self;
\r
500 newmis.movetype = 6;
\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
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
520 ptime = ftos (0.5);
\r
521 sprint (self, "Opening ");
\r
523 sprint (self, "...\n");
\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
531 sprint (self, " primed, ");
\r
532 sprint (self, ptime);
\r
533 sprint (self, " seconds...\n");
\r
534 TeamNexuiz_HUD_ShowSign(self, HUD_PRIME_GREN);
\r
539 sprint (self, "No ");
\r
541 sprint (self, "s left.\n");
\r
545 if ((self.impulse == 151))
\r
547 if (self.tp_grenades_2 == 0)
\r
549 gtype = self.tp_grenades_2;
\r
550 /* if ((self.tp_grenades_2 == 2))
\r
552 gs = "Concussion grenade";
\r
556 if ((self.tp_grenades_2 == 3))
\r
558 gs = "Nail grenade";
\r
562 if ((self.tp_grenades_2 == 4))
\r
564 gs = "Mirv grenade";
\r
568 if ((self.tp_grenades_2 == 5))
\r
570 gs = "Napalm grenade";
\r
574 if ((self.tp_grenades_2 == 6))
\r
580 if ((self.tp_grenades_2 == 7))
\r
582 gs = "Gas grenade";
\r
586 if ((self.tp_grenades_2 == 8))
\r
588 gs = "EMP grenade";
\r
592 if ((self.tp_grenades_2 == 9))
\r
594 gs = "Flash grenade";
\r
607 if ((self.no_grenades_2 > 0))
\r
609 self.no_grenades_2 = (self.no_grenades_2 - 1);
\r
610 /* if ((gtype == 6))
\r
613 newmis.owner = self;
\r
614 newmis.movetype = 6;
\r
616 newmis.classname = "grenade";
\r
617 makevectors (self.v_angle);
\r
618 if (self.v_angle_x)
\r
620 newmis.velocity = ((v_forward * 1200) + (v_up * 200));
\r
624 newmis.velocity = aim (self, 10000);
\r
625 newmis.velocity = (newmis.velocity * 1200);
\r
626 newmis.velocity_z = 75;
\r
628 newmis.angles = vectoangles (newmis.velocity);
\r
629 newmis.weapon = self.team_no;
\r
630 newmis.think = FlareGrenadeExplode;
\r
631 newmis.nextthink = (time + 0.8);
\r
632 newmis.touch = FlareGrenadeTouch;
\r
634 newmis.mdl = "flare";
\r
635 setmodel (newmis, "progs/flare.mdl");
\r
636 setsize (newmis, '0 0 0', '0 0 0');
\r
637 setorigin (newmis, self.origin);
\r
642 ptime = ftos (0.5);
\r
643 sprint (self, "Opening ");
\r
645 sprint (self, "...\n");
\r
651 sprint (self, " primed, ");
\r
652 sprint (self, ptime);
\r
653 sprint (self, " seconds...\n");
\r
658 sprint (self, "No ");
\r
660 sprint (self, "s left.\n");
\r
664 self.tfstate = (self.tfstate | 1);
\r
665 tGrenade = spawn ();
\r
666 tGrenade.owner = self;
\r
667 tGrenade.weapon = gtype;
\r
668 tGrenade.classname = "primer";
\r
669 tGrenade.impulse = self.impulse;
\r
670 tGrenade.nextthink = (time + 0.8);
\r
671 tGrenade.heat = time + 4;
\r
673 /* // Make Centerprint timer // Taken out due to the fact that the function sucked
\r
675 newmis.owner = self;
\r
676 newmis.classname = "primedtimer";
\r
677 newmis.think = CP_Timer;
\r
678 newmis.nextthink = (time);
\r
679 self.grenade_timer = time; */
\r
680 /*if ((gtype == 10))
\r
682 tGrenade.heat = ((time + 0.5) + 0.5);
\r
686 tGrenade.heat = ((time + 3) + 0.8);
\r
688 tGrenade.think = TeamFortress_GrenadePrimed;
\r
691 void () TeamFortress_GrenadePrimed =
\r
694 local entity oldself;
\r
697 if ((!(user.tfstate & 1024) && !user.deadflag))
\r
699 self.nextthink = (time + 0.1);
\r
704 if ((time > self.heat))
\r
706 TeamFortress_ExplodePerson ();
\r
710 if (!(user.tfstate & 1))
\r
712 dprint ("GrenadePrimed logic error\n");
\r
714 user.tfstate = (user.tfstate - (user.tfstate & 1));
\r
715 user.tfstate = (user.tfstate - (user.tfstate & 1024));
\r
716 // sound (user, 1, "weapons/grenade.wav", 1, 1);
\r
717 KickPlayer (-1, user);
\r
719 newmis.owner = user;
\r
720 newmis.movetype = 10;
\r
722 newmis.classname = "grenade";
\r
723 makevectors (user.v_angle);
\r
726 newmis.velocity = '0 0 200';
\r
730 if (user.v_angle_x)
\r
732 newmis.velocity = ((((v_forward * 600) + (v_up * 200)) + ((crandom () * v_right) * 10)) + ((crandom () * v_up) * 10));
\r
736 newmis.velocity = aim (user, 10000);
\r
737 newmis.velocity = (newmis.velocity * 600);
\r
738 newmis.velocity_z = 200;
\r
741 newmis.angles = vectoangles (newmis.velocity);
\r
742 newmis.think = SUB_Null;
\r
743 newmis.nextthink = self.heat;
\r
744 if ((self.weapon == 1))
\r
746 newmis.touch = NormalGrenadeTouch;
\r
747 newmis.think = NormalGrenadeExplode;
\r
749 newmis.avelocity = '300 300 300';
\r
750 // setmodel (newmis, "progs/hgren2.mdl");
\r
751 setmodel(newmis, "models/grenades/fragnade.md3");
\r
753 else if ((self.weapon == 9))
\r
755 newmis.touch = FlashGrenadeTouch;
\r
756 newmis.think = FlashGrenadeExplode;
\r
758 newmis.avelocity = '300 300 300';
\r
759 setmodel (newmis, "progs/hgren2.mdl");
\r
763 if ((self.weapon == 2))
\r
765 newmis.touch = ConcussionGrenadeTouch;
\r
766 newmis.think = ConcussionGrenadeExplode;
\r
768 newmis.avelocity = '300 300 300';
\r
769 setmodel (newmis, "progs/hgren2.mdl");
\r
773 if ((self.weapon == 3))
\r
775 newmis.touch = NailGrenadeTouch;
\r
776 newmis.think = NailGrenadeExplode;
\r
778 newmis.avelocity = '0 300 0';
\r
779 setmodel (newmis, "progs/biggren.mdl");
\r
783 if ((self.weapon == 4))
\r
785 newmis.touch = MirvGrenadeTouch;
\r
786 newmis.think = MirvGrenadeExplode;
\r
788 newmis.avelocity = '0 300 0';
\r
789 setmodel (newmis, "progs/biggren.mdl");
\r
793 if ((self.weapon == 5))
\r
795 newmis.touch = NapalmGrenadeTouch;
\r
796 newmis.think = NapalmGrenadeExplode;
\r
798 newmis.avelocity = '0 300 0';
\r
799 setmodel (newmis, "progs/biggren.mdl");
\r
803 if ((self.weapon == 6))
\r
805 newmis.touch = FlareGrenadeTouch;
\r
806 newmis.weapon = self.team_no;
\r
807 newmis.think = FlareGrenadeExplode;
\r
809 newmis.avelocity = '300 300 300';
\r
810 newmis.mdl = "flare";
\r
811 setmodel (newmis, "progs/flare.mdl");
\r
815 if ((self.weapon == 7))
\r
817 newmis.touch = GasGrenadeTouch;
\r
818 newmis.think = GasGrenadeExplode;
\r
820 newmis.avelocity = '300 300 300';
\r
821 setmodel (newmis, "progs/grenade2.mdl");
\r
825 if ((self.weapon == 8))
\r
827 newmis.touch = EMPGrenadeTouch;
\r
828 newmis.think = EMPGrenadeExplode;
\r
830 newmis.avelocity = '300 300 300';
\r
831 setmodel (newmis, "progs/grenade2.mdl");
\r
835 if ((self.weapon == 10))
\r
837 newmis.touch = CanisterTouch;
\r
838 newmis.think = ScatterCaltrops;
\r
840 newmis.avelocity = '0 0 0';
\r
844 if ((self.weapon == 9))
\r
846 newmis.touch = FlashGrenadeTouch;
\r
847 newmis.think = FlashGrenadeExplode;
\r
849 newmis.avelocity = '300 300 300';
\r
850 setmodel (newmis, "progs/hgren2.mdl");
\r
861 setsize (newmis, '0 0 0', '0 0 0');
\r
862 setorigin (newmis, user.origin);
\r
869 void () TeamFortress_ThrowGrenade =
\r
871 if (!(self.tfstate & 1))
\r
875 sound(self, 3, "weapons/throw.wav", 1, 1);
\r
876 self.tfstate = (self.tfstate | 1024);
\r
879 // TF Grenade CenterPrint Timer - it sucks so I took it out:x
\r
882 local float countdown;
\r
884 countdown = (time - self.owner.grenade_timer);
\r
888 CenterPrint (self.owner, "^7
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^1\n");
\r
890 if (countdown > .25)
\r
892 CenterPrint (self.owner, "^1
\80^7
\81\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
894 if (countdown > .5)
\r
896 CenterPrint (self.owner, "^1
\80\81^7
\81\81\81\81\81\81\81\81\81\81\81\82\n");
\r
898 if (countdown > .75)
\r
900 CenterPrint (self.owner, "^1
\80\81\81^7
\81\81\81\81\81\81\81\81\81\81\82\n");
\r
904 CenterPrint (self.owner, "^1
\80\81\81\81^7
\81\81\81\81\81\81\81\81\81\82\n");
\r
906 if (countdown > 1.25)
\r
908 CenterPrint (self.owner, "^1
\80\81\81\81\81^7
\81\81\81\81\81\81\81\81\82\n");
\r
910 if (countdown > 1.5)
\r
912 CenterPrint (self.owner, "^1
\80\81\81\81\81\81^7
\81\81\81\81\81\81\81\82\n");
\r
914 if (countdown > 1.75)
\r
916 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81^7
\81\81\81\81\81\81\82\n");
\r
920 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81^7
\81\81\81\81\81\82\n");
\r
922 if (countdown > 2.25)
\r
924 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81^7
\81\81\81\81\82\n");
\r
926 if (countdown > 2.5)
\r
928 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81^7
\81\81\81\82\n");
\r
930 if (countdown > 2.75)
\r
932 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81^7
\81\81\82\n");
\r
936 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81^7
\81\82\n");
\r
938 if (countdown > 3.25)
\r
940 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81^7
\82\n");
\r
942 if (countdown > 3.5)
\r
944 CenterPrint (self.owner, "^1
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
946 if (countdown > 3.75)
\r
948 CenterPrint (self.owner, "^3
\80\81\81\81\81\81\81\81\81\81\81\81\81\82^7\n");
\r
952 CenterPrint (self.owner, "\n");
\r
957 self.nextthink = (time + .25);
\r