DECLARE SUB AddPronoun (b$)
DEFINT A-Z
DECLARE SUB AddLine (WhichArray, Text$, ResetColors)
DECLARE FUNCTION IsItem (a$, x)
DECLARE FUNCTION GetSupport (Lo, b$)
DECLARE FUNCTION IsVerb (a$, b$)
DECLARE FUNCTION IsNoun% (a$, b$)
DECLARE FUNCTION IsNoun2% (a$, b$)
DECLARE FUNCTION IsPrep (a$, b$)
DECLARE SUB Decode (b$)
DECLARE FUNCTION RemoveColor$ (a$)
DECLARE FUNCTION GetMaxItems ()
DECLARE FUNCTION GetOc$ (x)
DECLARE FUNCTION GetNoDir$ (Lo%, x%)
DECLARE FUNCTION GetPicNum (a$)
DECLARE FUNCTION GetSpecial! (x)
DECLARE FUNCTION GetObject (x)
DECLARE SUB FormatString (a$)
DECLARE SUB Oprint (a$)
DECLARE SUB ClearLine ()
DECLARE FUNCTION KbIn$ (l%, a$, cc$, SB%)
DECLARE SUB esleep (waitval!)
DECLARE SUB ShowArray (Style%, WhichArray%)
DECLARE FUNCTION GetResource$ (Lo%, Tag$)
DECLARE SUB CreateArray (Text$, ml%, WhichArray%, StartOver%)
DECLARE FUNCTION GetRoomTitle$ (Lo%)
DECLARE SUB PicLoad (a$, WhichType)
DECLARE FUNCTION CheckDirection (DirNum%)
DECLARE FUNCTION GetRoomDesc$ (Lo%)
'***** Module to contain the game data!
CONST MAXARRAYSIZE = 60
COMMON SHARED TextMode
COMMON SHARED BwMode 'configurable
COMMON SHARED MusicOn
COMMON SHARED SoundOn
COMMON SHARED AllUpper 'configurable
COMMON SHARED Box1Size 'This is set by code, not configurable
COMMON SHARED Box2Size 'This is set by code, not configurable
COMMON SHARED a$
COMMON SHARED Lo AS INTEGER
COMMON SHARED Fbuff AS STRING * 8960 'For Fonts
COMMON SHARED ScrollArray() AS STRING * 96
COMMON SHARED bs1$, bs2$, bs3$, bs4$, bs5$, bs6$, bs0$, bsb$
DIM SHARED ScrollArray(MAXARRAYSIZE, 1 TO 2) AS STRING * 96
DIM SHARED Direction(10) AS INTEGER
FUNCTION CheckDirection (DirNum)
CheckDirection = Direction(DirNum)
END FUNCTION
SUB Decode (b$)
keyval = 193: RotVal = 3
FOR x = 1 TO LEN(b$)
l = ASC(MID$(b$, x, 1))
IF x > 1 THEN
l = l - 33
IF (l - keyval) < 0 THEN l = l + 223
l = l - keyval
l = l + 32
END IF
MID$(b$, x, 1) = CHR$(l)
keyval = keyval + RotVal: IF keyval > 242 THEN keyval = RotVal + 14
NEXT x
END SUB
SUB FormatString (b$)
WHILE INSTR(b$, "~")
MID$(b$, INSTR(b$, "~"), 1) = " "
WEND
WHILE INSTR(b$, "\")
MID$(b$, INSTR(b$, "\"), 1) = CHR$(13)
WEND
'FormatString$ = b$
END SUB
FUNCTION GetNoDir$ (Lo, x)
IF Lo = 16 THEN GetNoDir$ = GetResource$(Lo, "NODIR"): EXIT FUNCTION
IF Lo = 18 THEN
IF (x = 1 OR x = 3 OR x = 4) AND GetSpecial(8) = 0 THEN
GetNoDir$ = GetResource$(Lo, "BLOCKED"): EXIT FUNCTION
END IF
IF x = 4 AND GetSpecial(19) < 2 THEN
GetNoDir$ = GetResource$(Lo, "NOGOW"): EXIT FUNCTION
END IF
END IF
IF Lo = 20 THEN
GetNoDir$ = GetResource$(Lo, "NODIR"): EXIT FUNCTION
END IF
IF Lo = 21 THEN
IF x = 2 THEN
GetNoDir$ = GetResource$(Lo, "NOGOSOUTH"): EXIT FUNCTION
END IF
END IF
IF Lo = 22 THEN
IF x = 3 THEN
GetNoDir$ = GetResource$(Lo, "NOGOE"): EXIT FUNCTION
END IF
END IF
IF Lo = 26 THEN
IF GetSpecial(37) = 0 THEN
GetNoDir$ = GetResource$(Lo, "NODIR1"): EXIT FUNCTION
ELSE
IF x = 2 OR x = 3 OR x = 4 THEN
GetNoDir$ = GetResource$(Lo, "NODIR2"): EXIT FUNCTION
END IF
END IF
END IF
IF Lo = 27 THEN
GetNoDir$ = GetResource$(Lo, "NODIR"): EXIT FUNCTION
END IF
IF Lo = 28 THEN
IF x = 9 THEN
GetNoDir$ = GetResource$(Lo, "NOGOSW"): EXIT FUNCTION
END IF
IF x = 2 THEN
GetNoDir$ = GetResource$(Lo, "NOGOS"): EXIT FUNCTION
END IF
IF x = 8 THEN
GetNoDir$ = GetResource$(Lo, "NOGOSE"): EXIT FUNCTION
END IF
IF x = 3 THEN
GetNoDir$ = GetResource$(Lo, "NOGOE"): EXIT FUNCTION
END IF
END IF
IF Lo = 36 THEN
GetNoDir$ = GetResource$(Lo, "NODIR"): EXIT FUNCTION
END IF
IF x = 5 THEN
GetNoDir$ = GetResource$(0, "NODIR1"): EXIT FUNCTION
END IF
IF x = 6 THEN
GetNoDir$ = GetResource$(0, "NODIR2"): EXIT FUNCTION
END IF
GetNoDir$ = GetResource$(0, "NODIR3")
END FUNCTION
FUNCTION GetPicNum (a$)
x = 1
a$ = UCASE$(a$)
IF a$ = "EXITDOOR" THEN x = 1
IF a$ = "BATHROOM" THEN x = 2
IF a$ = "AUTHOR" THEN x = 3
IF a$ = "ODDWARD1" THEN x = 4
IF a$ = "CONSTR" THEN x = 5
IF a$ = "HOTTUB" THEN x = 6
IF a$ = "HALL5" THEN x = 7
IF a$ = "HALL2" THEN x = 8
IF a$ = "HALL3" THEN x = 9
IF a$ = "LAB2" THEN x = 10
IF a$ = "PIPES" THEN x = 11
IF a$ = "FANS" THEN x = 12
IF a$ = "HALL1" THEN x = 13
IF a$ = "MEETROOM" THEN x = 14
IF a$ = "OFFICE1" THEN x = 15
IF a$ = "CAFLADY" THEN x = 16
IF a$ = "CAFE" THEN x = 17
IF a$ = "CHAIR1" THEN x = 18
IF a$ = "GUARD" THEN x = 19
IF a$ = "HALLWAY4" THEN x = 20
IF a$ = "CLOSET" THEN x = 21
IF a$ = "ESC_DOOR" THEN x = 22
IF a$ = "ELEVATOR" THEN x = 23
IF a$ = "KANDI" THEN x = 24
IF a$ = "TODD" THEN x = 25
IF a$ = "NAPOL-1" THEN x = 26
IF a$ = "SOCRAT-1" THEN x = 27
IF a$ = "GROUNDS" THEN x = 28
IF a$ = "ROOM1-10" THEN x = 29
IF a$ = "ROOM1-4" THEN x = 30
IF a$ = "ROOM1-5" THEN x = 31
IF a$ = "ROOM1-6" THEN x = 32
IF a$ = "ROOM1-7" THEN x = 33
IF a$ = "ROOM1-8" THEN x = 34
IF a$ = "ROOM1-9" THEN x = 35
IF a$ = "CLOSET2" THEN x = 36
IF a$ = "CLOSET3" THEN x = 37
IF a$ = "HALL6" THEN x = 38
IF a$ = "HALL7" THEN x = 39
IF a$ = "ESCDOOR2" THEN x = 40
IF a$ = "ODDWARD2" THEN x = 41
IF a$ = "GOATS2" THEN x = 42
IF a$ = "EXITDOR2" THEN x = 43
GetPicNum = x
END FUNCTION
FUNCTION GetResource$ (Lo, Tag$)
STATIC IsOpened AS INTEGER
bsb$ = "": Found = 0: exloop = 0
Resource = 1
IF Resource = 0 THEN
OPEN "DATA\room" + LTRIM$(RTRIM$(STR$(Lo))) + ".dat" FOR INPUT SHARED AS #1
ELSE
IF IsOpened = 0 THEN
OPEN "LUNATIX1.DAT" FOR INPUT SHARED AS #1
IsOpened = 1
END IF
SEEK #1, 1
LINE INPUT #1, bs0$ 'Get the index record
SEEK #1, VAL(MID$(bs0$, (Lo * 8) + 1, 8))
END IF
WHILE exloop = 0 AND NOT EOF(1)
LINE INPUT #1, bs0$
IF Resource = 0 THEN bs0$ = RTRIM$(LTRIM$(bs0$))
IF LEN(bs0$) > 0 THEN
IF Found = 0 THEN
IF LEFT$(bs0$, 1) = ":" OR LEFT$(bs0$, 1) = "/" THEN
IF Resource = 1 THEN Decode bs0$: bs0$ = RTRIM$(LTRIM$(bs0$))
IF UCASE$(bs0$) = ":" + UCASE$(Tag$) OR UCASE$(bs0$) = "/" + UCASE$(Tag$) THEN
Found = 1
END IF
END IF
ELSE
IF LEFT$(bs0$, 1) = ":" THEN
exloop = 1
ELSE
IF Resource = 1 THEN Decode bs0$: bs0$ = RTRIM$(LTRIM$(bs0$))
IF LEFT$(bs0$, 1) <> "/" THEN
IF LEN(bsb$) > 0 THEN bsb$ = bsb$ + " "
FormatString bs0$
bsb$ = bsb$ + bs0$
ELSE
GOSUB ParseLine
END IF
END IF
END IF
END IF
WEND
IF Resource = 0 THEN CLOSE #1
GetResource$ = bsb$
bsb$ = "": bs0$ = ""
EXIT FUNCTION
ParseLine:
'***************************************************** Specials
IF MID$(bs0$, 2, 3) = "IFS" THEN
x = VAL(MID$(bs0$, 5, 3))
'*****
y = INSTR(bs0$, ">=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 2, 6))
IF GetSpecial(x) >= z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDS" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "<=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 2, 6))
IF GetSpecial(x) <= z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDS" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "<>")
IF y = 0 THEN y = INSTR(bs0$, "!=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 2, 6))
IF GetSpecial(x) <> z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDS" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, ">")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 1, 6))
IF GetSpecial(x) > z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDS" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "<")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 1, 6))
IF GetSpecial(x) < z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDS" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 1, 6))
IF GetSpecial(x) = z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDS" + LTRIM$(STR$(x))
END IF
END IF
END IF
'***************************************************** Object Detection
IF MID$(bs0$, 2, 3) = "IFO" THEN
x = VAL(MID$(bs0$, 5, 3))
'*****
y = INSTR(bs0$, ">=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 2, 6))
IF GetObject(x) >= z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDO" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "<=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 2, 6))
IF GetObject(x) <= z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDO" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "<>")
IF y = 0 THEN y = INSTR(bs0$, "!=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 2, 6))
IF GetObject(x) <> z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDO" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, ">")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 1, 6))
IF GetObject(x) > z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDO" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "<")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 1, 6))
IF GetObject(x) < z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDO" + LTRIM$(STR$(x))
END IF
END IF
'*****
y = INSTR(bs0$, "=")
IF y > 0 THEN
z = VAL(MID$(bs0$, y + 1, 6))
IF GetObject(x) = z THEN
RETURN
ELSE
Found = 0: Tag$ = "ENDO" + LTRIM$(STR$(x))
END IF
END IF
END IF
RETURN
END FUNCTION
FUNCTION GetRoomDesc$ (Lo)
a$ = GetResource$(Lo, "DESCRIPTION")
bs0$ = ""
'** Now check to see what items are here.
g = 0 'How MANY items were here!!!
FOR x = 1 TO GetMaxItems
IF GetObject(x) = Lo THEN 'The item *IS* at this location!
IF g > 0 THEN
bs0$ = bs0$ + ", "
ELSE
bs0$ = bs0$ + " On the floor, you see "
END IF
g = g + 1
b$ = UCASE$(LEFT$(GetOc$(x), 1))
IF b$ = "A" OR b$ = "E" OR b$ = "I" OR b$ = "O" OR b$ = "U" THEN
bs0$ = bs0$ + "an " + GetOc$(x)
ELSE
bs0$ = bs0$ + "a " + GetOc$(x)
END IF
END IF
NEXT x
IF g > 0 THEN
bs0$ = bs0$ + "."
END IF
GetRoomDesc$ = a$ + bs0$: a$ = "": bs0$ = ""
END FUNCTION
FUNCTION GetRoomTitle$ (Lo)
Title$ = "Unknown"
IF Lo = 1 THEN Title$ = "Central Heating Room"
IF Lo = 2 THEN Title$ = "Patient Cell #156"
IF Lo = 3 THEN Title$ = "Patient Cell #157"
IF Lo = 4 THEN Title$ = "Patient Cell #158"
IF Lo = 5 THEN Title$ = "Cell #158's Closet"
IF Lo = 6 THEN Title$ = "Central Cooling Room"
IF Lo = 7 THEN Title$ = "Cell #156's Closet"
IF Lo = 8 THEN Title$ = "The Odd Ward"
IF Lo = 9 THEN Title$ = "Socrates: Weapons Dealer"
IF Lo = 10 THEN Title$ = "Napoleon: Defense Dealer"
IF Lo = 11 THEN Title$ = "Unfinished Staff Lounge"
IF Lo = 12 THEN Title$ = "Staff Conference Room"
IF Lo = 13 THEN Title$ = "Employee's Hallway #3"
IF Lo = 14 THEN Title$ = "The Asylum Cafeteria"
IF Lo = 15 THEN Title$ = "The Kitchen"
IF Lo = 16 THEN Title$ = "Outside The Institution"
IF Lo = 17 THEN Title$ = "Research Laboratory"
IF Lo = 18 THEN Title$ = "Employee's Hallway #2"
IF Lo = 19 THEN Title$ = "Patient Access Hallway"
IF Lo = 20 THEN Title$ = "Inside The Elevator"
IF Lo = 21 THEN Title$ = "The Asylum Entrance"
IF Lo = 22 THEN Title$ = "Your Office"
IF Lo = 23 THEN Title$ = "Employee's Hallway #1"
IF Lo = 24 THEN Title$ = "Shock Therapy Room Door"
IF Lo = 25 THEN Title$ = "Shock Therapy Room"
IF Lo = 26 THEN
IF GetSpecial(37) = 0 THEN
Title$ = "The Insanity Circle"
ELSE
Title$ = "The Main Asylum Hallway"
END IF
END IF
IF Lo = 27 THEN Title$ = "Your Private Bathroom"
IF Lo = 28 THEN Title$ = "Guarded Cell Doors"
IF Lo = 29 THEN Title$ = "Patient Cell #126"
IF Lo = 30 THEN Title$ = "Cell #126's Closet"
IF Lo = 31 THEN Title$ = "Cell #129's Closet"
IF Lo = 32 THEN Title$ = "Patient Cell #129"
IF Lo = 33 THEN Title$ = "Patient Cell #128"
IF Lo = 34 THEN Title$ = "Patient Cell #127"
IF Lo = 35 THEN Title$ = "Cell #127's Closet"
IF Lo = 36 THEN Title$ = "Nurse Todd's Hot Tub"
GetRoomTitle$ = Title$
END FUNCTION
FUNCTION GetSupport (Lo, b$)
IF Lo = 41 THEN Found = 1 ELSE Found = 0
exloop = 0
Resource = 1
IF Resource = 0 THEN
OPEN "DATA\room" + LTRIM$(RTRIM$(STR$(Lo))) + ".dat" FOR INPUT SHARED AS #1
ELSE
SEEK #1, 1
LINE INPUT #1, bs1$ 'Get the index record
SEEK #1, VAL(MID$(bs1$, (Lo * 8) + 1, 8))
END IF
IF Lo = 41 THEN OPEN "LUNATIX.SOL" FOR OUTPUT SHARED AS #2
WHILE exloop = 0 AND NOT EOF(1)
LINE INPUT #1, bs1$
IF Resource = 0 THEN
bs1$ = RTRIM$(LTRIM$(bs1$))
END IF
IF LEN(bs1$) > 0 THEN
IF Found = 0 THEN
IF LEFT$(bs1$, 1) = ":" THEN
IF Resource = 1 THEN Decode bs1$: bs1$ = RTRIM$(LTRIM$(bs1$))
IF UCASE$(bs1$) = ":SUPPORT" THEN
Found = 1
END IF
END IF
ELSE
IF LEFT$(bs1$, 1) = ":" THEN
exloop = 1
ELSE
IF Resource = 1 THEN Decode bs1$
IF Lo <> 41 THEN
bs1$ = RTRIM$(LTRIM$(bs1$))
a1 = INSTR(bs1$, " ")
a2 = INSTR(a1 + 1, bs1$, " ")
a3 = INSTR(a2 + 1, bs1$, " ")
a4 = INSTR(a3 + 1, bs1$, " ")
a5 = INSTR(a4 + 1, bs1$, " ")
bs2$ = MID$(bs1$, a1 + 1, (a2 - a1) - 1) 'Optional PREP
bs3$ = MID$(bs1$, a2 + 1, (a3 - a2) - 1) 'NOUN 1
bs4$ = MID$(bs1$, a3 + 1, (a4 - a3) - 1) 'Optional NOUN2
bs5$ = MID$(bs1$, a4 + 1, (a5 - a4) - 1) 'Optional ITEM
bs6$ = RIGHT$(bs1$, LEN(bs1$) - a5) 'RESOURCE TAG
bs1$ = LEFT$(bs1$, a1 - 1) 'VERB
'Now Let's find out if this one fits!
'*************************************
IF (LEFT$(bs1$, 1) = "|" AND LEFT$(b$ + " ", LEN(bs1$)) = UCASE$(RIGHT$(bs1$, LEN(bs1$) - 1)) + " ") OR IsVerb(b$, bs1$) THEN
IF UCASE$(bs2$) = "X" OR IsPrep(b$, bs2$) THEN
IF UCASE$(bs3$) = "X" OR (LEFT$(bs3$, 1) = "|" AND INSTR(b$, " " + RIGHT$(bs3$, LEN(bs3$) - 1))) OR IsNoun(b$, bs3$) OR IsNoun2(b$, bs3$) THEN
IF UCASE$(bs3$) <> "X" THEN AddPronoun bs3$
IF (LEFT$(bs4$, 1) = "|" AND INSTR(b$, " " + UCASE$(RIGHT$(bs4$, LEN(bs4$) - 1)))) OR UCASE$(bs4$) = "X" OR IsNoun(b$, bs4$) OR IsNoun2(b$, bs4$) THEN
IF UCASE$(bs4$) <> "X" THEN AddPronoun bs4$
x1 = IsItem(" " + bs5$, 0)
IF x1 > 0 THEN y1 = IsItem(b$, x1) ELSE y1 = 0
IF UCASE$(bs5$) = "X" OR (x1 > 0 AND y1 > 0 AND GetObject(x1) = 0) THEN
IF UCASE$(bs5$) <> "X" THEN AddPronoun bs5$
IF Resource = 0 THEN CLOSE #1
AddLine 2, GetResource$(Lo, bs6$), 1
bs1$ = "": bs2$ = "": bs3$ = "": bs4$ = "": bs5$ = "": bs6$ = ""
GetSupport = 1: EXIT FUNCTION
END IF
END IF
END IF
END IF
END IF
'*************************************
ELSE
PRINT #2, RTRIM$(bs1$)
'*** Extract to file
END IF
END IF
END IF
END IF
WEND
IF Resource = 0 THEN CLOSE #1
IF Lo = 41 THEN CLOSE #2
bs1$ = "": bs2$ = "": bs3$ = "": bs4$ = "": bs5$ = "": bs6$ = ""
GetSupport = 0
END FUNCTION
SUB IntroText
IF TextMode = 0 THEN
CreateArray "`%" + GetResource$(0, "DESCRIPTION"), Box2Size, 2, 0
ELSE
CreateArray "`2" + GetResource$(0, "DESCRIPTION"), Box2Size, 2, 0
END IF
ShowArray 0, 2 'Show the intro text FIRST!
IF TextMode > 0 THEN
Oprint "`%`9[ENTER]: "
b$ = KbIn$(1, "", "$", 0)
ClearLine
CreateArray "", Box2Size, 2, 0
END IF
END SUB
SUB SetDirections (Lo)
'*** First, reset all directions...
FOR x = 1 TO 10: Direction(x) = 0: NEXT x
'*** Then, set all the defaults -- which rooms join these rooms!
IF Lo = 1 THEN Direction(6) = 6
IF Lo = 2 THEN Direction(2) = 7: Direction(8) = 8
IF Lo = 3 THEN Direction(2) = 8
IF Lo = 4 THEN Direction(9) = 8: Direction(3) = 5
IF Lo = 5 THEN Direction(4) = 4
IF Lo = 6 THEN Direction(5) = 1: Direction(6) = 12: Direction(8) = 12
IF Lo = 7 THEN Direction(1) = 2
IF Lo = 8 THEN Direction(1) = 3: Direction(2) = 13: Direction(7) = 4: Direction(10) = 2
IF Lo = 9 THEN Direction(2) = 14
IF Lo = 10 THEN Direction(9) = 14
IF Lo = 11 THEN Direction(3) = 12
IF Lo = 12 THEN Direction(10) = 6: Direction(4) = 11: Direction(3) = 13: Direction(5) = 6
IF Lo = 13 THEN Direction(1) = 8: Direction(4) = 12: Direction(2) = 18
IF Lo = 14 THEN Direction(1) = 9: Direction(7) = 10: Direction(3) = 15: Direction(2) = 19
IF Lo = 15 THEN Direction(4) = 14
IF Lo = 16 THEN Direction(2) = 21
IF Lo = 17 THEN Direction(3) = 18
IF Lo = 18 THEN Direction(1) = 13: Direction(2) = 23: Direction(3) = 19: Direction(4) = 17
IF Lo = 19 THEN Direction(1) = 14: Direction(2) = 24: Direction(3) = 20: Direction(4) = 18
IF Lo = 20 THEN Direction(4) = 19
IF Lo = 21 THEN Direction(3) = 22: Direction(1) = 16: Direction(2) = 26
IF Lo = 22 THEN Direction(2) = 27: Direction(3) = 23: Direction(4) = 21
IF Lo = 23 THEN Direction(1) = 18: Direction(2) = 28: Direction(4) = 22
IF Lo = 24 THEN Direction(1) = 19: Direction(3) = 25
IF Lo = 25 THEN Direction(4) = 24
IF Lo = 26 THEN Direction(1) = 21
IF Lo = 27 THEN Direction(1) = 22
IF Lo = 28 THEN Direction(1) = 23: Direction(3) = 29: Direction(8) = 34: Direction(2) = 33: Direction(9) = 32
IF Lo = 29 THEN Direction(3) = 30: Direction(4) = 28
IF Lo = 30 THEN Direction(4) = 29
IF Lo = 31 THEN Direction(3) = 32
IF Lo = 32 THEN Direction(4) = 31: Direction(7) = 28
IF Lo = 33 THEN Direction(1) = 28
IF Lo = 34 THEN Direction(10) = 28: Direction(3) = 35
IF Lo = 35 THEN Direction(4) = 34
IF Lo = 36 THEN Direction(3) = 20
'*** Now, take into account any special conditions/limitations
IF Lo = 8 AND GetSpecial(30) < 1 THEN Direction(10) = 0
IF Lo = 8 AND GetSpecial(31) < 1 THEN Direction(1) = 0
IF Lo = 8 AND GetSpecial(32) < 1 THEN Direction(7) = 0
IF Lo = 13 AND GetSpecial(23) < 2 THEN Direction(4) = 0
IF Lo = 13 AND GetSpecial(24) < 1 THEN Direction(1) = 0
IF Lo = 18 AND GetSpecial(8) < 1 THEN Direction(3) = 0: Direction(4) = 0: Direction(1) = 0
IF Lo = 18 AND GetSpecial(19) < 2 THEN Direction(4) = 0
IF Lo = 20 AND GetSpecial(21) = 2 THEN Direction(4) = 36 'West to the Hot Tub
IF Lo = 21 AND GetSpecial(17) = 0 THEN Direction(2) = 0
IF Lo = 21 AND GetSpecial(42) < 2 THEN Direction(1) = 0
IF Lo = 22 AND GetSpecial(4) < 2 THEN Direction(3) = 0
IF Lo = 24 AND GetSpecial(27) < 1 THEN Direction(3) = 0
IF Lo = 28 AND GetSpecial(5) < 2 THEN Direction(9) = 0
IF Lo = 28 AND GetSpecial(6) < 2 THEN Direction(2) = 0
IF Lo = 28 AND GetSpecial(7) < 2 THEN Direction(8) = 0
IF Lo = 28 AND GetSpecial(9) < 1 THEN Direction(3) = 0
END SUB
SUB SetRoomPic (Lo)
IF TextMode <> 0 THEN EXIT SUB
IF Lo = 1 THEN PicLoad "pipes", 1
IF Lo = 2 THEN PicLoad "room1-9", 1
IF Lo = 3 THEN PicLoad "room1-10", 1
IF Lo = 4 THEN PicLoad "room1-7", 1
IF Lo = 5 THEN PicLoad "kandi", 1
IF Lo = 6 THEN PicLoad "fans", 1
IF Lo = 7 THEN PicLoad "todd", 1
IF Lo = 8 THEN
IF GetSpecial(34) = 0 THEN PicLoad "oddward1", 1 ELSE PicLoad "OddWard2", 1
END IF
IF Lo = 9 THEN PicLoad "socrat-1", 1
IF Lo = 10 THEN PicLoad "napol-1", 1
IF Lo = 11 THEN PicLoad "constr", 1
IF Lo = 12 THEN PicLoad "meetroom", 1
IF Lo = 13 THEN
IF GetSpecial(24) = 0 THEN PicLoad "hall5", 1 ELSE PicLoad "Hall7", 1
END IF
IF Lo = 14 THEN PicLoad "cafe", 1
IF Lo = 15 THEN PicLoad "caflady", 1
IF Lo = 16 THEN PicLoad "grounds", 1
IF Lo = 17 THEN PicLoad "lab2", 1
IF Lo = 18 THEN
IF GetSpecial(8) = 0 THEN PicLoad "hall2", 1 ELSE PicLoad "hall3", 1
END IF
IF Lo = 19 THEN PicLoad "hallway4", 1
IF Lo = 20 THEN PicLoad "Elevator", 1
IF Lo = 21 THEN
IF GetSpecial(42) = 2 THEN PicLoad "exitdor2", 1 ELSE PicLoad "exitdoor", 1
END IF
IF Lo = 22 THEN PicLoad "office1", 1
IF Lo = 23 THEN PicLoad "hall1", 1
IF Lo = 24 THEN
IF GetSpecial(27) = 0 THEN PicLoad "esc_door", 1 ELSE PicLoad "Escdoor2", 1
END IF
IF Lo = 25 THEN PicLoad "chair1", 1
IF Lo = 26 THEN
IF GetSpecial(37) = 0 THEN PicLoad "goats2", 1 ELSE PicLoad "hall6", 1
END IF
IF Lo = 27 THEN PicLoad "bathroom", 1
IF Lo = 28 THEN PicLoad "guard", 1
IF Lo = 29 THEN PicLoad "room1-8", 1
IF Lo = 30 THEN PicLoad "closet2", 1
IF Lo = 31 THEN
IF GetObject(8) <> 0 OR GetSpecial(12) < 1 OR GetObject(9) <> 101 THEN
PicLoad "closet3", 1
ELSE
PicLoad "closet", 1
END IF
END IF
IF Lo = 32 THEN PicLoad "room1-5", 1
IF Lo = 33 THEN PicLoad "room1-4", 1
IF Lo = 34 THEN PicLoad "room1-6", 1
IF Lo = 35 THEN PicLoad "closet", 1
IF Lo = 36 THEN PicLoad "hottub", 1
END SUB