Final Revision

This commit is contained in:
historicalsource 2019-04-13 21:15:11 -04:00
parent daad2bd710
commit 9be53d703b
37 changed files with 34061 additions and 195 deletions

212
archive/code.rno Normal file
View file

@ -0,0 +1,212 @@
.c;INFOTATER TEXT
.s 4
This is the copy for the "infotater" -- the rotating data wheel which
will be included in the game package. It is also an object which appears
in the game. It is important to the play of the game, and is meant as an
anti-piracy device.
.s
.c;SEM, 1/5/84
.pg
.lm 18
.rm 62
.c;BLOODWORM
.s
Found in shallow underground pools; often mistaken for mossy boulders.
Pointy, retractable fangs can extend up to 32". Most bloodworms are
repelled by the smell of boiled chives. Bloodworms are usually white -
gray - black - red - black.
.s 3
.s
.c;BROGMOID
.s
In rare cases, these squat creatures can achieve intelligence level of a
3-year-old human. Often seen in wild foraging in huge packs for edible
rocks. Live much longer in captivity; can even be trained to perform
simple tasks. Usually red - purple - red - black - purple.
.s 3
.c;DORN
.s
Can paralyze with a single glare from its powerful eyes (range: roughly
3' for young beasts to 20' for adults). Dorns commonly inhabit crags and
shadows near cliff bases. According to the last words of dying
explorers, dorn beasts are gray - purple - black - gray - white.
.s 3
.c;DRYAD
.s
Also called "tree sprite". Beautiful, shy. Many spend lifetime under one
tree. If coaxed, may reveal location of forest treasures. Will fight
only in self defense and only in large numbers, pelting foes with tons
of rose petals. When awake, dryads are black - gray - white - red - red.
.PG
.c;GRUE
.s
A sinister, lurking presence in the dark places of the earth. Favorite
snack is unwary Enchanters. Fears light: No grue has ever been seen by
the light of day. Toxicologists believe that grues are probably black -
black - red - black - purple.
.s 3
.c;HELLHOUND
.s
Fast, fierce, and capable of devouring a human 12 times its size in 3.5
seconds. Normally inhabits burnt-out or enchanted woods and rarely
ventures beyond its own turf, even in pursuit of prey. Hellhounds are
purple - white - gray - red - gray.
.s 3
.c;KOBOLD
.s
Lives in small tribes in caverns and very dark forests. Similar to
paskald, except middle toe is shorter than toes that flank it; also, far
more belligerent. If attacked, will fight back; if not attacked, will
fight back anyway. Coloration: red - purple - black - purple - red.
.s 3
.c;NABIZ
.s
A nabiz is mostly mouth, and that mouth is mostly teeth. Instinctively
attack's enemy's weak point. Contrary to folk lore, cannot fly, but
leaps vast distances. Is repulsed by the color blue; hence that color's
popularity in adventurers' garb. Nabiz are purple - black - black -
black - red.
.pg
.c;ORC
Erstwhile warring race who became civilized through their fondness for
computer adventure games. Although a small fraction (Hi-Res Orcs) enjoy
graphics adventures, the vast majority (Orcs of Zork) prefer text games.
By the light of a CRT screen, orcs are red - gray - purple - gray - red.
.s 3
.c;ROTGRUB
.s
Less than 1" long; smells like very cheap old cheese; impervious to all
forms of magic. Hides in food until ingested, then burrows straight to
victim's brain and feeds for years before death mercifully arrives.
Common household rotgrubs are gray - red - gray - purple - red.
.s 3
.c;SURMIN
.s
Characterized by malodorous breath, lice-ridden fur, and general
repulsiveness. If allowed to approach close enough, can bore its victims
to death by reciting Greater Borphee County Penal Codes. A newly-shaved
surmin is black - black - purple - red - black.
.s 3
.c;YIPPLE
.s
Master of disguise, able to change form. In the wild, may bite if
disturbed. Violently allergic to many kinds of animal wastes. Tame
yipples make wonderful pets, but should be kept out of cookie jar when
guests visit. On a white background, yipples look gray - purple - white
- purple - black.
.pg
.LM 18
.RM 62
.c;BLOODWORM
.s
Bloodworms live in shallow underground pools of water, often appearing
as mossy boulders to an unwary observer. Their pointy, retractable fangs
can extend up to 32 inches when attacking a victim. Most bloodworms are
repelled by the taste and smell of boiled chives; always carry some if
you plan on venturing near known bloodworm spawning grounds. Bloodworms
are usually white and gray and black and red and gray.
.s 2
.c;BROGMOID
.s
Brogmoids are squat creatures who can, in rare cases, achieve the
intelligence of a three-year-old human. If raised from birth in a
domestic setting, a brogmoid will be quite tame and can even be taught
to perform simple tasks. In the wild, brogmoids can be seen in huge
packs sorting through rock piles looking for edible rocks. Brogmoids,
which live considerably longer in captivity, are red and purple and red
and black and purple.
.s 2
.c;DORN
.s
Dorn beasts are very deadly and should be avoided at all costs. They
generally live in crags and shadows near cliff bases. A dorn beast can
paralyze its victim with a single glare from its powerful eyes. A dorn
beast stare has a range of about three feet in a young dorn beastling up
to about twenty feet in a full grown dorn. According to the last words
of dying explorers, dorn beasts are gray and purple and black and gray
and white.
.s 2
.c;DRYAD
.s
Dryads, also known as tree sprites, are beautiful and shy. They can
frequently live their entire lives without stepping out of the shade of
the tree they were born under. Dryads, if coaxed, can reveal the
location of forest treasures. They are only dangerous in large numbers,
and then only if threatened. In these circumstances, they have been
known to crush their attackers under tons and tons of rose petals.
Dryads, when awake, are black and gray and white and red and red.
.pg
.C;GRUE
.s
The grue is a sinister, lurking presence in the dark places of the
earth. Its favorite diet is Enchanters, but its insatiable appetite is
tempered by its fear of light. No grue has ever been seen by the light
of day, and few have survived to tell the tale. Grues are probably black
and black and red and black and purple.
.s 2
.c;HELLHOUND
.s
The best thing to do when you spot a hellhound is to run as fast as
possible in the other direction. Hellhounds are fast, ferocious,
merciless, and capable of devouring a human 12 times its size in
three-and-one-half seconds. They normally live in burned-out or
enchanted woods, and rarely venture beyond their turf, even in pursuit
of prey. Hellhounds are purple and white and gray and red and gray.
.s 2
.c;KOBOLD
.s
Kobolds, who live in small tribes in caverns or very dark forests, are
extremely capable fighters. If attacked, they will fight back. If not
attacked, they will fight back anyway. Kobolds look very similar to the
less aggressive paskalds, but can be immediately identified by the fact
that their middle toes are slightly shorter than the toes which flank
it. Kobolds are red and purple and black and purple and red.
.s 2
.c;NABIZ
.s
Nabiz are mostly mouth, and that mouth is mostly teeth. Nabiz always
instinctively know exactly what their enemy's weakest point is, and
attack there. Contrary to popular folk lore, they cannot fly, but they
can leap tremendous distances. Nabiz are repulsed by the color blue,
which explains the popularity of this color among adventurer's garb.
Common nabiz are purple and black and black and black and red.
.pg
.c;ORC
.s
Once a fearsome race of warriors, the orcs were tamed by their fondness
for computerized adventure games. Although a small segment, known as the
Hi-Res Orcs, enjoy graphic adventurers, the vast majority prefer text
games. These are known as the Orcs of Zork. In the reflected light of a
CRT screen, orcs appear to be red and gray and purple and gray and red.
.s 2
.c;ROTGRUB
.s
The rotgrub is less than an inch long, and lies waiting in food. Once
ingested, the rotgrub heads straight for the brain and begins feeding.
Rotgrub death is excrutiatingly painful and can last years. Worse yet,
these pests are totally impervious to all forms of magic, and smell like
very old cheeses. A common house rotgrub is gray and red and gray and
purple and red.
.s 2
.c;SURMIN
.s
From their malodorous breath to their lice-ridden fur, surmins are
utterly repulsive creatures. If they can get close enough, they can bore
their victim to death by reciting New Jersey State Penal Codes. A newly
shaven surmin is black and black and purple and red and purple.
.s 2
.c;YIPPLE
.s
The yipple is a master of disguise. As the chameleon is to color, so is
the yipple to shape and form. Some yipples, if disturbed in the wild,
may bite. Domesticated, they make wonderful pets, but should never be
allowed to rest in the cookie jar if guests are expected. Yipples are
violently allergic to many kinds of animal wastes. A yipple, if placed
on a plain white tablecloth, becomes gray and purple and white and
purple and black.

BIN
archive/sorcerer.beta Normal file

Binary file not shown.

BIN
archive/sorcerer.gamma Normal file

Binary file not shown.

985
belboz.zap Normal file
View file

