1 /* --- UrreBotSetup ---
\r
2 Issues a random funky name, random colors, playermodel and team to the bot*/
\r
4 void() UrreBotSetup =
\r
6 local float r, shirt, pants;
\r
11 s = "GrooveMachine";
\r
52 self.playermodel = "models/player/carni.zym";
\r
54 self.playerskin = "0";
\r
56 self.playerskin = "1";
\r
60 self.playermodel = "models/player/crash.zym";
\r
61 self.playerskin = "0";
\r
65 self.playermodel = "models/player/grunt.zym";
\r
66 self.playerskin = "0";
\r
70 self.playermodel = "models/player/headhunter.zym";
\r
71 self.playerskin = "0";
\r
75 self.playermodel = "models/player/insurrectionist.zym";
\r
76 self.playerskin = "0";
\r
80 self.playermodel = "models/player/jeandarc.zym";
\r
81 self.playerskin = "0";
\r
85 self.playermodel = "models/player/lurk.zym";
\r
87 self.playerskin = "0";
\r
89 self.playerskin = "1";
\r
93 self.playermodel = "models/player/lycanthrope.zym";
\r
94 self.playerskin = "0";
\r
98 self.playermodel = "models/player/marine.zym";
\r
99 self.playerskin = "0";
\r
103 self.playermodel = "models/player/nexus.zym";
\r
104 if (random() < 0.5)
\r
105 self.playerskin = "0";
\r
107 self.playerskin = "1";
\r
111 self.playermodel = "models/player/pyria.zym";
\r
112 self.playerskin = "0";
\r
116 self.playermodel = "models/player/shock.zym";
\r
117 self.playerskin = "0";
\r
121 self.playermodel = "models/player/skadi.zym";
\r
122 self.playerskin = "0";
\r
126 self.playermodel = "models/player/specop.zym";
\r
127 self.playerskin = "0";
\r
131 self.playermodel = "models/player/visitant.zym";
\r
132 self.playerskin = "0";
\r
136 JoinBestTeam(self, 0);
\r
139 shirt = floor(random()*15);
\r
140 pants = floor(random()*15);
\r
141 self.clientcolors = pants + shirt * 16;
\r
145 /* --- UrreBotAdd ---
\r
146 Adds an UrreBot to the server*/
\r
148 entity(float bottype) UrreBotAdd =
\r
150 local float shirt, pants;
\r
151 local entity ent, ret;
\r
154 self = spawnclient();
\r
157 bprint("Can not add UrreBot, server full\n");
\r
158 if (bottype == BOT_TYPE_URREBOT)
\r
159 cvar_set("urrebots", ftos(urrebots));
\r
161 cvar_set("bot_number", ftos(bot_number));
\r
166 // Requested by Vermeulen
\r
167 self.netname = PickARandomName();
\r
169 JoinBestTeam(self, 0);
\r
172 shirt = floor(random()*15);
\r
173 pants = floor(random()*15);
\r
174 self.clientcolors = pants + shirt * 16;
\r
176 self.list = urrebot_chain;
\r
177 urrebot_chain = self;
\r
179 PutClientInServer();
\r
183 strategytoken = urrebot_chain;
\r
188 /* --- UrreBotRemove ---
\r
189 removes an UrreBot from the server*/
\r
191 void() UrreBotRemove =
\r
193 local entity ent, t, oldself;
\r
195 ent = findchainflags(flags, FL_CLIENT);
\r
198 if (clienttype(ent) == CLIENTTYPE_BOT)
\r
200 if (ent.bot_type == BOT_TYPE_URREBOT)
\r
202 if (urrebot_chain == ent)
\r
203 urrebot_chain = ent.list;
\r
206 t = find(world, classname, "player");
\r
211 t = find(t, classname, "player");
\r
218 ClientDisconnect();
\r
227 /* --- SpawnNavNode ---
\r
228 The one to guess what this does gets free bacon from FrikaC*/
\r
230 entity(vector org, vector nnmins, vector nnmaxs) SpawnNavNode =
\r
233 setsize(newmis, nnmins, nnmaxs);
\r
234 newmis.classname = "navnode";
\r
235 setorigin(newmis, org);
\r
239 /* --- AddPlane ---
\r
240 Adds a plane to the plane list of a navnode*/
\r
242 void(entity navn, vector normal, float dist) AddPlane =
\r
247 newmis.classname = "plane";
\r
248 newmis.list = navn.plane_chain;
\r
249 navn.plane_chain = newmis;
\r
250 newmis.mangle = normal*-1;
\r
251 newmis.delay = dist;
\r
252 f = (navn.origin * newmis.mangle) - ((navn.origin + (newmis.delay * newmis.mangle)) * newmis.mangle);
\r
255 newmis.mangle = newmis.mangle*-1;
\r
256 newmis.delay = newmis.delay*-1;
\r
260 /* --- SpawnOptPoint ---
\r
261 This function spawns waypoints for the most used paths between navnodes as an
\r
264 void(entity navn, entity l1, entity l2) SpawnOptPoint =
\r
267 local vector point;
\r
268 local entity oldself;
\r
269 local entity l, upd_pt;
\r
272 setsize (newmis, PL_MIN, PL_MAX);
\r
275 point = ClampPointToSpace(ClampPointToSpace(l2.origin, l2, navn), l1, navn);
\r
278 l = navn.optp_chain;
\r
281 if (point == l.origin)
\r
293 if (upd_pt.link0 != l1)
\r
294 if (upd_pt.link1 != l1)
\r
295 if (upd_pt.link2 != l1)
\r
296 if (upd_pt.link3 != l1)
\r
297 if (upd_pt.link4 != l1)
\r
298 if (upd_pt.link5 != l1)
\r
299 if (upd_pt.link6 != l1)
\r
300 if (upd_pt.link7 != l1)
\r
301 if (upd_pt.link8 != l1)
\r
302 if (upd_pt.link9 != l1)
\r
306 else if (!upd_pt.link1)
\r
308 else if (!upd_pt.link2)
\r
310 else if (!upd_pt.link3)
\r
312 else if (!upd_pt.link4)
\r
314 else if (!upd_pt.link5)
\r
316 else if (!upd_pt.link6)
\r
318 else if (!upd_pt.link7)
\r
320 else if (!upd_pt.link8)
\r
322 else if (!upd_pt.link9)
\r
326 if (upd_pt.link10 != l2)
\r
327 if (upd_pt.link11 != l2)
\r
328 if (upd_pt.link12 != l2)
\r
329 if (upd_pt.link13 != l2)
\r
330 if (upd_pt.link14 != l2)
\r
331 if (upd_pt.link15 != l2)
\r
332 if (upd_pt.link16 != l2)
\r
333 if (upd_pt.link17 != l2)
\r
334 if (upd_pt.link18 != l2)
\r
335 if (upd_pt.link19 != l2)
\r
337 if (!upd_pt.link10)
\r
339 upd_pt.link10 = l2;
\r
342 else if (!upd_pt.link11)
\r
344 upd_pt.link11 = l2;
\r
347 else if (!upd_pt.link12)
\r
349 upd_pt.link12 = l2;
\r
352 else if (!upd_pt.link13)
\r
354 upd_pt.link13 = l2;
\r
357 else if (!upd_pt.link14)
\r
359 upd_pt.link14 = l2;
\r
362 else if (!upd_pt.link15)
\r
364 upd_pt.link15 = l2;
\r
367 else if (!upd_pt.link16)
\r
369 upd_pt.link16 = l2;
\r
372 else if (!upd_pt.link17)
\r
374 upd_pt.link17 = l2;
\r
377 else if (!upd_pt.link18)
\r
379 upd_pt.link18 = l2;
\r
382 else if (!upd_pt.link19)
\r
384 upd_pt.link19 = l2;
\r
392 newmis.classname = "optpoint";
\r
393 newmis.list = navn.optp_chain;
\r
394 navn.optp_chain = newmis;
\r
395 setorigin(newmis, point);
\r
397 newmis.link10 = l2;
\r
403 void() OptimiseNavigation =
\r
405 local entity navn, l;
\r
407 navn = navnode_chain;
\r
410 l = navn.optp_chain;
\r
413 l.think = SUB_Remove;
\r
414 l.nextthink = time;
\r
415 SpawnOptPoint(navn, l.enemy, navn);
\r
416 if (navn.link0 != l.enemy)
\r
417 if (!(navn.lflags0 & LF_NOWALK))
\r
418 if (!(navn.lflags0 & LF_NOLINK))
\r
419 SpawnOptPoint(navn, l.enemy, navn.link0);
\r
422 if (navn.link1 != l.enemy)
\r
423 if (!(navn.lflags1 & LF_NOWALK))
\r
424 if (!(navn.lflags1 & LF_NOLINK))
\r
425 SpawnOptPoint(navn, l.enemy, navn.link1);
\r
428 if (navn.link2 != l.enemy)
\r
429 if (!(navn.lflags2 & LF_NOWALK))
\r
430 if (!(navn.lflags2 & LF_NOLINK))
\r
431 SpawnOptPoint(navn, l.enemy, navn.link2);
\r
434 if (navn.link3 != l.enemy)
\r
435 if (!(navn.lflags3 & LF_NOWALK))
\r
436 if (!(navn.lflags3 & LF_NOLINK))
\r
437 SpawnOptPoint(navn, l.enemy, navn.link3);
\r
440 if (navn.link4 != l.enemy)
\r
441 if (!(navn.lflags4 & LF_NOWALK))
\r
442 if (!(navn.lflags4 & LF_NOLINK))
\r
443 SpawnOptPoint(navn, l.enemy, navn.link4);
\r
446 if (navn.link5 != l.enemy)
\r
447 if (!(navn.lflags5 & LF_NOWALK))
\r
448 if (!(navn.lflags5 & LF_NOLINK))
\r
449 SpawnOptPoint(navn, l.enemy, navn.link5);
\r
452 if (navn.link6 != l.enemy)
\r
453 if (!(navn.lflags6 & LF_NOWALK))
\r
454 if (!(navn.lflags6 & LF_NOLINK))
\r
455 SpawnOptPoint(navn, l.enemy, navn.link6);
\r
458 if (navn.link7 != l.enemy)
\r
459 if (!(navn.lflags7 & LF_NOWALK))
\r
460 if (!(navn.lflags7 & LF_NOLINK))
\r
461 SpawnOptPoint(navn, l.enemy, navn.link7);
\r
464 if (navn.link8 != l.enemy)
\r
465 if (!(navn.lflags8 & LF_NOWALK))
\r
466 if (!(navn.lflags8 & LF_NOLINK))
\r
467 SpawnOptPoint(navn, l.enemy, navn.link8);
\r
470 if (navn.link9 != l.enemy)
\r
471 if (!(navn.lflags9 & LF_NOWALK))
\r
472 if (!(navn.lflags9 & LF_NOLINK))
\r
473 SpawnOptPoint(navn, l.enemy, navn.link9);
\r
476 if (navn.link10 != l.enemy)
\r
477 if (!(navn.lflags10 & LF_NOWALK))
\r
478 if (!(navn.lflags10 & LF_NOLINK))
\r
479 SpawnOptPoint(navn, l.enemy, navn.link10);
\r
482 if (navn.link11 != l.enemy)
\r
483 if (!(navn.lflags11 & LF_NOWALK))
\r
484 if (!(navn.lflags11 & LF_NOLINK))
\r
485 SpawnOptPoint(navn, l.enemy, navn.link11);
\r
488 if (navn.link12 != l.enemy)
\r
489 if (!(navn.lflags12 & LF_NOWALK))
\r
490 if (!(navn.lflags12 & LF_NOLINK))
\r
491 SpawnOptPoint(navn, l.enemy, navn.link12);
\r
494 if (navn.link13 != l.enemy)
\r
495 if (!(navn.lflags13 & LF_NOWALK))
\r
496 if (!(navn.lflags13 & LF_NOLINK))
\r
497 SpawnOptPoint(navn, l.enemy, navn.link13);
\r
500 if (navn.link14 != l.enemy)
\r
501 if (!(navn.lflags14 & LF_NOWALK))
\r
502 if (!(navn.lflags14 & LF_NOLINK))
\r
503 SpawnOptPoint(navn, l.enemy, navn.link14);
\r
506 if (navn.link15 != l.enemy)
\r
507 if (!(navn.lflags15 & LF_NOWALK))
\r
508 if (!(navn.lflags15 & LF_NOLINK))
\r
509 SpawnOptPoint(navn, l.enemy, navn.link15);
\r
512 if (navn.link16 != l.enemy)
\r
513 if (!(navn.lflags16 & LF_NOWALK))
\r
514 if (!(navn.lflags16 & LF_NOLINK))
\r
515 SpawnOptPoint(navn, l.enemy, navn.link16);
\r
518 if (navn.link17 != l.enemy)
\r
519 if (!(navn.lflags17 & LF_NOWALK))
\r
520 if (!(navn.lflags17 & LF_NOLINK))
\r
521 SpawnOptPoint(navn, l.enemy, navn.link17);
\r
524 if (navn.link18 != l.enemy)
\r
525 if (!(navn.lflags18 & LF_NOWALK))
\r
526 if (!(navn.lflags18 & LF_NOLINK))
\r
527 SpawnOptPoint(navn, l.enemy, navn.link18);
\r
529 if (navn.link19 != l.enemy)
\r
530 if (!(navn.lflags19 & LF_NOWALK))
\r
531 if (!(navn.lflags19 & LF_NOLINK))
\r
532 SpawnOptPoint(navn, l.enemy, navn.link19);
\r
557 void(entity navn, entity linked) SpawnOptController =
\r
560 newmis.classname = "optcontroller";
\r
561 newmis.list = navn.optp_chain;
\r
562 navn.optp_chain = newmis;
\r
563 newmis.enemy = linked;
\r
566 /* --- LinkNavNodes ---
\r
567 Links the navnodes and gives some special attributes (like doors, teleporters)*/
\r
569 void() LinkNavNodes =
\r
571 local entity e, t, tdest;
\r
573 navnode_chain = world;
\r
576 e = findchain(classname, "navnode");
\r
579 e.list = navnode_chain;
\r
581 e.delay = navnodes;
\r
582 navnodes = navnodes + 1;
\r
591 e.link0.think = SUB_Remove;
\r
592 e.link0.nextthink = time;
\r
596 if (t.delay == e.link0.delay)
\r
600 e.lflags0 = e.lflags0 | LF_REMOTE;
\r
604 e.link1.think = SUB_Remove;
\r
605 e.link1.nextthink = time;
\r
609 if (t.delay == e.link1.delay)
\r
613 e.lflags1 = e.lflags1 | LF_REMOTE;
\r
617 e.link2.think = SUB_Remove;
\r
618 e.link2.nextthink = time;
\r
622 if (t.delay == e.link2.delay)
\r
626 e.lflags2 = e.lflags2 | LF_REMOTE;
\r
630 e.link3.think = SUB_Remove;
\r
631 e.link3.nextthink = time;
\r
635 if (t.delay == e.link3.delay)
\r
639 e.lflags3 = e.lflags3 | LF_REMOTE;
\r
643 e.link4.think = SUB_Remove;
\r
644 e.link4.nextthink = time;
\r
648 if (t.delay == e.link4.delay)
\r
652 e.lflags4 = e.lflags4 | LF_REMOTE;
\r
656 e.link5.think = SUB_Remove;
\r
657 e.link5.nextthink = time;
\r
661 if (t.delay == e.link5.delay)
\r
665 e.lflags5 = e.lflags5 | LF_REMOTE;
\r
669 e.link6.think = SUB_Remove;
\r
670 e.link6.nextthink = time;
\r
674 if (t.delay == e.link6.delay)
\r
678 e.lflags6 = e.lflags6 | LF_REMOTE;
\r
682 e.link7.think = SUB_Remove;
\r
683 e.link7.nextthink = time;
\r
687 if (t.delay == e.link7.delay)
\r
691 e.lflags7 = e.lflags7 | LF_REMOTE;
\r
695 e.link8.think = SUB_Remove;
\r
696 e.link8.nextthink = time;
\r
700 if (t.delay == e.link8.delay)
\r
704 e.lflags8 = e.lflags8 | LF_REMOTE;
\r
708 e.link9.think = SUB_Remove;
\r
709 e.link9.nextthink = time;
\r
713 if (t.delay == e.link9.delay)
\r
717 e.lflags9 = e.lflags9 | LF_REMOTE;
\r
721 e.link10.think = SUB_Remove;
\r
722 e.link10.nextthink = time;
\r
726 if (t.delay == e.link10.delay)
\r
730 e.lflags10 = e.lflags10 | LF_REMOTE;
\r
734 e.link11.think = SUB_Remove;
\r
735 e.link11.nextthink = time;
\r
739 if (t.delay == e.link11.delay)
\r
743 e.lflags11 = e.lflags11 | LF_REMOTE;
\r
747 e.link12.think = SUB_Remove;
\r
748 e.link12.nextthink = time;
\r
752 if (t.delay == e.link12.delay)
\r
756 e.lflags12 = e.lflags12 | LF_REMOTE;
\r
760 e.link13.think = SUB_Remove;
\r
761 e.link13.nextthink = time;
\r
765 if (t.delay == e.link13.delay)
\r
769 e.lflags13 = e.lflags13 | LF_REMOTE;
\r
773 e.link14.think = SUB_Remove;
\r
774 e.link14.nextthink = time;
\r
778 if (t.delay == e.link14.delay)
\r
782 e.lflags14 = e.lflags14 | LF_REMOTE;
\r
786 e.link15.think = SUB_Remove;
\r
787 e.link15.nextthink = time;
\r
791 if (t.delay == e.link15.delay)
\r
795 e.lflags15 = e.lflags15 | LF_REMOTE;
\r
799 e.link16.think = SUB_Remove;
\r
800 e.link16.nextthink = time;
\r
804 if (t.delay == e.link16.delay)
\r
808 e.lflags16 = e.lflags16 | LF_REMOTE;
\r
812 e.link17.think = SUB_Remove;
\r
813 e.link17.nextthink = time;
\r
817 if (t.delay == e.link17.delay)
\r
821 e.lflags17 = e.lflags17 | LF_REMOTE;
\r
825 e.link18.think = SUB_Remove;
\r
826 e.link18.nextthink = time;
\r
830 if (t.delay == e.link18.delay)
\r
834 e.lflags18 = e.lflags18 | LF_REMOTE;
\r
838 e.link19.think = SUB_Remove;
\r
839 e.link19.nextthink = time;
\r
843 if (t.delay == e.link19.delay)
\r
847 e.lflags19 = e.lflags19 | LF_REMOTE;
\r
854 if (!(e.sflags & S_TELEPORT))
\r
859 if (boxesoverlap(e.origin + e.mins, e.origin + e.maxs, t.origin + t.mins, t.origin + t.maxs))
\r
902 else if (!e.link10)
\r
904 else if (!e.link11)
\r
906 else if (!e.link12)
\r
908 else if (!e.link13)
\r
910 else if (!e.link14)
\r
912 else if (!e.link15)
\r
914 else if (!e.link16)
\r
916 else if (!e.link17)
\r
918 else if (!e.link18)
\r
920 else if (!e.link19)
\r
923 dprint("WARNING: Too many linking NavNodes!\n");
\r
924 if (urrebots_navopt)
\r
925 SpawnOptController(e, t);
\r
935 if (e.sflags & S_TELEPORT)
\r
937 t = findchain(classname, "trigger_teleport");
\r
940 if (boxesoverlap(t.absmin, t.absmax, e.absmin, e.absmax))
\r
942 tdest = find(world, targetname, t.target);
\r
943 tdest = FindCurrentNavNode(tdest.origin, '0 0 0', '0 0 0');
\r
949 error("Expected navnode\n");
\r
951 else if (e.sflags & S_DOOR)
\r
953 t = findchain(classname, "door");
\r
956 if (boxesoverlap(t.absmin, t.absmax, e.absmin, e.absmax))
\r
961 error("Expected door\n");
\r
967 /* --- LoadNavNodes ---
\r
968 Loads the navnodes from an .nnl file (NavNodeList) for the map*/
\r
970 void() LoadNavNodes =
\r
972 local float f, file, length;
\r
975 local float tfl0, tfl1, tfl2, tfl3, tfl4, tfl5, tfl6, tfl7, tfl8, tfl9;
\r
976 local float tfl10, tfl11, tfl12, tfl13, tfl14, tfl15, tfl16, tfl17, tfl18, tfl19;
\r
978 local float rl0, rl1, rl2, rl3, rl4, rl5, rl6, rl7, rl8, rl9;
\r
979 local float rl10, rl11, rl12, rl13, rl14, rl15, rl16, rl17, rl18, rl19;
\r
981 local vector wborg, wbmaxs, wbmins;
\r
982 local entity e, plane_storage;
\r
986 dprint("NavNodes present, map needs to be reloaded to load navnode-file\n");
\r
990 plane_storage = spawn();
\r
992 length = strlen(world.model);
\r
993 length = length - 5;
\r
994 s = substring(world.model, 5, length);
\r
995 s = strcat("maps/", s, ".nnl");
\r
997 file = fopen(s, FILE_READ);
\r
1001 dprint("Found navnode file\n");
\r
1003 while (s == "navnode")
\r
1008 wborg = wbmaxs = wbmins = nullvector;
\r
1009 plane_storage.plane_chain = world;
\r
1011 tfl0 = tfl1 = tfl2 = tfl3 = tfl4 = tfl5 = tfl6 = tfl7 = tfl8 = tfl9 = 0;
\r
1012 tfl10 = tfl11 = tfl12 = tfl13 = tfl14 = tfl15 = tfl16 = tfl17 = tfl18 = tfl19 = 0;
\r
1013 rl0 = rl1 = rl2 = rl3 = rl4 = rl5 = rl6 = rl7 = rl8 = rl9 = -1;
\r
1014 rl10 = rl11 = rl12 = rl13 = rl14 = rl15 = rl16 = rl17 = rl18 = rl19 = -1;
\r
1022 while (s == "plane")
\r
1028 AddPlane(plane_storage, pln*-1, pdst);
\r
1031 while (substring(s, 0, 6) == "remote")
\r
1033 length = strlen(s);
\r
1034 f = stof(substring(s, 6, length));
\r
1078 if (s == "sflags")
\r
1084 while (substring(s, 0, 6) == "lflags")
\r
1086 length = strlen(s);
\r
1087 f = stof(substring(s, 6, length));
\r
1131 e = SpawnNavNode(wborg, wbmins, wbmaxs);
\r
1132 if (plane_storage.plane_chain)
\r
1133 e.plane_chain = plane_storage.plane_chain;
\r
1145 e.lflags10 = tfl10;
\r
1146 e.lflags11 = tfl11;
\r
1147 e.lflags12 = tfl12;
\r
1148 e.lflags13 = tfl13;
\r
1149 e.lflags14 = tfl14;
\r
1150 e.lflags15 = tfl15;
\r
1151 e.lflags16 = tfl16;
\r
1152 e.lflags17 = tfl17;
\r
1153 e.lflags18 = tfl18;
\r
1154 e.lflags19 = tfl19;
\r
1158 newmis.classname = "remotelinker";
\r
1159 newmis.delay = rl0;
\r
1165 newmis.classname = "remotelinker";
\r
1166 newmis.delay = rl1;
\r
1172 newmis.classname = "remotelinker";
\r
1173 newmis.delay = rl2;
\r
1179 newmis.classname = "remotelinker";
\r
1180 newmis.delay = rl3;
\r
1186 newmis.classname = "remotelinker";
\r
1187 newmis.delay = rl4;
\r
1193 newmis.classname = "remotelinker";
\r
1194 newmis.delay = rl5;
\r
1200 newmis.classname = "remotelinker";
\r
1201 newmis.delay = rl6;
\r
1207 newmis.classname = "remotelinker";
\r
1208 newmis.delay = rl7;
\r
1214 newmis.classname = "remotelinker";
\r
1215 newmis.delay = rl8;
\r
1221 newmis.classname = "remotelinker";
\r
1222 newmis.delay = rl9;
\r
1228 newmis.classname = "remotelinker";
\r
1229 newmis.delay = rl10;
\r
1230 e.link10 = newmis;
\r
1235 newmis.classname = "remotelinker";
\r
1236 newmis.delay = rl11;
\r
1237 e.link11 = newmis;
\r
1242 newmis.classname = "remotelinker";
\r
1243 newmis.delay = rl12;
\r
1244 e.link12 = newmis;
\r
1249 newmis.classname = "remotelinker";
\r
1250 newmis.delay = rl13;
\r
1251 e.link13 = newmis;
\r
1256 newmis.classname = "remotelinker";
\r
1257 newmis.delay = rl14;
\r
1258 e.link14 = newmis;
\r
1263 newmis.classname = "remotelinker";
\r
1264 newmis.delay = rl15;
\r
1265 e.link15 = newmis;
\r
1270 newmis.classname = "remotelinker";
\r
1271 newmis.delay = rl16;
\r
1272 e.link16 = newmis;
\r
1277 newmis.classname = "remotelinker";
\r
1278 newmis.delay = rl17;
\r
1279 e.link17 = newmis;
\r
1284 newmis.classname = "remotelinker";
\r
1285 newmis.delay = rl18;
\r
1286 e.link18 = newmis;
\r
1291 newmis.classname = "remotelinker";
\r
1292 newmis.delay = rl19;
\r
1293 e.link19 = newmis;
\r
1299 dprint("No navnode file found\n");
\r
1300 remove(plane_storage);
\r
1301 plane_storage = world;
\r