You are outside an ice cave. It is about -20 degrees out here and you are very   cold. The entrance to the cave is to the south.                                                                                                                                You are in an icy north/south tunnel. It is very cold here and there is a wind  blowing in from the north entrance.                                                                                                                                             You are in an icy tunnel. The tunnel    bends to the east here, so you may go   east or north. Icicles are hanging from the ceiling.                                                                                                                            You are in an east/west tunnel. There is a cold wind blowing through the tunnel. A cold dark chamber is to the north.                                                                                                                                           You are at an intersection in the tunnel. The east/west tunnel intersects with atunnel running south. The tunnel is very cold.                                                                                                                                  You are in an icy east/west tunnel. To  the north there is a chamber.                                                                                                                                                                                           You are at a bend in the tunnel. The    tunnel bends to the south here. It is   still very cold in here.                                                                                                                                                        You are in a cold north/south tunnel. To the east is a chamber.                                                                                                                                                                                                 You are in a cold stone room. There is a great deal of ice covering the walls   and floor in here. The exit is to the west.                                                                                                                                     You are at an intersection in the cold  icy tunnel. The tunnels go east, north  and south.                                                                                                                                                                      You are in an east/west tunnel. It is   still very cold in here. There is a roomto the south.                                                                                                                                                                   You are at a bend in the tunnel. The    tunnel bends to the south here. You may go west or south. Frost covers the walls of the tunnel.                                                                                                                         You are in a north/south tunnel. To the east is a large rough chamber.                                                                                                                                                                                          You are in a rough chamber with thick   layers of frost on the walls, ceiling   and floors. The door is to the west.                                                                                                                                            You are at an intersection in the cold  tunnel. You may go west, east or north. The east and west tunnels lead into     chambers.                                                                                                                               You are in a cold east chamber. Ice on  the walls is very thick. The only exit  is to the west.                                                                                                                                                                 You are in a cold chamber with ice and  frost on the walls and floor. The exit  is to the east.                                                                                                                                                                 You are in a small icy room to the southof the icy tunnel. Icicles hang from theceiling and frost covers the floor.                                                                                                                                             You are in a cold north/south tunnel. A room lies to the west. There are layers of frost on the floor making it fairly  slippery in here.                                                                                                                       You are in a small cold chamber. There  are a bunch of icicles hanging from the roof of the room. The only exit is to   the east.                                                                                                                               You are in a cold north/south tunnel. To the east there is a small cold chamber.                                                                                                                                                                                You are in a small cold chamber. There  is a lot of ice chunks and chips all    over the floor in here. The only exit is to the west.                                                                                                                           You are at a cold bleak intersection. To the east, west, and north are ice      coated tunnels.                                                                                                                                                                 You are at the east end of an ice tunnel to the east is a large ice cavern.                                                                                                                                                                                     You are in a large ice cavern. There're massive icicles hanging from the ceilingand thick layers of ice cover the walls and floor. The only exit is to the west.                                                                                                You are at an icy intersection. To the  east, west and south are ice covered    tunnels.                                                                                                                                                                        You are in a cold north/south tunnel. To the east is a small ice cave.                                                                                                                                                                                          You are in a small ice cavern. Icicles  hang from the ceiling and ice covers thefloor. The only exit is to the west.                                                                                                                                            You are in a north/south tunnel. The ice in the tunnel here is melting. It seemsto be much warmer in this part of the   tunnel. You feel a warm breeze from the south.                                                                                          You are in an intersection. It seems to be much warmer here. The ice has all    melted here and the tunnel is very wet. You may go east, west or north.                                                                                                         You are in a small chamber used as a    living chamber. The room is well lit andwell decorated. To the west is the door.                                                                                                                                        You are in a laboratory of some kind. It is warm in here compared to the rest ofthe tunnels you have been in. The only  exit is to the east.                                                                                                                    You are at the west end of an icy east  west tunnel. There are chambers north,  south, and west. All of the rooms look  very cold.                                                                                                                              You are in an  icy chamber to the south of an east/west tunnel. There are lots  of icicles hanging from the ceiling and patches of ice all over the floor. The  only exit is to the north.                                                                      You are in an icy north chamber. There  are patches of ice all over the floor   and icicles hanging from the ceiling.   The only exit is to the south.                                                                                                          You are in a cold west chamber. To the  east is the only exit. The chamber is   mostly dry, but is very cold.                                                                                                                                                   You are in a north/south tunnel. There  is ice covering all the walls. To the   east is a doorway into an icy chamber.                                                                                                                                          You are at a bend in the icy tunnel. The tunnel bends to the west here so you   may go north or west.                                                                                                                                                           You are in a cold east/west tunnel. To  the south there is a tiny chamber. The  doorway is lined with icicles.                                                                                                                                                  You are in an icy east/west tunnel. The ice is extremely thick in here.                                                                                                                                                                                         You are in a crevice of the ice. The one exit is to the south.                                                                                                                                                                                                  You are in a cold icy tunnel. The tunnel bends to the south here. You may go    east or south.                                                                                                                                                                  You are in an icy north/south tunnel. Tothe east and west are small chambers. A bunch of icicles are hanging from the   tops of the doorways. To the south thereis a larger chamber.                                                                            You are in a small icy room. There is a large ice carving on the wall in here.  The only exit is to the west.                                                                                                                                                   You are in a small ice chamber. Icicles hang from the ceiling, but are too high to reach. The only exit is to the east.                                                                                                                                         You are in a large room. The walls are  covered with frost. Ice patches cover   the floor and make it slippery in here.                                                                                                                                         You are in a secret east/west tunnel. To the east there is a large elaborate    room with fine furnishings.                                                                                                                                                     You are in a large room. The decoration in here is very elaborate. Beautiful icechandeliers, ice statues and carvings.  The only exit is to the west.                                                                                                           You are in an ice coated room to the    north of the tunnel. Frosty walls and   ice patches on the floor remind you how cold it is in here. The only exit is to the south.                                                                                      You are in an icy north chamber. Icicles hang from the ceiling. The only exit is to the south.                                                                                                                                                                  You are in a small cold room. It is dry in here except for a few patches of ice on the floor. The exit is west.                                                                                                                                                 You are in a tiny ice cave. It would    make a great den for an animal if they  could stand the cold. The only exit is  to the north.                                                                                                                           ou smile, but no one can tell."
        GOTO MESSAGE.BACK
    END IF
    FOR M = 1 TO NBR.MON
      IF SHIP.DATA%(M,KS.ROOM) = ROOM AND SHIP.DATA%(M,KS.STATUS) = 0 THEN
        ON SHIP.DATA%(M,KS.REACT)_
           GOSUB SMILE.AT.ENEMY,_
                 SMILE.AT.NUETRAL,_
                 SMILE.AT.FRIEND
      LINE.PG = LINE.PG + 1
      GOSUB CHK.PAGEFULL
      END IF
    NEXT M
    PRINT
    GOTO GET.BACK
SMILE.AT.ENEMY:
    PRINT SHIP.NAME$(M);" growls at you!"
    RETURN
SMILE.AT.NUETRAL:
    PRINT SHIP.NAME$(M);" ignores you."
    RETURN
SMILE.AT.FRIEND:
    PRINT SHIP.NAME$(M);" ";VERB$;"S BACK."
    RETURN
' ---------------------------------------------------------------------
SAY.SOMETHING:
    GOSUB GET.SUBJ
    PRINT
    PRINT "Okay, ";CHR$(34);SUBJ$;CHR$(34)
    LINE.PG = LINE.PG + 2
    GOSUB CHK.PAGEFULL
    GOTO GET.BACK
' ---------------------------------------------------------------------
READY.WEAPON:
    IF LT = 0 AND SP.CNT%(12) = 0 THEN
        A$ = "It's too dark to see!"
        GOTO MESSAGE.BACK
    END IF
    GOSUB GET.SUBJ
    WH  = K.UR.CARRY
    HA  = K.UR.CARRY
    EMB = K.UR.CARRY
    GOSUB LOCATE.ARTIF
    IF FOUND = 0 THEN
        A$ = "You aren't carrying it!"
        GOTO MESSAGE.BACK
    END IF
    IF ART.DATA%(A,KA.TYPE) <> KT.WEAPON _
       AND ART.DATA%(A,KA.TYPE) <> KT.MAG.WEAP THEN
        A$ = "That isn't a legal weapon!"
        GOTO MESSAGE.BACK
    END IF
    SHIP.DATA%(0,KS.ODDS) = (EA + ARM.EXP)*(-EA>ARM.EXP)_
                     + ART.DATA%(A,KA.ODDS)_
                     + WA%(ART.DATA%(A,6))_
                     + 2 * SHIP.DATA%(0,2)
    SHIP.DATA%(0,KS.WEAPON) = A
    SHIP.DATA%(0,KS.DICE) = ART.DATA%(A,KA.DICE)
    SHIP.DATA%(0,KS.SIDES) = ART.DATA%(A,KA.SIDES)
    A$ = "Readied."
    GOTO MESSAGE.BACK
' ---------------------------------------------------------------------
LIGHT.RTN:
    GOSUB GET.SUBJ
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    IF ART.DATA%(A,KA.TYPE) <> KT.LIGHT THEN GOTO CANT.DO
    IF ART.DATA%(A,KA.ROOM) <> K.UR.CARRY THEN
        A$ = "You have to pick it up first."
        GOTO MESSAGE.BACK
    END IF
    IF ART.DATA%(A,KA.ODDS) <= 0 THEN
        PRINT
        PRINT "It won't light!"
        LINE.PG = LINE.PG + 2
        GOSUB CHK.PAGEFULL
        GOTO MAIN.LOOP
    END IF
    A$ = "You've managed to light the "+ART.NAME$(A)+"."
    LS = A
    LC = ART.DATA%(A,6)
LIGHTS.ON:
    LT = NL
    LM = TRUE
    LT = TRUE
    GOSUB PRT.MESSAGE
    GOSUB CHK.REACTIONS
    GOTO GET.BACK
LIGHTS.OUT:
    LS = 0
    LC = 0
    LM = 0
    LT = NL
    GOSUB CHK.REACTIONS
    RETURN
' ---------------------------------------------------------------------
OPEN.RTN:
    IF LT = 0 AND SP.CNT%(12) = 0 THEN
        A$ = "It's too dark to see!"
        GOTO MESSAGE.BACK
    END IF
    GOSUB GET.SUBJ
    WH = ROOM
    HA = K.UR.CARRY
    EMB = ROOM + 200
    GOSUB LOCATE.ARTIF
    IF FOUND = 0 THEN GOTO OPEN.DOOR
    IF ART.DATA%(A,KA.TYPE) = KT.CONTAIN THEN GOTO OPEN.CONTAINER
    IF ART.DATA%(A,KA.TYPE) = KT.READABLE THEN
        A$ = "It's open."
        GOTO MESSAGE.BACK
    END IF
    IF ART.DATA%(A,KA.TYPE) = 1 THEN
        A$ = "You can't do that here."
        GOTO MESSAGE.BACK
    END IF
    IF ART.DATA%(A,KA.TYPE) = KT.DOOR THEN GOTO OPEN.DOOR
    GOTO CANT.DO