@ -0,0 +1,985 @@
.FUNCT I-WAKE-UP
CALL JIGS-UP,STR?190
RSTACK
.FUNCT TREE-F
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \?ELS5
CALL DO-WALK,P?UP
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-DOWN \?ELS7
CALL DO-WALK,P?DOWN
RSTACK
?ELS7: EQUAL? PRSA,V?LOOK-UNDER \?ELS9
CALL PERFORM,V?EXAMINE,GROUND
RTRUE
?ELS9: EQUAL? PRSA,V?MEEF \FALSE
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,V?MEEF,FOREST
RTRUE
.FUNCT HELLHOUND-F
EQUAL? PRSA,V?RESEARCH \FALSE
CALL PERFORM,V?RESEARCH,LOBBY
RTRUE
.FUNCT I-HELLHOUND
EQUAL? HERE,TWISTED-FOREST \?ELS5
ZERO? HELLHOUND-WARNING /?ELS10
CALL JIGS-UP,STR?192
RSTACK
?ELS10: SET 'HELLHOUND-WARNING,TRUE-VALUE
CRLF
PRINTR "A hellhound is racing straight toward you, its open jaws displaying rows of razor-sharp teeth."
?ELS5: EQUAL? HERE,TREE-BRANCH \?ELS17
PRINTR "The hellhound leaps madly about the base of the tree, gnashing its jaws."
?ELS17: MOVE HELLHOUND,DIAL
CALL INT,I-HELLHOUND
PUT STACK,0,0
PRINTR "The hellhound stops at the edge of the forest and bellows. After a moment, it turns and slinks into the trees."
.FUNCT TREE-BRANCH-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You are "
ZERO? FLYING /?ELS10
PRINTI "flying near"
JUMP ?CND8
?ELS10: PRINTI "on"
?CND8: PRINTR " a large gnarled branch of an old and twisted tree."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL QUEUE,I-BOA,-1
PUT STACK,0,1
RFALSE
.FUNCT TREE-UP-F
PRINTI "You can't "
ZERO? FLYING /?ELS5
PRINTI "fly"
JUMP ?CND3
?ELS5: PRINTI "climb"
?CND3: PRINTI " any higher."
CRLF
RFALSE
.FUNCT BOA-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "Your average giant carnivorous snake -- except that this one has three heads and an appetite to match."
.FUNCT I-BOA
EQUAL? HERE,TREE-BRANCH \?ELS5
ZERO? FLYING \FALSE
ZERO? BOA-WARNING /?ELS13
CALL JIGS-UP,STR?193
RSTACK
?ELS13: SET 'BOA-WARNING,TRUE-VALUE
CRLF
PRINTR "A giant boa constrictor is slithering along the branch toward you!"
?ELS5: SET 'BOA-WARNING,FALSE-VALUE
CALL INT,I-BOA
PUT STACK,0,0
RFALSE
.FUNCT FENCE-PSEUDO
EQUAL? PRSA,V?LEAP,V?CLIMB-FOO,V?CLIMB-OVER \FALSE
PRINTR "It's too tall."
.FUNCT SIGNPOST-F
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
"" *** !!! >>> WARNING <<< !!! ***
This path is protected by a
Magic Mine Field
installed by the
Frobozz Magic Mine Field Company"
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT MINE-FIELD-EXIT-F
EQUAL? PRSO,P?SOUTH \?ELS5
RANDOM 100
LESS? 50,STACK /?ELS5
RETURN FOREST-EDGE
?ELS5: ZERO? FLYING /?CND10
PRINTI "Unfortunately, one of the properties of magic mine fields is their ability to blow you up even if you're floating above them. "
?CND10: CALL JIGS-UP,STR?198
RFALSE
.FUNCT SNAKE-PIT-PSEUDO
EQUAL? PRSA,V?THROUGH \FALSE
CALL LOOK-AROUND-YOU
RSTACK
.FUNCT CRACK-PSEUDO
EQUAL? PRSA,V?THROUGH \FALSE
CALL DO-WALK,P?DOWN
RSTACK
.FUNCT SNAKE-PIT-F,RARG
EQUAL? RARG,M-ENTER \FALSE
RANDOM 3
ADD 1,STACK
CALL QUEUE,I-SNAKE-PIT,STACK
PUT STACK,0,1
RFALSE
.FUNCT I-SNAKE-PIT
EQUAL? HERE,SNAKE-PIT \?ELS5
CALL JIGS-UP,STR?200
RSTACK
?ELS5: CALL INT,I-SNAKE-PIT
PUT STACK,0,0
RTRUE
.FUNCT MOSS-F
EQUAL? PRSA,V?MEEF \?ELS5
PRINTR "A few patches of the moss and lichens become brown and dry."
?ELS5: EQUAL? PRSA,V?EAT \FALSE
CALL JIGS-UP,STR?202
RSTACK
.FUNCT MEADOW-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
CALL QUEUE,I-LOCUSTS,-1
PUT STACK,0,1
RFALSE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in the center of a "
IN? MEADOW-OBJECT,HERE \?ELS12
PRINTI "rolling meadow of tall grass"
JUMP ?CND10
?ELS12: PRINTI "barren field"
?CND10: PRINTR ". To the east is the turret of a ruined castle, and from the northeast comes the sound of rushing water."
.FUNCT MEADOW-OBJECT-F
EQUAL? HERE,MEADOW /?ELS5
EQUAL? PRSA,V?MEEF,V?RUB \?ELS5
PRINTR "The meadow is too far away."
?ELS5: EQUAL? PRSA,V?MEEF \FALSE
MOVE MEADOW-OBJECT,DIAL
PRINTR "The grass vanishes as far as the eye can see."
.FUNCT PLAGUE-OF-LOCUSTS-F
EQUAL? PRSA,V?LOOK-UNDER \FALSE
CALL PERFORM,V?EXAMINE,MEADOW-OBJECT
RTRUE
.FUNCT I-LOCUSTS
EQUAL? HERE,MEADOW /?ELS5
CALL INT,I-LOCUSTS
PUT STACK,0,0
SET 'LOCUST-WARNING,0
RFALSE
?ELS5: ZERO? LOCUST-WARNING \?ELS7
INC 'LOCUST-WARNING
CRLF
PRINTR "A swarm of bloodsucking locusts appears on the horizon."
?ELS7: EQUAL? LOCUST-WARNING,1 \?ELS11
INC 'LOCUST-WARNING
CRLF
PRINTR "The locusts are much closer now, blotting out the sun like a black storm cloud."
?ELS11: SET 'LOCUST-WARNING,0
CALL JIGS-UP,STR?203
RSTACK
.FUNCT RIVER-BANK-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You are on a muddy bank "
ZERO? RIVER-EVAPORATED /?ELS10
PRINTI "above a dried-up river bed"
JUMP ?CND8
?ELS10: PRINTI "of a fast-moving river, full of sharp rocks and foaming rapids, flowing to the southwest. The ground is soft and eroded, and continually threatens to dump you into the turbulent waters"
?CND8: PRINTR ". A field lies to the southwest, and a trail leads southeast along the bank."
?ELS5: EQUAL? RARG,M-END \FALSE
LESS? BANK-COUNTER,3 \?ELS26
INC 'BANK-COUNTER
RFALSE
?ELS26: ZERO? RIVER-EVAPORATED \FALSE
ZERO? FLYING \FALSE
RANDOM 100
LESS? 75,STACK /FALSE
CALL JIGS-UP,STR?205
RSTACK
.FUNCT ROCK-PSEUDO
EQUAL? PRSA,V?CROSS \FALSE
CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
.FUNCT RIVER-ENTER-F
ZERO? RIVER-EVAPORATED /?ELS5
RETURN RIVER-BED
?ELS5: ZERO? FLYING /?ELS8
CALL JIGS-UP,STR?206
RFALSE
?ELS8: PRINTI "You'd never survive the rapids."
CRLF
RFALSE
.FUNCT RIVER-F
EQUAL? HERE,GUN-EMPLACEMENT,TURRET \?ELS5
PRINTR "The river lies far below."
?ELS5: ZERO? RIVER-EVAPORATED /?ELS9
PRINTR "River? What river?"
?ELS9: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS14
CALL PERFORM,V?DRINK,WATER
RTRUE
?ELS14: EQUAL? PRSA,V?PULVER \?ELS16
EQUAL? HERE,RIVER-BANK \?ELS21
SET 'RIVER-EVAPORATED,TRUE-VALUE
CALL QUEUE,I-TRICKLE,3
PUT STACK,0,1
PRINTR "The river dries up, leaving only a few puddles between the rocks! It's now safe to climb down into the river bed."
?ELS21: PRINTR "The water level drops several feet, but quickly surges back."
?ELS16: EQUAL? PRSA,V?EXAMINE \?ELS29
PRINTR "The river flows quickly by below you."
?ELS29: EQUAL? PRSA,V?PUT \?ELS33
EQUAL? RIVER,PRSI \?ELS33
MOVE PRSO,DIAL
CALL SPLASH
RSTACK
?ELS33: EQUAL? PRSA,V?THROUGH \FALSE
CALL DO-WALK,P?NORTH
RSTACK
.FUNCT I-TRICKLE
CALL QUEUE,I-FLOOD,2
PUT STACK,0,1
EQUAL? HERE,RIVER-BANK,RIVER-BED /?THN6
EQUAL? HERE,STAGNANT-POOL,TOP-OF-FALLS \FALSE
?THN6: CRLF
PRINTR "A trickle of water begins flowing down the center of the river bed."
.FUNCT I-FLOOD
SET 'RIVER-EVAPORATED,FALSE-VALUE
CALL FLOOD-LOOP,RIVER-BED
CALL FLOOD-LOOP,STAGNANT-POOL
CALL FLOOD-LOOP,TOP-OF-FALLS
CRLF
EQUAL? HERE,STAGNANT-POOL,RIVER-BED,TOP-OF-FALLS \?ELS5
CALL JIGS-UP,STR?207
RSTACK
?ELS5: EQUAL? HERE,RIVER-BANK \?ELS7
PRINTR "A wall of water rushes down the river bed as the river returns with a vengeance."
?ELS7: EQUAL? HERE,HIDDEN-CAVE \FALSE
PRINTR "There is a roar of water from outside the cave. The lower part of the cave, near the mouth, fills with a pool of swirling water!"
.FUNCT FLOOD-LOOP,LOC,X,N
FIRST? LOC >X /?KLU14
?KLU14: ZERO? X /TRUE
?PRG4: NEXT? X >N /?KLU15
?KLU15: EQUAL? X,PROTAGONIST /?CND6
MOVE X,DIAL
?CND6: ZERO? N /TRUE
SET 'X,N
JUMP ?PRG4
.FUNCT UNDERGROWTH-F
EQUAL? PRSA,V?MEEF \FALSE
PRINTR "The nearest part of the undergrowth withers away ... revealing more undergrowth."
.FUNCT BANKS-F
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-DOWN,V?CLIMB-UP \FALSE
CALL V-WALK-AROUND
RSTACK
.FUNCT RIVER-BED-OBJECT-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,RIVER-BANK \?ELS10
CALL DO-WALK,P?DOWN
RSTACK
?ELS10: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \FALSE
EQUAL? HERE,RIVER-BANK \?ELS19
CALL LOOK-AROUND-YOU
RSTACK
?ELS19: CALL DO-WALK,P?UP
RSTACK
.FUNCT RIVER-BED-F,RARG
EQUAL? RARG,M-ENTER \FALSE
PUT VEZZAS,1,0
RFALSE
.FUNCT PUDDLE-PSEUDO
EQUAL? PRSA,V?THROUGH \?ELS5
PRINTR "The puddles are very shallow."
?ELS5: EQUAL? PRSA,V?PULVER \FALSE
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,V?PULVER,WATER
RTRUE
.FUNCT FISH-PSEUDO
EQUAL? PRSA,V?TAKE \FALSE
PRINTR "They squirm from your grasp."
.FUNCT TENTACLE-DEATH
ZERO? FLYING /?ELS3
PRINTI "You fly over the surface of the pool."
JUMP ?CND1
?ELS3: PRINTI "You wade into the stagnant pool."
?CND1: CALL JIGS-UP,STR?210
RFALSE
.FUNCT RIVER-EXIT-F
PRINTI "The banks are too "
ZERO? FLYING /?ELS5
PRINTI "high to fly over."
CRLF
RFALSE
?ELS5: PRINTI "steep to climb."
CRLF
RFALSE
.FUNCT WATERFALL-EXIT-F
ZERO? FLYING /?ELS3
PRINTI "That would be foolhardy, as flying spells are of limited duration."
CRLF
RFALSE
?ELS3: PRINTI "That would involve quite a plunge."
CRLF
RFALSE
.FUNCT TOP-OF-CLIFF-PSEUDO
EQUAL? PRSA,V?CLIMB-DOWN \?ELS5
PRINTR "Impossible."
?ELS5: EQUAL? PRSA,V?LEAP \FALSE
CALL JIGS-UP,STR?212
RSTACK
.FUNCT HAZE-PSEUDO
EQUAL? PRSA,V?RUB \FALSE
PRINTR "From here?"
.FUNCT WATERFALL-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "It's no Aragain Falls, but it's pretty impressive."
?ELS5: EQUAL? PRSA,V?LEAP \?ELS9
EQUAL? HERE,TOP-OF-FALLS \?ELS9
SET 'PRSO,FALSE-VALUE
CALL PERFORM,V?LEAP
RTRUE
?ELS9: EQUAL? HERE,MOUTH-OF-RIVER,TURRET \FALSE
EQUAL? PRSA,V?SMELL,V?RUB,V?LEAP /?THN16
EQUAL? PRSA,V?LISTEN \FALSE
?THN16: PRINTR "From here?"
.FUNCT HIDDEN-CAVE-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
FSET? HIDDEN-CAVE,TOUCHBIT /?ELS5
ADD SCORE,20 >SCORE
RETURN SCORE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is a hollow area under the northeast bank of the river. The floor rises away from the mouth of the cave, which is at its southwest end. "
ZERO? RIVER-EVAPORATED \?CND12
PRINTI "The mouth is filled with a pool of swirling water. "
?CND12: PRINTR "A dark hole leads downward at the far end of the cave."
.FUNCT BAT-GUANO-F
EQUAL? PRSA,V?TAKE \FALSE
FSET? FWEEP-SCROLL,TOUCHBIT /FALSE
FSET FWEEP-SCROLL,TOUCHBIT
FSET BAT-GUANO,TOUCHBIT
FCLEAR BAT-GUANO,TRYTAKEBIT
FCLEAR BAT-GUANO,NDESCBIT
MOVE BAT-GUANO,PROTAGONIST
PRINTR "As you take the guano, the soiled scroll falls to the ground."
.FUNCT BLORT-VIAL-F
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
""BLORT POTION
(ability to see in dark places)"""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT BLORT-POTION-F
EQUAL? PRSA,V?DRINK,V?EAT \?ELS5
CALL HELD?,BLORT-VIAL
ZERO? STACK \?ELS5
CALL POTION-POUR,BLORT-VIAL
RSTACK
?ELS5: EQUAL? PRSA,V?RESEARCH \?ELS9
CALL READ-ABOUT-POTIONS,1
RSTACK
?ELS9: EQUAL? PRSA,V?DRINK,V?EAT \?ELS11
MOVE BLORT-POTION,DIAL
ZERO? UNDER-INFLUENCE /?CND12
CALL TWO-POTIONS
RTRUE
?CND12: CALL QUEUE,I-UNBLORT,24
PUT STACK,0,1
SET 'BLORTED,TRUE-VALUE
SET 'UNDER-INFLUENCE,BLORT-POTION
PRINTR "The amber potion tasted like chives, and made your eyes tingle."
?ELS11: EQUAL? PRSA,V?DROP \?ELS19
CALL PERFORM,V?POUR,PRSO,PRSI
RTRUE
?ELS19: EQUAL? PRSA,V?POUR \FALSE
EQUAL? PRSO,BLORT-POTION \FALSE
CALL POTION-POUR,BLORT-VIAL
RSTACK
.FUNCT I-UNBLORT
SET 'BLORTED,FALSE-VALUE
EQUAL? UNDER-INFLUENCE,BLORT-POTION \?CND1
SET 'UNDER-INFLUENCE,FALSE-VALUE
?CND1: CRLF
PRINTI "Your eyes tingle for a moment."
ZERO? LIT \?CND6
PRINTI " You can no longer see anything around you!"
?CND6: CRLF
RTRUE
.FUNCT I-UNFWEEP
SET 'FWEEPED,FALSE-VALUE
SET 'FLYING,FALSE-VALUE
CRLF
PRINTI "After a moment of futilely flapping your arms, you realize that the fweep spell has worn off. "
EQUAL? HERE,GLASS-MAZE \?ELS5
CALL NO-FLOOR?
ZERO? STACK /?ELS5
CALL JIGS-UP,STR?216
JUMP ?CND3
?ELS5: EQUAL? HERE,TREE-BRANCH \?ELS9
CALL SETTLE-ONTO-BRANCH
JUMP ?CND3
?ELS9: EQUAL? HERE,LAGOON \?ELS11
CALL SPLASH-INTO-WATER
JUMP ?CND3
?ELS11: PRINTI "You fall several feet to the ground."
CRLF
?CND3: GRTR? AWAKE,8 \FALSE
CALL I-TIRED
RSTACK
.FUNCT DRAWBRIDGE-F,RARG
EQUAL? RARG,M-END \?ELS5
ZERO? FLYING \?ELS5
ZERO? DRAWBRIDGE-MOVE /?ELS12
RANDOM 100
LESS? 40,STACK /?ELS18
PRINTI "With a scream of splintering wood, part of the drawbridge collapses and spills you into the moat. "
CALL DO-WALK,P?DOWN
RSTACK
?ELS18: PRINTR "The bridge continues to creak."
?ELS12: SET 'DRAWBRIDGE-MOVE,TRUE-VALUE
RFALSE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are "
ZERO? FLYING /?ELS33
PRINTI "floating over"
JUMP ?CND31
?ELS33: PRINTI "standing on"
?CND31: PRINTI " the drawbridge of a ruined castle which lies to your east. The wood of the bridge looks severely rotted"
ZERO? FLYING /?ELS45
PRINTI ". The moat is"
JUMP ?CND43
?ELS45: PRINTI " and creaks ominously beneath you. The moat, although an easy dive from here, looks dangerous,"
?CND43: PRINTR " full of sinister shapes beneath the surface of the water. To the west is a wide field."
.FUNCT DRAWBRIDGE-EXIT-F
CALL JIGS-UP,STR?217
RFALSE
.FUNCT MOAT-F
EQUAL? PRSA,V?PULVER \?ELS5
PRINTR "The moat dries up, leaving vicious-looking creatures flopping around in puddles. Immediately, the castle's automatic moat-filler turns on, and refills the moat."
?ELS5: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS9
CALL PERFORM,V?DRINK,WATER
RTRUE
?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS11
PRINTR "The water is murky, and lily pads cover most of the surface. Dark shapes swim about below the surface."
?ELS11: EQUAL? PRSA,V?THROUGH,V?LEAP \FALSE
CALL DO-WALK,P?DOWN
RSTACK
.FUNCT BRIDGE-F
EQUAL? PRSA,V?LOOK-UNDER \?ELS5
CALL PERFORM,V?EXAMINE,MOAT
RTRUE
?ELS5: EQUAL? PRSA,V?LISTEN \FALSE
PRINTR "Creak, creak."
.FUNCT TURRET-PSEUDO
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,RUINS \?ELS10
CALL DO-WALK,P?UP
RSTACK
?ELS10: EQUAL? HERE,MEADOW \?ELS12
CALL CANT-ENTER,IT
RSTACK
?ELS12: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \?ELS16
EQUAL? HERE,TURRET \?ELS21
CALL DO-WALK,P?DOWN
RSTACK
?ELS21: CALL LOOK-AROUND-YOU
RSTACK
?ELS16: EQUAL? PRSA,V?LEAP \FALSE
EQUAL? HERE,TURRET \FALSE
SET 'PRSO,FALSE-VALUE
CALL PERFORM,V?LEAP
RTRUE
.FUNCT TORTURE-DEVICES-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "All the usual torture devices are here, all quite mean and deadly looking."
.FUNCT FLAXO-VIAL-F
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
""FLAXO POTION
(exquisite torture)"""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT FLAXO-POTION-F
EQUAL? PRSA,V?DRINK,V?EAT \?ELS5
CALL HELD?,FLAXO-VIAL
ZERO? STACK \?ELS5
CALL POTION-POUR,FLAXO-VIAL
RSTACK
?ELS5: EQUAL? PRSA,V?RESEARCH \?ELS9
CALL READ-ABOUT-POTIONS,2
RSTACK
?ELS9: EQUAL? PRSA,V?DRINK,V?EAT \?ELS11
MOVE FLAXO-POTION,DIAL
PRINTI "The potion tastes like a combination of anchovies, prune juice, and garlic powder. As you finish swallowing the potion, a well-muscled troll saunters in"
EQUAL? HERE,TORTURE-CHAMBER \?CND14
PRINTI " and straps you to a torture device"
?CND14: PRINTR ". He whacks your head with a wooden two-by-four, grunting ""You are playing Sorcerer. It was written by S. Eric Meretzky. You will have fun and enjoy yourself."" He repeats this action 999 more times, then vanishes without a trace."
?ELS11: EQUAL? PRSA,V?DROP \?ELS22
CALL PERFORM,V?POUR,PRSO,PRSI
RTRUE
?ELS22: EQUAL? PRSA,V?POUR \FALSE
EQUAL? PRSO,FLAXO-POTION \FALSE
CALL POTION-POUR,FLAXO-VIAL
RSTACK
.FUNCT PIT-OF-BONES-EXIT-F
ZERO? FLYING /?ELS3
PRINTI "You can't fly high enough to reach the hole."
CRLF
RFALSE
?ELS3: PRINTI "The hole is too high to reach."
CRLF
RFALSE
.FUNCT BONES-PSEUDO
EQUAL? PRSA,V?DIG,V?SEARCH,V?TAKE \?ELS5
PRINTR "They're at the bottom of the pit."
?ELS5: EQUAL? PRSA,V?MALYON \FALSE
CALL JIGS-UP,STR?225
RSTACK
.FUNCT PIT-PSEUDO
EQUAL? PRSA,V?THROUGH,V?LEAP \?ELS5
CALL DO-WALK,P?DOWN
RSTACK
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "Bones. Lots of bones."
.FUNCT TOLL-GATE-CROSSING-F
FSET? GATE,OPENBIT \?ELS5
RETURN OUTSIDE-STORE
?ELS5: ZERO? FLYING /?ELS7
CALL PERFORM,V?CLIMB-OVER,GATE
RFALSE
?ELS7: PRINTI "A sturdy toll gate blocks the highway."
CRLF
RFALSE
.FUNCT GATE-F
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
CALL OPEN-CLOSE
ZERO? STACK \TRUE
PRINTR "Only the gnome can do that."
?ELS5: EQUAL? PRSA,V?REZROV \?ELS16
FSET? GATE,OPENBIT /FALSE
ZERO? GNOME-SLEEPING /?ELS23
SET 'GNOME-SLEEPING,FALSE-VALUE
CALL QUEUE,I-GNOME,2
PUT STACK,0,1
PRINTR "The gate flies open, waking the gnome, who leaps up and slams it closed again. ""Hey! This is a toll gate! Nobody gets through here without paying the one zorkmid toll. Not nobody, not no how."""
?ELS23: SET 'GNOME-SLEEPING,TRUE-VALUE
CALL JIGS-UP,STR?228
RSTACK
?ELS16: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-OVER \FALSE
PRINTR "The gate extends to the roof of the tunnel, and there are pointed nasties all over it."
.FUNCT BOOTH-F
EQUAL? PRSA,V?THROUGH \?ELS5
FSET? GATE,OPENBIT \?ELS10
CALL JIGS-UP,STR?229
RSTACK
?ELS10: PRINTR "The booth is on the other side of the toll gate."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
FSET? GATE,OPENBIT \?ELS21
PRINTR "It's dark inside the toll booth."
?ELS21: CALL PERFORM,V?THROUGH,BOOTH
RTRUE
.FUNCT GNOME-DESCFCN,RARG
ZERO? GNOME-SLEEPING /?ELS5
PRINTR "A fat old gnome with a long white beard is sleeping soundly just outside the toll booth. His loud snores echo around the caverns."
?ELS5: PRINTR "A chubby gnome stands behind the toll gate, grinning broadly."
.FUNCT GNOME-F
EQUAL? GNOME,WINNER \?ELS5
ZERO? GNOME-SLEEPING /?ELS10
CALL POOR-LISTENERS
CALL STOP
RSTACK
?ELS10: EQUAL? PRSA,V?OPEN \?ELS13
EQUAL? PRSO,GATE \?ELS13
PRINTR """You'll have to pay the toll first,"" explains the gnome cheerfully, ""and the toll is one zorkmid."""
?ELS13: PRINTI """Conversing with customers is disallowed by union rules."""
CRLF
CALL STOP
RSTACK
?ELS5: EQUAL? PRSA,V?KICK,V?SHAKE \?ELS23
ZERO? GNOME-SLEEPING /?ELS23
CALL PERFORM,V?ALARM,GNOME
RTRUE
?ELS23: EQUAL? PRSA,V?LISTEN \?ELS27
ZERO? GNOME-SLEEPING /?ELS27
PRINTR "The gnome snores loudly."
?ELS27: EQUAL? PRSA,V?ALARM \?ELS33
ZERO? GNOME-SLEEPING \?ELS38
PRINTR "He's awake!"
?ELS38: FSET? GATE,OPENBIT \?ELS42
PRINTR "The gnome opens one eye and looks at you. ""You again! Just go through. Let me sleep."" He begins snoring again."
?ELS42: ZERO? GNOME-ANNOYED /?ELS46
CALL JIGS-UP,STR?230
RSTACK
?ELS46: SET 'GNOME-SLEEPING,FALSE-VALUE
CALL QUEUE,I-GNOME,2
PUT STACK,0,1
PRINTR "The gnome stirs a bit and opens one eye, which wanders around until it notices you. He jumps to his feet. ""One zorkmid, please,"" he yells with a smile."
?ELS33: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT,V?GIVE \?ELS53
ZERO? GNOME-SLEEPING /?ELS53
PRINTR "The gnome is asleep, remember?"
?ELS53: FSET? GATE,OPENBIT \?ELS59
EQUAL? PRSA,V?REACH-IN,V?LOOK-INSIDE,V?SEARCH /?THN62
EQUAL? PRSA,V?PICK \?ELS59
?THN62: ZERO? COIN-STOLEN \?ELS59
ZERO? FWEEPED \?ELS59
SET 'COIN-STOLEN,TRUE-VALUE
MOVE ZORKMID,PROTAGONIST
PRINTR "You carefully search the sleeping gnome, and take the zorkmid coin you find in his pocket!"
?ELS59: EQUAL? PRSA,V?GIVE \?ELS67
EQUAL? PRSO,ZORKMID \?ELS67
FSET? ZORKMID,ONBIT \?CND70
CALL GNOME-REFUSES
RTRUE
?CND70: FSET GATE,OPENBIT
SET 'GNOME-SLEEPING,TRUE-VALUE
MOVE ZORKMID,DIAL
CALL INT,I-GNOME
PUT STACK,0,0
ADD SCORE,20 >SCORE
PRINTR "The gnome pockets the coin and opens the gate. Before you can take a step the gnome falls asleep again."
?ELS67: EQUAL? PRSA,V?YOMIN \FALSE
ZERO? GNOME-SLEEPING /?ELS81
PRINTR "The thoughts of the sleeping gnome are focused on certain activities involving female gnomes. Embarrassed, you withdraw."
?ELS81: PRINTR "The thoughts of the gnome seem evenly divided between getting money from you and getting back to sleep."
.FUNCT GNOME-REFUSES
PRINTR "The gnome refuses, saying ""That coin is giving off light, and is therefore not legal tender."""
.FUNCT I-GNOME
CALL QUEUE,I-GNOME,-1
PUT STACK,0,1
EQUAL? HERE,TOLL-GATE \?ELS5
INC 'PATIENCE-COUNTER
EQUAL? PATIENCE-COUNTER,5 \?ELS10
SET 'GNOME-SLEEPING,TRUE-VALUE
CALL INT,I-GNOME
PUT STACK,0,0
SET 'GNOME-ANNOYED,TRUE-VALUE
CRLF
PRINTR """Thanks for nothing, chum,"" growls the gnome as he resumes his nap."
?ELS10: CRLF
PRINTR """Well?"" asks the gnome, tapping impatiently. ""You've interrupted my nap. Are you going to pay the toll, or not?"""
?ELS5: SET 'GNOME-SLEEPING,TRUE-VALUE
SET 'PATIENCE-COUNTER,3
CALL INT,I-GNOME
PUT STACK,0,0
RFALSE
.FUNCT SIGN-PSEUDO
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
""ZEKE'S APPLIANCE STORE
Official outlet for all
Frobozz Magic Appliances"""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT STORE-PSEUDO
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,STORE \?ELS10
CALL LOOK-AROUND-YOU
RSTACK
?ELS10: CALL DO-WALK,P?SOUTH
RSTACK
?ELS5: EQUAL? PRSA,V?DROP,V?EXIT \?ELS14
EQUAL? HERE,STORE \?ELS19
CALL DO-WALK,P?NORTH
RSTACK
?ELS19: CALL LOOK-AROUND-YOU
RSTACK
?ELS14: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
EQUAL? HERE,STORE \?ELS28
CALL LOOK-AROUND-YOU
RSTACK
?ELS28: CALL MAKE-OUT
RSTACK
.FUNCT WAXER-F
EQUAL? PRSA,V?LAMP-ON \?ELS5
CALL HELD?,WAXER
ZERO? STACK /?ELS10
PRINTR "Better put it down, first."
?ELS10: ZERO? FWEEPED /?ELS14
CALL BATTY
RSTACK
?ELS14: EQUAL? HERE,LAGOON,LAGOON-FLOOR \?ELS17
CALL JIGS-UP,STR?233
RSTACK
?ELS17: EQUAL? HERE,MINE-FIELD \?ELS19
SET 'FLYING,FALSE-VALUE
MOVE WAXER,DIAL
CALL DO-WALK,P?NORTH
RSTACK
?ELS19: PRINTI "The waxer whirrs about the "
LOC PROTAGONIST
FSET? STACK,VEHBIT \?ELS26
PRINTI "vehicle"
JUMP ?CND24
?ELS26: PRINTI "room"
?CND24: PRINTR " for a minute, polishing the floor."
?ELS5: EQUAL? PRSA,V?LAMP-OFF \FALSE
PRINTR "It is."
.FUNCT CRATER-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are "
ZERO? FLYING /?ELS10
PRINTI "floating near"
JUMP ?CND8
?ELS10: PRINTI "standing in"
?CND8: PRINTR " the center of an enormous crater, strewn with debris. Several points around the perimeter look climbable."
.FUNCT CRATER-OUT-F
CALL V-WALK-AROUND
RFALSE
.FUNCT CRATER-EXIT-F
ZERO? FLYING /?ELS5
PRINTI "As you try to fly over the rim here, a heavy gust of wind blows you back."
CRLF
RFALSE
?ELS5: PRINTI "You attempt to climb the rim here, but the rubble is loose and you slide back down."
CRLF
RFALSE
.FUNCT CRATER-PSEUDO
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,CRATER \?ELS10
PRINTR "Where do you think you are?"
?ELS10: EQUAL? HERE,EDGE-OF-CRATER \?ELS14
CALL DO-WALK,P?SW
RSTACK
?ELS14: EQUAL? HERE,EDGE-OF-CHASM \?ELS16
CALL DO-WALK,P?EAST
RSTACK
?ELS16: EQUAL? HERE,SLIMY-ROOM \?ELS18
CALL DO-WALK,P?SOUTH
RSTACK
?ELS18: CALL DO-WALK,P?NORTH
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-FOO \?ELS22
CALL V-WALK-AROUND
RSTACK
?ELS22: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?LEAVE \FALSE
EQUAL? HERE,CRATER \?ELS29
CALL DO-WALK,P?UP
RSTACK
?ELS29: CALL LOOK-AROUND-YOU
RSTACK
.FUNCT CHASM-EXIT-F
ZERO? FLYING /?ELS5
PRINTI "You fly easily across the chasm..."
CRLF
CRLF
EQUAL? HERE,BARE-PASSAGE \?ELS13
RETURN EDGE-OF-CHASM
?ELS13: RETURN BARE-PASSAGE
?ELS5: PRINTI "If you really want to jump across the chasm, just say so."
CRLF
RFALSE
.FUNCT CHASM-PSEUDO
EQUAL? PRSA,V?LEAP \FALSE
RANDOM 100
LESS? 75,STACK /?ELS10
CALL JIGS-UP,STR?238
RSTACK
?ELS10: EQUAL? HERE,EDGE-OF-CHASM \?ELS17
CALL GOTO,BARE-PASSAGE
RSTACK
?ELS17: CALL GOTO,EDGE-OF-CHASM
RSTACK
.FUNCT TREE-ROOM-F,RARG
EQUAL? RARG,M-ENTER \FALSE
PUT VEZZAS,3,0
RFALSE
.FUNCT ZORKMID-TREE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "It is laden with zorkmids, glinting in the light."
?ELS5: EQUAL? PRSA,V?REZROV \?ELS9
CALL V-SWANZO
RSTACK
?ELS9: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \FALSE
PRINTR "The branches don't look sturdy enough."
.FUNCT ZORKMID-F
EQUAL? PRSA,V?PICK \?ELS5
FSET? PRSO,TRYTAKEBIT \?ELS5
EQUAL? ZORKMID,PRSO \?ELS5
CALL PERFORM,V?TAKE,PRSO,PRSI
RTRUE
?ELS5: EQUAL? PRSA,V?TAKE \?ELS9
FSET? PRSO,TRYTAKEBIT \?ELS9
FCLEAR PRSO,TRYTAKEBIT
FCLEAR PRSO,NDESCBIT
MOVE ZORKMID-TREE,DIAL
MOVE ZORKMID,PROTAGONIST
ADD SCORE,15 >SCORE
PRINTR "As you pluck the first zorkmid, the tree shimmers and vanishes! (I guess it was just an illusion.) You are left holding a solitary zorkmid coin."
?ELS9: EQUAL? PRSA,V?EXAMINE,V?COUNT \?ELS15
IN? ZORKMID-TREE,HERE \?ELS15
PRINTR "There are countless coins, hanging from every branch of the tree."
?ELS15: EQUAL? PRSA,V?EXAMINE \?ELS21
PRINTR "The coin pictures a man with an incredibly flat head, wearing a gaudy crown."
?ELS21: EQUAL? PRSA,V?BITE \?ELS25
PRINTR "Yep, it's real."
?ELS25: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTI "An article in the monetary section explains that the zorkmid was the unit of currency of the Great Underground Empire, and is still used in most parts of the kingdom today. A picture of a zorkmid coin is included. "
CALL PERFORM,V?EXAMINE,ZORKMID
RTRUE
.FUNCT HALL-OF-CARVINGS-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You have entered a large room whose walls are covered with intricate carvings. "
ZERO? DRAGON-MOVED /?ELS10
PRINTI "A passage has been recently opened to the south, and is only partially blocked by a huge stone dragon, poised in the midst of an attack."
JUMP ?CND8
?ELS10: PRINTI "The largest and most striking carving, on the southern wall, is of a huge sleeping dragon!"
?CND8: PRINTR " A winding tunnel leads north."
.FUNCT DRAGON-F
EQUAL? PRSA,V?MALYON \FALSE
ZERO? MALYON-YONKED /?ELS10
ZERO? DRAGON-MOVED /?ELS16
CALL JIGS-UP,STR?243
RSTACK
?ELS16: SET 'DRAGON-MOVED,TRUE-VALUE
PRINTR "The dragon is suddenly imbued with life and begins to move. It shakes itself loose from the wall, which crumbles down upon the dragon, revealing a southward passage! The dragon howls with pain and anger. Spotting you, the dragon rears back its head, smoke billowing from its nostrils. Then, just as it seems that you will be barbecued, the dragon reverts to stone!"
?ELS10: PRINTR "The dragon seems to shiver for a moment, but that is all."
.ENDI

View file

@ -1253,7 +1253,7 @@ with a smile." CR>)>)
,GNOME-SLEEPING>
<TELL "The gnome is asleep, remember?" CR>)
(<AND <FSET? ,GATE ,OPENBIT>
<VERB? SEARCH LOOK-INSIDE PICK>
<VERB? SEARCH LOOK-INSIDE REACH-IN PICK>
<NOT ,COIN-STOLEN>
<NOT ,FWEEPED>>
<SETG COIN-STOLEN T>

928
coal.zap Normal file
View file

@ -0,0 +1,928 @@
.FUNCT COAL-F
EQUAL? PRSA,V?TAKE \FALSE
PRINTR "Such menial tasks are best left to troglodytes."
.FUNCT SOOTY-ROOM-F,RARG
EQUAL? RARG,M-ENTER \FALSE
FSET? SOOTY-ROOM,TOUCHBIT /FALSE
ADD SCORE,20 >SCORE
RETURN SCORE
.FUNCT SOOTY-ROOM-EXIT-F
FSET? COAL-BIN-ROOM,TOUCHBIT \?ELS5
PRINTI "That passage is now completely blocked by a cave-in."
CRLF
RFALSE
?ELS5: RETURN COAL-BIN-ROOM
.FUNCT TIMBER-PSEUDO
EQUAL? PRSA,V?MOVE \FALSE
CALL JIGS-UP,STR?299
RSTACK
.FUNCT COAL-BIN-ROOM-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
FSET? HERE,TOUCHBIT /?ELS10
RANDOM 873 >COMBO
PUT VEZZAS,5,0
PRINTI "There is a rumbling noise behind you as the ceiling of the tunnel collapses, blocking your retreat! The air smells strongly of coal gas. "
ZERO? VILSTUED /?ELS15
CALL QUEUE,I-OLDER-SELF,2
PUT STACK,0,1
PRINTI "Good thing you took that vilstu potion"
JUMP ?CND13
?ELS15: CALL QUEUE,I-SUFFOCATE,2
PUT STACK,0,1
PRINTI "You won't survive long in this atmosphere"
?CND13: PRINTI "."
CRLF
CRLF
RTRUE
?ELS10: ZERO? GOLMACKED /FALSE
CALL QUEUE,I-YOUNGER-SELF,-1
PUT STACK,0,1
MOVE YOUNGER-SELF,HERE
ZERO? YOUNGER-HAS-SPELL-BOOK /?CND28
IN? SPELL-BOOK,LAGOON-FLOOR \?CND32
SET 'BOOK-BELONGS-IN-LAGOON,TRUE-VALUE
?CND32: MOVE SPELL-BOOK,YOUNGER-SELF
FSET SPELL-BOOK,TRYTAKEBIT
?CND28: CALL LIT?,HERE >LIT
RETURN LIT
?ELS5: EQUAL? RARG,M-END \FALSE
RANDOM 100
LESS? 35,STACK /FALSE
CRLF
PRINTR "A few lumps of coal spill from the coal chute."
.FUNCT I-SUFFOCATE
CRLF
ZERO? SUFFOCATE-WARNING /?ELS5
CALL JIGS-UP,STR?301
RSTACK
?ELS5: SET 'SUFFOCATE-WARNING,TRUE-VALUE
CALL QUEUE,I-SUFFOCATE,2
PUT STACK,0,1
PRINTR "You are about to pass out from the bad air."
.FUNCT COAL-BIN-F
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
PRINTR "It's full of coal."
?ELS5: EQUAL? PRSA,V?DIG,V?SEARCH \FALSE
PRINTR "You find nothing of interest."
.FUNCT UPPER-CHUTE-F
EQUAL? PRSA,V?LEAP,V?THROUGH \?ELS5
EQUAL? HERE,TOP-OF-CHUTE,SLANTED-ROOM \?ELS10
CALL DO-WALK,P?DOWN
RSTACK
?ELS10: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS14
EQUAL? HERE,TOP-OF-CHUTE \?ELS19
CALL BOTTOM-TOP-OF-CHUTE,TRUE-VALUE
RSTACK
?ELS19: CALL DO-WALK,P?UP
RSTACK
?ELS14: EQUAL? PRSA,V?CLIMB-DOWN \?ELS23
EQUAL? HERE,COAL-BIN-ROOM \?ELS28
CALL BOTTOM-TOP-OF-CHUTE
RSTACK
?ELS28: CALL DO-WALK,P?DOWN
RSTACK
?ELS23: EQUAL? PRSA,V?LOWER-INTO,V?PUT \?ELS32
EQUAL? PRSI,UPPER-CHUTE \?ELS32
EQUAL? HERE,TOP-OF-CHUTE,SLANTED-ROOM \?ELS39
EQUAL? PRSO,BEAM \?ELS44
ZERO? ROPE-TO-BEAM /?ELS44
MOVE ROPE,COAL-BIN-ROOM
MOVE BEAM,COAL-BIN-ROOM
SET 'ROPE-PLACED,FALSE-VALUE
FCLEAR BEAM,TRYTAKEBIT
FCLEAR ROPE,TRYTAKEBIT
CALL BEAM-AND-ROPE
RSTACK
?ELS44: EQUAL? PRSO,ROPE \?ELS48
ZERO? ROPE-TO-BEAM /?ELS48
CALL DROP-BEAM-FIRST
ZERO? STACK \TRUE
SET 'ROPE-PLACED,TRUE-VALUE
FSET BEAM,TRYTAKEBIT
FSET ROPE,TRYTAKEBIT
MOVE ROPE,HERE
CALL ROPE-HANGS
RSTACK
?ELS48: GETP PRSO,P?SIZE
LESS? STACK,20 \?ELS58
MOVE PRSO,DIAL
JUMP ?CND56
?ELS58: MOVE PRSO,COAL-BIN-ROOM
?CND56: CALL DISAPPEARS-DOWN-CHUTE
RSTACK
?ELS39: EQUAL? HERE,COAL-BIN-ROOM \FALSE
CALL LOOK-AROUND-YOU
RSTACK
?ELS32: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
CALL PERFORM,V?RESEARCH,UPPER-CHUTE
RTRUE
.FUNCT LOWER-CHUTE-F
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
EQUAL? HERE,COAL-BIN-ROOM \?ELS10
CALL BOTTOM-TOP-OF-CHUTE,TRUE-VALUE
RSTACK
?ELS10: CALL DO-WALK,P?UP
RSTACK
?ELS5: EQUAL? PRSA,V?LEAP,V?THROUGH,V?CLIMB-DOWN \?ELS14
EQUAL? HERE,COVE \?ELS19
CALL BOTTOM-TOP-OF-CHUTE
RSTACK
?ELS19: CALL DO-WALK,P?DOWN
RSTACK
?ELS14: EQUAL? PRSA,V?LOWER-INTO,V?PUT \?ELS23
EQUAL? PRSI,LOWER-CHUTE \?ELS23
EQUAL? HERE,COAL-BIN-ROOM \?ELS30
EQUAL? PRSO,BEAM \?ELS35
ZERO? ROPE-TO-BEAM /?ELS35
MOVE ROPE,LAGOON-FLOOR
MOVE BEAM,LAGOON-FLOOR
SET 'ROPE-IN-LOWER-CHUTE,FALSE-VALUE
FCLEAR ROPE,TRYTAKEBIT
CALL BEAM-AND-ROPE
RSTACK
?ELS35: EQUAL? PRSO,ROPE \?ELS39
ZERO? ROPE-TO-BEAM /?ELS39
CALL DROP-BEAM-FIRST
ZERO? STACK \TRUE
SET 'ROPE-IN-LOWER-CHUTE,TRUE-VALUE
FSET ROPE,TRYTAKEBIT
MOVE ROPE,HERE
CALL ROPE-HANGS
RSTACK
?ELS39: MOVE PRSO,LAGOON-FLOOR
FSET? PRSO,SCROLLBIT /?THN50
EQUAL? PRSO,SPELL-BOOK \?CND47
?THN50: FSET PRSO,MUNGBIT
?CND47: CALL DISAPPEARS-DOWN-CHUTE
RSTACK
?ELS30: EQUAL? HERE,COAL-BIN-ROOM \FALSE
CALL LOOK-AROUND-YOU
RSTACK
?ELS23: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
CALL PERFORM,V?RESEARCH,LOWER-CHUTE
RTRUE
.FUNCT DROP-BEAM-FIRST
CALL HELD?,BEAM
ZERO? STACK /FALSE
PRINTR "You'll have to drop the beam before doing that."
.FUNCT BEAM-AND-ROPE
PRINTR "The beam and rope both slide into the chute."
.FUNCT ROPE-HANGS
PRINTR "The rope hangs from the beam, into the chute."
.FUNCT DISAPPEARS-DOWN-CHUTE
PRINTI "The "
PRINTD PRSO
PRINTR " disappears into the chute."
.FUNCT OLDER-SELF-F
EQUAL? WINNER,OLDER-SELF \?ELS5
PRINTI "Your older self ignores your words."
CRLF
CALL STOP
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
PRINT OLDER-INTRO
PRINTR " The stranger is carrying a smelly scroll."
?ELS9: EQUAL? PRSA,V?GIVE \?ELS13
EQUAL? PRSO,SPELL-BOOK \?ELS13
MOVE SPELL-BOOK,OLDER-SELF
FSET SPELL-BOOK,TRYTAKEBIT
PRINTR "Your older self accepts the spell book gratefully."
?ELS13: EQUAL? PRSA,V?FOLLOW \?ELS19
ZERO? TWIN-FOLLOW /?ELS19
CALL DO-WALK,P?DOWN
RSTACK
?ELS19: EQUAL? PRSA,V?AIMFIZ \?ELS23
CALL V-SWANZO
RSTACK
?ELS23: EQUAL? PRSA,V?YOMIN \FALSE
PRINTR "The thoughts of your older self center on attempting to breathe."
.FUNCT I-OLDER-SELF
CALL QUEUE,I-OLDER-SELF,-1
PUT STACK,0,1
INC 'OLDER-COUNTER
EQUAL? OLDER-COUNTER,1 \?ELS5
MOVE OLDER-SELF,COAL-BIN-ROOM
CALL HELD?,SPELL-BOOK
ZERO? STACK /?CND6
SET 'YOUNGER-HAS-SPELL-BOOK,TRUE-VALUE
?CND6: EQUAL? HERE,COAL-BIN-ROOM \?ELS13
CRLF
PRINTI "Someone slides out of the coal chute, and lands near the bin. "
PRINT OLDER-INTRO
CRLF
SET 'OLDER-INTRODUCED,TRUE-VALUE
RETURN OLDER-INTRODUCED
?ELS13: EQUAL? HERE,DIAL-ROOM \?ELS19
CRLF
PRINTR "You here a commotion from the room to the west."
?ELS19: CALL INT,I-OLDER-SELF
PUT STACK,0,0
RFALSE
?ELS5: EQUAL? OLDER-COUNTER,2 \?ELS25
CALL DATA-TO-TABLE,MOVE-ONE-TABLE
EQUAL? HERE,COAL-BIN-ROOM \?ELS30
CRLF
ZERO? OLDER-INTRODUCED \?CND31
SET 'OLDER-INTRODUCED,TRUE-VALUE
PRINTI "Someone is standing near the coal bin. "
PRINT OLDER-INTRO
CRLF
CRLF
?CND31: SET 'COMBO-DISCOVERED,TRUE-VALUE
CALL OLDER-TELLS-COMBO
IN? SPELL-BOOK,OLDER-SELF /?CND36
PRINTI " Your older self then looks at you, almost expectantly."
?CND36: CRLF
RTRUE
?ELS30: CRLF
PRINTR "From the next room you glimpse someone gasping for air."
?ELS25: EQUAL? OLDER-COUNTER,3 \?ELS46
CALL DATA-TO-TABLE,MOVE-TWO-TABLE
EQUAL? HERE,COAL-BIN-ROOM \?ELS51
ZERO? OLDER-INTRODUCED \?CND52
SET 'OLDER-INTRODUCED,TRUE-VALUE
CRLF
PRINTI "Someone is standing near the coal bin. "
PRINT OLDER-INTRO
CRLF
?CND52: IN? SPELL-BOOK,OLDER-SELF \?ELS61
MOVE SPELL-BOOK,YOUNGER-SELF
FSET SPELL-BOOK,TRYTAKEBIT
MOVE OLDER-SELF,DIAL
MOVE VARDIK-SCROLL,DIAL
SET 'TWIN-FOLLOW,TRUE-VALUE
CALL QUEUE,I-TWIN-UNFOLLOW,1
PUT STACK,0,1
CRLF
PRINTR "Your look-alike dives into the lower chute and slides out of view."
?ELS61: ZERO? COMBO-DISCOVERED \?ELS65
CRLF
CALL OLDER-TELLS-COMBO
CRLF
RTRUE
?ELS65: CRLF
PRINTR """Give me...the spell book,"" croaks your older self."
?ELS51: MOVE OLDER-SELF,DIAL
MOVE VARDIK-SCROLL,DIAL
CRLF
PRINTR "Someone in the coal bin room dives into the lower chute."
?ELS46: CALL DATA-TO-TABLE,MOVE-THREE-TABLE
CALL INT,I-OLDER-SELF
PUT STACK,0,0
EQUAL? HERE,COAL-BIN-ROOM \?CND76
IN? OLDER-SELF,HERE \?CND76
CRLF
PRINTI "Your older self dives into the lower chute."
CRLF
?CND76: MOVE OLDER-SELF,DIAL
MOVE VARDIK-SCROLL,DIAL
RTRUE
.FUNCT OLDER-TELLS-COMBO
PRINTI "Your disheveled ""twin"" is having difficulty breathing, but gasps, ""The combination is "
PRINTN COMBO
PRINTI "."""
RTRUE
.FUNCT I-TWIN-UNFOLLOW
SET 'TWIN-FOLLOW,FALSE-VALUE
RFALSE
.FUNCT DATA-TO-TABLE,TABLE
PUT TABLE,1,PRSA
PUT TABLE,2,PRSO
PUT TABLE,3,PRSI
RTRUE
.FUNCT YOUNGER-SELF-F
EQUAL? YOUNGER-SELF,WINNER \?ELS5
EQUAL? PRSA,V?COMBO \?ELS10
EQUAL? PRSO,INTNUM \?ELS10
EQUAL? P-NUMBER,COMBO \?CND13
SET 'COMBO-REVEALED,TRUE-VALUE
?CND13: PRINTR "Your younger self seems surprised by your statement."
?ELS10: EQUAL? PRSA,V?GIVE \?ELS19
EQUAL? PRSO,SPELL-BOOK \?ELS19
EQUAL? PRSI,ME \?ELS19
CALL SPELL-BOOK-PASS-OFF-CHECK
ZERO? STACK \TRUE
?ELS19: PRINTI "Your younger self seems confused, and doesn't respond."
CRLF
CALL STOP
RSTACK
?ELS5: EQUAL? PRSA,V?YOMIN \?ELS27
PRINTR "The thoughts of your younger self are confused, and seem to center on whether or not to perform a SAVE."
?ELS27: EQUAL? PRSA,V?AIMFIZ \?ELS31
CALL V-SWANZO
RSTACK
?ELS31: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "It's almost like looking in a mirror. Your younger self looks confused"
IN? SPELL-BOOK,YOUNGER-SELF \?CND36
PRINTI ", and is carrying a spell book"
?CND36: PRINTR "."
.FUNCT YOUNGER-SELF-DESCFCN,TABLE
LESS? YOUNGER-COUNTER,3 \?ELS3
SET 'TABLE,MOVE-ONE-TABLE
JUMP ?CND1
?ELS3: EQUAL? YOUNGER-COUNTER,3 \?ELS5
SET 'TABLE,MOVE-TWO-TABLE
JUMP ?CND1
?ELS5: SET 'TABLE,MOVE-THREE-TABLE
?CND1: FSET? YOUNGER-SELF,TOUCHBIT \?ELS12
PRINTI "Your younger self is here"
ZERO? YOUNGER-HAS-SPELL-BOOK /?ELS19
PRINTR ", holding your spell book."
?ELS19: PRINTR "."
?ELS12: FSET YOUNGER-SELF,TOUCHBIT
PRINTI "Standing here, looking quite confused, is someone who could only be your younger self -- an exact duplicate of you, but cleaner and breathing with considerably less difficulty. You remember seeing this scene from another viewpoint just a short while ago."
ZERO? YOUNGER-HAS-SPELL-BOOK /?CND31
PRINTI " Among the items carried by your ""twin"" is your spell book."
?CND31: CRLF
RTRUE
.FUNCT SPELL-BOOK-PASS-OFF-CHECK,TABLE
EQUAL? YOUNGER-COUNTER,1 \?ELS3
SET 'TABLE,MOVE-ONE-TABLE
JUMP ?CND1
?ELS3: EQUAL? YOUNGER-COUNTER,2 \?ELS5
SET 'TABLE,MOVE-TWO-TABLE
JUMP ?CND1
?ELS5: EQUAL? YOUNGER-COUNTER,3 \FALSE
SET 'TABLE,MOVE-THREE-TABLE
?CND1: GET TABLE,2
EQUAL? STACK,SPELL-BOOK \?ELS18
GET TABLE,3
EQUAL? STACK,OLDER-SELF \?ELS18
GET TABLE,1
EQUAL? STACK,V?GIVE /TRUE
?ELS18: GET TABLE,2
EQUAL? STACK,OLDER-SELF \FALSE
GET TABLE,3
EQUAL? STACK,SPELL-BOOK \FALSE
GET TABLE,1
EQUAL? STACK,V?SGIVE \FALSE
RTRUE
.FUNCT I-YOUNGER-SELF
INC 'YOUNGER-COUNTER
IN? YOUNGER-SELF,HERE \FALSE
ZERO? LIT \?ELS7
ZERO? BLORTED /FALSE
?ELS7: EQUAL? YOUNGER-COUNTER,2 \?ELS11
CALL YOUNGER-ACTIONS,MOVE-ONE-TABLE
RSTACK
?ELS11: EQUAL? YOUNGER-COUNTER,3 \?ELS13
CALL YOUNGER-ACTIONS,MOVE-TWO-TABLE
RSTACK
?ELS13: EQUAL? YOUNGER-COUNTER,4 \FALSE
CALL YOUNGER-ACTIONS,MOVE-THREE-TABLE
RSTACK
.FUNCT YOUNGER-ACTIONS,TABLE
GET TABLE,2
ZERO? STACK \?CND1
PUT TABLE,2,NOT-HERE-OBJECT
?CND1: GET TABLE,3
ZERO? STACK \?CND4
PUT TABLE,3,NOT-HERE-OBJECT
?CND4: GET TABLE,2
EQUAL? STACK,OLDER-SELF \?ELS9
PUT TABLE,2,YOU-OBJECT
JUMP ?CND7
?ELS9: GET TABLE,2
EQUAL? STACK,ME \?CND7
PUT TABLE,2,YOUNGER-SELF
?CND7: GET TABLE,3
EQUAL? STACK,OLDER-SELF \?ELS14
PUT TABLE,3,YOU-OBJECT
JUMP ?CND12
?ELS14: GET TABLE,3
EQUAL? STACK,ME \?CND12
PUT TABLE,3,YOUNGER-SELF
?CND12: CRLF
PRINTI "Your younger self "
GET TABLE,2
EQUAL? STACK,SPELL-BOOK \?ELS27
GET TABLE,3
EQUAL? STACK,YOU-OBJECT \?ELS27
GET TABLE,1
EQUAL? STACK,V?GIVE /?THN24
?ELS27: GET TABLE,2
EQUAL? STACK,YOU-OBJECT \?ELS23
GET TABLE,3
EQUAL? STACK,SPELL-BOOK \?ELS23
GET TABLE,1
EQUAL? STACK,V?SGIVE \?ELS23
?THN24: MOVE SPELL-BOOK,PROTAGONIST
FCLEAR SPELL-BOOK,TRYTAKEBIT
PRINTR "hands you your spell book!"
?ELS23: GET TABLE,1
EQUAL? STACK,V?VERBOSE,V?BRIEF,V?SUPER-BRIEF /?THN34
GET TABLE,1
EQUAL? STACK,V?SCORE,V?SCRIPT,V?UNSCRIPT \?ELS33
?THN34: PRINTR "is performing a spell of high technology."
?ELS33: GET TABLE,1
EQUAL? STACK,V?ANSWER,V?REPLY,V?CURSE /?THN40
GET TABLE,1
EQUAL? STACK,V?HELLO,V?TELL,V?ASK-FOR /?THN40
GET TABLE,1
EQUAL? STACK,V?SAY,V?THANK,V?YELL /?THN40
GET TABLE,1
EQUAL? STACK,V?ASK-ABOUT \?ELS39
?THN40: PRINTR "is attempting to talk."
?ELS39: GET TABLE,1
EQUAL? STACK,V?CAST,V?GNUSTO,V?FROTZ /?THN46
GET TABLE,1
EQUAL? STACK,V?REZROV,V?IZYUK,V?FWEEP /?THN46
GET TABLE,1
EQUAL? STACK,V?AIMFIZ,V?SWANZO,V?VARDIK /?THN46
GET TABLE,1
EQUAL? STACK,V?MEEF,V?PULVER,V?GOLMAC /?THN46
GET TABLE,1
EQUAL? STACK,V?YOMIN,V?VEZZA,V?GASPAR /?THN46
GET TABLE,1
EQUAL? STACK,V?YONK,V?MALYON \?ELS45
?THN46: PRINTR "is casting a familiar spell."
?ELS45: GET TABLE,1
EQUAL? STACK,V?INVENTORY \?ELS51
PRINTR "is doing an inventory."
?ELS51: GET TABLE,1
EQUAL? STACK,V?DIAGNOSE \?ELS55
PRINTR "is checking for wounds."
?ELS55: GET TABLE,1
EQUAL? STACK,V?WAIT \?ELS59
PRINTR "is doing absolutely nothing."
?ELS59: GET TABLE,1
EQUAL? STACK,V?SLEEP \?ELS63
PRINTR "is trying to fall asleep!"
?ELS63: GET TABLE,1
EQUAL? STACK,V?LEARN \?ELS67
PRINTR "is studying a spell book."
?ELS67: GET TABLE,1
EQUAL? STACK,V?SPELLS \?ELS71
PRINTR "seems lost in thought."
?ELS71: GET TABLE,1
EQUAL? STACK,V?LOOK \?ELS75
PRINTR "is looking around."
?ELS75: GET TABLE,1
EQUAL? STACK,V?LEAP,V?SKIP \?ELS79
PRINTR "is hopping around like a crazed rabbit."
?ELS79: GET TABLE,1
EQUAL? STACK,V?WALK,V?WALK-AROUND,V?WALK-TO \?ELS83
PRINTR "is moving around."
?ELS83: GET TABLE,1
EQUAL? STACK,V?GIVE \?ELS87
PRINTI "is trying to give"
GET TABLE,2
CALL ARTICLE,STACK
PRINTI " to"
GET TABLE,3
CALL ARTICLE,STACK
PRINTR "."
?ELS87: GET TABLE,1
EQUAL? STACK,V?SHOW \?ELS95
PRINTI "is trying to show"
GET TABLE,2
CALL ARTICLE,STACK
PRINTI " to"
GET TABLE,3
CALL ARTICLE,STACK
PRINTR "."
?ELS95: GET TABLE,1
EQUAL? STACK,V?RAISE,V?LOWER,V?RUB /?THN104
GET TABLE,1
EQUAL? STACK,V?MOVE,V?SHAKE,V?PUSH /?THN104
GET TABLE,1
EQUAL? STACK,V?KICK,V?PUT-ON,V?PUSH-TO /?THN104
GET TABLE,1
EQUAL? STACK,V?PUT,V?PUT-UNDER,V?PUT-BEHIND \?ELS103
?THN104: GET TABLE,1
EQUAL? STACK,V?PUT \?CND106
GET TABLE,2
EQUAL? STACK,SPELL-BOOK \?CND106
GET TABLE,3
EQUAL? STACK,LOWER-CHUTE \?CND106
MOVE SPELL-BOOK,DIAL
?CND106: PRINTI "is attempting to move"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS103: GET TABLE,1
EQUAL? STACK,V?EXAMINE,V?LOOK-INSIDE /?THN117
GET TABLE,1
EQUAL? STACK,V?LOOK-BEHIND,V?LOOK-UNDER \?ELS116
?THN117: PRINTI "is examining"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS116: GET TABLE,1
EQUAL? STACK,V?BOARD,V?ENTER,V?THROUGH \?ELS124
PRINTI "is trying to get into"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS124: GET TABLE,1
EQUAL? STACK,V?THROW,V?THROW-OFF \?ELS130
PRINTI "is performing aeronautical experiments with"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS130: GET TABLE,1
EQUAL? STACK,V?WHAT,V?WHERE,V?WHO \?ELS136
PRINTI "is asking about"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR ", addressing the question to no one in particular."
?ELS136: GET TABLE,1
EQUAL? STACK,V?ATTACK,V?KILL,V?MUNG \?ELS142
PRINTI "is attacking"
GET TABLE,2
CALL ARTICLE,STACK,TRUE-VALUE
PRINTR "."
?ELS142: GET TABLE,1
EQUAL? STACK,V?EAT,V?DRINK \?ELS148
PRINTI "is attempting to ingest"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS148: GET TABLE,1
EQUAL? STACK,V?CLIMB-ON,V?CLIMB-UP,V?CLIMB-FOO /?THN155
GET TABLE,1
EQUAL? STACK,V?CLIMB-DOWN,V?CLIMB-OVER \?ELS154
?THN155: PRINTI "is climbing"
GET TABLE,2
CALL ARTICLE,STACK,TRUE-VALUE
PRINTR "."
?ELS154: GET TABLE,1
EQUAL? STACK,V?READ \?ELS162
PRINTI "is reading"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS162: GET TABLE,1
EQUAL? STACK,V?SMELL \?ELS168
PRINTI "is smelling"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS168: GET TABLE,1
EQUAL? STACK,V?LISTEN \?ELS174
PRINTI "seems to be listening to"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS174: GET TABLE,1
EQUAL? STACK,V?KISS \?ELS180
PRINTI "tries to kiss"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS180: GET TABLE,1
EQUAL? STACK,V?OPEN \?ELS186
PRINTI "is trying to open"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS186: GET TABLE,1
EQUAL? STACK,V?CLOSE \?ELS192
PRINTI "is closing"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS192: GET TABLE,1
EQUAL? STACK,V?EXIT,V?DISEMBARK \?ELS198
PRINTI "is trying to leave"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS198: GET TABLE,1
EQUAL? STACK,V?TAKE \?ELS204
PRINTI "is reaching for"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS204: GET TABLE,1
EQUAL? STACK,V?DROP \?ELS210
PRINTI "is dropping"
GET TABLE,2
CALL ARTICLE,STACK
PRINTR "."
?ELS210: PRINTR "is doing something."
.FUNCT LAMP-PSEUDO
EQUAL? PRSA,V?TAKE \FALSE
CALL PERFORM,V?TAKE,KEROSENE-LAMP
RTRUE
.FUNCT DIAL-DOOR-F
EQUAL? PRSA,V?OPEN \?ELS5
FSET? DIAL-DOOR,OPENBIT /?ELS5
ZERO? DIAL-OPEN /?ELS12
FSET DIAL-DOOR,OPENBIT
ADD SCORE,COAL-DOOR-POINT >SCORE
SET 'COAL-DOOR-POINT,0
PRINTR "The door opens easily."
?ELS12: PRINTR "The door won't budge."
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS21
CALL PERFORM,V?EXAMINE,DIAL
RTRUE
?ELS21: EQUAL? PRSA,V?REZROV \FALSE
CALL JIGS-UP,STR?305
RSTACK
.FUNCT DIAL-F
EQUAL? PRSA,V?READ,V?EXAMINE \?ELS5
PRINTI "Set in the door is a large circular dial which can be set to any number up to 873. It is currently set to "
PRINTN CURRENT-SETTING
PRINTR "."
?ELS5: EQUAL? PRSA,V?TURN \FALSE
ZERO? FWEEPED /?ELS14
CALL BATTY
RSTACK
?ELS14: ZERO? PRSI /?THN18
EQUAL? PRSI,INTNUM /?ELS17
?THN18: PRINTR "You must say what number to turn it to."
?ELS17: EQUAL? CURRENT-SETTING,P-NUMBER \?ELS23
PRINTI "The dial is already set to "
PRINTN CURRENT-SETTING
PRINTR "."
?ELS23: SET 'CURRENT-SETTING,P-NUMBER
PRINTI "The dial is now set to "
PRINTN CURRENT-SETTING
PRINTI "."
EQUAL? CURRENT-SETTING,COMBO \?CND30
PRINTI " You hear a click from inside the door."
SET 'DIAL-OPEN,TRUE-VALUE
?CND30: CRLF
RTRUE
.FUNCT ROPE-F
EQUAL? PRSA,V?PUT \?ELS5
CALL ACCESSIBLE?,ROPE
ZERO? STACK /FALSE
?ELS5: EQUAL? PRSA,V?TIE \?ELS9
EQUAL? PRSI,BEAM \?ELS9
PRINTI "The rope is "
ZERO? ROPE-TO-BEAM /?CND14
PRINTI "already "
?CND14: PRINTI "tied securely to the center of the beam."
CRLF
SET 'ROPE-TO-BEAM,TRUE-VALUE
RETURN ROPE-TO-BEAM
?ELS9: EQUAL? PRSA,V?TIE \?ELS23
EQUAL? PRSI,COAL-BIN \?ELS23
PRINTR "The bin is too large."
?ELS23: EQUAL? PRSA,V?UNTIE \?ELS29
ZERO? ROPE-TO-BEAM /?ELS29
SET 'ROPE-TO-BEAM,FALSE-VALUE
PRINTR "The rope is untied."
?ELS29: EQUAL? PRSA,V?CLIMB-DOWN \?ELS35
ZERO? ROPE-PLACED \?ELS40
ZERO? ROPE-IN-LOWER-CHUTE \?ELS40
PRINTR "It would be hard to climb down the rope in its current state."
?ELS40: CALL DO-WALK,P?DOWN
RSTACK
?ELS35: EQUAL? PRSA,V?CLIMB-UP \?ELS48
PRINTR "Do you also charm snakes?"
?ELS48: EQUAL? PRSA,V?EXAMINE \FALSE
ZERO? ROPE-PLACED \?THN58
ZERO? ROPE-IN-LOWER-CHUTE /?ELS57
?THN58: PRINTR "The rope is tied to the beam and hangs into the chute."
?ELS57: ZERO? ROPE-TO-BEAM /FALSE
PRINTR "It is tied to the center of the timber."
.FUNCT SHAFT-BOTTOM-F,RARG
EQUAL? RARG,M-ENTER \FALSE
FSET? VARDIK-SCROLL,TOUCHBIT \FALSE
SET 'BREATH-SHORTAGE,3
CALL I-BREATHE
RSTACK
.FUNCT SHAFT-PSEUDO
EQUAL? PRSA,V?CLIMB-DOWN \?ELS5
EQUAL? HERE,SHAFT-TOP \?ELS10
CALL DO-WALK,P?DOWN
RSTACK
?ELS10: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \?ELS14
EQUAL? HERE,SHAFT-TOP \?ELS19
CALL LOOK-AROUND-YOU
RSTACK
?ELS19: CALL DO-WALK,P?UP
RSTACK
?ELS14: EQUAL? PRSA,V?PUT-ON \?ELS23
EQUAL? PRSO,BEAM \?ELS23
PRINTR "The shaft is too wide."
?ELS23: EQUAL? PRSA,V?PUT \FALSE
EQUAL? HERE,SHAFT-TOP \FALSE
EQUAL? PRSO,ROPE \?ELS36
ZERO? ROPE-TO-BEAM /?ELS36
PRINTR "The rope now dangles into the shaft."
?ELS36: MOVE PRSO,SHAFT-BOTTOM
PRINTR "It disappears into the shaft. A moment later comes a distant thud."
.FUNCT BEAM-F
EQUAL? PRSA,V?PUT-ON \?ELS5
EQUAL? PRSI,UPPER-CHUTE,LOWER-CHUTE \?ELS5
MOVE BEAM,HERE
PRINTR "The beam is now lying across the mouth of the chute."
?ELS5: EQUAL? PRSA,V?TAKE \?ELS11
ZERO? ROPE-PLACED /?ELS11
PRINTR "You'd have to take the rope out of the chute first."
?ELS11: EQUAL? PRSA,V?EXAMINE \FALSE
ZERO? ROPE-PLACED /?ELS22
PRINTR "A rope hangs from the beam, into the chute."
?ELS22: ZERO? ROPE-TO-BEAM /FALSE
PRINTR "A rope is tied to the beam."
.FUNCT TOP-OF-CHUTE-F,RARG
EQUAL? RARG,M-END \FALSE
IN? TROGLODYTE,HERE /FALSE
ZERO? LIT \?THN8
ZERO? BLORTED /FALSE
?THN8: RANDOM 100
LESS? 30,STACK /FALSE
MOVE TROGLODYTE,HERE
CALL QUEUE,I-TROGLODYTE,2
PUT STACK,0,1
CRLF
PRINTR "A troglodyte trundles in and dumps a load of coal into the chute."
.FUNCT I-TROGLODYTE
MOVE TROGLODYTE,DIAL
EQUAL? HERE,TOP-OF-CHUTE \FALSE
SET 'TROG-FOLLOW,TRUE-VALUE
CALL QUEUE,I-TROG-UNFOLLOW,1
PUT STACK,0,1
CRLF
PRINTR "The troglodyte trundles off into the coal mine."
.FUNCT I-TROG-UNFOLLOW
SET 'TROG-FOLLOW,FALSE-VALUE
RFALSE
.FUNCT TROGLODYTE-F
EQUAL? WINNER,TROGLODYTE \?ELS5
PRINTI "The troglodyte ignores you."
CRLF
CALL STOP
RSTACK
?ELS5: EQUAL? PRSA,V?FOLLOW \?ELS9
ZERO? TROG-FOLLOW /?ELS9
PRINTR "You didn't notice which passage it took."
?ELS9: EQUAL? PRSA,V?YOMIN \?ELS15
PRINTR "The troglodyte is worried about filling his coal quotas."
?ELS15: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "Semi-intelligent subterranean beasts frequently used to dig and haul coal."
.FUNCT CHUTE-EXIT-F
ZERO? ROPE-PLACED /?ELS5
PRINTI "You climb carefully down the rope, which is slippery with coal dust, "
GRTR? AWAKE,0 \?ELS13
PRINTI "but because of your fatigue you lose your grip."
CALL ORANGE-FLASH
CRLF
CRLF
RETURN COAL-BIN-ROOM
?ELS13: CALL NOTHING-HELD?
ZERO? STACK \?ELS17
PRINTI "but because of your load you are unable to maintain your grip."
CALL ORANGE-FLASH
CRLF
CRLF
RETURN COAL-BIN-ROOM
?ELS17: PRINTI "and soon reach a small opening off the chute. You clamber inside..."
CRLF
CRLF
ADD SCORE,20 >SCORE
FCLEAR VARDIK-SPELL,INVISIBLE
RETURN SLANTED-ROOM
?ELS5: CALL ROPE-BEAM-CHECK,TRUE-VALUE
PRINTI "Wheee!!! "
CALL ORANGE-FLASH
PRINTI " You land beside an enormous bin of coal."
CRLF
CRLF
RETURN COAL-BIN-ROOM
.FUNCT ORANGE-FLASH
PRINTI " As you "
ZERO? FLYING /?ELS5
PRINTI "float"
JUMP ?CND3
?ELS5: PRINTI "whiz"
?CND3: PRINTI " down the chute, you notice a flash of orange light spilling from an opening onto the chute."
RTRUE
.FUNCT SLANTED-ROOM-F,RARG
EQUAL? RARG,M-ENTER \FALSE
PUT VEZZAS,6,0
RTRUE
.FUNCT SLANTED-ROOM-EXIT-F
IN? GOLMAC-SCROLL,PROTAGONIST /?ELS5
ZERO? GOLMACKED \?ELS5
CALL POOF
RFALSE
?ELS5: IN? GOLMAC-SCROLL,PROTAGONIST \?ELS9
ZERO? GOLMACKED /?ELS9
CALL POOF
RFALSE
?ELS9: PRINTI "Wheeee!!!"
CRLF
CRLF
RETURN COAL-BIN-ROOM
.FUNCT KEROSENE-LAMP-DESCFCN,RARG
PRINTI "Mounted securely to the wall is a kerosene lamp, filling the room with a serene orange glow. "
FSET? KEROSENE-LAMP,OPENBIT \?CND3
PRINTI "A small compartment at its base is open."
?CND3: CRLF
RTRUE
.FUNCT KEROSENE-LAMP-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The lamp has a glass bowl where the flame burns. Below is a small metal door, perhaps a compartment for storing extra wicks or kerosene."
?ELS5: EQUAL? PRSA,V?TAKE \?ELS9
PRINTR "It's mounted securely to the wall."
?ELS9: EQUAL? PRSA,V?LAMP-OFF \FALSE
PRINTR "You can't spare the breath to blow out the lamp."
.FUNCT CHUTE-ENTER-F
ZERO? FLYING /?ELS3
PRINTI "The chute is too narrow to fly up."
JUMP ?CND1
?ELS3: PRINTI "The chute is too steep and slippery."
?CND1: CRLF
RFALSE
.FUNCT BOTTOM-TOP-OF-CHUTE,TOP=0
PRINTI "You're already at the "
ZERO? TOP /?ELS5
PRINTI "top"
JUMP ?CND3
?ELS5: PRINTI "bottom"
?CND3: PRINTR " of the chute."
.ENDI

