GoSub (lines 1370-1434)
Back to List
Browsing verblibm.h
1370 [ GoSub i j k df movewith thedir old_loc;
1371
1372 if (second ~= 0 && second notin Compass
1373 && ObjectIsUntouchable(second)) return;
1374
1375 old_loc = location;
1376 movewith=0;
1377 i=parent(player);
1378 if ((location~=thedark && i~=location)
1379 || (location==thedark && i~=real_location))
1380 { j=location;
1381 if (location==thedark) location=real_location;
1382 k=RunRoutines(i,before); if (k~=3) location=j;
1383 if (k==1)
1384 { movewith=i; i=parent(i);
1385 }
1386 else
1387 { if (k==0) L__M(##Go,1,i);
1388 rtrue;
1389 }
1390 }
1391
1392 thedir=noun.door_dir;
1393 if (ZRegion(thedir)==2) thedir=RunRoutines(noun,door_dir);
1394
1395 j=i.thedir; k=ZRegion(j);
1396 if (k==3) { print (string) j; new_line; rfalse; }
1397 if (k==2) { j=RunRoutines(i,thedir);
1398 if (j==1) rtrue;
1399 }
1400
1401 if (k==0 || j==0)
1402 { if (i.cant_go ~= 0) PrintOrRun(i, cant_go);
1403 rfalse;
1404 }
1405
1406 if (j has door)
1407 { if (j has concealed) return L__M(##Go,2);
1408 if (j hasnt open)
1409 { if (noun==u_obj) return L__M(##Go,3,j);
1410 if (noun==d_obj) return L__M(##Go,4,j);
1411 return L__M(##Go,5,j);
1412 }
1413 k=RunRoutines(j,door_to);
1414 if (k==0) return L__M(##Go,6,j);
1415 if (k==1) rtrue;
1416 j = k;
1417 }
1418 if (movewith==0) move player to j; else move movewith to j;
1419
1420 location=j; MoveFloatingObjects();
1421 df=OffersLight(j);
1422 if (df~=0) { location=j; real_location=j; lightflag=1; }
1423 else
1424 { if (old_loc == thedark)
1425 { DarkToDark();
1426 if (deadflag~=0) rtrue;
1427 }
1428 real_location=j;
1429 location=thedark; lightflag=0;
1430 }
1431 if (AfterRoutines()==1) rtrue;
1432 if (keep_silent==1) rtrue;
1433 LookSub(1);
1434 ];
Last updated 27 February 2004.
This site is no longer supported; information may be out of date.
Maintained as a historical archive by the Interactive Fiction Technology Foundation.
Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
This page was originally managed by Graham Nelson (graham@gnelson.demon.co.uk) assisted by C Knight.