1211 lines
36 KiB
Plaintext
1211 lines
36 KiB
Plaintext
"BSHELTER for ANTHILL (C)1986 Infocom Inc. All rights reserved."
|
|
|
|
"--- Matchbox ---"
|
|
|
|
<OBJECT MATCHBOX
|
|
(IN KITCHEN)
|
|
(DESC "matchbox")
|
|
(FDESC "Next to the sink is a matchbox.")
|
|
(SYNONYM BOX MATCHBOX)
|
|
(ADJECTIVE FESTIVE CHRISTMAS)
|
|
(FLAGS TAKEBIT CONTBIT SEARCHBIT BURNBIT)
|
|
(CAPACITY 3)
|
|
(SIZE 4)
|
|
(ACTION MATCHBOX-F)>
|
|
|
|
<ROUTINE MATCHBOX-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"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." CR>
|
|
;<TELL
|
|
"You see a picture of Santa Claus with his pants down, shooting a moon. Printed
|
|
below the picture: \"Festive matches courtesy of the CambridgePark Cafe. Close
|
|
box and pull up pants before striking.\"" CR>)
|
|
(<VERB? TAKE>
|
|
<FCLEAR ,MATCHBOX ,NDESCBIT>
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT WAX-COAT-1
|
|
(DESC "wax coating")
|
|
(SYNONYM WAX COATING)
|
|
(ADJECTIVE WAX) ;"SEM"
|
|
(FLAGS NDESCBIT)
|
|
(SIZE 1)
|
|
(GENERIC GENERIC-WAX-F)
|
|
(ACTION WAX-COAT-F)>
|
|
|
|
<OBJECT WAX-COAT-2
|
|
(DESC "wax coating")
|
|
(SYNONYM WAX COATING)
|
|
(ADJECTIVE WAX) ;"SEM"
|
|
(FLAGS NDESCBIT)
|
|
(SIZE 1)
|
|
(GENERIC GENERIC-WAX-F)
|
|
(ACTION WAX-COAT-F)>
|
|
|
|
<ROUTINE WAX-COAT-F ()
|
|
<COND (<AND <VERB? SCRAPE-OFF>
|
|
<PRSI? ,RED-MATCH ,GREEN-MATCH>
|
|
<FSET? ,PRSI ,WAXED-BIT>>
|
|
<FCLEAR ,PRSI ,WAXED-BIT>
|
|
<COND (T
|
|
;<AND <NOT <FSET? ,RED-MATCH ,WAXED-BIT>>
|
|
<NOT <FSET? ,GREEN-MATCH ,WAXED-BIT>>>
|
|
<COND (<IN? ,PRSO ,PRSI>
|
|
<REMOVE ,PRSO>)
|
|
(ELSE
|
|
<REMOVE ,WAX-COAT-2>)>)>
|
|
<TELL "You scrape the wax coating off" TR ,PRSI>)>>
|
|
|
|
<OBJECT RED-MATCH
|
|
(IN MATCHBOX)
|
|
(DESC "red match")
|
|
(SYNONYM MATCH MATCHES)
|
|
(ADJECTIVE RED WOODEN STICK)
|
|
(SIZE 1)
|
|
(FLAGS TAKEBIT BURNBIT CONTBIT OPENBIT SEARCHBIT)
|
|
(CAPACITY 1)
|
|
(MATCH-LIFE 2)
|
|
(ACTION MATCH-F)>
|
|
|
|
<OBJECT GREEN-MATCH
|
|
(IN BEACH)
|
|
(DESC "green match")
|
|
(FDESC "Lying near the fire is a green match.")
|
|
(SYNONYM MATCH MATCHES)
|
|
(ADJECTIVE GREEN WOODEN STICK)
|
|
(SIZE 1)
|
|
(FLAGS TAKEBIT BURNBIT CONTBIT SEARCHBIT OPENBIT)
|
|
(CAPACITY 1)
|
|
(MATCH-LIFE 2)
|
|
(ACTION MATCH-F)>
|
|
|
|
<ROUTINE MATCH-F ("AUX" WAXED)
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"It's the wooden, self-lighting variety of match. The " D ,PRSO>
|
|
<COND (<FSET? ,PRSO ,WAXED-BIT>
|
|
<TELL " head is coated with a thin layer of wax">)
|
|
(<FSET? ,PRSO ,WETBIT>
|
|
<TELL " is wet">)
|
|
(T
|
|
<TELL " is ">
|
|
<COND (<NOT <FSET? ,PRSO ,ONBIT>>
|
|
<TELL "not ">)>
|
|
<TELL "lit">)>
|
|
<TELL "." CR>)
|
|
(<VERB? LAMP-ON KILL>
|
|
<COND (<NOT <IN? ,PRSO ,PLAYER>>
|
|
<TELL "You're not holding" TR ,PRSO>)
|
|
(<FSET? ,PRSO ,FLAMEBIT>
|
|
<TELL "It's already lit." CR>)
|
|
(<ZERO? <GETP ,PRSO ,P?MATCH-LIFE>>
|
|
<TELL "You can't. It's all used up." CR>)
|
|
(<FSET? ,PRSO ,WETBIT>
|
|
<TELL "It's wet. It won't light now." CR>)
|
|
(<EQUAL? ,HERE ,IN-POOL-1 ,IN-POOL-2 ,UNDERPASS-1
|
|
,UNDERPASS-2>
|
|
<TELL
|
|
"Not even Uncle Buddy's best special effects men could light a match
|
|
under water!" CR>)
|
|
(<EQUAL? ,HERE ,ON-POOL-1 ,ON-POOL-2 ,INLET>
|
|
<TELL
|
|
"You'd better find some dry land first." CR>)
|
|
(T
|
|
<QUEUE I-MATCH-BURN -1>
|
|
;<MOVE ,PRSO ,PLAYER>
|
|
<FSET ,PRSO ,ONBIT>
|
|
<COND (<IN? ,WAX-COAT-1 ,PRSO>
|
|
<REMOVE ,WAX-COAT-1>)
|
|
(<IN? ,WAX-COAT-2 ,PRSO>
|
|
<REMOVE ,WAX-COAT-2>)>
|
|
<FSET ,PRSO ,FLAMEBIT>
|
|
<COND (<FSET? ,PRSO ,WAXED-BIT>
|
|
<FCLEAR ,PRSO ,WAXED-BIT>
|
|
<TELL
|
|
"The wax coating melts away as you light" TR ,PRSO>)
|
|
(T
|
|
<TELL "Okay," T ,PRSO " is now lit." CR>)>
|
|
<NOW-LIT?>
|
|
<RTRUE>)>)
|
|
(<VERB? LAMP-OFF>
|
|
<COND (<FSET? ,PRSO ,ONBIT>
|
|
<BLOW-OUT-MATCH ,PRSO>)
|
|
(T
|
|
<TELL "It's not lit." CR>)>)
|
|
(<VERB? OPEN CLOSE>
|
|
<CANT-OPEN-CLOSE>)>>
|
|
|
|
<ROUTINE I-MATCH-BURN ()
|
|
<COND (<FSET? ,RED-MATCH ,ONBIT>
|
|
<MATCH-BURN ,RED-MATCH>)>
|
|
<COND (<FSET? ,GREEN-MATCH ,ONBIT>
|
|
<MATCH-BURN ,GREEN-MATCH>)>>
|
|
|
|
<ROUTINE MATCH-BURN (OBJ)
|
|
<COND (<ZERO? <GETP .OBJ ,P?MATCH-LIFE>>
|
|
<BLOW-OUT-MATCH .OBJ T>)
|
|
(T
|
|
<PUTP .OBJ ,P?MATCH-LIFE <- <GETP .OBJ ,P?MATCH-LIFE> 1>>)>>
|
|
|
|
<ROUTINE BLOW-OUT-MATCH (OBJ "OPTIONAL" (ADD-CR <>))
|
|
<FCLEAR .OBJ ,ONBIT>
|
|
<FCLEAR .OBJ ,FLAMEBIT>
|
|
<COND (<AND <NOT <FSET? ,RED-MATCH ,ONBIT>>
|
|
<NOT <FSET? ,GREEN-MATCH ,ONBIT>>>
|
|
<DEQUEUE I-MATCH-BURN>)>
|
|
<COND (<VISIBLE? .OBJ>
|
|
<COND (.ADD-CR
|
|
<CRLF>)>
|
|
<TELL
|
|
"The " D .OBJ " goes out, turns to ashes, falls to the
|
|
ground and disappears." CR>
|
|
<SAY-IF-NOT-LIT>
|
|
<REMOVE .OBJ>)>>
|
|
|
|
<ROOM BOAT-DOCK
|
|
(IN ROOMS)
|
|
(DESC "Grotto")
|
|
(FLAGS RLANDBIT CAVEBIT ONBIT)
|
|
(WEST "If you want to swim, say so.")
|
|
(EAST "You bump into the wall of the cave.")
|
|
(NORTH PER WALKWAY-TO-BOAT-DOCK)
|
|
(SOUTH "You bump into the wall of the cave.")
|
|
(DOWN "If you want to swim, say so.")
|
|
(GLOBAL WATER)
|
|
(ACTION BOAT-DOCK-F)>
|
|
|
|
<ROUTINE BOAT-DOCK-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"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.">)>> ;"grotto or cavern?"
|
|
|
|
<OBJECT PORTABLE-WATER
|
|
(DESC "water")
|
|
(SYNONYM WATER)
|
|
(FLAGS NARTICLEBIT)
|
|
(ACTION PORTABLE-WATER-F)>
|
|
|
|
<ROUTINE PORTABLE-WATER-F ()
|
|
<COND (<VERB? SWIM ENTER>
|
|
<COND (<GLOBAL-IN? ,WATER ,HERE>
|
|
<PERFORM ,PRSA ,WATER>
|
|
<RTRUE>)
|
|
(ELSE
|
|
<TELL "You'd never fit into" T <LOC ,PORTABLE-WATER> "!" CR>)>)
|
|
(<VERB? DRINK DRINK-FROM TASTE>
|
|
<COND (<NOT-HOLDING-WATER?>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "You take a sip." CR>)>)
|
|
(<AND <VERB? THROW DROP EMPTY ;TAKE PUT-ON PUT POUR>
|
|
<PRSO? ,PORTABLE-WATER>>
|
|
<COND (<NOT-HOLDING-WATER?>;"is port-water in bucket?"
|
|
<RTRUE>)
|
|
(T
|
|
<REMOVE ,PORTABLE-WATER>
|
|
<FCLEAR ,PORTABLE-WATER ,NDESCBIT>
|
|
<SETG AMOUNT-OF-WATER 0>
|
|
<DEQUEUE I-DRIP>
|
|
<COND (<VERB? EMPTY>
|
|
<TELL "You pour the water out of the bucket." CR>
|
|
<RTRUE>)>
|
|
<COND (,PRSI
|
|
<FSET ,PRSI ,WETBIT>
|
|
<COND (<FSET? ,PRSI ,FLAMEBIT>
|
|
<FCLEAR ,PRSI ,FLAMEBIT>
|
|
<FCLEAR ,PRSI ,ONBIT>
|
|
<COND (<EQUAL? ,PRSI ,RED-CANDLE>
|
|
<STOP-RED-BURNING>)
|
|
(<EQUAL? ,PRSI ,WHITE-CANDLE>
|
|
<STOP-WHITE-BURNING>)
|
|
(<EQUAL? ,PRSI ,BLUE-CANDLE>
|
|
<STOP-BLUE-BURNING>)
|
|
(<EQUAL? ,PRSI
|
|
,GREEN-MATCH ,RED-MATCH>
|
|
<DEQUEUE I-MATCH-BURN>)>
|
|
<TELL
|
|
"You douse the flame with water." CR>
|
|
<RTRUE>)>
|
|
<TELL
|
|
"You pour water over it, making a mess." CR>)
|
|
(ELSE
|
|
<REMOVE ,PORTABLE-WATER>
|
|
<TELL
|
|
"The water pours out, making a mess." CR>)>)>)
|
|
(<AND <VERB? PUT PUT-ON>
|
|
<PRSI? ,PORTABLE-WATER>
|
|
<IN? ,PORTABLE-WATER ,BUCKET>>
|
|
<PERFORM ,V?PUT ,PRSO ,BUCKET>
|
|
<RTRUE>)
|
|
(<AND <VERB? GIVE>
|
|
<EQUAL? ,PRSO ,PORTABLE-WATER>
|
|
<FSET? ,PRSI ,ACTORBIT>>
|
|
<PERFORM ,V?POUR ,PORTABLE-WATER>
|
|
<RTRUE>)
|
|
(<VERB? LOOK-INSIDE SEARCH EXAMINE>
|
|
<PERFORM ,PRSA <LOC ,PORTABLE-WATER>>
|
|
<RTRUE>)>>
|
|
|
|
<OBJECT WATER
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "water")
|
|
(SYNONYM WATER OCEAN SEA POOL)
|
|
(ADJECTIVE SALT SEA)
|
|
(FLAGS NARTICLEBIT)
|
|
(ACTION WATER-F)>
|
|
|
|
<ROUTINE WATER-F ()
|
|
<COND (<EQUAL? ,HERE ,UPSTAIRS-BATHROOM ,KITCHEN
|
|
,LADIES-ROOM ,MENS-ROOM>
|
|
<TELL "Hmmm. It seems the water has been turned off." CR>)
|
|
(<VERB? DISEMBARK>
|
|
<DO-WALK ,P?OUT>
|
|
<RTRUE>)
|
|
(<VERB? SWIM ENTER>
|
|
<COND (<EQUAL? ,HERE ,NORTH-GARDEN> ;"put in pond-f?"
|
|
<TELL "The pond's too shallow for swimming." CR>
|
|
<RTRUE>)
|
|
(<FSET? ,SKIS ,WORNBIT>
|
|
<TELL ,DOG-PADDLE CR>
|
|
<RTRUE>)
|
|
(<ULTIMATELY-IN? ,LADDER>
|
|
<TELL
|
|
"You won't be able to swim carrying" TR ,LADDER>
|
|
<RTRUE>)
|
|
;(<G? <WEIGHT ,PLAYER> 20>
|
|
<TELL "You're holding too much to swim." CR>
|
|
<RTRUE>)
|
|
(<EQUAL? ,HERE ,INLET ,ON-POOL-1 ,IN-POOL-1
|
|
,UNDERPASS-1 ,UNDERPASS-2
|
|
,IN-POOL-2 ,ON-POOL-2>
|
|
<TELL "You swim a few yards." CR>
|
|
<RTRUE>)>
|
|
<ALL-WET ,PLAYER>
|
|
<TELL
|
|
"As you enter the chilly water, goose bumps cover your body and your teeth
|
|
chatter a bit." CR CR>
|
|
<COND (<IN? ,BUCKET ,PLAYER>
|
|
<MOVE ,PORTABLE-WATER ,BUCKET>
|
|
<QUEUE I-DRIP 1>)>
|
|
<COND (<EQUAL? ,HERE ,BOAT-DOCK>
|
|
<GOTO ,ON-POOL-1>)
|
|
(<EQUAL? ,HERE ,LEDGE>
|
|
<GOTO ,ON-POOL-2>)
|
|
(T
|
|
<GOTO ,INLET>)>
|
|
<COND (<AND <ULTIMATELY-IN? ,FLASHLIGHT>
|
|
<FSET? ,FLASHLIGHT ,ONBIT>>
|
|
<FCLEAR ,FLASHLIGHT ,ONBIT>
|
|
<TELL CR
|
|
"Oops! Your flashlight went out. The water ruined it." CR>)>
|
|
<COND (<AND <ULTIMATELY-IN? ,RED-CANDLE>
|
|
<FSET? ,RED-CANDLE ,ONBIT>>
|
|
<BLOW-OUT-CANDLE ,RED-CANDLE>)>
|
|
<COND (<AND <ULTIMATELY-IN? ,WHITE-CANDLE>
|
|
<FSET? ,WHITE-CANDLE ,ONBIT>>
|
|
<BLOW-OUT-CANDLE ,WHITE-CANDLE>)>
|
|
<COND (<AND <ULTIMATELY-IN? ,BLUE-CANDLE>
|
|
<FSET? ,BLUE-CANDLE ,ONBIT>>
|
|
<BLOW-OUT-CANDLE ,BLUE-CANDLE>)>
|
|
<COND (<AND <ULTIMATELY-IN? ,GREEN-MATCH>
|
|
<FSET? ,GREEN-MATCH ,FLAMEBIT>
|
|
<ULTIMATELY-IN? ,RED-MATCH>
|
|
<FSET? ,RED-MATCH ,FLAMEBIT>>
|
|
<FCLEAR ,RED-MATCH ,ONBIT>
|
|
<FCLEAR ,RED-MATCH ,FLAMEBIT>
|
|
<REMOVE ,RED-MATCH>
|
|
<FCLEAR ,GREEN-MATCH ,ONBIT>
|
|
<FCLEAR ,GREEN-MATCH ,FLAMEBIT>
|
|
<REMOVE ,GREEN-MATCH>
|
|
<TELL
|
|
"You drop the lit " D ,GREEN-MATCH " and the lit " D ,RED-MATCH "." CR>)>
|
|
<COND (<AND <ULTIMATELY-IN? ,RED-MATCH>
|
|
<FSET? ,RED-MATCH ,FLAMEBIT>>
|
|
<FCLEAR ,RED-MATCH ,ONBIT>
|
|
<FCLEAR ,RED-MATCH ,FLAMEBIT>
|
|
<REMOVE ,RED-MATCH>
|
|
<TELL "You drop the lit " D ,RED-MATCH "." CR>)>
|
|
<COND (<AND <ULTIMATELY-IN? ,GREEN-MATCH>
|
|
<FSET? ,GREEN-MATCH ,FLAMEBIT>>
|
|
<FCLEAR ,GREEN-MATCH ,ONBIT>
|
|
<FCLEAR ,GREEN-MATCH ,FLAMEBIT>
|
|
<REMOVE ,GREEN-MATCH>
|
|
<TELL
|
|
"You drop the lit " D ,GREEN-MATCH "." CR>)>
|
|
<RTRUE>)
|
|
(<AND <VERB? TAKE>
|
|
<EQUAL? ,PRSO ,WATER>
|
|
<IN? ,BUCKET ,PLAYER>>
|
|
<PERFORM ,V?FILL ,BUCKET ,WATER>
|
|
<RTRUE>)
|
|
(<AND <VERB? PUT>
|
|
<PRSI? ,WATER>>
|
|
<COND (<EQUAL? ,HERE ,NORTH-GARDEN>
|
|
<PERFORM ,V?PUT ,PRSO ,POND>
|
|
<RTRUE>)
|
|
(T
|
|
<REMOVE ,PRSO>
|
|
<TELL
|
|
"The " D ,PRSO " disappears into the ocean water." CR>)>)
|
|
(<VERB? LOOK-INSIDE>
|
|
<COND (<EQUAL? ,HERE ,NORTH-GARDEN>
|
|
<PERFORM ,V?LOOK-INSIDE ,POND>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "You see nothing unusual about sea water." CR>)>)
|
|
(<AND <VERB? DRINK>
|
|
<PRSO? ,WATER>>
|
|
<TELL "You take a sip." CR>)>>
|
|
|
|
<ROUTINE ALL-WET (THING "AUX" OBJ)
|
|
<FSET .THING ,WETBIT>
|
|
<SET OBJ <FIRST? .THING>>
|
|
<REPEAT ()
|
|
<COND (<ZERO? .OBJ>
|
|
<RETURN>)>
|
|
<FSET .OBJ ,WETBIT>
|
|
<COND (<FIRST? .OBJ>
|
|
<ALL-WET .OBJ>)>
|
|
<SET OBJ <NEXT? .OBJ>>>
|
|
<COND (<FSET? ,RED-MATCH ,WAXED-BIT>
|
|
<FCLEAR ,RED-MATCH ,WETBIT>)>
|
|
<COND (<FSET? ,GREEN-MATCH ,WAXED-BIT>
|
|
<FCLEAR ,GREEN-MATCH ,WETBIT>)>>
|
|
|
|
;<ROUTINE ALL-WET (THING "AUX" OBJ)
|
|
<SET OBJ <FIRST? .THING>>
|
|
<REPEAT ()
|
|
<COND (<ZERO? .OBJ>
|
|
<RETURN>)>
|
|
<FSET .OBJ ,WETBIT>
|
|
<COND (<FIRST? .OBJ>
|
|
<ALL-WET .OBJ>)>
|
|
<SET OBJ <NEXT? .OBJ>>>>
|
|
|
|
<ROOM ON-POOL-1
|
|
(IN ROOMS)
|
|
(DESC "Surface of Grotto Pool")
|
|
(LDESC
|
|
"You are swimming on the surface of the pool. The water sparkles,
|
|
reflecting the light coming in from an opening to the north. To the
|
|
east is a boat dock.")
|
|
(FLAGS RLANDBIT CAVEBIT ONBIT)
|
|
(WEST "You lose your footing and plunge back into the water.")
|
|
(EAST PER TO-BOAT-DOCK)
|
|
(OUT PER TO-BOAT-DOCK)
|
|
(UP PER TO-BOAT-DOCK)
|
|
(NORTH TO INLET)
|
|
(SOUTH "The walls are too steep to climb.")
|
|
(DOWN PER UNDER-WATER-F)
|
|
(GLOBAL WATER)>
|
|
|
|
<ROUTINE TO-BOAT-DOCK ()
|
|
<COND (<EQUAL? ,HERE ,ON-POOL-1>
|
|
<TELL
|
|
"You climb out of the pool and onto the boat dock. The night air makes you
|
|
shiver." CR CR>
|
|
,BOAT-DOCK)>>
|
|
|
|
<ROUTINE UNDER-WATER-F ()
|
|
<TELL "You take a deep breath then plunge down." CR CR>
|
|
<COND (<EQUAL? ,HERE ,ON-POOL-1>
|
|
<GOTO ,IN-POOL-1>)
|
|
(T
|
|
<GOTO ,IN-POOL-2>)>
|
|
;"eventually will need a which-room routine here."
|
|
;<V-LOOK>
|
|
<SETG BREATH 6>
|
|
<QUEUE I-BREATH -1>
|
|
<RFALSE>>
|
|
|
|
<GLOBAL BREATH 6>
|
|
|
|
<ROUTINE I-BREATH ()
|
|
<SETG BREATH <- ,BREATH 1>>
|
|
<COND (<EQUAL? ,BREATH 3>
|
|
<TELL CR
|
|
"You feel pressure building in your chest. You won't be able to hold
|
|
your breath much longer." CR>)
|
|
(<EQUAL? ,BREATH 2>
|
|
<TELL CR
|
|
"The pressure is increasing. Your feel as if your lungs are going to
|
|
rupture!" CR>)
|
|
(<EQUAL? ,BREATH 1>
|
|
<TELL CR
|
|
"You can't hold the air in your lungs any longer. You open your mouth and the
|
|
air bursts out." CR>)
|
|
(<ZERO? ,BREATH>
|
|
<TELL CR
|
|
"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." CR CR>
|
|
<GOTO ,BEACH>)>>
|
|
|
|
<ROOM IN-POOL-1
|
|
(IN ROOMS)
|
|
(DESC "Grotto, Underwater")
|
|
(LDESC
|
|
"As you swim underwater you can see faint light above you and
|
|
darkness below.")
|
|
(FLAGS RLANDBIT CAVEBIT ONBIT)
|
|
(UP PER OUT-OF-WATER-F)
|
|
(DOWN TO UNDERPASS-1)
|
|
(GLOBAL WATER)
|
|
;(ACTION IN-POOL-1-F)>
|
|
|
|
;"in pool desc mention less light, also mention more than just skeletons, too much of a give-away. also can you see the green of the water with just the full moon?"
|
|
|
|
;<ROUTINE IN-POOL-1-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"You are underwater. Through the green of the water you see">
|
|
<COND (<EQUAL? ,HERE <LOC ,SKELETONS>>
|
|
<TELL A ,SKELETONS " below you">)
|
|
(T
|
|
<TELL
|
|
D ,BONES " scattered all around an opening leading down">)>
|
|
<TELL "." CR>)>>
|
|
|
|
<ROUTINE OUT-OF-WATER-F ()
|
|
<DEQUEUE I-BREATH>
|
|
<TELL "You come to the surface and catch your breath." CR CR>
|
|
<COND (<EQUAL? ,HERE ,IN-POOL-1>
|
|
<RETURN ,ON-POOL-1>)
|
|
(<EQUAL? ,HERE ,IN-POOL-2>
|
|
<RETURN ,ON-POOL-2>)>>
|
|
|
|
<ROOM UNDERPASS-1
|
|
(IN ROOMS)
|
|
(DESC "Underwater Passage")
|
|
(LDESC
|
|
"You feel a mild current flowing east. You have to grit your teeth
|
|
to keep them from chattering in the cold water.")
|
|
(FLAGS RLANDBIT CAVEBIT ONBIT)
|
|
(WEST PER TO-UNDERPASS-WEST)
|
|
(UP TO IN-POOL-1)
|
|
(GLOBAL WATER)>
|
|
|
|
<ROUTINE TO-UNDERPASS-EAST ()
|
|
<TELL "You swim east through a narrow, jagged passage." CR CR>
|
|
<RETURN ,UNDERPASS-1>>
|
|
|
|
<ROUTINE TO-UNDERPASS-WEST ()
|
|
<TELL "You swim west through a narrow, jagged passage." CR CR>
|
|
<RETURN ,UNDERPASS-2>>
|
|
|
|
<ROOM UNDERPASS-2
|
|
(IN ROOMS)
|
|
(DESC "Underwater Passage")
|
|
(LDESC ;"say dark and cold here"
|
|
"You feel a current coming from above and flowing east through the passage.")
|
|
(FLAGS RLANDBIT CAVEBIT ONBIT)
|
|
(UP TO IN-POOL-2)
|
|
(EAST PER TO-UNDERPASS-EAST)
|
|
(GLOBAL WATER)>
|
|
|
|
;<ROOM UNDERPASS-3
|
|
(IN ROOMS)
|
|
(DESC "Underwater Passage")
|
|
(LDESC
|
|
"The passage heads east into darkness. Above you there is an exit leading to
|
|
the pool in the grotto.") ;"could you see any off this?"
|
|
(FLAGS RLANDBIT CAVEBIT)
|
|
(EAST PER TO-UNDERPASS-EAST)
|
|
(UP TO IN-POOL-2)
|
|
(GLOBAL WATER)>
|
|
|
|
<ROOM IN-POOL-2
|
|
(IN ROOMS)
|
|
(DESC "Underwater")
|
|
(FLAGS RLANDBIT CAVEBIT ONBIT)
|
|
(UP PER OUT-OF-WATER-F)
|
|
(DOWN TO UNDERPASS-2)
|
|
(GLOBAL WATER)
|
|
(ACTION IN-POOL-2-F)>
|
|
|
|
<ROUTINE IN-POOL-2-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"You are swimming underwater. In the darkness, you can't make out your
|
|
surroundings here.">
|
|
<COND (<LIT? ,ON-POOL-2>
|
|
<TELL
|
|
" However you do notice a faint light above you.">)>
|
|
<RTRUE>
|
|
;<CRLF>)>>
|
|
|
|
<ROOM ON-POOL-2
|
|
(IN ROOMS)
|
|
(DESC "Surface of Pool")
|
|
(FLAGS RLANDBIT CAVEBIT)
|
|
(NORTH TO LEDGE)
|
|
(OUT "That's for you to figure out.")
|
|
(SOUTH
|
|
"Feeling the wall with your hands you find there's no way out in this
|
|
direction.")
|
|
(EAST
|
|
"With your hands you feel the eastern wall of the cave. You can't get out to
|
|
the east.") ;"change all these defaults"
|
|
(WEST "The cave wall prevents any further westward movement.")
|
|
(DOWN PER UNDER-WATER-F)
|
|
(GLOBAL WATER)
|
|
(ACTION ON-POOL-2-F)>
|
|
|
|
<ROUTINE ON-POOL-2-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL "You are swimming on the surface of a pool ">
|
|
<COND (<LIT? ,HERE>
|
|
<TELL
|
|
"inside a small grotto. To the north is a small ledge.">)
|
|
(T
|
|
<TELL
|
|
"in the dark. From the sound of your breathing you can tell this is a
|
|
fairly small area.">)>)>>
|
|
|
|
<ROOM LEDGE
|
|
(IN ROOMS)
|
|
(DESC "Ledge")
|
|
(LDESC
|
|
"You're on a wet, narrow ledge in a dripping underground cave. There is a
|
|
pool of blackness to the south and a tunnel leads north.")
|
|
(FLAGS RLANDBIT CAVEBIT)
|
|
(NORTH TO TUNNEL)
|
|
(DOWN "If you want to swim, say so.")
|
|
(SOUTH "If you want to swim, say so.")
|
|
(GLOBAL WATER)>
|
|
|
|
<ROOM TUNNEL
|
|
(IN ROOMS)
|
|
(DESC "Tunnel")
|
|
(LDESC
|
|
"Your soggy footsteps echo through the long, slimy corridor which runs up,
|
|
towards a dry area, and south, toward dripping noises.")
|
|
(SOUTH TO LEDGE)
|
|
(UP TO BOMB-SHELTER)
|
|
(GLOBAL ROPE)
|
|
(FLAGS RLANDBIT CAVEBIT)>
|
|
|
|
|
|
"--- Bomb Shelter ---"
|
|
|
|
<ROOM BOMB-SHELTER
|
|
(IN ROOMS)
|
|
(DESC "Bomb Shelter")
|
|
(DOWN TO TUNNEL)
|
|
(SOUTH TO TUNNEL)
|
|
(UP PER TO-&-FROM-BOMB-SHELTER)
|
|
(GLOBAL HATCH PLANK HATCH-HOLE)
|
|
(FLAGS RLANDBIT CAVEBIT LOCKEDBIT)
|
|
(THINGS <PSEUDO (<> PULLEY PULLEY-PSEUDO)>)
|
|
(ACTION BOMB-SHELTER-F)>
|
|
|
|
<ROUTINE BOMB-SHELTER-F (RARG)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"With its concrete walls and floor this room looks as if it might be
|
|
a bomb shelter. A heavy-duty sawhorse has" A ,PLANK " across it. ">
|
|
<COND (<FSET? ,BS-SAFE ,ON-GROUND-BIT>
|
|
<TELL
|
|
"A " D ,BS-SAFE " is on" T ,LEFT-END>)
|
|
(T
|
|
<TELL
|
|
"Suspended above the left end of the plank by" A ,ROPE>
|
|
<COND (<EQUAL? ,ROPE-LIFE 1 2>
|
|
<TELL ", which is burning,">)>
|
|
<TELL
|
|
" is" A ,BS-SAFE ". 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">)>
|
|
<TELL ". In the ceiling above" T ,RIGHT-END " there is a">
|
|
<COND (<FSET? ,HATCH ,OPENBIT>
|
|
<TELL "n open">)
|
|
(T
|
|
<TELL " closed">)>
|
|
<TELL
|
|
" hatch. A long chain hangs down from" T ,HATCH ". Just beneath" T ,HATCH "
|
|
there is a ">
|
|
<COND (<FSET? ,LADDER ,HUNG-BIT>
|
|
<TELL D ,LADDER " hanging from a ">)>
|
|
<TELL
|
|
"pair of heavy-duty metal hooks protruding from the wall. There is a
|
|
doorway leading south.">)
|
|
(<AND <EQUAL? .RARG ,M-BEG>
|
|
<VERB? HANG-UP>
|
|
<NOT ,PRSI>>
|
|
<PERFORM ,V?HANG-UP ,PRSO ,HOOKS>
|
|
<RTRUE>)>>
|
|
|
|
<OBJECT SAWHORSE
|
|
(IN BOMB-SHELTER)
|
|
(DESC "sawhorse")
|
|
(SYNONYM SAWHORSE)
|
|
(ADJECTIVE HEAVY) ;"SEM heavy-duty?"
|
|
(FLAGS NDESCBIT)>
|
|
|
|
<OBJECT HATCH
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "hatch")
|
|
(SYNONYM HATCH)
|
|
(ADJECTIVE STEEL)
|
|
(FLAGS DOORBIT NDESCBIT)
|
|
(ACTION HATCH-F)>
|
|
|
|
<ROUTINE HATCH-F ()
|
|
<COND (<AND <VERB? PUT>
|
|
<PRSI? ,HATCH>>
|
|
<COND (<FSET? ,HATCH ,OPENBIT>
|
|
<PERFORM ,V?PUT ,PRSO ,HATCH-HOLE>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "The hatch is closed!" CR>)>)
|
|
(<AND <VERB? OPEN>
|
|
<NOT <FSET? ,HATCH ,OPENBIT>>>
|
|
<COND (<EQUAL? ,HERE ,BOMB-SHELTER>
|
|
<TELL "That's for you to figure out." CR>)
|
|
(T
|
|
<TELL
|
|
"There doesn't seem to be any way to open it from this side." CR>)>)
|
|
(<AND <VERB? EXAMINE>
|
|
<FSET? ,HATCH ,OPENBIT>>
|
|
<TELL
|
|
"The " D ,HATCH " is open, revealing a hole about the size of a manhole." CR>
|
|
<RTRUE>)
|
|
(<AND <VERB? CLOSE>
|
|
<FSET? ,HATCH ,OPENBIT>>
|
|
<COND (<EQUAL? ,HERE ,BOMB-SHELTER>
|
|
<TELL "That's for you to figure out." CR>)
|
|
(T
|
|
<FCLEAR ,HATCH ,OPENBIT>
|
|
<FSET ,HATCH-HOLE ,INVISIBLE>
|
|
;<COND (<FSET? ,LADDER ,HUNG-BIT>
|
|
<MOVE ,LADDER ,BOMB-SHELTER>)>
|
|
<TELL
|
|
"With a show of strength which would make Aunt Hildegarde proud, you manage to
|
|
close the heavy hatch." CR>)>)
|
|
(<VERB? ENTER>
|
|
<COND (<EQUAL? ,HERE ,CLIFF>
|
|
<DO-WALK ,P?DOWN>)
|
|
(T
|
|
<DO-WALK ,P?UP>)>)>>
|
|
|
|
<OBJECT CHAIN
|
|
(IN BOMB-SHELTER)
|
|
(DESC "long, greasy chain")
|
|
(SYNONYM CHAIN)
|
|
(ADJECTIVE LONG GREASY)
|
|
(FLAGS NDESCBIT TRYTAKEBIT)
|
|
(ACTION CHAIN-F)>
|
|
|
|
<ROUTINE CHAIN-F ()
|
|
<COND (<VERB? PULL CLIMB-UP>
|
|
<TELL "You pull on the " D ,CHAIN>
|
|
<COND (<VERB? CLIMB-UP>
|
|
<TELL " as you attempt to climb">)>
|
|
<TELL " and" T ,HATCH>
|
|
<COND (<FSET? ,HATCH ,OPENBIT>
|
|
<TELL " drops, covering the">
|
|
<FCLEAR ,HATCH ,OPENBIT>
|
|
<FSET ,HATCH-HOLE ,INVISIBLE>)
|
|
(T
|
|
<TELL " pops up, revealing a">
|
|
<FSET ,HATCH ,OPENBIT>
|
|
<FCLEAR ,HATCH-HOLE ,INVISIBLE>)>
|
|
<TELL " hole in the ceiling.">
|
|
<COND (<VERB? CLIMB-UP>
|
|
<TELL
|
|
" The chain is too slippery to climb.">)>
|
|
<CRLF>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The " D ,CHAIN " hangs down to about eye-level from the hatch above." CR>)
|
|
(<VERB? TAKE>
|
|
<TELL
|
|
"You can't take the chain; it's attached to the hatch." CR>)>>
|
|
|
|
"--- Plank ends ---"
|
|
|
|
<OBJECT LEFT-END
|
|
(IN BOMB-SHELTER)
|
|
(DESC "left end of the plank")
|
|
(SYNONYM END PLANK BOARD)
|
|
(ADJECTIVE LEFT ;ED)
|
|
(FLAGS NDESCBIT VEHBIT CONTBIT OPENBIT SEARCHBIT)
|
|
(GENERIC GENERIC-PLANK-F)
|
|
(ACTION ENDS-F)> ;"why contbit and no capacity?"
|
|
|
|
<OBJECT RIGHT-END
|
|
(IN BOMB-SHELTER)
|
|
(DESC "right end of the plank")
|
|
(SYNONYM END PLANK BOARD)
|
|
(ADJECTIVE RIGHT)
|
|
(FLAGS NDESCBIT VEHBIT CONTBIT OPENBIT SEARCHBIT)
|
|
(GENERIC GENERIC-PLANK-F)
|
|
(ACTION ENDS-F)>
|
|
|
|
<GLOBAL WHICH-END-IS-UP RIGHT-END>
|
|
|
|
<ROUTINE ENDS-F ("OPTIONAL" (RARG <>))
|
|
<COND (<AND <EQUAL? .RARG ,M-BEG>
|
|
<TOUCHING? ,PRSO>
|
|
<NOT <ULTIMATELY-IN? ,PRSO <LOC ,PLAYER>>>>
|
|
<TELL ,YOU-CANT
|
|
"reach it from here. You'll have to step off" T <LOC ,PLAYER> " first." CR>
|
|
<RTRUE>)
|
|
(.RARG
|
|
<RFALSE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL "The " D ,PRSO " is ">
|
|
<COND (<OR <AND <PRSO? ,RIGHT-END>
|
|
<EQUAL? ,WHICH-END-IS-UP ,RIGHT-END>>
|
|
<AND <PRSO? ,LEFT-END>
|
|
<EQUAL? ,WHICH-END-IS-UP ,LEFT-END>>>
|
|
<TELL "in the air">)
|
|
(T
|
|
<TELL "on the ground">)>
|
|
<TELL "." CR>)
|
|
(<AND <VERB? PUSH-DOWN LOWER>
|
|
<NOT ,PRSI>>
|
|
<COND (<NOT <EQUAL? ,PRSO ,WHICH-END-IS-UP>>
|
|
<ITS-ALREADY "down">)
|
|
(<FSET? ,BS-SAFE ,ON-GROUND-BIT>
|
|
<TELL
|
|
"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." CR>)
|
|
(<EQUAL? ,PRSO <LOC ,PLAYER>>
|
|
<TELL
|
|
"How can you do that to" T ,PRSO " when you're standing on it?" CR>)
|
|
(<AND <EQUAL? ,PRSO ,WHICH-END-IS-UP>
|
|
<OR <IN? ,PLAYER ,LEFT-END>
|
|
<IN? ,PLAYER ,RIGHT-END>>>
|
|
<TELL
|
|
"You can't lower" T ,PRSO " when you're standing on" TR <LOC ,PLAYER>>)
|
|
(T
|
|
<TELL "You push down the ">
|
|
<COND (<EQUAL? ,WHICH-END-IS-UP ,RIGHT-END>
|
|
<SETG WHICH-END-IS-UP ,LEFT-END>
|
|
<TELL "right">)
|
|
(T
|
|
<SETG WHICH-END-IS-UP ,RIGHT-END>
|
|
<TELL "left">)>
|
|
<TELL
|
|
" end of the plank and the other end goes up." CR>)>)
|
|
(<AND <VERB? RAISE>
|
|
<NOT ,PRSI>>
|
|
<COND (<EQUAL? ,PRSO ,WHICH-END-IS-UP>
|
|
<ITS-ALREADY "in the air">)
|
|
(<EQUAL? ,PRSO <LOC ,PLAYER>>
|
|
<TELL
|
|
"How can you raise" T ,PRSO " when you're standing on it?" CR>)
|
|
(<AND <EQUAL? ,PRSO ,LEFT-END>
|
|
<FSET? ,BS-SAFE ,ON-GROUND-BIT>>
|
|
<TELL
|
|
"You can't raise the left end when the safe is on it." CR>)
|
|
(T
|
|
<TELL "You raise the ">
|
|
<COND (<EQUAL? ,WHICH-END-IS-UP ,RIGHT-END>
|
|
<SETG WHICH-END-IS-UP ,LEFT-END>
|
|
<TELL "left">)
|
|
(T
|
|
<SETG WHICH-END-IS-UP ,RIGHT-END>
|
|
<TELL "right">)>
|
|
<TELL
|
|
" end of the plank and the other end goes down." CR>)>)
|
|
(<VERB? STAND-ON CLIMB-ON>
|
|
<COND (<EQUAL? ,WHICH-END-IS-UP ,PRSO>
|
|
<IN-AIR>)
|
|
(<FSET? ,BS-SAFE ,ON-GROUND-BIT>
|
|
<TELL
|
|
,YOU-CANT "do that. The " D ,BS-SAFE " is already there." CR>)
|
|
(<FSET? ,SKIS ,WORNBIT>
|
|
<TELL
|
|
"You step onto" T ,PLANK " but ski right off." CR>)
|
|
(T
|
|
<PERFORM ,V?BOARD ,PRSO>
|
|
<RTRUE>)>)
|
|
(<VERB? PUT PUT-ON>
|
|
<SLIDES-OFF>)>>
|
|
|
|
<ROUTINE IN-AIR ()
|
|
<TELL "It's in the air. How can you stand on it?" CR>>
|
|
|
|
|
|
"--- Plank ---"
|
|
|
|
<OBJECT PLANK
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "heavy wooden plank")
|
|
(SYNONYM ;END PLANK BOARD)
|
|
(ADJECTIVE WOODEN HEAVY)
|
|
(FLAGS NDESCBIT TRYTAKEBIT)
|
|
(GENERIC GENERIC-PLANK-F)
|
|
(ACTION PLANK-F)>
|
|
|
|
<ROUTINE GENERIC-PLANK-F ()
|
|
<COND (<VERB? STAND-ON CLIMB-ON>
|
|
<RFALSE>) ;"asks which end you mean?"
|
|
(T
|
|
,PLANK)>>
|
|
|
|
<ROUTINE PLANK-F ()
|
|
<COND (<AND <VERB? STAND-ON CLIMB-ON>
|
|
<NOT ,LIT>>
|
|
<TOO-DARK>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The " D ,PLANK " is about 12 feet long and several inches thick. The
|
|
right end of the plank is ">
|
|
<COND (<EQUAL? ,WHICH-END-IS-UP ,RIGHT-END>
|
|
<TELL "in the air ">)
|
|
(T
|
|
<TELL "on the ground ">)>
|
|
<TELL "and the left end is ">
|
|
<COND (<EQUAL? ,WHICH-END-IS-UP ,RIGHT-END>
|
|
<TELL "on the ground">
|
|
<COND (<FSET? ,BS-SAFE ,ON-GROUND-BIT>
|
|
<TELL " with" A ,BS-SAFE " sitting on it">)>)
|
|
(T
|
|
<TELL "in the air">)>
|
|
<TELL "." CR>
|
|
<RTRUE>)
|
|
(<AND <VERB? DISEMBARK>
|
|
<OR <IN? ,PLAYER ,RIGHT-END>
|
|
<IN? ,PLAYER ,LEFT-END>>>
|
|
<PERFORM ,V?DISEMBARK <LOC ,PLAYER>>
|
|
<RTRUE>)
|
|
(<AND <VERB? PUSH-DOWN> ;"what does this do?"
|
|
<NOT ,PRSI>>
|
|
<ENDS-F>)
|
|
(<VERB? TAKE>
|
|
<TELL ,SPINACH CR>)
|
|
(<VERB? PUT PUT-ON>
|
|
<SLIDES-OFF>)>>
|
|
|
|
<ROUTINE SLIDES-OFF ()
|
|
<TELL "The " D ,PRSO " slides off onto the ground." CR>
|
|
<MOVE ,PRSO ,HERE>>
|
|
|
|
<ROUTINE PULLEY-PSEUDO ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL "The pulley is firmly attached to the ceiling." CR>)>>
|
|
|
|
<OBJECT PIPE
|
|
(IN BOMB-SHELTER)
|
|
(DESC "pipe")
|
|
(SYNONYM PIPE)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION PIPE-F)>
|
|
|
|
<ROUTINE PIPE-F ()
|
|
<COND (<VERB? UNTIE>
|
|
<TELL
|
|
"You can't even loosen the knot because of the weight of the safe." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The " D ,PIPE " runs along a wall of the bomb shelter">
|
|
<COND (<NOT <EQUAL? ,ROPE-LIFE 0>>
|
|
<TELL ". There is a rope tied to it">)>
|
|
<TELL "." CR>)>>
|
|
|
|
<OBJECT BS-SAFE
|
|
(IN BOMB-SHELTER)
|
|
(DESC "safe")
|
|
(SYNONYM DIAL SAFE)
|
|
(ADJECTIVE BIG)
|
|
(FLAGS TRYTAKEBIT NDESCBIT CONTBIT LOCKEDBIT SEARCHBIT)
|
|
(CAPACITY 33)
|
|
(ACTION BS-SAFE-F)>
|
|
|
|
<GLOBAL STEPS-THROUGH-BS-SAFE 0>
|
|
|
|
<GLOBAL BS-SAFE-DIAL-NUMBER 3>
|
|
|
|
;"Safe combo- Left 4, Right 5, Left 7"
|
|
|
|
<ROUTINE BS-SAFE-F ()
|
|
<COND (<AND <VERB? TURN-LEFT TURN-RIGHT>
|
|
<PRSI? ,INTNUM>>
|
|
<COND (<NOT <FSET? ,BS-SAFE ,ON-GROUND-BIT>>
|
|
<TELL "You can't reach the safe from here." CR>)
|
|
(T
|
|
<COND ;(<EQUAL? ,P-NUMBER ,BS-SAFE-DIAL-NUMBER>
|
|
<TELL
|
|
"It's already set to " N ,BS-SAFE-DIAL-NUMBER "." CR>)
|
|
(<G? ,P-NUMBER 10>
|
|
<TELL "The dial only goes to 10." CR>)
|
|
(T
|
|
<SETG BS-SAFE-DIAL-NUMBER ,P-NUMBER>
|
|
<TELL
|
|
"You turn the dial to " N ,BS-SAFE-DIAL-NUMBER ".">
|
|
<COND (<AND <NOT <FSET? ,BS-SAFE ,OPENBIT>>
|
|
<EQUAL? ,STEPS-THROUGH-BS-SAFE 0>
|
|
<VERB? TURN-LEFT>
|
|
<EQUAL? ,BS-SAFE-DIAL-NUMBER 4>>
|
|
<SETG STEPS-THROUGH-BS-SAFE 1>)
|
|
(<AND <NOT <FSET? ,BS-SAFE ,OPENBIT>>
|
|
<EQUAL? ,STEPS-THROUGH-BS-SAFE 1>
|
|
<VERB? TURN-RIGHT>
|
|
<EQUAL? ,BS-SAFE-DIAL-NUMBER 5>>
|
|
<SETG STEPS-THROUGH-BS-SAFE 2>)
|
|
(<AND <NOT <FSET? ,BS-SAFE ,OPENBIT>>
|
|
<EQUAL? ,STEPS-THROUGH-BS-SAFE 2>
|
|
<VERB? TURN-LEFT>
|
|
<EQUAL? ,BS-SAFE-DIAL-NUMBER 7>>
|
|
<SETG STEPS-THROUGH-BS-SAFE 3>
|
|
<FCLEAR ,BS-SAFE ,LOCKEDBIT>
|
|
;<FSET ,BS-SAFE ,OPENBIT>
|
|
<TELL
|
|
" You hear a faint click.">)
|
|
(T
|
|
<SETG STEPS-THROUGH-BS-SAFE 0>)>
|
|
<CRLF>)>)>)
|
|
(<VERB? TURN TURN-RIGHT TURN-LEFT>
|
|
<COND (<NOT <FSET? ,BS-SAFE ,ON-GROUND-BIT>>
|
|
<TELL "You can't reach the safe from here." CR>)
|
|
(T
|
|
<COND (<EQUAL? ,PRSI <> ,ROOMS>
|
|
<TELL
|
|
"You didn't say what number you wanted to turn the dial to, or the direction."
|
|
CR>)
|
|
(<EQUAL? ,PRSI ,INTNUM>
|
|
<TELL
|
|
"You didn't say whether you wanted to turn the dial RIGHT to "
|
|
N ,P-NUMBER " or LEFT to " N ,P-NUMBER "." CR>)
|
|
(T
|
|
<TELL "Huh?" CR>)>)>)
|
|
(<VERB? EXAMINE>
|
|
<TELL "The " D ,BS-SAFE " is ">
|
|
<COND (<FSET? ,BS-SAFE ,ON-GROUND-BIT>
|
|
<TELL
|
|
"sitting on" T ,LEFT-END ". There is a dial on the safe which can be set to
|
|
any number between 0 and 10. The dial is set to " N ,BS-SAFE-DIAL-NUMBER>)
|
|
(T
|
|
<TELL "suspended overhead by" A ,ROPE>)>
|
|
<TELL
|
|
". There is a small plaque on the front of" T ,BS-SAFE ". ">
|
|
<RFALSE>)
|
|
(<AND <VERB? CLOSE>
|
|
<FSET? ,BS-SAFE ,OPENBIT>>
|
|
<FSET ,BS-SAFE ,LOCKEDBIT>
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT PLAQUE
|
|
(IN BOMB-SHELTER)
|
|
(DESC "plaque")
|
|
(SYNONYM PLAQUE)
|
|
(FLAGS READBIT NDESCBIT)
|
|
;(TEXT
|
|
" LEVY, REGAN, LEBLING~
|
|
SAFE COMPANY~
|
|
UPPER SANDUSKY, OHIO~
|
|
1936")
|
|
(ACTION PLAQUE-F)>
|
|
|
|
<ROUTINE PLAQUE-F ()
|
|
<COND (<NOT <FSET? ,BS-SAFE ,ON-GROUND-BIT>>
|
|
<TELL
|
|
"It's up too high. " ,YOU-CANT "read it from here." CR>)
|
|
(<VERB? READ>
|
|
<FIXED-FONT-ON>
|
|
<TELL
|
|
" LEVY, REGAN, LEBLING~
|
|
SAFE COMPANY~
|
|
UPPER SANDUSKY, OHIO~
|
|
1936">
|
|
<FIXED-FONT-OFF>)>>
|
|
|
|
;<OBJECT BS-SAFE-DIAL
|
|
(IN BOMB-SHELTER)
|
|
(DESC "dial")
|
|
(SYNONYM DIAL)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION BS-SAFE-DIAL-F)> ;"SEM could I just use an ldesc here?"
|
|
|
|
;<ROUTINE BS-SAFE-DIAL-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<COND (<FSET? ,BS-SAFE ,ON-GROUND-BIT>
|
|
<TELL
|
|
"The " D ,DIAL " can be set to any number between 0 and 100." CR>)
|
|
(T
|
|
<TELL
|
|
"It's too high up to make out any detail." CR>)>)>>
|
|
|
|
<OBJECT CORPSE-LINE
|
|
(IN BS-SAFE)
|
|
(DESC "copy of the film \"A Corpse Line\"")
|
|
(SYNONYM CORPSE LINE FILM MOVIE)
|
|
(ADJECTIVE REEL COPY CORPSE)
|
|
(SIZE 10)
|
|
(VALUE 10)
|
|
(FLAGS TAKEBIT)
|
|
(ACTION CORPSE-LINE-F)>
|
|
|
|
<ROUTINE CORPSE-LINE-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<COND (<AND <IN? ,CORPSE-LINE ,FILM-PROJECTOR>
|
|
<FSET? ,FILM-PROJECTOR ,ONBIT>>
|
|
<PERFORM ,V?EXAMINE ,PROJECTION-SCREEN>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL
|
|
"It's a copy of the film \"A Corpse Line,\" on a large film reel." CR>)>)
|
|
(<VERB? TAKE>
|
|
<COND (<AND <IN? ,CORPSE-LINE ,FILM-PROJECTOR>
|
|
<FSET? ,FILM-PROJECTOR ,ONBIT>>
|
|
<TELL
|
|
"Even a nonunion projectionist like yourself should know how dangerous
|
|
it is to try to take film from" A ,FILM-PROJECTOR " while it's running."
|
|
CR>)>)
|
|
(<AND <VERB? PUT>
|
|
<FSET? ,FILM-PROJECTOR ,ONBIT>
|
|
<PRSI? ,FILM-PROJECTOR>>
|
|
<TELL
|
|
"You start to put" T ,CORPSE-LINE " in" T ,FILM-PROJECTOR ", but glance
|
|
up at a sign on the wall. The sign states: Remember, Perry Projectionist
|
|
sez, \"Never try to put film in" A ,FILM-PROJECTOR " that's turned
|
|
on.\"" CR>)
|
|
(<VERB? SHOW>
|
|
<TELL "It is a little more complicated than that." CR>)>>
|
|
|
|
<ROUTINE RUBBER-STAMP-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL
|
|
"It's the large rubber stamp Buck Palace used to mail the POW's to the
|
|
Pentagon in Uncle Buddy's \"Address Unknown.\"" CR>)>>
|
|
|
|
|
|
"--- Rope ---"
|
|
|
|
<OBJECT ROPE
|
|
(IN BOMB-SHELTER)
|
|
(DESC "rope")
|
|
(SYNONYM ROPE)
|
|
(FLAGS ;TAKEBIT TRYTAKEBIT NDESCBIT BURNBIT)
|
|
;(SIZE 10)
|
|
(ACTION ROPE-F)>
|
|
|
|
<GLOBAL ROPE-LIFE 3>
|
|
|
|
<ROUTINE ROPE-F ()
|
|
<COND (<VERB? TAKE TIE UNTIE>
|
|
<COND (<EQUAL? ,ROPE-LIFE 1 2>
|
|
<TELL "You'd burn your hand. It's on fire!" CR>)
|
|
(T
|
|
<TELL
|
|
"You can't even loosen the knot because of the weight of" TR ,BS-SAFE>)>)
|
|
(<VERB? EXAMINE>
|
|
<COND (<EQUAL? ,ROPE-LIFE 2>
|
|
<TELL
|
|
"One end of" T ,ROPE " is tied around" T ,BS-SAFE" and the other end is tied to
|
|
a pipe running along the wall." CR>)
|
|
(<EQUAL? ,ROPE-LIFE 1>
|
|
<TELL
|
|
"The rope is burning and is tied to" TR ,BS-SAFE>)>)
|
|
(<AND <VERB? PUT-UNDER>
|
|
<PRSO? ,RED-CANDLE ,BLUE-CANDLE ,WHITE-CANDLE>
|
|
<FSET? ,PRSO ,FLAMEBIT>>
|
|
<PERFORM ,V?BURN ,ROPE ,PRSO>
|
|
<RTRUE>)
|
|
(<VERB? BURN>
|
|
<COND (<SET-FLAME-SOURCE>
|
|
<RTRUE>)
|
|
(<NOT <FSET? ,PRSI ,FLAMEBIT>>
|
|
<TELL "Huh?" CR>)
|
|
(<L? ,ROPE-LIFE 3>
|
|
<ITS-ALREADY "burning">)
|
|
(<EQUAL? ,ROPE-LIFE 3>
|
|
<TELL
|
|
"You touch the flame to the rope then pull it back. The rope catches fire and
|
|
begins to burn." CR>
|
|
<SETG ROPE-LIFE 2>
|
|
<FSET ,ROPE ,ONBIT>
|
|
<QUEUE I-ROPE-BURN 2>)>)
|
|
(<AND <VERB? PULL>
|
|
<NOT <FSET? ,BS-SAFE ,ON-GROUND-BIT>>>
|
|
<TELL
|
|
"You pull on" T ,ROPE " but nothing happens." CR>)
|
|
(<VERB? TIE>
|
|
<TELL
|
|
,YOU-CANT" do that. The " D ,ROPE " is already tied to" TR ,BS-SAFE>)
|
|
(<VERB? CLIMB-UP>
|
|
<TELL
|
|
"You climb the rope, almost reaching the safe, then lose your grip and
|
|
drop to the ground." CR>)
|
|
(T
|
|
<RFALSE>)>> ;"why rfalse here?"
|
|
|
|
<ROUTINE I-ROPE-BURN ()
|
|
<SETG ROPE-LIFE <- ,ROPE-LIFE 1>>
|
|
<COND (<ZERO? ,ROPE-LIFE>
|
|
<CRLF>
|
|
<DEQUEUE I-ROPE-BURN>
|
|
<BURN-THROUGH-ROPE>)
|
|
(T
|
|
<TELL CR "The " D ,ROPE " continues to burn." CR>
|
|
<QUEUE I-ROPE-BURN -1>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE BURN-THROUGH-ROPE ()
|
|
<COND (<OR <EQUAL? ,HERE ,TUNNEL>
|
|
<EQUAL? ,HERE ,LEDGE>>
|
|
<TELL "You hear a crash echo from the bomb shelter." CR>)
|
|
(<EQUAL? ,HERE ,BOMB-SHELTER>
|
|
<TELL
|
|
"As the flame burns through" T ,ROPE " it snaps and" T ,BS-SAFE " crashes down
|
|
on" T ,LEFT-END>
|
|
<COND (<EQUAL? <LOC ,PLAYER> ,RIGHT-END>
|
|
<TELL ". The " D ,RIGHT-END " catapults you up">
|
|
<COND (<FSET? ,HATCH ,OPENBIT>
|
|
<TELL
|
|
" through the opening in the ceiling. The thrilling sensation of flying ends
|
|
as you land on your feet on a cliff." CR CR>
|
|
<GOTO ,CLIFF>)
|
|
(T
|
|
<JIGS-UP
|
|
|
|
". Unfortunately the hatch was closed. Your body crumples like an empty
|
|
beer can at a frat party as you smash into the closed hatch. You black
|
|
out as your body hits the ground with a plop!">)>)
|
|
(<EQUAL? <LOC ,PLAYER> ,LEFT-END>
|
|
<JIGS-UP
|
|
". Unfortunately you were standing on the left end of the plank.">)
|
|
(T
|
|
;"Not on either end of the plank"
|
|
<TELL ". The rope burns up and turns to ashes." CR>)>)>
|
|
<FSET ,BS-SAFE ,ON-GROUND-BIT>
|
|
<SETG ROPE-LIFE 0>
|
|
<FCLEAR ,ROPE ,ONBIT>
|
|
<REMOVE ,ROPE>
|
|
<SETG WHICH-END-IS-UP ,RIGHT-END>>
|
|
|
|
<ROUTINE I-SUNRISE ()
|
|
<COND (<OR <FSET? ,HERE ,OUTDOORSBIT>
|
|
<EQUAL? <GETP ,HERE ,P?CAPACITY> 20>>
|
|
<COND (<EQUAL? ,MOVES 547> ;"6:07 A.M."
|
|
<QUEUE I-SUNRISE 10>
|
|
<DEQUEUE I-NOISE>
|
|
<TELL CR
|
|
"The sun begins to rise over the colony." CR>)
|
|
(<EQUAL? ,MOVES 557>
|
|
<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>
|
|
<TELL CR
|
|
"The sun rises in the sky, signalling a new day in Malibu." CR>)>)>>
|
|
|
|
|