538
end.zap Normal file
View file

@ -0,0 +1,538 @@
.FUNCT COVE-F,RARG,X=0
EQUAL? RARG,M-ENTER \FALSE
FSET? COVE,TOUCHBIT /FALSE
ZERO? BOOK-BELONGS-IN-LAGOON /?CND8
MOVE SPELL-BOOK,LAGOON-FLOOR
?CND8: PUT VEZZAS,6,0
ADD SCORE,20 >SCORE
CALL INT,I-SUFFOCATE
PUT STACK,0,0
CALL INT,I-YOUNGER-SELF
PUT STACK,0,0
CALL INT,I-OLDER-SELF
PUT STACK,0,0
ZERO? GOLMACKED /?ELS14
ZERO? COMBO-REVEALED \?ELS14
CALL POOF
JUMP ?CND12
?ELS14: ZERO? GOLMACKED \?CND12
CALL HELD?,ROPE
ZERO? STACK /?CND19
MOVE ROPE,DIAL
SET 'X,TRUE-VALUE
?CND19: CALL HELD?,BEAM
ZERO? STACK /?CND22
MOVE BEAM,DIAL
SET 'X,TRUE-VALUE
?CND22: CALL HELD?,VARDIK-SCROLL
ZERO? STACK /?CND25
MOVE VARDIK-SCROLL,DIAL
SET 'X,TRUE-VALUE
?CND25: CALL HELD?,GOLMAC-SCROLL
ZERO? STACK /?CND28
MOVE GOLMAC-SCROLL,DIAL
SET 'X,TRUE-VALUE
?CND28: ZERO? X /?CND12
PRINTI "As you slide down the chute, some of your possessions suddenly vanish! "
?CND12: PRINTI "You fly out of the chute and land just at the edge of some water..."
CRLF
CRLF
RTRUE
.FUNCT POOF
SET 'POOFED,TRUE-VALUE
PRINTI "Suddenly, without the slightest fanfare, you cease to exist!"
CRLF
CALL FINISH
RSTACK
.FUNCT OCEAN-SHORE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are "
ZERO? FLYING /?ELS10
PRINTI "floating above"
JUMP ?CND8
?ELS10: PRINTI "standing on"
?CND8: PRINTI " the western shore of the mighty Flathead Ocean. According to legends you read at the University, the eastern shore of this ocean is a strange land of magical beings and priceless treasures. "
EQUAL? HERE,OCEAN-NORTH \?ELS22
PRINTI "You could go north along the shore; the edge of a small cove lies to the southwest."
JUMP ?CND20
?ELS22: PRINTI "The beach to the south is blocked by a tall cliff; a lagoon shore lies to the northwest."
?CND20: CRLF
RTRUE
.FUNCT OCEAN-F,X=0
EQUAL? HERE,GUN-EMPLACEMENT,TURRET,TOP-OF-FALLS \?ELS5
PRINTR "The ocean lies far below you."
?ELS5: EQUAL? PRSA,V?PULVER \?ELS9
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,V?PULVER,LAGOON-OBJECT
RTRUE
?ELS9: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS11
CALL PERFORM,V?DRINK,WATER
RTRUE
?ELS11: EQUAL? PRSA,V?EXAMINE \?ELS13
PRINTR "It streches east as far as the eye can see."
?ELS13: EQUAL? PRSA,V?RESEARCH \?ELS17
PRINTR "The Flathead Ocean, called the Great Sea by the ancients, has a very unusual feature -- its western shore basks in the sunlight while its eastern shore lies far underground."
?ELS17: EQUAL? PRSA,V?PUT \?ELS21
EQUAL? OCEAN,PRSI \?ELS21
MOVE PRSO,DIAL
CALL SPLASH
RSTACK
?ELS21: EQUAL? PRSA,V?THROUGH \FALSE
CALL JIGS-UP,STR?318
RSTACK
.FUNCT CLIFF-PSEUDO
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE
ZERO? FLYING /?ELS10
PRINTR "The cliff is too high to fly over."
?ELS10: PRINTR "The cliff is unclimbable."
.FUNCT LAGOON-OBJECT-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,LAGOON,LAGOON-FLOOR \?ELS10
CALL LOOK-AROUND-YOU
RSTACK
?ELS10: CALL GOTO,LAGOON
RSTACK
?ELS5: EQUAL? PRSA,V?PUT \?ELS14
EQUAL? HERE,LAGOON-FLOOR /?ELS14
EQUAL? PRSI,LAGOON-OBJECT \?ELS14
MOVE PRSO,LAGOON-FLOOR
FSET? PRSO,SCROLLBIT /?THN20
EQUAL? PRSO,SPELL-BOOK \?CND17
?THN20: FSET PRSO,MUNGBIT
?CND17: CALL SPLASH
RSTACK
?ELS14: EQUAL? PRSA,V?EXAMINE \?ELS23
PRINTR "The water looks calm and hospitable."
?ELS23: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS27
CALL PERFORM,V?DRINK,WATER
RTRUE
?ELS27: EQUAL? PRSA,V?PULVER \FALSE
PRINTR "The water level seems to drop an inch or two, for a moment."
.FUNCT LAGOON-F,RARG,X
EQUAL? RARG,M-ENTER \?ELS5
FIRST? PROTAGONIST >X /?KLU35
?KLU35:
?PRG6: ZERO? X /TRUE
FSET? X,SCROLLBIT /?THN15
EQUAL? X,SPELL-BOOK \?CND12
?THN15: FSET X,MUNGBIT
?CND12: NEXT? X >X /?KLU36
?KLU36: JUMP ?PRG6
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are "
ZERO? FLYING /?ELS25
PRINTI "flying over"
JUMP ?CND23
?ELS25: PRINTI "swimming on"
?CND23: PRINTR " the surface of a calm lagoon, whose sandy floor is visible below. A curved beach surrounds this inlet on its western side."
.FUNCT LAGOON-FLOOR-ENTER-F
ZERO? FLYING /?ELS5
CALL WHILE-FLYING
RFALSE
?ELS5: RETURN LAGOON-FLOOR
.FUNCT SAND-PSEUDO
EQUAL? PSEUDO-OBJECT,PRSO \?ELS5
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,GROUND,PRSI
RTRUE
?ELS5: SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,GROUND
RTRUE
.FUNCT LAGOON-FLOOR-F,RARG
EQUAL? RARG,M-ENTER \FALSE
CALL QUEUE,I-DROWN,-1
PUT STACK,0,1
RFALSE
.FUNCT I-DROWN
EQUAL? HERE,LAGOON-FLOOR \?ELS5
ZERO? VILSTUED \FALSE
INC 'UNDERWATER-COUNTER
EQUAL? UNDERWATER-COUNTER,3 \?ELS14
CRLF
PRINTR "You won't be able to hold your breath much longer."
?ELS14: EQUAL? UNDERWATER-COUNTER,4 \?ELS18
CRLF
PRINTR "Better get some fresh air soon!"
?ELS18: EQUAL? UNDERWATER-COUNTER,5 \FALSE
SET 'UNDERWATER-COUNTER,0
CRLF
CALL JIGS-UP,STR?320
RSTACK
?ELS5: SET 'UNDERWATER-COUNTER,0
CALL INT,I-DROWN
PUT STACK,0,0
RFALSE
.FUNCT CORAL-PSEUDO
EQUAL? PRSA,V?EXAMINE \FALSE
IN? HERE,SPENSEWEEDS \FALSE
PRINTR "The coral is covered by swaying spenseweeds."
.FUNCT SPENSEWEEDS-F
EQUAL? PRSA,V?MEEF \?ELS5
MOVE SPENSEWEEDS,DIAL
MOVE CRATE,HERE
CALL THIS-IS-IT,CRATE
PRINTR "The spenseweeds wilt away, revealing a wooden crate labelled with black lettering."
?ELS5: EQUAL? PRSA,V?LOOK-UNDER \FALSE
PRINTR "That's difficult -- they're well rooted in the coral."
.FUNCT CRATE-F
EQUAL? PRSA,V?REZROV,V?OPEN \?ELS5
ZERO? CRATE-POINT \?ELS5
SET 'CRATE-POINT,TRUE-VALUE
ADD SCORE,15 >SCORE
RFALSE
?ELS5: EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "Stencilled diagonally across the crate:
GRUE PROTECTION KIT
Below, in much smaller letters:
FROM:
Frobozz Magic Grue Accessories Co.
TO:
Aragain Brothers Circus
Attn: Grue Trainer"
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT BRASS-LANTERN-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "It is a battery-powered lantern like those used by adventurers and explorers. It is currently "
FSET? BRASS-LANTERN,ONBIT \?ELS10
PRINTI "on"
JUMP ?CND8
?ELS10: PRINTI "off"
?CND8: PRINTR "."
.FUNCT GRUE-REPELLENT-F
EQUAL? PRSA,V?SHAKE \?ELS5
ZERO? SPRAY-USED? /?ELS10
PRINTR "The can seems empty."
?ELS10: PRINTR "There is a sloshing sound from inside."
?ELS5: EQUAL? PRSA,V?PUT-ON,V?SPRAY \FALSE
EQUAL? PRSO,GRUE-REPELLENT \FALSE
ZERO? SPRAY-USED? /?ELS26
PRINTR "The repellent is all gone."
?ELS26: ZERO? PRSI \?ELS31
SET 'SPRAY-USED?,TRUE-VALUE
PRINTR "The spray stinks amazingly for a few moments, then drifts away."
?ELS31: EQUAL? PRSI,ME \?CND36
CALL QUEUE,I-SPRAY,5
PUT STACK,0,1
SET 'SPRAYED?,TRUE-VALUE
?CND36: SET 'SPRAY-USED?,TRUE-VALUE
PRINTR "The spray smells like a mixture of old socks and burning rubber. If I were a grue I'd sure stay clear!"
.FUNCT I-SPRAY
SET 'SPRAYED?,FALSE-VALUE
CRLF
PRINTR "That horrible smell is much less pungent now."
.FUNCT MOUTH-OF-RIVER-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "A mighty river spills into the ocean here. Looking up the river valley, you see a tall waterfall. Atop a cliff, high above you, is the rampart of a fortress. A cave entrance "
IN? VINES,HERE \?ELS10
PRINTI "at the base of the cliff to the west is blocked by writhing green vines"
JUMP ?CND8
?ELS10: PRINTI "lies to the west"
?CND8: PRINTR "."
?ELS5: EQUAL? RARG,M-END \FALSE
IN? VINES,HERE \FALSE
RANDOM 100
LESS? 15,STACK /FALSE
CRLF
PRINTI "Suddenly you realize that, without really thinking about it, you were "
ZERO? FLYING /?ELS27
PRINTI "flying"
JUMP ?CND25
?ELS27: PRINTI "walking"
?CND25: PRINTR " toward the wriggling vines. As you stop, a feeling of annoyance seems to radiate from the plants."
.FUNCT VINES-F
EQUAL? PRSA,V?MEEF \?ELS5
MOVE VINES,DIAL
PRINTR "You can almost feel a wave of pain from the vines as they shrivel away."
?ELS5: EQUAL? PRSA,V?KILL,V?ATTACK \?ELS9
CALL JIGS-UP,STR?324
RSTACK
?ELS9: EQUAL? PRSA,V?BITE,V?KICK,V?THROUGH /?THN12
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP,V?TAKE /?THN12
EQUAL? PRSA,V?RUB,V?MOVE,V?PUSH \FALSE
?THN12: CALL DO-WALK,P?WEST
RSTACK
.FUNCT VINES-EXIT-F
IN? VINES,HERE \?ELS5
CALL JIGS-UP,STR?325
RFALSE
?ELS5: RETURN GRUE-LAIR
.FUNCT GRUE-LAIR-F,RARG
ZERO? SPRAYED? \FALSE
EQUAL? RARG,M-END \FALSE
IN? GRUE-SUIT,PROTAGONIST /FALSE
ZERO? LIT \?THN13
ZERO? BLORTED /?ELS12
?THN13: CALL JIGS-UP,STR?327
RSTACK
?ELS12: CALL JIGS-UP,STR?328
RSTACK
.FUNCT MUTATED-GRUES-F
EQUAL? PRSA,V?FROTZ \?ELS5
PRINTR "One of the grues gives off a flash of light but, strangely, it doesn't seem to notice or care."
?ELS5: EQUAL? PRSA,V?RESEARCH \FALSE
CALL PERFORM,V?RESEARCH,GRUE
RTRUE
.FUNCT MUTATED-GRUES-DESCFCN,RARG
ZERO? LIT \?THN6
ZERO? BLORTED /?ELS5
?THN6: ZERO? SPRAYED? /?ELS12
CALL LIT-MESSAGE
PRINTR "They stagger about the room, covering their noses and making horrid gurgling noises."
?ELS12: IN? GRUE-SUIT,PROTAGONIST \?ELS17
CALL LIT-MESSAGE
PRINTR "They seem to be ignoring you, aside from a few suspicious gurgles in your direction."
?ELS17: CALL LIT-MESSAGE
PRINTR "Baring tremendous fangs, they form a circle around you..."
?ELS5: PRINTR "There are terrifying gurgling noises from the darkness!"
.FUNCT LIT-MESSAGE
PRINTI "A pack of grues fills the room! "
ZERO? LIT /FALSE
PRINTI "The grues, contrary to all conventional wisdom, aren't bothered by your light in the least. They must be mutated grues, no longer fearing light! "
RTRUE
.FUNCT MAMMOTH-CAVERN-F,RARG
EQUAL? RARG,M-ENTER \FALSE
ADD SCORE,CAVERN-POINT >SCORE
SET 'CAVERN-POINT,0
PUT VEZZAS,7,0
RTRUE
.FUNCT MACHINERY-F
EQUAL? PRSA,V?LAMP-ON,V?MUNG \?ELS5
CALL JIGS-UP,STR?330
RSTACK
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTR "You notice, on one machine, a tiny plaque which reads:
FROBOZZ MAGIC MUTATED GRUE BREEDER CO."
.FUNCT CHAMBER-OF-LIVING-DEATH-F,RARG
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?VERSION,V?SAVE,V?QUIT /?ELS5
EQUAL? PRSA,V?RESTART,V?RESTORE /?ELS5
EQUAL? PRSA,V?SUPER-BRIEF,V?VERBOSE,V?BRIEF /?ELS5
EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT /?ELS5
CALL AGONY
RTRUE
?ELS5: EQUAL? RARG,M-END \FALSE
PRINTR "Hideous parasites descend upon you and tear the flesh from your bones, gnaw the eyes from your sockets, and feast upon your very brain tissue. Amazingly, you do not die, and your body regenerates itself as you await the next attack..."
.FUNCT PARASITES-PSEUDO
RFALSE
.FUNCT HALL-OF-ETERNAL-DEATH-F,RARG
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?VERSION,V?SAVE,V?QUIT /?ELS5
EQUAL? PRSA,V?RESTART,V?RESTORE /?ELS5
EQUAL? PRSA,V?SUPER-BRIEF,V?VERBOSE,V?BRIEF /?ELS5
EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT /?ELS5
CALL AGONY
RTRUE
?ELS5: EQUAL? RARG,M-END \FALSE
PRINTR "Disembodied forces suck the very thoughts from your mind, savoring each moment and growing stronger. Every second is an agonizing torment, as though thousands of raging fires were exploding in your skull, filling you with a pain greater than you could ever imagine."
.FUNCT FORCE-PSEUDO
RFALSE
.FUNCT AGONY
PRINTR "Your agony is too great to concentrate on such an action."
.FUNCT BLACK-DOOR-F
EQUAL? PRSA,V?REZROV,V?OPEN \FALSE
PRINTI "As the door opens, hundreds of slime-covered tentacles stream out and drag you across the threshold..."
CRLF
CRLF
CALL ROB,PROTAGONIST
CALL INT,I-TIRED
PUT STACK,0,0
CALL INT,I-THIRST
PUT STACK,0,0
CALL INT,I-HUNGER
PUT STACK,0,0
CALL WEAR-OFF-SPELLS
CALL GOTO,CHAMBER-OF-LIVING-DEATH
RSTACK
.FUNCT SILVER-DOOR-F
EQUAL? PRSA,V?REZROV,V?OPEN \FALSE
PRINTI "The door blows open, knocking you to the ground. You are pulled through the open doorway by an unseen force..."
CRLF
CRLF
CALL ROB,PROTAGONIST
CALL INT,I-TIRED
PUT STACK,0,0
CALL INT,I-HUNGER
PUT STACK,0,0
CALL INT,I-THIRST
PUT STACK,0,0
CALL WEAR-OFF-SPELLS
CALL GOTO,HALL-OF-ETERNAL-PAIN
RSTACK
.FUNCT WHITE-DOOR-F
EQUAL? PRSA,V?REZROV,V?OPEN \FALSE
EQUAL? HERE,BELBOZ-HIDEOUT \?CND6
CALL DO-WALK,P?EAST
RTRUE
?CND6: ADD SCORE,WHITE-DOOR-SCORE >SCORE
SET 'WHITE-DOOR-SCORE,0
PRINTI "The door creaks slowly open. Within, you see someone lying as though asleep. You feel yourself drawn into the room..."
CRLF
CRLF
CALL QUEUE,I-BELBOZ-AWAKES,8
PUT STACK,0,1
CALL GOTO,BELBOZ-HIDEOUT
RSTACK
.FUNCT I-UNVARDIK
SET 'VARDIKED,FALSE-VALUE
CRLF
PRINTR "Your head feels numb for a moment, and your mind feels suddenly open and unprotected."
.FUNCT KILL-BELBOZ
ZERO? BELBOZ-GASPARED /?ELS5
SET 'BELBOZ-GASPARED,FALSE-VALUE
PRINTI "As you stab Belboz, an apparition rises from his body. Floating above him like a cloud of fog, it howls with laughter. A moment later, gaspar begins to heal the wounds, and the spirit flows back into the body."
CRLF
CRLF
CALL I-BELBOZ-AWAKES
RSTACK
?ELS5: PRINTI "You stab the knife time and again into Belboz, who writhes in pain, eyes bulging outward. Sickened and dizzy, you stagger back."
CRLF
CRLF
SET 'BELBOZ-DEAD,TRUE-VALUE
CALL SWANZO-BELBOZ
RSTACK
.FUNCT SWANZO-BELBOZ
PRINTI "A wispy translucent shape rises from the "
ZERO? BELBOZ-DEAD /?ELS5
PRINTI "corpse"
JUMP ?CND3
?ELS5: PRINTI "body"
?CND3: PRINTI " of Belboz. It speaks in a voice so deep that your whole body seems to hear it. ""Foolish Charlatan! I am forced to flee that weak, old body -- I shall take your own, instead! Already I have sucked all knowledge, all secrets from that ancient Enchanter. Now begins an epoch of evil transcending even your worst nightmares; a reign of terror that will last a thousand thousand years!"" The shape blows toward you on a cold wind."
CRLF
CRLF
ZERO? VARDIKED /?ELS19
PRINTI "Jeearr surrounds you like a cloud and begins to contract. Suddenly, it strikes your invisible protection and recoils as if burned. ""No!"" it cries. ""Such a guileless Enchanter developing a mind shield?"" The cloud is thinner, the voice fainter. ""It cannot be! I cannot survive ... without a host."" The demon roils in agony, then thins and dissipates. There is a final scream of pain, then silence."
CRLF
CRLF
ZERO? BELBOZ-DEAD /?ELS27
PRINTI "Jeearr is vanquished; the kingdom is saved. But you - you are stranded in a land unknown, and your closest friend, the greatest Enchanter of his age, lies dead by your own hand. Kneeling by his blood-soaked corpse, you beg for another chance..."
CRLF
CALL FINISH
RSTACK
?ELS27: PRINTI "Belboz moans softly, and begins stirring. He sees you and rises, instantly alert. After posing a few well-chosen questions, he casts a brief but unfamiliar spell.
An instant later, "
IN? GRUE-SUIT,PROTAGONIST \?CND35
PRINTI "your grue suit has vanished and "
?CND35: PRINTI "you are standing in the Chamber of the Circle. The Circle of Enchanters is assembled. Belboz speaks. ""Once again, this young Enchanter has done a matchless service to the Guild and to the entire kingdom, displaying resourcefulness and imagination worthy of the greatest of Enchanters. I grow old, and must soon step down as Head of the Circle. But let it be known that a successor has been found."""
CRLF
CRLF
ADD SCORE,25 >SCORE
SET 'HERE,CHAMBER-OF-THE-CIRCLE
CALL V-SCORE
USL
CRLF
PRINTI "Here ends the second chapter of the Enchanter saga, in which, by virtue of your skills, you have been appointed as the next leader of the Circle of Enchanters. The final adventure awaits you as the Enchanter series concludes."
CRLF
IN? MORGIA-PLANT,BELBOZ-QUARTERS /?CND44
CRLF
PRINTI "You hear a distant bellow. ""What happened to my morgia plant?"""
CRLF
?CND44: CALL FINISH,TRUE-VALUE
RSTACK
?ELS19: PRINTI "You feel an overwhelming sense of oppression as the demon seizes control of your mind and body. The monster reaches into the recesses of your mind, adding your hard-earned magic powers to its own. As it settles comfortably into your skull, the demon grants you a vision of the future. You see the enslaved people of the land toiling to erect great idols to Jeearr. Parents offer up their own children upon these altars, as the rivers of the land fill with blood. And YOU embody Jeearr; you are cursed by ten thousand generations of victims; your face adorns the idols. And worst of all, you remain awake and aware, a witness to horror, never sleeping, and never, ever to escape."
CRLF
SET 'SCORE,-99
CALL FINISH
RSTACK
.FUNCT I-BELBOZ-AWAKES
EQUAL? HERE,BELBOZ-HIDEOUT \FALSE
CRLF
PRINTI "Suddenly, Belboz's eyes flicker and he leaps to his feet. His face is unrecognizable, a twisted mask of hatred. ""Meddlesome Enchanter! I should have killed you all before I left! But better late than never..."" Lightning bolts flash toward you from his fingers, but rather than dying, you find yourself in the..."
CRLF
CRLF
CALL ROB,PROTAGONIST
CALL INT,I-TIRED
PUT STACK,0,0
CALL INT,I-THIRST
PUT STACK,0,0
CALL INT,I-HUNGER
PUT STACK,0,0
CALL WEAR-OFF-SPELLS
CALL GOTO,HALL-OF-ETERNAL-PAIN
RSTACK
.ENDI

View file

@ -641,7 +641,7 @@ as though you're floating in the center of an infinite void.")
<ROUTINE CHAMBER-OF-LIVING-DEATH-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-BEG>
<NOT <VERB? QUIT SAVE VERSION>>
<NOT <VERB? RESTORE RESTART AGAIN>>
<NOT <VERB? RESTORE RESTART ;AGAIN>>
<NOT <VERB? BRIEF VERBOSE SUPER-BRIEF>>
<NOT <VERB? SCRIPT UNSCRIPT>>>
<AGONY>
@ -669,7 +669,7 @@ the next attack..." CR>)>>
<ROUTINE HALL-OF-ETERNAL-DEATH-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-BEG>
<NOT <VERB? QUIT SAVE VERSION>>
<NOT <VERB? RESTORE RESTART AGAIN>>
<NOT <VERB? RESTORE RESTART ;AGAIN>>
<NOT <VERB? BRIEF VERBOSE SUPER-BRIEF>>
<NOT <VERB? SCRIPT UNSCRIPT>>>
<AGONY>
@ -868,7 +868,7 @@ offer up their own children upon these altars, as the rivers of the land fill
with blood. And YOU embody Jeearr; you are cursed by ten thousand generations
of victims; your face adorns the idols. And worst of all, you remain awake
and aware, a witness to horror, never sleeping, and never, ever to escape." CR>
<SETG SCORE -100>
<SETG SCORE -99>
<FINISH>)>>
<ROUTINE I-BELBOZ-AWAKES ()

233
fort.zap Normal file
View file

