]> icculus.org git repositories - divverent/nexuiz.git/blob - TeamNexuiz/game/gamec/tffunctions.c
bumps for morphed's teleporter model
[divverent/nexuiz.git] / TeamNexuiz / game / gamec / tffunctions.c
1 // TF fucntions\r
2 .float goal_no;         // goal number - pair with defs file\r
3 .float goal_result; // pair with defs\r
4 .float else_goal;       // not sure\r
5 .float goal_result;\r
6 .float is_removed;      // entity is removed?\r
7 float (entity _p_10934, entity _p_10935) Activated;\r
8 float (float tno) TeamFortress_TeamGetScore;\r
9 float (float tno) TeamFortress_TeamGetColor;\r
10 void (entity _p_10980, entity _p_10981, float _p_10982) DoResults; //< - score increase thing\r
11 void (entity Item, entity AP, float method) tfgoalitem_RemoveFromPlayer;\r
12 void(entity client, string s) CenterPrint = #73;\r
13 \r
14 // misc stuff (move to TFDefs file)\r
15 entity newmis;          // This is what tf uses for spawning entities\r
16 .float has_disconnected;        //has the player disconnected?\r
17 .float no_grenades_1;\r
18 .float no_grenades_2;\r
19 .float no_grenades_3;\r
20 .float pausetime;       // not sure\r
21 float team1lives;\r
22 float team2lives;\r
23 float team3lives;\r
24 float team4lives;\r
25 float team1maxplayers;\r
26 float team2maxplayers;\r
27 float team3maxplayers;\r
28 float team4maxplayers;\r
29 float team1advantage;\r
30 float team2advantage;\r
31 float team3advantage;\r
32 float team4advantage;\r
33 \r
34 // stuff that still needs a function\r
35 float number_of_teams; // Number of teams == IMPORTANT\r
36 \r
37 // Color/Teamchange cheat detection (using DP functions instead of tf)\r
38 void (entity ent, float colors) setcolor;\r
39 \r
40 void SV_ChangeTeam(float color)\r
41 {\r
42 //      if (self.playerclass == 8)              // Spies can change team color right?\r
43 //              return;\r
44         if (self.team_no == 1 && color != 13)\r
45         {\r
46                 setcolor(self, 13,13);\r
47         }\r
48         if (self.team_no == 2 && color != 4)\r
49         {\r
50                 setcolor(self, 4,4);\r
51 //              stuffcmd(self, "color 4\n");\r
52         }\r
53 };\r
54 \r
55 \r
56 void(entity targ, entity attacker) ClientObituary =\r
57 {\r
58         ClientObituary(targ,attacker);          // TEMP -- SOON I WILL ADD REAL DEATH MESSAGES\r
59 };\r
60 \r
61 void () DoTFAliases =\r
62 {\r
63                 TeamFortress_Alias("primeone", 150, TF_FLARE_LIT);\r
64                 TeamFortress_Alias("primetwo", 151, TF_FLARE_LIT);\r
65                 TeamFortress_Alias("throwgren", 152, TF_FLARE_LIT);\r
66                 TeamFortress_Alias("+gren1", 150, TF_FLARE_LIT);\r
67                 TeamFortress_Alias("+gren2", 151, TF_FLARE_LIT);\r
68                 TeamFortress_Alias("-gren1", 152, TF_FLARE_LIT);\r
69                 TeamFortress_Alias("-gren2", 152, TF_FLARE_LIT);\r
70 };\r
71 \r
72 void (entity tempent) dremove =\r
73 {\r
74         if ((tempent == world))\r
75         {\r
76                 dprint ("***BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG***\n");\r
77                 dprint ("WORLD has nearly been removed. Don't worry\n");\r
78                 dprint ("***BUG BUG BUG BUG BUG BUG BUG BUG BUG BUG***\n");\r
79                 return;\r
80         }\r
81         if ((tempent.is_removed == 1.000000))\r
82         {\r
83                 return;\r
84         }\r
85         tempent.is_removed = 1.000000;\r
86         remove (tempent);\r
87 };\r
88 \r
89 entity (float gno) Findgoal =\r
90 {\r
91         local entity tg;\r
92         local string st;\r
93 \r
94         tg = find (world, classname, "info_tfgoal");\r
95         while (tg)\r
96         {\r
97                 if ((tg.goal_no == gno))\r
98                 {\r
99                         return (tg);\r
100                 }\r
101                 tg = find (tg, classname, "info_tfgoal");\r
102         }\r
103         dprint ("Could not find a goal with a goal_no of ");\r
104         st = ftos (gno);\r
105         dprint (st);\r
106         dprint (".\n");\r
107         //return (tg);\r
108 };\r
109 \r
110 void(entity Goal, entity AP, entity ActivatingGoal) AttemptToActivate = \r
111 {\r
112         local entity te;\r
113         local string st;\r
114         if (Activated(Goal, AP))\r
115         {\r
116                 if (ActivatingGoal == Goal)\r
117                 {\r
118                         DoResults(Goal, AP, TF_FLARE_OFF);\r
119                 }\r
120                 else\r
121                 {\r
122                         if (ActivatingGoal != world)\r
123                         {\r
124                                 DoResults(Goal, AP, ActivatingGoal.goal_result & 2);\r
125                         }\r
126                         else\r
127                         {\r
128                                 DoResults(Goal, AP, TF_FLARE_LIT);\r
129                         }\r
130                 }\r
131         }\r
132         else\r
133         {\r
134                 if (Goal.else_goal != TF_FLARE_LIT)\r
135                 {\r
136                         te = Findgoal(Goal.else_goal);\r
137                         if (te)\r
138                         {\r
139                                 AttemptToActivate(te, AP, ActivatingGoal);\r
140                         }\r
141                 }\r
142         }\r
143 };\r
144 \r
145 void (entity p) TeamFortress_SetSpeed =\r
146 {\r
147         local string sp;\r
148         local float tf;\r
149         local entity te;\r
150 \r
151         stuffcmd (p, "cl_movespeedkey 1\n");\r
152         if ((p.tfstate & 65536))\r
153         {\r
154                 if ((0 == 1))\r
155                 {\r
156                         stuffcmd (p, "m_forward 0\n");\r
157                         stuffcmd (p, "m_side 0\n");\r
158                 }\r
159                 p.velocity = '0 0 0';\r
160                 stuffcmd (p, "cl_backspeed 0\n");\r
161                 stuffcmd (p, "cl_forwardspeed 0\n");\r
162                 stuffcmd (p, "cl_sidespeed 0\n");\r
163                 return;\r
164         }\r
165         else\r
166         {\r
167                 if ((0 == 1))\r
168                 {\r
169                         stuffcmd (p, "m_forward 1\n");\r
170                         stuffcmd (p, "m_side 0.8\n");\r
171                 }\r
172         }\r
173         if ((p.class == 1))             //scout speed\r
174         {\r
175                 p.maxfbspeed = 450;\r
176                 p.maxstrafespeed = 450;\r
177         }\r
178         else\r
179         {\r
180                 if ((p.class == 2.1))                   // No sniper in nextf\r
181                 {\r
182                         p.maxfbspeed = 300;\r
183                         p.maxstrafespeed = 300;\r
184                 }\r
185                 else\r
186                 {\r
187                         if ((p.class == 4))             //soldier speed\r
188                         {\r
189                                 p.maxfbspeed = 240;\r
190                                 p.maxstrafespeed = 240;\r
191                         }\r
192                         else\r
193                         {\r
194                                 if ((p.class == 4.1))           // No demoman in nextf\r
195                                 {\r
196                                         p.maxfbspeed = 280;\r
197                                         p.maxstrafespeed = 280;\r
198                                 }\r
199                                 else\r
200                                 {\r
201                                         if ((p.class == 16))            // Medic Speed\r
202                                         {\r
203                                                 p.maxfbspeed = 320;\r
204                                                 p.maxstrafespeed = 320;\r
205                                         }\r
206                                         else\r
207                                         {\r
208                                                 if ((p.class == 6.1))           // No HWGuy in nextf\r
209                                                 {\r
210                                                         p.maxfbspeed = 230;\r
211                                                         p.maxstrafespeed = 230;\r
212                                                 }\r
213                                                 else\r
214                                                 {\r
215                                                         if ((p.class == 8))             // Pyro Speed\r
216                                                         {\r
217                                                                 p.maxfbspeed = 300;\r
218                                                                 p.maxstrafespeed = 300;\r
219                                                         }\r
220                                                         else\r
221                                                         {\r
222                                                                 if ((p.class == 11))            // Wazat -- We need a Civ class\r
223                                                                 {\r
224                                                                         p.maxfbspeed = 240;\r
225                                                                         p.maxstrafespeed = 240;\r
226                                                                 }\r
227                                                                 else\r
228                                                                 {\r
229                                                                         if ((p.class == 2))             // Spy Speed\r
230                                                                         {\r
231                                                                                 p.maxfbspeed = 300;\r
232                                                                                 p.maxstrafespeed = 300;\r
233                                                                         }\r
234                                                                         else\r
235                                                                         {\r
236                                                                                 if ((p.class == 32))            // Engineer Speed\r
237                                                                                 {\r
238                                                                                         p.maxfbspeed = 300;\r
239                                                                                         p.maxstrafespeed = 300;\r
240                                                                                 }\r
241                                                                                 else\r
242                                                                                 {\r
243                                                                                         if ((p.class == 0))             // No class\r
244                                                                                         {\r
245                                                                                                 p.maxfbspeed = 320;\r
246                                                                                                 p.maxstrafespeed = 320;\r
247                                                                                                 return;\r
248                                                                                         }\r
249                                                                                 }\r
250                                                                         }\r
251                                                                 }\r
252                                                         }\r
253                                                 }\r
254                                         }\r
255                                 }\r
256                         }\r
257                 }\r
258         }\r
259         tf = 0;\r
260         te = find (world, classname, "item_tfgoal");\r
261         while (((te != world) && (tf == 0)))\r
262         {\r
263                 if ((te.owner == p))\r
264                 {\r
265                         if ((te.goal_activation & 2))\r
266                         {\r
267                                 tf = 1;\r
268                                 p.maxfbspeed = (p.maxfbspeed / 2);\r
269                                 p.maxstrafespeed = (p.maxstrafespeed / 2);\r
270                         }\r
271                 }\r
272                 te = find (te, classname, "item_tfgoal");\r
273         }\r
274         if ((p.tfstate & 32768))\r
275         {\r
276                 p.maxfbspeed = (p.maxfbspeed / 2);\r
277                 p.maxstrafespeed = (p.maxstrafespeed / 2);\r
278         }\r
279         /* (p.leg_damage)                       // No leg damage if no snipers, eh?\r
280         {\r
281                 if ((p.leg_damage > 6))\r
282                 {\r
283                         p.leg_damage = 6;\r
284                 }\r
285                 p.maxfbspeed = (p.maxfbspeed * ((10 - p.leg_damage) / 10));\r
286                 p.maxstrafespeed = ((p.maxstrafespeed * (10 - p.leg_damage)) / 10);\r
287         }*/\r
288         if ((p.tfstate & 2048))\r
289         {\r
290                 if ((p.maxfbspeed > 80))\r
291                 {\r
292                         p.maxfbspeed = 80;\r
293                 }\r
294                 if ((p.maxstrafespeed > 80))\r
295                 {\r
296                         p.maxstrafespeed = 80;\r
297                 }\r
298         }\r
299         sp = ftos (p.maxfbspeed);\r
300         stuffcmd (p, "cl_backspeed ");\r
301         stuffcmd (p, sp);\r
302         stuffcmd (p, "\n");\r
303         stuffcmd (p, "cl_forwardspeed ");\r
304         stuffcmd (p, sp);\r
305         stuffcmd (p, "\n");\r
306         sp = ftos (p.maxstrafespeed);\r
307         stuffcmd (p, "cl_sidespeed ");\r
308         stuffcmd (p, sp);\r
309         stuffcmd (p, "\n");\r
310 };\r
311 \r
312 float (entity Retriever, float AmmoType) TeamFortress_GetMaxAmmo =\r
313 {\r
314         if ((AmmoType == 256))\r
315         {\r
316                 return (Retriever.maxammo_shells);\r
317         }\r
318         else\r
319         {\r
320                 if ((AmmoType == 512))\r
321                 {\r
322                         return (Retriever.maxammo_nails);\r
323                 }\r
324                 else\r
325                 {\r
326                         if ((AmmoType == 2048))\r
327                         {\r
328                                 return (Retriever.maxammo_cells);\r
329                         }\r
330                         else\r
331                         {\r
332                                 if ((AmmoType == 1024))\r
333                                 {\r
334                                         return (Retriever.maxammo_rockets);\r
335                                 }\r
336                                 else\r
337                                 {\r
338                                         if ((AmmoType == 4))\r
339                                         {\r
340                                                 return (Retriever.maxammo_medikit);\r
341                                         }\r
342                                         else\r
343                                         {\r
344                                                 if ((AmmoType == 131072))\r
345                                                 {\r
346                                                         return (Retriever.maxammo_detpack);\r
347                                                 }\r
348                                         }\r
349                                 }\r
350                         }\r
351                 }\r
352         }\r
353         dprint ("Error in TeamFortress_GetMaxAmmo()\n");\r
354         dprint ("Invalid ammo type passed.\n");\r
355         return (0);\r
356 };\r
357 \r
358 void () TeamFortress_CheckClassStats =\r
359 {\r
360 //              Wazat - Implement your armor system here, eh?\r
361 /*      if ((self.armortype > self.armor_allowed))\r
362         {\r
363                 self.armortype = self.armor_allowed;\r
364         }*/\r
365         if ((self.armorvalue > self.max_armor))\r
366         {\r
367                 self.armorvalue = self.max_armor;\r
368         }\r
369         if ((self.armortype < 0))\r
370         {\r
371                 self.armortype = 0;\r
372         }\r
373         if ((self.armorvalue < 0))\r
374         {\r
375                 self.armorvalue = 0;\r
376         }\r
377         if ((self.ammo_shells > TeamFortress_GetMaxAmmo (self, 256)))\r
378         {\r
379                 self.ammo_shells = TeamFortress_GetMaxAmmo (self, 256);\r
380         }\r
381         if ((self.ammo_shells < 0))\r
382         {\r
383                 self.ammo_shells = 0;\r
384         }\r
385         if ((self.ammo_nails > TeamFortress_GetMaxAmmo (self, 512)))\r
386         {\r
387                 self.ammo_nails = TeamFortress_GetMaxAmmo (self, 512);\r
388         }\r
389         if ((self.ammo_nails < 0))\r
390         {\r
391                 self.ammo_nails = 0;\r
392         }\r
393         if ((self.ammo_rockets > (TeamFortress_GetMaxAmmo (self, 1024) * 3)))\r
394         {\r
395                 self.ammo_rockets = (TeamFortress_GetMaxAmmo (self, 1024) * 3);\r
396         }\r
397         if ((self.ammo_rockets < 0))\r
398         {\r
399                 self.ammo_rockets = 0;\r
400         }\r
401         if ((self.ammo_cells > TeamFortress_GetMaxAmmo (self, 2048)))\r
402         {\r
403                 self.ammo_cells = TeamFortress_GetMaxAmmo (self, 2048);\r
404         }\r
405         if ((self.ammo_cells < 0))\r
406         {\r
407                 self.ammo_cells = 0;\r
408         }\r
409         if ((self.ammo_medikit > TeamFortress_GetMaxAmmo (self, 4)))\r
410         {\r
411                 self.ammo_medikit = TeamFortress_GetMaxAmmo (self, 4);\r
412         }\r
413         if ((self.ammo_medikit < 0))\r
414         {\r
415                 self.ammo_medikit = 0;\r
416         }\r
417         if ((self.ammo_detpack > TeamFortress_GetMaxAmmo (self, 131072)))\r
418         {\r
419                 self.ammo_detpack = TeamFortress_GetMaxAmmo (self, 131072);\r
420         }\r
421         if ((self.ammo_detpack < 0))\r
422         {\r
423                 self.ammo_detpack = 0;\r
424         }\r
425         if ((self.no_grenades_1 < 0))\r
426         {\r
427                 self.no_grenades_1 = 0;\r
428         }\r
429         if ((self.no_grenades_2 < 0))\r
430         {\r
431                 self.no_grenades_2 = 0;\r
432         }\r
433 //              NexTF uses auto-rot, so there's no need for this function.\r
434 //      if (((self.health > self.max_health) && !(self.items & 65536)))\r
435 //      {\r
436 //              TF_T_Damage (self, world, world, (self.max_health - self.health), 0, 256);\r
437 //      }\r
438         if ((self.health < 0))\r
439         {\r
440                 T_Heal (self, (self.health - self.health), 0);\r
441         }\r
442         self.items = (self.items - (self.items & ((8192 | 16384) | 32768)));\r
443         if ((self.armortype >= 0.8))\r
444         {\r
445                 self.items = (self.items | 32768);\r
446         }\r
447         else\r
448         {\r
449                 if ((self.armortype >= 0.6))\r
450                 {\r
451                         self.items = (self.items | 16384);\r
452                 }\r
453                 else\r
454                 {\r
455                         if ((self.armortype >= 0.3))\r
456                         {\r
457                                 self.items = (self.items | 8192);\r
458                         }\r
459                 }\r
460         }\r
461         weapon_action(self.weapon, WR_UPDATECOUNTS); // update ammo now\r
462 };\r
463 \r
464 // TF Get Score Frags\r
465 float (float tno) TeamFortress_TeamGetScoreFrags =\r
466 {\r
467         if (((toggleflags & 128) || (toggleflags & 2048)))\r
468         {\r
469                 if ((tno == 1))\r
470                 {\r
471                         return (team1score);\r
472                 }\r
473                 if ((tno == 2))\r
474                 {\r
475                         return (team2score);\r
476                 }\r
477                 if ((tno == 3))\r
478                 {\r
479                         return (team3score);\r
480                 }\r
481                 if ((tno == 4))\r
482                 {\r
483                         return (team4score);\r
484                 }\r
485         }\r
486         else\r
487         {\r
488                 if ((tno == 1))\r
489                 {\r
490                         return (team1frags);\r
491                 }\r
492                 if ((tno == 2))\r
493                 {\r
494                         return (team2frags);\r
495                 }\r
496                 if ((tno == 3))\r
497                 {\r
498                         return (team3frags);\r
499                 }\r
500                 if ((tno == 4))\r
501                 {\r
502                         return (team4frags);\r
503                 }\r
504         }\r
505         return (0);\r
506 };\r
507 \r
508 // TF Get Team Winner\r
509 float () TeamFortress_TeamGetWinner =\r
510 {\r
511         local float i;\r
512         local float j;\r
513         local float highest;\r
514         local float highestteam;\r
515 \r
516         i = 1;\r
517         highest = 0;\r
518         highestteam = 0;\r
519         while ((i < (number_of_teams + 1)))\r
520         {\r
521                 j = TeamFortress_TeamGetScoreFrags (i);\r
522                 if ((j > highest))\r
523                 {\r
524                         highest = j;\r
525                         highestteam = i;\r
526                 }\r
527                 i = (i + 1);\r
528         }\r
529         return (highestteam);\r
530 };\r
531 \r
532 // TF Score Increaser\r
533 void (float tno, float scoretoadd) TeamFortress_TeamIncreaseScore =\r
534 {\r
535         local entity e;\r
536 \r
537         if (((tno == 0) || (scoretoadd == 0)))\r
538         {\r
539                 return;\r
540         }\r
541         if ((tno == 1))\r
542         {\r
543                 team1score = (team1score + scoretoadd);\r
544         }\r
545         if ((tno == 2))\r
546         {\r
547                 team2score = (team2score + scoretoadd);\r
548         }\r
549         if ((tno == 3))\r
550         {\r
551                 team3score = (team3score + scoretoadd);\r
552         }\r
553         if ((tno == 4))\r
554         {\r
555                 team4score = (team4score + scoretoadd);\r
556         }\r
557         if (((toggleflags & 128) || (toggleflags & 2048)))\r
558         {\r
559                 e = find (world, classname, "player");\r
560                 while (e)\r
561                 {\r
562                         if ((e.team_no == tno))\r
563                         {\r
564                                 e.frags = TeamFortress_TeamGetScore (tno);\r
565                         }\r
566                         e = find (e, classname, "player");\r
567                 }\r
568         }\r
569 };\r
570 \r
571 // Returns Team Color Name (String)\r
572 string (float tno) TeamFortress_TeamGetColorString =\r
573 {\r
574         local float col;\r
575 \r
576         col = TeamFortress_TeamGetColor (tno);\r
577         if ((col == 1))\r
578         {\r
579                 return ("White");\r
580         }\r
581         if ((col == 2))\r
582         {\r
583                 return ("Brown");\r
584         }\r
585         if ((col == 3))\r
586         {\r
587                 return ("Blue");\r
588         }\r
589         if ((col == 4))\r
590         {\r
591                 return ("Green");\r
592         }\r
593         if ((col == 5))\r
594         {\r
595                 return ("Red");\r
596         }\r
597         if ((col == 6))\r
598         {\r
599                 return ("Tan");\r
600         }\r
601         if ((col == 7))\r
602         {\r
603                 return ("Pink");\r
604         }\r
605         if ((col == 8))\r
606         {\r
607                 return ("Orange");\r
608         }\r
609         if ((col == 9))\r
610         {\r
611                 return ("Purple");\r
612         }\r
613         if ((col == 10))\r
614         {\r
615                 return ("DarkPurple");\r
616         }\r
617         if ((col == 11))\r
618         {\r
619                 return ("Grey");\r
620         }\r
621         if ((col == 12))\r
622         {\r
623                 return ("DarkGreen");\r
624         }\r
625         if ((col == 13))\r
626         {\r
627                 return ("Yellow");\r
628         }\r
629         return ("DarkBlue");\r
630 };\r
631 \r
632 // Is civilian?\r
633 float (float tno) TeamFortress_TeamIsCivilian =\r
634 {\r
635         local entity te;\r
636 \r
637         if ((tno == 1))\r
638         {\r
639                 if ((civilianteams & 1))\r
640                 {\r
641                         return (1);\r
642                 }\r
643         }\r
644         else\r
645         {\r
646                 if ((tno == 2))\r
647                 {\r
648                         if ((civilianteams & 2))\r
649                         {\r
650                                 return (1);\r
651                         }\r
652                 }\r
653                 else\r
654                 {\r
655                         if ((tno == 3))\r
656                         {\r
657                                 if ((civilianteams & 4))\r
658                                 {\r
659                                         return (1);\r
660                                 }\r
661                         }\r
662                         else\r
663                         {\r
664                                 if ((civilianteams & 8))\r
665                                 {\r
666                                         return (1);\r
667                                 }\r
668                         }\r
669                 }\r
670         }\r
671         return (0);\r
672 };\r
673 \r
674 // Change Class\r
675 //              You use a different method of handling this tho Wazat?\r
676 void () TeamFortress_ChangeClass =\r
677 {\r
678         /*local entity spot;\r
679         local entity te;\r
680         local float tc;\r
681         local string st;\r
682 \r
683         if ((self.playerclass != 0))\r
684         {\r
685                 if (((deathmatch != 3) && (cb_prematch_time < time)))\r
686                 {\r
687                         return;\r
688                 }\r
689                 if (TeamFortress_TeamIsCivilian (self.team_no))\r
690                 {\r
691                         sprint (self, "You cannot change class.\n");\r
692                         return;\r
693                 }\r
694                 if (!IsLegalClass ((self.impulse - 100)))\r
695                 {\r
696                         sprint (self, "Your team cannot play that class.\n");\r
697                         TeamFortress_DisplayLegalClasses ();\r
698                         return;\r
699                 }\r
700                 if (((spy_off == 1) && ((self.impulse - 100) == 8)))\r
701                 {\r
702                         sprint (self, "The spy class has been disabled on the server by the administrator.\n");\r
703                         return;\r
704                 }\r
705                 self.nextpc = (self.impulse - 100);\r
706                 sprint (self, "After dying, you will return as a ");\r
707                 TeamFortress_PrintClassName (self, self.nextpc, (self.tfstate & 8));\r
708                 self.immune_to_check = (time + 10);\r
709                 return;\r
710         }\r
711         if ((teamplay && (self.team_no == 0)))\r
712         {\r
713                 if ((toggleflags & 64))\r
714                 {\r
715                         if ((TeamFortress_TeamPutPlayerInTeam () == 0))\r
716                         {\r
717                                 return;\r
718                         }\r
719                 }\r
720                 else\r
721                 {\r
722                         sprint (self, "You must join a team first. \n");\r
723                         sprint (self, "use imin1, imin2, imin3, or imin4\n");\r
724                         return;\r
725                 }\r
726         }\r
727         if ((self.lives == 0))\r
728         {\r
729                 sprint (self, "You have no lives left.\n");\r
730                 return;\r
731         }\r
732         if ((!IsLegalClass ((self.impulse - 100)) && (self.impulse != 1)))\r
733         {\r
734                 sprint (self, "You cannot play that playerclass on this map. \n");\r
735                 TeamFortress_DisplayLegalClasses ();\r
736                 return;\r
737         }\r
738         if (((spy_off == 1) && ((self.impulse - 100) == 8)))\r
739         {\r
740                 sprint (self, "The spy class has been disabled on the server by the administrator.\n");\r
741                 return;\r
742         }\r
743         if ((self.impulse != 1))\r
744         {\r
745                 self.playerclass = (self.impulse - 100);\r
746         }\r
747         else\r
748         {\r
749                 self.playerclass = 11;\r
750         }\r
751         self.nextpc = 0;\r
752         self.takedamage = 2;\r
753         self.movetype = 3;\r
754         self.flags = (8 | 512);\r
755         self.waterlevel = 0;\r
756         self.air_finished = (time + 12);\r
757         self.solid = 3;\r
758         self.pausetime = 0;\r
759         spot = SelectSpawnPoint ();\r
760         self.origin = (spot.origin + '0 0 1');\r
761         self.angles = spot.angles;\r
762         self.fixangle = 1;\r
763         setmodel (self, string_null);\r
764         modelindex_null = self.modelindex;\r
765         setmodel (self, "progs/eyes.mdl");\r
766         modelindex_eyes = self.modelindex;\r
767         setmodel (self, "progs/player.mdl");\r
768         modelindex_player = self.modelindex;\r
769         setsize (self, '-16 -16 -24', '16 16 32');\r
770         self.view_ofs = '0 0 22';\r
771         player_stand1 ();\r
772         if ((deathmatch || coop))\r
773         {\r
774                 makevectors (self.angles);\r
775                 spawn_tfog ((self.origin + (v_forward * 20)));\r
776         }\r
777         if ((self.playerclass == 10))\r
778         {\r
779                 sprint (self, "Random Playerclass.\n");\r
780                 self.tfstate = (self.tfstate | 8);\r
781                 self.playerclass = (1 + floor ((random () * (10 - 1))));\r
782         }\r
783         if (((spot.classname == "info_player_teamspawn") && (cb_prematch_time < time)))\r
784         {\r
785                 if ((spot.items != 0))\r
786                 {\r
787                         te = Finditem (spot.items);\r
788                         if (te)\r
789                         {\r
790                                 tfgoalitem_GiveToPlayer (te, self, self);\r
791                         }\r
792                         if (!(spot.goal_activation & 1))\r
793                         {\r
794                                 spot.items = 0;\r
795                         }\r
796                 }\r
797                 if (spot.message)\r
798                 {\r
799                         CenterPrint (self, spot.message);\r
800                         if (!(spot.goal_activation & 2))\r
801                         {\r
802                                 spot.message = string_null;\r
803                         }\r
804                 }\r
805                 if ((spot.activate_goal_no != 0))\r
806                 {\r
807                         te = Findgoal (spot.activate_goal_no);\r
808                         if (te)\r
809                         {\r
810                                 AttemptToActivate (te, self, spot);\r
811                         }\r
812                 }\r
813                 if ((spot.goal_effects == 1))\r
814                 {\r
815                         spot.classname = "deadpoint";\r
816                         spot.team_str_home = string_null;\r
817                         spot.nextthink = (time + 1);\r
818                         spot.think = SUB_Remove;\r
819                 }\r
820         }\r
821         spot = find (world, classname, "player");\r
822         while (spot)\r
823         {\r
824                 if (((spot.team_no == self.team_no) && (spot != self)))\r
825                 {\r
826                         sprint (spot, 2, self.netname);\r
827                         sprint (spot, 2, " is playing as a ");\r
828                         TeamFortress_PrintClassName (spot, self.playerclass, (self.tfstate & 8));\r
829                 }\r
830                 spot = find (spot, classname, "player");\r
831         }\r
832         TeamFortress_PrintClassName (self, self.playerclass, (self.tfstate & 8));\r
833         TeamFortress_SetEquipment ();\r
834         TeamFortress_SetHealth ();\r
835         TeamFortress_SetSpeed (self);\r
836         TeamFortress_SetSkin (self);\r
837         if (cease_fire)\r
838         {\r
839                 sprint (self, "\n\nCEASE FIRE MODE\n");\r
840                 self.immune_to_check = (time + 10);\r
841                 self.tfstate = (self.tfstate | 65536);\r
842                 TeamFortress_SetSpeed (self);\r
843         }*/\r
844 };\r
845 \r
846 // Show what class each member of the team is -- NEEDS AN IMPULSE CALL FUNCTION\r
847 void (entity Player) TeamFortress_TeamShowMemberClasses =\r
848 {\r
849         local entity e;\r
850         local float found;\r
851 \r
852         found = 0;\r
853         e = find (world, classname, "player");\r
854         while (e)\r
855         {\r
856                 if ((((e.team_no == Player.team_no) || (e.team_no == 0)) && (e != Player)))\r
857                 {\r
858                         if ((e.model != string_null))\r
859                         {\r
860                                 if (!found)\r
861                                 {\r
862                                         found = 1;\r
863                                         sprint (self, "The other members of your team are:\n");\r
864                                 }\r
865                                 sprint (Player, e.netname);\r
866                                 sprint (Player, " : ");\r
867 //                              TeamFortress_PrintClassName (Player, e.playerclass, (e.tfstate & 8));\r
868                                 TeamFortress_PrintClassName (Player, e.class, (e.tfstate & 8));\r
869                         }\r
870                 }\r
871                 e = find (e, classname, "player");\r
872         }\r
873         if (!found)\r
874         {\r
875                 sprint (Player, "There are no other players on your team.\n");\r
876         }\r
877 };\r
878 \r
879 // Returns class name value\r
880 string (float pc) TeamFortress_GetClassName =\r
881 {\r
882         if ((pc == 1))                  // Scout is class 1 (normal)\r
883         {\r
884                 return ("Scout");\r
885         }\r
886         else\r
887         {\r
888                 if ((pc == 2.1))\r
889                 {\r
890                         return ("Sniper");              // Player Class 2 is Spy in NexTF -- no Snipers\r
891                 }\r
892                 else\r
893                 {\r
894                         if ((pc == 4))                          // Player Class 4 is soldier in NexTF\r
895                         {\r
896                                 return ("Soldier");\r
897                         }\r
898                         else\r
899                         {\r
900                                 if ((pc == 4.1))                        // No DemoMan in NexTF\r
901                                 {\r
902                                         return ("Demolitions Man");\r
903                                 }\r
904                                 else\r
905                                 {\r
906                                         if ((pc == 16))\r
907                                         {\r
908                                                 return ("Combat Medic");                // Medic is Class 16 in NexTF\r
909                                         }\r
910                                         else\r
911                                         {\r
912                                                 if ((pc == 6.1))\r
913                                                 {\r
914                                                         return ("Heavy Weapons Guy");           // No HWGuy in NexTF\r
915                                                 }\r
916                                                 else\r
917                                                 {\r
918                                                         if ((pc == 8))\r
919                                                         {\r
920                                                                 return ("Pyro");                // Pyro is class 8 in NexTF\r
921                                                         }\r
922                                                         else\r
923                                                         {\r
924                                                                 if ((pc == 2))\r
925                                                                 {\r
926                                                                         return ("Spy");                 // Spy is class 2 in NexTF\r
927                                                                 }\r
928                                                                 else\r
929                                                                 {\r
930                                                                         if ((pc == 32))\r
931                                                                         {\r
932                                                                                 return ("Engineer");            // Engineer is class 32 in nextf\r
933                                                                         }\r
934                                                                         else\r
935                                                                         {\r
936                                                                                 if ((pc == 11))                 // Wazat- we need to make civ class\r
937                                                                                 {\r
938                                                                                         return ("Civilian");\r
939                                                                                 }\r
940                                                                                 else\r
941                                                                                 {\r
942                                                                                         if ((pc == 0))\r
943                                                                                         {\r
944                                                                                                 return ("Observer");\r
945                                                                                         }\r
946                                                                                         else\r
947                                                                                         {\r
948                                                                                                 if ((pc == 10))                 // Wazat- we need to add "random class" feature\r
949                                                                                                 {\r
950                                                                                                         return ("Random Playerclass");\r
951                                                                                                 }\r
952                                                                                         }\r
953                                                                                 }\r
954                                                                         }\r
955                                                                 }\r
956                                                         }\r
957                                                 }\r
958                                         }\r
959                                 }\r
960                         }\r
961                 }\r
962         }\r
963 };\r
964 \r
965 // Prints the classname using TeamFortress_GetClassName function\r
966 void (entity Viewer, float pc, float rpc) TeamFortress_PrintClassName =\r
967 {\r
968         local string st;\r
969 \r
970         st = TeamFortress_GetClassName (pc);\r
971         sprint (Viewer, st);\r
972         if ((rpc != 0))\r
973         {\r
974                 sprint (Viewer, " (Random)");\r
975         }\r
976         sprint (Viewer, "\n");\r
977 };\r
978 \r
979 // Returns Team Color Value\r
980 //                              This is causing crashes in bringit -- I will attempt to fix\r
981 float (float tno) TeamFortress_TeamGetColor =\r
982 {\r
983         if ((tno == 1))\r
984         {\r
985                 return (14);\r
986         }\r
987         if ((tno == 2))\r
988         {\r
989                 return (5);\r
990         }\r
991         if ((tno == 3))\r
992         {\r
993                 return (13);\r
994         }\r
995         if ((tno == 4))\r
996         {\r
997                 return (12);\r
998         }\r
999         return (0);\r
1000 };\r
1001 \r
1002 // Returns Team Score Value\r
1003 float (float tno) TeamFortress_TeamGetScore =\r
1004 {\r
1005         if ((tno == 1))\r
1006         {\r
1007                 return (team1score);\r
1008         }\r
1009         if ((tno == 2))\r
1010         {\r
1011                 return (team2score);\r
1012         }\r
1013         if ((tno == 3))\r
1014         {\r
1015                 return (team3score);\r
1016         }\r
1017         if ((tno == 4))\r
1018         {\r
1019                 return (team4score);\r
1020         }\r
1021         return (0);\r
1022 };\r
1023 \r
1024 // Get Team Lives\r
1025 float (float tno) TeamFortress_TeamGetLives =\r
1026 {\r
1027         if ((tno == 1))\r
1028         {\r
1029                 return (team1lives);\r
1030         }\r
1031         if ((tno == 2))\r
1032         {\r
1033                 return (team2lives);\r
1034         }\r
1035         if ((tno == 3))\r
1036         {\r
1037                 return (team3lives);\r
1038         }\r
1039         if ((tno == 4))\r
1040         {\r
1041                 return (team4lives);\r
1042         }\r
1043         return (0);\r
1044 };\r
1045 \r
1046 // Show Team Scores\r
1047 void (float all) TeamFortress_TeamShowScores =\r
1048 {\r
1049         local string st;\r
1050         local float i;\r
1051         local float j;\r
1052 \r
1053         i = 1;\r
1054         if ((all == 2))\r
1055         {\r
1056                 while ((i <= number_of_teams))\r
1057                 {\r
1058                         if ((TeamFortress_TeamGetColor (i) > 0))\r
1059                         {\r
1060                                 j = TeamFortress_TeamGetScore (i);\r
1061                                 st = TeamFortress_TeamGetColorString (i);\r
1062 //                              bprint (st);\r
1063 //                              bprint (": ");\r
1064                                 bprint (st);\r
1065                                 bprint (": ");\r
1066                                 st = ftos (j);\r
1067                                 //bprint (st);\r
1068                                 //bprint (" ");\r
1069                                 bprint (st);\r
1070                                 bprint (" ");\r
1071                         }\r
1072                         i = (i + 1);\r
1073                 }\r
1074 //              bprint ("\n");\r
1075                 bprint ("\n");\r
1076                 return;\r
1077         }\r
1078         while ((i <= number_of_teams))\r
1079         {\r
1080                 if ((TeamFortress_TeamGetColor (i) > 0))\r
1081                 {\r
1082                         if (all)\r
1083                         {\r
1084                                 bprint ("Team ");\r
1085                         }\r
1086                         else\r
1087                         {\r
1088                                 sprint (self, "Team ");\r
1089                         }\r
1090                         st = ftos (i);\r
1091                         if (all)\r
1092                         {\r
1093                                 bprint (st);\r
1094                         }\r
1095                         else\r
1096                         {\r
1097                                 sprint (self, st);\r
1098                         }\r
1099                         if (all)\r
1100                         {\r
1101                                 bprint (" (");\r
1102                         }\r
1103                         else\r
1104                         {\r
1105                                 sprint (self, " (");\r
1106                         }\r
1107                         st = TeamFortress_TeamGetColorString (i);\r
1108                         if (all)\r
1109                         {\r
1110                                 bprint (st);\r
1111                         }\r
1112                         else\r
1113                         {\r
1114                                 sprint (self, st);\r
1115                         }\r
1116                         if (all)\r
1117                         {\r
1118                                 bprint (") : ");\r
1119                         }\r
1120                         else\r
1121                         {\r
1122                                 sprint (self, ") : ");\r
1123                         }\r
1124                         j = TeamFortress_TeamGetScore (i);\r
1125                         st = ftos (j);\r
1126                         if (all)\r
1127                         {\r
1128                                 bprint (st);\r
1129                         }\r
1130                         else\r
1131                         {\r
1132                                 sprint (self, st);\r
1133                         }\r
1134                         if (all)\r
1135                         {\r
1136                                 bprint ("\n");\r
1137                         }\r
1138                         else\r
1139                         {\r
1140                                 sprint (self, "\n");\r
1141                         }\r
1142                 }\r
1143                 i = (i + 1);\r
1144         }\r
1145 };\r
1146 \r
1147 // Get Number Of Players On Team\r
1148 float (float tno) TeamFortress_TeamGetNoPlayers =\r
1149 {\r
1150         local float size_team;\r
1151         local entity search;\r
1152 \r
1153         search = find (world, classname, "player");\r
1154         while ((search != world))\r
1155         {\r
1156                 if ((search.team_no == tno))\r
1157                 {\r
1158                         size_team = (size_team + 1);\r
1159                 }\r
1160                 search = find (search, classname, "player");\r
1161         }\r
1162         return (size_team);\r
1163 };\r
1164 \r
1165 // Get general number of players\r
1166 float () TeamFortress_GetNoPlayers =\r
1167 {\r
1168         local float nump;\r
1169         local entity search;\r
1170 \r
1171         search = find (world, classname, "player");\r
1172         while ((search != world))\r
1173         {\r
1174                 if ((search.netname != string_null))\r
1175                 {\r
1176                         nump = (nump + 1);\r
1177                 }\r
1178                 search = find (search, classname, "player");\r
1179         }\r
1180         return (nump);\r
1181 };\r
1182 \r
1183 // Get max players for a team\r
1184 float (float tno) TeamFortress_TeamGetMaxPlayers =\r
1185 {\r
1186         if ((tno == 1))\r
1187         {\r
1188                 return (team1maxplayers);\r
1189         }\r
1190         if ((tno == 2))\r
1191         {\r
1192                 return (team2maxplayers);\r
1193         }\r
1194         if ((tno == 3))\r
1195         {\r
1196                 return (team3maxplayers);\r
1197         }\r
1198         if ((tno == 4))\r
1199         {\r
1200                 return (team4maxplayers);\r
1201         }\r
1202         return (0);\r
1203 };\r
1204 \r
1205 // Set The Team Color\r
1206 void (float tno) TeamFortress_TeamSetColor =\r
1207 {\r
1208         if ((tno == 1))\r
1209         {\r
1210                 team1col = 14;\r
1211                 return;\r
1212         }\r
1213         if ((tno == 2))\r
1214         {\r
1215                 team2col = 5;\r
1216                 return;\r
1217         }\r
1218         if ((tno == 3))\r
1219         {\r
1220                 team3col = 13;\r
1221                 return;\r
1222         }\r
1223         if ((tno == 4))\r
1224         {\r
1225                 team4col = 12;\r
1226                 return;\r
1227         }\r
1228 };\r
1229 \r
1230 // Set The Team Number\r
1231 float (float tno) TeamFortress_TeamSet =\r
1232 {\r
1233         local string st;\r
1234         local float tc;\r
1235 \r
1236         if ((teamplay < 1))\r
1237         {\r
1238                 sprint (self, "Teamplay is not On, so FortressTeams are inactive.\n");\r
1239                 return (0);\r
1240         }\r
1241         if (((tno > number_of_teams) && (number_of_teams != 0)))\r
1242         {\r
1243                 sprint (self, "There can be only ");\r
1244                 st = ftos (number_of_teams);\r
1245                 sprint (self, st);\r
1246                 sprint (self, " teams on this map.\nTry again\n");\r
1247                 return (0);\r
1248         }\r
1249         if ((self.team_no > 0))\r
1250         {\r
1251                 sprint (self, "You're already in Team No ");\r
1252                 st = ftos (self.team_no);\r
1253                 sprint (self, st);\r
1254                 sprint (self, ".\n");\r
1255                 return (0);\r
1256         }\r
1257         tc = TeamFortress_TeamGetNoPlayers (tno);\r
1258         if ((tc >= TeamFortress_TeamGetMaxPlayers (tno)))\r
1259         {\r
1260                 sprint (self, "That team is full. Pick another.\n");\r
1261                 return (0);\r
1262         }\r
1263         if ((TeamFortress_TeamGetColor (tno) == 0))\r
1264         {\r
1265                 TeamFortress_TeamSetColor (tno);\r
1266                 if ((TeamFortress_TeamGetColor (tno) == 0))\r
1267                 {\r
1268                         sprint (self, "You can't start a new team with your color, since another ");\r
1269                         sprint (self, "already using that color. Change your pants color, then try again.\n");\r
1270                         return (0);\r
1271                 }\r
1272                 bprint (self.netname);\r
1273                 bprint (" has started Team No ");\r
1274                 st = ftos (tno);\r
1275                 bprint (st);\r
1276                 bprint (".\n");\r
1277                 self.immune_to_check = (time + 10);\r
1278                 if (((toggleflags & 128) || (toggleflags & 2048)))\r
1279                 {\r
1280                         self.frags = TeamFortress_TeamGetScore (tno);\r
1281                 }\r
1282                 stuffcmd (self, "color ");\r
1283                 tc = (TeamFortress_TeamGetColor (tno) - 1);\r
1284                 st = ftos (tc);\r
1285                 stuffcmd (self, st);\r
1286                 stuffcmd (self, "\n");\r
1287                 self.team_no = tno;\r
1288                 self.lives = TeamFortress_TeamGetLives (tno);\r
1289                 //if ((self.playerclass == 0))\r
1290                 if ((self.class == 0))\r
1291                 {\r
1292                         if (TeamFortress_TeamIsCivilian (self.team_no))\r
1293                         {\r
1294                                 self.impulse = 1;\r
1295                                 TeamFortress_ChangeClass ();\r
1296                         }\r
1297                 }\r
1298                 return (1);\r
1299         }\r
1300         bprint (self.netname);\r
1301         bprint (" has joined Team No ");\r
1302         st = ftos (tno);\r
1303         bprint (st);\r
1304         bprint (".\n");\r
1305         stuffcmd (self, "color ");\r
1306         tc = (TeamFortress_TeamGetColor (tno) - 1);\r
1307         st = ftos (tc);\r
1308         stuffcmd (self, st);\r
1309         stuffcmd (self, "\n");\r
1310         self.team_no = tno;\r
1311         self.immune_to_check = (time + 10);\r
1312         self.lives = TeamFortress_TeamGetLives (tno);\r
1313         if (((toggleflags & 128) || (toggleflags & 2048)))\r
1314         {\r
1315                 self.frags = TeamFortress_TeamGetScore (tno);\r
1316         }\r
1317         TeamFortress_TeamShowMemberClasses (self);\r
1318         //if ((self.playerclass == 0))\r
1319         if ((self.class == 0))\r
1320         {\r
1321                 if (TeamFortress_TeamIsCivilian (self.team_no))\r
1322                 {\r
1323                         self.impulse = 1;\r
1324                         TeamFortress_ChangeClass ();\r
1325                 }\r
1326         }\r
1327         return (1);\r
1328 };\r
1329 \r
1330 // Get team score (used in conjunction with autoteam..)\r
1331 float (float tno) TeamFortress_GetRealScore =\r
1332 {\r
1333         local entity te;\r
1334         local float total;\r
1335 \r
1336         te = find (world, classname, "player");\r
1337         while (te)\r
1338         {\r
1339                 if (te.team_no == tno)\r
1340                 {                       \r
1341                         total = total + te.real_frags;\r
1342                 }\r
1343                 te = find (te, classname, "player");\r
1344         }\r
1345         return total;\r
1346 }\r
1347 \r
1348 // Find best team for player (autoteam?)\r
1349 float() TeamFortress_TeamPutPlayerInTeam = \r
1350 {\r
1351         local float i;\r
1352         local float j;\r
1353         local float score1;\r
1354         local float score2;\r
1355 \r
1356         local float lowest;\r
1357         local float likely_team;\r
1358 \r
1359         i = 1;\r
1360         likely_team = random() * number_of_teams;\r
1361         likely_team = ceil(likely_team);\r
1362         if (likely_team == 0)\r
1363         {\r
1364                 likely_team = number_of_teams;\r
1365         }\r
1366 \r
1367         lowest = 33;\r
1368         while (i < number_of_teams + 1)\r
1369         {\r
1370                 j = TeamFortress_TeamGetNoPlayers(i);\r
1371                 \r
1372                 if (j < lowest)\r
1373                 {\r
1374                         if (TeamFortress_TeamGetMaxPlayers(i) > j)\r
1375                         {\r
1376                                 lowest = j;\r
1377                                 likely_team = i;\r
1378                         }\r
1379                 }\r
1380                 // pablo. fancier autoteam for even teams.\r
1381                 else if (j == lowest)\r
1382                 {\r
1383                         \r
1384                         if (TeamFortress_TeamGetMaxPlayers(i) > j)\r
1385                         {\r
1386                                 score1 = TeamFortress_GetRealScore(i);\r
1387                                 score2 = TeamFortress_GetRealScore(likely_team);\r
1388 \r
1389                                 if ( score1 < score2 )\r
1390                                 {\r
1391                                         likely_team = i;\r
1392                                 }\r
1393                                 else if (score1 == score2)\r
1394                                 {\r
1395                                         if (random() > 0.5)\r
1396                                         {\r
1397                                                 likely_team = i;\r
1398                                         }\r
1399                                 }\r
1400                         }\r
1401                 }\r
1402                 //\r
1403                 i = i + 1;\r
1404         }\r
1405         return TeamFortress_TeamSet(likely_team);\r
1406 };\r
1407 \r
1408 // Remove item_tfgoal timers\r
1409 void() TeamFortress_RemoveTimers = \r
1410 {\r
1411         local entity te;\r
1412 //      self.leg_damage = 0;            // No Snipers\r
1413 //      self.is_undercover = 0;         // I think this function is called in PlayerKill\r
1414 //      self.is_building = 0;           // To Be Added ?\r
1415 //      self.building = world;          // To Be Added ?\r
1416         if (self.tfstate & 2048)\r
1417         {\r
1418                 self.tfstate = self.tfstate - 2048;\r
1419                 TeamFortress_SetSpeed(self);\r
1420                 self.heat = 0;\r
1421         }\r
1422         te = find(world, classname, "timer");\r
1423         while (te != world)\r
1424         {\r
1425                 if (te.owner == self)\r
1426                 {\r
1427                         dremove(te);\r
1428                         te = find(world, classname, "timer");\r
1429                 }\r
1430                 else\r
1431                 {\r
1432                         te = find(te, classname, "timer");\r
1433                 }\r
1434         }\r
1435         te = find(world, classname, "item_tfgoal");\r
1436         while (te)\r
1437         {\r
1438                 if (te.owner == self)\r
1439                 {\r
1440                         if (!(te.goal_activation & 256))\r
1441                         {\r
1442                                 tfgoalitem_RemoveFromPlayer(te, self, 0);\r
1443                         }\r
1444                         if (CTF_Map == 1 && te.goal_no == 1)\r
1445                         {\r
1446                                 bprint(self.netname);\r
1447                                 bprint(" ÌÏÓÔ the ÂÌÕÅ flag!\n");\r
1448                         }\r
1449                         else\r
1450                         {\r
1451                                 if (CTF_Map == 1 && te.goal_no == 2)\r
1452                                 {\r
1453                                         bprint(self.netname);\r
1454                                         bprint(" ÌÏÓÔ the ÒÅÄ flag!\n");\r
1455                                 }\r
1456                         }\r
1457                 }\r
1458                 te = find(te, classname, "item_tfgoal");\r
1459         }\r
1460         te = find(world, classname, "detpack");\r
1461         while (te)\r
1462         {\r
1463                 if (te.weaponmode == 1 && te.enemy == self)\r
1464                 {\r
1465                         te.weaponmode = 0;\r
1466                 }\r
1467                 te = find(te, classname, "detpack");\r
1468         }\r
1469 //      TeamFortress_DetonatePipebombs(); gold. this is the old code for removing pipebombs on quitting.  new one written by pablo is below.\r
1470         // NO PIPEBOMBS IN NEXTF\r
1471 /*      te = find(world, classname, "pipebomb");\r
1472         while (te != world)\r
1473         {\r
1474                 if(te.owner == self)\r
1475                 {\r
1476                         decrement_team_pipebombs(self.team_no);\r
1477                         deathmsg = te.weapon;\r
1478                         te.weapon = 10;\r
1479                         T_RadiusDamage(te, self, 120, world);\r
1480                         WriteByte(4, 23);\r
1481                         WriteByte(4, 3);\r
1482                         WriteCoord(4, te.origin_x);\r
1483                         WriteCoord(4, te.origin_y);\r
1484                         WriteCoord(4, te.origin_z);\r
1485                         multicast(te.origin, TF_FLARE_OFF);\r
1486                         dremove(te);\r
1487                 }\r
1488         te = find(te, classname, "pipebomb");\r
1489         }*/\r
1490 //      stuffcmd(self, "v_idlescale 0\n");\r
1491 //      stuffcmd(self, "v_cshift 0 0 0 0\n");\r
1492 //      self.item_list = 0;                     // To Be Added?\r
1493 //      self.FlashTime = 0;\r
1494         CenterPrint(self, "\n");\r
1495         self.menu_count = 25;           // Menu Stuff - important\r
1496         self.current_menu = 1;          ////\r
1497         self.impulse = 0;\r
1498 };\r
1499 \r
1500 // TF's Become Explosion\r
1501 void() BecomeExplosion = \r
1502 {\r
1503         dremove(self);\r
1504 };\r
1505 \r
1506 // TF Alias Maker\r
1507 void(string halias, float himpulse1, float himpulse2) TeamFortress_Alias = \r
1508 {\r
1509         local string imp;\r
1510         stuffcmd(self, "alias ");\r
1511         stuffcmd(self, halias);\r
1512         stuffcmd(self, " \"impulse ");\r
1513         imp = ftos(himpulse1);\r
1514         stuffcmd(self, imp);\r
1515         if (himpulse2 != 0)\r
1516         {\r
1517                 stuffcmd(self, ";wait; impulse ");\r
1518                 imp = ftos(himpulse2);\r
1519                 stuffcmd(self, imp);\r
1520         }\r
1521         stuffcmd(self, "\"\n");\r
1522 };\r
1523 \r
1524 // XavioR's new TF reload function\r
1525 void (float o, float m, void () g) weapon_thinkf;\r
1526 void () Reload_Restore_Weapon =\r
1527 {\r
1528         self.owner.weaponentity.pos1 = '0 0 0';\r
1529         self.owner.weaponentity.lip = PLAYER_WEAPONSELECTION_SPEED;\r
1530         dremove(self);\r
1531 };\r
1532 \r
1533 void (float rweapon, float amount) DoReload =\r
1534 {\r
1535         local float rtime;\r
1536 \r
1537         if (self.reload_time > time)\r
1538                 return;\r
1539         if (amount == 0)\r
1540                 return;\r
1541 \r
1542         weapon_action(self.weapon, WR_UPDATECOUNTS); // update ammo now\r
1543         sprint(self, "Reloading...\n");\r
1544         if (rweapon == 2)               // CryLink (flak cannon)\r
1545         {\r
1546                 rtime = (amount * .80);\r
1547                 self.clip_crylink = CLIP_MAX_CRYLINK;\r
1548         }\r
1549         if (rweapon == 3)               // Rocket launcher\r
1550         {\r
1551                 rtime = (amount * 1.30);\r
1552                 self.clip_rockets = 4;\r
1553         }\r
1554         if (rweapon == 4)               // Pipe Grenade Launcher\r
1555         {\r
1556                 rtime = (amount * 1.05);\r
1557                 self.clip_pipegrenades = 6;\r
1558         }\r
1559 \r
1560         self.weaponentity.pos1 = PLAYER_WEAPONSELECTION_RANGE;\r
1561         self.weaponentity.lip = PLAYER_WEAPONSELECTION_SPEED;\r
1562         newmis = spawn();\r
1563         newmis.owner = self;\r
1564         newmis.think = Reload_Restore_Weapon;\r
1565         newmis.nextthink = time + rtime;\r
1566         self.reload_time = time + rtime;\r
1567 };\r
1568 \r
1569 // CENTERPRINT\r
1570 void (entity pl, string s1, string s2) CenterPrint2 =\r
1571 {\r
1572         centerprint (pl, s1, s2);\r
1573         pl.StatusRefreshTime = (time + 1.5);\r
1574 };