' ---------------------------------------------------------------------
OPEN.CONTAINER:
    IF ART.DATA%(A,5) THEN
        IF ART.DATA%(ART.DATA%(A,5),KA.ROOM) <> K.UR.CARRY THEN
            A$ =  "It's locked!"
            GOTO MESSAGE.BACK
        END IF
    END IF
    LK = 0
    WH = A + K.MAX.ARTS
    HA = WH
    ROOM = WH
    GOSUB LOCATE.ARTIF
    IF FOUND<>0 THEN ART.DATA%(A,KA.ROOM) = ROOM:LK = TRUE
    IF LK THEN
        A$ = "You found something inside!"
        GOTO MESSAGE.BACK
    END IF
    A$ = "It's empty."
    GOTO MESSAGE.BACK
OPEN.WHAT.DOOR:
    IF SUBJ$ = "DOOR" OR SUBJ$ = "GATE" THEN
        A$ = "It's open."
        GOTO MESSAGE.BACK
    END IF
    A$ = "I don't know how to open "+SUBJ$+"."
    GOTO MESSAGE.BACK
OPEN.DOOR: '  >> OPEN DOOR/GATE
    IF ART.DATA%(A,6) THEN
        IF ART.DATA%(ART.DATA%(A,6),KA.ROOM) <> K.UR.CARRY THEN
            PRINT
            A$ = "It's locked."
            GOTO MESSAGE.BACK
        END IF
    END IF
    ART.DATA%(A,6) = 0
    FOR X = 1 TO NBR.DIR
        IF RD%(X) = A + K.MAX.ROOMS THEN RD%(X) = ART.DATA%(A,5)
    NEXT
    A$ = "It's open."
    GOTO MESSAGE.BACK
' ---------------------------------------------------------------------
PUT.RTN:
    IF LT = 0 AND SP.CNT%(12) = 0 THEN
        A$ = "It's too dark to see!"
        GOTO MESSAGE.BACK
    END IF
    IF SUBJ$ = "" THEN GOTO PUT.WHAT
    X = INSTR(SUBJ$," INTO ")
    IF X > 0 THEN A$ = LEFT$(SUBJ$,X-1):B$ = MID$(SUBJ$,X + 6): GOTO PUT.AWAY
    X = INSTR(SUBJ$," IN ")
    IF X > 0 THEN A$ = LEFT$(SUBJ$,X-1):B$ = MID$(SUBJ$,X + 3): GOTO PUT.AWAY
PUT.WHAT:
    PRINT
    INPUT "Put What?";A$
    INPUT "Put into What?";B$
    LINE.PG = LINE.PG + 2
    GOTO PUT.AWAY
PUT.AWAY:
    SUBJ$ = A$
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    OBJ = A
    SUBJ$ = B$
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    IF A = OBJ THEN GOTO CANT.DO
    ART.DATA%(OBJ,KA.ROOM) = A + K.MAX.ARTS
    A$ = "Okay."
    GOTO MESSAGE.BACK
' ---------------------------------------------------------------------
DRINK.HEALING:
    GOSUB GET.SUBJ
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    IF ART.TYPE%(A,KA.TYPE) <> KT.DRINK THEN
        A$ = "You don't want to do that!"
        GOTO MESSAGE.BACK
    END IF
    IF ART.DATA%(A,7) <= 0 THEN
        A$ = "There isn't any left."
        GOTO MESSAGE.BACK
    END IF
    IF ART.DATA%(A,KA.ODDS) > FN R(100) THEN GOTO HEAL.POTION
    A$ = "Nothing seems to happen."
    GOTO MESSAGE.BACK
DRINK.DRINK:
    PRINT "You drink the ";ART.NAME$(A);"."
    X = ART.DATA%(A,6)
    EFF = ART.DATA%(A,8)
    SHIP.DATA%(0,X) = SHIP.DATA%(0,X) + EFF
    GOTO GET.BACK
HEAL.POTION:
    ART.DATA%(A, 7) = ART.DATA%(A, 7) - 1
    SHIP.DATA%(M,KS.DAMAGE) = SHIP.DATA%(M,KS.DAMAGE) - ART.DATA%(A,6)
    IF SHIP.DATA%(M,KS.DAMAGE) < 0 THEN SHIP.DATA%(M,KS.DAMAGE) = 0
    PRINT
    PRINT "Some wounds seem to ";MID$("openheal",ABS(ART.DATA%(A,6)>0)*4 + 1,4);"!"
    LINE.PG = LINE.PG + 2
    GOSUB CHK.PAGEFULL
    GOTO GET.BACK
' ---------------------------------------------------------------------
READ.RTN:
    IF LT = 0 AND SP.CNT%(12) = 0 THEN
        A$ = "It's too dark to see!"
        GOTO MESSAGE.BACK
    END IF
    GOSUB GET.SUBJ
    WH = ROOM
    HA = K.UR.CARRY
    EMB = ROOM + 200
    GOSUB LOCATE.ARTIF
    IF FOUND = 0 THEN GOTO READ.SOMETHING
    IF ART.DATA%(A,2) = 7 THEN GOTO READ.ARTIF
    A$ = "You can't read that."
    GOTO MESSAGE.BACK
READ.SOMETHING:
    A$ = "There is nothing to read."
    GOTO MESSAGE.BACK
READ.ARTIF:
    PRINT
    LINE.PG = LINE.PG + 1
    FOR X = 1 TO ART.DATA%(A,6)
        R = ART.DATA%(A,5) - 1 + X
        GOSUB PRINT.EFFECT
    NEXT
    GOSUB PAGE.BRK
    GOTO GET.BACK
PRINT.EFFECT:
    GET #2,R + 200
    A$ = DESC$
    GOSUB TRUNC
    PRINT A$
    GOTO PRT.MESSAGE
' ---------------------------------------------------------------------
FREE.RTN:
    GOSUB GET.SUBJ
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    IF ART.DATA%(A,2) <> 10 THEN GOTO DONT.UNDERSTAND
    M = ART.DATA%(A,5)
    K = ART.DATA%(A,6)
    G = ART.DATA%(A,7)
    IF ART.DATA%(A,KA.ROOM) <> ROOM THEN GOTO DONT.UNDERSTAND
    IF SHIP.DATA%(G,KS.ROOM) = ROOM THEN
        PRINT
        PRINT SHIP.NAME$(G);" won't let you do that!"
        LINE.PG = LINE.PG + 2
        GOSUB CHK.PAGEFULL
        GOTO GET.BACK
    END IF
    IF ART.DATA%(K,KA.ROOM) <> K.UR.CARRY AND K <> 0 THEN
        PRINT
        PRINT "You don't have the key!"
        LINE.PG = LINE.PG + 2
        GOSUB CHK.PAGEFULL
        GOTO MAIN.LOOP
    END IF
    PRINT
    PRINT "You have freed ";SHIP.NAME$(M);"."
    LINE.PG = LINE.PG + 2
    GOSUB CHK.PAGEFULL
    SHIP.DATA%(M,KS.ROOM) = ROOM
    ART.DATA%(A,KA.ROOM) = 0
    OLD.ROOM = ROOM
    GOSUB CHK.REACTIONS
    GOTO GET.BACK
EAT.IT:
    IF LT = 0 AND SP.CNT%(12) = 0 THEN
        A$ = "It's too dark to see!"
        GOTO MESSAGE.BACK
    END IF
    GOSUB GET.SUBJ
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    IF ART.DATA%(A,KA.TYPE) = KT.FOOD THEN GOTO EAT.FOOD
    IF ART.DATA%(A,KA.TYPE) = KT.HEAL THEN GOTO HEAL.POTION
    GOTO CANT.DO
EAT.FOOD:
    PRINT "You eat the ";ART.NAME$(A);"."
    GOTO GET.BACK
WEAR.IT:
    IF LT = 0 AND SP.CNT%(12) = 0 THEN
        A$ = "It's too dark to see!"
        GOTO MESSAGE.BACK
    END IF
    GOSUB GET.SUBJ
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    IF ART.DATA%(A,KA.TYPE) = KT.ARMOR THEN GOTO WEAR.ARMOR
    GOTO CANT.DO
WEAR.ARMOR:
    SHIP.DATA%(0,8) = ART.DATA%(A,6)
USE.IT:
    IF LT = 0 AND SP.CNT%(12) = 0 THEN
        A$ = "It's too dark to see!"
        GOTO MESSAGE.BACK
    END IF
    GOSUB GET.SUBJ
    GOSUB ARTIFACT.SEARCH
    IF FOUND = 0 THEN GOTO DONT.UNDERSTAND
    IF ART.DATA%(A,KA.TYPE) = KT.ARMOR THEN GOTO WEAR.ARMOR
    GOTO CANT.DO
' ---------------------------------------------------------------------
CAPITALIZE:
    FOR NRM = 1 TO LEN(A$)
        MID$(A$,NRM,1) = FN CP$(MID$(A$,NRM,1))
    NEXT
    RETURN
' ---------------------------------------------------------------------
'             OPEN CHARACTER FILE
' -------------------------------------------------------------------
OPEN.CHARACTER:
      OPEN "R",#1,"CHARACT",512
      FIELD #1,20 AS FLNAM$,20 AS FTIT$
      FIELD #1,40 AS X$,1 AS FRACE$,1 AS FCLASS$,2 AS FLVL$
      FIELD #1,44 AS X$,2 AS FHD$
      FIELD #1,46 AS X$,2 AS FAG$
      FIELD #1,48 AS X$,2 AS FCH$,_
                        2 AS FALG$,_
                        2 AS FCONS$,_
                        2 AS FSTL$,_
                        2 AS FPIET$,_
                        2 AS FMAG$,_
                        2 AS FINTEL$
      FOR X = 1 TO 20
          FIELD #1,62+(X-1)*4 AS X$,_
                    2 AS FSA$(X),_
                    2 AS FSE$(X)
      NEXT
      FOR X = 1 TO 6
          FIELD #1,142+(X-1)*2 AS X$,2 AS FWA$(X)
      NEXT
      FIELD #1,154 AS X$,1 AS FSEX$
      FIELD #1,155 AS X$,8 AS FGOLD$
      FIELD #1,163 AS X$,8 AS FBANK$
      FIELD #1,171 AS X$,8 AS FBKLN$
      FIELD #1,179 AS X$,5 AS FLNG$
      FIELD #1,184 AS X$,2 AS FAE$
      FIELD #1,186 AS X$,15 AS FARM.NAME$
      FIELD #1,201 AS X$,2 AS FARM.HIT$
      FIELD #1,203 AS X$,2 AS FARM.ADJ$
      FIELD #1,205 AS X$,2 AS FARM.BKPT$
      FIELD #1,207 AS X$,2 AS FARM.BKAC$
      FIELD #1,209 AS X$,15 AS FSHD.NAME$
      FIELD #1,224 AS X$,2 AS  FSHD.HIT$
      FIELD #1,226 AS X$,2 AS  FSHD.ADJ$
      FIELD #1,228 AS X$,2 AS  FSHD.BKPT$
      FIELD #1,230 AS X$,2 AS  FSHD.BKAC$
      FOR X=1 TO 8
        FIELD #1,232 AS X$,_
                 (X-1)*32 AS X$,_
                 20 AS FWN$(X),_
                  2 AS FWW$(X),_
                  2 AS FWT$(X),_
                  2 AS FWC$(X),_
                  2 AS FWD$(X),_
                  2 AS FWS$(X),_
                  2 AS FWB$(X)
      NEXT
      FIELD #1,232 AS X$,240 AS X$,16 AS X$,_
                 2 AS FWOUNDS$,_
                 6 AS FDISAB$,_
                 2 AS FEYE$,_
                 2 AS FHEAR$,_
                 2 AS FPTS$,_
                 2 AS FMISS$
      FIELD #1,2 AS CHNC$
      RETURN