@ -0,0 +1,233 @@
.FUNCT FORT-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,PARADE-GROUND,GUN-EMPLACEMENT /?THN11
EQUAL? HERE,BARRACKS,ARMORY \?ELS10
?THN11: CALL LOOK-AROUND-YOU
RSTACK
?ELS10: EQUAL? HERE,FORT-ENTRANCE \?ELS14
CALL DO-WALK,P?EAST
RSTACK
?ELS14: CALL CANT-ENTER,FORT
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \?ELS18
EQUAL? HERE,PARADE-GROUND \?ELS23
CALL DO-WALK,P?WEST
RSTACK
?ELS23: EQUAL? HERE,GUN-EMPLACEMENT,BARRACKS,ARMORY \?ELS25
CALL CANT-ENTER,FORT,TRUE-VALUE
RSTACK
?ELS25: CALL LOOK-AROUND-YOU
RSTACK
?ELS18: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "Fort Griffspotter once guarded the lands near Egreth Castle from attack by sea."
.FUNCT PARADE-GROUND-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
PUT VEZZAS,2,0
RFALSE
?ELS5: EQUAL? RARG,M-END \FALSE
ZERO? SLEEPING /FALSE
CALL INT,I-WAKE-UP
PUT STACK,0,0
CALL I-WAKE-UP
RSTACK
.FUNCT ROPE-PSEUDO
EQUAL? PRSA,V?MOVE \?ELS5
CALL PERFORM,V?LOWER,FLAG
RTRUE
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
PRINTR "The rope is attached to the pole and can't possibly be removed."
.FUNCT FLAG-POLE-F
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO,V?CLIMB-ON \?ELS5
PRINTR "That sort of thing went out of fashion years ago."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "A rope runs up the side of the pole."
.FUNCT FLAG-DESCFCN,RARG
ZERO? FLAG-RAISED /?ELS5
PRINTR "A tattered flag, apparently that of ancient Quendor, still flies atop a mighty flagpole in the center of the field."
?ELS5: PRINTR "A flag displaying the brown and gold of ancient Quendor is lying here."
.FUNCT FLAG-F
EQUAL? PRSA,V?FLY \?CND1
CALL PERFORM,V?RAISE,FLAG
RTRUE
?CND1: ZERO? FLAG-RAISED /?ELS8
EQUAL? PRSA,V?RAISE \?ELS14
PRINTR "It's already at the top of the pole."
?ELS14: EQUAL? PRSA,V?LOWER \?ELS18
SET 'FLAG-RAISED,FALSE-VALUE
FCLEAR FLAG,TRYTAKEBIT
FCLEAR FLAG-POLE,NDESCBIT
PRINTR "The flag is lowered to the ground."
?ELS18: EQUAL? PRSA,V?EXAMINE \?ELS22
PRINTR "You can't see it very well from here -- the flagpole is very tall."
?ELS22: EQUAL? PRSA,V?TAKE,V?WAVE,V?SHAKE /?THN27
EQUAL? PRSA,V?EAT,V?RUB,V?MOVE /?THN27
EQUAL? PRSA,V?LOOK-INSIDE,V?DRINK \?ELS26
?THN27: PRINTI "The flag is "
ZERO? FLYING /?CND31
PRINTI "still "
?CND31: PRINTR "way above you at the top of the flagpole!"
?ELS26: EQUAL? PRSA,V?LOOK-UNDER \FALSE
CALL PERFORM,V?EXAMINE,FLAG-POLE
RTRUE
?ELS8: EQUAL? PRSA,V?RAISE \?ELS47
EQUAL? HERE,PARADE-GROUND \?ELS52
FSET FLAG,TRYTAKEBIT
MOVE FLAG,HERE
FSET FLAG-POLE,NDESCBIT
SET 'FLAG-RAISED,TRUE-VALUE
PRINTR "The flag is raised to the top of the pole."
?ELS52: PRINTR "There's no flagpole in sight."
?ELS47: EQUAL? PRSA,V?LOWER \?ELS60
PRINTR "You've already done that."
?ELS60: EQUAL? PRSA,V?WAVE \?ELS64
PRINTR "How patriotic!"
?ELS64: EQUAL? PRSA,V?WEAR \?ELS68
PRINTR "Who do you think you are, Abbie Hoffman?"
?ELS68: EQUAL? PRSA,V?SHAKE,V?LOOK-INSIDE,V?EXAMINE /?THN75
EQUAL? PRSA,V?SEARCH,V?RUB \?ELS72
?THN75: ZERO? FOOBLE-FOUND \?ELS72
SET 'FOOBLE-FOUND,TRUE-VALUE
MOVE FOOBLE-VIAL,HERE
CALL THIS-IS-IT,FOOBLE-VIAL
PRINTR "As you fiddle with the flag, an aqua vial drops from a hidden pocket and falls to the ground."
?ELS72: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The tattered flag displays the brown and gold of ancient Quendor."
.FUNCT FOOBLE-VIAL-F
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
""FOOBLE POTION
(increase muscular coordination)"""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT FOOBLE-POTION-F
EQUAL? PRSA,V?DRINK,V?EAT \?ELS5
CALL HELD?,FOOBLE-VIAL
ZERO? STACK \?ELS5
CALL POTION-POUR,FOOBLE-VIAL
RSTACK
?ELS5: EQUAL? PRSA,V?RESEARCH \?ELS9
CALL READ-ABOUT-POTIONS,2
RSTACK
?ELS9: EQUAL? PRSA,V?DRINK,V?EAT \?ELS11
MOVE FOOBLE-POTION,DIAL
ZERO? UNDER-INFLUENCE /?CND12
CALL TWO-POTIONS
RTRUE
?CND12: SET 'UNDER-INFLUENCE,FOOBLE-POTION
CALL QUEUE,I-UNFOOBLE,17
PUT STACK,0,1
SET 'FOOBLED,TRUE-VALUE
PRINTR "The aqua potion tasted like lime jelly, and sent vibrations through your muscles."
?ELS11: EQUAL? PRSA,V?DROP \?ELS19
CALL PERFORM,V?POUR,PRSO,PRSI
RTRUE
?ELS19: EQUAL? PRSA,V?POUR \FALSE
EQUAL? PRSO,FOOBLE-POTION \FALSE
CALL POTION-POUR,FOOBLE-VIAL
RSTACK
.FUNCT I-UNFOOBLE
SET 'FOOBLED,FALSE-VALUE
EQUAL? UNDER-INFLUENCE,FOOBLE-POTION \?CND1
SET 'UNDER-INFLUENCE,FALSE-VALUE
?CND1: CRLF
PRINTR "Your muscles feel limp for a moment."
.FUNCT BARRACKS-PSEUDO
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,GLOBAL-ROOM,PRSI
RTRUE
.FUNCT EMPLACEMENT-EXIT-F
ZERO? FLYING /?ELS3
PRINTI "The updrafts from the "
EQUAL? PRSO,P?NORTH \?ELS9
PRINTI "river"
JUMP ?CND1
?ELS9: PRINTI "ocean"
JUMP ?CND1
?ELS3: PRINTI "The plunge"
?CND1: PRINTI " would kill you."
CRLF
RFALSE
.FUNCT CANNON-F
EQUAL? PRSA,V?LAMP-ON,V?SHOOT \?ELS5
PRINTR "This cannon probably hasn't worked for centuries!"
?ELS5: EQUAL? PRSA,V?CLOSE \?ELS9
CALL V-DEFLATE
RSTACK
?ELS9: EQUAL? PRSA,V?SEARCH,V?REACH-IN \?ELS11
FSET? YIPPLES,INVISIBLE \?ELS11
SET 'BITTEN,TRUE-VALUE
CALL QUEUE,I-BITE-HEAL,20
PUT STACK,0,1
PRINTR "Something bites your hand!"
?ELS11: EQUAL? PRSA,V?LOOK-INSIDE \?ELS17
FSET? YIPPLES,INVISIBLE \?ELS17
FCLEAR YIPPLES,INVISIBLE
PRINTR "Lying at the bottom of the barrel is a pile of identical scrolls!"
?ELS17: EQUAL? PRSA,V?EXAMINE \?ELS23
PRINTR "The barrel is wide enough to hold the hugest of cannonballs, but it isn't very deep."
?ELS23: EQUAL? PRSA,V?SEARCH,V?REACH-IN \?ELS27
IN? YIPPLES,CANNON \?ELS27
CALL PERFORM,V?TAKE,YIPPLES
RTRUE
?ELS27: EQUAL? PRSA,V?PUT \?ELS31
IN? YIPPLES,CANNON \?ELS31
EQUAL? BAT-GUANO,PRSO \?ELS31
MOVE YIPPLES,DIAL
MOVE YONK-SCROLL,CANNON
CALL THIS-IS-IT,YONK-SCROLL
MOVE BAT-GUANO,CANNON
PRINTI "When you drop the guano into the barrel, "
FSET? YIPPLES,INVISIBLE \?ELS38
PRINTI "dozens of scrolls pour out and literally run off"
JUMP ?CND36
?ELS38: PRINTI "the scrolls sprout feet and spill out of the cannon, dashing away"
?CND36: PRINTI " in every direction! A single ordinary scroll is left sitting at the bottom of the barrel."
CRLF
FCLEAR YIPPLES,INVISIBLE
RTRUE
?ELS31: EQUAL? PRSA,V?THROUGH \FALSE
ZERO? FWEEPED /FALSE
PRINTR "Your wingspan is too large."
.FUNCT YIPPLES-F
EQUAL? PRSA,V?TAKE \?ELS5
SET 'BITTEN,TRUE-VALUE
CALL QUEUE,I-BITE-HEAL,20
PUT STACK,0,1
PRINTR "As you reach into the cannon, something bites you painfully on the hand!"
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "Every scroll is virtually identical."
.FUNCT I-BITE-HEAL
SET 'BITTEN,FALSE-VALUE
RFALSE
.ENDI

1055
globals.zap Normal file

File diff suppressed because it is too large Load diff

View file

@ -106,7 +106,7 @@
<COND (.X
<TELL "You'll have to be more specific, I'm afraid." CR>)
(<EQUAL? ,WINNER ,PROTAGONIST>
<TELL "You can't see">
<TELL "You can't see ">
<COND (<OR <EQUAL? ,P-XNAM ,W?BELBOZ ,W?HELIST ,W?KRILL>
<EQUAL? ,P-XNAM ,W?FROBAR ,W?JEEARR ,W?FLATHE>
<EQUAL? ,P-XNAM ,W?DUNCAN ,W?ENTHAR ,W?THOLL>
@ -116,13 +116,13 @@
<EQUAL? ,P-XNAM ,W?ORKAN ,W?BARBEL ,W?CHEVAU>>
T)
(T
<TELL " any">)>
<TELL "any ">)>
<NOT-HERE-PRINT .PRSO?>
<TELL " here!" CR>)
(T
<TELL "Looking confused,">
<ARTICLE ,WINNER T>
<TELL " says, \"I don't see any">
<TELL " says, \"I don't see any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!\"" CR>)>
<SETG P-CONT <>>
@ -149,7 +149,7 @@
<SETG PRSI ,P-MOBY-FOUND>)>
<RFALSE>)
(<NOT .PRSO?>
<TELL "You wouldn't find any">
<TELL "You wouldn't find any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " there." CR>
<RTRUE>)
@ -166,27 +166,27 @@
<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (<EQUAL? ,P-XNAM ,W?BELBOZ>
<TELL " Belboz">)
<TELL "Belboz">)
(<EQUAL? ,P-XNAM ,W?THOLL>
<TELL " Tholl">)
<TELL "Tholl">)
(<OR <EQUAL? ,P-XNAM ,W?GURTH ,W?MIZNIA ,W?ACCARD>
<EQUAL? ,P-XNAM ,W?BORPHE ,W?ANTHAR ,W?MITHIC>
<EQUAL? ,P-XNAM ,W?GALEPA ,W?MAREIL ,W?THRIFF>>
<TELL " that place">)
<TELL "that place">)
(<OR <EQUAL? ,P-XNAM ,W?HELIST ,W?FROBAR ,W?ORKAN>
<EQUAL? ,P-XNAM ,W?BARBEL ,W?CHEVAU>>
<TELL " that person">)
<TELL "that person">)
(<EQUAL? ,P-XNAM ,W?JEEARR>
<TELL " Jeearr">)
<TELL "Jeearr">)
(<EQUAL? ,P-XNAM ,W?KRILL>
<TELL " Krill">)
<TELL "Krill">)
(<EQUAL? ,P-XNAM ,W?FLATHE>
<TELL " Flathead">)
<TELL "Flathead">)
(<EQUAL? ,P-XNAM ,W?DUNCAN ,W?ENTHAR>
<TELL " that King">)
<TELL "that King">)
(,P-OFLAG
<COND (,P-XADJ <TELL " "> <PRINTB ,P-XADJN>)>
<COND (,P-XNAM <TELL " "> <PRINTB ,P-XNAM>)>)
<COND (,P-XADJ <PRINTB ,P-XADJN>)>
<COND (,P-XNAM <PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T
@ -1084,6 +1084,12 @@ have shifted around." CR>
" The spell seems very long and extremely complicated.">)>
<CRLF>)>>
<ROUTINE ALWAYS-MEMORIZED (SPELL)
<COND (<EQUAL? .SPELL ,GNUSTO-SPELL ,FROTZ-SPELL ,REZROV-SPELL>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE SPELL-F ("AUX" MEM? (FORGET <>))
<COND (<VERB? RESEARCH>
<TELL "A spell produced by " <PICK-ONE ,MANUFACTURERS> "." CR>)
@ -1102,23 +1108,21 @@ a scroll in your hand." CR>)
<TELL <GETP ,PRSO ,P?TEXT>>
<TELL "\"." CR>)>)
(<VERB? LEARN>
<COND (<NOT <IN? ,PRSO ,SPELL-BOOK>>
<COND (<ALWAYS-MEMORIZED ,PRSO>
<TELL "You already know that spell by heart." CR>)
(<NOT <IN? ,PRSO ,SPELL-BOOK>>
<COND (<IN? <LOC ,PRSO> ,PROTAGONIST>
<TELL
"You haven't written that spell into your book yet. Until you do, you
can't memorize the spell." CR>)
"You can't memorize a spell until you've written it into your spell book." CR>)
(T
<V-LEARN>)>)
(<EQUAL? ,PRSO ,GNUSTO-SPELL ,FROTZ-SPELL ,REZROV-SPELL>
<TELL "You already know that spell by heart." CR>)
<V-LEARN>)>)
(<NOT <IN? ,SPELL-BOOK ,PROTAGONIST>>
<TELL
"You don't have your spell book. How do you expect to memorize a spell
without a spell book?" CR>)
"You don't have your spell book. How do you expect to learn
a spell without a spell book?" CR>)
(<AND <NOT ,LIT>
<NOT ,BLORTED>>
<TELL
"It will be hard to learn that spell in the dark." CR>)
<NOT ,BLORTED>>
<TELL "You can't learn it in the dark." CR>)
(<FSET? ,SPELL-BOOK ,MUNGBIT>
<PERFORM ,V?READ ,SPELL-BOOK>
<THIS-IS-IT ,PRSO>
@ -1179,7 +1183,8 @@ likely that something may have been forgotten in the shuffle." CR>)>
<PUTP .SP ,P?COUNT <- .NUM 1>>
<RTRUE>)>
<PUT ,FORGET-TBL 0 .NUM>
<COND (<0? .NUM> <RTRUE>)>
<COND (<0? .NUM>
<RTRUE>)>
<REPEAT ()
<COND (<NOT <EQUAL? <SET NSPL
<PICK-ONE ,FORGET-TBL>>
@ -1405,4 +1410,41 @@ bellowing and splashing, and twitching their ears.">>
"very"
"extremely"
"incredibly"
"dangerously">>
"dangerously">>
<ROUTINE SPELL-CHECK (TBL WRD "AUX" (OBJ <>))
<COND (<EQUAL? .WRD ,W?GNUSTO>
<SET OBJ ,GNUSTO-SPELL>)
(<EQUAL? .WRD ,W?FROTZ>
<SET OBJ ,FROTZ-SPELL>)
(<EQUAL? .WRD ,W?REZROV>
<SET OBJ ,REZROV-SPELL>)
(<EQUAL? .WRD ,W?IZYUK>
<SET OBJ ,IZYUK-SPELL>)
(<EQUAL? .WRD ,W?AIMFIZ>
<SET OBJ ,AIMFIZ-SPELL>)
(<EQUAL? .WRD ,W?FWEEP>
<SET OBJ ,FWEEP-SPELL>)
(<EQUAL? .WRD ,W?SWANZO>
<SET OBJ ,SWANZO-SPELL>)
(<EQUAL? .WRD ,W?GOLMAC>
<SET OBJ ,GOLMAC-SPELL>)
(<EQUAL? .WRD ,W?VARDIK>
<SET OBJ ,VARDIK-SPELL>)
(<EQUAL? .WRD ,W?PULVER>
<SET OBJ ,PULVER-SPELL>)
(<EQUAL? .WRD ,W?MEEF>
<SET OBJ ,MEEF-SPELL>)
(<EQUAL? .WRD ,W?VEZZA>
<SET OBJ ,VEZZA-SPELL>)
(<EQUAL? .WRD ,W?GASPAR>
<SET OBJ ,GASPAR-SPELL>)
(<EQUAL? .WRD ,W?YOMIN>
<SET OBJ ,YOMIN-SPELL>)
(<EQUAL? .WRD ,W?YONK>
<SET OBJ ,YONK-SPELL>)
(<EQUAL? .WRD ,W?MALYON>
<SET OBJ ,MALYON-SPELL>)>
<COND (.OBJ
<OBJ-FOUND .OBJ .TBL>)>
<RTRUE>>

1684
gparser.zap Normal file

File diff suppressed because it is too large Load diff

1550
gparser.zil Normal file

File diff suppressed because it is too large Load diff

609
guild.zap Normal file
View file

@ -0,0 +1,609 @@
.FUNCT BED-F,RARG=0
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?WALK \?ELS10
CALL NOT-GOING-ANYWHERE,BED
RSTACK
?ELS10: EQUAL? PRSA,V?TAKE \FALSE
CALL HELD?,PRSO
ZERO? STACK \FALSE
EQUAL? PRSO,GLOBAL-SLEEP /FALSE
EQUAL? PRSO,GRUE,ME,BED /FALSE
IN? PRSO,BED /FALSE
PRINTR "You can't reach it from the bed."
?ELS5: ZERO? RARG \FALSE
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS28
PRINTR "Huh?"
?ELS28: EQUAL? PRSA,V?WALK-TO \?ELS32
CALL PERFORM,V?WALK-TO,GLOBAL-SLEEP
RTRUE
?ELS32: EQUAL? PRSA,V?LIE-DOWN,V?CLIMB-ON \FALSE
CALL PERFORM,V?BOARD,PRSO
RTRUE
.FUNCT GLOBAL-BED-F
EQUAL? GLOBAL-BED,PRSO \?ELS5
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,BED,PRSI
RTRUE
?ELS5: SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,BED
RTRUE
.FUNCT BELBOZ-QUARTERS-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "The personal chamber of Belboz, who presides over the Circle of Enchanters, is appointed with a beautiful woven wall hanging"
IN? MORGIA-PLANT,HERE \?CND8
PRINTI ", an exotic morgia plant,"
?CND8: PRINTR " and a wide darkwood desk crafted by the artisans of Gurth. The hallway lies to the east."
.FUNCT PERCH-PSEUDO
EQUAL? PRSA,V?CLIMB-ON \FALSE
PRINTR "I'd recommend a good doctor, but we need the eggs."
.FUNCT PARROT-F
EQUAL? PRSA,V?TAKE \FALSE
PRINTR "The parrot hops to the other end of the perch."
.FUNCT I-PARROT
IN? PARROT,HERE \FALSE
RANDOM 100
LESS? 40,STACK /FALSE
CRLF
PRINTI """Squawk! "
CALL PICK-ONE,PARROTISMS
PRINT STACK
PRINTR " Squawk!"""
.FUNCT BELBOZ-DESK-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The desk has one drawer which is "
FSET? DESK-DRAWER,OPENBIT \?ELS10
PRINTI "open"
JUMP ?CND8
?ELS10: PRINTI "closed"
?CND8: PRINTI "."
CRLF
FIRST? PRSO \TRUE
RFALSE
?ELS5: EQUAL? PRSA,V?SEARCH \?ELS27
FSET? DESK-DRAWER,OPENBIT /?ELS27
FIRST? DESK-DRAWER \?ELS27
PRINTI "You open the desk drawer and find "
CALL PRINT-CONTENTS,DESK-DRAWER
FSET DESK-DRAWER,OPENBIT
PRINTR "."
?ELS27: EQUAL? PRSA,V?REZROV,V?OPEN,V?CLOSE /?THN36
EQUAL? PRSA,V?LOOK-INSIDE,V?REACH-IN \?ELS35
?THN36: SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,DESK-DRAWER
RTRUE
?ELS35: EQUAL? PRSA,V?TAKE \?ELS39
EQUAL? BELBOZ-DESK,PRSI \?ELS39
FIRST? DESK-DRAWER \?ELS39
CALL PERFORM,V?TAKE,PRSO,DESK-DRAWER
FIRST? BELBOZ-DESK \TRUE
RFALSE
?ELS39: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,BELBOZ-DESK \FALSE
CALL PERFORM,V?PUT,PRSO,DESK-DRAWER
RTRUE
.FUNCT TINY-BOX-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "There is writing on the lid of the box."
CRLF
CALL PERFORM,V?READ,PRSO
RTRUE
?ELS5: EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
"" MAGIC AMULET
The closer this amulet is to
its owner, the brighter it may
glow. Ideal for leaving with
your loved ones if you go on
a long and hazardous journey.
This amulet is sensitized to
-> BELBOZ THE NECROMANCER
Another fine product of the
Frobozz Magic Amulet Company."""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT MAGIC-AMULET-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "A blue jewel hangs from a long golden chain. The jewel is "
CALL AMULET-GLOWS
PRINTR "."
?ELS5: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "The Amulet of Aggthora was a legendary jewel renowned for its powers of augury."
.FUNCT AMULET-DESCFCN,RARG
PRINTI "There is an amulet here. The amulet's jewel is "
CALL AMULET-GLOWS
PRINTR "."
.FUNCT AMULET-GLOWS
CALL IN-GUILD-HALL?
ZERO? STACK /?ELS5
PRINTI "dark"
RTRUE
?ELS5: CALL IN-MAZE-AREA?
ZERO? STACK /?ELS9
PRINTI "glowing"
RTRUE
?ELS9: CALL IN-CRATER-AREA?
ZERO? STACK /?ELS13
PRINTI "glowing brightly"
RTRUE
?ELS13: CALL IN-COAL-MINE?
ZERO? STACK /?ELS17
PRINTI "glowing very brightly"
RTRUE
?ELS17: CALL IN-END-GAME?
ZERO? STACK /?ELS21
PRINTI "pulsing with flashes of brilliant light"
RTRUE
?ELS21: PRINTI "glowing dimly"
RTRUE
.FUNCT IN-GUILD-HALL?,X=0
ZERO? X \?CND1
SET 'X,HERE
?CND1: EQUAL? X,HALLWAY-1,HALLWAY-2,CHAMBER-OF-THE-CIRCLE /TRUE
EQUAL? X,YOUR-QUARTERS,BELBOZ-QUARTERS,LOBBY /TRUE
EQUAL? X,FROBAR-QUARTERS,HELISTAR-QUARTERS /TRUE
EQUAL? X,STORE-ROOM,LIBRARY,CELLAR /TRUE
EQUAL? X,APPRENTICE-QUARTERS,SERVANT-QUARTERS \FALSE
RTRUE
.FUNCT IN-COAL-MINE?
EQUAL? HERE,COAL-BIN-ROOM,DIAL-ROOM,SHAFT-BOTTOM /TRUE
EQUAL? HERE,SHAFT-TOP,TOP-OF-CHUTE,SLANTED-ROOM /TRUE
EQUAL? HERE,COAL-MINE-1,COAL-MINE-2,COAL-MINE-3 \FALSE
RTRUE
.FUNCT IN-MAZE-AREA?
EQUAL? HERE,TOLL-GATE,END-OF-HIGHWAY,HOLLOW /TRUE
EQUAL? HERE,OUTSIDE-GLASS-DOOR,GLASS-MAZE,STORE /TRUE
EQUAL? HERE,ENTRANCE-HALL,STONE-HUT,OUTSIDE-STORE \FALSE
RTRUE
.FUNCT IN-CRATER-AREA?
EQUAL? HERE,HIGHWAY,BEND,EDGE-OF-CRATER /TRUE
EQUAL? HERE,CRATER,WINDING-TUNNEL,HALL-OF-CARVINGS /TRUE
EQUAL? HERE,EDGE-OF-CHASM,BARE-PASSAGE,SOOTY-ROOM /TRUE
EQUAL? HERE,ELBOW-ROOM,TREE-ROOM,PARK-ENTRANCE /TRUE
EQUAL? HERE,EAST-END-OF-MIDWAY,FLUME,HAUNTED-HOUSE /TRUE
EQUAL? HERE,WEST-END-OF-MIDWAY,ROLLER-COASTER,ARCADE /TRUE
EQUAL? HERE,CASINO \FALSE
RTRUE
.FUNCT IN-END-GAME?
EQUAL? HERE,OCEAN-NORTH,OCEAN-SOUTH,BELBOZ-HIDEOUT /TRUE
EQUAL? HERE,MOUTH-OF-RIVER,GRUE-LAIR,MAMMOTH-CAVERN /TRUE
EQUAL? HERE,CHAMBER-OF-LIVING-DEATH,COVE,LAGOON-FLOOR /TRUE
EQUAL? HERE,HALL-OF-ETERNAL-PAIN,LAGOON \FALSE
RTRUE
.FUNCT JOURNAL-F
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?READ \?ELS5
FSET? JOURNAL,OPENBIT \?ELS10
PRINTI "You skim through the pages of the journal, a combination diary and notebook. Most of the notations, written in Belboz's familiar flowing script, deal with meetings of the Circle and business of the Guild.
There is one interesting entry toward the end of the book. Belboz refers to an ancient and evil force known simply as Jeearr, a demon whose powers could endanger the Circle and possibly the entire kingdom. He has decided to conduct some dangerous exploratory experiments, operating alone to shield the Circle from the perils involved.
The last three entries are strange and frightening -- written in a hand quite different from that of Belboz, and in a language totally unfamiliar to you.
On the inside cover is an inscription, written in a light script, which reads ""Current code: "
GET CODE-TABLE,CODE-NUMBER
PRINT STACK
PRINTR """."
?ELS10: PRINTR "It's closed and sealed with a lock."
?ELS5: EQUAL? PRSA,V?REZROV,V?UNLOCK,V?OPEN \FALSE
FSET? JOURNAL,OPENBIT \?ELS23
PRINTR "The journal is already open!"
?ELS23: EQUAL? PRSA,V?REZROV \?ELS27
PRINTR "The journal seems to bear a spell protecting it against the simple rezrov spell."
?ELS27: ZERO? PRSI \?CND32
IN? KEY,PROTAGONIST \?ELS37
SET 'PRSI,KEY
PRINTI "(with the key)"
CRLF
JUMP ?CND32
?ELS37: SET 'PRSI,HANDS
?CND32: EQUAL? PRSI,KEY \?ELS46
FSET JOURNAL,OPENBIT
PRINTR "The journal springs open."
?ELS46: PRINTI "You can't unlock it with"
CALL ARTICLE,PRSI
PRINTR "."
.FUNCT WHEEL-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "Like most infotaters, this one has several windows and a rotating data wheel. It is leather-bound and beautifully illustrated. "
CALL INFOTATER-NOTE
RSTACK
?ELS5: EQUAL? PRSA,V?READ \?ELS9
PRINTI "The infotater has entries on a dozen native beasts. "
CALL INFOTATER-NOTE
RSTACK
?ELS9: EQUAL? PRSA,V?SPIN,V?TURN \?ELS13
PRINTR "Refer to the infotater in your SORCERER package."
?ELS13: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "The infotater, which popular legends say was invented by Entharion the Wise, is the best way to store data ever discovered."
.FUNCT INFOTATER-NOTE
PRINTR "(NOTE: This is the infotater included in your game package.)"
.FUNCT WALL-HANGING-F
EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND,V?MOVE /?THN6
EQUAL? PRSA,V?RAISE,V?SHAKE,V?RUB \?ELS5
?THN6: FSET? KEY,TOUCHBIT /?ELS12
MOVE KEY,HERE
CALL THIS-IS-IT,KEY
FSET KEY,TOUCHBIT
ADD SCORE,15 >SCORE
PRINTR "As you move the tapestry, a key falls out from behind it and lands on the floor."
?ELS12: PRINTR "Nope, no more keys."
?ELS5: EQUAL? PRSA,V?UNTIE,V?TAKE \?ELS20
PRINTR "It looks too well fastened to remove from the wall."
?ELS20: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It is a beautiful piece of local handiwork, given to Belboz by the grateful townspeople after his (admittedly showy) pyrotechnical destruction of the evil giant Amathradonis. The hanging is affixed to the wall at its upper corners."
.FUNCT MORGIA-PLANT-F
EQUAL? PRSA,V?MEEF \?ELS5
MOVE MORGIA-PLANT,DIAL
PRINTR "The morgia plant, particularly susceptible to the meef spell, shrivels up and vanishes."
?ELS5: EQUAL? PRSA,V?TAKE \?ELS9
PRINTR "The plant is so heavy you succeed only in budging it a few inches."
?ELS9: EQUAL? PRSA,V?EAT \?ELS13
PRINTR "Morgias taste terrible; besides, Belboz wouldn't like someone munching on his favorite plant."
?ELS13: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "A beautiful and exotic plant, the morgia is well-known for its susceptibility to magic spells."
.FUNCT HALLWAY-1-F,RARG
EQUAL? RARG,M-LOOK \FALSE
CALL HALLWAY-DESC
PRINTI "A heavy wooden door, currently "
FSET? CHAMBER-DOOR,OPENBIT \?ELS10
PRINTI "open"
JUMP ?CND8
?ELS10: PRINTI "closed"
?CND8: PRINTR ", leads north."
.FUNCT HALLWAY-2-F,RARG
EQUAL? RARG,M-LOOK \FALSE
CALL HALLWAY-DESC
PRINTR "A large marble archway to the south leads into an open area."
.FUNCT HALLWAY-DESC
PRINTI "Rooms lie to the east and west from this north-south corridor. "
RTRUE
.FUNCT CHAMBER-OF-THE-CIRCLE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "The meeting place of the Circle of Enchanters is a large, round room with a high domed ceiling. A table occupies the center of the room. Engraved on the wall is a list of tenets, the Guild's code of honor. The only door, at the southernmost point of the perimeter, is "
FSET? CHAMBER-DOOR,OPENBIT \?ELS10
PRINTI "open"
JUMP ?CND8
?ELS10: PRINTI "closed"
?CND8: PRINTR "."
.FUNCT TABLE-PSEUDO
EQUAL? PRSA,V?CLIMB-ON,V?PUT-ON \?ELS5
SET 'TABLE-WARNING,TRUE-VALUE
PRINTR "A warning nymph appears, floating over the table. ""The servants just finished waxing the table, and it's still wet."" With a sly grin, the nymph vanishes."
?ELS5: ZERO? TABLE-WARNING /FALSE
EQUAL? PRSA,V?PULVER \FALSE
PRINTR "That would cause the wax to dry dull and yellowish!"
.FUNCT MARBLE-PSEUDO
RFALSE
.FUNCT I-MAILMAN
MOVE MAGAZINE,MAILBOX
FCLEAR MAILBOX,OPENBIT
IN? MATCHBOOK,MAILBOX \?CND1
MOVE VILSTU-VIAL,MAILBOX
MOVE MATCHBOOK,DIAL
?CND1: EQUAL? HERE,LOBBY \?ELS8
SET 'MAILMAN-FOLLOW,TRUE-VALUE
CALL QUEUE,I-MAILMAN-FOLLOW,1
PUT STACK,0,1
CRLF
PRINTR "A member of the Messengers Guild walks up and puts something in the receptacle. He closes it, and rings the doorbell. Noticing you, he gives a friendly wave before departing."
?ELS8: CALL IN-GUILD-HALL?
ZERO? STACK /FALSE
CRLF
PRINTR "The Guild Hall doorbell chimes."
.FUNCT I-MAILMAN-FOLLOW
SET 'MAILMAN-FOLLOW,FALSE-VALUE
RFALSE
.FUNCT MAGAZINE-F
EQUAL? PRSA,V?READ,V?LOOK-INSIDE,V?OPEN \FALSE
PRINTI "This month's cover story is about Belboz! Other stories relate the explosion of spell scroll manufacturers, and the coming shakedown in the magic potion industry. The address label on the cover reads:
"
CALL FIXED-FONT-ON
PRINTI " ""Z5 ACCAR256 4-964
Hall of the Guild of Enchanters
Village of Accardi-By-The-Sea
Land of Frobozz"""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT VILSTU-VIAL-F
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
""VILSTU POTION
(obviate need for breathing)"""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT VILSTU-POTION-F
EQUAL? PRSA,V?DRINK,V?EAT \?ELS5
IN? VILSTU-VIAL,PROTAGONIST /?ELS5
CALL POTION-POUR,VILSTU-VIAL
RSTACK
?ELS5: EQUAL? PRSA,V?RESEARCH \?ELS9
CALL READ-ABOUT-POTIONS,3
RSTACK
?ELS9: EQUAL? PRSA,V?DRINK,V?EAT \?ELS11
MOVE VILSTU-POTION,DIAL
ZERO? UNDER-INFLUENCE /?CND12
CALL TWO-POTIONS
RTRUE
?CND12: SET 'UNDER-INFLUENCE,VILSTU-POTION
CALL QUEUE,I-BREATHE,19
PUT STACK,0,1
SET 'VILSTUED,TRUE-VALUE
EQUAL? HERE,COAL-BIN-ROOM,DIAL-ROOM \?CND16
CALL INT,I-SUFFOCATE
PUT STACK,0,0
CALL QUEUE,I-OLDER-SELF,1
PUT STACK,0,1
?CND16: PRINTR "The orange potion tasted like pepper, and made your nose tingle."
?ELS11: EQUAL? PRSA,V?DROP \?ELS22
CALL PERFORM,V?POUR,PRSO,PRSI
RTRUE
?ELS22: EQUAL? PRSA,V?POUR \FALSE
EQUAL? PRSO,VILSTU-POTION \FALSE
CALL POTION-POUR,VILSTU-VIAL
RSTACK
.FUNCT I-BREATHE
INC 'BREATH-SHORTAGE
EQUAL? UNDER-INFLUENCE,VILSTU-POTION \?CND1
SET 'UNDER-INFLUENCE,FALSE-VALUE
?CND1: EQUAL? BREATH-SHORTAGE,1 \?ELS8
CALL QUEUE,I-BREATHE,4
PUT STACK,0,1
CRLF
PRINTI "You feel the vilstu potion beginning to wear off"
CALL IN-COAL-MINE?
ZERO? STACK /?CND11
PRINTI ", and the air here seems pretty unbreathable"
?CND11: PRINTR "."
?ELS8: EQUAL? BREATH-SHORTAGE,2 \?ELS19
CALL QUEUE,I-BREATHE,6
PUT STACK,0,1
CRLF
PRINTI "The vilstu potion has almost completely worn off now"
CALL IN-COAL-MINE?
ZERO? STACK /?CND22
PRINTI ", and I doubt you could survive here without it"
?CND22: PRINTR "."
?ELS19: SET 'VILSTUED,FALSE-VALUE
EQUAL? HERE,LAGOON-FLOOR \?CND31
CALL QUEUE,I-DROWN,-1
PUT STACK,0,1
?CND31: CRLF
PRINTI "You feel the final effects of the vilstu potion vanish"
CALL IN-COAL-MINE?
ZERO? STACK /?ELS40
CALL JIGS-UP,STR?167
RSTACK
?ELS40: SET 'AWAKE,8
SET 'LOAD-ALLOWED,20
SET 'FUMBLE-NUMBER,1
CALL QUEUE,I-TIRED,8
PUT STACK,0,1
PRINTR ", leaving you totally exhausted (an unfortunate side effect)."
.FUNCT STAND-PSEUDO
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "A volume lies open on the stand."
.FUNCT ENCYCLOPEDIA-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The volume lies open to "
ZERO? VOLUME-USED /?ELS12
PRINTR "a random entry."
?ELS12: PRINTI "an entry about the Glass Maze of King Duncanthrax. "
CALL PERFORM,V?RESEARCH,MAZE
CRLF
PRINTR "You could probably read about all sorts of other interesting people, places, and things by looking them up in the encyclopedia."
?ELS5: EQUAL? PRSA,V?OPEN \?ELS23
PRINTR "It is."
?ELS23: EQUAL? PRSA,V?CLOSE \?ELS27
PRINTR "Why bother?"
?ELS27: EQUAL? PRSA,V?TAKE \?ELS31
PRINTR "A library nymph appears, sitting on your wrist. ""Sorry, but the encyclopedia is never to be removed from the stand."" Kicking you gently in the thumb, the nymph vanishes."
?ELS31: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
CALL PERFORM,V?READ,PRSO
RTRUE
.FUNCT BERZIO-VIAL-F
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
""BERZIO POTION
(obviate need for food or drink)"""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT BERZIO-POTION-F
EQUAL? PRSA,V?DRINK,V?EAT \?ELS5
IN? BERZIO-VIAL,PROTAGONIST /?ELS5
CALL POTION-POUR,BERZIO-VIAL
RSTACK
?ELS5: EQUAL? PRSA,V?RESEARCH \?ELS9
CALL READ-ABOUT-POTIONS,1
RSTACK
?ELS9: EQUAL? PRSA,V?DRINK,V?EAT \?ELS11
MOVE BERZIO-POTION,DIAL
SET 'BERZIOED,TRUE-VALUE
CALL QUEUE,I-UNBERZIO,100
PUT STACK,0,1
ADD SCORE,10 >SCORE
PRINTI "The potion was completely tasteless."
GRTR? HUNGER-LEVEL,0 /?THN17
GRTR? THIRST-LEVEL,0 \?CND14
?THN17: PRINTI " You no longer feel hungry and thirsty, though."
?CND14: SET 'HUNGER-LEVEL,0
SET 'THIRST-LEVEL,0
CRLF
RTRUE
?ELS11: EQUAL? PRSA,V?DROP \?ELS22
CALL PERFORM,V?POUR,PRSO,PRSI
RTRUE
?ELS22: EQUAL? PRSA,V?POUR \FALSE
EQUAL? PRSO,BERZIO-POTION \FALSE
CALL POTION-POUR,BERZIO-VIAL
RSTACK
.FUNCT I-UNBERZIO
SET 'BERZIOED,FALSE-VALUE
RFALSE
.FUNCT MATCHBOOK-F
EQUAL? PRSA,V?CLOSE \?ELS5
PRINTR "Why bother?"
?ELS5: EQUAL? PRSA,V?COUNT,V?EXAMINE,V?OPEN /?THN10
EQUAL? PRSA,V?STRIKE \?ELS9
?THN10: PRINTR "The matches are all gone, but there is some printing on the inner cover."
?ELS9: EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI """Amazing Vilstu Potion!
Get by without breathing! Amaze your
friends! Be the first person on the
block to own some!
Order today by dropping this in any
mailbox. Our shipping department will
use the latest in temporal travel
techniques to insure that your potion
arrives the same day you order it!
(Orders received before noon will
arrive the day before you order)."""
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT CALENDAR-F
EQUAL? PRSA,V?LOOK-INSIDE,V?OPEN \FALSE
CALL PERFORM,V?READ,CALENDAR
RTRUE
.FUNCT COBWEB-PSEUDO
RFALSE
.FUNCT TRUNK-F
EQUAL? PRSA,V?TAKE \?ELS5
EQUAL? PRSO,TRUNK \?ELS5
PRINTR "It's too heavy to even budge."
?ELS5: FSET? TRUNK,OPENBIT /FALSE
EQUAL? PRSA,V?OPEN \?ELS16
PRINTR "The lid won't budge."
?ELS16: EQUAL? PRSA,V?UNLOCK \?ELS20
PRINTR "Perhaps the buttons..."
?ELS20: EQUAL? PRSA,V?REZROV \FALSE
PRINTR "The lid bulges outward for a moment."
.FUNCT BUTTON-F
EQUAL? PRSA,V?LOOK-UNDER \?ELS5
CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?PUSH \FALSE
PRINTI "There is a click from the lid of the trunk"
EQUAL? PRSO,BLACK-BUTTON \?ELS18
EQUAL? NEXT-NUMBER,1 /?THN15
?ELS18: EQUAL? PRSO,GRAY-BUTTON \?ELS20
EQUAL? NEXT-NUMBER,2 /?THN15
?ELS20: EQUAL? PRSO,RED-BUTTON \?ELS22
EQUAL? NEXT-NUMBER,3 /?THN15
?ELS22: EQUAL? PRSO,PURPLE-BUTTON \?ELS24
EQUAL? NEXT-NUMBER,4 /?THN15
?ELS24: EQUAL? PRSO,WHITE-BUTTON \?ELS14
EQUAL? NEXT-NUMBER,5 \?ELS14
?THN15: INC 'CURRENT-TLOC
GET NEXT-CODE-TABLE,CURRENT-TLOC >NEXT-NUMBER
ZERO? NEXT-NUMBER \?CND12
ZERO? TRUNK-SCREWED \?CND12
FSET TRUNK,OPENBIT
ADD SCORE,25 >SCORE
PRINTI ". A moment later, the lid of the trunk swings slowly open, revealing "
CALL PRINT-CONTENTS,TRUNK
JUMP ?CND12
?ELS14: SET 'TRUNK-SCREWED,TRUE-VALUE
?CND12: PRINTR "."
.ENDI

View file

@ -334,12 +334,13 @@ which reads \"Current code: " <GET ,CODE-TABLE ,CODE-NUMBER> "\"." CR>)
<TELL
"The journal seems to bear a spell protecting it against
the simple rezrov spell." CR>)
(<NOT ,PRSI>
<COND (<IN? ,KEY ,PROTAGONIST>
<SETG PRSI ,KEY>
<TELL "(with the key)" CR>)
(T
<SETG PRSI ,HANDS>)>
(ELSE
<COND (<NOT ,PRSI>
<COND (<IN? ,KEY ,PROTAGONIST>
<SETG PRSI ,KEY>
<TELL "(with the key)" CR>)
(T
<SETG PRSI ,HANDS>)>)>
<COND (<EQUAL? ,PRSI ,KEY>
<FSET ,JOURNAL ,OPENBIT>
<TELL "The journal springs open." CR>)

26
magic.cmp Normal file
View file

@ -0,0 +1,26 @@
;COMPARISON OF SS:<Z6>MAGIC.ZIL.417 AND SS:<Z6>MAGIC.ZIL.418
;OPTIONS ARE /3
**** FILE SS:<Z6>MAGIC.ZIL.417, 1-469 (12147)
<ROUTINE FORGET-SPELL ("AUX" SPL F TBL (NUM 0) (SP <>))
**** FILE SS:<Z6>MAGIC.ZIL.418, 1-469 (12147)
<ROUTINE FORGET-SPELL ("AUX" F TBL (NUM 0) (SP <>))
***************
**** FILE SS:<Z6>MAGIC.ZIL.417, 1-480 (12457)
<COND (<ZERO? .NUM> <RTRUE>)
(<EQUAL? .NUM 1>
<PUTP .SP ,P?COUNT <- .NUM 1>>
<RTRUE>)>
<PUT ,FORGET-TBL 0 .NUM>
<SET SPL <RANDOM-ELEMENT ,FORGET-TBL>>
<PUTP .SPL ,P?COUNT <- <GETP .SPL ,P?COUNT> 1>>>
**** FILE SS:<Z6>MAGIC.ZIL.418, 1-480 (12453)
<COND (<ZERO? .NUM> <RTRUE>)>
<COND (<G? .NUM 1>
<PUT ,FORGET-TBL 0 .NUM>
<SET SP <RANDOM-ELEMENT ,FORGET-TBL>>)>
<PUTP .SP ,P?COUNT <- <GETP .SP ,P?COUNT> 1>>>
***************

50
magic.txt Normal file
View file

@ -0,0 +1,50 @@
Spell Name Effect
---------- ------
AIMFIZ transport caster to someone else's location
BLORB safely protect a small object as though in a strong box
BLORPLE explore an object's mystic connections
CASKLY cause perfection
CLEESH change a creature into a small amphibian
ESPNIS sleep
EXEX make things move with greater speed
FILFRE create gratuitous fireworks
FROTZ cause something to give off light
FWEEP turn caster into a bat
GASPAR provide for your own resurrection
GIRGOL stop time
GNUSTO write a magic spell into a spell book
GOLMAC travel temporally
GONDAR quench an open flame
GUNCHO banish the victim to another plane of existence
IZYUK fly like a bird
JINDAK detect magic
KREBF repair willful damage
KULCAD dispel a magic spell
LESOCH gust of wind
LISKON shrink a living thing
MALYON bring life to inanimate objects
MEEF cause plants to wilt
MELBOR protect magic users from harm by evil beings
NITFOL converse with the beasts in their own tongue
OZMOO survive unnatural death
PULVER cause liquids to become dry
REZROV open even locked or enchanted objects
SNAVIG shape change
SWANZO exorcise an inhabiting presence
THROCK cause plants to grow
TINSOT freeze
VARDIK shield a mind from an evil spirit
VAXUM make a hostile creature your friend
VEZZA view the future
YOMIN mind probe
YONK augment the power of certain spells
ZIFMIA magically summon a being
Potion Name Effect
----------- ------
BERZIO obviate need for food or drink
BLORT ability to see in dark places
FLAXO exquisite torture
FOOBLE increase muscular coordination
VILSTU obviate need for breathing

624
maze.zap Normal file
View file

@ -0,0 +1,624 @@
.FUNCT MAZE-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,OUTSIDE-GLASS-DOOR \?ELS10
CALL DO-WALK,P?EAST
RSTACK
?ELS10: EQUAL? HERE,HOLLOW \?ELS12
CALL DO-WALK,P?WEST
RSTACK
?ELS12: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \?ELS16
EQUAL? HERE,GLASS-MAZE \?ELS21
CALL DO-WALK,P?OUT
RSTACK
?ELS21: CALL LOOK-AROUND-YOU
RSTACK
?ELS16: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS25
PRINTR "You see nothing but reflected light in all directions."
?ELS25: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "According to the article, Duncanthrax built the Glass Maze on a whim, to amuse his friends and torture his enemies. A labyrinth of 27 cubicles, it was full of devilish pitfalls and was located near his castle, Egreth."
.FUNCT HOVEL-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,END-OF-HIGHWAY \?ELS10
CALL DO-WALK,P?EAST
RSTACK
?ELS10: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \?ELS14
EQUAL? HERE,STONE-HUT \?ELS19
CALL DO-WALK,P?WEST
RSTACK
?ELS19: CALL LOOK-AROUND-YOU
RSTACK
?ELS14: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
EQUAL? HERE,STONE-HUT \?ELS28
CALL LOOK-AROUND-YOU
RSTACK
?ELS28: CALL MAKE-OUT
RSTACK
.FUNCT CHIMNEY-EXIT-F
ZERO? FWEEPED /?ELS5
PRINTI "Too narrow even for bats."
CRLF
RFALSE
?ELS5: PRINTI "Where did you get the bizarre notion that you might fit up a chimney?"
CRLF
RFALSE
.FUNCT FIREPLACE-F
EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
CALL V-DEFLATE
RSTACK
.FUNCT STATUE-F
EQUAL? PRSA,V?MALYON \?ELS5
PRINTI "The statue transforms into a living figure, probably a King if the royal attire is any clue. The King seems angry, and quickly settles his wrathful gaze on you. He bellows ""Guards! Throw this trespasser into the glass maze! Guards! ... GUARDS!!!"" When the guards fail to respond, the King becomes livid, his voice rises to an incoherent squeak, and flecks of foam spit from the corners of his mouth. Finally, eyes bulging with rage, he storms out of the room."
CRLF
FSET STATUE,TOUCHBIT
SET 'STATUE-FOLLOW,TRUE-VALUE
CALL QUEUE,I-STATUE-UNFOLLOW,1
PUT STACK,0,1
EQUAL? HERE,ENTRANCE-HALL,OUTSIDE-STORE \?ELS12
RANDOM 100
LESS? 50,STACK /?ELS17
MOVE STATUE,HIGHWAY
RTRUE
?ELS17: MOVE STATUE,BEND
RTRUE
?ELS12: RANDOM 100
LESS? 50,STACK /?ELS26
MOVE STATUE,ENTRANCE-HALL
RTRUE
?ELS26: MOVE STATUE,OUTSIDE-STORE
RTRUE
?ELS5: EQUAL? PRSA,V?FOLLOW \FALSE
ZERO? STATUE-FOLLOW /FALSE
PRINTR "The King moved too quickly to follow."
.FUNCT I-STATUE-UNFOLLOW
SET 'STATUE-FOLLOW,FALSE-VALUE
RFALSE
.FUNCT NO-FLOOR?
ZERO? MAZE-CROSSED /?ELS5
GET POST-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK /FALSE
?ELS5: ZERO? MAZE-CROSSED \TRUE
GET PRE-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \TRUE
RFALSE
.FUNCT GLASS-MAZE-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
CALL TABLE-TO-MAZE,ROOM-NUMBER
FCLEAR GLASS-MAZE,TOUCHBIT
PUT VEZZAS,5,0
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are inside a huge cubical maze, shimmering with light from an unseen source above."
ZERO? FWEEPED \?CND10
PRINTI " It is impossible to tell if the walls and ceilings around you are glass surfaces or openings."
?CND10: ZERO? FLYING \?CND15
CALL NO-FLOOR?
ZERO? STACK /?CND15
EQUAL? ROOM-NUMBER,13 \?CND15
PRINTI " "
CALL PLUMMET
RTRUE
?CND15: ZERO? FLYING \?CND22
CALL NO-FLOOR?
ZERO? STACK \?CND22
PRINTI " Since you are standing on something, the floor must be solid, but it is virtually invisible and you feel as though you were walking on air."
?CND22: ZERO? FWEEPED /?CND29
CALL RADAR-VIEW
?CND29: CRLF
RTRUE
.FUNCT RADAR-VIEW,X,COUNT,LUP,LDOWN,NORTH,SOUTH,EAST,WEST
SET 'X,FALSE-VALUE
SET 'LUP,FALSE-VALUE
SET 'LDOWN,FALSE-VALUE
SET 'NORTH,FALSE-VALUE
SET 'SOUTH,FALSE-VALUE
SET 'EAST,FALSE-VALUE
SET 'WEST,FALSE-VALUE
SET 'COUNT,0
PRINTI " Thanks to your sonar-like bat senses, you can tell that there are surfaces "
ZERO? MAZE-CROSSED /?ELS9
GET POST-UP-EXITS,ROOM-NUMBER
ZERO? STACK /?THN6
?ELS9: ZERO? MAZE-CROSSED \?CND3
GET PRE-UP-EXITS,ROOM-NUMBER
ZERO? STACK \?CND3
?THN6: SET 'LUP,TRUE-VALUE
INC 'COUNT
?CND3: ZERO? MAZE-CROSSED /?ELS18
GET POST-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK /?THN15
?ELS18: ZERO? MAZE-CROSSED \?CND12
GET PRE-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \?CND12
?THN15: SET 'LDOWN,TRUE-VALUE
INC 'COUNT
?CND12: ZERO? MAZE-CROSSED /?ELS27
GET POST-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK /?THN24
?ELS27: ZERO? MAZE-CROSSED \?CND21
GET PRE-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK \?CND21
?THN24: SET 'NORTH,TRUE-VALUE
INC 'COUNT
?CND21: ZERO? MAZE-CROSSED /?ELS36
GET POST-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK /?THN33
?ELS36: ZERO? MAZE-CROSSED \?CND30
GET PRE-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK \?CND30
?THN33: SET 'SOUTH,TRUE-VALUE
INC 'COUNT
?CND30: ZERO? MAZE-CROSSED /?ELS45
GET POST-EAST-EXITS,ROOM-NUMBER
ZERO? STACK /?THN42
?ELS45: ZERO? MAZE-CROSSED \?CND39
GET PRE-EAST-EXITS,ROOM-NUMBER
ZERO? STACK \?CND39
?THN42: SET 'EAST,TRUE-VALUE
INC 'COUNT
?CND39: ZERO? MAZE-CROSSED /?ELS54
GET POST-WEST-EXITS,ROOM-NUMBER
ZERO? STACK /?THN51
?ELS54: ZERO? MAZE-CROSSED \?CND48
GET PRE-WEST-EXITS,ROOM-NUMBER
ZERO? STACK \?CND48
?THN51: SET 'WEST,TRUE-VALUE
INC 'COUNT
?CND48: ZERO? LUP /?CND57
EQUAL? COUNT,1 \?ELS63
PRINTI " and "
JUMP ?CND61
?ELS63: ZERO? X /?CND61
PRINTI ", "
?CND61: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "above you"
?CND57: ZERO? LDOWN /?CND73
EQUAL? COUNT,1 \?ELS79
PRINTI " and "
JUMP ?CND77
?ELS79: ZERO? X /?CND77
PRINTI ", "
?CND77: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "below you"
?CND73: ZERO? NORTH /?CND89
EQUAL? COUNT,1 \?ELS95
PRINTI " and "
JUMP ?CND93
?ELS95: ZERO? X /?CND93
PRINTI ", "
?CND93: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the north"
?CND89: ZERO? SOUTH /?CND105
EQUAL? COUNT,1 \?ELS111
PRINTI " and "
JUMP ?CND109
?ELS111: ZERO? X /?CND109
PRINTI ", "
?CND109: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the south"
?CND105: ZERO? EAST /?CND121
EQUAL? COUNT,1 \?ELS127
PRINTI " and "
JUMP ?CND125
?ELS127: ZERO? X /?CND125
PRINTI ", "
?CND125: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the east"
?CND121: ZERO? WEST /?CND137
EQUAL? COUNT,1 \?ELS143
PRINTI " and "
JUMP ?CND141
?ELS143: ZERO? X /?CND141
PRINTI ", "
?CND141: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the west"
?CND137: PRINTI "."
RTRUE
.FUNCT MAZE-EXIT-F
ZERO? MAZE-CROSSED /?ELS5
CALL MAZE-TO-TABLE,ROOM-NUMBER
EQUAL? PRSO,P?UP \?ELS9
ZERO? FLYING \?ELS12
CALL CANT-JUMP
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS12: GET POST-UP-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS17
CALL HIT-WALL
RFALSE
?ELS17: GET POST-UP-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS9: EQUAL? PRSO,P?DOWN \?ELS21
ZERO? FLYING \?ELS24
CALL SOLID-FLOOR
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS24: GET POST-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS29
CALL HIT-WALL
RFALSE
?ELS29: GET POST-DOWN-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS21: EQUAL? PRSO,P?NORTH \?ELS33
GET POST-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS36
CALL HIT-WALL
RFALSE
?ELS36: GET POST-NORTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS33: EQUAL? PRSO,P?SOUTH \?ELS40
GET POST-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS43
CALL HIT-WALL
RFALSE
?ELS43: GET POST-SOUTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS40: EQUAL? PRSO,P?EAST \?ELS47
GET POST-EAST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS50
CALL HIT-WALL
RFALSE
?ELS50: GET POST-EAST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,30 \?CND7
SET 'ROOM-NUMBER,24
RETURN HOLLOW
?ELS47: EQUAL? PRSO,P?WEST \?CND7
GET POST-WEST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS60
CALL HIT-WALL
RFALSE
?ELS60: GET POST-WEST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,40 \?CND58
SET 'ROOM-NUMBER,13
RETURN OUTSIDE-GLASS-DOOR
?CND58:
?CND7: CALL TABLE-TO-MAZE,ROOM-NUMBER
CALL V-LOOK
CALL PLUMMET
RFALSE
?ELS5: CALL MAZE-TO-TABLE,ROOM-NUMBER
EQUAL? PRSO,P?UP \?ELS70
ZERO? FLYING \?ELS73
CALL CANT-JUMP
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS73: GET PRE-UP-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS78
CALL HIT-WALL
RFALSE
?ELS78: GET PRE-UP-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS70: EQUAL? PRSO,P?DOWN \?ELS82
ZERO? FLYING \?ELS85
CALL SOLID-FLOOR
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS85: GET PRE-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS90
CALL HIT-WALL
RFALSE
?ELS90: GET PRE-DOWN-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS82: EQUAL? PRSO,P?NORTH \?ELS94
GET PRE-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS97
CALL HIT-WALL
RFALSE
?ELS97: GET PRE-NORTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS94: EQUAL? PRSO,P?SOUTH \?ELS101
GET PRE-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS104
CALL HIT-WALL
RFALSE
?ELS104: GET PRE-SOUTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS101: EQUAL? PRSO,P?EAST \?ELS108
GET PRE-EAST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS111
CALL HIT-WALL
RFALSE
?ELS111: GET PRE-EAST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,30 \?CND68
ADD SCORE,HOLLOW-POINT >SCORE
SET 'HOLLOW-POINT,0
SET 'ROOM-NUMBER,24
RETURN HOLLOW
?ELS108: EQUAL? PRSO,P?WEST \?CND68
GET PRE-WEST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS121
CALL HIT-WALL
RFALSE
?ELS121: GET PRE-WEST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,40 \?CND119
SET 'ROOM-NUMBER,13
RETURN OUTSIDE-GLASS-DOOR
?CND119:
?CND68: CALL TABLE-TO-MAZE,ROOM-NUMBER
CALL V-LOOK
CALL PLUMMET
RFALSE
.FUNCT HIT-WALL
PRINTI "BONK! You "
ZERO? FLYING /?ELS5
PRINTI "fly"
JUMP ?CND3
?ELS5: PRINTI "walk"
?CND3: PRINTR " right into an almost invisible wall of glass -- a stunning blow!"
.FUNCT CANT-JUMP
PRINTR "You can't possibly jump that high."
.FUNCT SOLID-FLOOR
PRINTR "Fortunately, the floor is solid."
.FUNCT PLUMMET
ZERO? FLYING \FALSE
CALL NO-FLOOR?
ZERO? STACK /FALSE
CALL JIGS-UP,STR?290
RFALSE
.FUNCT MAZE-TO-TABLE,LOC,CNT=0,F,N
FIRST? GLASS-MAZE >F /?KLU23
?KLU23:
?PRG1: ZERO? F /TRUE
NEXT? F >N /?KLU24
?KLU24: EQUAL? F,WINNER \?ELS11
JUMP ?CND9
?ELS11: FSET? F,TAKEBIT /?THN14
EQUAL? F,DORN-BEAST-CORPSE \?CND9
?THN14:
?PRG16: GET MAZE-TABLE,CNT
ZERO? STACK \?ELS20
PUT MAZE-TABLE,CNT,LOC
ADD CNT,1
PUT MAZE-TABLE,STACK,F
ADD CNT,2 >CNT
MOVE F,DIAL
JUMP ?CND9
?ELS20: ADD CNT,2 >CNT
JUMP ?PRG16
?CND9: SET 'F,N
JUMP ?PRG1
.FUNCT TABLE-TO-MAZE,LOC,TABLE=MAZE-TABLE,CNT=0
?PRG1: LESS? CNT,MAZE-TABLE-LENGTH \TRUE
GET MAZE-TABLE,CNT
EQUAL? STACK,LOC \?CND3
PUT MAZE-TABLE,CNT,0
ADD CNT,1
GET MAZE-TABLE,STACK
MOVE STACK,GLASS-MAZE
?CND3: ADD CNT,2 >CNT
JUMP ?PRG1
.FUNCT DROP-IN-MAZE,CNT=0,NEW-ROOM=0
ZERO? MAZE-CROSSED /?ELS3
EQUAL? ROOM-NUMBER,12 \?ELS7
SET 'NEW-ROOM,3
JUMP ?CND1
?ELS7: EQUAL? ROOM-NUMBER,13 \?ELS9
SET 'NEW-ROOM,4
JUMP ?CND1
?ELS9: EQUAL? ROOM-NUMBER,16 \?ELS11
SET 'NEW-ROOM,7
JUMP ?CND1
?ELS11: EQUAL? ROOM-NUMBER,18 \?ELS13
SET 'NEW-ROOM,9
JUMP ?CND1
?ELS13: EQUAL? ROOM-NUMBER,19 \?ELS15
SET 'NEW-ROOM,10
JUMP ?CND1
?ELS15: EQUAL? ROOM-NUMBER,20 \?ELS17
SET 'NEW-ROOM,11
JUMP ?CND1
?ELS17: EQUAL? ROOM-NUMBER,25 \?ELS19
SET 'NEW-ROOM,7
JUMP ?CND1
?ELS19: EQUAL? ROOM-NUMBER,27 \?CND1
SET 'NEW-ROOM,9
JUMP ?CND1
?ELS3: EQUAL? ROOM-NUMBER,10 \?ELS26
SET 'NEW-ROOM,1
JUMP ?CND1
?ELS26: EQUAL? ROOM-NUMBER,12 \?ELS28
SET 'NEW-ROOM,3
JUMP ?CND1
?ELS28: EQUAL? ROOM-NUMBER,16 \?ELS30
SET 'NEW-ROOM,7
JUMP ?CND1
?ELS30: EQUAL? ROOM-NUMBER,20 \?ELS32
SET 'NEW-ROOM,11
JUMP ?CND1
?ELS32: EQUAL? ROOM-NUMBER,21 \?ELS34
SET 'NEW-ROOM,3
JUMP ?CND1
?ELS34: EQUAL? ROOM-NUMBER,26 \?CND1
SET 'NEW-ROOM,17
?CND1: ZERO? NEW-ROOM \?CND37
PRINTR "Bug #14"
?CND37:
?PRG42: GET MAZE-TABLE,CNT
ZERO? STACK \?ELS46
PUT MAZE-TABLE,CNT,NEW-ROOM
ADD CNT,1
PUT MAZE-TABLE,STACK,PRSO
ADD CNT,2 >CNT
RTRUE
?ELS46: ADD CNT,2 >CNT
JUMP ?PRG42
.FUNCT REARRANGE-MAZE-TABLE,CNT=0
?PRG1: LESS? CNT,MAZE-TABLE-LENGTH \TRUE
GET MAZE-TABLE,CNT
EQUAL? STACK,12 \?ELS7
PUT MAZE-TABLE,CNT,3
JUMP ?CND3
?ELS7: GET MAZE-TABLE,CNT
EQUAL? STACK,13 \?ELS9
PUT MAZE-TABLE,CNT,4
JUMP ?CND3
?ELS9: GET MAZE-TABLE,CNT
EQUAL? STACK,16 \?ELS11
PUT MAZE-TABLE,CNT,7
JUMP ?CND3
?ELS11: GET MAZE-TABLE,CNT
EQUAL? STACK,18 \?ELS13
PUT MAZE-TABLE,CNT,9
JUMP ?CND3
?ELS13: GET MAZE-TABLE,CNT
EQUAL? STACK,19 \?ELS15
PUT MAZE-TABLE,CNT,10
JUMP ?CND3
?ELS15: GET MAZE-TABLE,CNT
EQUAL? STACK,20 \?ELS17
PUT MAZE-TABLE,CNT,11
JUMP ?CND3
?ELS17: GET MAZE-TABLE,CNT
EQUAL? STACK,25 \?ELS19
PUT MAZE-TABLE,CNT,7
JUMP ?CND3
?ELS19: GET MAZE-TABLE,CNT
EQUAL? STACK,27 \?CND3
PUT MAZE-TABLE,CNT,9
?CND3: ADD CNT,2 >CNT
JUMP ?PRG1
.FUNCT HOLLOW-F,RARG
EQUAL? RARG,M-END \FALSE
CALL HELD?,SPELL-BOOK
ZERO? STACK /FALSE
MOVE SPELL-BOOK,DIAL
PRINTR """Caw! Caw!"" A giant bird of prey with a fondness for gnusto-receptive paper swoops down and flies off with your spell book."
.FUNCT CHIMNEY-F
EQUAL? HERE,HOLLOW \FALSE
EQUAL? PRSO,CHIMNEY \?ELS10
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,BRICK-STRUCTURE,PRSI
RTRUE
?ELS10: SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,BRICK-STRUCTURE
RTRUE
.FUNCT BRICK-STRUCTURE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The structure is about two feet on each side, and extends up from the ground about three feet. Except for a large quantity of soot around the opening, it looks a lot like a small, rectangular well."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS9
PRINTR "The opening is dark and you can only see a few feet into it."
?ELS9: EQUAL? PRSA,V?CLIMB-DOWN,V?ENTER \?ELS13
CALL DO-WALK,P?DOWN
RSTACK
?ELS13: EQUAL? PRSA,V?PUT \?ELS15
EQUAL? PRSI,BRICK-STRUCTURE \?ELS15
MOVE PRSO,FIREPLACE
EQUAL? PRSO,SWANZO-SCROLL \?CND18
CALL QUEUE,I-DORN-BEAST,2
PUT STACK,0,1
?CND18: PRINTI "The "
PRINTD PRSO
PRINTR " disappears into the shaft."
?ELS15: EQUAL? PRSA,V?REACH-IN \?ELS24
PRINTR "The shaft extends beyond your reach."
?ELS24: EQUAL? PRSA,V?THROUGH \FALSE
CALL DO-WALK,P?DOWN
RSTACK
.FUNCT DORN-BEAST-F
EQUAL? PRSA,V?RESEARCH \FALSE
CALL PERFORM,V?RESEARCH,LOBBY
RTRUE
.FUNCT CORPSE-F
EQUAL? PRSA,V?MALYON \FALSE
CALL JIGS-UP,STR?296
RSTACK
.FUNCT I-DORN-BEAST
CALL QUEUE,I-DORN-BEAST,-1
PUT STACK,0,1
EQUAL? HERE,HOLLOW \?ELS5
ZERO? DORN-BEAST-WARNING /?ELS10
CALL DORN-DEATH
RSTACK
?ELS10: MOVE DORN-BEAST,HERE
SET 'DORN-BEAST-WARNING,TRUE-VALUE
CRLF
PRINTR "With a loud roar, a dreadfully huge dorn beast emerges from the shadows at the base of the cliff and gallops toward you."
?ELS5: FSET DORN-BEAST,NDESCBIT
ZERO? DORN-BEAST-WARNING \?ELS22
SET 'DORN-BEAST-WARNING,TRUE-VALUE
CRLF
PRINTR "From outside the maze, you hear the bellowing of a ferocious dorn beast!"
?ELS22: EQUAL? ROOM-NUMBER,DORN-BEAST-ROOM,LAST-DORN-ROOM \?ELS26
CRLF
CALL DORN-DEATH
RSTACK
?ELS26: CRLF
PRINTI "The dorn beast rushes after you. Its ear-splitting bellowing resounds throughout the glass maze."
EQUAL? ROOM-NUMBER,27 \?ELS33
SET 'SPLATTERED,TRUE-VALUE
CALL INT,I-DORN-BEAST
PUT STACK,0,0
MOVE DORN-BEAST,DIAL
PUT MAZE-TABLE,38,9
PUT MAZE-TABLE,39,DORN-BEAST-CORPSE
PRINTI " Suddenly, the dorn-beast realizes that it is galloping through midair, and gives a surprisingly high-pitched squeal. It claws frantically at thin air, trying desperately to invent dorn beast flight. You happily notice that dorn beasts do not so much fly as plummet."
JUMP ?CND31
?ELS33: SET 'LAST-DORN-ROOM,DORN-BEAST-ROOM
SET 'DORN-BEAST-ROOM,ROOM-NUMBER
MOVE DORN-BEAST,HERE
?CND31: CRLF
RTRUE
.FUNCT DORN-DEATH
CALL JIGS-UP,STR?297
RSTACK
.ENDI

