hollywoodhijinx/bshelter.zap

938 lines
25 KiB
Plaintext

.FUNCT MATCHBOX-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "You see a picture of Santa Claus in his sleigh. The sleigh is filled with computer games from Infocom, and the reindeer pulling it look strained."
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
FCLEAR MATCHBOX,NDESCBIT
RFALSE
.FUNCT WAX-COAT-F
EQUAL? PRSA,V?SCRAPE-OFF \FALSE
EQUAL? PRSI,GREEN-MATCH,RED-MATCH \FALSE
FSET? PRSI,WAXED-BIT \FALSE
FCLEAR PRSI,WAXED-BIT
IN? PRSO,PRSI \?ELS13
REMOVE PRSO
JUMP ?CND8
?ELS13: REMOVE WAX-COAT-2
?CND8: PRINTI "You scrape the wax coating off"
CALL TRPRINT,PRSI
RSTACK
.FUNCT MATCH-F,WAXED
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "It's the wooden, self-lighting variety of match. The "
CALL DPRINT,PRSO
FSET? PRSO,WAXED-BIT \?ELS8
PRINTI " head is coated with a thin layer of wax"
JUMP ?CND6
?ELS8: FSET? PRSO,WETBIT \?ELS10
PRINTI " is wet"
JUMP ?CND6
?ELS10: PRINTI " is "
FSET? PRSO,ONBIT /?CND13
PRINTI "not "
?CND13: PRINTI "lit"
?CND6: PRINTR "."
?ELS5: EQUAL? PRSA,V?KILL,V?LAMP-ON \?ELS17
IN? PRSO,PLAYER /?ELS22
PRINTI "You're not holding"
CALL TRPRINT,PRSO
RSTACK
?ELS22: FSET? PRSO,FLAMEBIT \?ELS24
PRINTR "It's already lit."
?ELS24: GETP PRSO,P?MATCH-LIFE
ZERO? STACK \?ELS26
PRINTR "You can't. It's all used up."
?ELS26: FSET? PRSO,WETBIT \?ELS28
PRINTR "It's wet. It won't light now."
?ELS28: EQUAL? HERE,IN-POOL-1,IN-POOL-2,UNDERPASS-1 /?THN31
EQUAL? HERE,UNDERPASS-2 \?ELS30
?THN31: PRINTR "Not even Uncle Buddy's best special effects men could light a match under water!"
?ELS30: EQUAL? HERE,ON-POOL-1,ON-POOL-2,INLET \?ELS34
PRINTR "You'd better find some dry land first."
?ELS34: CALL QUEUE,I-MATCH-BURN,-1
FSET PRSO,ONBIT
IN? WAX-COAT-1,PRSO \?ELS39
REMOVE WAX-COAT-1
JUMP ?CND37
?ELS39: IN? WAX-COAT-2,PRSO \?CND37
REMOVE WAX-COAT-2
?CND37: FSET PRSO,FLAMEBIT
FSET? PRSO,WAXED-BIT \?ELS44
FCLEAR PRSO,WAXED-BIT
PRINTI "The wax coating melts away as you light"
CALL TRPRINT,PRSO
JUMP ?CND42
?ELS44: PRINTI "Okay,"
CALL TPRINT,PRSO
PRINTI " is now lit."
CRLF
?CND42: CALL NOW-LIT?
RTRUE
?ELS17: EQUAL? PRSA,V?LAMP-OFF \?ELS48
FSET? PRSO,ONBIT \?ELS53
CALL BLOW-OUT-MATCH,PRSO
RSTACK
?ELS53: PRINTR "It's not lit."
?ELS48: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
CALL CANT-OPEN-CLOSE
RSTACK
.FUNCT I-MATCH-BURN
FSET? RED-MATCH,ONBIT \?CND1
CALL MATCH-BURN,RED-MATCH
?CND1: FSET? GREEN-MATCH,ONBIT \FALSE
CALL MATCH-BURN,GREEN-MATCH
RSTACK
.FUNCT MATCH-BURN,OBJ
GETP OBJ,P?MATCH-LIFE
ZERO? STACK \?ELS5
CALL BLOW-OUT-MATCH,OBJ,TRUE-VALUE
RSTACK
?ELS5: GETP OBJ,P?MATCH-LIFE
SUB STACK,1
PUTP OBJ,P?MATCH-LIFE,STACK
RTRUE
.FUNCT BLOW-OUT-MATCH,OBJ,ADD-CR=0
FCLEAR OBJ,ONBIT
FCLEAR OBJ,FLAMEBIT
FSET? RED-MATCH,ONBIT /?CND1
FSET? GREEN-MATCH,ONBIT /?CND1
CALL DEQUEUE,I-MATCH-BURN
?CND1: CALL VISIBLE?,OBJ
ZERO? STACK /FALSE
ZERO? ADD-CR /?CND11
CRLF
?CND11: PRINTI "The "
CALL DPRINT,OBJ
PRINTI " goes out, turns to ashes, falls to the ground and disappears."
CRLF
CALL SAY-IF-NOT-LIT
REMOVE OBJ
RTRUE
.FUNCT BOAT-DOCK-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a large grotto standing on a boat dock. Moonlight trickling through the grotto's opening to the north reflects off the water, dimly illuminating this area. A wooden walkway leads north out of the grotto. A pool of sea water covers the bottom of the grotto."
RTRUE
.FUNCT PORTABLE-WATER-F
EQUAL? PRSA,V?ENTER,V?SWIM \?ELS5
CALL GLOBAL-IN?,WATER,HERE
ZERO? STACK /?ELS10
CALL PERFORM,PRSA,WATER
RTRUE
?ELS10: PRINTI "You'd never fit into"
LOC PORTABLE-WATER
CALL TPRINT,STACK
PRINTR "!"
?ELS5: EQUAL? PRSA,V?TASTE,V?DRINK-FROM,V?DRINK \?ELS14
CALL NOT-HOLDING-WATER?
ZERO? STACK \TRUE
PRINTR "You take a sip."
?ELS14: EQUAL? PRSA,V?EMPTY,V?DROP,V?THROW /?THN26
EQUAL? PRSA,V?POUR,V?PUT,V?PUT-ON \?ELS23
?THN26: EQUAL? PRSO,PORTABLE-WATER \?ELS23
CALL NOT-HOLDING-WATER?
ZERO? STACK \TRUE
REMOVE PORTABLE-WATER
FCLEAR PORTABLE-WATER,NDESCBIT
SET 'AMOUNT-OF-WATER,0
CALL DEQUEUE,I-DRIP
EQUAL? PRSA,V?EMPTY \?CND35
PRINTR "You pour the water out of the bucket."
?CND35: ZERO? PRSI /?ELS42
FSET PRSI,WETBIT
FSET? PRSI,FLAMEBIT \?CND44
FCLEAR PRSI,FLAMEBIT
FCLEAR PRSI,ONBIT
EQUAL? PRSI,RED-CANDLE \?ELS49
CALL STOP-RED-BURNING
JUMP ?CND47
?ELS49: EQUAL? PRSI,WHITE-CANDLE \?ELS51
CALL STOP-WHITE-BURNING
JUMP ?CND47
?ELS51: EQUAL? PRSI,BLUE-CANDLE \?ELS53
CALL STOP-BLUE-BURNING
JUMP ?CND47
?ELS53: EQUAL? PRSI,GREEN-MATCH,RED-MATCH \?CND47
CALL DEQUEUE,I-MATCH-BURN
?CND47: PRINTR "You douse the flame with water."
?CND44: PRINTR "You pour water over it, making a mess."
?ELS42: REMOVE PORTABLE-WATER
PRINTR "The water pours out, making a mess."
?ELS23: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS59
EQUAL? PRSI,PORTABLE-WATER \?ELS59
IN? PORTABLE-WATER,BUCKET \?ELS59
CALL PERFORM,V?PUT,PRSO,BUCKET
RTRUE
?ELS59: EQUAL? PRSA,V?GIVE \?ELS63
EQUAL? PRSO,PORTABLE-WATER \?ELS63
FSET? PRSI,ACTORBIT \?ELS63
CALL PERFORM,V?POUR,PORTABLE-WATER
RTRUE
?ELS63: EQUAL? PRSA,V?EXAMINE,V?SEARCH,V?LOOK-INSIDE \FALSE
LOC PORTABLE-WATER
CALL PERFORM,PRSA,STACK
RTRUE
.FUNCT WATER-F
EQUAL? HERE,UPSTAIRS-BATHROOM,KITCHEN,LADIES-ROOM /?THN6
EQUAL? HERE,MENS-ROOM \?ELS5
?THN6: PRINTR "Hmmm. It seems the water has been turned off."
?ELS5: EQUAL? PRSA,V?DISEMBARK \?ELS9
CALL DO-WALK,P?OUT
RTRUE
?ELS9: EQUAL? PRSA,V?ENTER,V?SWIM \?ELS11
EQUAL? HERE,NORTH-GARDEN \?ELS14
PRINTR "The pond's too shallow for swimming."
?ELS14: FSET? SKIS,WORNBIT \?ELS16
PRINT DOG-PADDLE
CRLF
RTRUE
?ELS16: CALL ULTIMATELY-IN?,LADDER
ZERO? STACK /?ELS18
PRINTI "You won't be able to swim carrying"
CALL TRPRINT,LADDER
RTRUE
?ELS18: EQUAL? HERE,INLET,ON-POOL-1,IN-POOL-1 /?THN21
EQUAL? HERE,UNDERPASS-1,UNDERPASS-2,IN-POOL-2 /?THN21
EQUAL? HERE,ON-POOL-2 \?CND12
?THN21: PRINTR "You swim a few yards."
?CND12: CALL ALL-WET,PLAYER
PRINTI "As you enter the chilly water, goose bumps cover your body and your teeth chatter a bit."
CRLF
CRLF
IN? BUCKET,PLAYER \?CND23
MOVE PORTABLE-WATER,BUCKET
CALL QUEUE,I-DRIP,1
?CND23: EQUAL? HERE,BOAT-DOCK \?ELS28
CALL GOTO,ON-POOL-1
JUMP ?CND26
?ELS28: EQUAL? HERE,LEDGE \?ELS30
CALL GOTO,ON-POOL-2
JUMP ?CND26
?ELS30: CALL GOTO,INLET
?CND26: CALL ULTIMATELY-IN?,FLASHLIGHT
ZERO? STACK /?CND33
FSET? FLASHLIGHT,ONBIT \?CND33
FCLEAR FLASHLIGHT,ONBIT
CRLF
PRINTI "Oops! Your flashlight went out. The water ruined it."
CRLF
?CND33: CALL ULTIMATELY-IN?,RED-CANDLE
ZERO? STACK /?CND38
FSET? RED-CANDLE,ONBIT \?CND38
CALL BLOW-OUT-CANDLE,RED-CANDLE
?CND38: CALL ULTIMATELY-IN?,WHITE-CANDLE
ZERO? STACK /?CND43
FSET? WHITE-CANDLE,ONBIT \?CND43
CALL BLOW-OUT-CANDLE,WHITE-CANDLE
?CND43: CALL ULTIMATELY-IN?,BLUE-CANDLE
ZERO? STACK /?CND48
FSET? BLUE-CANDLE,ONBIT \?CND48
CALL BLOW-OUT-CANDLE,BLUE-CANDLE
?CND48: CALL ULTIMATELY-IN?,GREEN-MATCH
ZERO? STACK /?CND53
FSET? GREEN-MATCH,FLAMEBIT \?CND53
CALL ULTIMATELY-IN?,RED-MATCH
ZERO? STACK /?CND53
FSET? RED-MATCH,FLAMEBIT \?CND53
FCLEAR RED-MATCH,ONBIT
FCLEAR RED-MATCH,FLAMEBIT
REMOVE RED-MATCH
FCLEAR GREEN-MATCH,ONBIT
FCLEAR GREEN-MATCH,FLAMEBIT
REMOVE GREEN-MATCH
PRINTI "You drop the lit "
CALL DPRINT,GREEN-MATCH
PRINTI " and the lit "
CALL DPRINT,RED-MATCH
PRINTC 46
CRLF
?CND53: CALL ULTIMATELY-IN?,RED-MATCH
ZERO? STACK /?CND58
FSET? RED-MATCH,FLAMEBIT \?CND58
FCLEAR RED-MATCH,ONBIT
FCLEAR RED-MATCH,FLAMEBIT
REMOVE RED-MATCH
PRINTI "You drop the lit "
CALL DPRINT,RED-MATCH
PRINTC 46
CRLF
?CND58: CALL ULTIMATELY-IN?,GREEN-MATCH
ZERO? STACK /TRUE
FSET? GREEN-MATCH,FLAMEBIT \TRUE
FCLEAR GREEN-MATCH,ONBIT
FCLEAR GREEN-MATCH,FLAMEBIT
REMOVE GREEN-MATCH
PRINTI "You drop the lit "
CALL DPRINT,GREEN-MATCH
PRINTR "."
?ELS11: EQUAL? PRSA,V?TAKE \?ELS69
EQUAL? PRSO,WATER \?ELS69
IN? BUCKET,PLAYER \?ELS69
CALL PERFORM,V?FILL,BUCKET,WATER
RTRUE
?ELS69: EQUAL? PRSA,V?PUT \?ELS73
EQUAL? PRSI,WATER \?ELS73
EQUAL? HERE,NORTH-GARDEN \?ELS80
CALL PERFORM,V?PUT,PRSO,POND
RTRUE
?ELS80: REMOVE PRSO
PRINTI "The "
CALL DPRINT,PRSO
PRINTR " disappears into the ocean water."
?ELS73: EQUAL? PRSA,V?LOOK-INSIDE \?ELS84
EQUAL? HERE,NORTH-GARDEN \?ELS89
CALL PERFORM,V?LOOK-INSIDE,POND
RTRUE
?ELS89: PRINTR "You see nothing unusual about sea water."
?ELS84: EQUAL? PRSA,V?DRINK \FALSE
EQUAL? PRSO,WATER \FALSE
PRINTR "You take a sip."
.FUNCT ALL-WET,THING,OBJ
FSET THING,WETBIT
FIRST? THING >OBJ /?KLU17
?KLU17:
?PRG1: ZERO? OBJ /?REP2
FSET OBJ,WETBIT
FIRST? OBJ \?CND6
CALL ALL-WET,OBJ
?CND6: NEXT? OBJ >OBJ /?PRG1
JUMP ?PRG1
?REP2: FSET? RED-MATCH,WAXED-BIT \?CND9
FCLEAR RED-MATCH,WETBIT
?CND9: FSET? GREEN-MATCH,WAXED-BIT \FALSE
FCLEAR GREEN-MATCH,WETBIT
RTRUE
.FUNCT TO-BOAT-DOCK
EQUAL? HERE,ON-POOL-1 \FALSE
PRINTI "You climb out of the pool and onto the boat dock. The night air makes you shiver."
CRLF
CRLF
RETURN BOAT-DOCK
.FUNCT UNDER-WATER-F
PRINTI "You take a deep breath then plunge down."
CRLF
CRLF
EQUAL? HERE,ON-POOL-1 \?ELS3
CALL GOTO,IN-POOL-1
JUMP ?CND1
?ELS3: CALL GOTO,IN-POOL-2
?CND1: SET 'BREATH,6
CALL QUEUE,I-BREATH,-1
RFALSE
.FUNCT I-BREATH
DEC 'BREATH
EQUAL? BREATH,3 \?ELS5
CRLF
PRINTR "You feel pressure building in your chest. You won't be able to hold your breath much longer."
?ELS5: EQUAL? BREATH,2 \?ELS7
CRLF
PRINTR "The pressure is increasing. Your feel as if your lungs are going to rupture!"
?ELS7: EQUAL? BREATH,1 \?ELS9
CRLF
PRINTR "You can't hold the air in your lungs any longer. You open your mouth and the air bursts out."
?ELS9: ZERO? BREATH \FALSE
CRLF
PRINTI "As you gasp for your next breath, you suck in a mouthful of cold sea water. You swim frantically a short distance then pass out. Later you awake to find yourself on the beach."
CRLF
CRLF
CALL GOTO,BEACH
RSTACK
.FUNCT OUT-OF-WATER-F
CALL DEQUEUE,I-BREATH
PRINTI "You come to the surface and catch your breath."
CRLF
CRLF
EQUAL? HERE,IN-POOL-1 \?ELS5
RETURN ON-POOL-1
?ELS5: EQUAL? HERE,IN-POOL-2 \FALSE
RETURN ON-POOL-2
.FUNCT TO-UNDERPASS-EAST
PRINTI "You swim east through a narrow, jagged passage."
CRLF
CRLF
RETURN UNDERPASS-1
.FUNCT TO-UNDERPASS-WEST
PRINTI "You swim west through a narrow, jagged passage."
CRLF
CRLF
RETURN UNDERPASS-2
.FUNCT IN-POOL-2-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are swimming underwater. In the darkness, you can't make out your surroundings here."
CALL LIT?,ON-POOL-2
ZERO? STACK /TRUE
PRINTI " However you do notice a faint light above you."
RTRUE
.FUNCT ON-POOL-2-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are swimming on the surface of a pool "
CALL LIT?,HERE
ZERO? STACK /?ELS10
PRINTI "inside a small grotto. To the north is a small ledge."
RTRUE
?ELS10: PRINTI "in the dark. From the sound of your breathing you can tell this is a fairly small area."
RTRUE
.FUNCT BOMB-SHELTER-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "With its concrete walls and floor this room looks as if it might be a bomb shelter. A heavy-duty sawhorse has"
CALL APRINT,PLANK
PRINTI " across it. "
FSET? BS-SAFE,ON-GROUND-BIT \?ELS8
PRINTI "A "
CALL DPRINT,BS-SAFE
PRINTI " is on"
CALL TPRINT,LEFT-END
JUMP ?CND6
?ELS8: PRINTI "Suspended above the left end of the plank by"
CALL APRINT,ROPE
EQUAL? ROPE-LIFE,1,2 \?CND11
PRINTI ", which is burning,"
?CND11: PRINTI " is"
CALL APRINT,BS-SAFE
PRINTI ". The rope stretches from the safe, through a pulley in the ceiling, to the floor where it is tied to a pipe running along the wall"
?CND6: PRINTI ". In the ceiling above"
CALL TPRINT,RIGHT-END
PRINTI " there is a"
FSET? HATCH,OPENBIT \?ELS16
PRINTI "n open"
JUMP ?CND14
?ELS16: PRINTI " closed"
?CND14: PRINTI " hatch. A long chain hangs down from"
CALL TPRINT,HATCH
PRINTI ". Just beneath"
CALL TPRINT,HATCH
PRINTI " there is a "
FSET? LADDER,HUNG-BIT \?CND19
CALL DPRINT,LADDER
PRINTI " hanging from a "
?CND19: PRINTI "pair of heavy-duty metal hooks protruding from the wall. There is a doorway leading south."
RTRUE
?ELS5: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?HANG-UP \FALSE
ZERO? PRSI \FALSE
CALL PERFORM,V?HANG-UP,PRSO,HOOKS
RTRUE
.FUNCT HATCH-F
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,HATCH \?ELS5
FSET? HATCH,OPENBIT \?ELS12
CALL PERFORM,V?PUT,PRSO,HATCH-HOLE
RTRUE
?ELS12: PRINTR "The hatch is closed!"
?ELS5: EQUAL? PRSA,V?OPEN \?ELS16
FSET? HATCH,OPENBIT /?ELS16
EQUAL? HERE,BOMB-SHELTER \?ELS23
PRINTR "That's for you to figure out."
?ELS23: PRINTR "There doesn't seem to be any way to open it from this side."
?ELS16: EQUAL? PRSA,V?EXAMINE \?ELS27
FSET? HATCH,OPENBIT \?ELS27
PRINTI "The "
CALL DPRINT,HATCH
PRINTR " is open, revealing a hole about the size of a manhole."
?ELS27: EQUAL? PRSA,V?CLOSE \?ELS31
FSET? HATCH,OPENBIT \?ELS31
EQUAL? HERE,BOMB-SHELTER \?ELS38
PRINTR "That's for you to figure out."
?ELS38: FCLEAR HATCH,OPENBIT
FSET HATCH-HOLE,INVISIBLE
PRINTR "With a show of strength which would make Aunt Hildegarde proud, you manage to close the heavy hatch."
?ELS31: EQUAL? PRSA,V?ENTER \FALSE
EQUAL? HERE,CLIFF \?ELS47
CALL DO-WALK,P?DOWN
RSTACK
?ELS47: CALL DO-WALK,P?UP
RSTACK
.FUNCT CHAIN-F
EQUAL? PRSA,V?CLIMB-UP,V?PULL \?ELS5
PRINTI "You pull on the "
CALL DPRINT,CHAIN
EQUAL? PRSA,V?CLIMB-UP \?CND6
PRINTI " as you attempt to climb"
?CND6: PRINTI " and"
CALL TPRINT,HATCH
FSET? HATCH,OPENBIT \?ELS11
PRINTI " drops, covering the"
FCLEAR HATCH,OPENBIT
FSET HATCH-HOLE,INVISIBLE
JUMP ?CND9
?ELS11: PRINTI " pops up, revealing a"
FSET HATCH,OPENBIT
FCLEAR HATCH-HOLE,INVISIBLE
?CND9: PRINTI " hole in the ceiling."
EQUAL? PRSA,V?CLIMB-UP \?CND14
PRINTI " The chain is too slippery to climb."
?CND14: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS18
PRINTI "The "
CALL DPRINT,CHAIN
PRINTR " hangs down to about eye-level from the hatch above."
?ELS18: EQUAL? PRSA,V?TAKE \FALSE
PRINTR "You can't take the chain; it's attached to the hatch."
.FUNCT ENDS-F,RARG=0
EQUAL? RARG,M-BEG \?ELS5
CALL TOUCHING?,PRSO
ZERO? STACK /?ELS5
LOC PLAYER
CALL ULTIMATELY-IN?,PRSO,STACK
ZERO? STACK \?ELS5
PRINT YOU-CANT
PRINTI "reach it from here. You'll have to step off"
LOC PLAYER
CALL TPRINT,STACK
PRINTR " first."
?ELS5: ZERO? RARG \FALSE
EQUAL? PRSA,V?EXAMINE \?ELS12
PRINTI "The "
CALL DPRINT,PRSO
PRINTI " is "
EQUAL? PRSO,RIGHT-END \?ELS19
EQUAL? WHICH-END-IS-UP,RIGHT-END /?THN16
?ELS19: EQUAL? PRSO,LEFT-END \?ELS15
EQUAL? WHICH-END-IS-UP,LEFT-END \?ELS15
?THN16: PRINTI "in the air"
JUMP ?CND13
?ELS15: PRINTI "on the ground"
?CND13: PRINTR "."
?ELS12: EQUAL? PRSA,V?LOWER,V?PUSH-DOWN \?ELS25
ZERO? PRSI \?ELS25
EQUAL? PRSO,WHICH-END-IS-UP /?ELS32
CALL ITS-ALREADY,STR?173
RSTACK
?ELS32: FSET? BS-SAFE,ON-GROUND-BIT \?ELS34
PRINTR "It won't budge. The safe is on the other end. You should have eaten more carrots as Aunt Hildegarde told you to, instead of feeding them to the dog. It might have improved your eyesight."
?ELS34: LOC PLAYER
EQUAL? PRSO,STACK \?ELS36
PRINTI "How can you do that to"
CALL TPRINT,PRSO
PRINTR " when you're standing on it?"
?ELS36: EQUAL? PRSO,WHICH-END-IS-UP \?ELS38
IN? PLAYER,LEFT-END /?THN41
IN? PLAYER,RIGHT-END \?ELS38
?THN41: PRINTI "You can't lower"
CALL TPRINT,PRSO
PRINTI " when you're standing on"
LOC PLAYER
CALL TRPRINT,STACK
RSTACK
?ELS38: PRINTI "You push down the "
EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS47
SET 'WHICH-END-IS-UP,LEFT-END
PRINTI "right"
JUMP ?CND45
?ELS47: SET 'WHICH-END-IS-UP,RIGHT-END
PRINTI "left"
?CND45: PRINTR " end of the plank and the other end goes up."
?ELS25: EQUAL? PRSA,V?RAISE \?ELS51
ZERO? PRSI \?ELS51
EQUAL? PRSO,WHICH-END-IS-UP \?ELS58
CALL ITS-ALREADY,STR?174
RSTACK
?ELS58: LOC PLAYER
EQUAL? PRSO,STACK \?ELS60
PRINTI "How can you raise"
CALL TPRINT,PRSO
PRINTR " when you're standing on it?"
?ELS60: EQUAL? PRSO,LEFT-END \?ELS62
FSET? BS-SAFE,ON-GROUND-BIT \?ELS62
PRINTR "You can't raise the left end when the safe is on it."
?ELS62: PRINTI "You raise the "
EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS69
SET 'WHICH-END-IS-UP,LEFT-END
PRINTI "left"
JUMP ?CND67
?ELS69: SET 'WHICH-END-IS-UP,RIGHT-END
PRINTI "right"
?CND67: PRINTR " end of the plank and the other end goes down."
?ELS51: EQUAL? PRSA,V?CLIMB-ON,V?STAND-ON \?ELS73
EQUAL? WHICH-END-IS-UP,PRSO \?ELS78
CALL IN-AIR
RSTACK
?ELS78: FSET? BS-SAFE,ON-GROUND-BIT \?ELS80
PRINT YOU-CANT
PRINTI "do that. The "
CALL DPRINT,BS-SAFE
PRINTR " is already there."
?ELS80: FSET? SKIS,WORNBIT \?ELS82
PRINTI "You step onto"
CALL TPRINT,PLANK
PRINTR " but ski right off."
?ELS82: CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS73: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
CALL SLIDES-OFF
RSTACK
.FUNCT IN-AIR
PRINTR "It's in the air. How can you stand on it?"
.FUNCT GENERIC-PLANK-F
EQUAL? PRSA,V?CLIMB-ON,V?STAND-ON /FALSE
RETURN PLANK
.FUNCT PLANK-F
EQUAL? PRSA,V?CLIMB-ON,V?STAND-ON \?ELS5
ZERO? LIT \?ELS5
CALL TOO-DARK
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
PRINTI "The "
CALL DPRINT,PLANK
PRINTI " is about 12 feet long and several inches thick. The right end of the plank is "
EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS12
PRINTI "in the air "
JUMP ?CND10
?ELS12: PRINTI "on the ground "
?CND10: PRINTI "and the left end is "
EQUAL? WHICH-END-IS-UP,RIGHT-END \?ELS17
PRINTI "on the ground"
FSET? BS-SAFE,ON-GROUND-BIT \?CND15
PRINTI " with"
CALL APRINT,BS-SAFE
PRINTI " sitting on it"
JUMP ?CND15
?ELS17: PRINTI "in the air"
?CND15: PRINTR "."
?ELS9: EQUAL? PRSA,V?DISEMBARK \?ELS24
IN? PLAYER,RIGHT-END /?THN27
IN? PLAYER,LEFT-END \?ELS24
?THN27: LOC PLAYER
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?ELS24: EQUAL? PRSA,V?PUSH-DOWN \?ELS30
ZERO? PRSI \?ELS30
CALL ENDS-F
RSTACK
?ELS30: EQUAL? PRSA,V?TAKE \?ELS34
PRINT SPINACH
CRLF
RTRUE
?ELS34: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
CALL SLIDES-OFF
RSTACK
.FUNCT SLIDES-OFF
PRINTI "The "
CALL DPRINT,PRSO
PRINTI " slides off onto the ground."
CRLF
MOVE PRSO,HERE
RTRUE
.FUNCT PULLEY-PSEUDO
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The pulley is firmly attached to the ceiling."
.FUNCT PIPE-F
EQUAL? PRSA,V?UNTIE \?ELS5
PRINTR "You can't even loosen the knot because of the weight of the safe."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The "
CALL DPRINT,PIPE
PRINTI " runs along a wall of the bomb shelter"
ZERO? ROPE-LIFE /?CND8
PRINTI ". There is a rope tied to it"
?CND8: PRINTR "."
.FUNCT BS-SAFE-F
EQUAL? PRSA,V?TURN-RIGHT,V?TURN-LEFT \?ELS5
EQUAL? PRSI,INTNUM \?ELS5
FSET? BS-SAFE,ON-GROUND-BIT /?ELS12
PRINTR "You can't reach the safe from here."
?ELS12: GRTR? P-NUMBER,10 \?ELS19
PRINTR "The dial only goes to 10."
?ELS19: SET 'BS-SAFE-DIAL-NUMBER,P-NUMBER
PRINTI "You turn the dial to "
PRINTN BS-SAFE-DIAL-NUMBER
PRINTC 46
FSET? BS-SAFE,OPENBIT /?ELS24
ZERO? STEPS-THROUGH-BS-SAFE \?ELS24
EQUAL? PRSA,V?TURN-LEFT \?ELS24
EQUAL? BS-SAFE-DIAL-NUMBER,4 \?ELS24
SET 'STEPS-THROUGH-BS-SAFE,1
JUMP ?CND22
?ELS24: FSET? BS-SAFE,OPENBIT /?ELS28
EQUAL? STEPS-THROUGH-BS-SAFE,1 \?ELS28
EQUAL? PRSA,V?TURN-RIGHT \?ELS28
EQUAL? BS-SAFE-DIAL-NUMBER,5 \?ELS28
SET 'STEPS-THROUGH-BS-SAFE,2
JUMP ?CND22
?ELS28: FSET? BS-SAFE,OPENBIT /?ELS32
EQUAL? STEPS-THROUGH-BS-SAFE,2 \?ELS32
EQUAL? PRSA,V?TURN-LEFT \?ELS32
EQUAL? BS-SAFE-DIAL-NUMBER,7 \?ELS32
SET 'STEPS-THROUGH-BS-SAFE,3
FCLEAR BS-SAFE,LOCKEDBIT
PRINTI " You hear a faint click."
JUMP ?CND22
?ELS32: SET 'STEPS-THROUGH-BS-SAFE,0
?CND22: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?TURN-LEFT,V?TURN-RIGHT,V?TURN \?ELS38
FSET? BS-SAFE,ON-GROUND-BIT /?ELS43
PRINTR "You can't reach the safe from here."
?ELS43: EQUAL? PRSI,FALSE-VALUE,ROOMS \?ELS50
PRINTR "You didn't say what number you wanted to turn the dial to, or the direction."
?ELS50: EQUAL? PRSI,INTNUM \?ELS52
PRINTI "You didn't say whether you wanted to turn the dial RIGHT to "
PRINTN P-NUMBER
PRINTI " or LEFT to "
PRINTN P-NUMBER
PRINTR "."
?ELS52: PRINTR "Huh?"
?ELS38: EQUAL? PRSA,V?EXAMINE \?ELS56
PRINTI "The "
CALL DPRINT,BS-SAFE
PRINTI " is "
FSET? BS-SAFE,ON-GROUND-BIT \?ELS59
PRINTI "sitting on"
CALL TPRINT,LEFT-END
PRINTI ". There is a dial on the safe which can be set to any number between 0 and 10. The dial is set to "
PRINTN BS-SAFE-DIAL-NUMBER
JUMP ?CND57
?ELS59: PRINTI "suspended overhead by"
CALL APRINT,ROPE
?CND57: PRINTI ". There is a small plaque on the front of"
CALL TPRINT,BS-SAFE
PRINTI ". "
RFALSE
?ELS56: EQUAL? PRSA,V?CLOSE \FALSE
FSET? BS-SAFE,OPENBIT \FALSE
FSET BS-SAFE,LOCKEDBIT
RFALSE
.FUNCT PLAQUE-F
FSET? BS-SAFE,ON-GROUND-BIT /?ELS5
PRINTI "It's up too high. "
PRINT YOU-CANT
PRINTR "read it from here."
?ELS5: EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI " LEVY, REGAN, LEBLING
SAFE COMPANY
UPPER SANDUSKY, OHIO
1936"
CALL FIXED-FONT-OFF
RSTACK
.FUNCT CORPSE-LINE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
IN? CORPSE-LINE,FILM-PROJECTOR \?ELS10
FSET? FILM-PROJECTOR,ONBIT \?ELS10
CALL PERFORM,V?EXAMINE,PROJECTION-SCREEN
RTRUE
?ELS10: PRINTR "It's a copy of the film ""A Corpse Line,"" on a large film reel."
?ELS5: EQUAL? PRSA,V?TAKE \?ELS16
IN? CORPSE-LINE,FILM-PROJECTOR \FALSE
FSET? FILM-PROJECTOR,ONBIT \FALSE
PRINTI "Even a nonunion projectionist like yourself should know how dangerous it is to try to take film from"
CALL APRINT,FILM-PROJECTOR
PRINTR " while it's running."
?ELS16: EQUAL? PRSA,V?PUT \?ELS25
FSET? FILM-PROJECTOR,ONBIT \?ELS25
EQUAL? PRSI,FILM-PROJECTOR \?ELS25
PRINTI "You start to put"
CALL TPRINT,CORPSE-LINE
PRINTI " in"
CALL TPRINT,FILM-PROJECTOR
PRINTI ", but glance up at a sign on the wall. The sign states: Remember, Perry Projectionist sez, ""Never try to put film in"
CALL APRINT,FILM-PROJECTOR
PRINTR " that's turned on."""
?ELS25: EQUAL? PRSA,V?SHOW \FALSE
PRINTR "It is a little more complicated than that."
.FUNCT RUBBER-STAMP-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It's the large rubber stamp Buck Palace used to mail the POW's to the Pentagon in Uncle Buddy's ""Address Unknown."""
.FUNCT ROPE-F
EQUAL? PRSA,V?UNTIE,V?TIE,V?TAKE \?ELS5
EQUAL? ROPE-LIFE,1,2 \?ELS10
PRINTR "You'd burn your hand. It's on fire!"
?ELS10: PRINTI "You can't even loosen the knot because of the weight of"
CALL TRPRINT,BS-SAFE
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS14
EQUAL? ROPE-LIFE,2 \?ELS19
PRINTI "One end of"
CALL TPRINT,ROPE
PRINTI " is tied around"
CALL TPRINT,BS-SAFE
PRINTR " and the other end is tied to a pipe running along the wall."
?ELS19: EQUAL? ROPE-LIFE,1 \FALSE
PRINTI "The rope is burning and is tied to"
CALL TRPRINT,BS-SAFE
RSTACK
?ELS14: EQUAL? PRSA,V?PUT-UNDER \?ELS23
EQUAL? PRSO,WHITE-CANDLE,BLUE-CANDLE,RED-CANDLE \?ELS23
FSET? PRSO,FLAMEBIT \?ELS23
CALL PERFORM,V?BURN,ROPE,PRSO
RTRUE
?ELS23: EQUAL? PRSA,V?BURN \?ELS27
CALL SET-FLAME-SOURCE
ZERO? STACK \TRUE
FSET? PRSI,FLAMEBIT /?ELS34
PRINTR "Huh?"
?ELS34: LESS? ROPE-LIFE,3 \?ELS36
CALL ITS-ALREADY,STR?175
RSTACK
?ELS36: EQUAL? ROPE-LIFE,3 \FALSE
PRINTI "You touch the flame to the rope then pull it back. The rope catches fire and begins to burn."
CRLF
SET 'ROPE-LIFE,2
FSET ROPE,ONBIT
CALL QUEUE,I-ROPE-BURN,2
RSTACK
?ELS27: EQUAL? PRSA,V?PULL \?ELS40
FSET? BS-SAFE,ON-GROUND-BIT /?ELS40
PRINTI "You pull on"
CALL TPRINT,ROPE
PRINTR " but nothing happens."
?ELS40: EQUAL? PRSA,V?TIE \?ELS44
PRINT YOU-CANT
PRINTI " do that. The "
CALL DPRINT,ROPE
PRINTI " is already tied to"
CALL TRPRINT,BS-SAFE
RSTACK
?ELS44: EQUAL? PRSA,V?CLIMB-UP \FALSE
PRINTR "You climb the rope, almost reaching the safe, then lose your grip and drop to the ground."
.FUNCT I-ROPE-BURN
DEC 'ROPE-LIFE
ZERO? ROPE-LIFE \?ELS5
CRLF
CALL DEQUEUE,I-ROPE-BURN
CALL BURN-THROUGH-ROPE
RSTACK
?ELS5: CRLF
PRINTI "The "
CALL DPRINT,ROPE
PRINTI " continues to burn."
CRLF
CALL QUEUE,I-ROPE-BURN,-1
RTRUE
.FUNCT BURN-THROUGH-ROPE
EQUAL? HERE,TUNNEL /?THN4
EQUAL? HERE,LEDGE \?ELS3
?THN4: PRINTI "You hear a crash echo from the bomb shelter."
CRLF
JUMP ?CND1
?ELS3: EQUAL? HERE,BOMB-SHELTER \?CND1
PRINTI "As the flame burns through"
CALL TPRINT,ROPE
PRINTI " it snaps and"
CALL TPRINT,BS-SAFE
PRINTI " crashes down on"
CALL TPRINT,LEFT-END
LOC PLAYER
EQUAL? STACK,RIGHT-END \?ELS10
PRINTI ". The "
CALL DPRINT,RIGHT-END
PRINTI " catapults you up"
FSET? HATCH,OPENBIT \?ELS13
PRINTI " through the opening in the ceiling. The thrilling sensation of flying ends as you land on your feet on a cliff."
CRLF
CRLF
CALL GOTO,CLIFF
JUMP ?CND1
?ELS13: CALL JIGS-UP,STR?176
JUMP ?CND1
?ELS10: LOC PLAYER
EQUAL? STACK,LEFT-END \?ELS17
CALL JIGS-UP,STR?177
JUMP ?CND1
?ELS17: PRINTI ". The rope burns up and turns to ashes."
CRLF
?CND1: FSET BS-SAFE,ON-GROUND-BIT
SET 'ROPE-LIFE,0
FCLEAR ROPE,ONBIT
REMOVE ROPE
SET 'WHICH-END-IS-UP,RIGHT-END
RETURN WHICH-END-IS-UP
.FUNCT I-SUNRISE
FSET? HERE,OUTDOORSBIT /?THN6
GETP HERE,P?CAPACITY
EQUAL? STACK,20 \FALSE
?THN6: EQUAL? MOVES,547 \?ELS12
CALL QUEUE,I-SUNRISE,10
CALL DEQUEUE,I-NOISE
CRLF
PRINTR "The sun begins to rise over the colony."
?ELS12: EQUAL? MOVES,557 \FALSE
FSET GAME-ROOM,ONBIT
FSET SHORT-HALL,ONBIT
FSET OUTSIDE-PARLOR,ONBIT
FSET FOYER,ONBIT
FSET LIVING-ROOM,ONBIT
FSET KITCHEN,ONBIT
FSET DINING-ROOM,ONBIT
FSET BEDROOM-1,ONBIT
FSET BEDROOM-2,ONBIT
FSET BEDROOM-3,ONBIT
FSET UPSTAIRS-HALL-EAST,ONBIT
FSET UPSTAIRS-HALL-MIDDLE,ONBIT
FSET UPSTAIRS-HALL-WEST,ONBIT
CRLF
PRINTR "The sun rises in the sky, signalling a new day in Malibu."
.ENDI