[Turn on line numbering]
arg source, dest;
var eleave, earrive, opp, t, exit1, exit2;
// Get the exits
while (!exit1) {
eleave = (> ._build__query_exit(source, dest) <);
if (eleave) {
// try really hard to figure this out
if (!(opp = $place_lib.opposite_direction(eleave[1][1]))) {
for t in (eleave[2]) {
t = strsed(t, "[^a-z]+", "", "g");
if ((opp = $place_lib.opposite_direction(t)))
break;
}
}
if (opp) {
opp = strsed(explode(opp, "|")[1], "[^a-z]+", "", "g");
earrive = (> ._build__query_exit(dest, source, opp) <);
} else {
earrive = (> ._build__query_exit(dest, source) <);
}
}
catch any {
exit1 = ._build__generate_exit(source, dest, eleave);
exit2 = ._build__generate_exit(dest, source, earrive);
} with {
.tell(traceback()[1][2]);
}
}
return [exit1, exit2];
// $#Created: 13 Sep 97 15:11 $brandon
// $#Edited: 16 Feb 98 10:31 $user_tangent
// $#Edited: 16 Feb 98 10:32 $user_tangent
// $#Edited: 16 Feb 98 10:39 $user_tangent
// $#Edited: 16 Feb 98 10:41 $user_tangent
// $#Edited: 20 Apr 04 22:24 $brandon
// $#Edited: 20 Apr 04 22:57 $lynx
["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]