412
misc.zap Normal file
View file

@ -0,0 +1,412 @@
.FUNCT PICK-ONE,FROB
GET FROB,0
RANDOM STACK
GET FROB,STACK
RSTACK
.FUNCT FIXED-FONT-ON
GET 0,8
BOR STACK,2
PUT 0,8,STACK
RTRUE
.FUNCT FIXED-FONT-OFF
GET 0,8
BAND STACK,-3
PUT 0,8,STACK
RTRUE
.FUNCT GO
START::
?FCN: PUTB P-LEXV,0,59
CALL QUEUE,I-WAKE-UP,7
PUT STACK,0,1
CALL QUEUE,I-HELLHOUND,-1
PUT STACK,0,1
SET 'LIT,TRUE-VALUE
SET 'WINNER,PROTAGONIST
SET 'PLAYER,WINNER
SET 'HERE,TWISTED-FOREST
MOVE WINNER,HERE
CALL THIS-IS-IT,HELLHOUND
PUTB P-INBUF,0,60
PRINTI "You are in a strange location, but you cannot remember how you got here. Everything is hazy, as though viewed through a gauze..."
CRLF
CRLF
CALL V-LOOK
CALL I-HELLHOUND
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT MAIN-LOOP,TRASH
?PRG1: CALL MAIN-LOOP-1 >TRASH
JUMP ?PRG1
.FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1
SET 'LAST-USED-PRSO,FALSE-VALUE
SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
CALL PARSER >P-WON
ZERO? P-WON /?ELS3
GET P-PRSI,P-MATCHLEN >ICNT
GET P-PRSO,P-MATCHLEN >OCNT
ZERO? P-IT-OBJECT /?CND4
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK /?CND4
SET 'TMP,FALSE-VALUE
?PRG9: IGRTR? 'CNT,ICNT \?ELS13
JUMP ?REP10
?ELS13: GET P-PRSI,CNT
EQUAL? STACK,IT \?PRG9
PUT P-PRSI,CNT,P-IT-OBJECT
SET 'TMP,TRUE-VALUE
?REP10: ZERO? TMP \?CND19
SET 'CNT,0
?PRG22: IGRTR? 'CNT,OCNT \?ELS26
JUMP ?CND19
?ELS26: GET P-PRSO,CNT
EQUAL? STACK,IT \?PRG22
PUT P-PRSO,CNT,P-IT-OBJECT
?CND19: SET 'CNT,0
?CND4: ZERO? OCNT \?ELS36
PUSH OCNT
JUMP ?CND32
?ELS36: GRTR? OCNT,1 \?ELS38
SET 'TBL,P-PRSO
ZERO? ICNT \?ELS41
SET 'OBJ,FALSE-VALUE
JUMP ?CND39
?ELS41: GET P-PRSI,1 >OBJ
?CND39: PUSH OCNT
JUMP ?CND32
?ELS38: GRTR? ICNT,1 \?ELS45
SET 'PTBL,FALSE-VALUE
SET 'TBL,P-PRSI
GET P-PRSO,1 >OBJ
PUSH ICNT
JUMP ?CND32
?ELS45: PUSH 1
?CND32: SET 'NUM,STACK
ZERO? OBJ \?CND48
EQUAL? ICNT,1 \?CND48
GET P-PRSI,1 >OBJ
?CND48: EQUAL? PRSA,V?WALK \?ELS55
CALL PERFORM,PRSA,PRSO >V
JUMP ?CND53
?ELS55: ZERO? NUM \?ELS57
GETB P-SYNTAX,P-SBITS
BAND STACK,P-SONUMS
ZERO? STACK \?ELS60
CALL PERFORM,PRSA >V
SET 'PRSO,FALSE-VALUE
JUMP ?CND53
?ELS60: ZERO? LIT \?ELS62
ZERO? BLORTED \?ELS62
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-CONT,FALSE-VALUE
CALL TOO-DARK
JUMP ?CND53
?ELS62: EQUAL? HERE,CHAMBER-OF-LIVING-DEATH,HALL-OF-ETERNAL-PAIN \?ELS66
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-CONT,FALSE-VALUE
CALL AGONY
JUMP ?CND53
?ELS66: PRINTI "There isn't anything to "
GET P-ITBL,P-VERBN >TMP
EQUAL? PRSA,V?TELL \?ELS73
PRINTI "talk to"
JUMP ?CND71
?ELS73: ZERO? P-OFLAG \?THN78
ZERO? P-MERGED /?ELS77
?THN78: GET TMP,0
PRINTB STACK
JUMP ?CND71
?ELS77: GETB TMP,2 >?TMP1
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
?CND71: PRINTI "!"
CRLF
SET 'V,FALSE-VALUE
JUMP ?CND53
?ELS57: SET 'P-NOT-HERE,0
SET 'P-MULT,FALSE-VALUE
GRTR? NUM,1 \?CND86
SET 'P-MULT,TRUE-VALUE
?CND86: SET 'TMP,FALSE-VALUE
?PRG89: IGRTR? 'CNT,NUM \?ELS93
GRTR? P-NOT-HERE,0 \?ELS96
PRINTI "The "
EQUAL? P-NOT-HERE,NUM /?CND99
PRINTI "other "
?CND99: PRINTI "object"
EQUAL? P-NOT-HERE,1 /?CND106
PRINTI "s"
?CND106: PRINTI " that you mentioned "
EQUAL? P-NOT-HERE,1 /?ELS115
PRINTI "are"
JUMP ?CND113
?ELS115: PRINTI "is"
?CND113: PRINTI "n't here."
CRLF
JUMP ?REP90
?ELS96: ZERO? TMP \?REP90
CALL REFERRING
JUMP ?REP90
?ELS93: ZERO? PTBL /?ELS130
GET P-PRSO,CNT >OBJ1
JUMP ?CND128
?ELS130: GET P-PRSI,CNT >OBJ1
?CND128: ZERO? PTBL /?ELS138
PUSH OBJ1
JUMP ?CND134
?ELS138: PUSH OBJ
?CND134: SET 'PRSO,STACK
ZERO? PTBL /?ELS146
PUSH OBJ
JUMP ?CND142
?ELS146: PUSH OBJ1
?CND142: SET 'PRSI,STACK
GRTR? NUM,1 /?THN153
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?CND150
?THN153: EQUAL? OBJ1,NOT-HERE-OBJECT \?ELS157
INC 'P-NOT-HERE
JUMP ?PRG89
?ELS157: EQUAL? P-GETFLAGS,P-ALL \?ELS159
EQUAL? PRSA,V?TAKE \?ELS159
LOC OBJ1
EQUAL? STACK,WINNER,HERE,OBJ /?ELS165
LOC OBJ1
FSET? STACK,SURFACEBIT /?ELS165
LOC OBJ1
EQUAL? STACK,FIREPLACE \?PRG89
?ELS165: FSET? OBJ1,TAKEBIT /?ELS159
FSET? OBJ1,TRYTAKEBIT /?ELS159
JUMP ?PRG89
?ELS159: EQUAL? PRSA,V?TAKE \?ELS169
ZERO? PRSI /?ELS169
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?ELS169
IN? PRSO,PRSI /?ELS169
CALL DESK-KLUDGE
ZERO? STACK /?ELS169
JUMP ?PRG89
?ELS169: EQUAL? P-GETFLAGS,P-ALL \?ELS173
EQUAL? PRSA,V?DROP \?ELS173
IN? OBJ1,WINNER /?ELS173
IN? P-IT-OBJECT,WINNER /?ELS173
JUMP ?PRG89
?ELS173: CALL VISIBLE?,OBJ1
ZERO? STACK \?ELS177
JUMP ?PRG89
?ELS177: EQUAL? OBJ1,IT \?ELS182
PRINTD P-IT-OBJECT
JUMP ?CND180
?ELS182: PRINTD OBJ1
?CND180: PRINTI ": "
?CND150: SET 'TMP,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,PRSI >V
SET 'LAST-USED-PRSO,PRSO
EQUAL? V,M-FATAL \?PRG89
JUMP ?CND53
?REP90:
?CND53: EQUAL? V,M-FATAL /?CND190
EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?TELL /?CND193
EQUAL? PRSA,V?VERSION,V?SAVE,V?VERBOSE /?CND193
EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT,V?RESTORE \?ELS195
JUMP ?CND190
?ELS195: LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-END >V
?CND193:
?CND190: EQUAL? V,M-FATAL \?CND1
SET 'P-CONT,FALSE-VALUE
JUMP ?CND1
?ELS3: SET 'P-CONT,FALSE-VALUE
?CND1: ZERO? P-WON /FALSE
EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?TELL /TRUE
EQUAL? PRSA,V?VERSION,V?SAVE,V?VERBOSE /TRUE
EQUAL? PRSA,V?RESTART,V?QUIT,V?TIME /TRUE
EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT,V?SCORE /TRUE
EQUAL? PRSA,V?$COMMAND,V?$RANDOM,V?RESTORE /TRUE
EQUAL? PRSA,V?$UNRECORD,V?$RECORD /TRUE
CALL CLOCKER >V
RETURN V
.FUNCT DESK-KLUDGE
EQUAL? PRSI,BELBOZ-DESK \TRUE
IN? PRSO,DESK-DRAWER \TRUE
RFALSE
.FUNCT FAKE-ORPHAN,TMP,?TMP1
CALL ORPHAN,P-SYNTAX,FALSE-VALUE
PRINTI "Be specific: what object do you want to "
GET P-OTBL,P-VERBN >TMP
ZERO? TMP \?ELS5
PRINTI "tell"
JUMP ?CND3
?ELS5: GETB P-VTBL,2
ZERO? STACK \?ELS9
GET TMP,0
PRINTB STACK
JUMP ?CND3
?ELS9: GETB TMP,2 >?TMP1
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
PUTB P-VTBL,2,0
?CND3: SET 'P-OFLAG,TRUE-VALUE
SET 'P-WON,FALSE-VALUE
GETB P-SYNTAX,P-SPREP1
CALL PREP-PRINT,STACK
PRINTR "?"
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI
SET 'OA,PRSA
SET 'OO,PRSO
SET 'OI,PRSI
SET 'PRSA,A
EQUAL? IT,I,O \?CND1
ZERO? I \?ELS6
CALL FAKE-ORPHAN
RETURN 2
?ELS6: CALL REFERRING
RETURN 2
?CND1: SET 'PRSO,O
ZERO? PRSO /?CND11
EQUAL? PRSA,V?WALK /?CND11
EQUAL? PRSO,NOT-HERE-OBJECT /?CND11
CALL THIS-IS-IT,PRSO
?CND11: SET 'PRSI,I
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?ELS18
CALL D-APPLY,STR?1,NOT-HERE-OBJECT-F >V
ZERO? V /?ELS18
SET 'P-WON,FALSE-VALUE
JUMP ?CND16
?ELS18: SET 'O,PRSO
SET 'I,PRSI
GETP WINNER,P?ACTION
CALL D-APPLY,STR?2,STACK >V
ZERO? V /?ELS25
JUMP ?CND16
?ELS25: LOC WINNER
GETP STACK,P?ACTION
CALL D-APPLY,STR?3,STACK,M-BEG >V
ZERO? V /?ELS27
JUMP ?CND16
?ELS27: GET PREACTIONS,A
CALL D-APPLY,STR?4,STACK >V
ZERO? V /?ELS29
JUMP ?CND16
?ELS29: ZERO? I /?ELS31
GETP I,P?ACTION
CALL D-APPLY,STR?5,STACK >V
ZERO? V /?ELS31
JUMP ?CND16
?ELS31: ZERO? O /?ELS35
EQUAL? A,V?WALK /?ELS35
LOC O
ZERO? STACK /?ELS35
LOC O
GETP STACK,P?CONTFCN
ZERO? STACK /?ELS35
LOC O
GETP STACK,P?CONTFCN
CALL D-APPLY,STR?6,STACK >V
ZERO? V /?ELS35
JUMP ?CND16
?ELS35: ZERO? O /?ELS39
EQUAL? A,V?WALK /?ELS39
GETP O,P?ACTION
CALL D-APPLY,STR?7,STACK >V
ZERO? V /?ELS39
JUMP ?CND16
?ELS39: GET ACTIONS,A
CALL D-APPLY,FALSE-VALUE,STACK >V
ZERO? V /?CND16
?CND16: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.FUNCT D-APPLY,STR,FCN,FOO=0,RES
ZERO? FCN /FALSE
ZERO? FOO /?ELS12
CALL FCN,FOO
JUMP ?CND8
?ELS12: CALL FCN
?CND8: SET 'RES,STACK
RETURN RES
.FUNCT QUEUE,RTN,TICK,CINT
CALL INT,RTN >CINT
PUT CINT,C-TICK,TICK
RETURN CINT
.FUNCT INT,RTN,DEMON=0,E,C,INT
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E \?ELS5
SUB C-INTS,C-INTLEN >C-INTS
ZERO? DEMON /?ELS7
SUB C-DEMONS,C-INTLEN >C-DEMONS
?ELS7: ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?ELS5: GET C,C-RTN
EQUAL? STACK,RTN \?CND3
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT CLOCKER,C,E,TICK,FLG=0
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: ZERO? P-WON /?ELS9
PUSH C-INTS
JUMP ?CND5
?ELS9: PUSH C-DEMONS
?CND5: ADD C-TABLE,STACK >C
ADD C-TABLE,C-TABLELEN >E
?PRG13: EQUAL? C,E \?ELS17
INC 'MOVES
RETURN FLG
?ELS17: GET C,C-ENABLED?
ZERO? STACK /?CND15
GET C,C-TICK >TICK
ZERO? TICK \?ELS22
JUMP ?CND15
?ELS22: SUB TICK,1
PUT C,C-TICK,STACK
GRTR? TICK,1 /?CND20
GET C,C-RTN
CALL STACK
ZERO? STACK /?CND20
SET 'FLG,TRUE-VALUE
?CND20:
?CND15: ADD C,C-INTLEN >C
JUMP ?PRG13
.FUNCT NULL-F
RFALSE
.ENDI