' ------------------------------------------------------------------
'               WRITE A CHARACTER - RECORD # REC
' ------------------------------------------------------------------
WRITE.CHARACTER:
      LSET FLNAM$ = NAM$
      LSET FTIT$  = TIT$
      LSET FRACE$ = MID$(STR$(RACE),2)
      LSET FCLASS$= MID$(STR$(CLASS),2)
      RSET FLVL$  = MKI$(LVL)
      RSET FHD$   = MKI$(HD)
      RSET FAG$   = MKI$(AG)
      RSEYou see a magnificent sword that looks  like it is made of ice. (Although you   know it isn't). It has a name engraved  on the handle that reads 'Freezier'.                                                                                                    You see a long spear with vicious barbs.                                                                                                                                                                                                                        You see a large block of ice in the form of a man. It is a frozen adventurer!                                                                                                                                                                                   You see fur padded armour. It looks like it could keep you pretty warm in spite  of the conditions in these tunnels.                                                                                                                                            You see an old man all wrapped up in fur and blankets. He has frost on his face.You recognize him as Bleazak, an old man from the main hall.                                                                                                                    You see an old mace.                                                                                                                                                                                                                                            You see a large ice club.                                                                                                                                                                                                                                       You see the saber that the adventurer   was carrying.                                                                                                                                                                                                           You see a pile of furs.                                                                                                                                                                                                                                         You see a very large knife. Trapper Jack was carrying it.                                                                                                                                                                                                       You see a large broadsword.                                                                                                                                                                                                                                     You see a strange looking device that   says 'flame thrower' on it. You do not  understand exactly.                                                                                                                                                             You see a piece of paper.                                                                                                                                                                                                                                       You see a large puddle of water. It is  all that's left of poor frosty!                                                                                                                                                                                         You see a funny looking black hat. It   was worn by frosty.                                                                                                                                                                                                     You see the coal eyes of frosty.                                                                                                                                                                                                                                You see the bright red scarf that frosty was wearing.                                                                                                                                                                                                           You see frosty's button nose.                                                                                                                                                                                                                                   You see the gleaming orb of polaris. It seems to shimmer with light and power.                                                                                                                                                                                  You see the shattered remains of the Orb of Polaris.                                                                                                                                                                                                            You see a large sponge.                                                                                                                                                                                                                                         You see a small pile of gold nuggets.   The old man must have been prospecting.                                                                                                                                                                                                                                                                                                                                                                                                                                                 You see the ivory tusks of a creature   that has died lying in the corner.                                                                                                                                                                                      You see a small pile of treasure that   the ice golem must have stolen from a   party of adventurers or pirates.                                                                                                                                                You see a large emerald the ice troll   was playing with when you came in. He   has set it down to face you.                                                                                                                                                    You see a beautiful red ruby. The troll was admiring it as you came in.                                                                                                                                                                                         You see a beautiful golden harp sitting at the giant's feet.                                                                                                                                                                                                    You see a beautiful orb of crystal!                                                                                                                                                                                                                             You see a magificent crystal statue! It is so beautiful you just know it must bevery valuable.                                                                                                                                                                  You see the dead body of Polaris. As he dies, he says 'Now you shall never get  the orb, you fool!!'.                                                                                                                                                           You see a pile of snow, coal, and the   scarf, hat and button nose of frosty.                                                                                                                                                                                   You see the dead body of ice golem                                                                                                                                                                                                                              You see the dead body of a polar bear.                                                                                                                                                                                                                          You see the dead body of Nanook. His fur coat and leggings have been hacked to  useless bloodstained ribbons.                                                                                                                                                   You see the dead hairy body of Harry.                                                                                                                                                                                                                           You see the dead body of a penguin.                                                                                                                                                                                                                             You see the dead body of a Frost Monster lying in a heap on the floor.                                                                                                                                                                                          You see the dead body of the sorcerer.                                                                                                                                                                                                                          You see the dead body of an ice troll.                                                                                                                                                                                                                          You see the dead body of the adventurer.                                                                                                                                                                                                                        You see the dead body of Trapper Jack.                                                                                                                                                                                                                          You see the dead body of the Glodsnortch.                                                                                                                                                                                                                       You see the dead body of Harbak.                                                                                                                                                                                                                                You see the dead body of Chilly.                                                                                                                                                                                                                                You see Willy fall to the floor and die.                                                                                                                                                                                                                        You see the dead body of the huge ice   giant.                                                                                                                                                                                                                  You see the dead body of ice troll                                                                                                                                                                                                                              You see the dead body of Bleazak.                                                                                                                                                                                                                               You see the dead body of the mammoth.                                                                                                                                                                                                                           You see the dead mangled body of the    abominable snowman.                                                                                                                                                                                                     ou see a snowman with a corncob pipe   and a button nose and two eyes made out of coal. He is wearing a scarf and a    funny black hat."
"You see a large humanoid type figure    that looks like he is made entirely of  ice. It is an ice golem!"
"You see a"
        GOSUB PRT.MESSAGE
    END IF
    IF FNR(100) > STL THEN
        A$ = "You feel something!"
        GOSUB PRT.MESSAGE
    END IF
    GOSUB XFER.ART.MON
    RETURN
' ---------------------------------------------------------------------
'              ERROR MESSAGES / COMMONLY USED MESSAGES
' ---------------------------------------------------------------------
DONT.UNDERSTAND:
    A$ = "I don't understand."
    GOTO MSGE.LOOP
FOUND.SOMETHING:
    A$ = "You found something!"
    GOTO MESSAGE.BACK
DONT.WANNA:
    A$ = "You don't want to do that!"
    GOTO MESSAGE.BACK
FOUND.NOTHING:
    A$ = "You found nothing."
    GOTO MESSAGE.BACK
SEE.NOTHING:
    A$ = "You see nothing."
    GOTO MESSAGE.BACK
NOTHING.HAPPENS:
    A$ = "Nothing happens."
    GOTO MESSAGE.BACK
OKAY:
    A$ = "Okay."
    GOTO MESSAGE.BACK
DONT.HAVE:
    A$ = "You don't have it!"
    GOTO MSGE.LOOP
ITS.LOCKED:
    A$ = "It's locked!"
    GOTO MESSAGE.BACK
WONT.LET.YOU:
    A$ = FNNM$(M) + " won't let you do that!"
    GOTO MESSAGE.BACK
EXHAUSTED:
    A$ = "There's nothing left."
    GOTO MSGE.LOOP
ALREADY.IN.EFFECT:
    A$ = "That spell is already in effect!"
    GOTO MSGE.LOOP
NOT.IN.EFFECT:
    A$ = "That spell is not in effect!"
    GOTO MSGE.LOOP
CANT.DO:
    A$ = "You can't do that!"
    GOTO MSGE.LOOP
CANT.SEE:
    A$ = "You can't see!"
    GOTO MSGE.LOOP
NOT.HERE:
    A$ = FNNM$(M) + " is not here."
    GOTO MESSAGE.BACK
TOO.HEAVY:
    A$ = "It is too heavy."
    GOTO MESSAGE.BACK
MSGE.LOOP:
    GOSUB PRT.MESSAGE
' ======================================================================
'                      MAIN LOOP
' ======================================================================
MAIN.LOOP:
    IF ACTIVE.SPELLS = ZERO THEN GOTO NO.ACTIVE.SPELLS
' ----------------------------------------------------------------------
'                 check for expired spells
' ----------------------------------------------------------------------
    ACTIVE.SPELLS = ZERO
    FOR SPL = 1 TO 20
    IF SP.CNT%(SPL, 0) > ZERO THEN
        ACTIVE.SPELLS = ACTIVE.SPELLS + 1
        SP.CNT%(SPL, 0) = SP.CNT%(SPL, 0) - 1
        IF SP.CNT%(SPL, 0) = ZERO THEN
            GOSUB EXPIRE.SPELL
            ACTIVE.SPELLS = ACTIVE.SPELLS - 1
        END IF
    END IF
    NEXT
NO.ACTIVE.SPELLS:
' ----------------------------------------------------------------------
'                 check if player can see
' ----------------------------------------------------------------------
    SEE = TRUE
    IF NATUR.LIGHT = ZERO AND EYE > ZERO THEN
        A$ = "There is no natural light here."
        GOSUB PRT.MESSAGE
    END IF
    IF LIGHT.MOD > ZERO THEN
        GOSUB LIGHT.USE
    END IF
    IF RM.LIGHT = ZERO AND SP.CNT%(12, 0) = ZERO THEN
        SEE = ZERO
        A$ = "It's too dark to see!"
        GOSUB PRT.MESSAGE
        GOTO MAIN.RTN
    END IF
    IF EYE = ZERO THEN
        SEE = ZERO
        A$ = "You can't see!"
        GOSUB PRT.MESSAGE
        GOTO MAIN.RTN
    END IF
' ----------------------------------------------------------------------
'              player can see --- describe room & contents
' ----------------------------------------------------------------------
    IF V%(ROOM) THEN
        GET #3, ROOM
        A$ = "You are in " + RTRIM$(RN$)
        GOSUB PRT.MESSAGE
    ELSE
        GET #2, ROOM
        A$ = RTRIM$(DESC$)
        GOSUB PRT.MESSAGE
        V%(ROOM) = TRUE
    END IF
' ----------------------------------------------------------------------
'          A quick romp thru the artifacts to see what's here
' ----------------------------------------------------------------------
    ART.FOUND = 0
    ART.ROOM = 0
    FOR A = 1 TO NBR.ART
    RM.CODE = FNA(ART.DATA%(A, KA.ROOM))
    RM.CH.AP = FNB(ART.DATA%(A, KA.ROOM))
    IF RM.CODE = 5 AND RM.CH.AP > FNR(100) THEN
        ART.DATA%(A, KA.ROOM) = ROOM
    END IF
    IF ART.DATA%(A, KA.ROOM) = ROOM THEN
        ART.FOUND = ART.FOUND + 1
        IF ART.DATA%(A, KA.SEEN) THEN
            ART.ROOM = ART.ROOM + 1
        END IF
    END IF
    NEXT
' ----------------------------------------------------------------------
'                 List monsters in the room
' ----------------------------------------------------------------------
    FOR M = 1 TO NBR.MON
    IF MON.DATA%(M, KM.WANDER) > FNR(100) THEN
        GOSUB FIND.EXIT
        GOSUB MON.LEAVES
    END IF
    IF MON.DATA%(M, KM.ROOM) <> ROOM THEN GOTO NEXT.MON
    GREED = FNA(MON.DATA%(M, KM.GREED))
    INTEL = FNB(MON.DATA%(M, KM.GREED))
    IF GREED > FNR(100) THEN
        IF ART.ROOM > 0 THEN
            GOSUB MONSTER.GETS
        END IF
    END IF
    IF MON.DATA%(M, KM.STATUS) = K.ST.INVIS THEN GOTO NEXT.MON
    IF MON.DATA%(M, KM.MET) = ZERO THEN
        GET #2, M + 300
        A$ = RTRIM$(DESC$)
        GOSUB PRT.MESSAGE
        MON.DATA%(M, KM.MET) = TRUE
        GOSUB CHK.PAGEFULL
    ELSE
        IF FNNOT.CON(M) THEN
            A$ = MON.NAME$(M) + " is lying here."
            GOSUB PRT.MESSAGE
        ELSE
            A$ = MON.NAME$(M) + " is here."
            GOSUB PRT.MESSAGE
        END IF
    END IF
NEXT.MON:
    NEXT
' ----------------------------------------------------------------------
'                 List artifacts in the room
' ----------------------------------------------------------------------
    FOR A = 1 TO NBR.NATUR
    IF ART.DATA%(A, KA.ROOM) <> ROOM THEN GOTO NEXT.ART
    IF ART.DATA%(A, KA.SEEN) = ZERO THEN
        GET #2, A + K.MAX.ROOMS
        A$ = RTRIM$(DESC$)
        GOSUB PRT.MESSAGE
        ART.DATA%(A, KA.SEEN) = TRUE
    ELSE
        A$ = "You see " + ART.NAME$(A) + "."
        GOSUB PRT.MESSAGE
    END IF
NEXT.ART:
    NEXT
    FOR A = A TO NBR.ART
    IF ART.DATA%(A, KA.ROOM) = ROOM THEN
        A$ = "Your " + ART.NAME$(A) + " is here."
        GOSUB PRT.MESSAGE
    END IF
    NEXT
MAIN.RTN:
' ----------------------------------------------------------------------
'              describe current events / status stuff
' ----------------------------------------------------------------------
    IF MON.DATA%(0, KM.STATUS) <> ZERO THEN M = 0: GOSUB UPDATE.STATUS
    M = 0
    A$ = "You are " + FNFATIG$(M)
    GOSUB PRT.MESSAGE
    IF MON.DATA%(0, KM.STATUS) = K.ST.INVIS THEN
        A$ = "You are invisible."
        GOSUB PRT.MESSAGE
    END IF
    IF NO.AIR THEN GOSUB HOLDING.BREATH
    IF SP.CNT%(18, 0) > ZERO THEN
        FOR X = 1 TO NBR.DIR
            IF RD%(ROOM, X) < ZERO AND ABS(RD%(ROOM, X)) <= NBR.ROOMS THEN
                A$ = "You sense a secret passage " + COMAND$(X) + "!"
                GOSUB PRT.MESSAGE
                RD%(ROOM, X) = ABS(RD%(ROOM, X))
            END IF
        NEXT
        A$ = "There are" + STR$(NBR.EXITS) + "exits here."
        GOSUB PRT.MESSAGE
    END IF
' ======================================================================
'                    Get a Command from Player
' ======================================================================
GET.INPUT:
    PRINT
    LINE.PG = ZERO
    COLOR 0, 7
    PRINT " Your Command ";
    COLOR 7, 0
    LINE INPUT " ", A$
    IF A$ = "CHEAT" THEN GOTO CHEAT.RTN
    IF A$ = "VIEW" THEN GOTO CHEAT.RTN
    CALL PARSE.COMMAND(COMAND$(), A$, CMD, LAST.CMD$, VERB$, SUBJ$, SP.NAME$(), SPL, LINE.PG)
' -----------------------end of PARSE.COMMAND -----------------------
    IF SPL = 0 AND CMD = 0 THEN GOTO GET.INPUT
    IF SPL > 0 THEN GOTO EVOKE.SPELL
' ----------------------------------------------------------------------
'                       Process the Command
' ----------------------------------------------------------------------
BRANCH.RTN:
    ON CMD GOTO MOVE.RTN, MOVE.RTN, MOVE.RTN, MOVE.RTN, MOVE.RTN, MOVE.RTN, GET.RTN, GET.RTN, DROP.RTN, LOOK.RTN, LOOK.RTN, ATTACK.RTN, FLEE.RTN, GIVE.RTN, INVENTORY, SMILE.RTN, SMILE.RTN, SAY.SOMETHING, READ.RTN, READY.WEAPON, LIGHT.RTN, OPEN.RTN,  _
PUT.RTN, DRINK.HEALING, FREE.RTN, EAT.IT, WEAR.IT, USE.IT, RESTING, REQUEST, REMOVE.RTN, REVERSE.RTN
    GOTO GET.BACK
' ----------------------------------------------------------------------
'                       Process the Spell
' ----------------------------------------------------------------------
EVOKE.SPELL:
    IF NOT SEE THEN GOTO CANT.SEE
    SPL = SP.ID%(SPL)
    GOSUB CAST.SPELL
    IF NOT SUC THEN GOTO NOTHING.HAPPENS
    ON SPL GOTO HEAL.SPELL, CONFUSE.SPELL, POWER.SPELL, FURY.SPELL, RESURRECT.SPELL, PROTECT.SPELL, BLAST.SPELL, RADIATE.SPELL, SLEEP.SPELL, CHARM.SPELL, TELEPORT.SPELL, DARKSEE.SPELL, INVISIBLE.SPELL, FEAR.SPELL, LIGHT.SPELL, HARDHIT.SPELL,  _
THICKSKIN.SPELL, COGNIZANCE.SPELL, PHANTOM.SPELL, IMMORTAL.SPELL
' ----------------------------------------------------------------------
'            COMMANDS RETURN TO HERE
' ----------------------------------------------------------------------
GET.BACK:
    IF NBR.SIDE%(1) = ZERO THEN GOTO END.BATTLE
    FOR M = 1 TO NBR.MON
      IF MON.DATA%(M, KM.ROOM) <> ROOM THEN GOTO NEXT.AGGRESSOR
      M2 = MON.DATA%(M, KM.REACT) - ABS(MON.DATA%(M, KM.REACT) = 2)
      X = FNR(41) - 20
      X = X + ABS(X = ZERO)
      IF MON.DATA%(M, KM.STATUS) <> ZERO THEN
          GOSUB UPDATE.STATUS
      END IF
      IF MON.DATA%(M, KM.STATUS) = K.ST.CONFUSE THEN
          A$ = MON.NAME$(M) + " is confused and cannot seem to think!"
          GOSUB PRT.MESSAGE
          GOTO NEXT.AGGRESSOR
      END IF
      IF MON.DATA%(M, KM.STATUS) = K.ST.DAZED THEN
          A$ = MON.NAME$(M) + " is seeing stars!"
          GOSUB PRT.MESSAGE
          GOTO NEXT.AGGRESSOR
      END IF
      IF FNNOT.WITH.IT(M) = TRUE THEN GOTO NEXT.AGGRESSOR
      MR = MON.DATA%(M, KM.DAMAGE) / MON.DATA%(M, KM.HARD) * FNR(100) + 2
      IF MON.DATA%(M, KM.COURAGE) < MR THEN
          A$ = FNNM$(M) + " flees!"
          GOSUB PRT.MESSAGE
          GOSUB FIND.EXIT
          IF ROOM.TO <> ROOM THEN
              GOSUB MON.LEAVES
              GOTO NEXT.AGGRESSOR
          END IF
      END IF
      OF = M
      DFF = ZERO
      DF = ZERO
      FOR M2 = ZERO TO NBR.MON
        TMP.1 = MON.DATA%(M2, KM.REACT)
        IF MON.DATA%(M2, KM.ROOM) <> ROOM OR MON.DATA%(M2, KM.STATUS) >= K.ST.ASLEEP OR MON.DATA%(M2, KM.REACT) = 2 THEN GOTO NEXT.OPPONENT
        IF ABS(MON.DATA%(M2, KM.REACT) - MON.DATA%(M, KM.REACT)) <> 2 THEN GOTO NEXT.OPPONENT
        IF MON.DATA%(M2, KM.MET) > 1 THEN GOTO NEXT.OPPONENT
        DF = M2
        IF NBR.SIDE%(TMP.1) = 1 OR (RND(1) < .25 AND MON.DATA%(M2, KM.STATUS) < 4) THEN GOSUB TAKE.A.SWING: DFF = TRUE: M2 = 200
NEXT.OPPONENT:
      NEXT M2
      IF NOT DFF AND MON.DATA%(0, KM.STATUS) <> K.ST.INVIS THEN GOSUB TAKE.A.SWING: GOTO NEXT.AGGRESSOR
NEXT.AGGRESSOR:
      IF NBR.SIDE%(1) = ZERO THEN M = NBR.MON
    NEXT M
END.BATTLE: '
    GOTO MAIN.LOOP
MON.LEAVES:
    MON.DATA%(M, KM.ROOM) = ROOM.TO
    M2 = MON.DATA%(M, KM.REACT)
    NBR.SIDE%(M2) = NBR.SIDE%(M2) - 1
    RETURN
UPDATE.STATUS:
    MON.DATA%(M, KM.STATCT) = MON.DATA%(M, KM.STATCT) - 1
    IF MON.DATA%(M, KM.STATCT) = ZERO THEN
        GOTO STATUS.EXPIRES
    END IF
    RETURN
STATUS.EXPIRES:
    IF MON.DATA%(M, KM.STATUS) = K.ST.INVIS THEN GOTO REAPPEAR
    ON MON.DATA%(M, KM.STATUS) GOTO CLEAR.HEAD, GET.IT.TOGET, WAKE.UP, COME.TO, STILL.DEAD, MATERIALIZE, NOW.MORTAL
REAPPEAR:
    A$ = MON.NAME$(M) + " fades into view!"
    GOTO RESET.STATUS
CLEAR.HEAD:
    A$ = MON.NAME$(M) + " clears his head."
    GOTO RESET.STATUS
GET.IT.TOGET:
    A$ = MON.NAME$(M) + " shakes off the daze."
    GOTO RESET.STATUS
WAKE.UP:
    A$ = MON.NAME$(M) + " wakes up."
    GOTO RESET.STATUS
COME.TO:
    A$ = MON.NAME$(M) + " recovers consciousness."
    GOTO RESET.STATUS
STILL.DEAD:
    MON.DATA%(M, STATCT) = 999
    RETURN
MATERIALIZE:
    A$ = MON.NAME$(M) + " becomes solid again!"
    GOTO RESET.STATUS
NOW.MORTAL:
    A$ = MON.NAME$(M) + " recovers his mortality."
    GOTO RESET.STATUS
' ---------------------------------------------------------------------
GAME.OVER:
    LINE.PG = 24
    GOSUB CHK.PAGEFULL
CLOSE.UP:
    CLOSE
    IF SP.CNT%(4, 0) > ZERO THEN MON.DATA%(0, KM.AGIL) = MON.DATA%(0, KM.AGIL) / 2
    IF DIE THEN GOTO INSERT.MASTER
    FOR W = 1 TO 8: WN$(W) = "NONE": NEXT
    W2 = 1
    FOR A = 1 TO NBR.ART
    IF (ART.DATA%(A, KA.TYPE) = KT.WEAPON OR ART.DATA%(A, KA.TYPE) = KT.MAG.WEAP) AND ART.DATA%(A, KA.ROOM) = K.UR.CARRY THEN
          WN$(W2) = ART.NAME$(A)
          WP%(W2) = A
          W2 = W2 + 1
          ART.DATA%(A, KA.ROOM) = ZERO
    END IF
    NEXT A
    IF W2 < 10 THEN GOTO SELL.TREASURES
SELL.WEAPONS:
    CLS
    LOCATE 5, 1
    PRINT "As you start to enter the Town Square, Alfred Pennylittle appears and":
    PRINT "tells you, 'You have too many weapons to keep them all--8 is the legal limit.":
    PRINT
    PRINT "Your weapons are--"
    FOR W = 1 TO W2 - 1:
    PRINT SPC(4); W; "--"; WN$(W):
    NEXT
    PRINT
    PRINT "Enter the number of the weapon to sell (1-"; W2 - 1; ") "
GET.WEAPON.NBR:
    LOCATE CSRLIN - 1, 48
    INPUT A$
    W5 = VAL(A$)
    IF W5 < 1 OR W5 > W2 - 1 OR W5 <> INT(W5) THEN GOTO GET.WEAPON.NBR
    ART.DATA%(WP%(W5), KA.ROOM) = K.UR.CARRY
    WN$(W5) = WN$(W2 - 1)
    WP%(W5) = WP%(W2 - 1)
    W2 = W2 - 1
    IF W2 > 5 THEN GOTO SELL.WEAPONS
SELL.TREASURES:
    FOR W = 1 TO 8
    IF WP%(W) THEN
        WT%(W) = ART.DATA%(WP%(W), KA.SUBTYPE)
        WC%(W) = ART.DATA%(WP%(W), KA.ODDS)
        WD%(W) = ART.DATA%(WP%(W), KA.DICE)
        WS%(W) = ART.DATA%(WP%(W), KA.SIDES)
    END IF
    NEXT W
    CLS
    LOCATE 5, 1
    PRINT "Walking along the road back to town, you meet a travelling Gypsy who"
    PRINT "kindly offers to buy your treasures. He pays you ";
    TP = ZERO
    FOR A = 1 TO NBR.ART
    IF ART.DATA%(A, KA.ROOM) <> K.UR.CARRY THEN GOTO NEXT.TREASURE
    IF ART.DATA%(A, KA.TYPE) <> ZERO THEN ART.DATA%(A, KA.VALUE) = ART.DATA%(A, KA.VALUE) * CH / 10
    TP = TP + ART.DATA%(A, KA.VALUE)
NEXT.TREASURE:
    NEXT A
    PRINT TP; " gold pieces."
    PRINT
    GOLD# = GOLD# + TP:
    IF GOLD# < ZERO THEN GOLD# = ZERO
    LINE.PG = 24
    GOSUB CHK.PAGEFULL
INSERT.MASTER:
    ON ERROR GOTO INSERT.MASTER
    CLS
    LOCATE 5, 1
    PRINT "(Insert Adventureland Master diskette, then press the 'C' key)  ";
    A$ = ""
    WHILE A$ <> "c" AND A$ <> "C"
        A$ = INKEY$
    WEND
    PRINT A$
    IF DIE THEN KILL "ADVENT": GOTO BACK.TO.HALL
    GOSUB OPEN.CHARACTER
    NAM$ = MON.NAME$(0)
    HD = MON.DATA%(0, 1)
    AG = MON.DATA%(0, 2)
    GOSUB WRITE.CHARACTER
    CLOSE
    KILL "ADVENT"
    OPEN "ADVENT" FOR OUTPUT AS #2
    WRITE #2, MON.NAME$(0)
    WRITE #2, REC
    CLOSE
BACK.TO.HALL:
    RUN "HALL"
' ---------------------------------------------------------------------
'                     Move Routine
' ---------------------------------------------------------------------
MOVE.RTN:
    IF NBR.SIDE%(1) > ZERO AND MON.DATA%(0, KM.STATUS) <> K.ST.INVIS AND MON.DATA%(0, KM.STATUS) <> K.ST.PHANTOM THEN
        GOTO DONT.WANNA
    END IF
    ROOM.TO = RD%(ROOM, CMD)
    IF ROOM.TO > K.MAX.ROOMS THEN GOTO CHECK.DOOR
ENTERING:
    IF ROOM.TO > ZERO THEN GOTO MOVE.IT
    IF ROOM.TO = K.EXITBYE THEN
        GOSUB END.OF.MISSION
        IF OK.TO.LEAVE = TRUE THEN GOTO GAME.OVER
    END IF
    IF ROOM.TO = ZERO THEN GOTO CANT.GO
' ---------------------------------------------------------------------
'    Insert Special Move Criteria Here ...
' ---------------------------------------------------------------------
    GOTO CANT.GO
CHECK.DOOR:
    PBL = ROOM.TO - K.MAX.ROOMS
    IF ART.DATA%(PBL, 7) = ZERO THEN ROOM.TO = ART.DATA%(PBL, 5): GOTO ENTERING
    IF ART.DATA%(PBL, KA.KEY) = ZERO THEN ROOM.TO = ART.DATA%(PBL, 5): GOTO ENTERING
    A$ = "The " + ART.NAME$(PBL) + " blocks the way!"
    GOTO MESSAGE.BACK
CANT.GO:
    A$ = "You can't go that way!"
    V%(ROOM) = ZERO
    GOTO MESSAGE.BACK
MOVE.IT:
    MON.DATA%(0, KM.FATIGUE) = MON.DATA%(0, KM.FATIGUE) + K.FAT.MOVE
    OLD.ROOM = ROOM
    ROOM = ROOM.TO
    GOSUB CHK.REACTIONS
    NBR.EXITS = ZERO
    FOR X = 1 TO NBR.DIR
    IF RD%(ROOM, X) > ZERO AND RD%(ROOM, X) <= NBR.ROOMS THEN NBR.EXITS = NBR.EXITS + 1
    NEXT
    RM.LIGHT = NATUR.LIGHT OR LIGHT.MOD
    GOTO MAIN.LOOP
' --------------------------------------------------------------------
CHK.REACTIONS:
    CALL CHK.REACTIONS(MON.DATA%(), NBR.SIDE%(), ROOM, OLD.ROOM)
    RETURN
' --------------------------------------------------------------------
END.OF.MISSION:
' --------------------------------------------------------------------
'    Leaving --- Be sure mission is complete and wants to leave
' --------------------------------------------------------------------
     PRINT
     PRINT "You successfully ride off into the sunset."
     OK.TO.LEAVE = TRUE
     MISS = MISS + 1
     PTS = PTS + DUNG.PTS
     IF PTS > 1000 THEN LVL = LVL + (PTS / 1000): PTS = PTS MOD 1000
     RETURN
' ---------------------------------------------------------------------
'                    PICK UP SOMETHING
' ---------------------------------------------------------------------
GET.RTN:
    IF NOT SEE THEN GOTO CANT.SEE
    GOSUB GET.SUBJ
    IF SUBJ$ = "ALL" THEN GOTO GET.ALL
    WHERE$ = "11100000"
    GOSUB ARTIFACT.SEARCH
    IF FOUND = ZERO THEN GOTO DONT.UNDERSTAND
    GOSUB GET.IT
    IF GT = ZERO THEN GOTO MAIN.LOOP
    A$ = "Got it."
    GOTO MESSAGE.BACK
GET.IT:
    GOSUB GET.SURPRISE
    IF GT = ZERO THEN RETURN
    IF WT + ART.DATA%(A, KA.WEIGHT) > MAX.LOAD THEN GOTO TOO.HEAVY
    ART.DATA%(A, KA.ROOM) = K.UR.CARRY
    PRINT "Picking up #"; A; "("; ART.NAME$(A); ")"
    PRINT "New Room is "; ART.DATA%(A, 4)
    WT = WT + ART.DATA%(A, KA.WEIGHT)
    RETURN
GET.ALL:
    FOR A = 1 TO NBR.ART
    IF ART.DATA%(A, KA.ROOM) = ROOM THEN
        GOSUB GET.IT
        A$ = ART.NAME$(A) + " taken."
        GOSUB PRT.MESSAGE
    END IF
    NEXT
    GOTO GET.BACK
GET.SURPRISE:
    GT = TRUE: ' TRUE=successful get it ; 0=failure to get it
' Also --- add experience points here for finding unusual artifacts
'   PTS = PTS + ART.DATA%(A,KA.EXP.PTS)
    LINE.PG = LINE.PG + 0:  ' CHANGE WHEN SPECIAL LINES ARE PRINTED
    GOSUB CHK.PAGEFULL
    RETURN
' ---------------------------------------------------------------------
MONSTER.SEARCH:
    CALL MONSTER.SEARCH(MON.NAME$(), MON.DATA%(), SUBJ$, WHERE$, ROOM, M, FOUND)
    RETURN
' ---------------------------------------------------------------------
ARTIFACT.SEARCH:
    CALL ARTIFACT.SEARCH(ART.NAME$(), ART.DATA%(), SUBJ$, WHERE$, ROOM, A, FOUND)
    RETURN
' -------------------------------------------------------------------
GET.SUBJ:
    WHILE SUBJ$ = ""
        PRINT
        PRINT COMAND$(CMD); " WHAT";
        INPUT SUBJ$
        LINE.PG = LINE.PG + 2
    WEND
    RETURN
' ---------------------------------------------------------------------
DROP.RTN:
    GOSUB GET.SUBJ
    IF SUBJ$ = "ALL" THEN GOTO DROP.ALL
    WHERE$ = "01000000"
    GOSUB ARTIFACT.SEARCH
    IF FOUND = ZERO THEN GOTO DONT.UNDERSTAND
    GOSUB DROP.IT
CHK.DROP:
    IF WT > MAX.LOAD THEN
        A$ = "Your load becomes too heavy and you drop everything."
        GOSUB PRT.MESSAGE
        GOTO DROP.ALL
    END IF
    GOTO GET.BACK
DROP.IT:
    WT = WT - ART.DATA%(A, KA.WEIGHT)
    ART.DATA%(A, KA.ROOM) = ROOM
    A$ = ART.NAME$(A) + " dropped."
    GOSUB PRT.MESSAGE
    IF A = LIGHT.SRC THEN
        GOSUB PUTOUT.LIGHT
    END IF
    IF MON.DATA%(0, KM.WEAPON) > ZERO THEN
        IF ART.DATA%(MON.DATA%(0, KM.WEAPON), KA.ROOM) <> K.UR.CARRY THEN
            MON.DATA%(0, KM.WEAPON) = K.UNARMED
        END IF
    END IF
    RETURN
LIGHT.USE:
    LIGHT.CNT = LIGHT.CNT - 1
    IF LIGHT.CNT = ZERO THEN GOTO PUTOUT.LIGHT
    RETURN
PUTOUT.LIGHT:
    A$ = "The " + ART.NAME$(A) + " goes out."
    GOSUB PRT.MESSAGE
    GOSUB LIGHTS.OUT
    RETURN
DROP.ALL:
    FOR A = 1 TO NBR.ART
    IF ART.DATA%(A, KA.ROOM) = K.UR.CARRY THEN
        GOSUB DROP.IT
        A$ = ART.NAME$(A) + " dropped.":
        GOSUB PRT.MESSAGE
    END IF
    NEXT A
    WT = ZERO
    GOTO GET.BACK
' ---------------------------------------------------------------------
LOOK.RTN:
    IF NOT SEE THEN GOTO CANT.SEE
    IF SUBJ$ = "" THEN GOTO LOOK.AROUND
    GOSUB ARTIFACT.SEARCH
    IF FOUND THEN
        GOSUB LOOK.ARTIFACT
        IF ART.DATA%(A, KA.ROOM) = EMB THEN
           ART.DATA%(A, KA.ROOM) = ROOM
        END IF
        GOTO GET.BACK
    END IF
    GOSUB MONSTER.SEARCH
    IF FOUND THEN
        GOSUB LOOK.AT.MONSTER
        GOTO GET.BACK
    END IF
    GOTO LOOK.AT.SOMETHING
LOOK.AROUND:
    FOR X = 1 TO NBR.DIR
    IF RD%(ROOM, X) < ZERO AND ABS(RD%(ROOM, X)) <= NBR.ROOMS THEN
        GOSUB FIND.PASSAGE
        LK = TRUE
    END IF
    NEXT
    IF LK = TRUE THEN GOTO GET.BACK
    WHERE$ = "00010000"
    GOSUB ARTIFACT.SEARCH
    IF FOUND THEN
        ART.DATA%(A, KA.ROOM) = ROOM
        GOTO FOUND.SOMETHING
    END IF
    V%(ROOM) = ZERO
    GOTO GET.BACK
LOOK.AT.MONSTER:
    IF MON.DATA%(M, KM.STATUS) > ZERO THEN GOTO EXAMINE.BODY
    IF MON.DATA%(M, KM.STATUS) = K.ST.INVIS THEN GOTO SEE.NOTHING
    IF SP.CNT%(18, 0) > ZERO THEN
        PRINT MON.NAME$(M) + "'s hardiness is "; MON.DATA%(M, KM.HARD)
        PRINT "skill is "; MON.DATA%(M, KM.ODDS); "% with ";
        PRINT MON.DATA%(M, KM.DICE); " - "; MON.DATA%(M, KM.DICE) * MON.DATA%(M, KM.SIDES); " hp / round"
        PRINT " is using ";
        IF MON.DATA%(M, 9) > ZERO THEN
            PRINT ART.NAME$(MON.DATA%(M, KM.WEAPON));
        ELSE
            IF MON.DATA%(M, KM.WEAPON) = K.UNARMED THEN
                PRINT "nothing";
            ELSE
                PRINT "natural weapons"
            END IF
        END IF
    END IF
    GET #2, M + 300
    PRINT RTRIM$(DESC$)
    LK = TRUE
    LINE.PG = LINE.PG + (LEN(A$) / 78) + 1
    GOSUB CHK.PAGEFULL
    RETURN
EXAMINE.BODY:
    GOSUB SHOW.STATUS
    IF MON.DATA%(M, KM.STATUS) < 3 THEN GOTO GET.BACK
    A$ = "You search the body of " + MON.NAME$(M) + "."
    LK = ZERO
    FOR A = 1 TO NBR.ART
        IF ART.DATA%(A, KA.ROOM) = -M - 1 THEN ART.DATA%(A, KA.ROOM) = ROOM: LK = TRUE
    NEXT
    IF LK = TRUE THEN GOTO FOUND.SOMETHING
    GOTO FOUND.NOTHING
LOOK.ARTIFACT:
    IF SP.CNT%(18, 0) > ZERO THEN
        PRINT ART.NAME$(A); " is "; ART.TYPE$(ART.DATA%(A, KA.TYPE))
        IF ART.DATA%(A, KA.TYPE) = KT.CONTAIN THEN
            PRINT ART.NAME$(ART.DATA%(A, 5)); " is the key"
        END IF
        IF ART.DATA%(A, KA.TYPE) = KT.WEAPON THEN
            PRINT "that can do "; ART.DATA%(A, KA.DICE); " - "; ART.DATA%(A, KA.DICE) * ART.DATA%(A, KA.SIDES);
            PRINT " hp / round with a compl."
            PRINT "of "; ART.DATA%(A, KA.ODDS); "%"
        END IF
        IF ART.DATA%(A, KA.TYPE) = KT.MAG.WEAP THEN
            PRINT "(Unbreakable!) that can do "; ART.DATA%(A, KA.DICE); " - "; ART.DATA%(A, KA.DICE) * ART.DATA%(A, KA.SIDES);
            PRINT " hp / round with a compl."
            PRINT "of "; ART.DATA%(A, KA.ODDS); "%"
        END IF
    END IF
    IF A > NBR.NATUR THEN GOTO GET.BACK
    GET #2, A + K.MAX.ROOMS
    PRINT
    PRINT RTRIM$(DESC$)
    LINE.PG = LINE.PG + INT(LEN(A$) / 78) + 2
    GOSUB CHK.PAGEFULL
    ART.DATA%(A, KA.SEEN) = TRUE
    LK = TRUE
    RETURN
LOOK.AT.SOMETHING:
    V%(ROOM) = ZERO
    GOTO GET.BACK
FIND.PASSAGE:
    ' Secret Passage - PUT MESSAGE HERE IF NEEDED
    PRINT
    PRINT "You found a secret passage "; COMAND$(X); "!"
    LINE.PG = LINE.PG + 2
    GOSUB CHK.PAGEFULL
    RD%(ROOM, X) = ABS(RD%(ROOM, X))
    V%(ROOM) = ZERO
    RETURN
' ---------------------------------------------------------------------
ATTACK.RTN:
    IF NOT SEE THEN GOTO CANT.SEE
    GOSUB GET.SUBJ
    DF = ZERO
    FOR X = 1 TO NBR.MON
      IF FNTARGET(X) THEN DF = X: X = NBR.MON
    NEXT
    IF DF = ZERO THEN GOTO ATTACK.ARTIFACT
    GOTO ATTACK.MONSTER
ATTACK.ARTIFACT:
    WHERE$ = "10100000"
    GOSUB ARTIFACT.SEARCH
    IF FOUND = ZERO THEN GOTO DONT.UNDERSTAND
    IF ART.DATA%(A, KA.TYPE) <> KT.DOOR AND ART.DATA%(A, KA.TYPE) <> KT.CONTAIN THEN GOTO CANT.DO
    S = 7
    K = KA.KEY
    IF ART.DATA%(A, KA.TYPE) = KT.CONTAIN THEN S = S - 1: K = K - 1
    DAMAGE = ZERO
    FOR X = 1 TO MON.DATA%(0, KM.DICE)
    DAMAGE = DAMAGE + FNR(MON.DATA%(0, KM.SIDES))
    NEXT
    ART.DATA%(A, S) = ART.DATA%(A, S) - DAMAGE
    IF ART.DATA%(A, S) <= ZERO THEN
        ART.DATA%(A, S) = ZERO
        ART.DATA%(A, K) = ZERO
        A$ = "The " + ART.NAME$(A) + " shatters!"
        GOTO MESSAGE.BACK
    END IF
    A$ = "WHAM!! You hit the " + ART.NAME$(A) + "!"
    GOTO MESSAGE.BACK
ATTACK.MONSTER:
    IF MON.DATA%(0, KM.WEAPON) = K.UNARMED THEN
        A$ = "You are unarmed!"
        GOTO MESSAGE.BACK
    END IF
    OF = ZERO
    GOSUB TAKE.A.SWING
    IF NOT HIT THEN GOTO CHK.ATTACK.FRIEND
    IF INC THEN
        W2 = ART.DATA%(MON.DATA%(0, KM.WEAPON), KA.SUBTYPE)
        WA%(W2) = WA%(W2) + 2
    END IF
    IF -ENCUM <= ARM.EXP THEN GOTO GET.BACK
    IF FNR(100) <= MON.DATA%(0, KM.ODDS) THEN GOTO CHK.ATTACK.FRIEND
    A = 2
    IF ENCUM + ARM.EXP = -1 THEN A = 1
    ARM.EXP = ARM.EXP + A
    MON.DATA%(0, KM.ODDS) = MON.DATA%(0, KM.ODDS) + A
CHK.ATTACK.FRIEND:
    IF MON.DATA%(DF, KM.REACT) = 1 OR DF = 0 THEN GOTO GET.BACK
    MON.DATA%(DF, KM.FRIEND) = MON.DATA%(DF, KM.FRIEND) / 2
    FOR M = 1 TO NBR.MON
    IF MON.DATA%(M, KM.ROOM) = ROOM AND MON.DATA%(M, KM.REACT) > 1 THEN MON.DATA%(M, KM.REACT) = ZERO
    NEXT M
    OLD.ROOM = ROOM
    GOSUB CHK.REACTIONS
    GOTO GET.BACK
MON.GET.GUN:
    IF MON.DATA%(OF, KM.ODDS) = ZERO THEN RETURN
    FOR A = 1 TO NBR.ART
     IF ART.DATA%(A, KA.ROOM) = ROOM AND (ART.DATA%(A, KA.TYPE) = KT.WEAPON OR ART.DATA%(A, KA.TYPE) = KT.MAG.WEAP) THEN
            A$ = MON.NBR.ARTME$(OF) + " picks up " + ART.NAME$(A) + "."
            GOSUB PRT.MESSAGE.1
            ART.DATA%(A, KA.ROOM) = ZERO
            MON.DATA%(OF, KM.WEAPON) = A
            MON.DATA%(OF, KM.ODDS) = MON.DATA%(OF, KM.ODDS) + ART.DATA%(A, KA.ODDS)
            MON.DATA%(OF, KM.COURAGE) = MON.DATA%(OF, KM.COURAGE) * 2
            A = NBR.ART
     END IF
    NEXT
    RETURN
TAKE.A.SWING:
    MON.DATA%(OF, KM.FATIGUE) = MON.DATA%(OF, KM.FATIGUE) + K.FAT.ATT
    HIT = ZERO
    IF MON.DATA%(OF, KM.WEAPON) = K.UNARMED THEN GOTO MON.GET.GUN
    A$ = FNNM$(OF) + " attacks " + FNNM$(DF)
    GOSUB PRT.MESSAGE.1
    RL = FNR(100)
    HIT = ZERO
    CH.HIT = MON.DATA%(OF, KM.ODDS)
    IF OF = 0 THEN CH.HIT = CH.HIT + CH.ADJ
    CH.HIT = CH.HIT + MON.DATA%(DF, 16) * 25
    IF (RL < 5 OR RL < MON.DATA%(OF, KM.ODDS) - MON.DATA%(DF, KM.DODDS)) AND RL < 96 THEN HIT = TRUE
    IF MON.DATA%(DF, KM.STATUS) > K.ST.CONFUSE THEN HIT = TRUE
    IF HIT AND MON.DATA%(DF, KM.STATUS) = K.ST.PHANTOM THEN
        A$ = "Blow passes through!!"
        GOSUB PRT.MESSAGE.1
        RETURN
    END IF
    IF HIT THEN GOTO A.HIT
    IF RL < 97 THEN
        A$ = "--- a miss."
        GOTO PRT.MESSAGE.1
    END IF
    A$ = " a Fumble!"
    GOSUB PRT.MESSAGE.1
    FR = FNR(100)
    IF FR <= 35 + 40 * ABS(MON.DATA%(OF, KM.WEAPON) = ZERO) THEN
        A$ = "  fumble recovered."
        GOTO PRT.MESSAGE.1
    END IF
    IF FR < 76 THEN
        ART.DATA%(MON.DATA%(OF, KM.WEAPON), KA.ROOM) = ROOM
        MON.DATA%(OF, KM.ODDS) = MON.DATA%(OF, KM.ODDS) - ART.DATA%(MON.DATA%(OF, KM.WEAPON), KA.ODDS)
        MON.DATA%(OF, KM.WEAPON) = K.UNARMED
        MON.DATA%(OF, KM.COURAGE) = MON.DATA%(OF, KM.COURAGE) / 2
        A$ = "  weapon dropped!"
        GOTO PRT.MESSAGE.1
    END IF
    IF MON.DATA%(OF, KM.WEAPON) > ZERO THEN
        W = MON.DATA%(OF, KM.WEAPON)
        IF ART.DATA%(W, KA.TYPE) = KT.MAG.WEAP THEN
            A$ = "Sparks fly from " + ART.NAME$(W) + "!"
            GOTO PRT.MESSAGE.1
        END IF
    END IF
    IF FR > 95 THEN GOTO SELF.OUCH
    A$ = " weapon broken!"
    GOSUB PRT.MESSAGE.1
    ART.DATA%(MON.DATA%(OF, KM.WEAPON), KA.ROOM) = ZERO
    MON.DATA%(OF, KM.ODDS) = MON.DATA%(OF, KM.ODDS) - ART.DATA%(MON.DATA%(OF, KM.WEAPON), KA.ODDS)
    MON.DATA%(OF, KM.WEAPON) = K.UNARMED
    MON.DATA%(OF, KM.COURAGE) = MON.DATA%(OF, KM.COURAGE) / 2
    IF RND(1) > .5 THEN PRINT : RETURN
    A$ = "  broken weapon hurts user!"
    GOSUB PRT.MESSAGE.1
SELF.OUCH:
    IF FR = 100 THEN GOTO SELF.YEOW
    D = MON.DATA%(OF, KM.DICE)
    S = MON.DATA%(OF, KM.SIDES)
    DF = OF
    A = 1
    GOTO DO.DAMAGE
SELF.YEOW:
    D = MON.DATA%(OF, KM.DICE) * 2
    S = MON.DATA%(OF, KM.SIDES)
    DF = OF
    A = ZERO
    GOTO DO.DAMAGE
A.HIT:
    INC = (FNR(100) > MON.DATA%(OF, KM.ODDS))
    MON.DATA%(OF, KM.ODDS) = MON.DATA%(OF, KM.ODDS) + 2 * ABS(INC)
    D = MON.DATA%(OF, KM.DICE)
    S = MON.DATA%(OF, KM.SIDES)
    IF RL > 5 THEN
        A$ = "--- a Hit!"
        GOSUB PRT.MESSAGE.1
        GOTO DO.DAMAGE
    END IF
    A$ = "A Critical Hit!"
    GOSUB PRT.MESSAGE.1
    ROLL = FNR(100)
    IF ROLL < 51 THEN
        IF MON.DATA%(DF, KM.FORCEFLD) THEN
            MON.DATA%(0, KM.FORCEFLD) = ZERO
            A = 1
            GOSUB DESTROY.FF
            GOTO DO.DAMAGE
        ELSE
            A = ZERO
            GOTO DO.DAMAGE
        END IF
    END IF
    IF ROLL < 86 THEN S = 1.5 * S: GOTO DO.DAMAGE
    IF ROLL < 96 THEN D = 2! * D: GOTO DO.DAMAGE
    IF ROLL < 100 THEN D = 3! * D: GOTO DO.DAMAGE
    GOTO A.KILL
DO.DAMAGE:
    DAMAGE = ZERO
    FOR D3 = 1 TO D
        DAMAGE = DAMAGE + FNR(S)
    NEXT
    IF OF = 0 THEN DAMAGE = DAMAGE + FNR(HIT.ADJ)
    DAMAGE = DAMAGE - MON.DATA%(DF, KM.FORCEFLD)
    IF DAMAGE < 1 THEN
        A$ = "Blow bounces off forcefield!"
        GOTO PRT.MESSAGE.1
    END IF
    ARM.PTR = MON.DATA%(DF, KM.ARMOR)
    IF ARM.PTR < 0 THEN
        ARMOUR = ABS(ARM.PTR)
    ELSE
        ARMOUR = ART.DATA%(ARM.PTR, KA.DICE)
    END IF
    DAMAGE = DAMAGE - A * ARMOUR
    IF ARM.PTR > 0 THEN
        ART.DATA%(ARM.PTR, KA.SIDES) = ART.DATA%(ARM.PTR, KA.SIDES) + DAMAGE
        IF ART.DATA%(ARM.PTR, KA.BKAC) > ART.DATA%(ARM.PTR, KA.BKPT) THEN
            A$ = "Armour Shatters!!"
            GOSUB PRT.MESSAGE.1
            MON.DATA%(0, 8) = ZERO
            ART.DATA%(ARM.PTR, KA.ROOM) = ZERO
            ARM.HIT = ZERO
        END IF
    END IF
    IF DAMAGE < 1 THEN
        A$ = "Blow bounces off armour!"
        GOTO PRT.MESSAGE.1
    END IF
    IF DF = 0 AND ARM.ADD > ZERO THEN
        DAMAGE = DAMAGE - ARM.ADD
        IF DAMAGE < 1 THEN
            A$ = "The blow can't get through your thick hide!"
            GOTO PRT.MESSAGE.1
        END IF
    END IF
    MON.DATA%(DF, KM.DAMAGE) = MON.DATA%(DF, KM.DAMAGE) + DAMAGE
    IF MON.DATA%(DF, KM.DAMAGE) >= MON.DATA%(DF, 1) THEN GOTO A.KILL
    A = MON.DATA%(DF, KM.REACT)
LIST.CONDITION:
    IF MON.DATA%(DF, KM.STATUS) = K.ST.INVIS THEN RETURN
    COND = INT(MON.DATA%(DF, KM.DAMAGE) * NBR.COND / MON.DATA%(DF, 1))
    A$ = FNNM$(DF) + " is " + COND$(COND)
    GOSUB PRT.MESSAGE.1
    RETURN
A.KILL:
    IF MON.DATA%(DF, KM.STATUS) = K.ST.IMMORT THEN GOTO REGENERATE
    A$ = FNNM$(DF) + " is dead!"
    IF OF = 0 THEN PTS = PTS + INT(MON.DATA%(DF, KM.HARD) / 2)
    GOSUB PRT.MESSAGE
    IF SP.CNT%(5, 0) > ZERO THEN
        SP.CNT%(5, 0) = ZERO
        GOTO REGENERATE
    END IF
    A = MON.DATA%(DF, KM.REACT)
    NBR.SIDE%(A) = NBR.SIDE%(A) - 1
    IF MON.DATA%(DF, KM.WEAPON) > ZERO THEN ART.DATA%(MON.DATA%(DF, KM.WEAPON), KA.ROOM) = ROOM: MON.DATA%(DF, KM.ODDS) = MON.DATA%(DF, KM.ODDS) - ART.DATA%(MON.DATA%(DF, 9), KA.ODDS): MON.DATA%(DF, KM.WEAPON) = K.UNARMED: MON.DATA%(DF, 4) =  _
MON.DATA%(DF, 4) / 2
    IF DF = 0 THEN DIE = 1: GOTO GAME.OVER
    MON.DATA%(DF, KM.STATUS) = K.ST.DEAD
    MON.DATA%(DF, KM.STATCT) = 999
    RETURN
REGENERATE:
    A$ = FNNM$(DF) + " regenerates!"
    GOSUB PRT.MESSAGE.1
    MON.DATA%(DF, KM.DAMAGE) = ZERO
    RETURN
DESTROY.FF:
    A$ = "The force field crumbles!"
    GOSUB PRT.MESSAGE.1
    IF SP.CNT%(KS.FORCE, 0) THEN
        FOR FFD = 1 TO NBR.MON
          IF MON.DATA%(FFD, KM.FORCEFLD) > 0 AND MON.DATA%(FFD, KM.REACT) = K.FRIEND THEN
               MON.DATA%(FFD, KM.FORCEFLD) = ZERO
               MON.DATA%(FFD, KM.FORCCT) = ZERO
          END IF
        NEXT
    END IF
    MON.DATA%(0, KM.FORCEFLD) = ZERO
    MON.DATA%(0, FORCCT) = ZERO
    SP.CNT%(KS.FORCE, 0) = ZERO
    RETURN
' ---------------------------------------------------------------------
FLEE.RTN:
    IF NBR.SIDE%(1) = ZERO THEN
        A$ = "There's no reason to run!"
        GOTO MESSAGE.BACK
    END IF
    GOSUB FIND.EXIT
    IF NBR.EXITS = ZERO THEN
        A$ = "There's no place to go!"
        GOTO MESSAGE.BACK
    END IF
    CMD = ZERO
    FOR D = 1 TO NBR.DIR
    IF SUBJ$ = COMAND$(D) THEN CMD = D: D = NBR.DIR
    NEXT
    IF CMD > ZERO THEN VERB$ = SUBJ$: SUBJ$ = "FLEE": GOTO MOVE.RTN
    GOSUB FIND.EXIT
    GOTO MOVE.IT
' ---------------------------------------------------------------------
FIND.EXIT:
    RM.LOOK = MON.DATA%(M, KM.ROOM)
    NBR.EXITS = ZERO
    FOR D = 1 TO NBR.DIR
        IF RD%(RM.LOOK, D) >= 1 AND RD%(RM.LOOK, D) <= NBR.ROOMS THEN
            NBR.EXITS = NBR.EXITS + 1
        END IF
    NEXT
LOOK.FOR.EXIT:
    IF NBR.EXITS = ZERO THEN ROOM.TO = RM.LOOK: RETURN
    D = FNR(NBR.DIR)
    ROOM.TO = RD%(ROOM, D)
    IF ROOM.TO < 1 OR ROOM.TO > NBR.ROOMS THEN GOTO LOOK.FOR.EXIT
    RETURN
' ---------------------------------------------------------------------
GIVE.RTN:
    IF NOT SEE THEN GOTO CANT.SEE
    IF SUBJ$ = "" THEN
        GOSUB GET.WHAT.GIVE:
        GOSUB GET.WHO.GIVE
    ELSE
        GOSUB PARSE.GIVE
    END IF
    SUBJ$ = WHO$
    GOSUB MONSTER.SEARCH
    IF FOUND = ZERO THEN GOTO NOT.HERE
    SUBJ$ = WHAT$
    IF VAL(WHAT$) > ZERO THEN GOTO GIVE.GOLD
    GOSUB ARTIFACT.SEARCH
    IF FOUND THEN GOTO GIVE.ARTIFACT.AWAY
    GOTO DONT.HAVE
GET.WHO.GIVE:
    A$ = ""
    WHILE A$ = ""
      PRINT
      INPUT "Who to give to? ", A$
      LINE.PG = LINE.PG + 2
    WEND
    SUBJ$ = UCASE$(A$)
    WHO$ = SUBJ$
    RETURN
GET.WHAT.GIVE:
    A$ = ""
    WHILE A$ = ""
        PRINT
        INPUT "What to give? ", A$
        LINE.PG = LINE.PG + 2
    WEND
    SUBJ$ = UCASE$(A$)
    WHAT$ = SUBJ$
    RETURN
XFER.ART.MON:
    ART.DATA%(A, KA.ROOM) = -M - 1
    MON.DATA%(M, KM.WEIGHT) = MON.DATA%(M, KM.WEIGHT) + ART.DATA%(A, KA.WEIGHT)
    MON.DATA%(M, KM.REACT) = ZERO
    MON.DATA%(M, KM.FRIEND) = MON.DATA%(M, KM.FRIEND) * (1 + ART.DATA%(A, KA.VALUE) / 100)
    IF ART.DATA%(A, KA.TYPE) = KT.MAG.WEAP OR ART.DATA%(A, KA.TYPE) = KT.WEAPON THEN GOTO MON.READY
    RETURN
MON.READY:
    MON.DATA%(M, KM.WEAPON) = A
    MON.DATA%(M, KM.ODDS) = MON.DATA%(M, KM.ODDS) + ART.DATA%(A, KA.ODDS)
    MON.DATA%(M, KM.COURAGE) = 2 * MON.DATA%(M, KM.COURAGE)
    MON.DATA%(0, KM.DICE) = ART.DATA%(A, KA.DICE)
    MON.DATA%(0, KM.SIDES) = ART.DATA%(A, KA.SIDES)
    RETURN
GIVE.ARTIFACT.AWAY:
    IF A = MON.DATA%(0, KM.WEAPON) THEN MON.DATA%(0, KM.WEAPON) = ZERO
    A$ = "Okay."
    GOSUB PRT.MESSAGE
    GOSUB XFER.ART.MON
    IF MON.DATA%(M, KM.ODDS) <> ZERO AND MON.DATA%(M, KM.WEAPON) = K.UNARMED THEN
        GOSUB MON.READY
    END IF
GIVE.DONE:
    OLD.ROOM = ROOM
    GOSUB CHK.REACTIONS
    GOTO CHK.DROP
GIVE.GOLD:
    IF VAL(SUBJ$) > GOLD# THEN
        A$ = "You aren't carrying that much gold!"
        GOTO MESSAGE.BACK
    END IF
    GOLD# = INT(GOLD# - VAL(SUBJ$))
 '  MON.DATA%(M,0)  = MON.DATA%(M,0) + INT(VAL(SUBJ$))
    MON.DATA%(M, KM.REACT) = ZERO
    MON.DATA%(M, KM.FRIEND) = MON.DATA%(M, KM.FRIEND) * (1 + VAL(SUBJ$) / 100)
    GOTO GIVE.DONE
PARSE.GIVE:
    X = INSTR(SUBJ$, " TO ")
    IF X > ZERO THEN
        WHO$ = MID$(SUBJ$, X + 4)
        WHAT$ = LEFT$(SUBJ$, X - 1)
        RETURN
    END IF
    X = INSTR(SUBJ$, " ")
    IF X > ZERO THEN
        WHAT$ = MID$(SUBJ$, X + 1)
        WHO$ = LEFT$(SUBJ$, X - 1)
        RETURN
    END IF
    WHAT$ = SUBJ$
    GOSUB GET.WHO.GIVE
    RETURN
' ---------------------------------------------------------------------
INVENTORY:
    IF NOT SEE THEN GOTO CANT.SEE
    WHERE = K.UR.CARRY
    IF LEN(SUBJ$) > ZERO THEN
        IF SUBJ$ = LEFT$("SPELLS", LEN(SUBJ$)) THEN GOTO INVENTORY.SPELLS
        IF SUBJ$ = LEFT$("LANGUAGES", LEN(SUBJ$)) THEN GOTO INVENTORY.LANG
        GOSUB MONSTER.SEARCH
        IF FOUND THEN WHERE = -M - 1
    END IF
    PRINT
    IF WHERE = K.UR.CARRY THEN
        M = 0
        PRINT "You are";
    ELSE
        PRINT FNNM$(M); " is";
    END IF
    PRINT " carrying the following ---"
    LINE.PG = LINE.PG + 2
    A0 = 0
    FOR A = 1 TO NBR.ART
    IF ART.DATA%(A, KA.ROOM) <> WHERE THEN GOTO INV.NEXT
    PRINT " "; ART.NAME$(A);
    IF MON.DATA%(M, KM.WEAPON) = A THEN PRINT " (READY WEAPON)";
    IF ART.DATA%(A, KM.TYPE) = KT.ARMOR AND ART.DATA%(A, KA.SUBTYPE) = 1 THEN PRINT " ARMOUR";
    IF ART.DATA%(A, KM.TYPE) = KT.ARMOR AND ART.DATA%(A, KA.SUBTYPE) = 2 THEN PRINT " SHIELD";
    IF A = MON.DATA%(M, KM.ARMOR) THEN PRINT " (WORN ARMOUR)";
    IF A = MON.DATA%(M, KM.SHIELD) THEN PRINT " (FOR A SHIELD)";
    PRINT
    LINE.PG = LINE.PG + 1
    GOSUB CHK.PAGEFULL
INV.NEXT:
    NEXT
    IF GOLD# > ZERO AND M = ZERO THEN PRINT GOLD#; " gold pieces."
    IF BANK# > ZERO AND M = ZEROYou see a man covered with frost. You   thought it was a frozen man at first,   but the man is moving. He is also very  large, at about 7 feet. He glares at youand says his name is Polaris, god of the north.                                                 You see a snowman with a corncob pipe   and a button nose and two eyes made out of coal. He is wearing a scarf and a    funny black hat.                                                                                                                        You see a large humanoid type figure    that looks like he is made entirely of  ice. It is an ice golem!                                                                                                                                                        You see a large white bear. He does not appear to be adversely affected by the  cold. He also does not appear to be very friendly.                                                                                                                              You see an eskimoe all decked out in fur as thick as your arm. It is so thick hecould use it for armour.                                                                                                                                                        You see a man with the thickest body    hair you have ever seen! It is so thick he is wearing only a loincloth and is   still not cold! His beard almost covers his face. He says his name is Harry.                                                            You see a short chubby man in a tuxedo  with a very large nose. Oops! Its just  a penguin! He is very cute.                                                                                                                                                     You see a horrible looking creature that looks like it is made of frost. It's a  vicious frost monster!                                                                                                                                                         You see a man in flowing black and gold robes. He looks like a sorcerer!                                                                                                                                                                                        You see a nasty looking troll with white hair and mustache. He is an ice troll! A very rare breed! He also looks very well built.                                                                                                                               You see a young man of about twenty. He says he cannot remember his name, but heknows he is an adventurer.                                                                                                                                                      You see a burly man in furs and carrying a very large knife. He says his name is Trapper Jack.                                                                                                                                                                  You see a strange looking animal with   black and gold stripes down its back. Itis making a strange noise 'glodsnortch'.                                                                                                                                        You see a man with a large broadsword   practicing his sword expertise on a      practice dummy. As you enter he greets  you. His name is Harbak.                                                                                                               You see a small man with a frosty beard. He is an ice gnome. He says his name isChilly.                                                                                                                                                                         You see a small man with a frosty beard. He is an ice gnome. He says his name is Willy.                                                                                                                                                                         You see an awesome ice giant!! He looks very tough.                                                                                                                                                                                                             You see a troll with white hair and a   white beard. It is an ice troll!                                                                                                                                                                                        You see the old man come to life as he  thaws out.                                                                                                                                                                                                              You see a huge wooly elephant. It is so large it could well be called mammoth!                                                                                                                                                                                  You see a large white wooly creature    that stands over 8 feet tall. This must be the abominable snowman!!                                                                                                                                                     