infidel/camp.zil

2338 lines
67 KiB
Plaintext

"CAMP"
<ROUTINE GET-LOST-FCN ("AUX" (OFFS -3))
<COND (<NOT <GETP ,HERE ,P?ENDLESS>>
<RFALSE>)>
<REPEAT ()
<SET OFFS <+ .OFFS 3>>
<COND (<G? .OFFS 54>
<RETURN>)
(T
<COND (<EQUAL? ,HERE <GET ,MAP-TBL .OFFS>>
<SETG SECS-LON <GET ,MAP-TBL <+ .OFFS 1>>>
<SETG SECS-LAT <GET ,MAP-TBL <+ .OFFS 2>>>)>)>>
<SETG DEGS-LON 32>
<SETG DEGS-LAT 24>
<SETG MINS-LON 12>
<SETG MINS-LAT 11>
<SETG DESERT-LOC <GETP ,HERE ,P?ENDLESS>>
<CHANGE-DESERT-POSITION>
<FCLEAR ,ENDLESS-DESERT ,TOUCHBIT>
<RETURN ,ENDLESS-DESERT>>
<OBJECT NASTY-CROC
(IN RIVER-BANK)
(DESC "crocodile")
(FLAGS NDESCBIT TOUCHBIT DONTTAKE)
(SYNONYM CROC CROCS CROCOD REPTIL)
(ACTION CROC-FCN)>
<ROUTINE CROC-FCN ()
<COND (<AND <EQUAL? ,PRSI ,NASTY-CROC>
<VERB? THROW>>
<PERFORM ,V?PUT ,PRSO ,NILE-RIBBAH>
<RTRUE>)>>
<OBJECT NILE-RIBBAH
(IN RIVER-BANK)
(DESC "Nile")
(FLAGS NDESCBIT TOUCHBIT CONTBIT OPENBIT DONTTAKE)
(CAPACITY 1000)
(SYNONYM RIVER NILE)
(ACTION GET-WET-FCN)>
<ROUTINE GET-WET-FCN ()
<COND (<VERB? THROUGH>
<PERFORM ,V?SWIM ,NILE-RIBBAH>
<RTRUE>)
(<VERB? DROP>
<PERFORM ,V?LEAVE>
<RTRUE>)
(<VERB? LOOK-INSIDE EXAMINE>
<TELL "Hmmm. Looks potable. And dangerous." CR>
<RTRUE>)
(<VERB? OPEN CLOSE>
<HOW? ,PRSO>
<RTRUE>)
(<AND <PRSO? ,NILE-RIBBAH>
<VERB? DRINK>>
<PERFORM ,V?DRINK-FROM ,PRSO>
<RTRUE>)
(<AND <EQUAL? ,PRSI ,NILE-RIBBAH>
<VERB? PUT>>
<COND (<EQUAL? ,PRSO ,WINNER>
<PERFORM ,V?SWIM>
<RFATAL>)
(T
<REMOVE ,PRSO>
<SETG P-IT-LOC <>>
<TELL "The " D ,PRSO " quickly ">
<COND (<HEAVY?>
<TELL "sinks">)
(T <TELL "floats away on the current">)>
<TELL
". Another example of your fine management abilities." CR>
<RTRUE>)>)>>
<ROUTINE HEAVY? ("OPTIONAL" (OBJ <>))
<COND (<NOT .OBJ>
<SET OBJ ,PRSO>)>
<COND (<OR <EQUAL? .OBJ ,FOLDED-COT ,BROKEN-LOCK ,ROCK>
<EQUAL? .OBJ ,STONE-KEY ,PICK-AXE ,SHOVEL>
<EQUAL? .OBJ ,ROPE ,CRATE ,BLACK-BOX>
<EQUAL? .OBJ ,TORCH ,OIL-JAR>
<GETP .OBJ ,P?BRICK>>
<RTRUE>)
(<AND <EQUAL? .OBJ ,KNAPSACK>
<G? <WEIGHT ,KNAPSACK> 15>>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT THICKETS
(IN LOCAL-GLOBALS)
(DESC "thicket")
(FLAGS NDESCBIT DONTTAKE)
(SYNONYM THICKE)
(TEXT
"They're about as yielding as you were with your helpers. What else can I say
about them?")>
<OBJECT FIREPIT
(IN FIRE)
(FLAGS NDESCBIT TOUCHBIT CONTBIT OPENBIT DONTTAKE TRANSBIT)
(DESC "pit")
(SYNONYM PIT)
(ADJECTIVE CHARRE)
(CAPACITY 200)
(ACTION FIREPIT-FCN)>
<OBJECT ROCK
(IN FIRE)
(FLAGS NDESCBIT TAKEBIT)
(DESC "blackened rock")
(SYNONYM ROCK STONE)
(ADJECTIVE BLACKE)
(ACTION TAKE-ROCK-FCN)>
<ROUTINE TAKE-ROCK-FCN ()
<COND (<VERB? TAKE>
<FCLEAR ,ROCK ,NDESCBIT>
<PUTP ,MATCHES ,P?FDESC
"Sitting by the firepit is a matchbook.">
<RFALSE>)>>
<ROUTINE FIREPIT-FCN ()
<COND (<VERB? OPEN CLOSE>
<HOW? ,PRSO>)
(<VERB? THROUGH>
<TELL "There's no need to get yourself all dirty." CR>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL "The pit's just a pit. Nothing more. ">
<COND (<FIRST? ,PIT>
<TELL "Sitting in the pit is ">
<PRINT-CONTENTS ,PIT>)
(T
<TELL "The pit is empty">)>
<TELL "." CR>
<RTRUE>)>>
<OBJECT TENT-OBJ
(IN LOCAL-GLOBALS)
(FLAGS NDESCBIT TOUCHBIT DONTTAKE)
(DESC "tent")
(SYNONYM TENT)
(ADJECTIVE YOUR SUPPLY WORK)
(ACTION ENTER-TENT-FCN)>
<ROUTINE ENTER-TENT-FCN ()
<COND (<AND <VERB? DROP DISEMBARK>
<PRSO? ,TENT-OBJ>
<IN-A-TENT?>>
<PERFORM ,V?LEAVE>
<RTRUE>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,P2 ,P4 ,P7>
<RFALSE>)
(<IN-A-TENT?>
<TELL
"Looks like a canvas tent to me." CR>
<RTRUE>)
(<NOT <GETP ,HERE ,P?MAP>>
<TELL "Get serious." CR>
<RTRUE>)
(T <TELL "I can't see it from here!" CR>)>)
(<VERB? LOOK-INSIDE>
<PERFORM ,V?LOOK-INSIDE ,FLAPS>
<RTRUE>)
(<VERB? LAMP-ON>
<TELL "I don't think that striking the tent would do any good." CR>
<RTRUE>)
(<NOT <VERB? THROUGH BOARD>>
<RFALSE>)
(<NOT <GETP ,HERE ,P?MAP>>
<TELL "Get serious." CR>
<RTRUE>)
(<IN-A-TENT?>
<TELL
"What are those canvas walls around you? Just where do you think you are? Maybe
I should send for Craige, eh?" CR>
<RTRUE>)
(<EQUAL? ,HERE ,P2 ,P7 ,P4>
<PERFORM ,V?ENTER>
<RTRUE>)
(ELSE
<TELL "You can't enter the tent from here." CR>
<RTRUE>)>>
<OBJECT PYRAMID
(FLAGS NDESCBIT TOUCHBIT)
(DESC "pyramid")
(SYNONYM PYRAMI)
(ACTION ENTER-PYRAMID-FCN)>
<ROUTINE ENTER-PYRAMID-FCN ()
<COND (<AND <VERB? DROP>
<EQUAL? ,HERE ,CHAMBER-OF-RA>>
<PERFORM ,V?LEAVE>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<COND (<AND <NOT ,PYRAMID-OPENED>
<IN? ,ROCK-LOCK ,HERE>>
<TELL
"There's not much to see of it yet -- just the tip of it is exposed showing the
block and its small opening." CR>)
(<AND ,PYRAMID-OPENED
<EQUAL? ,HERE ,EX8>>
<TELL
"You can see down into what looks like a large chamber." CR>)
(<GETP ,HERE ,P?MAP>
<TELL "You can't see any pyramid here." CR>)
(T
<TELL "Where do you think you are, Times Square?" CR>)>
<RTRUE>)
(<AND <VERB? OPEN> <NOT ,PYRAMID-OPENED> <IN? ,ROCK-LOCK ,HERE>>
<TELL "The stone blocks don't move." CR> <RTRUE>)
(<VERB? OPEN> <TELL "It looks open to me." CR> <RTRUE>)
(<AND <EQUAL? ,PYRAMID ,PRSI>
<EQUAL? ,HERE ,EX8>
<VERB? PUT THROW>
,PYRAMID-OPENED>
<TELL "You hear the " D ,PRSO " fall down below." CR>
<FSET ,PRSO ,TOUCHBIT>
<FCLEAR ,PRSO ,NDESCBIT>
<COND (<EQUAL? ,PRSO ,KNAPSACK>
<FCLEAR ,PRSO ,WEARBIT>
<FSET ,PRSO ,OPENBIT>)>
<MOVE ,PRSO ,CHAMBER-OF-RA>
<RTRUE>)
(<NOT <VERB? THROUGH>>
<RFALSE>)
(<NOT <GETP ,HERE ,P?MAP>>
<TELL "Get serious. Let's find it first." CR>
<RTRUE>)
(<EQUAL? ,HERE ,EX8>
<PERFORM ,V?ENTER>
<RTRUE>)
(ELSE
<TELL "You can't enter the pyramid from here." CR>
<RTRUE>)>>
<ROOM RIVER-BANK
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "River Bank")
(LDESC
"You are on the bank of the river Nile. The shoreline is sandy and cool, and
reeds wave in a light but warm breeze. Directly to the north and the south
thickets make strolling along the bank impossible. You're hot, and the cool
rippling water to the west looks inviting, but you're not alone in that
thought -- crocodiles bask on the west bank, eyeing you hungrily, just
waiting for you to enter their watery domain. Things were never like this when
Craige was around.")
(EAST TO P1)
(NORTH "The thickets chew on your skin as you attempt to make a path through them. You finally give up.")
(SOUTH "The thickets chew on your skin as you attempt to make a path through them. You finally give up.")
(WEST "Can't you see the crocs? If you insist on entering the water, you'll have to swim.")
(NW "Can't you see the crocs? If you insist on entering the water, you'll have to swim.")
(SW "Can't you see the crocs? If you insist on entering the water, you'll have to swim.")
(OUT TO P1)
(MAP 1)
(GLOBAL TENT-OBJ SAND HOLE GLOBAL-WATER THICKETS)
(CAPACITY 0)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM P1
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Near the Nile")
(LDESC
"You are on an east/west path on the north side of the encampment. A path to
the south starts here, and you can see the riverbank clearly to the west. A
warm, light breeze reaches your face, drying your sweat into a thin mask of
salt. You glance to the north and are greeted by a disheartening sight: an
endless stretch of searing desert.")
(NORTH PER GET-LOST-FCN)
(NE PER GET-LOST-FCN)
(NW PER GET-LOST-FCN)
(WEST TO RIVER-BANK)
(EAST TO P2)
(SOUTH TO P4)
(SE TO FIRE)
(SW "Some thickets near the river chew on your skin as you attempt to make a path through them. You finally give up.")
(MAP 2)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 1)
(ENDLESS 651)
(ACTION CREATE-THIRST-FCN)>
<ROOM P2
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Outside Your Tent")
(LDESC
"You are on an east/west path on the north side of the encampment. To the south
you can see a firepit and to the north is the entrance to your tent. Everything
is oddly quiet, unsettling, creating a feeling of floating anxiety. The
stillness seems to enhance the eerie quality of the desert, the feeling of
being truly alone.")
(NORTH TO TENT)
(IN TO TENT)
(WEST TO P1)
(EAST TO P3)
(NW PER GET-LOST-FCN)
(NE PER GET-LOST-FCN)
(SW TO P4)
(SE TO P5)
(SOUTH TO FIRE)
(MAP 3)
(GLOBAL TENT-OBJ SAND HOLE FLAPS)
(CAPACITY 3)
(ENDLESS 652)
(ACTION CREATE-THIRST-FCN)>
<ROOM TENT
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Your Tent")
(LDESC
"You are in your tent. Golden rays of the sun filter through the open tent
flaps on the southern wall, but no breeze makes its way through. The dry,
searing heat in the tent would be bearable if only the air stirred, even a
little.")
(SOUTH TO P2)
(OUT TO P2)
(MAP 4)
(GLOBAL TENT-OBJ SAND HOLE FLAPS)
(CAPACITY 0)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM P3
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Northern Path")
(LDESC
"You are on an east/west path on the northern side of the encampment. To the
east you can see the sites of previous excavations your workers had
begun before they deserted you. Low, gentle sand dunes roll out of sight to
the north, but your camp's eastern border has a path, heading off to the south,
which starts here.")
(NORTH PER GET-LOST-FCN)
(NW PER GET-LOST-FCN)
(NE PER GET-LOST-FCN)
(EAST TO EX1)
(SE TO EX4)
(SOUTH TO P5)
(SW TO FIRE)
(WEST TO P2)
(MAP 1)
(ACTION CREATE-THIRST-FCN)
(GLOBAL TENT-OBJ SAND HOLE)
(ENDLESS 653)
(CAPACITY 2)>
<ROOM SUPPLY-TENT
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Supply Tent")
(LDESC
"You are in a tent, very much like your own -- a tent which had originally
contained the supplies for your expedition. You notice, however, that most of
the items which were here just yesterday have vanished with your workers. The
tent looks as if it's been cleaned out and, as your stomach growls, the empty
tent ironically reminds you of a turkey carcass picked clean after a huge
Thanksgiving meal. Through the open tent flaps to the east you can see the
firepit. If only one of the workers had remained behind, you would make him
pay.")
(EAST TO P4)
(OUT TO P4)
(MAP 1)
(GLOBAL TENT-OBJ SAND HOLE FLAPS)
(CAPACITY 0)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM P4
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Outside Supply Tent")
(LDESC
"You're on a north/south path on the west edge of the encampment. Directly to
the west is the supply tent, its flaps open, still in the hot, quiet air. To
the east you can see the central firepit, a reminder of your being alone. A row
of thickets, impossible to make any progress through even with a machete,
grows along the western edge of the camp directly to the north and south of the
tent.")
(NORTH TO P1)
(NE TO P2)
(NW "The thickets chew on your skin as you attempt to make a path through them. You finally give up.")
(SW "The thickets chew on your skin as you attempt to make a path through them. You finally give up.")
(WEST TO SUPPLY-TENT)
(IN TO SUPPLY-TENT)
(SOUTH TO P6)
(EAST TO FIRE)
(SE TO P7)
(MAP 1)
(ACTION CREATE-THIRST-FCN)
(GLOBAL TENT-OBJ SAND HOLE FLAPS THICKETS)
(CAPACITY 1)>
<ROOM FIRE
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Fire Pit")
(LDESC
"You are in the center of the encampment, standing before a charred pit, a hole
dug in the sand surrounded by blackened rocks. The night breezes have already
started the reclamation work of the desert, covering most of the pit's bottom.
You can see your tent to the north, the work tent to the south, and the supply
tent to the west. Far off to the east, through the heat waves rising off the
shifting sands, you can see gentle, rolling dunes.")
(NORTH TO P2)
(NE TO P3)
(EAST TO P5)
(SE TO P8)
(SOUTH TO P7)
(SW TO P6)
(WEST TO P4)
(NW TO P1)
(MAP 1)
(ACTION CREATE-THIRST-FCN)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 0)>
<OBJECT ROCK-S
(IN FIRE)
(FLAGS DONTTAKE NDESCBIT TRYTAKEBIT)
(DESC "blackened rocks")
(SYNONYM ROCKS)
(ADJECTIVE BLACKE)
(TEXT "They form a ring around the firepit.")>
<ROOM P5
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Middle Path")
(LDESC
"You are at the eastern edge of an east/west path in the middle of the camp.
To the west you can see the firepit and beyond that the supply tent. To the
east you can see the desert -- a vista difficult to avoid seeing from just
about anywhere in the camp. A north/south path intersects here, traveling along
the eastern border of the camp.")
(NORTH TO P3)
(NE TO EX1)
(EAST TO EX4)
(SE TO EX7)
(SOUTH TO P8)
(SW TO P7)
(WEST TO FIRE)
(NW TO P2)
(MAP 2)
(ACTION CREATE-THIRST-FCN)
(ENDLESS 706)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 4)>
<ROOM P6
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Southern Path")
(LDESC
"You are at the west edge of an east/west path on the southern side of the
encampment. Directly to the west is a heavy growth of thickets, making any
attempt at western movement a painful and futile task. Through the thickets you
can hear the sound of water running gently by.")
(NORTH TO P4)
(NE TO FIRE)
(EAST TO P7)
(SE PER GET-LOST-FCN)
(SOUTH PER GET-LOST-FCN)
(SW PER GET-LOST-FCN)
(WEST "You scratch yourself on the thickets as you attempt this.")
(NW "You scratch yourself on the thickets as you attempt this.")
(MAP 2)
(ACTION CREATE-THIRST-FCN)
(GLOBAL TENT-OBJ SAND HOLE THICKETS)
(ENDLESS 751)
(CAPACITY 0)>
<ROOM P7
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Outside Work Tent")
(LDESC
"You are on an east/west path, directly to the north of the work tent. To the
north you can see the firepit and, beyond that, your tent. The work tent
borders an endless vista of fine, burning sand stretching out to the south.")
(NORTH TO FIRE)
(NE TO P5)
(EAST TO P8)
(SE PER GET-LOST-FCN)
(SOUTH TO TENT2)
(SW PER GET-LOST-FCN)
(WEST TO P6)
(NW TO P4)
(IN TO TENT2)
(MAP 2)
(ACTION CREATE-THIRST-FCN)
(GLOBAL TENT-OBJ SAND HOLE FLAPS)
(ENDLESS 752)
(CAPACITY 1)>
<ROOM P8
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Southern Path")
(LDESC
"You are at the start of a path which heads north along the eastern border of
the encampment. To the east you can see the horror and the beauty which brought
you here, the desert sand and its hidden treasure. The firepit is visible to
the northwest.")
(NORTH TO P5)
(NE TO EX4)
(EAST TO EX7)
(SE PER GET-LOST-FCN)
(SOUTH PER GET-LOST-FCN)
(SW PER GET-LOST-FCN)
(WEST TO P7)
(NW TO FIRE)
(MAP 2)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 2)
(ENDLESS 753)
(ACTION CREATE-THIRST-FCN)>
<ROOM TENT2
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Work Tent")
(LDESC "You are in a tent which used to house the workers and
their personal effects. Looking around, taking in the stripped and bare
surroundings, you feel surprised that they even left the canvas walls.
You quickly realize that they took what they needed -- taking everything
would have been more trouble than it was worth. From the looks of things
they cleared out quickly but quietly.")
(NORTH TO P7)
(OUT TO P7)
(GLOBAL TENT-OBJ SAND HOLE FLAPS)
(CAPACITY 0)
(MAP 2)
(ACTION DESCRIBE-HOLE-FCN)>
<ROUTINE CREATE-THIRST-FCN (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<SETG THIRST <+ ,THIRST 6>>
<RFALSE>)
(<EQUAL? .RARG ,M-BEG>
<SETG THIRST <+ ,THIRST 1>>
<RFALSE>)
(<EQUAL? .RARG ,M-LOOK>
<DESCRIBE-HOLE-FCN ,M-LOOK>)>>
<ROOM EX1
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are in the broiling sands of the desert, a short distance from the camp.
Off to the west you can just make out a slight discoloration in the sand, the
start of an east/west path which borders the northern edge of the camp.")
(NORTH PER GET-LOST-FCN)
(NE PER GET-LOST-FCN)
(EAST TO EX2)
(SE TO EX5)
(SOUTH TO EX4)
(SW TO P5)
(WEST TO P3)
(NW PER GET-LOST-FCN)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 3)
(MAP 2)
(DESERT 1)
(ENDLESS 654)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX2
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are in the desert, almost out of sight of the encampment, your only link
with civilization. You are just close enough to make out a tiny dot on the
western horizon which could be one of the tents. The searing sand is making
walking a difficult and painful experience, something alien to you.")
(NORTH PER GET-LOST-FCN)
(NE PER GET-LOST-FCN)
(EAST TO EX3)
(SE TO EX6)
(SOUTH TO EX5)
(SW TO EX4)
(WEST TO EX1)
(NW PER GET-LOST-FCN)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 2)
(MAP 1)
(DESERT 1)
(ENDLESS 655)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX3
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are deep in desert, the encampment little more than a memory. You think
for a moment, closing your eyes, trying to picture the coolness of the Nile,
the comfort of your cot, and are overcome with doubts. When you open your eyes
again you are greeted with the same nightmare: All around you, all you can see
for mile after mile is sand and more sand.")
(NORTH PER GET-LOST-FCN)
(NE PER GET-LOST-FCN)
(EAST PER GET-LOST-FCN)
(SE PER GET-LOST-FCN)
(SOUTH TO EX6)
(SW TO EX5)
(WEST TO EX2)
(NW PER GET-LOST-FCN)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 1)
(MAP 2)
(DESERT 1)
(ENDLESS 656)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX4
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are in the desert, still within sight of the encampment, just a tiny
oasis to the west. The tents, shimmering behind the heat waves rising from the
sand, seem to be calling you back, beckoning, offering safety and refuge.")
(NORTH TO EX1)
(NE TO EX2)
(EAST TO EX5)
(SE TO EX8)
(SOUTH TO EX7)
(SW TO P8)
(WEST TO P5)
(NW TO P3)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 1)
(MAP 1)
(DESERT 1)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX5
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are standing on the top of a sand dune, looking all around at a place on
Earth where man was never meant to be. That is the only conclusion you can draw
as you force yourself to breathe the hot, arid air of the desert through your
nose. Breathing through your mouth makes you instantly thirsty, a dangerous
state to find yourself in while surrounded by sand. You curse Craige, then
find yourself cursing Ellingsworth, too.")
(NORTH TO EX2)
(NE TO EX3)
(EAST TO EX6)
(SE TO EX9)
(SOUTH TO EX8)
(SW TO EX7)
(WEST TO EX4)
(NW TO EX1)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 2)
(MAP 2)
(DESERT 1)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX6
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are deep into the desert, as deep as anyone in his right mind would ever
care to venture. A small but strong gust of wind reaches your face, pelting you
with grains of sand so small they remind you of fine sugar. Even with your lips
tightly closed, the wind manages to drive a few grains into your mouth. You are
thankful that none got into your eyes.")
(NORTH TO EX3)
(NE PER GET-LOST-FCN)
(EAST PER GET-LOST-FCN)
(SE PER GET-LOST-FCN)
(SOUTH TO EX9)
(SW TO EX8)
(WEST TO EX5)
(NW TO EX2)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 3)
(MAP 2)
(DESERT 1)
(ENDLESS 706)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX7
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are in the desert, east of the encampment. From this distance the camp
seems little more than a mirage, an image of another reality which has little
to do with the brutal, searing reality of the desert, your quickly dehydrating
body, or your painfully broiling feet.")
(NORTH TO EX4)
(NE TO EX5)
(EAST TO EX8)
(SE PER GET-LOST-FCN)
(SOUTH PER GET-LOST-FCN)
(SW PER GET-LOST-FCN)
(WEST TO P8)
(NW TO P5)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 1)
(MAP 2)
(DESERT 1)
(ENDLESS 754)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX8
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are in the desert, out of sight of the encampment. You are thankful
there's no wind, even though a cooling breeze would be welcomed, since the
fine sand particles would sting your face and hands. All around is the desert,
a sweeping expanse of disheartening sand.")
(NORTH TO EX5)
(NE TO EX6)
(EAST TO EX9)
(SE PER GET-LOST-FCN)
(SOUTH PER GET-LOST-FCN)
(SW PER GET-LOST-FCN)
(WEST TO EX7)
(NW TO EX4)
(DOWN TO CHAMBER-OF-RA IF PYRAMID-OPENED)
(IN TO CHAMBER-OF-RA IF PYRAMID-OPENED)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 1)
(MAP 2)
(DESERT 1)
(ENDLESS 755)
(ACTION DESCRIBE-HOLE-FCN)>
<ROOM EX9
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "Desert")
(LDESC
"You are far into the desert, sand and more sand stretching out endlessly
around you in all directions. You think of going back, of giving up this
attempt at riches, but what awaits you back in the States? What is there worth
going back to, with nothing to show for this quest? And how could you go back
now, after the things you'd said to Craige? You glance around
at the rolling dunes and force back the fear eating away your confidence.")
(NORTH TO EX6)
(NE PER GET-LOST-FCN)
(EAST PER GET-LOST-FCN)
(SE PER GET-LOST-FCN)
(SOUTH PER GET-LOST-FCN)
(SW PER GET-LOST-FCN)
(WEST TO EX8)
(NW TO EX5)
(GLOBAL TENT-OBJ SAND HOLE)
(CAPACITY 1)
(MAP 1)
(DESERT 1)
(ENDLESS 756)
(ACTION DESCRIBE-HOLE-FCN)>
<ROUTINE DESCRIBE-HOLE-FCN (RARG "AUX" DEPTH)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL <GETP ,HERE ,P?LDESC>>
<SET DEPTH <GETP ,HERE ,P?CAPACITY>>
<COND (<AND <G? .DEPTH 5>
<EQUAL? ,HERE ,EX8>>
<CRLF>
<RTRUE>)
(<G? .DEPTH 0>
<TELL " There's a" <GET ,DESC-HOLE-LTBL .DEPTH>
" in the sand, a remnant of your excavation attempts.">)>
<COND (<EQUAL? ,HERE ,ENDLESS-DESERT>
<COND (<G? ,THIRST 300>
<TELL " " <PICK-ONE ,SPACE-TALES-LTBL>>)
(ELSE
<COND (<PROB 50>
<COND (<PROB 35>
<TELL " "
<PICK-ONE ,SPACE-TALES-LTBL>>)
(T <TELL " "
<PICK-ONE ,MIRAGE-LTBL>>)>)>)>)
(<GETP ,HERE ,P?DESERT>
<COND (<G? ,THIRST 300>
<TELL " " <PICK-ONE ,MIRAGE-LTBL>>)
(ELSE
<COND (<PROB 20>
<TELL " " <PICK-ONE ,MIRAGE-LTBL>>)>)>)>
<CRLF>
<RTRUE>)
(<EQUAL? .RARG ,M-ENTER>
<SETG THIRST <+ ,THIRST 15>>
<RFALSE>)
(<EQUAL? .RARG ,M-BEG>
<SETG THIRST <+ ,THIRST 3>>
<RFALSE>)>>
<GLOBAL DESC-HOLE-LTBL
<LTABLE " small hole"
"n enlarged hole"
" sizable hole"
" knee-deep hole"
" deep hole">>
<GLOBAL SPACE-TALES-LTBL
<LTABLE
"You hear a whirring overhead and look up in time to see a gyrocopter settling
to the sand on the horizon."
"You think you see a spaceship settling on the horizon and, as you strain your
eyes through the wafting waves of heat, you see a man and a huge robot. You can
almost hear them saying \"Gort, Klaatu Barada Nikto.\""
"A small lizard pokes its head up from the sands and asks the shortest route to
Times Square. You scratch your head for a moment and when you remember the
proper subway line to recommend to it, you notice it's disappeared."
"Five maids amilking sit on sandy stools before you, grinning maniacally."
"A large rainbow trout walks by, holding a pet snail on a leash."
"A strong gust of wind kicks up a herd of buffalo on the horizon. You think it
strange that the buffalo are riding sidesaddle.">>
<GLOBAL MIRAGE-LTBL
<LTABLE
"Far off in the distance, dancing on the horizon, you see a shimmering oasis.
Standing by the oasis are a team of Egyptian workers, waving for you to
approach."
"A cool pool of water seems to dance in the heat waves just a mile away. You
can almost hear Rankin and Craige arguing over the spoils."
"A caravan of camels, led by a nomadic tribe, wanders a few miles off."
"You wipe your sweating brow, gazing off into the distance, and notice a cool,
crystal-clear lake glimmering on the horizon, just to the north.">>
<OBJECT ROCK-LOCK
(IN EX8)
(FLAGS INVISIBLE NDESCBIT CONTBIT OPENBIT DONTTAKE VOWELBIT)
(DESC "opening")
(SYNONYM OPENIN BLOCK HOLE)
(ADJECTIVE SQUARE)
(CAPACITY 5)
(MAP 3)
(ACTION ENTER-OPENING-FCN)>
<ROUTINE ENTER-OPENING-FCN ()
<COND (<VERB? EXAMINE READ>
<TELL
"The opening sits in the upper right-hand corner of the block. It's a small
square opening, about four inches square, far too small for you
to enter, and rather shallow. Some hieroglyphs travel across the block,
cut off by the opening:|
">
<FIXED-FONT-ON>
<TELL "|
!-! !-!|
-> #. ! ! - # ! ! /|
">
<FIXED-FONT-OFF>
<RTRUE>)
(<VERB? OPEN CLOSE>
<HOW? ,PRSO>)
(<VERB? THROUGH>
<TELL
"I think the opening is a little too small to get through. Unless your ethics
and morals are an accurate representation of your stature." CR>
<RTRUE>)>>
<OBJECT COT
(IN TENT)
(FLAGS TAKEBIT TRYTAKEBIT CONTBIT OPENBIT SURFACEBIT VEHBIT VOWELBIT
TRANSBIT)
(DESC "army cot")
(ACTION COT-FCN)
(CAPACITY 100)
(SYNONYM COT)
(ADJECTIVE ARMY)>
<OBJECT FOLDED-COT
(FLAGS TAKEBIT)
(DESC "folded cot")
(ACTION COT-FCN)
(SIZE 9)
(SYNONYM COT)
(ADJECTIVE ARMY FOLDED)>
<ROUTINE COT-FCN ("OPTIONAL" (RARG ,M-OBJECT) "AUX" F)
<COND (<NOT <EQUAL? .RARG ,M-OBJECT>> <RFALSE>)
(<PRSO? ,COT>
<SET F <FIRST? ,COT>>
<COND (<VERB? TAKE PUT PUT-ON>
<TELL
"It's too bulky and unstable a structure to be carrying around." CR>
<RTRUE>)
(<VERB? CLIMB-ON CLIMB-UP>
<COND (<IN? ,WINNER ,COT>
<TELL "Where do you think you are?" CR>)
(T
<TELL
"This is no time for sitting down on the job, especially after what you've been
through to get here!" CR>)>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL "It's just an army cot.">
<COND (<AND .F
<EQUAL? .F ,WINNER>>
<TELL " And you're in it!">)
(.F
<TELL " Sitting on the cot ">
<COND (<G? <CCOUNT ,COT> 1>
<TELL "are ">)
(T <TELL "is ">)>
<PRINT-CONTENTS ,COT>
<TELL ".">)>
<CRLF>
<RTRUE>)
(<VERB? FOLD CLOSE>
<COND (<NOT .F>
<TELL "Folded." CR>
<MOVE ,FOLDED-COT <LOC ,COT>>
<REMOVE ,COT>
<THIS-IS-IT ,FOLDED-COT>
<RTRUE>)
(<EQUAL? .F ,WINNER>
<TELL
"Don't you think it would be wise to get out of the cot first? Or are you
waiting for a valet to help?" CR>
<RTRUE>)
(.F
<TELL
"You'd better take everything off of it first." CR>
<RTRUE>)>)
(<VERB? OPEN UNFOLD>
<TELL "It's already unfolded." CR>
<RTRUE>)
(<AND <VERB? DROP>
<EQUAL? <LOC ,WINNER> ,COT>>
<PERFORM ,V?DISEMBARK ,COT>
<RTRUE>)
(<AND <VERB? WALK THROUGH>
<EQUAL? <LOC ,WINNER> ,COT>>
<TELL "You'd better get out of the cot first." CR>
<RFATAL>)>)
(<PRSO? ,FOLDED-COT>
<COND (<VERB? OPEN UNFOLD>
<COND (<NOT <IN? ,FOLDED-COT ,HERE>>
<TELL
"Better put it down on the ground first." CR>)
(T
<TELL "Unfolded." CR>
<MOVE ,COT <LOC ,FOLDED-COT>>
<REMOVE ,FOLDED-COT>
<THIS-IS-IT ,COT>
<RTRUE>)>)
(<VERB? FOLD CLOSE>
<TELL
"Hmmm. Looks like you beat yourself to it. It's already folded up." CR>
<RTRUE>)>)>>
<OBJECT MATCHES
(IN FIRE)
(DESC "matchbook")
(FDESC
"Sitting by a rock is what looks like a matchbook.")
(SYNONYM MATCHB MATCHE COVER)
(FLAGS BURNBIT TAKEBIT READBIT CONTBIT)
(SIZE 1)
(CAPACITY 1)
(GENERIC DIASMBIGUATE-FCN)
(ACTION READ-MATCHES-FCN)>
<ROUTINE READ-MATCHES-FCN ("OPTIONAL" OBJ)
<COND (<NOT .OBJ>
<SET OBJ ,MATCHES>)>
<COND (<VERB? READ-INSIDE>
<COND (<NOT <FSET? .OBJ ,OPENBIT>>
<TELL "You'd better open the matchbook first." CR>
<RTRUE>)
(ELSE
<PERFORM ,V?READ .OBJ>
<RTRUE>)>)
(<VERB? READ LOOK-BEHIND>
<COND (<FSET? .OBJ ,OPENBIT>
<TELL
"The inside says: Send away now!! Mushrooms can be taught a foreign
language, and make fine pets! Easy to feed and they can be walked on a leash!
Read and fill out the enclosed coupon now!" CR>)
(ELSE
<TELL
"Printed on the outside is a small coupon for an instruction manual,
\"GROW MUSHROOMS IN YOUR BASEMENT FOR FUN & PROFIT\". Close Before
Striking." CR>)>)
(<VERB? LAMP-ON>
<TELL "One match at a time, eh?" CR>
<RTRUE>)>>
<OBJECT MANY-MATCHES
(IN MATCHES)
(FLAGS TAKEBIT BURNBIT TRYTAKEBIT)
(DESC "few matches")
(SYNONYM MATCH)
(GENERIC DIASMBIGUATE-FCN)
(ADJECTIVE ONE SINGLE)
(SIZE 1)
(ACTION TAKE-ONE-MATCH-FCN)>
<OBJECT SINGLE-MATCH
(FLAGS TAKEBIT BURNBIT TRYTAKEBIT)
(DESC "single match")
(SYNONYM MATCH)
(GENERIC DIASMBIGUATE-FCN)
(ADJECTIVE ONE SINGLE)
(SIZE 1)
(ACTION TAKE-ONE-MATCH-FCN)>
<OBJECT ONE-MATCH
(IN GLOBAL-OBJECTS)
(FLAGS BURNBIT)
(DESC "match")
(GENERIC DIASMBIGUATE-FCN)
(SYNONYM MATCH)
(SIZE 1)
(ACTION DROP-ONE-FCN)>
<OBJECT BURNED-MATCHBOOK
(FLAGS CONTBIT TAKEBIT)
(DESC "burned matchbook")
(SYNONYM MATCHB)
(ADJECTIVE BURNED)
(CAPACITY 1)>
<OBJECT EMPTY-MATCHES
(FLAGS CONTBIT OPENBIT BURNBIT READBIT TAKEBIT)
(DESC "matchbook")
(SYNONYM MATCHB MATCHE)
(GENERIC DIASMBIGUATE-FCN)
(ADJECTIVE EMPTY)
(CAPACITY 1)
(ACTION LAST-MATCH-FCN)>
<ROUTINE LAST-MATCH-FCN ()
<COND (<AND <VERB? DROP>
<IN? ,ONE-MATCH ,WINNER>>
<DROP-ONE-FCN>
<RTRUE>)
(<VERB? TAKE>
<TELL "Why? There's no match left in the matchbook." CR>
<RTRUE>)
(<VERB? LAMP-ON>
<COND (<IN? ,ONE-MATCH ,WINNER>
<RFALSE>)
(ELSE
<TELL "There's no match to light!" CR>
<RTRUE>)>)
(<VERB? READ>
<READ-MATCHES-FCN ,EMPTY-MATCHES>
<RTRUE>)>>
<ROUTINE DROP-ONE-FCN ()
<COND (<VERB? DROP PUT>
<COND (<NOT <IN? ,ONE-MATCH ,WINNER>>
<TELL "Better take one first." CR>
<RTRUE>)>
<MOVE ,ONE-MATCH ,GLOBAL-OBJECTS>
<TELL "Dropped. ">
<BUT-WHERE?>
<TELL " ">
<I-MATCH-OUT>
<DISABLE <INT I-MATCH-OUT>>
<RTRUE>)
(<VERB? TAKE>
<COND (<IN? ,MATCHES ,WINNER>
<MATCH-MOVER <>>
<RTRUE>)
(T
<TELL "I see no match here." CR>
<RTRUE>)>)
(<EQUAL? ,ONE-MATCH ,PRSI>
<COND (<AND <NOT <IN? ,MATCHES ,WINNER>>
<NOT <IN? ,ONE-MATCH ,WINNER>>>
<TELL "You're not holding the match." CR>
<RTRUE>)
(T
<MATCH-MOVER T>
<RFALSE>)>)>>
<ROUTINE BUT-WHERE? ()
<COND (<IN? ,WINNER ,COT>
<TELL
"The match disappears somewhere beneath the cot.">)
(<EQUAL? ,HERE ,RIVER-BANK>
<TELL
"The current of the river sweeps it away.">)
(<GETP ,HERE ,P?MAP>
<TELL
"The match, however, is quickly covered by the sand.">)
(<EQUAL? <GETP ,HERE ,P?ACTION> ,BURN-THE-BARGE>
<TELL
"The match, however, falls between the wooden decking.">)
(<AND <NOT <FSET? ,PIT ,INVISIBLE>>
<EQUAL? ,HERE ,WEST-END-OF-PASSAGE>>
<TELL
"The match flutters down into the abyss.">)
(T
<TELL "The match falls into a crack in the stone floor.">)>
<COND (<NOT <FLAMING? ,ONE-MATCH>>
<CRLF>)>>
<ROUTINE TAKE-ONE-MATCH-FCN ()
<COND (<VERB? TAKE>
<COND (<NOT <IN? ,ONE-MATCH ,WINNER>>
<MATCH-MOVER <>>)
(ELSE
<TELL "You're already holding one." CR>)>
<RTRUE>)
(<VERB? DROP>
<PERFORM ,V?DROP ,ONE-MATCH>
<RTRUE>)
(<OR <VERB? PUT PUT-ON PUT-UNDER>
<VERB? PUT-BEHIND PUT-AGAINST PUT-ACROSS>>
<COND (<IN? ,ONE-MATCH ,WINNER>
<MOVE ,ONE-MATCH ,GLOBAL-OBJECTS>
<TELL
"Well, I tried, but the match seems to have missed the mark entirely." CR>
<RTRUE>)
(ELSE
<TELL "One match at a time!" CR>
<RTRUE>)>)>>
<ROUTINE MATCH-MOVER ("OPTIONAL" (SUPPRESS? T))
<COND (<G? ,MATCH-COUNT 0>
<SETG MATCH-COUNT <- ,MATCH-COUNT 1>>)>
<COND (<L? ,MATCH-COUNT 1>
<SETG MATCH-COUNT 0>
<REMOVE ,SINGLE-MATCH>
<RFALSE>)
(<EQUAL? ,MATCH-COUNT 1>
<MOVE ,EMPTY-MATCHES <LOC ,MATCHES>>
<REMOVE ,MATCHES>
<REMOVE ,MANY-MATCHES>
<FSET ,SINGLE-MATCH ,NDESCBIT>)
(<EQUAL? ,MATCH-COUNT 2>
<MOVE ,SINGLE-MATCH <LOC ,MANY-MATCHES>>
<REMOVE ,MANY-MATCHES>)>
<MOVE ,ONE-MATCH ,WINNER>
<COND (<NOT .SUPPRESS?>
<TELL "Taken." CR>)>
<RTRUE>>
<OBJECT MANUAL
(IN GLOBAL-OBJECTS)
(DESC "manual")
(FLAGS READBIT DONTTAKE)
(ADJECTIVE INSTRU)
(SYNONYM MANUAL COUPON)
(ACTION SEND-FOR-IT-FCN)>
<ROUTINE SEND-FOR-IT-FCN ()
<COND (<AND <VERB? SEND>
<IN? ,MATCHES ,WINNER>>
<TELL
"Sure. As soon as a postman walks by, I'd be glad to give the coupon to him." CR>
<RTRUE>)
(<AND <VERB? READ>
<IN? ,MATCHES ,WINNER>>
<TELL
"The coupon for the manual is as clear as any coupon ever was:|
|
Fill in Last Name first, unless First Name is Last. Check the box beside
the dotted line unless you want the manual shipped via alternate shipping.
Include your address unless your mailing address and shipping address differ
from your postal delivery route. If you are having the manual air-freighted,
fill in your airport's zip code unless you're within thirty miles of a large
corn field. After checking whether that box has been checked, check it.|
|
Before you mail this, be certain you've read the instructions and have filled
out all three sides of the form. In case of doubt, contact the Coupon
Customer Service Department, 122 East Accardi Street, Youknow, Alaska.
If you live west of the Atlantic or the Pacific, this offer is
null and void except where prohibited by law." CR >)
(<VERB? READ>
<TELL
"There's not much to read unless you're holding the matchbook." CR>
<RTRUE>)>>
<ROUTINE BURN-FOO-FCN ()
<COND (<AND <VERB? BURN LAMP-ON>
<PRSO? ,CIG-WRAPPER>
<OR <IN? ,MATCHES ,WINNER>
<AND <IN? ,ONE-MATCH ,WINNER>
<FLAMING? ,ONE-MATCH>>>>
<TELL
"It tries valiantly to burn, but the inside of it is made of foil, and you
manage to burn your fingertips instead of the package." CR>
<MOVE ,BURNED-PACK <LOC ,CIG-WRAPPER>>
<FCLEAR ,BURNED-PACK ,INVISIBLE>
<FCLEAR ,BURNED-PACK ,NDESCBIT>
<REMOVE ,CIG-WRAPPER>
<THIS-IS-IT ,BURNED-PACK>
<RTRUE>)
(<VERB? READ>
<TELL <GETP ,CIG-WRAPPER ,P?TEXT> CR>)>>
<OBJECT BURNED-PACK
(FLAGS INVISIBLE TAKEBIT READBIT NDESCBIT)
(DESC "burned wrapper")
(SYNONYM WRAPPE PACK)
(ADJECTIVE BURNED)
(TEXT
"There's not much left to the outside of this package that's distinguishable.")
(ACTION HUH?)>
<OBJECT CIG-WRAPPER
(IN FIRE)
(FLAGS TAKEBIT READBIT BURNBIT CONTBIT OPENBIT)
(DESC "cigarette pack")
(FDESC
"Half covered with sand is a bright piece of foil which catches your eye.")
(SYNONYM PACK FOIL)
(ADJECTIVE CIGARE BRIGHT)
(TEXT
"It's an empty pack of Camel cigarettes.")
(SIZE 3)
(CAPACITY 2)
(ACTION BURN-FOO-FCN)>
<OBJECT BROKEN-LOCK
(IN TENT)
(FLAGS INVISIBLE TAKEBIT TRYTAKEBIT NDESCBIT)
(DESC "broken lock")
(SYNONYM LOCK PADLOC)
(ADJECTIVE BROKEN)
(TEXT
"This is a slightly messed-up lock which once functioned. Alas, like your
personality, it has seen better days.")>
<OBJECT TRUNK
(IN TENT)
(FLAGS CONTBIT TRANSBIT SURFACEBIT OPENBIT)
(DESC "trunk")
(DESCFCN DESCRIBE-TRUNK-FCN)
(SYNONYM TRUNK)
(ADJECTIVE LARGE UNWIEL)
(CAPACITY 100)
(ACTION TRUNK-FCN)>
<GLOBAL TRUNK-TBL ;"Thirty (30) slots to hold objects in the trunk"
<LTABLE MAP FOOD SMALL-SLIP 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0>>
<ROUTINE DESCRIBE-TRUNK-FCN (RARG)
<COND (<EQUAL? .RARG ,M-OBJDESC>
<COND (<IN? ,COT ,HERE>
<TELL
"At the foot of the cot is a large, unwieldy trunk.">)
(T
<TELL "A large, unwieldy trunk sits on the sand.">)>
<COND (<FSET? ,BROKEN-LOCK ,INVISIBLE>
<TELL
" The trunk is closed and locked with a padlock.">)
(<NOT <FSET? ,BROKEN-LOCK ,TOUCHBIT>>
<TELL
" The trunk is closed with a broken padlock.">)>
<CRLF>
<COND (<FIRST? ,TRUNK>
<PRINT-CONT ,TRUNK>)>
<RTRUE>)>>
<ROUTINE TRUNK-FCN ("AUX" (FLG <>))
<COND (<VERB? OPEN>
<COND (<IN? ,LOCK ,TENT>
<TELL "A padlock holds it shut." CR>)
(<NOT <FSET? ,BROKEN-LOCK ,TOUCHBIT>>
<TELL
"You'd better remove the broken lock first." CR>)
(ELSE
<TBL-TO-INSIDE ,TRUNK ,TRUNK-TBL>
<RTRUE>)>)
(<VERB? UNLOCK>
<COND (<NOT <FSET? ,TRUNK ,SURFACEBIT>>
<TELL "Better have your eyes checked." CR>)
(T <TELL "You don't have a key." CR>)>
<RTRUE>)
(<AND <VERB? EXAMINE LOOK-INSIDE>
<FSET? ,TRUNK ,SURFACEBIT>>
<TELL
"It's an old steamer trunk, very heavy and too clumsy for one person to carry."CR>
<COND (<FIRST? ,TRUNK>
<PRINT-CONT ,TRUNK>)>
<RTRUE>)
(<AND <VERB? CLOSE>
<NOT <FSET? ,TRUNK ,SURFACEBIT>>>
<COND (<AND <IN? ,TORCH ,TRUNK>
<FLAMING? ,TORCH>>
<SET FLG T>)>
<INSIDE-OBJ-TO ,TRUNK-TBL ,TRUNK>
<COND (.FLG
<KILL-TORCH T>)>
<RTRUE>)>>
<OBJECT LOCK
(IN TENT)
(DESC "padlock")
(SYNONYM PADLOC LOCK)
(FLAGS NDESCBIT CONTBIT)
(ACTION LOCK-FCN)>
<ROUTINE LOCK-FCN ()
<COND (<VERB? OPEN>
<COND (,PRSI
<PERFORM ,V?MUNG ,PRSO ,PRSI>
<RTRUE>)
(T
<TELL"You can't. It's locked." CR>
<RTRUE>)>)
(<AND <VERB? MUNG>
<PRSI? ,PICK-AXE
,SHOVEL ,ROCK>>
<TELL "The padlock breaks open." CR>
<FCLEAR ,BROKEN-LOCK ,INVISIBLE>
<REMOVE ,LOCK>
<THIS-IS-IT ,BROKEN-LOCK>
<SETG SCORE <+ ,SCORE 5>>)
(<VERB? MUNG>
<TELL"You'll have to hit the lock with something stronger." CR>
<RTRUE>)
(<VERB? TAKE DISEMBARK>
<TELL "It's locked." CR>)
(<AND <VERB? EXAMINE LOOK-INSIDE>
<IN? ,LOCK ,HERE>>
<TELL
"It's made of hardened steel and is very sturdy. It's also very locked." CR>)>>
<OBJECT PICK-AXE
(IN SUPPLY-TENT)
(FLAGS TOOLBIT TAKEBIT)
(DESC "pick axe")
(FDESC
"Stuck in the sand, handle down, is a small pick axe.")
(SYNONYM AXE PICKAX AX)
(ADJECTIVE PICK)
(TEXT
"It's a small hand axe, similar to those used in mountain climbing.")
(SIZE 10)>
<OBJECT STONE-KEY
(IN MAP)
(FLAGS TAKEBIT READBIT)
(DESC "stone cube")
(SYNONYM CUBE)
(MAP 3)
(ADJECTIVE SMALL STONE)
(ACTION STONE-KEY-FCN)>
<GLOBAL PYRAMID-OPENED <>>
<ROUTINE STONE-KEY-FCN ()
<COND (<VERB? EXAMINE READ>
<TELL
"This is a small stone cube, almost four inches on a side, with ancient
markings on it. The markings look like this:|
">
<FIXED-FONT-ON>
<TELL "|
# !@! :: (()) !@! //\\\\|
">
<FIXED-FONT-OFF>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,ROCK-LOCK>>
<TELL "The ancient stones beneath your feet shake and
tremble as they move the sands. You leap out of the way and manage to
avoid being sucked down into the vortex. Through the sands, an entrance
down into the pyramid is revealed. The entire experience sends a jolt of
adrenaline through your body as your lips form a sneer. You've found it.
And without any help from those idiots."CR>
<SETG PYRAMID-OPENED T>
<REMOVE ,STONE-KEY>
<REMOVE ,ROCK-LOCK>
<SETG P-IT-LOC <>>
<PUTP ,HERE ,P?LDESC
"You are in the desert at a site of successful excavation. Beneath you lies the
pyramid, its stone door at last open. The desert is all around you, but
down there lie the secrets of the ages.">
<SETG SCORE <+ ,SCORE 20>>)>>
<OBJECT FOOD
(FLAGS FOODBIT TAKEBIT TOUCHBIT TRYTAKEBIT)
(DESC "piece of dried beef")
(SYNONYM BEEF FOOD MEAT)
(ADJECTIVE DRIED PIECE)
(ACTION EDIBLE-FCN)>
<ROUTINE EDIBLE-FCN ()
<COND (<NOT <EQUAL? ,PRSO ,FOOD>>
<RFALSE>)
(<VERB? SMELL TASTE>
<TELL "Mmmm good!" CR>
<RTRUE>)>>
<OBJECT MAP
(FLAGS CONTBIT TAKEBIT VOWELBIT BURNBIT)
(DESC "ancient map")
(SYNONYM MAP)
(ADJECTIVE ANCIEN)
(CAPACITY 5)
(ACTION MAP-FCN)>
<ROUTINE MAP-FCN ()
<COND (<AND <NOT <IN? ,MAP ,WINNER>>
<VERB? OPEN READ EXAMINE>>
<TELL "You're not carrying the map." CR>
<RTRUE>)
(<AND <VERB? READ EXAMINE>
<NOT <FSET? ,MAP ,OPENBIT>>>
<TELL "You'd better unfold it first." CR>
<RTRUE>)
(<VERB? READ EXAMINE>
<TELL
"This is a reproduction of the map the Professor made while on his expedition.
It indicates where he hoped to find the lost pyramid. It is included in your
game package." CR>)
(<AND <VERB? TAKE>
<NOT <FSET? ,MAP ,TOUCHBIT>>>
<COND (<ITAKE>
<TELL
"Taken. It feels fairly heavy, though, as though it were folded around
something solid." CR>)>
<RTRUE>)>>
<OBJECT SHOVEL
(IN SUPPLY-TENT)
(FLAGS TOOLBIT TAKEBIT)
(DESC "shovel")
(FDESC
"Half buried in the sand, in the corner of the tent, is a shovel.")
(TEXT
"It's a standard-issue garden shovel.")
(SYNONYM SHOVEL)>
<OBJECT ROPE
(IN KNAPSACK)
(DESC "rope")
(FLAGS TAKEBIT CLIMBBIT BURNBIT TOUCHBIT)
(SYNONYM ROPE COIL ASP)
(SIZE 4)
(ADJECTIVE BUNCH)
(TEXT
"This rope is made of the finest Manila hemp and guaranteed to hold at least
250 pounds of weight. There's about thirty feet of it. Be glad the workers
didn't hang you with it.")
(ACTION ROPE-FCN)
(DESCFCN DESCRIBE-ROPE-FCN)>
<ROUTINE DESCRIBE-ROPE-FCN (RARG)
<COND (<AND <EQUAL? .RARG ,M-OBJDESC>
<OR <EQUAL? ,HERE ,LANDING-ZERO ,LANDING-ONE ,LANDING-TWO>
<EQUAL? ,HERE ,LANDING-THREE ,TINY-LANDING>>
,ROPE-PLACED>
<TELL "Descending from above is the end of a long rope.">
<COND (<ROOM? ,TINY-LANDING>
<TELL " It travels down into the darkness.">)>
<CRLF>
<RTRUE>)>>
<ROUTINE ROPE-FCN ()
<COND (<AND <VERB? TIE>
<PRSI? ,ALTAR>>
<COND (,ROPE-TIED
<TELL "It's already tied to the " D ,ROPE-TIED "." CR>
<RTRUE>)
(<EQUAL? ,PRSI ,ALTAR>
<TELL "The rope has been tied to the " D ,PRSI "." CR>
<SETG ROPE-TIED ,PRSI>
<FSET ,ROPE ,TRYTAKEBIT>)
(T <RFALSE>)>)
(<VERB? UNTIE>
<COND (<NOT ,ROPE-TIED>
<TELL "That's cute. It's not tied!" CR>
<RTRUE>)
(<NOT <EQUAL? ,HERE ,CHAMBER-OF-RA>>
<TELL "Your arms aren't quite that long." CR>
<RTRUE>)
(ELSE
<TELL "Untied.">
<SETG ROPE-TIED <>>
<FCLEAR ,ROPE ,TRYTAKEBIT>
<COND (,ROPE-PLACED
<MOVE ,ROPE ,LANDING>
<TELL " You hear it fall down below.">
<SETG LANDING <>>
<SETG ROPE-PLACED <>>)>
<CRLF>
<RTRUE>)>)
(<AND <VERB? TAKE PUT>
,ROPE-PLACED
<EQUAL? ,HERE ,CHAMBER-OF-RA>>
<SETG ROPE-PLACED <>>
<FCLEAR ,ROPE ,NDESCBIT>
<TELL "(free end of rope)" CR>
<RFALSE>)
(<AND <VERB? TAKE>
,ROPE-PLACED
<OR <EQUAL? ,HERE ,LANDING-ZERO ,LANDING-ONE
,TINY-LANDING>
<EQUAL? ,HERE ,LANDING-TWO ,LANDING-THREE>>>
<TELL "It seems to be tied to something up overhead." CR>
<RTRUE>)
(<AND <VERB? MOVE>
,ROPE-PLACED>
<TELL "The rope is securely fastened to the altar." CR>
<RTRUE>)
(<VERB? PUT>
<COND (<AND ,PRSI
<FSET? ,PRSI ,CLIMBBIT>>
<COND (<EQUAL? ,PRSI ,FEW-STEPS>
<SETG PRSI ,NORTH-STAIRS>)>
<SETG ROPE-PLACED ,PRSI>
<TELL "The rope descends into the " D ,PRSI "." CR>
<MOVE ,ROPE ,HERE>
<COND (<EQUAL? ,PRSI ,NORTH-STAIRS>
<SETG LANDING ,LANDING-ZERO>)
(<EQUAL? ,PRSI ,SOUTH-STAIRS>
<SETG LANDING ,LANDING-TWO>)
(<EQUAL? ,PRSI ,EAST-STAIRS>
<SETG LANDING ,LANDING-ONE>)
(<EQUAL? ,PRSI ,WEST-STAIRS>
<SETG LANDING ,LANDING-THREE>)
(T
<SETG LANDING ,LANDING-ZERO>)>
<RTRUE>)
(ELSE
<RFALSE>)>)
(<VERB? TAKE>
<FCLEAR ,ROPE ,NDESCBIT>
<RFALSE>)
(<VERB? CLIMB-UP CLIMB-DOWN CLIMB-FOO>
<COND (<AND <VERB? CLIMB-UP>
<ROOM? ,CHAMBER-OF-RA>>
<TELL "The rope doesn't go up." CR>
<RFATAL>)>
<SETG ROPE-HACK T>
<RFALSE>)>>
<OBJECT NOTE
(IN TENT2)
(FLAGS READBIT BURNBIT TAKEBIT)
(DESC "farewell note")
(FDESC
"Tacked up to the inside of one of the tent flaps is a note.")
(TEXT
"The note reads:|
|
Fi aman Allah!|
|
Hereafter you shall pursue your fool dream of the hidden pyramid and its riches
alone. May the jackals feed well on your bones. We have left you what you need
to get back, though we hope you do not. We put several things you treasure
above life itself inside your trunk, locked with your precious padlock, but we
could not bear to part with the key. Especially after what you said of our
rites. We hope the drug we placed in your drink did you harm. If not, we are at
least satisfied you slept especially soundly while we cleaned out the camp.|
|
Farewell")
(SYNONYM NOTE)
(ADJECTIVE FAREWE)
(SIZE 1)>
<OBJECT GLOBAL-WATER
(IN LOCAL-GLOBALS)
(FLAGS DRINKBIT NDESCBIT)
(DESC "quantity of water")
(SYNONYM WATER)
>
<OBJECT WATER
(IN CANTEEN)
(FLAGS DRINKBIT)
(DESC "quantity of water")
(SYNONYM WATER)
(SIZE 3)>
<OBJECT CANTEEN
(IN KNAPSACK)
(FLAGS CONTBIT TAKEBIT TOUCHBIT)
(DESC "canteen")
(SYNONYM CANTEE)
(ADJECTIVE SMALL)
(CAPACITY 5)
(SIZE 6)
(ACTION CANTEEN-FCN)>
<GLOBAL SANDY-CANTEEN <>>
<GLOBAL SAND-FILLED <>>
<ROUTINE CANTEEN-FCN ()
<COND (<VERB? SHAKE>
<COND (<NOT <FSET? ,CANTEEN ,OPENBIT>>
<COND (<AND <IN? ,WATER ,CANTEEN>
<G? ,WATER-LEFT 9>>
<TELL "Some water sloshes around inside." CR>
<RTRUE>)
(,SAND-FILLED
<TELL "Some sand shakes around inside." CR>
<RTRUE>)
(T
<TELL "It's empty." CR>)>)
(<IN? ,WATER ,CANTEEN>
<TELL
"All the water spills out and quickly evaporates. Another smart move."
CR>
<REMOVE ,WATER>
<SETG WATER-LEFT 0>
<RTRUE>)
(,SAND-FILLED
<TELL "You empty the canteen of most of the sand." CR>
<SETG SAND-FILLED <>>
<REMOVE ,C-SAND>
<FSET ,C-SAND ,NDESCBIT>
<RTRUE>)
(T
<TELL
"Okay, but shaking an empty canteen will get you nowhere fast." CR>
<RTRUE>)>)
(<AND <VERB? FILL>
<EQUAL? ,PRSI ,SAND>>
<COND (<NOT <GETP ,HERE ,P?MAP>>
<TELL "I see no sand here." CR>)
(<NOT <FSET? ,CANTEEN ,OPENBIT>>
<TELL "It would help if you opened the canteen first." CR>
<RTRUE>)
(T
<TELL "Okay. The canteen has been filled with sand.">
<COND (,WATER-LEFT
<SETG WATER-LEFT 0>
<REMOVE ,WATER>
<TELL
" So much for the water that was left in it.">)>
<CRLF>
<SETG SANDY-CANTEEN T>
<SETG SAND-FILLED T>
<MOVE ,C-SAND ,CANTEEN>
<FCLEAR ,C-SAND ,NDESCBIT>)>
<RTRUE>)
(<AND <PRSI? ,CANTEEN>
<VERB? PUT>
<NOT <EQUAL? ,PRSO ,SAND ,GLOBAL-WATER ,C-SAND>>>
<TELL
"That would void the manufacturer's warranty on the canteen." CR>)>>
<OBJECT SMALL-SLIP
(FLAGS READBIT TAKEBIT BURNBIT VOWELBIT)
(DESC "inspection sticker")
(TEXT
"The small inspection sticker says:
|
This trunk inspected by numbers 8 and 6.5. This reality was manufactured by
tiny elves from the Bozbar Pyramid Construction Company, a jointly-owned
subsidiary of the FrobozzCo Magic Village Industries, Michael Berlyn and
Patricia Fogleman, Chief Engineers.")
(SYNONYM STICKE)
(ADJECTIVE INSPEC)>
<ROOM ENDLESS-DESERT
(IN ROOMS)
(DESC "Desert")
(FLAGS RLANDBIT ONBIT)
(LDESC
"You are in the desert, a vast wasteland of sand and heat.")
(UP "Without a helicopter?")
(DOWN "Let's not rush things.")
(ACTION DESERT-EXIT-FCN)
(CAPACITY 0)
(GLOBAL SAND MIRAGES)>
<OBJECT MIRAGES
(IN LOCAL-GLOBALS)
(DESC "mirage")
(FLAGS NDESCBIT)
(SYNONYM GORT KLAATU FISH BUFFAL)
(ADJECTIVE LIZARD MAIDS SNAIL GYROCO)
(ACTION MIRAGES-F)>
<ROUTINE MIRAGES-F ()
<TELL
"Come on! This life you're leading is bad enough -- don't waste your life on
illusions." CR>
<RTRUE>>
<GLOBAL TOLD-IT <>>
<ROUTINE DESERT-EXIT-FCN (RARG "AUX" (END-OF-TBL 26) (OFFS 0) (NEW-ROOM <>)
OLD-DESERT)
<COND (<EQUAL? .RARG ,M-END>
<COND (<AND <VERB? DROP>
<PROB 33>
<NOT ,TOLD-IT>>
<TABLE-TO-DESERT ,DESERT-LOC>
<REMOVE ,PRSO>
<TELL
"A brief but strong gust of wind comes up off a dune, whipping sand in your
face, blinding you for long enough to lose track of the " D ,PRSO "." CR>
<SETG TOLD-IT T>)>
<RTRUE>)
(<EQUAL? .RARG ,M-LOOK>
<DESCRIBE-HOLE-FCN ,M-LOOK>
<SETG TOLD-IT <>>
<RTRUE>)
(<NOT <EQUAL? .RARG ,M-BEG>>
<RFALSE>)
(<OR <NOT <VERB? WALK>>
<EQUAL? ,PRSO ,P?UP ,P?DOWN>>
<SETG TOLD-IT <>>
<RFALSE>)>
<SETG TOLD-IT <>>
<SETG THIRST <+ ,THIRST 15>>
<SET OLD-DESERT ,DESERT-LOC>
<CHANGE-DESERT-POSITION>
<REPEAT ()
<COND (<EQUAL? .OFFS .END-OF-TBL>
<RETURN>)
(ELSE
<COND (<EQUAL? ,DESERT-LOC <GET ,REENTRY-TBL .OFFS>>
<SET NEW-ROOM <GET ,REENTRY-TBL <+ .OFFS 1>>>
<RETURN>)
(ELSE
<SET OFFS <+ .OFFS 2>>)>)>>
<DESERT-TO-TABLE .OLD-DESERT>
<PROP-TO-TBL .OLD-DESERT>
<COND (<NOT .NEW-ROOM>
<FCLEAR ,HERE ,TOUCHBIT>
<SET NEW-ROOM ,ENDLESS-DESERT>
<TABLE-TO-DESERT ,DESERT-LOC>
<TBL-TO-PROP ,DESERT-LOC>)
(ELSE
<TBL-TO-PROP .OLD-DESERT>)>
<GOTO .NEW-ROOM>
<RTRUE>>
<GLOBAL REENTRY-TBL
<TABLE 651 P1 652 P2 653 P3 654 EX1 655 EX2
656 EX3 706 EX6 751 P6 752 P7 753 P8
754 EX7 755 EX8 756 EX9>>
<ROUTINE DESERT-TO-TABLE (SLOC "AUX" TBL (CNT 0)
(F <FIRST? ,ENDLESS-DESERT>) N)
<SET TBL ,DESERT-TABLE>
<REPEAT ()
<COND (.F <SET N <NEXT? .F>>)
(ELSE <RETURN>)>
<COND (<EQUAL? .F ,WINNER>)
(<FSET? .F ,TAKEBIT>
<REPEAT ()
<COND (<==? <GET .TBL .CNT> 0>
<PUT .TBL .CNT .SLOC>
<PUT .TBL <+ .CNT 1> .F>
<SET CNT <+ .CNT 2>>
<REMOVE .F>
<RETURN>)
(ELSE
<SET CNT <+ .CNT 2>>)>>)>
<SET F .N>>>
<ROUTINE TABLE-TO-DESERT (SLOC
"AUX" TBL (CNT 0))
<SET TBL ,DESERT-TABLE>
<REPEAT ()
<COND (<NOT <L? .CNT 100>>
<RETURN>)
(<==? <GET .TBL .CNT> .SLOC>
<PUT .TBL .CNT 0>
<MOVE <GET .TBL <+ .CNT 1>> ,ENDLESS-DESERT>)>
<SET CNT <+ .CNT 2>>>>
<GLOBAL DESERT-LOC 0>
<CONSTANT DESERT-START 10000>
<GLOBAL DESERT-TABLE ;"length should be 2*number of takeable objects"
<TABLE 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0>>
<GLOBAL DESERT-HACK 0>
<ROUTINE CHANGE-DESERT-POSITION ()
<SETG DESERT-HACK <+ ,DESERT-HACK 1>>
<COND (<EQUAL? ,DESERT-HACK 10>
<TELL
"WARNING: The Surgeon General has determined that wandering about like this is
dangerous to your health." CR>
<CRLF>)
(<EQUAL? ,DESERT-HACK 20>
<COND (<ROB-HIM-BLIND>
<TELL
"You start dropping things to lighten your load. Before you know it, you're
empty-handed. A gust of wind comes up off the dune before you, covering over
what you've dropped. So much for that." CR>
<CRLF>)>)>
<COND (<EQUAL? ,PRSO ,P?NORTH>
<SETG DESERT-LOC <- ,DESERT-LOC 50>>
<FIX-LON-LAT 0 2>)
(<EQUAL? ,PRSO ,P?NE>
<SETG DESERT-LOC <- ,DESERT-LOC 49>>
<FIX-LON-LAT 2 2>)
(<EQUAL? ,PRSO ,P?EAST>
<SETG DESERT-LOC <+ ,DESERT-LOC 1>>
<FIX-LON-LAT 2 0>)
(<EQUAL? ,PRSO ,P?SE>
<SETG DESERT-LOC <+ ,DESERT-LOC 51>>
<FIX-LON-LAT 2 -2>)
(<EQUAL? ,PRSO ,P?SOUTH>
<SETG DESERT-LOC <+ ,DESERT-LOC 50>>
<FIX-LON-LAT 0 -2>)
(<EQUAL? ,PRSO ,P?SW>
<SETG DESERT-LOC <+ ,DESERT-LOC 49>>
<FIX-LON-LAT -2 -2>)
(<EQUAL? ,PRSO ,P?WEST>
<SETG DESERT-LOC <- ,DESERT-LOC 1>>
<FIX-LON-LAT -2 0>)
(<EQUAL? ,PRSO ,P?NW>
<SETG DESERT-LOC <- ,DESERT-LOC 51>>
<FIX-LON-LAT -2 2>)>>
<ROUTINE FIX-LON-LAT (INC-LON INC-LAT)
<COND (.INC-LON
<SETG SECS-LON <+ ,SECS-LON .INC-LON>>
<COND (<G? ,SECS-LON 60>
<SETG SECS-LON 1>
<SETG MINS-LON <+ ,MINS-LON 1>>
<COND (<G? ,MINS-LON 59>
<SETG MINS-LON 0>
<SETG DEGS-LON <+ ,DEGS-LON 1>>)>)
(<L? ,SECS-LON 1>
<SETG SECS-LON 59>
<SETG MINS-LON <- ,MINS-LON 1>>
<COND (<L? ,MINS-LON 0>
<SETG MINS-LON 59>
<SETG DEGS-LON <- ,DEGS-LON 1>>)>)>)>
<COND (.INC-LAT
<SETG SECS-LAT <+ ,SECS-LAT .INC-LAT>>
<COND (<G? ,SECS-LAT 60>
<SETG SECS-LAT 1>
<SETG MINS-LAT <+ ,MINS-LAT 1>>
<COND (<G? ,MINS-LAT 59>
<SETG MINS-LAT 0>
<SETG DEGS-LAT <+ ,DEGS-LAT 1>>)>)
(<L? ,SECS-LAT 1>
<SETG SECS-LAT 59>
<SETG MINS-LAT <- ,MINS-LAT 1>>
<COND (<L? ,MINS-LAT 0>
<SETG MINS-LAT 59>
<SETG DEGS-LAT <- ,DEGS-LAT 1>>)>)>)>>
<ROUTINE ROB-HIM-BLIND ("AUX" F N (FLG <>))
<SET F <FIRST? ,WINNER>>
<REPEAT ()
<COND (<NOT .F>
<RETURN>)
(T
<SET N .F>
<SET F <NEXT? .N>>
<REMOVE .N>
<SET FLG T>)>>
.FLG>
<GLOBAL SECS-LAT 0>
<GLOBAL SECS-LON 0>
<GLOBAL MINS-LAT 0>
<GLOBAL MINS-LON 0>
<GLOBAL DEGS-LAT 0>
<GLOBAL DEGS-LON 0>
<GLOBAL PROP-TBL
<TABLE 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0>>
<ROUTINE PROP-TO-TBL (SLOC "AUX" (TBL ,PROP-TBL) (CNT 0) DUG)
<SET DUG <GETP ,HERE ,P?CAPACITY>>
<COND (<EQUAL? .DUG 0>
<RFALSE>)>
<REPEAT ()
<COND (<==? <GET .TBL .CNT> 0>
<PUT .TBL .CNT .SLOC>
<PUT .TBL <+ .CNT 1> .DUG>
<PUTP ,HERE ,P?CAPACITY 0> ;"Huh?"
<SET CNT <+ .CNT 2>>
<RETURN>)
(ELSE
<SET CNT <+ .CNT 2>>)>>>
<ROUTINE TBL-TO-PROP (SLOC "AUX" (TBL ,PROP-TBL) (CNT 0))
<REPEAT ()
<COND (<NOT <L? .CNT 120>>
<RETURN>)
(<==? <GET .TBL .CNT> .SLOC>
<PUT .TBL .CNT 0>
<PUTP ,HERE ,P?CAPACITY <GET .TBL <+ .CNT 1>>>)>
<SET CNT <+ .CNT 2>>>>
<OBJECT C-SAND
(FLAGS NDESCBIT)
(DESC "quantity of sand")
(SYNONYM SAND)>
<OBJECT KNAPSACK
(IN TENT2)
(DESC "knapsack")
(FLAGS TRYTAKEBIT TAKEBIT CONTBIT SEARCHBIT)
(SIZE 5)
(CAPACITY 60)
(SYNONYM SACK KNAPSA)
(ADJECTIVE KNAP)
(FDESC
"Sitting in the sand, bulging a little, is a beaten-up knapsack.")
(ACTION WEAR-THE-SACK)>
<ROUTINE WEAR-THE-SACK ("AUX" ON-IN?)
<SET ON-IN? "in">
<COND (<EQUAL? ,KNAPSACK ,PRSO>
<COND (<VERB? WEAR>
<COND (<NOT <IN? ,KNAPSACK ,WINNER>>
<COND (<NOT <ITAKE>>
<RTRUE>)
(T
<COND (<NOT <EQUAL? ,PRSI ,NASTY-CROC>>
<TELL "(taken)" CR>)
(T
<TELL "(wearing it)" CR>)>)>)>
<TELL
"You swing the knapsack over your shoulders and it settles on your back as its
cover flap closes." CR>
<FCLEAR ,KNAPSACK ,OPENBIT>
<FSET ,KNAPSACK ,WEARBIT>
<THIS-IS-IT ,KNAPSACK>)
(<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,ME>>
<PERFORM ,V?WEAR ,KNAPSACK>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)
(<AND <VERB? PUT PUT-ON>
,PRSI>
<COND (<EQUAL? ,PRSI ,KNAPSACK>
<TELL "Sure. Just like a Klein Bottle, eh?" CR>
<RTRUE>)
(<EQUAL? ,PRSI ,CRACK>
<PERFORM ,PRSA ,PRSO ,GROUND>
<RTRUE>)
(<PRSI? ,FOLDED-COT>
<TELL "Bizarre!" CR>
<RTRUE>)
(<NOT <FSET? ,KNAPSACK ,WEARBIT>>
<RFALSE>)
(T
<COND (<AND <EQUAL? ,PRSI ,GROUND>
<GETP ,HERE ,P?MAP>
<NOT <IN-A-TENT?>>>
<SETG PRSI ,SAND>)>
<COND (<FSET? ,PRSI ,SURFACEBIT>
<SET ON-IN? "on">)>
<COND (<AND <EQUAL? ,HERE ,WEST-END-OF-PASSAGE>
<NOT <FSET? ,PIT ,INVISIBLE>>
<EQUAL? ,PRSI ,PIT ,GROUND>>
<TELL "Dropped." CR>
<SETG P-IT-LOC <>>)
(T <TELL
"You take the knapsack off and place it " .ON-IN? " the " D ,PRSI
". As it settles " .ON-IN? " the " D ,PRSI ", the cover flaps open." CR>)>
<FCLEAR ,KNAPSACK ,WEARBIT>
<FSET ,KNAPSACK ,OPENBIT>
<COND (<EQUAL? ,PRSI ,GROUND ,SAND>
<IDROP>)
(T
<MOVE ,KNAPSACK ,PRSI>)>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)>)
(<AND <VERB? OPEN>
<FSET? ,KNAPSACK ,WEARBIT>>
<TELL
"You reach around behind to lift the flap on the top of the knapsack, but it
keeps falling back down." CR>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)
(<AND <VERB? SHAKE>
<FSET? ,KNAPSACK ,WEARBIT>>
<TELL
"Better take it off first. Unless you want to do a few headstands." CR>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)
(<VERB? FIND>
<COND (<FSET? ,KNAPSACK ,WEARBIT>
<TELL "It's on your back!" CR>
<RTRUE>)
(T
<RFALSE>)>)
(<AND <VERB? LOOK-INSIDE EXAMINE>
<FSET? ,KNAPSACK ,WEARBIT>>
<TELL
"Your neck doesn't crane back that far. Better take it off first." CR>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)
(<VERB? DISEMBARK DROP>
<COND (<NOT <FSET? ,KNAPSACK ,WEARBIT>>
<TELL "You aren't wearing it!" CR>
<RTRUE>)
(T
<COND (<AND <EQUAL? ,HERE ,WEST-END-OF-PASSAGE>
<NOT <FSET? ,PIT ,INVISIBLE>>>
<TELL "Dropped." CR>
<SETG P-IT-LOC <>>)
(T <TELL
"You take the knapsack off and place it down. As it settles, the cover flaps
open." CR>)>
<FCLEAR ,KNAPSACK ,WEARBIT>
<FSET ,KNAPSACK ,OPENBIT>
<IDROP>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)>)
(<VERB? TAKE>
<COND (<AND <FSET? ,PRSO ,WEARBIT>
<OR <EQUAL? <GET ,P-VTBL 0> ,W?REMOVE>
<EQUAL? ,PRSI ,ME>>>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(T
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
<PERFORM ,V?WEAR ,PRSO ,NASTY-CROC>
<RTRUE>)
(T <TELL "You already have it." CR>
<RTRUE>)>)>)>)
(<EQUAL? ,KNAPSACK ,PRSI>
<COND (<VERB? PUT>
<COND (<FLAMING? ,PRSO>
<TELL
"Don't you think you should put out the " D ,PRSO " first?" CR>
<RTRUE>)
(<PRSO? ,SHOVEL ,BEAM ,CRATE>
<TELL
"That's like trying to fit a Beethoven Symphony into a music box." CR>
<RTRUE>)
(<PRSO? ,SAND ,WATER ,GLOBAL-WATER>
<TELL
"It would only seep through the roughly-stitched seams, so why bother?" CR>
<RTRUE>)
(T
<FSET ,PRSO ,TOUCHBIT>
<RFALSE>)>)
(<VERB? TAKE>
<COND (<FSET? ,KNAPSACK ,OPENBIT>
<RFALSE>)
(<FSET? ,KNAPSACK ,WEARBIT>
<TELL
"Your arms don't reach back that far, and groping around in the sack isn't the
best of ideas. It would help if you took it off first." CR>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)
(T
<TELL "The knapsack isn't open." CR>
<THIS-IS-IT ,KNAPSACK>
<RTRUE>)>)
(ELSE
<RFALSE>)>)
(T
<RFALSE>)>>
<OBJECT CRATE
(IN GLOBAL-OBJECTS)
(DESC "packing crate")
(FLAGS CONTBIT TRANSBIT TAKEBIT BURNBIT SEARCHBIT READBIT SURFACEBIT
OPENBIT)
(CAPACITY 10)
(SIZE 10)
(SYNONYM CRATE LABEL)
(ADJECTIVE PACKIN)
(FDESC
"Lying in the sand is a wooden packing crate.")
(ACTION CRATE-FCN)>
<ROUTINE CRATE-FCN ("AUX" (FLG <>))
<COND (<AND <VERB? READ EXAMINE>
<OR <IN? ,CRATE <LOC ,WINNER>>
<IN? ,CRATE ,HERE>
<IN? ,CRATE ,WINNER>
<EQUAL? <LOC ,CRATE> <LOC ,WINNER>>
<EQUAL? <LOC ,CRATE> ,WINNER>
<AND <IN? ,CRATE ,KNAPSACK>
<EQUAL? <LOC ,KNAPSACK> ,HERE>>>>
<TELL
"The crate is slightly beaten up from the landing, but it seems to have held
together fairly well. There's a small label on it that says \"This crate
contains 1 (one) black box (tm).\"" CR>
<RTRUE>)
(<AND <VERB? EXAMINE>
<IN? ,CRATE ,GLOBAL-OBJECTS>
<NOT <IN-A-TENT?>>
<G? ,MOVES 4>>
<TELL
"It's coming down, and it looks like it should land near you!" CR>)
(<AND <VERB? EXAMINE>
<IN? ,CRATE ,GLOBAL-OBJECTS>
<IN-A-TENT?>>
<TELL "I think you've got crates on the mind!" CR>)
(<AND <VERB? MUNG>
<NOT <IN? ,CRATE ,GLOBAL-OBJECTS>>>
<COND (<PRSI? ,SHOVEL ,PICK-AXE>
<TELL
"Wood chips fly from the crate, hurtling into the sand all around, as the crate
suffers your frenzied attack. The defenseless packing crate looks as if to flee
but before it can react (growing legs is a time-consuming task) there is
nothing left of it but a mere memory. (You really should seek some
psychological counselling.)" CR>
<COND (<NOT <FSET? ,BLACK-BOX ,TOUCHBIT>>
<MOVE ,BLACK-BOX ,HERE>
<FSET ,BLACK-BOX ,RMUNGBIT>)>
<REMOVE ,PRSO>
<SETG P-IT-LOC <>>
<RTRUE>)>)
(<AND <NOT <IN? ,CRATE ,GLOBAL-OBJECTS>>
<OR <VERB? BURN>
<AND <VERB? DROP>
<PRSI? ,CRATE>
<FLAMING? ,PRSO>>>>
<TELL
"Well, who would have thought it? The crate catches fire quickly, the flames
leaping about in mad abandon, gaily changing color as the heat becomes more and
more intense. You hear a sizzling">
<COND (<NOT <FSET? ,BLACK-BOX ,TOUCHBIT>>
<JIGS-UP
"... followed by an explosion which takes place right before your face.
Needless to say, your body didn't appreciate it.">)
(T
<TELL
" as the crate consumes itself in gleeful merriment." CR>
<REMOVE ,CRATE>
<SETG P-IT-LOC <>>)>
<RTRUE>)
(<VERB? STAND-UNDER>
<RFALSE>)
(<AND <VERB? BOARD>
<NOT <IN? ,CRATE GLOBAL-OBJECTS>>>
<TELL
"You couldn't fit in there unless you put yourself through a trash compacter." CR> <RTRUE>)
(<IN? ,CRATE ,GLOBAL-OBJECTS>
<TELL
"Hey, give it a chance to get here. I know you're impatient to get on with
this, but be reasonable!" CR>
<RTRUE>)
(<VERB? OPEN>
<TBL-TO-INSIDE ,CRATE ,CRATE-TBL
"The crate opens slowly, the boards creaking with the strain.">
<RTRUE>)
(<AND <VERB? CLOSE>
<NOT <FSET? ,CRATE ,SURFACEBIT>>>
<COND (<AND <IN? ,TORCH ,CRATE>
<FLAMING? ,TORCH>>
<SET FLG T>)>
<INSIDE-OBJ-TO ,CRATE-TBL ,CRATE>
<COND (.FLG
<KILL-TORCH T>)>
<RTRUE>)
(<VERB? SHAKE>
<COND (<NOT <0? <GET ,CRATE-TBL 1>>>
<TELL "Hmm. Something's in there." CR>
<RTRUE>)>)>>
<GLOBAL CRATE-TBL ;"Thirty (30) slots to hold objects in the crate"
<LTABLE BLACK-BOX 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0>>
<OBJECT BLACK-BOX
(FLAGS TAKEBIT TRYTAKEBIT CONTBIT OPENBIT SURFACEBIT)
(DESC "navigation box")
(SYNONYM BOX)
(ADJECTIVE NAVIGA BLACK)
(CAPACITY 10)
(TEXT
"This is an expensive, state-of-the-art piece of electronic equipment. It was
designed to automatically determine longitude and latitude when the button on
it is pressed. Thankfully, it has at last arrived.")
(ACTION BOX-OPENER-FCN)>
<ROUTINE BOX-OPENER-FCN ()
<COND (<VERB? OPEN>
<TELL "To do that to the " D ,BLACK-BOX " would most probably
ruin the delicate equipment inside." CR>
<RTRUE>)
(<VERB? CLOSE>
<TELL "I didn't know it was open." CR>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL <GETP ,PRSO ,P?TEXT> CR>
<RTRUE>)
(<VERB? LAMP-ON>
<PERFORM ,V?PUSH ,BUTTON>
<RTRUE>)
(<VERB? LAMP-OFF>
<TELL "It turns itself off after each button press." CR>
<RTRUE>)
(<AND <VERB? THROW THROW-DOWN MUNG ATTACK SHAKE>
<EQUAL? ,PRSO ,BLACK-BOX>>
<TELL "Rattle, rattle, jostle, crunch. Oh oh..." CR>
<FSET ,BLACK-BOX ,RMUNGBIT>
<COND (<VERB? THROW THROW-DOWN>
<MOVE ,PRSO ,HERE>)>
<RTRUE>)>>
<OBJECT BUTTON
(IN BLACK-BOX)
(FLAGS NDESCBIT)
(DESC "button")
(SYNONYM BUTTON)
(ADJECTIVE NAVIGA)
(ACTION PRESS-BUTTON-FCN)>
<GLOBAL NOISES-LTBL
<LTABLE "Crinkle fweep" "Bleeeeeeeeeep" "Sproing" "Screetchle frop"
"Breeble grungle">>
<ROUTINE PRESS-BUTTON-FCN ("AUX" (OFFS -3) LAT-S LON-S H-CK)
<COND (<VERB? PUSH>
<COND (<FSET? ,BLACK-BOX ,RMUNGBIT>
<TELL <PICK-ONE ,NOISES-LTBL> "!" CR>
<RTRUE>)
(<EQUAL? ,HERE ,ENDLESS-DESERT>
<TELL
"The box comes to life, its L.E.D.s lighting, and then flashes " N ,DEGS-LAT>
<TELL " degree">
<COND (<NOT <EQUAL? ,DEGS-LAT 1>>
<TELL "s">)>
<TELL " " N ,MINS-LAT " minute">
<COND (<NOT <EQUAL? ,MINS-LAT 1>>
<TELL "s">)>
<TELL " " N ,SECS-LAT " seconds N latitude, ">
<TELL N ,DEGS-LON>
<TELL " degree">
<COND (<NOT <EQUAL? ,DEGS-LON 1>>
<TELL "s">)>
<TELL " " N ,MINS-LON " minute">
<COND (<NOT <EQUAL? ,MINS-LON 1>>
<TELL "s">)>
<TELL " " N ,SECS-LON " seconds E longitude." CR>)
(<NOT <GETP ,HERE ,P?MAP>>
<TELL
"There's no need for that here. It's obvious where you are." CR>
<RTRUE>)
(T
<COND (<EQUAL? ,HERE ,TENT>
<SET H-CK ,P2>)
(<EQUAL? ,HERE ,TENT2>
<SET H-CK ,P7>)
(<EQUAL? ,HERE ,SUPPLY-TENT>
<SET H-CK ,P4>)
(ELSE
<SET H-CK ,HERE>)>
<REPEAT ()
<SET OFFS <+ .OFFS 3>>
<COND (<G? .OFFS 54>
<RETURN>)
(T
<COND (<EQUAL? .H-CK
<GET ,MAP-TBL .OFFS>>
<SET LON-S
<GET ,MAP-TBL <+ .OFFS 1>>>
<SET LAT-S
<GET ,MAP-TBL <+ .OFFS 2>>>
<RETURN>)>)>>
<TELL
"The box comes to life, its L.E.D.s lighting, and then flashes 24 degrees 11
minutes "
N .LAT-S
" seconds N latitude, 32 degrees 12 minutes "
N .LON-S " seconds E longitude." CR>)>)
(<VERB? FIND>
<TELL "It's on the top of the box." CR>
<RTRUE>)>>
<ROUTINE DIASMBIGUATE-FCN (OBJECT)
<COND (<IN? ,ONE-MATCH ,WINNER>
<RETURN ,ONE-MATCH>)
(<IN? ,MATCHES ,WINNER>
<COND (<NOT <FSET? ,MATCHES ,OPENBIT>>
<TELL "(opening matchbook first)" CR>
<FSET ,MATCHES ,OPENBIT>)>
<COND (<G? ,MATCH-COUNT 1>
<RETURN ,MANY-MATCHES>)
(<EQUAL? ,MATCH-COUNT 1>
<RETURN ,SINGLE-MATCH>)
(ELSE
<RETURN ,EMPTY-MATCHES>)>)
(ELSE
<RETURN ,ONE-MATCH>)>>
<GLOBAL MAP-TBL ;" Loc Long Lat seconds only!"
<TABLE RIVER-BANK 33 7
P1 35 7
P2 37 7
P3 39 7
EX1 41 7
EX2 43 7
EX3 45 7
P4 35 5
FIRE 37 5
P5 39 5
EX4 41 5
EX5 43 5
EX6 45 5
P6 35 3
P7 37 3
P8 39 3
EX7 41 3
EX8 43 3
EX9 45 3>>