View file

@ -206,8 +206,11 @@ Everything is hazy, as though viewed through a gauze...">
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
<REPEAT ()
<ROUTINE MAIN-LOOP ("AUX" TRASH)
<REPEAT ()
<SET TRASH <MAIN-LOOP-1>>>>
<ROUTINE MAIN-LOOP-1 ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
<SETG LAST-USED-PRSO <>>
<SET CNT 0>
<SET OBJ <>>
@ -330,7 +333,8 @@ Everything is hazy, as though viewed through a gauze...">
<OR
<AND <NOT <EQUAL? <LOC .OBJ1>
,WINNER
,HERE>>
,HERE
.OBJ>>
<NOT <FSET? <LOC .OBJ1>
,SURFACEBIT>>
<NOT <EQUAL? <LOC .OBJ1>
@ -374,7 +378,7 @@ Everything is hazy, as though viewed through a gauze...">
(T
<SET V
<APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>)>
<COND (<VERB? AGAIN SAVE RESTORE SCORE VERSION>
;<COND (<VERB? AGAIN SAVE RESTORE SCORE VERSION>
T)
(T
<SETG L-PRSA ,PRSA>
@ -393,7 +397,7 @@ Everything is hazy, as though viewed through a gauze...">
$RANDOM $COMMAND $RECORD $UNRECORD>
T)
(T
<SET V <CLOCKER>>)>)>>>
<SET V <CLOCKER>>)>)>>
<ROUTINE DESK-KLUDGE ()
<COND (<AND <EQUAL? ,PRSI ,BELBOZ-DESK>
@ -402,11 +406,9 @@ Everything is hazy, as though viewed through a gauze...">
(T
<RTRUE>)>>
<GLOBAL L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
;<GLOBAL L-PRSA <>>
;<GLOBAL L-PRSO <>>
;<GLOBAL L-PRSI <>>
<GLOBAL P-MULT <>>
@ -573,3 +575,5 @@ Everything is hazy, as though viewed through a gauze...">
<APPLY <GET .C ,C-RTN>>>
<SET FLG T>)>)>)>
<SET C <REST .C ,C-INTLEN>>>>
<ROUTINE NULL-F () <RFALSE>>

524
park.zap Normal file
View file

@ -0,0 +1,524 @@
.FUNCT BOZBARLAND-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,PARK-ENTRANCE \?ELS10
CALL DO-WALK,P?WEST
RSTACK
?ELS10: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?DROP,V?EXIT \?ELS14
EQUAL? HERE,EAST-END-OF-MIDWAY \?ELS19
CALL DO-WALK,P?EAST
RSTACK
?ELS19: EQUAL? HERE,PARK-ENTRANCE \?ELS21
CALL LOOK-AROUND-YOU
RSTACK
?ELS21: CALL CANT-ENTER,BOZBARLAND,TRUE-VALUE
RSTACK
?ELS14: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "Bozbarland was a magical futuristic fantasy amusement park, oft referred to as the entertainment capital of the Great Underground Empire. The lower classes usually called it simply Zorky Park."
.FUNCT PARK-SIGN-PSEUDO
EQUAL? PRSA,V?READ \FALSE
CALL FIXED-FONT-ON
PRINTI "
$$$$$ WELCOME TO BOZBARLAND $$$$$
The Entertainment Capital
of the Empire"
CRLF
CALL FIXED-FONT-OFF
RSTACK
.FUNCT AMUSEMENT-PARK-ENTER-F
ZERO? PARK-FEE-PAID /?ELS5
RETURN EAST-END-OF-MIDWAY
?ELS5: IN? PARK-GNOME,HERE \?ELS8
PRINTI "As you bounce off the barrier, the gnome admonishes, ""Tsk, tsk ... you can't enter without paying your zorkmid!"""
CRLF
RFALSE
?ELS8: MOVE PARK-GNOME,HERE
CALL QUEUE,I-PARK-GNOME,6
PUT STACK,0,1
PRINTI "You bounce off an invisible barrier. A moment later a gnome appears, dressed in a gaudy plaid outfit. ""Admission to the park is only one zorkmid. What a bargain, chum, eh?"""
CRLF
RFALSE
.FUNCT I-PARK-GNOME
MOVE PARK-GNOME,DIAL
EQUAL? HERE,PARK-ENTRANCE \FALSE
CRLF
PRINTR """Well, I can't wait all day, buddy,"" growls the gnome before vanishing."
.FUNCT PARK-GNOME-F
EQUAL? PRSA,V?TELL \?ELS5
PRINTI """Listen, fella, I was in the middle of something important and I don't have time to gab. Gonna pay the admission fee, or not?"""
CRLF
CALL STOP
RSTACK
?ELS5: EQUAL? PRSA,V?YOMIN \?ELS9
PRINTR "The gnome is thinking about the poker game you interrupted."
?ELS9: EQUAL? PRSA,V?GIVE \FALSE
EQUAL? PRSI,PARK-GNOME \FALSE
EQUAL? PRSO,ZORKMID \FALSE
FSET? ZORKMID,ONBIT \?CND16
CALL GNOME-REFUSES
RTRUE
?CND16: MOVE ZORKMID,DIAL
MOVE PARK-GNOME,DIAL
SET 'PARK-FEE-PAID,TRUE-VALUE
CALL INT,I-PARK-GNOME
PUT STACK,0,0
PRINTR """Okay, you can go through now, bub. Enjoy your trip to Bozbarland."" The gnome vanishes as suddenly as he appeared."
.FUNCT MIDWAY-PSEUDO
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,FLUME,ARCADE \?ELS10
CALL DO-WALK,P?NORTH
RSTACK
?ELS10: EQUAL? HERE,ROLLER-COASTER,HAUNTED-HOUSE \?ELS12
CALL DO-WALK,P?SOUTH
RSTACK
?ELS12: EQUAL? HERE,CASINO \?ELS14
CALL DO-WALK,P?EAST
RSTACK
?ELS14: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \FALSE
CALL V-WALK-AROUND
RSTACK
.FUNCT EAST-END-OF-MIDWAY-F,RARG
EQUAL? RARG,M-ENTER \FALSE
PUT VEZZAS,4,0
RFALSE
.FUNCT HAUNTED-HOUSE-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
ZERO? LIT /?ELS8
PRINTI "Something about this place seems to soak up all light, so that it"
JUMP ?CND6
?ELS8: ZERO? BLORTED /?ELS13
PRINTI "Despite the effects of the blort potion, this place "
JUMP ?CND6
?ELS13: PRINTI "It"
?CND6: PRINTR " is quite dark. You can see vague shapes swaying about in the darkness."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL QUEUE,I-HAUNT,1
PUT STACK,0,1
RFALSE
.FUNCT I-HAUNT
CALL QUEUE,I-HAUNT,-1
PUT STACK,0,1
EQUAL? HERE,HAUNTED-HOUSE /?ELS5
CALL INT,I-HAUNT
PUT STACK,0,0
RFALSE
?ELS5: RANDOM 100
LESS? 65,STACK /FALSE
CRLF
CALL PICK-ONE,HAUNT-TABLE
PRINT STACK
CRLF
RTRUE
.FUNCT START-RIDE,LOC,X,N
SET 'RIDE-IN-PROGRESS,TRUE-VALUE
FIRST? LOC >X /?KLU11
?KLU11:
?PRG1: NEXT? X >N /?KLU12
?KLU12: EQUAL? X,PROTAGONIST,CAR,LOG-BOAT /?CND3
FSET X,INVISIBLE
?CND3: ZERO? N /TRUE
SET 'X,N
JUMP ?PRG1
.FUNCT END-RIDE,X,N
SET 'RIDE-IN-PROGRESS,FALSE-VALUE
SET 'RIDE-COUNTER,0
CALL INT,I-FLUME-TRIP
PUT STACK,0,0
CALL INT,I-ROLLER-COASTER-TRIP
PUT STACK,0,0
FIRST? FLUME >X /?KLU15
?KLU15:
?PRG1: NEXT? X >N /?KLU16
?KLU16: FCLEAR X,INVISIBLE
ZERO? N \?ELS5
JUMP ?REP2
?ELS5: SET 'X,N
JUMP ?PRG1
?REP2: FIRST? ROLLER-COASTER >X /?KLU17
?KLU17:
?PRG8: NEXT? X >N /?KLU18
?KLU18: FCLEAR X,INVISIBLE
ZERO? N /TRUE
SET 'X,N
JUMP ?PRG8
.FUNCT SITS-AT-PLATFORM,VEHICLE
PRINTI " A "
PRINTD VEHICLE
PRINTI " sits at the platform, beckoning you to enter."
RTRUE
.FUNCT PARK-NYMPH,VEHICLE
PRINTI "An amusement park nymph appears for a moment, warning you not to leave the "
PRINTD VEHICLE
PRINTR " during the course of the ride."
.FUNCT PLAQUE
PRINTI " A small plaque hangs nearby. The midway is visible to the "
RTRUE
.FUNCT PLAQUE-PSEUDO
EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
PRINTI """Constructed by the Frobozz Magic "
EQUAL? HERE,FLUME \?ELS10
PRINTI "Flume"
JUMP ?CND8
?ELS10: PRINTI "Roller Coaster"
?CND8: PRINTR " Company."""
.FUNCT FLUME-F,RARG
EQUAL? RARG,M-LOOK \FALSE
ZERO? RIDE-IN-PROGRESS \TRUE
PRINTI "You are at the boarding platform of a fast-moving flume, flowing off beyond your view."
CALL PLAQUE
PRINTI "north."
IN? PROTAGONIST,LOG-BOAT /?CND18
CALL SITS-AT-PLATFORM,LOG-BOAT
?CND18: CRLF
RTRUE
.FUNCT FLUME-OBJECT-F
EQUAL? PRSA,V?PULVER \?ELS5
PRINTR "In order to prevent damage to public life and property, flumes are protected against this sort of prank."
?ELS5: EQUAL? PRSA,V?BOARD \?ELS9
CALL PERFORM,V?BOARD,LOG-BOAT
RTRUE
?ELS9: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "Flumes are artifical water channels, usually with boat rides. The boat is typically a hollowed-out log. The largest flume of this kind is in Bozbarland."
.FUNCT LOG-BOAT-F,RARG=0
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?WALK \?ELS5
CALL NOT-GOING-ANYWHERE,LOG-BOAT
RSTACK
?ELS5: ZERO? RARG \FALSE
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS12
PRINTR "Huh?"
?ELS12: EQUAL? PRSA,V?CLIMB-ON,V?ENTER,V?THROUGH \?ELS16
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS16: EQUAL? PRSA,V?STAND,V?DISEMBARK,V?DROP /?THN21
EQUAL? PRSA,V?EXIT \?ELS18
?THN21: ZERO? RIDE-IN-PROGRESS /?ELS18
CALL END-RIDE
CALL JIGS-UP,STR?266
RSTACK
?ELS18: EQUAL? PRSA,V?BOARD \FALSE
ZERO? RIDE-IN-PROGRESS \FALSE
CALL START-RIDE,FLUME
MOVE PROTAGONIST,LOG-BOAT
CALL QUEUE,I-FLUME-TRIP,2
PUT STACK,0,1
PRINTI "As you enter the log boat, it lurches away from the platform and is carried swiftly away by the current of the flume. "
CALL PARK-NYMPH,LOG-BOAT
RSTACK
.FUNCT I-FLUME-TRIP
CALL QUEUE,I-FLUME-TRIP,-1
PUT STACK,0,1
INC 'RIDE-COUNTER
ZERO? RIDE-IN-PROGRESS \?CND1
CALL INT,I-FLUME-TRIP
PUT STACK,0,0
SET 'RIDE-COUNTER,0
RFALSE
?CND1: CRLF
EQUAL? RIDE-COUNTER,1 \?ELS8
PRINTR "The flume is wide here, and straight as an arrow. The ride is quite relaxing."
?ELS8: EQUAL? RIDE-COUNTER,2 \?ELS12
PRINTR "You enter a stretch of sharp, winding curves! Spray dashes your face as you are tossed about the log boat!"
?ELS12: EQUAL? RIDE-COUNTER,3 \?ELS16
PRINTR "The twists and turns are left behind as you approach the mouth of a dark tunnel."
?ELS16: EQUAL? RIDE-COUNTER,4 \?ELS20
ZERO? LIT \?THN26
ZERO? BLORTED /?ELS25
?THN26: PRINTR "The flume winds through a tunnel whose walls are black as coal. You pass an opening which provides a brief glimpse of troglodytes digging and hauling coal."
?ELS25: PRINTR "It is pitch black. The roar of the flume's current echoes about the tunnel. A spot of light is visible ahead."
?ELS20: EQUAL? RIDE-COUNTER,5 \?ELS35
PRINTR "The log boat leaves the tunnel and passes through a series of rapids, shooting straight toward jagged rocks and then veering away at the last moment!"
?ELS35: EQUAL? RIDE-COUNTER,6 \?ELS39
PRINTR "Magically, the flume flows uphill here! The current slows as the boat climbs and climbs..."
?ELS39: EQUAL? RIDE-COUNTER,7 \?ELS43
PRINTR "You reach the crest of the flume's final drop. You can see swirling white water below!"
?ELS43: EQUAL? RIDE-COUNTER,8 \?ELS47
PRINTR "The log boat plunges down into the swirling waters at the base of the slope! Huge splashes of water spray off in every direction, but amazingly you stay dry!"
?ELS47: EQUAL? RIDE-COUNTER,9 \FALSE
CALL END-RIDE
CALL INT,I-FLUME-TRIP
PUT STACK,0,0
PRINTR "The boat floats serenely around a final turn and pulls up to the boarding platform."
.FUNCT ROLLER-COASTER-F,RARG
EQUAL? RARG,M-LOOK \FALSE
ZERO? RIDE-IN-PROGRESS \TRUE
PRINTI "You are at the boarding platform of a huge roller coaster, sprawling above and around you in every direction."
CALL PLAQUE
PRINTI "south."
IN? PROTAGONIST,CAR /?CND18
CALL SITS-AT-PLATFORM,CAR
?CND18: CRLF
RTRUE
.FUNCT CAR-F,RARG=0
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?WALK \?ELS5
CALL NOT-GOING-ANYWHERE,CAR
RSTACK
?ELS5: ZERO? RARG \FALSE
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS12
PRINTR "Huh?"
?ELS12: EQUAL? PRSA,V?CLIMB-ON,V?ENTER,V?THROUGH \?ELS16
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS16: EQUAL? PRSA,V?STAND,V?DISEMBARK,V?DROP /?THN21
EQUAL? PRSA,V?EXIT \?ELS18
?THN21: ZERO? RIDE-IN-PROGRESS /?ELS18
CALL END-RIDE
CALL JIGS-UP,STR?267
RSTACK
?ELS18: EQUAL? PRSA,V?EXIT,V?DROP \?ELS24
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?ELS24: EQUAL? PRSA,V?BOARD \FALSE
ZERO? RIDE-IN-PROGRESS \FALSE
CALL START-RIDE,ROLLER-COASTER
MOVE PROTAGONIST,CAR
CALL QUEUE,I-ROLLER-COASTER-TRIP,2
PUT STACK,0,1
PRINTI "As you enter the car, it rolls away from the platform in a gentle curve. "
CALL PARK-NYMPH,CAR
RSTACK
.FUNCT I-ROLLER-COASTER-TRIP
CALL QUEUE,I-ROLLER-COASTER-TRIP,-1
PUT STACK,0,1
INC 'RIDE-COUNTER
ZERO? RIDE-IN-PROGRESS \?CND1
CALL INT,I-ROLLER-COASTER-TRIP
PUT STACK,0,0
CALL END-RIDE
RFALSE
?CND1: CRLF
EQUAL? RIDE-COUNTER,1 \?ELS8
PRINTR "The car, propelled by some unseen force, rolls up a huge incline. The crest grows tantalizingly closer."
?ELS8: EQUAL? RIDE-COUNTER,2 \?ELS12
PRINTR "You reach the crest, the highest point of the roller coaster! The park is laid out beneath you like a map; the lights of the midway, the booths of the arcade, the sparkling blue ribbon of water that must be the flume. In the distance is a wide crater. The sounds and smells of the park seem distant, and time feels suspended for a moment."
?ELS12: EQUAL? RIDE-COUNTER,3 \?ELS16
PRINTR "The breath is swept from your lungs as the car begins diving, seemingly straight downward. You rise from the seat as the ground rushes closer! At the last moment, the car swings upward, and your stomach settles in your ankles."
?ELS16: EQUAL? RIDE-COUNTER,4 \?ELS20
PRINTR "The car zips through a series of wild turns and sharp drops. Wooden roller coaster supports whiz past, inches from your head!"
?ELS20: EQUAL? RIDE-COUNTER,5 \?ELS24
PRINTR "This section of track is shaped like a corkscrew, and as the car hurtles forward it turns upside down almost every second. It is impossible to tell up from down, as the ground seems to spin around you."
?ELS24: EQUAL? RIDE-COUNTER,6 \?ELS28
PRINTR "The car shoots into a rapid climb, which gets progressively slower and steeper. Your heart beats wildly as the track begins to swing back above you, and you realize that you are entering a giant loop!"
?ELS28: EQUAL? RIDE-COUNTER,7 \?ELS32
PRINTR "As you reach the highest point of the loop, you hang completely upside-down for a brief moment. The blood rushes to your head as the ground suspended ""above"" you like a canopy. Then, you hurtle down the far side of the loop with breakneck speed!"
?ELS32: EQUAL? RIDE-COUNTER,8 \?ELS36
PRINTI "The roller coaster speeds out of the loop and into a tunnel"
ZERO? LIT \?THN42
ZERO? BLORTED /?ELS41
?THN42: PRINTI ", which seems to run through the middle of a haunted house! Wispy ghosts and ghoulish skeletons brush past you"
JUMP ?CND39
?ELS41: PRINTI ". You shiver as horrible slimy things brush across your face"
?CND39: PRINTR "."
?ELS36: EQUAL? RIDE-COUNTER,9 \FALSE
CALL END-RIDE
CALL INT,I-ROLLER-COASTER-TRIP
PUT STACK,0,0
PRINTR "The car zooms out into daylight, and glides to a stop at the boarding platform."
.FUNCT ARCADE-F,RARG
EQUAL? RARG,M-END \FALSE
ZERO? HAWKER-SUBDUED \FALSE
IN? BALL,HAWKER \FALSE
PRINTR """C'mon, pal!"" cries the hawker from the game booth. ""Try your luck!"" He holds the ball out toward you."
.FUNCT ARCADE-EXIT-F
CALL HELD?,BALL
ZERO? STACK /?CND1
PRINTI "The hawker yells after you, ""Hey buddy, come back with that ball!"""
CRLF
CRLF
RETURN WEST-END-OF-MIDWAY
?CND1: RETURN WEST-END-OF-MIDWAY
.FUNCT BOOTH-PSEUDO
EQUAL? PRSA,V?THROUGH \FALSE
PRINTR "The hawker pushes you away."
.FUNCT HAWKER-F
EQUAL? HAWKER,WINNER \?ELS5
EQUAL? PRSO,BALL \?ELS10
EQUAL? PRSI,ME \?ELS10
EQUAL? PRSA,V?GIVE \?ELS10
SET 'WINNER,PROTAGONIST
CALL PERFORM,V?TAKE,BALL
RTRUE
?ELS10: PRINTI """No time to gab, kid."
ZERO? HAWKER-SUBDUED \?CND17
PRINTI " C'mon and give it a try. One hit wins!"
?CND17: PRINTI """"
CRLF
CALL STOP
RSTACK
?ELS5: EQUAL? PRSA,V?YOMIN \?ELS25
PRINTR "The hawker is thinking about finding a good stogie, whatever that is."
?ELS25: EQUAL? PRSA,V?AIMFIZ \FALSE
CALL JIGS-UP,STR?270
RSTACK
.FUNCT BALL-F
EQUAL? PRSA,V?TAKE \?ELS5
FCLEAR BALL,NDESCBIT
FCLEAR BALL,TRYTAKEBIT
RFALSE
?ELS5: EQUAL? PRSA,V?ATTACK \?ELS7
EQUAL? PRSO,RABBITS \?ELS7
CALL PERFORM,V?THROW,BALL,RABBITS
RTRUE
?ELS7: EQUAL? PRSA,V?THROW \FALSE
EQUAL? PRSI,RABBITS \FALSE
CALL HELD?,BALL
ZERO? STACK /FALSE
ZERO? FOOBLED /?ELS18
MOVE MALYON-SCROLL,PROTAGONIST
ADD SCORE,10 >SCORE
SET 'HAWKER-SUBDUED,TRUE-VALUE
MOVE BALL,DIAL
PRINTR "A tremendous pitch sends a bunny spinning. ""What an arm, kid, what an arm!"" cries the hawker. He hands you a glittering scroll from the shelf of prizes. ""Here's your prize, now scram."""
?ELS18: MOVE BALL,HAWKER
FSET BALL,NDESCBIT
FSET BALL,TRYTAKEBIT
CALL PICK-ONE,MISSES
PRINT STACK
PRINTR " This game is harder than it looks. The hawker, leering, retrieves the ball."
.FUNCT RABBITS-F
EQUAL? PRSA,V?MALYON \FALSE
PRINTR "The bunnies hop away and the startled hawker scrambles after them. He returns a moment later, holding the again inanimate bunnies, and gives you a nasty glare."
.FUNCT CASINO-F,RARG
EQUAL? RARG,M-ENTER \FALSE
ZERO? JACKPOT-DUMPED /FALSE
SET 'JACKPOT-DUMPED,FALSE-VALUE
PRINTI "You enter just as a group of casino nymphs finish cleaning up the last of the zorkmid coins."
CRLF
CRLF
RTRUE
.FUNCT LEVER-PSEUDO,A,B,C
EQUAL? PRSA,V?PUSH,V?MOVE \FALSE
ZERO? FWEEPED /?ELS10
CALL BATTY
RSTACK
?ELS10: ZERO? SLOT-MACHINE-BROKEN /?ELS13
PRINTR "The machine rattles loudly and makes a few feeble pings."
?ELS13: RANDOM 100
LESS? 25,STACK /?ELS21
GET SLOT-MACHINE-TABLE,1 >A
JUMP ?CND19
?ELS21: RANDOM 100
LESS? 33,STACK /?ELS23
GET SLOT-MACHINE-TABLE,2 >A
JUMP ?CND19
?ELS23: RANDOM 100
LESS? 50,STACK /?ELS25
GET SLOT-MACHINE-TABLE,3 >A
JUMP ?CND19
?ELS25: GET SLOT-MACHINE-TABLE,4 >A
?CND19: RANDOM 100
LESS? 25,STACK /?ELS30
GET SLOT-MACHINE-TABLE,1 >B
JUMP ?CND28
?ELS30: RANDOM 100
LESS? 33,STACK /?ELS32
GET SLOT-MACHINE-TABLE,2 >B
JUMP ?CND28
?ELS32: RANDOM 100
LESS? 50,STACK /?ELS34
GET SLOT-MACHINE-TABLE,3 >B
JUMP ?CND28
?ELS34: GET SLOT-MACHINE-TABLE,4 >B
?CND28: RANDOM 100
LESS? 25,STACK /?ELS39
GET SLOT-MACHINE-TABLE,1 >C
JUMP ?CND37
?ELS39: RANDOM 100
LESS? 33,STACK /?ELS41
GET SLOT-MACHINE-TABLE,2 >C
JUMP ?CND37
?ELS41: RANDOM 100
LESS? 50,STACK /?ELS43
GET SLOT-MACHINE-TABLE,3 >C
JUMP ?CND37
?ELS43: GET SLOT-MACHINE-TABLE,4 >C
?CND37: PRINTI "Ping!
A "
PRINT A
PRINTI " appears in the first section of the display.
Ping!
A "
PRINT B
PRINTI " appears in the second section of the display.
Ping!
A "
PRINT C
PRINTI " appears in the third section of the display."
CRLF
EQUAL? A,B \TRUE
EQUAL? A,C \TRUE
GET SLOT-MACHINE-TABLE,1
EQUAL? A,STACK \?ELS59
SET 'JACKPOT-DUMPED,TRUE-VALUE
CALL JIGS-UP,STR?277
RSTACK
?ELS59: MOVE ZORKMID,HERE
SET 'SLOT-MACHINE-BROKEN,TRUE-VALUE
PRINTR "Ping! Ping! Ping!
A zorkmid coin drops out of the machine and lands at your feet."
.ENDI

1868
parser.cmp Normal file

File diff suppressed because it is too large Load diff

1340
parser.zap Normal file

File diff suppressed because it is too large Load diff

View file

@ -116,7 +116,7 @@ with 'P-'. Local variables are not restricted in any way."
<SETG PERFORMING-SPELL <>>
<COND (,P-CONT
<SET PTR ,P-CONT>
<COND (<AND <NOT ,SUPER-BRIEF> <==? ,PLAYER ,WINNER>>
<COND (<AND <NOT ,SUPER-BRIEF> <EQUAL? ,PLAYER ,WINNER>>
<CRLF>)>
<SETG P-CONT <>>)
(T
@ -129,7 +129,7 @@ with 'P-'. Local variables are not restricted in any way."
<TELL ">">
<READ ,P-INBUF ,P-LEXV>)>
<SETG P-LEN <GETB ,P-LEXV ,P-LEXWORDS>>
<COND (<0? ,P-LEN> <TELL "I beg your pardon?" CR> <RFALSE>)>
<COND (<ZERO? ,P-LEN> <TELL "I beg your pardon?" CR> <RFALSE>)>
<SET LEN ,P-LEN>
<SETG P-DIR <>>
<SETG P-NCN 0>
@ -140,10 +140,10 @@ with 'P-'. Local variables are not restricted in any way."
<RETURN>)
(<OR <SET WRD <GET ,P-LEXV .PTR>>
<SET WRD <NUMBER? .PTR>>>
<COND (<AND <==? .WRD ,W?TO>
<COND (<AND <EQUAL? .WRD ,W?TO>
<EQUAL? .VERB ,ACT?TELL ;,ACT?ASK>>
<SET WRD ,W?QUOTE>)
(<AND <==? .WRD ,W?THEN>
(<AND <EQUAL? .WRD ,W?THEN>
<NOT .VERB>
<NOT ,QUOTE-FLAG> ;"Last NOT added 7/3">
<PUT ,P-ITBL ,P-VERB ,ACT?TELL>
@ -159,7 +159,7 @@ with 'P-'. Local variables are not restricted in any way."
<SETG QUOTE-FLAG <>>)
(T
<SETG QUOTE-FLAG T>)>)>
<OR <0? ,P-LEN>
<OR <ZERO? ,P-LEN>
<SETG P-CONT <+ .PTR ,P-LEXELEN>>>
<PUTB ,P-LEXV ,P-LEXWORDS ,P-LEN>
<RETURN>)
@ -168,8 +168,8 @@ with 'P-'. Local variables are not restricted in any way."
,PS?DIRECTION
,P1?DIRECTION>>
<EQUAL? .VERB <> ,ACT?WALK ;,ACT?FLY>
<OR <==? .LEN 1>
<AND <==? .LEN 2>
<OR <EQUAL? .LEN 1>
<AND <EQUAL? .LEN 2>
<EQUAL? .VERB ,ACT?WALK ;,ACT?FLY>>
<AND <EQUAL? <SET NW
<GET ,P-LEXV
@ -179,7 +179,7 @@ with 'P-'. Local variables are not restricted in any way."
,W?QUOTE>
<NOT <L? .LEN 2>>>
<AND ,QUOTE-FLAG
<==? .LEN 2>
<EQUAL? .LEN 2>
<EQUAL? .NW ,W?QUOTE>>
<AND <G? .LEN 2>
<EQUAL? .NW ,W?COMMA ,W?AND>>>>
@ -209,23 +209,23 @@ with 'P-'. Local variables are not restricted in any way."
<WT? .WRD ,PS?OBJECT>>
<SET VAL 0>>>
<COND (<AND <G? ,P-LEN 0>
<==? <GET ,P-LEXV
<EQUAL? <GET ,P-LEXV
<+ .PTR ,P-LEXELEN>>
,W?OF>
;<NOT <EQUAL? .VERB ,ACT?ACCUSE>>
<0? .VAL>
<ZERO? .VAL>
<NOT
<EQUAL? .WRD ,W?ALL ,W?ONE ,W?A>>
<NOT
<EQUAL? .WRD ,W?BOTH>>>)
(<AND <NOT <0? .VAL>>
<OR <0? ,P-LEN>
(<AND <NOT <ZERO? .VAL>>
<OR <ZERO? ,P-LEN>
<EQUAL? <GET ,P-LEXV <+ .PTR 2>>
,W?THEN ,W?PERIOD>>>
<COND (<L? ,P-NCN 2>
<PUT ,P-ITBL ,P-PREP1 .VAL>
<PUT ,P-ITBL ,P-PREP1N .WRD>)>)
(<==? ,P-NCN 2>
(<EQUAL? ,P-NCN 2>
<TELL
"I found too many nouns in that sentence." CR>
<RFALSE>)
@ -265,7 +265,7 @@ with 'P-'. Local variables are not restricted in any way."
<RETURN T>)>
<SETG P-WALK-DIR <>>
<COND (,P-OFLAG <ORPHAN-MERGE>)>
;<COND (<==? <GET ,P-ITBL ,P-VERB> 0> <PUT ,P-ITBL ,P-VERB ,ACT?CALL>)>
;<COND (<EQUAL? <GET ,P-ITBL ,P-VERB> 0> <PUT ,P-ITBL ,P-VERB ,ACT?CALL>)>
<COND (<AND <SYNTAX-CHECK> <SNARF-OBJECTS> <MANY-CHECK> <TAKE-CHECK>>
T)>>
@ -284,18 +284,18 @@ with 'P-'. Local variables are not restricted in any way."
<RTRUE>)
(T
<SET TYP <BAND .TYP ,P-P1BITS>>
<COND (<NOT <==? .TYP .B1>> <SET OFFS <+ .OFFS 1>>)>
<COND (<NOT <EQUAL? .TYP .B1>> <SET OFFS <+ .OFFS 1>>)>
<GETB .PTR .OFFS>)>)>>
;" Scan through a noun clause, leave a pointer to its starting location"
<ROUTINE CLAUSE (PTR VAL WRD "AUX" OFF NUM (ANDFLG <>) (FIRST?? T) NW (LW 0))
<SET OFF <* <- ,P-NCN 1> 2>>
<COND (<NOT <==? .VAL 0>>
<COND (<NOT <EQUAL? .VAL 0>>
<PUT ,P-ITBL <SET NUM <+ ,P-PREP1 .OFF>> .VAL>
<PUT ,P-ITBL <+ .NUM 1> .WRD>
<SET PTR <+ .PTR ,P-LEXELEN>>)
(T <SETG P-LEN <+ ,P-LEN 1>>)>
<COND (<0? ,P-LEN> <SETG P-NCN <- ,P-NCN 1>> <RETURN -1>)>
<COND (<ZERO? ,P-LEN> <SETG P-NCN <- ,P-NCN 1>> <RETURN -1>)>
<PUT ,P-ITBL <SET NUM <+ ,P-NC1 .OFF>> <REST ,P-LEXV <* .PTR 2>>>
<COND (<EQUAL? <GET ,P-LEXV .PTR> ,W?THE ,W?A ,W?AN>
<PUT ,P-ITBL .NUM <REST <GET ,P-ITBL .NUM> 4>>)>
@ -305,10 +305,10 @@ with 'P-'. Local variables are not restricted in any way."
<RETURN -1>)>
<COND (<OR <SET WRD <GET ,P-LEXV .PTR>>
<SET WRD <NUMBER? .PTR>>>
<COND (<0? ,P-LEN> <SET NW 0>)
<COND (<ZERO? ,P-LEN> <SET NW 0>)
(T <SET NW <GET ,P-LEXV <+ .PTR ,P-LEXELEN>>>)>
;<COND (<AND <==? .WRD ,W?OF>
<==? <GET ,P-ITBL ,P-VERB> ,ACT?ACCUSE>>
;<COND (<AND <EQUAL? .WRD ,W?OF>
<EQUAL? <GET ,P-ITBL ,P-VERB> ,ACT?ACCUSE>>
<PUT ,P-LEXV .PTR ,W?WITH>
<SET WRD ,W?WITH>)>
<COND ;(<AND <EQUAL? .WRD ,W?PERIOD>
@ -316,7 +316,7 @@ with 'P-'. Local variables are not restricted in any way."
<SET LW 0>)
(<EQUAL? .WRD ,W?AND ,W?COMMA> <SET ANDFLG T>)
(<EQUAL? .WRD ,W?ALL ,W?ONE ,W?BOTH>
<COND (<==? .NW ,W?OF>
<COND (<EQUAL? .NW ,W?OF>
<SETG P-LEN <- ,P-LEN 1>>
<SET PTR <+ .PTR ,P-LEXELEN>>)>)
(<OR <EQUAL? .WRD ,W?THEN ,W?PERIOD>
@ -339,7 +339,7 @@ with 'P-'. Local variables are not restricted in any way."
(<AND <WT? .WRD
,PS?ADJECTIVE
,P1?ADJECTIVE>
<NOT <==? .NW 0>>
<NOT <EQUAL? .NW 0>>
<WT? .NW ,PS?OBJECT>>)
(<AND <NOT .ANDFLG>
<NOT <EQUAL? .NW ,W?BUT ,W?EXCEPT>>
@ -375,7 +375,7 @@ with 'P-'. Local variables are not restricted in any way."
<COND (<L? <SET CNT <- .CNT 1>> 0> <RETURN>)
(T
<SET CHR <GETB ,P-INBUF .BPTR>>
<COND (<==? .CHR 58>
<COND (<EQUAL? .CHR 58>
<SET TIM .SUM>
<SET SUM 0>)
(<G? .SUM 10000> <RFALSE>)
@ -400,19 +400,19 @@ with 'P-'. Local variables are not restricted in any way."
<SETG P-OFLAG <>>
<COND
(<AND <NOT <ZERO? <SET VERB <GET ,P-ITBL ,P-VERB>>>>
<NOT <==? .VERB <GET ,P-OTBL ,P-VERB>>>>
<NOT <EQUAL? .VERB <GET ,P-OTBL ,P-VERB>>>>
<RFALSE>)
(<==? ,P-NCN 2>
(<EQUAL? ,P-NCN 2>
<RFALSE>)
(<==? <GET ,P-OTBL ,P-NC1> 1>
<COND (<OR <==? <SET TEMP <GET ,P-ITBL ,P-PREP1>>
(<EQUAL? <GET ,P-OTBL ,P-NC1> 1>
<COND (<OR <EQUAL? <SET TEMP <GET ,P-ITBL ,P-PREP1>>
<GET ,P-OTBL ,P-PREP1>>
<ZERO? .TEMP>>
<PUT ,P-OTBL ,P-NC1 <GET ,P-ITBL ,P-NC1>>
<PUT ,P-OTBL ,P-NC1L <GET ,P-ITBL ,P-NC1L>>)
(T <RFALSE>)>)
(<==? <GET ,P-OTBL ,P-NC2> 1>
<COND (<OR <==? <SET TEMP <GET ,P-ITBL ,P-PREP1>>
(<EQUAL? <GET ,P-OTBL ,P-NC2> 1>
<COND (<OR <EQUAL? <SET TEMP <GET ,P-ITBL ,P-PREP1>>
<GET ,P-OTBL ,P-PREP2>>
<ZERO? .TEMP>>
<PUT ,P-OTBL ,P-NC2 <GET ,P-ITBL ,P-NC1>>
@ -421,12 +421,12 @@ with 'P-'. Local variables are not restricted in any way."
(T <RFALSE>)>)
(,P-ACLAUSE
<COND
(<NOT <==? ,P-NCN 1>> <SETG P-ACLAUSE <>> <RFALSE>)
(<NOT <EQUAL? ,P-NCN 1>> <SETG P-ACLAUSE <>> <RFALSE>)
(T
<SET BEG <GET ,P-ITBL ,P-NC1>>
<SET END <GET ,P-ITBL ,P-NC1L>>
<REPEAT ()
<COND (<==? .BEG .END>
<COND (<EQUAL? .BEG .END>
<COND (.ADJ
<ACLAUSE-WIN .ADJ>
<RETURN>)
@ -438,7 +438,7 @@ with 'P-'. Local variables are not restricted in any way."
<NOT .ADJ>>
<SET ADJ .WRD>)
(<OR <BTST <GETB .WRD ,P-PSOFF> ,PS?OBJECT>
<==? .WRD ,W?ONE>>
<EQUAL? .WRD ,W?ONE>>
<COND (<NOT <EQUAL? .WRD ,P-ANAM ,W?ONE>> <RFALSE>)
(T
<ACLAUSE-WIN .ADJ>
@ -454,7 +454,7 @@ with 'P-'. Local variables are not restricted in any way."
<ROUTINE ACLAUSE-WIN (ADJ)
<SETG P-CCSRC ,P-OTBL>
<CLAUSE-COPY ,P-ACLAUSE <+ ,P-ACLAUSE 1> .ADJ>
<AND <NOT <==? <GET ,P-OTBL ,P-NC2> 0>>
<AND <NOT <EQUAL? <GET ,P-OTBL ,P-NC2> 0>>
<SETG P-NCN 2>>
<SETG P-ACLAUSE <>>
<RTRUE>>
@ -524,14 +524,14 @@ with 'P-'. Local variables are not restricted in any way."
<SET NUM <BAND <GETB .SYN ,P-SBITS> ,P-SONUMS>>
<COND (<G? ,P-NCN .NUM> T)
(<AND <NOT <L? .NUM 1>>
<0? ,P-NCN>
<ZERO? ,P-NCN>
<OR <ZERO? <SET PREP <GET ,P-ITBL ,P-PREP1>>>
<==? .PREP <GETB .SYN ,P-SPREP1>>>>
<EQUAL? .PREP <GETB .SYN ,P-SPREP1>>>>
<SET DRIVE1 .SYN>)
(<==? <GETB .SYN ,P-SPREP1> <GET ,P-ITBL ,P-PREP1>>
<COND (<AND <==? .NUM 2> <==? ,P-NCN 1>>
(<EQUAL? <GETB .SYN ,P-SPREP1> <GET ,P-ITBL ,P-PREP1>>
<COND (<AND <EQUAL? .NUM 2> <EQUAL? ,P-NCN 1>>
<SET DRIVE2 .SYN>)
(<==? <GETB .SYN ,P-SPREP2> <GET ,P-ITBL ,P-PREP2>>
(<EQUAL? <GETB .SYN ,P-SPREP2> <GET ,P-ITBL ,P-PREP2>>
<SYNTAX-FOUND .SYN>
<RTRUE>)>)>
<COND (<DLESS? LEN 1>
@ -559,13 +559,13 @@ with 'P-'. Local variables are not restricted in any way."
(<EQUAL? .VERB ,ACT?FIND ;,ACT?WHAT>
<TELL "I can't answer that question." CR>
<RFALSE>)
(<NOT <==? ,WINNER ,PROTAGONIST>>
(<NOT <EQUAL? ,WINNER ,PROTAGONIST>>
<CANT-ORPHAN>)
(T
<ORPHAN .DRIVE1 .DRIVE2>
<TELL "What do you want to ">
<SET TMP <GET ,P-OTBL ,P-VERBN>>
<COND (<==? .TMP 0> <TELL "tell">)
<COND (<EQUAL? .TMP 0> <TELL "tell">)
(<ZERO? <GETB ,P-VTBL 2>>
<PRINTB <GET .TMP 0>>)
(T
@ -590,7 +590,7 @@ with 'P-'. Local variables are not restricted in any way."
<REPEAT ()
<COND (<IGRTR? CNT ,P-ITBLLEN> <RETURN>)
(T <PUT ,P-OTBL .CNT <GET ,P-ITBL .CNT>>)>>
<COND (<==? ,P-NCN 2> <CLAUSE-COPY ,P-NC2 ,P-NC2L>)>
<COND (<EQUAL? ,P-NCN 2> <CLAUSE-COPY ,P-NC2 ,P-NC2L>)>
<COND (<NOT <L? ,P-NCN 1>> <CLAUSE-COPY ,P-NC1 ,P-NC1L>)>
<COND (.D1
<PUT ,P-OTBL ,P-PREP1 <GETB .D1 ,P-SPREP1>>
@ -604,19 +604,19 @@ with 'P-'. Local variables are not restricted in any way."
<ROUTINE BUFFER-PRINT (BEG END CP "AUX" (NOSP <>) WRD (FIRST?? T) (PN <>))
<REPEAT ()
<COND (<==? .BEG .END> <RETURN>)
<COND (<EQUAL? .BEG .END> <RETURN>)
(T
<COND (.NOSP <SET NOSP <>>)
(T <TELL " ">)>
<COND (<==? <SET WRD <GET .BEG 0>> ,W?PERIOD>
<COND (<EQUAL? <SET WRD <GET .BEG 0>> ,W?PERIOD>
<SET NOSP T>)
(T
<COND (<AND .FIRST?? <NOT .PN> .CP>
<TELL "the ">)>
<COND (<OR ,P-OFLAG ,P-MERGED> <PRINTB .WRD>)
(<AND <==? .WRD ,W?IT>
(<AND <EQUAL? .WRD ,W?IT>
<ACCESSIBLE? ,P-IT-OBJECT>
;<==? ,P-IT-LOC ,HERE>>
;<EQUAL? ,P-IT-LOC ,HERE>>
<PRINTD ,P-IT-OBJECT>)
(T
<WORD-PRINT <GETB .BEG 2>
@ -629,7 +629,7 @@ with 'P-'. Local variables are not restricted in any way."
<WORD-PRINT <- <GETB .PTR 2> 1> <+ <GETB .PTR 3> 1>>>
<ROUTINE PREP-PRINT (PREP "AUX" WRD)
<COND (<NOT <0? .PREP>>
<COND (<NOT <ZERO? .PREP>>
<TELL " ">
<COND (<EQUAL? .PREP ,PR?THROUGH>
<TELL "through">)
@ -645,7 +645,7 @@ with 'P-'. Local variables are not restricted in any way."
<REST ,P-OCLAUSE
<+ <* <GET ,P-OCLAUSE ,P-MATCHLEN> ,P-LEXELEN> 2>>>
<REPEAT ()
<COND (<==? .BEG .END>
<COND (<EQUAL? .BEG .END>
<PUT ,P-OTBL
.EPTR
<REST ,P-OCLAUSE
@ -653,7 +653,7 @@ with 'P-'. Local variables are not restricted in any way."
2>>>
<RETURN>)
(T
<COND (<AND .INSRT <==? ,P-ANAM <GET .BEG 0>>>
<COND (<AND .INSRT <EQUAL? ,P-ANAM <GET .BEG 0>>>
<CLAUSE-ADD .INSRT>)>
<CLAUSE-ADD <GET .BEG 0>>)>
<SET BEG <REST .BEG ,P-WORDLEN>>>>
@ -669,7 +669,7 @@ with 'P-'. Local variables are not restricted in any way."
<SET SIZE <* <GET ,PREPOSITIONS 0> 2>>
<REPEAT ()
<COND (<IGRTR? CNT .SIZE> <RFALSE>)
(<==? <GET ,PREPOSITIONS .CNT> .PREP>
(<EQUAL? <GET ,PREPOSITIONS .CNT> .PREP>
<RETURN <GET ,PREPOSITIONS <- .CNT 1>>>)>>>
<ROUTINE SYNTAX-FOUND (SYN)
@ -679,19 +679,19 @@ with 'P-'. Local variables are not restricted in any way."
<GLOBAL P-GWIMBIT 0>
<ROUTINE GWIM (GBIT LBIT PREP "AUX" OBJ)
<COND (<==? .GBIT ,RLANDBIT>
<COND (<EQUAL? .GBIT ,RLANDBIT>
<RETURN ,ROOMS>)>
<SETG P-GWIMBIT .GBIT>
<SETG P-SLOCBITS .LBIT>
<PUT ,P-MERGE ,P-MATCHLEN 0>
<COND (<GET-OBJECT ,P-MERGE <>>
<SETG P-GWIMBIT 0>
<COND (<==? <GET ,P-MERGE ,P-MATCHLEN> 1>
<COND (<EQUAL? <GET ,P-MERGE ,P-MATCHLEN> 1>
<SET OBJ <GET ,P-MERGE 1>>
<TELL "(">
<COND (<NOT <0? .PREP>>
<COND (<NOT <ZERO? .PREP>>
<PRINTB <SET PREP <PREP-FIND .PREP>>>
<COND (<==? .PREP ,W?OUT>
<COND (<EQUAL? .PREP ,W?OUT>
<TELL " of">)>
<COND (<NOT <FSET? .OBJ ,NARTICLEBIT>>
<TELL " the ">)
@ -702,16 +702,16 @@ with 'P-'. Local variables are not restricted in any way."
(T <SETG P-GWIMBIT 0> <RFALSE>)>>
<ROUTINE SNARF-OBJECTS ("AUX" PTR)
<COND (<NOT <==? <SET PTR <GET ,P-ITBL ,P-NC1>> 0>>
<COND (<NOT <EQUAL? <SET PTR <GET ,P-ITBL ,P-NC1>> 0>>
<SETG P-SLOCBITS <GETB ,P-SYNTAX ,P-SLOC1>>
<OR <SNARFEM .PTR <GET ,P-ITBL ,P-NC1L> ,P-PRSO> <RFALSE>>
<OR <0? <GET ,P-BUTS ,P-MATCHLEN>>
<OR <ZERO? <GET ,P-BUTS ,P-MATCHLEN>>
<SETG P-PRSO <BUT-MERGE ,P-PRSO>>>)>
<COND (<NOT <==? <SET PTR <GET ,P-ITBL ,P-NC2>> 0>>
<COND (<NOT <EQUAL? <SET PTR <GET ,P-ITBL ,P-NC2>> 0>>
<SETG P-SLOCBITS <GETB ,P-SYNTAX ,P-SLOC2>>
<OR <SNARFEM .PTR <GET ,P-ITBL ,P-NC2L> ,P-PRSI> <RFALSE>>
<COND (<NOT <0? <GET ,P-BUTS ,P-MATCHLEN>>>
<COND (<==? <GET ,P-PRSI ,P-MATCHLEN> 1>
<COND (<NOT <ZERO? <GET ,P-BUTS ,P-MATCHLEN>>>
<COND (<EQUAL? <GET ,P-PRSI ,P-MATCHLEN> 1>
<SETG P-PRSO <BUT-MERGE ,P-PRSO>>)
(T <SETG P-PRSI <BUT-MERGE ,P-PRSI>>)>)>)>
<RTRUE>>
@ -770,12 +770,12 @@ with 'P-'. Local variables are not restricted in any way."
<PUT .TBL ,P-MATCHLEN 0>
<SET WRD <GET .PTR 0>>
<REPEAT ()
<COND (<==? .PTR .EPTR> <RETURN <GET-OBJECT <OR .BUT .TBL>>>)
<COND (<EQUAL? .PTR .EPTR> <RETURN <GET-OBJECT <OR .BUT .TBL>>>)
(T
<SET NW <GET .PTR ,P-LEXELEN>>
<COND (<EQUAL? .WRD ,W?ALL ,W?BOTH>
<SETG P-GETFLAGS ,P-ALL>
<COND (<==? .NW ,W?OF>
<COND (<EQUAL? .NW ,W?OF>
<SET PTR <REST .PTR ,P-WORDLEN>>)>)
(<EQUAL? .WRD ,W?BUT ,W?EXCEPT>
<OR <GET-OBJECT <OR .BUT .TBL>> <RFALSE>>
@ -784,7 +784,7 @@ with 'P-'. Local variables are not restricted in any way."
(<EQUAL? .WRD ,W?A ,W?ONE>
<COND (<NOT ,P-ADJ>
<SETG P-GETFLAGS ,P-ONE>
<COND (<==? .NW ,W?OF>
<COND (<EQUAL? .NW ,W?OF>
<SET PTR <REST .PTR ,P-WORDLEN>>)>)
(T
<SETG P-NAM ,P-ONEOBJ>
@ -796,8 +796,8 @@ with 'P-'. Local variables are not restricted in any way."
T)
(<WT? .WRD ,PS?BUZZ-WORD>)
(<EQUAL? .WRD ,W?AND ,W?COMMA>)
(<==? .WRD ,W?OF>
<COND (<0? ,P-GETFLAGS>
(<EQUAL? .WRD ,W?OF>
<COND (<ZERO? ,P-GETFLAGS>
<SETG P-GETFLAGS ,P-INHIBIT>)>)
(<AND <SET WV <WT? .WRD ,PS?ADJECTIVE ,P1?ADJECTIVE>>
<ADJ-CHECK .WRD>>
@ -806,7 +806,7 @@ with 'P-'. Local variables are not restricted in any way."
(<WT? .WRD ,PS?OBJECT ,P1?OBJECT>
<SETG P-NAM .WRD>
<SETG P-ONEOBJ .WRD>)>)>
<COND (<NOT <==? .PTR .EPTR>>
<COND (<NOT <EQUAL? .PTR .EPTR>>
<SET PTR <REST .PTR ,P-WORDLEN>>
<SET WRD .NW>)>>>
@ -850,12 +850,12 @@ with 'P-'. Local variables are not restricted in any way."
<SETG P-ADJ <>>)>
<COND (<AND <NOT ,P-NAM>
<NOT ,P-ADJ>
<NOT <==? ,P-GETFLAGS ,P-ALL>>
<0? ,P-GWIMBIT>>
<NOT <EQUAL? ,P-GETFLAGS ,P-ALL>>
<ZERO? ,P-GWIMBIT>>
<COND (.VRB
<TELL ,NOUN-MISSING CR>)>
<RFALSE>)>
<COND (<OR <NOT <==? ,P-GETFLAGS ,P-ALL>> <0? ,P-SLOCBITS>>
<COND (<OR <NOT <EQUAL? ,P-GETFLAGS ,P-ALL>> <ZERO? ,P-SLOCBITS>>
<SETG P-SLOCBITS -1>)>
<SETG P-TABLE .TBL>
<PROG ()
@ -877,16 +877,16 @@ with 'P-'. Local variables are not restricted in any way."
<SET LEN <- <GET .TBL ,P-MATCHLEN> .TLEN>>
<COND (<BTST ,P-GETFLAGS ,P-ALL> ;<AND * <NOT <EQUAL? .LEN 0>>>)
(<AND <BTST ,P-GETFLAGS ,P-ONE>
<NOT <0? .LEN>>>
<COND (<NOT <==? .LEN 1>>
<NOT <ZERO? .LEN>>>
<COND (<NOT <EQUAL? .LEN 1>>
<PUT .TBL 1 <GET .TBL <RANDOM .LEN>>>
<TELL "(How about the ">
<PRINTD <GET .TBL 1>>
<TELL "?)" CR>)>
<PUT .TBL ,P-MATCHLEN 1>)
(<OR <G? .LEN 1>
<AND <0? .LEN> <NOT <==? ,P-SLOCBITS -1>>>>
<COND (<==? ,P-SLOCBITS -1>
<AND <ZERO? .LEN> <NOT <EQUAL? ,P-SLOCBITS -1>>>>
<COND (<EQUAL? ,P-SLOCBITS -1>
<SETG P-SLOCBITS .XBITS>
<SET OLEN .LEN>
<PUT .TBL
@ -894,9 +894,9 @@ with 'P-'. Local variables are not restricted in any way."
<- <GET .TBL ,P-MATCHLEN> .LEN>>
<AGAIN>)
(T
<COND (<0? .LEN> <SET LEN .OLEN>)>
<COND (<ZERO? .LEN> <SET LEN .OLEN>)>
<COND (<AND ;.VRB ;".VRB added 8/14/84 by JW"
<NOT <==? ,WINNER ,PROTAGONIST>>>
<NOT <EQUAL? ,WINNER ,PROTAGONIST>>>
<CANT-ORPHAN>
;<SETG P-NAM <>>
;<SETG P-ADJ <>>
@ -904,7 +904,7 @@ with 'P-'. Local variables are not restricted in any way."
(<AND .VRB ,P-NAM>
<WHICH-PRINT .TLEN .LEN .TBL>
<SETG P-ACLAUSE
<COND (<==? .TBL ,P-PRSO> ,P-NC1)
<COND (<EQUAL? .TBL ,P-PRSO> ,P-NC1)
(T ,P-NC2)>>
<SETG P-AADJ ,P-ADJ>
<SETG P-ANAM ,P-NAM>
@ -915,7 +915,7 @@ with 'P-'. Local variables are not restricted in any way."
<SETG P-NAM <>>
<SETG P-ADJ <>>
<RFALSE>)>)>
<COND (<AND <0? .LEN>
<COND (<AND <ZERO? .LEN>
.GCHECK>
<COND (.VRB
;<SETG P-SLOCBITS .XBITS>
@ -936,7 +936,7 @@ with 'P-'. Local variables are not restricted in any way."
<SETG P-NAM <>>
<SETG P-ADJ <>>
<RFALSE>)
(<0? .LEN>
(<ZERO? .LEN>
<SET GCHECK T>
<AGAIN>)>
<SETG P-SLOCBITS .XBITS>
@ -1013,7 +1013,7 @@ with 'P-'. Local variables are not restricted in any way."
<SET RLEN .LEN>
<TELL "Which">
<COND (<OR ,P-OFLAG ,P-MERGED> <TELL " "> <PRINTB ,P-NAM>)
(<==? .TBL ,P-PRSO>
(<EQUAL? .TBL ,P-PRSO>
<CLAUSE-PRINT ,P-NC1 ,P-NC1L <>>)
(T <CLAUSE-PRINT ,P-NC2 ,P-NC2L <>>)>
<TELL " do you mean, ">
@ -1021,8 +1021,8 @@ with 'P-'. Local variables are not restricted in any way."
<SET TLEN <+ .TLEN 1>>
<SET OBJ <GET .TBL .TLEN>>
<TELL "the " D .OBJ>
<COND (<==? .LEN 2>
<COND (<NOT <==? .RLEN 2>> <TELL ",">)>
<COND (<EQUAL? .LEN 2>
<COND (<NOT <EQUAL? .RLEN 2>> <TELL ",">)>
<TELL " or ">)
(<G? .LEN 2> <TELL ", ">)>
<COND (<L? <SET LEN <- .LEN 1>> 1>
@ -1042,7 +1042,7 @@ with 'P-'. Local variables are not restricted in any way."
<SET RMGL <- </ <PTSIZE .RMG> 4> 1>>
<SET CNT 0>
<REPEAT ()
<COND (<==? ,P-NAM <GET .RMG <* .CNT 2>>>
<COND (<EQUAL? ,P-NAM <GET .RMG <* .CNT 2>>>
<SETG LAST-PSEUDO-LOC ,HERE>
<PUTP ,PSEUDO-OBJECT
,P?ACTION
@ -1054,12 +1054,12 @@ with 'P-'. Local variables are not restricted in any way."
<OBJ-FOUND ,PSEUDO-OBJECT .TBL>
<RETURN>)
(<IGRTR? CNT .RMGL> <RETURN>)>>)>
<COND (<==? <GET .TBL ,P-MATCHLEN> .LEN>
<COND (<EQUAL? <GET .TBL ,P-MATCHLEN> .LEN>
<SETG P-SLOCBITS -1>
<SETG P-TABLE .TBL>
<DO-SL ,GLOBAL-OBJECTS 1 1>
<SETG P-SLOCBITS .OBITS>
;<COND (<AND <0? <GET .TBL ,P-MATCHLEN>>
;<COND (<AND <ZERO? <GET .TBL ,P-MATCHLEN>>
<EQUAL? ,PRSA ,V?LOOK-INSIDE ,V?SEARCH ,V?EXAMINE>>
<DO-SL ,ROOMS 1 1>)>)>>
@ -1082,11 +1082,11 @@ with 'P-'. Local variables are not restricted in any way."
<ROUTINE SEARCH-LIST (OBJ TBL LVL "AUX" FLS NOBJ)
<COND (<SET OBJ <FIRST? .OBJ>>
<REPEAT ()
<COND (<AND <NOT <==? .LVL ,P-SRCBOT>>
<COND (<AND <NOT <EQUAL? .LVL ,P-SRCBOT>>
<GETPT .OBJ ,P?SYNONYM>
<THIS-IT? .OBJ .TBL>>
<OBJ-FOUND .OBJ .TBL>)>
<COND (<AND <OR <NOT <==? .LVL ,P-SRCTOP>>
<COND (<AND <OR <NOT <EQUAL? .LVL ,P-SRCTOP>>
<FSET? .OBJ ,SEARCHBIT>
<FSET? .OBJ ,SURFACEBIT>>
<SET NOBJ <FIRST? .OBJ>>>
@ -1173,7 +1173,7 @@ with 'P-'. Local variables are not restricted in any way."
<SET LOSS 2>)>
<COND (.LOSS
<TELL "I can't use multiple ">
<COND (<==? .LOSS 2> <TELL "in">)>
<COND (<EQUAL? .LOSS 2> <TELL "in">)>
<TELL "direct objects with \"">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (<ZERO? .TMP> <TELL "tell">)
@ -1190,12 +1190,12 @@ with 'P-'. Local variables are not restricted in any way."
<COND (<NOT <L? .SIZE 0>> <SET CNT 0>)
(ELSE <SET SIZE <GET .TBL 0>>)>
<REPEAT ()
<COND (<==? .ITM <GET .TBL .CNT>> <RTRUE>)
<COND (<EQUAL? .ITM <GET .TBL .CNT>> <RTRUE>)
(<IGRTR? CNT .SIZE> <RFALSE>)>>>
<ROUTINE ZMEMQB (ITM TBL SIZE "AUX" (CNT 0))
<REPEAT ()
<COND (<==? .ITM <GETB .TBL .CNT>> <RTRUE>)
<COND (<EQUAL? .ITM <GETB .TBL .CNT>> <RTRUE>)
(<IGRTR? CNT .SIZE> <RFALSE>)>>>
<GLOBAL ALWAYS-LIT <>>
@ -1213,7 +1213,7 @@ with 'P-'. Local variables are not restricted in any way."
<PUT ,P-MERGE ,P-MATCHLEN 0>
<SETG P-TABLE ,P-MERGE>
<SETG P-SLOCBITS -1>
<COND (<==? .OHERE .RM>
<COND (<EQUAL? .OHERE .RM>
<DO-SL ,WINNER 1 1>
<COND (<AND <NOT <EQUAL? ,WINNER ,PLAYER>>
<IN? ,PLAYER .RM>>
@ -1226,13 +1226,13 @@ with 'P-'. Local variables are not restricted in any way."
;<ROUTINE PRSO-PRINT ("AUX" PTR)
<COND (<OR ,P-MERGED
<==? <GET <SET PTR <GET ,P-ITBL ,P-NC1>> 0> ,W?IT>>
<EQUAL? <GET <SET PTR <GET ,P-ITBL ,P-NC1>> 0> ,W?IT>>
<TELL " " D ,PRSO>)
(T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC1L> <>>)>>
;<ROUTINE PRSI-PRINT ("AUX" PTR)
<COND (<OR ,P-MERGED
<==? <GET <SET PTR <GET ,P-ITBL ,P-NC2>> 0> ,W?IT>>
<EQUAL? <GET <SET PTR <GET ,P-ITBL ,P-NC2>> 0> ,W?IT>>
<TELL " " D ,PRSO>)
(T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC2L> <>>)>>
@ -1249,6 +1249,6 @@ with 'P-'. Local variables are not restricted in any way."
<OR <NOT <SET SYNS <GETPT .OBJ ,P?ADJECTIVE>>>
<NOT <ZMEMQB ,P-ADJ .SYNS <- <PTSIZE .SYNS> 1>>>>>
<RFALSE>)
(<AND <NOT <0? ,P-GWIMBIT>> <NOT <FSET? .OBJ ,P-GWIMBIT>>>
(<AND <NOT <ZERO? ,P-GWIMBIT>> <NOT <FSET? .OBJ ,P-GWIMBIT>>>
<RFALSE>)>
<RTRUE>>

26
sorcerer.errors Normal file
View file

@ -0,0 +1,26 @@
Assembling SORCERER.ZAP.5 on Thursday, April 2, 1987 15:18:03
Release(last was 18): 0
64 Inserting SORCERERDAT.ZAP.5 (23895 bytes)
23959 Inserting MISC.ZAP.5 (1629 bytes)
25588 Inserting GPARSER.ZAP.5 (7076 bytes)
32664 Inserting SYNTAX.ZAP.5 (0 bytes)
32664 Inserting VERBS.ZAP.6 (23662 bytes)
56326 Inserting GLOBALS.ZAP.5 (8411 bytes)
64737 Inserting GUILD.ZAP.5 (5972 bytes)
70709 Inserting BELBOZ.ZAP.5 (8556 bytes)
79265 Inserting FORT.ZAP.5 (1914 bytes)
81179 Inserting PARK.ZAP.5 (5823 bytes)
87002 Inserting MAZE.ZAP.5 (3647 bytes)
90649 Inserting COAL.ZAP.5 (6216 bytes)
96865 Inserting END.ZAP.6 (6754 bytes)
103619 Inserting SORCERERSTR.ZAP.5 (18599 bytes)
255 objects.
207 globals.
1013 word vocabulary.
122218 bytes (120K).
22853 bytes of preload.
11974 bytes of impure.
Outputting symbol tables

1145
sorcerer.record Normal file

File diff suppressed because it is too large Load diff

44
sorcerer.xzap Normal file
View file

@ -0,0 +1,44 @@
.INSERT "SORCERERFREQ"
.INSERT "SORCERERDAT" ; DATA IS IN THIS FILE
.INSERT "MISC"
.INSERT "GPARSER"
.INSERT "SYNTAX"
.INSERT "VERBS"
.INSERT "GLOBALS"
.INSERT "GUILD"
.INSERT "BELBOZ"
.INSERT "FORT"
.INSERT "PARK"
.INSERT "MAZE"
.INSERT "COAL"
.INSERT "END"
.INSERT "SORCERERSTR"
.END

42
sorcerer.zap Normal file
View file

@ -0,0 +1,42 @@
.INSERT "SORCERERDAT" ; DATA IS IN THIS FILE
.INSERT "MISC"
.INSERT "GPARSER"
.INSERT "SYNTAX"
.INSERT "VERBS"
.INSERT "GLOBALS"
.INSERT "GUILD"
.INSERT "BELBOZ"
.INSERT "FORT"
.INSERT "PARK"
.INSERT "MAZE"
.INSERT "COAL"
.INSERT "END"
.INSERT "SORCERERSTR"
.END

View file

@ -12,24 +12,20 @@ OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>)>
<SNAME "SORCERER">
<SETG ZORK-NUMBER 5>
<SET REDEFINE T>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<INSERT-FILE "MISC" T>
<INSERT-FILE "PARSER" T>
<INSERT-FILE "GPARSER" T>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "GLOBALS" T>

Binary file not shown.

15991
sorcererdat.zap Normal file

File diff suppressed because it is too large Load diff

200
sorcererfreq.xzap Normal file
View file

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;1964 983
.FSTR FSTR?2,"The " ;858 287
.FSTR FSTR?3,", " ;759 760
.FSTR FSTR?4,"You " ;726 243
.FSTR FSTR?5,"and " ;704 353
.FSTR FSTR?6,"you " ;550 276
.FSTR FSTR?7,"of " ;509 510
.FSTR FSTR?8,"your " ;459 154
.FSTR FSTR?9,". " ;419 420
.FSTR FSTR?10,"is " ;407 408
.FSTR FSTR?11,"to " ;378 379
.FSTR FSTR?12,"with " ;297 100
.FSTR FSTR?13,"can't " ;290 59
.FSTR FSTR?14,"from " ;264 89
.FSTR FSTR?15,"that " ;261 88
.FSTR FSTR?16,"are " ;246 124
.FSTR FSTR?17,"spell " ;228 58
.FSTR FSTR?18,"into " ;219 74
.FSTR FSTR?19,"This " ;208 53
.FSTR FSTR?20,"in " ;192 193
.FSTR FSTR?21,"There " ;155 32
.FSTR FSTR?22,"have " ;153 52
.FSTR FSTR?23,"for " ;148 75
.FSTR FSTR?24,"about " ;140 36
.FSTR FSTR?25,"this " ;135 46
.FSTR FSTR?26,"Your " ;132 34
.FSTR FSTR?27,"already " ;126 22
.FSTR FSTR?28,"It's " ;125 26
.FSTR FSTR?29,"which " ;124 32
.FSTR FSTR?30,"A " ;120 121
.FSTR FSTR?31,"There's " ;120 16
.FSTR FSTR?32,"Unfortunately" ;120 11
.FSTR FSTR?33,"around " ;115 24
.FSTR FSTR?34,"seems " ;112 29
.FSTR FSTR?35,"leads " ;104 27
.FSTR FSTR?36,"It " ;102 52
.FSTR FSTR?37,"through " ;102 18
.FSTR FSTR?38,"Guild " ;100 21
.FSTR FSTR?39,"Enchanters " ;100 11
.FSTR FSTR?40,"You're " ;98 15
.FSTR FSTR?41,"but " ;96 49
.FSTR FSTR?42,"nothing " ;96 17
.FSTR FSTR?43,"spell" ;93 32
.FSTR FSTR?44,"small " ;92 24
.FSTR FSTR?45,"center " ;90 19
.FSTR FSTR?46,"Belboz " ;90 16
.FSTR FSTR?47,"river " ;88 23
.FSTR FSTR?48,"here" ;84 43
.FSTR FSTR?49,"as " ;83 84
.FSTR FSTR?50,"Enchanters" ;81 10
.FSTR FSTR?51,"out " ;80 41
.FSTR FSTR?52,"gnome " ;80 21
.FSTR FSTR?53,"moment " ;80 17
.FSTR FSTR?54,"before " ;80 17
.FSTR FSTR?55,"Circle " ;78 14
.FSTR FSTR?56,"can " ;76 39
.FSTR FSTR?57,"like " ;75 26
.FSTR FSTR?58,"an " ;72 73
.FSTR FSTR?59,"its " ;72 37
.FSTR FSTR?60,"room " ;72 25
.FSTR FSTR?61,"would " ;72 19
.FSTR FSTR?62,"ancient " ;72 13
.FSTR FSTR?63,"Enchanter" ;72 10
.FSTR FSTR?64,"scroll " ;70 15
.FSTR FSTR?65,"don't " ;70 15
.FSTR FSTR?66,"begins " ;70 15
.FSTR FSTR?67,"on " ;69 70
.FSTR FSTR?68,"down " ;69 24
.FSTR FSTR?69,"light " ;68 18
.FSTR FSTR?70,"large " ;68 18
.FSTR FSTR?71,"it " ;66 67
.FSTR FSTR?72,"coal " ;66 23
.FSTR FSTR?73,"several " ;66 12
.FSTR FSTR?74,"Underground " ;66 7
.FSTR FSTR?75,"you" ;65 66
.FSTR FSTR?76,"! " ;65 66
.FSTR FSTR?77,"potion " ;65 14
.FSTR FSTR?78,"Belboz" ;65 14
.FSTR FSTR?79,"across " ;65 14
.FSTR FSTR?80,"has " ;64 33
.FSTR FSTR?81,"water " ;64 17
.FSTR FSTR?82,"moment" ;64 17
.FSTR FSTR?83,"looks " ;64 17
.FSTR FSTR?84,"lies " ;63 22
.FSTR FSTR?85,"probably " ;63 10
.FSTR FSTR?86,"that" ;62 32
.FSTR FSTR?87,"not " ;62 32
.FSTR FSTR?88,"by " ;61 62
.FSTR FSTR?89,"too " ;60 31
.FSTR FSTR?90,"his " ;60 31
.FSTR FSTR?91,"here " ;60 21
.FSTR FSTR?92,"zorkmid " ;60 11
.FSTR FSTR?93,"without " ;60 11
.FSTR FSTR?94,"at " ;58 59
.FSTR FSTR?95,"over " ;57 20
.FSTR FSTR?96,"one " ;56 29
;word frequency table of 96 most common words
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI

364
sorcererstr.zap Normal file
View file

@ -0,0 +1,364 @@
; STRINGS ARE DEFINED HERE
STRBEG::
.GSTR STR?1,"Not Here"
.GSTR STR?2,"Actor"
.GSTR STR?3,"Room (M-BEG)"
.GSTR STR?4,"Preaction"
.GSTR STR?5,"PRSI"
.GSTR STR?6,"Container"
.GSTR STR?7,"PRSO"
.GSTR STR?8,"beginning to tire"
.GSTR STR?9,"feeling tired"
.GSTR STR?10,"getting more and more tired"
.GSTR STR?11,"worn out"
.GSTR STR?12,"dead tired"
.GSTR STR?13,"so tired you can barely concentrate"
.GSTR STR?14,"moving only on your last reserves of strength"
.GSTR STR?15,"practically asleep"
.GSTR STR?16,"unable to keep your eyes open for more than a few moments at a time"
.GSTR STR?17,"about to keel over from exhaustion"
.GSTR STR?18,"leave the game"
.GSTR STR?19,"restart"
.GSTR STR?20,"Charlatan"
.GSTR STR?21,"Parlor Magician"
.GSTR STR?22,"Novice Enchanter"
.GSTR STR?23,"Intermediate Enchanter"
.GSTR STR?24,"Senior Enchanter"
.GSTR STR?25,"Expert Enchanter"
.GSTR STR?26,"Member of the Circle of Enchanters"
.GSTR STR?27,"Sorcerer"
.GSTR STR?28,"Leader of the Circle of Enchanters"
.GSTR STR?29," a transcript of interaction with SORCERER."
.GSTR STR?30,"attack"
.GSTR STR?31,"Biting"
.GSTR STR?32,"drop"
.GSTR STR?33,"Hello."
.GSTR STR?34,"Good day."
.GSTR STR?35,"Nice weather we've been having lately."
.GSTR STR?36,"Good-bye."
.GSTR STR?37,"Kicking"
.GSTR STR?38,"kill"
.GSTR STR?39,"This was not a safe place to try jumping. You should have looked before you leaped."
.GSTR STR?40,"Trying to break"
.GSTR STR?41,"Pushing"
.GSTR STR?42,"Playing in this way with"
.GSTR STR?43,"Fiddling with"
.GSTR STR?44,"Just as you doze off, a wall of water smashes over you!"
.GSTR STR?45,"The vilstu potion wears off as you sleep, and you awaken clawing frantically at your chest."
.GSTR STR?46,"Before you fall asleep you pass out from the bad air."
.GSTR STR?47,"You awake in the middle of the night to find a hellhound gnawing on you."
.GSTR STR?48,"Your eyes are barely closed before the snake reaches you."
.GSTR STR?49,"You awake to find snakes and beetles crawling all over you."
.GSTR STR?50,"Unfortunately, you roll over in the middle of the night. Kaboom!!"
.GSTR STR?51,"Locusts pick your bones clean while you sleep."
.GSTR STR?52,"During the night the river bank collapses beneath you, throwing you into the turbulent waters."
.GSTR STR?53,"You have a nightmare about a ferocious dorn beast. When it begins gnawing on you, you realize that it isn't a dream at all."
.GSTR STR?54,"Amazing how difficult it is to sleep while swimming (and vice versa)."
.GSTR STR?55,"throw"
.GSTR STR?56,"Ooops! You overdid it a little."
.GSTR STR?57,"Waving"
.GSTR STR?58,"once"
.GSTR STR?59,"twice"
.GSTR STR?60,"thrice"
.GSTR STR?61,"four times"
.GSTR STR?62,"many times"
.GSTR STR?63,"You materialize in a royal tomb somewhere. Before being devoured by rats, you notice a well-decayed corpse nearby."
.GSTR STR?64,"You appear in a strange room. Framed diplomas and wand racks adorn the walls, and a stuffed owl is perched above a trophy case. An incredibly old man with a long white beard spots you. ""Fertilize!"" he cries, pointing a slightly bent wand at you. You turn into a pile of bat guano, a fitting end for a trespasser."
.GSTR STR?65,"You appear in the woods behind the Guild Hall. The servants (who should be doing their daily chores) are lazing about, drinking ale and betting on games of Gabber Tumper. To prevent you from reporting their goofing off, they cut your throat. You just can't get good help these days."
.GSTR STR?66,"You appear on the lawn of a large estate. A domesticated wolf, foaming saliva, is chasing the messenger across the lawn. With graceful agility, the messenger jumps aside, and the wolf sinks its rabid teeth into you instead."
.GSTR STR?67,"You materialize in the middle of a powerful thaumaturgical experiment. A Guildmaster stands nearby, but before he can react you have turned into a large and rather ugly mushroom."
.GSTR STR?68,"Your spell book begins to glow softly. "
.GSTR STR?69," The gnome looks livid. ""Very funny! Have you seen this one?"" He incants a brief spell, and you turn into a bowl of petunias (which eventually wilt)."
.GSTR STR?70,"Unfortunately, bats make poor swimmers. Glug, glug."
.GSTR STR?71,"."
.GSTR STR?72,"a dried-up river bed, full of sharp rocks and muddy puddles. A dark cave beckons."
.GSTR STR?73,"a field surrounded by fortified ramparts. A tattered flag flies atop a tall pole."
.GSTR STR?74,"a brightly lit room. A tree fills the room, its branches twinkling with gold and silver."
.GSTR STR?75,"a glittering midway filled with garish lights and honky-tonk music, surrounded by a spidery wooden structure."
.GSTR STR?76,"a startling location of transparent walls, twinkling with reflected light."
.GSTR STR?77,"a small room with a slanted roof, covered with black dust. The room is bathed in orange light."
.GSTR STR?78,"a door of the whitest wood, opening slowly to reveal the face of Belboz, which quickly melts into a frightening visage of unspeakable malevolence."
.GSTR STR?79,"a heated debate among the Guildmasters of the land, in the ancient Guild Hall at Borphee."
.GSTR STR?80,"a pile of pure-white blocks, engraved with runes of power. Each block has a word written on it."
.GSTR STR?81,"A hideous creature with slavering fangs lurks up and, before you can move, begins feasting!"
.GSTR STR?82,"Oh, no! Something lurked up and devoured you!"
.GSTR STR?83," doesn't do anything."
.GSTR STR?84," accomplishes nothing."
.GSTR STR?85," has no desirable effect."
.GSTR STR?86,"No spell would help with that!"
.GSTR STR?87,"It would take more magic than you've got!"
.GSTR STR?88,"You can't be serious."
.GSTR STR?89,"You must have had a silliness spell cast upon you."
.GSTR STR?90,"You're not holding"
.GSTR STR?91," "
.GSTR STR?92," "
.GSTR STR?93," "
.GSTR STR?94," "
.GSTR STR?95," "
.GSTR STR?96,"F"
.GSTR STR?97,"bat"
.GSTR STR?98,"Done."
.GSTR STR?99,"The pool evaporates, to the annoyance of a multi-tentacled denizen, who proceeds to take out its anger on you."
.GSTR STR?100,"water"
.GSTR STR?101,"Belboz is lying here, motionless but not asleep. He seems to be in some sort of trance."
.GSTR STR?102,"skydiving near the mountains of Gurth. Not having a parachute, your descent is considerably faster"
.GSTR STR?103,"scuba diving in the Sea of Mithicus. Before you can drown, a ferocious sea lion devours you"
.GSTR STR?104,"sharpening her bullfighting skills. The crowd cheers wildly as the bull gores you with its horns"
.GSTR STR?105,"shopping in the marketplace. A horse-drawn chariot runs you down, trampling you beneath dozens of hooves"
.GSTR STR?106,"crossing the bridge over Razor Gorge between town and the Guild Hall. Unfortunately, you didn't quite make the bridge, and plummet onto nasty rocks below"
.GSTR STR?107,"praying in the town's temple. Angered by your sacrilegious violation of the ceremony, the priests skewer you with several handy sacred ornaments"
.GSTR STR?108,"You appear on a road in a far-off province called Cambridge. As you begin choking on the polluted air, a mugger stabs you in the back with a knife. A moment later, a wild-eyed motorist plows over you."
.GSTR STR?109,"write a magic spell into a spell book"
.GSTR STR?110,"cause something to give off light"
.GSTR STR?111,"open even locked or enchanted objects"
.GSTR STR?112,"mind probe"
.GSTR STR?113,"fly like a bird"
.GSTR STR?114,"The izyuk spell wears off. Unfortunately, this room of the maze has no floor."
.GSTR STR?115,"cause liquids to become dry"
.GSTR STR?116,"view the future"
.GSTR STR?117,"Borphee Infotaters Incorporated"
.GSTR STR?118,"SpellBound"
.GSTR STR?119,"SoftSpel"
.GSTR STR?120,"International Business Magic"
.GSTR STR?121,"Spell Shack"
.GSTR STR?122,"United Thaumaturgy"
.GSTR STR?123,"Smoothscroll Draughtsmen"
.GSTR STR?124,"Frobozz Magic Spell Company"
.GSTR STR?125,"Fibbsbozza"
.GSTR STR?126,"Magicland"
.GSTR STR?127,"Frobozz Magic Potion Company"
.GSTR STR?128,"You turn into a spot of moss"
.GSTR STR?129,"Your left ear turns into a carnivorous toad and devours your brain"
.GSTR STR?130,"Your entire body, starting from the toes and moving upward, turns into gelatin"
.GSTR STR?131,"Certain parts of your anatomy, including your pulmonary artery and adrenal gland, suddenly teleport seven feet to the west"
.GSTR STR?132,"You dream of being pursued through a dank cavern. Something is behind you, something horrible that you can't turn to face. It gets closer and closer, and you can feel its hot breath on your neck."
.GSTR STR?133,"You dream of an idyllic scene in the country, a picnic of wood-sprites and dryads."
.GSTR STR?134,"You dream of dancing penguins in formal dress. One has a particularly nice tuxedo and a cane with a gold top."
.GSTR STR?135,"You dream of a river, slow and muddy. Great grey hippopotami sport there, bellowing and splashing, and twitching their ears."
.GSTR STR?136,"You pass out from lack of food and water."
.GSTR STR?137,"a bit"
.GSTR STR?138,"somewhat"
.GSTR STR?139,"quite"
.GSTR STR?140,"very"
.GSTR STR?141,"extremely"
.GSTR STR?142,"incredibly"
.GSTR STR?143,"dangerously"
.GSTR STR?144,"This is your chamber in the Hall of the Guild of Enchanters, with a doorway to the west. A private chamber is a great privilege, especially for an Enchanter as young as yourself, but how many Enchanters can say they defeated the infamous Krill?"
.GSTR STR?145,"Your bed occupies the far corner of the room."
.GSTR STR?146,"Pacing back and forth on a perch in the corner is Belboz's prized pet parrot, native to the jungles of Miznia."
.GSTR STR?147,"Pollibar want a cracker!"
.GSTR STR?148,"Now where can I hide this key?"
.GSTR STR?149,"You should never have let down your mindshield, you doddering old Enchanter."
.GSTR STR?150,"This tea is cold! Get me another cup."
.GSTR STR?151,"Where did I leave my spectacles?"
.GSTR STR?152,"Belboz, the Circle is waiting for you."
.GSTR STR?153,"The personal journal of Belboz the Necromancer is lying here."
.GSTR STR?154,"This is the room of Frobar the Enchanter. There isn't much here in the way of furnishings, Frobar being a pretty dull kind of guy."
.GSTR STR?155,"Helistar is one of the foremost members of the Circle, and this is her private chamber."
.GSTR STR?156,"Among Helistar's possessions is a scroll, new and shiny."
.GSTR STR?157,"provide for your own resurrection"
.GSTR STR?158,"This is a sparsely furnished living area for the servants of the Guild. None are in sight; presumably they are out doing their daily errands. You can leave to the southwest."
.GSTR STR?159,"This is a large hall where the Guild's young apprentices live and study as they strive to achieve a seat on the Circle. You think back to the days when you occupied these quarters. The apprentices are gone, having accompanied Frobar into town to shop. You can leave to the southeast."
.GSTR STR?160,"Tacked to the doorframe of your room is a note, hurriedly scribbled on parchment."
.GSTR STR?161,"""I have taken the apprentices into town to shop for the Guild picnic. I tried rousing you, but you seemed deep asleep. By the way, have you seen Belboz anywhere? It's not like him to leave without telling someone -- but then, he's been acting pretty odd of late.
-- Frobar"""
.GSTR STR?162,"The first tenet states that Enchanters may never use their talents to aid evil. The second points out that an Enchanter's duty is to the Guild and to the Kingdom, not to the individual. Lesser tenets include rules for conducting votes at meetings, guidelines for passing dishes at Guild banquets, and penalties for revealing the Guild's secret handshake."
.GSTR STR?163,"This is the entrance lobby of the Guild Hall. Befitting the status and wealth of the Guild, the lobby is finished with polished Antharian marble, inlaid with intricate patterns of silver leaf. To the north is a wide arch, and smaller openings flank the area on the eastern and western sides, as well as the northeastern and northwestern corners. A narrow stair leads downward. Through another arch to the south, you can see the entrance steps and the main road into town."
.GSTR STR?164,"A tiny warning nymph appears, floating in the air next to your ear. ""There's no one else here,"" it reminds you, ""so you'd better not leave just now. Bye!"" It winks at you before vanishing."
.GSTR STR?165,"Affixed to the southern arch is an ornate brass receptacle, intended for use by messengers."
.GSTR STR?166,"An orange vial, labelled in tiny letters, is lying here."
.GSTR STR?167,". Unfortunately, coal gas is a poor substitute for oxygen."
.GSTR STR?168,"This is a study chamber for members of the Guild. Usually, there would be several elder Enchanters patiently training novices, but no one is here at the moment. The only exit is west.
Lying open on a stand in one corner is a heavy volume, probably a copy of the Encyclopedia Frobizzica."
.GSTR STR?169,"It would take days to read the entire encyclopedia. A better idea would be to read about specific persons or things."
.GSTR STR?170,"The servants have been lax lately, for a scroll is lying among the dust in the corner."
.GSTR STR?171,"cause plants to wilt"
.GSTR STR?172,"This is a closet for storage. The only exit is east."
.GSTR STR?173,"Among the provisions here is a small ochre-colored vial, closed and labelled with tiny lettering."
.GSTR STR?174,"The calendar is for the current year, 957 GUE, and bears many stunning pictures: the marble mines of Antharia, the sand dunes of the Kovalli Desert, ancient Fort Griffspotter, and the giant infotater factories of Borphee. A legend reads ""Best wishes for a leak-less year, from the Accardi Plumbers Guild."""
.GSTR STR?175,"You are in the basement of the Guild Hall. A steep, narrow stair leads upward from the southwest corner."
.GSTR STR?176,"bloodworm"
.GSTR STR?177,"brogmoid"
.GSTR STR?178,"dorn"
.GSTR STR?179,"dryad"
.GSTR STR?180,"grue"
.GSTR STR?181,"hellhound"
.GSTR STR?182,"kobold"
.GSTR STR?183,"nabiz"
.GSTR STR?184,"orc"
.GSTR STR?185,"rotgrub"
.GSTR STR?186,"surmin"
.GSTR STR?187,"yipple"
.GSTR STR?188,"At the far end of the cellar, draped in cobwebs, is a large trunk. At each corner of its lid is a button: a black button with a picture of a star, a gray button depicting the moon, a red button illustrated with a bloody knife, and a purple button engraved with a royal crown. In the center of the lid is a white button picturing a dove in flight."
.GSTR STR?189,"transport caster to someone else's location"
.GSTR STR?190,"
Suddenly, seemingly from nowhere, a bolt of lightning strikes you in the center of your chest..."
.GSTR STR?191,"You are on a path through a blighted forest. The trees are sickly, and there is no undergrowth at all. One tree here looks climbable. The path, which ends here, continues to the northeast."
.GSTR STR?192,"
The hellhound reaches you and tears you apart with its powerful teeth."
.GSTR STR?193,"
The snake begins wrapping itself around your torso, squeezing the life out of you..."
.GSTR STR?194,"To the west, a path enters the blighted woods, which stretch out of sight. A signpost stands beside another path leading north, and to the east is a wide meadow. At the base of the signpost is a slimy hole leading down."
.GSTR STR?195,"A tall fence blocks your way."
.GSTR STR?196,"This is a flat and featureless dirt path leading north and south."
.GSTR STR?197,"The forest is too dense to enter here."
.GSTR STR?198,"Kaboom!!!..."
.GSTR STR?199,"You have entered a shadowy pit full of nooks and crannies. From every direction you hear the hissing of vipers and the irregular clicking of giant beetles. Light spills down from above, and a small crack leads further downward into darkness."
.GSTR STR?200,"
Suddenly, the pit comes alive as dozens of vipers strike and thousands of giant beetles pour from their hiding places."
.GSTR STR?201,"This is a moist room whose walls are thick with moss and lichens. A small hole leads up and a rocky passage leads south."
.GSTR STR?202,"Uh, oh. They taste poisonous."
.GSTR STR?203,"
The locusts swarm over you and pick you clean to the bones."
.GSTR STR?204,"Undergrowth prevents travel along the bank."
.GSTR STR?205,"Oops! A section of the bank gives way and you tumble into the river. The current dashes you against the rocks."
.GSTR STR?206,"You fly across the river's surface. Suddenly, a downdraft plunges you into the swirling rapids!"
.GSTR STR?207,"A wall of water comes rushing down the river bed! You are smashed into jelly against the rocks."
.GSTR STR?208,"You are on the bed of an evaporated river. Fish splash helplessly in tiny puddles. The bed leads northwest and southeast. A climb up the southwest bank is possible. To the northeast is a dark cave, hollowed out by years of rushing water."
.GSTR STR?209,"The river bed to the northwest is a pool covered with algae and other scum. The bed to the southeast is slightly drier. The banks are too tall and steep to climb here."
.GSTR STR?210," Suddenly, powerful tentacles lash out and drag you under the surface."
.GSTR STR?211,"The river bed ends here at a steep cliff, where the river once plunged over a waterfall. Below the falls, in the distance, is a large sea, covered with haze. The bed continues northwest, but the banks here are unclimbable. Atop the southwestern bank stands a proud fortress."
.GSTR STR?212,"Brilliant move."
.GSTR STR?213,"Entering that swirling, turbulent pool looks very dangerous."
.GSTR STR?214,"Lying in the corner, in a pile of bat guano, is a scroll."
.GSTR STR?215,"turn caster into a bat"
.GSTR STR?216,"Unfortunately, this room of the maze has no floor."
.GSTR STR?217,"You are immediately set upon by alligators and piranhas."
.GSTR STR?218,"You are amongst the ruins of an ancient castle. A winding stairway leads up to a crumbling turret, and a dark passage leads downward. A path heads through the rubble to the west."
.GSTR STR?219,"This is the only turret of the castle still standing. It affords a marvelous view of a meadow to the west, and beyond that a twisted forest. To the north is a mighty fortress which stands atop a cliff where a turbulent river pours into an ocean. The ocean stretches out of sight to the east. A spiralling staircase leads downward."
.GSTR STR?220,"This is a large and well-equipped torture chamber. These were very popular in castles of several centuries ago, but are somewhat out of fashion now. There are exits to the west and north."
.GSTR STR?221,"Sitting near one of the torture devices is an indigo vial, labelled in tiny letters."
.GSTR STR?222,"This is the dark and dank dungeon of the ruined castle. There's probably a torture chamber nearby. You can go east, northeast, or upward. A small opening leads down as well."
.GSTR STR?223,"In the center of the room is a deep pit filled with countless bones, an indication of the brutality of dungeon life. There are exits south and southwest. High above you is a small opening in the ceiling."
.GSTR STR?224,"Do you really want to add your bones to the others in the pit?"
.GSTR STR?225,"The results are too hideous to describe."
.GSTR STR?226,"This is a wide road winding away to the east and west, perhaps a relic of the Great Underground Empire you read about in history class. A passage leads up to the north."
.GSTR STR?227,"You have reached a toll gate which spans the highway."
.GSTR STR?228,"The gate flies open, but the gnome immediately slams it shut again. ""Trying to gate crash, huh? We have an answer for scofflaws like you. Hey, Tholl!"" A troll lumbers out of the toll booth. ""This is Tholl the Toll Troll. Tholl, remove this cheat."" Tholl approaches and slices you neatly in half with his axe."
.GSTR STR?229,"As you enter, you stumble over a sleeping troll. With stunning reflexes, he grabs a battle axe and minces you."
.GSTR STR?230,"""You again! You've interrupted my nap for the last time! THOLL!!"" A huge troll lumbers out of the toll booth and tears you into itsy-bitsy pieces."
.GSTR STR?231,"A store lies to the south from this section of the east-west road. There is a sign over the entrance."
.GSTR STR?232,"This is an appliance store, apparently abandoned. The entrance lies to the north."
.GSTR STR?233,"The waxer short circuits in the water, electrocuting you and several nearby fishies."
.GSTR STR?234,"The road curves here, heading east and southwest."
.GSTR STR?235,"You are at the northeastern rim of a gigantic crater, the result of some ancient explosion. A wide underground highway, which ends at the crater's edge, leads northeast."
.GSTR STR?236,"This is a strip of land to the east of a gaping chasm. You might try jumping across, but I'd advise against it. A wide crater lies to the east."
.GSTR STR?237,"This is a featureless tunnel, narrowing to the west. To the east is a deep gorge, probably too wide to jump across."
.GSTR STR?238,"Too bad. Didn't quite make it."
.GSTR STR?239,"The tunnel turns a corner here. You could go either north or east."
.GSTR STR?240,"This is a tall room flooded with light from an unseen source. The only exit is south."
.GSTR STR?241,"Growing in the center of the room is a tree, thick with foliage. As though to disprove the ancient adage, every branch, bow, and twig has a zorkmid coin growing on it."
.GSTR STR?242,"This is a meandering north-south tunnel. A side passage leads to the southwest."
.GSTR STR?243,"The dragon comes to life again! He spews a tremendous gout of flame right at you!"
.GSTR STR?244,"You are at the entrance to Fort Griffspotter, which lies to the east. A trail leads along the river bank to the northwest."
.GSTR STR?245,"You are at the center of a level field inside the fort. Entrances to rooms around the perimeter lie in several directions."
.GSTR STR?246,"If you want to climb the flagpole, just say so."
.GSTR STR?247,"Once the armory for the fort, this room has been picked clean by vandals and soldiers of fortune. Exit north or northeast."
.GSTR STR?248,"This was a barracks for the battalion stationed in this fort. You could leave to the south, or to the southeast."
.GSTR STR?249,"This is a battlement with a view of a river to the north and an ocean to the east. Openings northwest, west, and southwest lead to other parts of the fort."
.GSTR STR?250,"A magnificent cast-iron cannon stands atop the battlement. Its wide, shallow barrel points toward the ocean, as though daring enemy ships to approach."
.GSTR STR?251,"augment the power of certain spells"
.GSTR STR?252,"This looks like the entrance to a run-down amusement park, no longer gaudy with lights and glitter. A sign above the entrance proclaims ""Welcome to Bozbarland - The Entertainment Capital of the Empire."" The park lies to the west and a tunnel leads northeast."
.GSTR STR?253,"A gnome, dressed in flashy attire, stands here looking impatient."
.GSTR STR?254,"You are at the eastern end of a long midway. The park entrance lies to the east, and rides lie to the north and south."
.GSTR STR?255,"Entrances lead north, west and south, and the rest of the midway lies to the east."
.GSTR STR?256,"You feel a cold breath on your shoulder. You whirl around, but there is nothing there."
.GSTR STR?257,"Something slimy brushes across your face."
.GSTR STR?258,"An unseen door creaks slowly open."
.GSTR STR?259,"Something slithers across your foot."
.GSTR STR?260,"You feel a strange shiver in your chest, almost as though something had passed through your body."
.GSTR STR?261,"From several directions comes a sound like rattling chains."
.GSTR STR?262,"A long silence is suddenly broken by a piercing scream!"
.GSTR STR?263,"A glowing apparition sails by, briefly illuminating a spiral staircase and wooden balcony."
.GSTR STR?264,"A deep-throated chuckle echoes about the room."
.GSTR STR?265,"A roller coaster car zooms past, almost knocking you over!"
.GSTR STR?266,"Bad time to leave the log boat. The flume is fast and rough."
.GSTR STR?267,"Dumb idea. Your body ricochets off several wooden supports as it plummets to the ground."
.GSTR STR?268,"This is a huge tent filled with hectic noise, blinking lights, and the smell of frying food. Near the exit is a game booth lined with prizes. The concept of the game seems to be bashing cute little mechanical bunnies with a rubber ball as they hop around a little artificial meadow."
.GSTR STR?269,"A hawker stands within the booth, studying you through half-closed eyes."
.GSTR STR?270,"You appear in an amusement park game booth. The point of the game is to pierce balloons with darts. Speaking of points, you are suddenly pierced by 37 flying darts."
.GSTR STR?271,"You miss the rabbit by a mile!"
.GSTR STR?272,"Your throw is way off!"
.GSTR STR?273,"The rabbit hops obliviously as your throw sails far off target!"
.GSTR STR?274,"bring life to inanimate objects"
.GSTR STR?275,"This is a large, plush room, slightly neglected."
.GSTR STR?276,"Standing on one side of the room is an odd machine, with a three-section display and a large lever on the side."
.GSTR STR?277,"Ping! Ping! Ping! Ping! Ping! Ping!
An unbelievable torrent of zorkmid coins pours out of the machine -- far more than the machine could possibly contain! You are buried and crushed under the huge mass of coins."
.GSTR STR?278,"pot of gold"
.GSTR STR?279,"clove of garlic"
.GSTR STR?280,"noisome stew"
.GSTR STR?281,"hot pepper sandwich"
.GSTR STR?282,"The underground road ends here. A hovel, carved into the rock, lies to the east. To the north, wide marble stairs lead upward."
.GSTR STR?283,"This is a small underground hovel. On the far wall is a small fireplace, long unused."
.GSTR STR?284,"This is a large entrance hall, paved with polished stone. Large doorways lead north and south."
.GSTR STR?285,"Standing in the center of the hall is a life-sized statue. An inscription at the base is in a familiar language."
.GSTR STR?286,"There is a marble statue here, in a strikingly life-like pose of pompous bellicosity."
.GSTR STR?287,"""I, Duncanthrax, King of Quendor and all its subjugated outlands, invite you to sample the delights of my Glass Labyrinth."""
.GSTR STR?288,"Through a breathtaking archway of glass to the east is an area glistening with reflected light. Another exit leads south."
.GSTR STR?289,"Please use compass directions here."
.GSTR STR?290,"Unfortunately, this section of the glass maze has no floor."
.GSTR STR?291,"The maze opens here onto a tiny outdoor plateau, completely surrounded by towering cliffs. The only way out is back through the dazzling archway of glass to the west.
Near the glass arch is a small rectangular brick structure. The center of the structure is a hole about a foot wide, leading down into darkness."
.GSTR STR?292,"You couldn't even fly over these cliffs."
.GSTR STR?293,"The opening in the brick structure is too small for humans or even bats."
.GSTR STR?294,"exorcise an inhabiting presence"
.GSTR STR?295,"A somewhat splattered corpse is sprawled across the floor."
.GSTR STR?296,"The corpse comes to life just long enough to fry you."
.GSTR STR?297,"The dorn beast fries your brain with its hypnotic gaze and begins secreting digestive juices."
.GSTR STR?298,"The walls and ceiling of this room are covered with soot and held up by timbers which don't look very sturdy. A winding tunnel leads north. From the east comes a sulfurous odor."
.GSTR STR?299,"Part of the ceiling collapses onto you."
.GSTR STR?300,"This is obviously the heart of a large coal mine, illuminated by a wall-mounted lamp. The bottom of a metal coal chute is visible at the north end of the room. Another chute continues downward at the southern end. A large coal bin is overflowing, and the floor is completely covered with lumps of coal. A passage leads east, but a western passage is blocked by rubble."
.GSTR STR?301,"Finally, the shortage of oxygen gets to you."
.GSTR STR?302,"Although your clothes are much cleaner and less torn, the stranger looks virtually like your own twin!"
.GSTR STR?303,"On the eastern wall is a heavy door with a dial set into it. There is a sign on the door. Another exit leads west, and a wall-mounted lamp provides illumination. The floor is deeply covered with lumps of coal."
.GSTR STR?304,"""See the foreman for the current combination.
(signed)
Ernie Flathead, Manager
GUE Coal Mine #502"""
.GSTR STR?305,"The door swings open as a loud alarm sounds. Laser beams criss-cross the room, glinting off the blades of the thousand flying daggers. A hundred well-armed and vicious kobolds rush into the room, swinging battle axes."
.GSTR STR?306,"Lying in one corner is a coil of rope."
.GSTR STR?307,"You are at the bottom of an air shaft which looks climbable. A heavy door leads west."
.GSTR STR?308,"You are deep inside a large coal mine, at the top of an air shaft. You could descend into the shaft; passages in many directions lead further into the mine."
.GSTR STR?309,"Lying near the mouth of one passage is a wooden timber, probably left over from the construction of the mine."
.GSTR STR?310,"You are in a winding tunnel in a large coal mine. Passages lead off in many directions."
.GSTR STR?311,"You are at the western end of the coal mine. A metal chute leads downward."
.GSTR STR?312,"This small room has a slanted roof, presumably due to the coal chute which passes overhead. You can reenter the chute to the east."
.GSTR STR?313,"shield a mind from an evil spirit"
.GSTR STR?314,"travel temporally"
.GSTR STR?315,"This is a narrow beach between a small cove to the east and tall cliffs to the west. The shore curves to the southeast and northeast. A metal chute leads up into the cliff."
.GSTR STR?316,"There's a tall cliff there."
.GSTR STR?317,"Entering the ocean is certain death."
.GSTR STR?318,"Certain death."
.GSTR STR?319,"This is the floor of a cove off the turbulent ocean to the east. The ground slopes upward to the north, west, and south. Light filters down from the surface of the water."
.GSTR STR?320,"You run out of air and drown."
.GSTR STR?321,"Nestled among some coral is a clump of stunningly beautiful spenseweeds, waving slowly in the currents of the lagoon."
.GSTR STR?322,"
""!!! FROBOZZ MAGIC GRUE REPELLENT !!!
Instructions for use: Apply liberally to creature to be protected. Duration of effect is unpredictable. Use only in place of death!
(No warranty expressed or implied)"""
.GSTR STR?323,"The river is too wide to cross."
.GSTR STR?324,"Your attack is somewhat quixotic as the vines wrap around and tear you to pieces."
.GSTR STR?325,"The vines encircle you and tear you limb from limb."
.GSTR STR?326,"This is a low, shadowy cave leading east to west. The rocky walls are scarred with deep claw marks."
.GSTR STR?327,"The grues lurk toward you! Your last sight is a hundred slavering fangs."
.GSTR STR?328,"Suddenly, you are set upon by countless slavering fangs!"
.GSTR STR?329,"This cavern is of extraordinary size, but nevertheless crowded with powerful-looking machinery. You recognize a breeder for producing millions of the mutated grues you just passed. Other devices seem designed to aid the forces of evil while sapping magic powers of Enchanters everywhere.
At the far end of the cavern are three closed doors: a black marble door leading to the northwest, a shiny silver door heading due west, and a door of bleached white wood to the southwest."
.GSTR STR?330,"A field of energy leaps forth, reducing you to a pile of smoldering ash."
.GSTR STR?331,"The very walls of this room seem to soak up all light, so it seems as though you're floating in the center of an infinite void."
.GSTR STR?332,"This room is filled with blinding light that stabs at your eyes."
.GSTR STR?333,"An acrid stench fills this small room, which is obviously a control center for the evil experiments in the cavern outside."
.GSTR STR?334,"An invisible force stops you."
.GSTR STR?335,"Hanging on the wall is a heavy dagger, its handle encrusted with diamonds."
.ENDI

2
syntax.zap Normal file
View file

@ -0,0 +1,2 @@
.ENDI

View file

@ -2,6 +2,8 @@
SORCERER
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
<BUZZ AGAIN G OOPS>
<BUZZ A AN THE IS ARE AM AND OF THEN ALL ONE BUT EXCEPT \. \, \" YES NO Y
PRY PLEASE HERE SOME>
@ -69,8 +71,8 @@
;"subtitle real verbs"
<SYNTAX AGAIN = V-AGAIN>
<SYNONYM AGAIN G>
;<SYNTAX AGAIN = V-AGAIN>
;<SYNONYM AGAIN G>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-REPLY>

3371
verbs.zap Normal file

File diff suppressed because it is too large Load diff

View file

@ -21,7 +21,7 @@
<ROUTINE V-SUPER-BRIEF ()
<SETG SUPER-BRIEF T>
<TELL "Super-brief descriptions." CR>>
<TELL "Superbrief descriptions." CR>>
<ROUTINE V-DIAGNOSE ("AUX" (BOTH <>))
<COND (<L? ,AWAKE 0>
@ -231,7 +231,7 @@ Release ">
;"subtitle real verbs"
<ROUTINE V-AGAIN ("AUX" OBJ)
;<ROUTINE V-AGAIN ("AUX" OBJ)
<COND (<NOT ,L-PRSA>
<ANYMORE>)
(<AND <NOT <EQUAL? ,HERE ,LAST-PSEUDO-LOC>>
@ -1634,7 +1634,7 @@ refreshing your mind. Time passes as you snore blissfully." CR>)>
(T
<TELL "There's nothing to swim in!" CR>)>>
<ROUTINE PRE-TAKE ()
<ROUTINE PRE-TAKE ("AUX" (L <LOC ,PRSO>))
<COND (,FWEEPED
<BATTY>)
(<IN? ,PRSO ,PROTAGONIST>
@ -1643,19 +1643,21 @@ refreshing your mind. Time passes as you snore blissfully." CR>)>
(T
<TELL "You already have it." CR>)>)
(<AND <FSET? ,PRSO ,SPELLBIT>
<FSET? <LOC ,PRSO> ,SCROLLBIT>
<ACCESSIBLE? <LOC ,PRSO>>>
<PERFORM ,V?TAKE <LOC ,PRSO>>
.L
<FSET? .L ,SCROLLBIT>
<ACCESSIBLE? .L>>
<PERFORM ,V?TAKE .L>
<RTRUE>)
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
(<AND .L
<FSET? .L ,CONTBIT>
<NOT <FSET? .L ,OPENBIT>>>
<TELL "You can't reach that." CR>
<RTRUE>)
(,PRSI
<COND (<EQUAL? ,PRSO ,ME>
<PERFORM ,V?DROP ,PRSI>
<RTRUE>)
(<AND <NOT <EQUAL? ,PRSI <LOC ,PRSO>>>
(<AND <NOT <EQUAL? ,PRSI .L>>
<NOT <EQUAL? ,PRSI ,BELBOZ-DESK>>>
<TELL "But">
<ARTICLE ,PRSO T>
@ -1949,30 +1951,26 @@ incapable of understanding or initiating any." CR>
;"subtitle magic-related verbs"
<ROUTINE PRE-CAST ("AUX" MEM? SPELL SCROLL)
<SET SPELL
<COND (<VERB? GNUSTO> ,GNUSTO-SPELL)
(<VERB? FROTZ> ,FROTZ-SPELL)
(<VERB? REZROV> ,REZROV-SPELL)
(<VERB? IZYUK> ,IZYUK-SPELL)
(<VERB? AIMFIZ> ,AIMFIZ-SPELL)
(<VERB? FWEEP> ,FWEEP-SPELL)
(<VERB? SWANZO> ,SWANZO-SPELL)
(<VERB? GOLMAC> ,GOLMAC-SPELL)
(<VERB? VARDIK> ,VARDIK-SPELL)
(<VERB? PULVER> ,PULVER-SPELL)
(<VERB? MEEF> ,MEEF-SPELL)
(<VERB? VEZZA> ,VEZZA-SPELL)
(<VERB? GASPAR> ,GASPAR-SPELL)
(<VERB? YOMIN> ,YOMIN-SPELL)
(<VERB? YONK> ,YONK-SPELL)
(<VERB? MALYON> ,MALYON-SPELL)
(T
<TELL "Bug #55" CR>
<RTRUE>)>>
<ROUTINE PRE-CAST ("AUX" SPELL SCROLL)
<COND (,PERFORMING-SPELL
<SETG PERFORMING-SPELL <>>
<RFALSE>)>
<SET SPELL <COND (<VERB? GNUSTO> ,GNUSTO-SPELL)
(<VERB? FROTZ> ,FROTZ-SPELL)
(<VERB? REZROV> ,REZROV-SPELL)
(<VERB? IZYUK> ,IZYUK-SPELL)
(<VERB? AIMFIZ> ,AIMFIZ-SPELL)
(<VERB? FWEEP> ,FWEEP-SPELL)
(<VERB? SWANZO> ,SWANZO-SPELL)
(<VERB? GOLMAC> ,GOLMAC-SPELL)
(<VERB? VARDIK> ,VARDIK-SPELL)
(<VERB? PULVER> ,PULVER-SPELL)
(<VERB? MEEF> ,MEEF-SPELL)
(<VERB? VEZZA> ,VEZZA-SPELL)
(<VERB? GASPAR> ,GASPAR-SPELL)
(<VERB? YOMIN> ,YOMIN-SPELL)
(<VERB? YONK> ,YONK-SPELL)
(<VERB? MALYON> ,MALYON-SPELL)>>
<COND (<OR <EQUAL? .SPELL ,PRSO>
<AND <EQUAL? <LOC .SPELL> ,PRSO>
<NOT <EQUAL? <LOC .SPELL> ,SPELL-BOOK>>>>
@ -1980,8 +1978,10 @@ incapable of understanding or initiating any." CR>
"As you must remember from Thaumaturgy 101, you cannot cast a spell upon
itself, or upon the scroll it is written on." CR>
<RTRUE>)
(<FSET? <LOC .SPELL> ,MUNGBIT>
<TELL "The spell no longer readable." CR>
(<AND <FSET? <LOC .SPELL> ,MUNGBIT>
<NOT <ALWAYS-MEMORIZED .SPELL>>
<EQUAL? <GETP .SPELL ,P?COUNT> 0>>
<TELL "The spell is no longer readable." CR>
<RTRUE>)
(<FSET? <LOC .SPELL> ,SCROLLBIT>
<SET SCROLL <LOC .SPELL>>
@ -1991,33 +1991,31 @@ itself, or upon the scroll it is written on." CR>
<RFALSE>)>
<MOVE .SCROLL ,DIAL> ;"in case moby-search wants it"
<TELL
"As you cast the spell, the " D .SCROLL " vanishes!" CR>
"As you cast the spell, the " D .SCROLL " vanishes!" CR CR>
<PUTP .SPELL ,P?COUNT 1>)
(<OR <FSET? .SPELL ,TOUCHBIT>
<IN? .SCROLL ,HERE>>
<TELL
"You don't have the " D .SPELL " memorized, nor do you have the scroll
on which it is written." CR>
"You don't have the " D .SPELL " memorized, nor do you have
the scroll on which it is written." CR>
<RTRUE>)
(T
<TELL
"The " D .SPELL " is not committed to memory, and you haven't seen any scroll
on which it is written." CR>
<RTRUE>)>)>
<SET MEM? <GETP .SPELL ,P?COUNT>>
<COND (,FWEEPED
<TELL
"When you attempt to incant the " D .SPELL ", all that comes out is
a high-pitched squeak!" CR>)
(<EQUAL? .SPELL ,GNUSTO-SPELL ,REZROV-SPELL ,FROTZ-SPELL>
<RFALSE> ;"Always memorized")
(<EQUAL? .MEM? 0>
<TELL
"You don't have the " D .SPELL " committed to memory!" CR>
"When you attempt to incant the " D .SPELL
", all that comes out is a high-pitched squeak!" CR>)
(<ALWAYS-MEMORIZED .SPELL>
<RFALSE>)
(<EQUAL? <GETP .SPELL ,P?COUNT> 0>
<THIS-IS-IT .SPELL>
<RTRUE>)
<TELL
"You don't have the " D .SPELL " committed to memory!" CR>)
(T
<PUTP .SPELL ,P?COUNT <- .MEM? 1>>
<PUTP .SPELL ,P?COUNT <- <GETP .SPELL ,P?COUNT> 1>>
<SETG SPELL-ROOM <+ ,SPELL-ROOM 1>>
<RFALSE>)>>
@ -3013,7 +3011,7 @@ drop dead again." CR>
<SETG P-IT-OBJECT .OBJ>
;<SETG P-IT-LOC ,HERE>>
<ROUTINE ACCESSIBLE? (OBJ "AUX" (L <LOC .OBJ>)) ;"can player TOUCH object?"
;<ROUTINE ACCESSIBLE? (OBJ "AUX" (L <LOC .OBJ>)) ;"can player TOUCH object?"
;"revised 5/2/84 by SEM and SWG"
<COND (<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
@ -3049,7 +3047,7 @@ drop dead again." CR>
(T
<RFALSE>)>>
<ROUTINE META-LOC (OBJ)
;<ROUTINE META-LOC (OBJ)
<REPEAT ()
<COND (<NOT .OBJ>
<RFALSE>)
@ -3264,7 +3262,7 @@ drop dead again." CR>
<ROUTINE POOR-LISTENERS ()
<TELL "Sleeping gnomes make poor listeners." CR>>
<ROUTINE ANYMORE ()
;<ROUTINE ANYMORE ()
<TELL "You can't see that anymore." CR>>
<ROUTINE SETTLE-ONTO-BRANCH ()