Revision 13 (Original Source)

This commit is contained in:
historicalsource 2019-04-13 21:14:02 -04:00
commit daad2bd710
15 changed files with 14107 additions and 0 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
# sorcerer

1704
belboz.zil Normal file

File diff suppressed because it is too large Load Diff

1137
coal.zil Normal file

File diff suppressed because it is too large Load Diff

888
end.zil Normal file
View File

@ -0,0 +1,888 @@
"END for
SORCERER
(c) Copyright 1984 by Infocom, Inc. All Rights Reserved"
<ROOM COVE
(IN ROOMS)
(DESC "Lagoon Shore")
(LDESC
"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.")
(NORTH "There's a tall cliff there.")
(NE TO OCEAN-NORTH)
(EAST TO LAGOON)
(SE TO OCEAN-SOUTH)
(SOUTH "There's a tall cliff there.")
(SW "There's a tall cliff there.")
(WEST "There's a tall cliff there.")
(NW "There's a tall cliff there.")
(IN TO LAGOON)
(UP PER CHUTE-ENTER-F)
(FLAGS RLANDBIT ONBIT)
(GLOBAL LOWER-CHUTE LAGOON-OBJECT WATER BEACH)
(PSEUDO "CLIFF" CLIFF-PSEUDO "CLIFFS" CLIFF-PSEUDO)
(ACTION COVE-F)>
<GLOBAL POOFED <>>
<ROUTINE COVE-F (RARG "AUX" (X <>))
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,COVE ,TOUCHBIT>>>
<COND (,BOOK-BELONGS-IN-LAGOON
<MOVE ,SPELL-BOOK ,LAGOON-FLOOR>)>
<PUT ,VEZZAS 6 0>
<SETG SCORE <+ ,SCORE 20>>
<DISABLE <INT I-SUFFOCATE>>
<DISABLE <INT I-YOUNGER-SELF>>
<DISABLE <INT I-OLDER-SELF>>
<COND (<AND ,GOLMACKED
<NOT ,COMBO-REVEALED>>
<POOF>)
(<NOT ,GOLMACKED>
<COND (<HELD? ,ROPE>
<MOVE ,ROPE ,DIAL>
<SET X T>)>
<COND (<HELD? ,BEAM>
<MOVE ,BEAM ,DIAL>
<SET X T>)>
<COND (<HELD? ,VARDIK-SCROLL>
<MOVE ,VARDIK-SCROLL ,DIAL>
<SET X T>)>
<COND (<HELD? ,GOLMAC-SCROLL>
<MOVE ,GOLMAC-SCROLL ,DIAL>
<SET X T>)>
<COND (.X
<TELL
"As you slide down the chute, some of your possessions suddenly vanish! ">)>)>
<TELL
"You fly out of the chute and land just at the edge of some water..." CR CR>)>>
<ROUTINE POOF ()
<SETG POOFED T>
<TELL
"Suddenly, without the slightest fanfare, you cease to exist!" CR>
<FINISH>>
<ROOM OCEAN-NORTH
(IN ROOMS)
(SYNONYM DAM FCD)
(ADJECTIVE FLOOD CONTRO)
(DESC "Ocean Shore North")
(NORTH TO MOUTH-OF-RIVER)
(NE "Entering the ocean is certain death.")
(EAST "Entering the ocean is certain death.")
(SE "Entering the ocean is certain death.")
(SOUTH TO LAGOON)
(SW TO COVE)
(WEST "There's a tall cliff there.")
(NW "There's a tall cliff there.")
(IN TO LAGOON)
(FLAGS RLANDBIT ONBIT)
(PSEUDO "CLIFF" CLIFF-PSEUDO "CLIFFS" CLIFF-PSEUDO)
(GLOBAL LAGOON-OBJECT OCEAN BEACH WATER)
(ACTION OCEAN-SHORE-F)>
<ROOM OCEAN-SOUTH
(IN ROOMS)
(SYNONYM MUSEUM)
(ADJECTIVE ROYAL)
(DESC "Ocean Shore South")
(NORTH TO LAGOON)
(NE "Entering the ocean is certain death.")
(EAST "Entering the ocean is certain death.")
(SE "Entering the ocean is certain death.")
(SOUTH "There's a tall cliff there.")
(SW "There's a tall cliff there.")
(WEST "There's a tall cliff there.")
(NW TO COVE)
(IN TO LAGOON)
(FLAGS RLANDBIT ONBIT)
(PSEUDO "CLIFF" CLIFF-PSEUDO "CLIFFS" CLIFF-PSEUDO)
(GLOBAL LAGOON-OBJECT OCEAN WATER BEACH)
(ACTION OCEAN-SHORE-F)>
<ROUTINE OCEAN-SHORE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are ">
<COND (,FLYING
<TELL "floating above">)
(T
<TELL "standing on">)>
<TELL
" 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. ">
<COND (<EQUAL? ,HERE ,OCEAN-NORTH>
<TELL
"You could go north along the shore; the edge of a small cove lies to
the southwest.">)
(T
<TELL
"The beach to the south is blocked by a tall cliff; a lagoon shore
lies to the northwest.">)>
<CRLF>)>>
<OBJECT BEACH
(IN LOCAL-GLOBALS)
(DESC "beach")
(SYNONYM BEACH SHORE SAND)
(ADJECTIVE CURVED SANDY NARROW)
(FLAGS NDESCBIT)>
<OBJECT OCEAN
(IN LOCAL-GLOBALS)
(DESC "ocean")
(SYNONYM OCEAN WATERS)
(ADJECTIVE MIGHTY FLATHE TURBUL)
(FLAGS VOWELBIT NDESCBIT)
(ACTION OCEAN-F)>
<ROUTINE OCEAN-F ("AUX" (X 0))
<COND (<EQUAL? ,HERE ,GUN-EMPLACEMENT ,TURRET ,TOP-OF-FALLS>
<TELL "The ocean lies far below you." CR>)
(<VERB? PULVER>
<SETG PERFORMING-SPELL T>
<PERFORM ,V?PULVER ,LAGOON-OBJECT>
<RTRUE>)
(<VERB? DRINK DRINK-FROM>
<PERFORM ,V?DRINK ,WATER>
<RTRUE>)
(<VERB? EXAMINE>
<TELL "It streches east as far as the eye can see." CR>)
(<VERB? RESEARCH>
<TELL
"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." CR>)
(<AND <VERB? PUT>
<EQUAL? ,OCEAN ,PRSI>>
<MOVE ,PRSO ,DIAL>
<SPLASH>)
(<VERB? THROUGH>
<JIGS-UP "Certain death.">)>>
<ROUTINE CLIFF-PSEUDO ()
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<COND (,FLYING
<TELL "The cliff is too high to fly over." CR>)
(T
<TELL "The cliff is unclimbable." CR>)>)>>
<OBJECT LAGOON-OBJECT
(IN LOCAL-GLOBALS)
(DESC "lagoon")
(SYNONYM LAGOON INLET COVE)
(ADJECTIVE SMALL CALM)
(FLAGS NDESCBIT)
(ACTION LAGOON-OBJECT-F)>
<ROUTINE LAGOON-OBJECT-F ()
<COND (<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,LAGOON ,LAGOON-FLOOR>
<LOOK-AROUND-YOU>)
(T
<GOTO ,LAGOON>)>)
(<AND <VERB? PUT>
<NOT <EQUAL? ,HERE ,LAGOON-FLOOR>>
<EQUAL? ,PRSI ,LAGOON-OBJECT>>
<MOVE ,PRSO ,LAGOON-FLOOR>
<COND (<OR <FSET? ,PRSO ,SCROLLBIT>
<EQUAL? ,PRSO ,SPELL-BOOK>>
<FSET ,PRSO ,MUNGBIT>)>
<SPLASH>)
(<VERB? EXAMINE>
<TELL "The water looks calm and hospitable." CR>)
(<VERB? DRINK DRINK-FROM>
<PERFORM ,V?DRINK ,WATER>
<RTRUE>)
(<VERB? PULVER>
<TELL
"The water level seems to drop an inch or two, for a moment." CR>)>>
<ROOM LAGOON
(IN ROOMS)
(DESC "Surface of Lagoon")
(NORTH TO OCEAN-NORTH)
(OUT TO COVE)
(NW TO COVE)
(WEST TO COVE)
(SW TO COVE)
(SOUTH TO OCEAN-SOUTH)
(SE "Entering the ocean is certain death.")
(EAST "Entering the ocean is certain death.")
(NE "Entering the ocean is certain death.")
(DOWN PER LAGOON-FLOOR-ENTER-F)
(FLAGS ONBIT)
(GLOBAL LAGOON-OBJECT OCEAN WATER)
(PSEUDO "SAND" SAND-PSEUDO)
(ACTION LAGOON-F)>
<ROUTINE LAGOON-F (RARG "AUX" X)
<COND (<EQUAL? .RARG ,M-ENTER>
<SET X <FIRST? ,PROTAGONIST>>
<REPEAT ()
<COND (.X
<COND (<OR <FSET? .X ,SCROLLBIT>
<EQUAL? .X ,SPELL-BOOK>>
<FSET .X ,MUNGBIT>)>
<SET X <NEXT? .X>>)
(T
<RETURN>)>>)
(<EQUAL? .RARG ,M-LOOK>
<TELL "You are ">
<COND (,FLYING
<TELL "flying over">)
(T
<TELL "swimming on">)>
<TELL
" the surface of a calm lagoon, whose sandy floor is visible below.
A curved beach surrounds this inlet on its western side." CR>)>>
<ROUTINE LAGOON-FLOOR-ENTER-F ()
<COND (,FLYING
<WHILE-FLYING>
<RFALSE>)
(T
,LAGOON-FLOOR)>>
<ROUTINE SAND-PSEUDO ()
<COND (<EQUAL? ,PSEUDO-OBJECT ,PRSO>
<SETG PERFORMING-SPELL T>
<PERFORM ,PRSA ,GROUND ,PRSI>
<RTRUE>)
(T
<SETG PERFORMING-SPELL T>
<PERFORM ,PRSA ,PRSO ,GROUND>
<RTRUE>)>>
<ROOM LAGOON-FLOOR
(IN ROOMS)
(DESC "Lagoon Floor")
(LDESC
"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.")
(NORTH TO OCEAN-NORTH)
(NW TO COVE)
(WEST TO COVE)
(SW TO COVE)
(SOUTH TO OCEAN-SOUTH)
(SE "Entering the ocean is certain death.")
(EAST "Entering the ocean is certain death.")
(NE "Entering the ocean is certain death.")
(UP TO LAGOON)
(FLAGS ONBIT)
(GLOBAL LAGOON-OBJECT OCEAN WATER)
(PSEUDO "CORAL" CORAL-PSEUDO "SAND" SAND-PSEUDO)
(ACTION LAGOON-FLOOR-F)>
<GLOBAL UNDERWATER-COUNTER 0>
<ROUTINE LAGOON-FLOOR-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<ENABLE <QUEUE I-DROWN -1>>
<RFALSE>)>>
<ROUTINE I-DROWN ()
<COND (<EQUAL? ,HERE ,LAGOON-FLOOR>
<COND (,VILSTUED
<RFALSE>)>
<SETG UNDERWATER-COUNTER <+ ,UNDERWATER-COUNTER 1>>
<COND (<EQUAL? ,UNDERWATER-COUNTER 3>
<TELL CR
"You won't be able to hold your breath much longer." CR>)
(<EQUAL? ,UNDERWATER-COUNTER 4>
<TELL CR "Better get some fresh air soon!" CR>)
(<EQUAL? ,UNDERWATER-COUNTER 5>
<SETG UNDERWATER-COUNTER 0>
<CRLF>
<JIGS-UP "You run out of air and drown.">)
(T
<RFALSE>)>)
(T
<SETG UNDERWATER-COUNTER 0>
<DISABLE <INT I-DROWN>>
<RFALSE>)>>
<ROUTINE CORAL-PSEUDO ()
<COND (<AND <VERB? EXAMINE>
<IN? ,HERE ,SPENSEWEEDS>>
<TELL "The coral is covered by swaying spenseweeds." CR>)>>
<OBJECT SPENSEWEEDS
(IN LAGOON-FLOOR)
(DESC "spenseweeds")
(LDESC
"Nestled among some coral is a clump of stunningly beautiful spenseweeds,
waving slowly in the currents of the lagoon.")
(SYNONYM CLUMP SPENSE WEEDS WEED)
(ADJECTIVE SEA STUNNI BEAUTI)
(FLAGS NARTICLEBIT)
(ACTION SPENSEWEEDS-F)>
<ROUTINE SPENSEWEEDS-F ()
<COND (<VERB? MEEF>
<MOVE ,SPENSEWEEDS ,DIAL>
<MOVE ,CRATE ,HERE>
<THIS-IS-IT ,CRATE>
<TELL
"The spenseweeds wilt away, revealing a wooden crate labelled with
black lettering." CR>)
(<VERB? LOOK-UNDER>
<TELL
"That's difficult -- they're well rooted in the coral." CR>)>>
<OBJECT CRATE
(IN DIAL)
(DESC "wooden crate")
(SYNONYM LETTER CRATE LABEL)
(ADJECTIVE WOOD WOODEN BLACK STENCI)
(SIZE 45)
(CAPACITY 40)
(FLAGS TAKEBIT CONTBIT READBIT SEARCHBIT)
(ACTION CRATE-F)>
<ROUTINE CRATE-F ()
<COND (<AND <VERB? OPEN REZROV>
<NOT ,CRATE-POINT>>
<SETG CRATE-POINT T>
<SETG SCORE <+ ,SCORE 15>>
<RFALSE>)
(<VERB? READ>
<FIXED-FONT-ON>
<TELL
"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" CR>
<FIXED-FONT-OFF>)>>
<GLOBAL CRATE-POINT <>>
<OBJECT GRUE-SUIT
(IN CRATE)
(DESC "grue suit")
(SYNONYM SUIT)
(ADJECTIVE GRUE)
(FLAGS WEARBIT TAKEBIT)
(SIZE 15)>
<OBJECT BRASS-LANTERN
(IN CRATE)
(DESC "brass lantern")
(SYNONYM LANTERN LAMP)
(ADJECTIVE BRASS BATTER POWERE)
(FLAGS TAKEBIT LIGHTBIT)
(SIZE 15)
(ACTION BRASS-LANTERN-F)>
<ROUTINE BRASS-LANTERN-F ()
<COND (<VERB? EXAMINE>
<TELL
"It is a battery-powered lantern like those used by adventurers
and explorers. It is currently ">
<COND (<FSET? ,BRASS-LANTERN ,ONBIT>
<TELL "on">)
(T
<TELL "off">)>
<TELL "." CR>)>>
<OBJECT GRUE-REPELLENT
(IN CRATE)
(SYNONYM REPELLENT CAN)
(ADJECTIVE GRUE MAGIC)
(DESC "can of grue repellent")
(FLAGS TAKEBIT READBIT)
(ACTION GRUE-REPELLENT-F)
(TEXT
"|
\"!!! 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)\"")>
<ROUTINE GRUE-REPELLENT-F ()
<COND (<VERB? SHAKE>
<COND (,SPRAY-USED?
<TELL "The can seems empty." CR>)
(T
<TELL "There is a sloshing sound from inside." CR>)>)
(<AND <VERB? SPRAY PUT-ON>
<EQUAL? ,PRSO ,GRUE-REPELLENT>>
<COND (,SPRAY-USED?
<TELL "The repellent is all gone." CR>)
(<NOT ,PRSI>
<SETG SPRAY-USED? T>
<TELL
"The spray stinks amazingly for a few moments, then drifts away." CR>)
(T
<COND (<EQUAL? ,PRSI ,ME>
<ENABLE <QUEUE I-SPRAY 5>>
<SETG SPRAYED? T>)>
<SETG SPRAY-USED? T>
<TELL
"The spray smells like a mixture of old socks and burning rubber. If
I were a grue I'd sure stay clear!" CR>)>)>>
<GLOBAL SPRAY-USED? <>>
<GLOBAL SPRAYED? <>>
<ROUTINE I-SPRAY ()
<SETG SPRAYED? <>>
<TELL CR "That horrible smell is much less pungent now." CR>>
<ROOM MOUTH-OF-RIVER
(IN ROOMS)
(DESC "Mouth of River")
(NORTH "The river is too wide to cross.")
(NE "Entering the ocean is certain death.")
(EAST "Entering the ocean is certain death.")
(SE "Entering the ocean is certain death.")
(SOUTH TO OCEAN-NORTH)
(SW "There's a tall cliff there.")
(WEST PER VINES-EXIT-F)
(NW "There's a tall cliff there.")
(FLAGS RLANDBIT ONBIT)
(GLOBAL WATER OCEAN RIVER FORT CAVE WATERFALL)
(PSEUDO "CLIFF" CLIFF-PSEUDO "CLIFFS" CLIFF-PSEUDO)
(ACTION MOUTH-OF-RIVER-F)>
<ROUTINE MOUTH-OF-RIVER-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"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 ">
<COND (<IN? ,VINES ,HERE>
<TELL
"at the base of the cliff to the west is blocked by writhing green vines">)
(T
<TELL "lies to the west">)>
<TELL "." CR>)
(<AND <EQUAL? .RARG ,M-END>
<IN? ,VINES ,HERE>
<PROB 15>>
<CRLF>
<TELL
"Suddenly you realize that, without really thinking about it, you were ">
<COND (,FLYING
<TELL "flying">)
(T
<TELL "walking">)>
<TELL
" toward the wriggling vines. As you stop, a feeling of annoyance
seems to radiate from the plants." CR>)>>
<OBJECT VINES
(IN MOUTH-OF-RIVER)
(DESC "mass of wriggling vines")
(SYNONYM MASS VINES VINE PLANTS)
(ADJECTIVE WRIGLI WRITHI GREEN)
(FLAGS NDESCBIT)
(ACTION VINES-F)>
<ROUTINE VINES-F ()
<COND (<VERB? MEEF>
<MOVE ,VINES ,DIAL>
<TELL
"You can almost feel a wave of pain from the vines as they shrivel away." CR>)
(<VERB? ATTACK KILL>
<JIGS-UP
"Your attack is somewhat quixotic as the vines wrap around and tear
you to pieces.">)
(<VERB? THROUGH KICK BITE TAKE CLIMB-UP CLIMB-FOO PUSH MOVE RUB>
<DO-WALK ,P?WEST>)>>
<ROUTINE VINES-EXIT-F ()
<COND (<IN? ,VINES ,HERE>
<JIGS-UP
"The vines encircle you and tear you limb from limb.">
<RFALSE>)
(T
,GRUE-LAIR)>>
<ROOM GRUE-LAIR
(IN ROOMS)
(DESC "Grue Lair")
(LDESC
"This is a low, shadowy cave leading east to west. The rocky walls
are scarred with deep claw marks.")
(EAST TO MOUTH-OF-RIVER)
(WEST TO MAMMOTH-CAVERN)
(FLAGS RLANDBIT INSIDEBIT)
(GLOBAL CAVE)
(ACTION GRUE-LAIR-F)>
<ROUTINE GRUE-LAIR-F (RARG)
<COND (<AND <NOT ,SPRAYED?>
<EQUAL? .RARG ,M-END>
<NOT <IN? ,GRUE-SUIT ,PROTAGONIST>>>
<COND (<OR ,LIT ,BLORTED>
<JIGS-UP
"The grues lurk toward you! Your last sight is a hundred slavering fangs.">)
(T
<JIGS-UP
"Suddenly, you are set upon by countless slavering fangs!">)>)>>
<OBJECT MUTATED-GRUES
(IN GRUE-LAIR)
(DESC "pack of mutated grues")
(SYNONYM PACK GRUES GRUE)
(ADJECTIVE MUTATE)
(DESCFCN MUTATED-GRUES-DESCFCN)
(ACTION MUTATED-GRUES-F)>
<ROUTINE MUTATED-GRUES-F ()
<COND (<VERB? FROTZ>
<TELL
"One of the grues gives off a flash of light but, strangely, it doesn't seem
to notice or care." CR>)
(<VERB? RESEARCH>
<PERFORM ,V?RESEARCH ,GRUE>
<RTRUE>)>>
<ROUTINE MUTATED-GRUES-DESCFCN (RARG)
<COND (<OR ,LIT ,BLORTED>
<COND (,SPRAYED?
<LIT-MESSAGE>
<TELL
"They stagger about the room, covering their noses and making horrid
gurgling noises." CR>)
(<IN? ,GRUE-SUIT ,PROTAGONIST>
<LIT-MESSAGE>
<TELL
"They seem to be ignoring you, aside from a few suspicious gurgles
in your direction." CR>)
(T
<LIT-MESSAGE>
<TELL
"Baring tremendous fangs, they form a circle around you..." CR>)>)
(T
<TELL
"There are terrifying gurgling noises from the darkness!" CR>)>>
<ROUTINE LIT-MESSAGE ()
<TELL "A pack of grues fills the room! ">
<COND (,LIT
<TELL
"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! ">)>>
<ROOM MAMMOTH-CAVERN
(IN ROOMS)
(DESC "Mammoth Cavern")
(LDESC
"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.")
(EAST TO GRUE-LAIR)
(NW TO CHAMBER-OF-LIVING-DEATH IF BLACK-DOOR IS OPEN)
(WEST TO HALL-OF-ETERNAL-PAIN IF SILVER-DOOR IS OPEN)
(SW TO BELBOZ-HIDEOUT IF WHITE-DOOR IS OPEN)
(FLAGS RLANDBIT INSIDEBIT)
(GLOBAL CAVE)
(ACTION MAMMOTH-CAVERN-F)>
<ROUTINE MAMMOTH-CAVERN-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<SETG SCORE <+ ,SCORE ,CAVERN-POINT>>
<SETG CAVERN-POINT 0>
<PUT ,VEZZAS 7 0>)>>
<GLOBAL CAVERN-POINT 20>
<OBJECT MACHINERY
(IN MAMMOTH-CAVERN)
(DESC "diabolic machinery")
(SYNONYM MACHIN DEVICE BREEDER PLAQUE)
(ADJECTIVE DIABOL EVIL POWERF TINY)
(FLAGS NDESCBIT)
(ACTION MACHINERY-F)>
<ROUTINE MACHINERY-F ()
<COND (<VERB? MUNG LAMP-ON>
<JIGS-UP
"A field of energy leaps forth, reducing you to a pile of smoldering ash.">)
(<VERB? EXAMINE READ>
<TELL
"You notice, on one machine, a tiny plaque which reads:|
|
FROBOZZ MAGIC MUTATED GRUE BREEDER CO." CR>)>>
<ROOM CHAMBER-OF-LIVING-DEATH
(IN ROOMS)
(DESC "Chamber of Living Death")
(LDESC
"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.")
(FLAGS RLANDBIT ONBIT INSIDEBIT)
(GLOBAL CAVE)
(PSEUDO "PARASI" PARASITES-PSEUDO)
(ACTION CHAMBER-OF-LIVING-DEATH-F)>
<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? BRIEF VERBOSE SUPER-BRIEF>>
<NOT <VERB? SCRIPT UNSCRIPT>>>
<AGONY>
<RTRUE>)
(<EQUAL? .RARG ,M-END>
<TELL
"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..." CR>)>>
<ROUTINE PARASITES-PSEUDO ()
<RFALSE>>
<ROOM HALL-OF-ETERNAL-PAIN
(IN ROOMS)
(DESC "Hall of Eternal Pain")
(LDESC
"This room is filled with blinding light that stabs at your eyes.")
(FLAGS RLANDBIT ONBIT INSIDEBIT)
(GLOBAL CAVE)
(PSEUDO "FORCE" FORCE-PSEUDO "FORCES" FORCE-PSEUDO)
(ACTION HALL-OF-ETERNAL-DEATH-F)>
<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? BRIEF VERBOSE SUPER-BRIEF>>
<NOT <VERB? SCRIPT UNSCRIPT>>>
<AGONY>
<RTRUE>)
(<EQUAL? .RARG ,M-END>
<TELL
"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." CR>)>>
<ROUTINE FORCE-PSEUDO ()
<RFALSE>>
<ROUTINE AGONY ()
<TELL
"Your agony is too great to concentrate on such an action." CR>>
<ROOM BELBOZ-HIDEOUT
(IN ROOMS)
(SYNONYM JUNGLE MIZNIA)
(DESC "Belboz's Hideout")
(LDESC
"An acrid stench fills this small room, which is obviously a
control center for the evil experiments in the cavern outside.")
(EAST "An invisible force stops you.")
(FLAGS RLANDBIT INSIDEBIT ONBIT)
(GLOBAL CAVE)>
<OBJECT KNIFE
(IN BELBOZ-HIDEOUT)
(DESC "diamond-studded knife")
(FDESC
"Hanging on the wall is a heavy dagger, its handle encrusted with diamonds.")
(SYNONYM KNIFE DAGGER HANDLE)
(ADJECTIVE HEAVY DIAMON STUDDE ENCRUS)
(FLAGS TAKEBIT WEAPONBIT)
(SIZE 10)>
<OBJECT BLACK-DOOR
(IN MAMMOTH-CAVERN)
(DESC "black marble door")
(SYNONYM DOOR DOORS)
(ADJECTIVE BLACK MARBLE)
(FLAGS DOORBIT NDESCBIT)
(ACTION BLACK-DOOR-F)>
<ROUTINE BLACK-DOOR-F ()
<COND (<VERB? OPEN REZROV>
<TELL
"As the door opens, hundreds of slime-covered tentacles stream
out and drag you across the threshold..." CR CR>
<ROB ,PROTAGONIST>
<DISABLE <INT I-TIRED>>
<DISABLE <INT I-THIRST>>
<DISABLE <INT I-HUNGER>>
<WEAR-OFF-SPELLS>
<GOTO ,CHAMBER-OF-LIVING-DEATH>)>>
<OBJECT SILVER-DOOR
(IN MAMMOTH-CAVERN)
(DESC "shiny silver door")
(SYNONYM DOOR DOORS)
(ADJECTIVE SHINY SILVER)
(FLAGS DOORBIT NDESCBIT)
(ACTION SILVER-DOOR-F)>
<ROUTINE SILVER-DOOR-F ()
<COND (<VERB? OPEN REZROV>
<TELL
"The door blows open, knocking you to the ground. You are pulled
through the open doorway by an unseen force..." CR CR>
<ROB ,PROTAGONIST>
<DISABLE <INT I-TIRED>>
<DISABLE <INT I-HUNGER>>
<DISABLE <INT I-THIRST>>
<WEAR-OFF-SPELLS>
<GOTO ,HALL-OF-ETERNAL-PAIN>)>>
<OBJECT WHITE-DOOR
(IN MAMMOTH-CAVERN)
(DESC "white wooden door")
(SYNONYM DOOR DOORS)
(ADJECTIVE WHITE WOODEN BLEACH WOOD)
(FLAGS DOORBIT NDESCBIT)
(ACTION WHITE-DOOR-F)>
<GLOBAL WHITE-DOOR-SCORE 20>
<ROUTINE WHITE-DOOR-F ()
<COND (<VERB? OPEN REZROV>
<COND (<EQUAL? ,HERE ,BELBOZ-HIDEOUT>
<DO-WALK ,P?EAST>
<RTRUE>)>
<SETG SCORE <+ ,SCORE ,WHITE-DOOR-SCORE>>
<SETG WHITE-DOOR-SCORE 0>
<TELL
"The door creaks slowly open. Within, you see someone lying as though
asleep. You feel yourself drawn into the room..." CR CR>
<ENABLE <QUEUE I-BELBOZ-AWAKES 8>>
<GOTO ,BELBOZ-HIDEOUT>)>>
<GLOBAL VARDIKED <>>
<ROUTINE I-UNVARDIK ()
<SETG VARDIKED <>>
<TELL CR
"Your head feels numb for a moment, and your mind feels suddenly open and
unprotected." CR>>
<GLOBAL BELBOZ-DEAD <>>
<GLOBAL BELBOZ-GASPARED <>>
<ROUTINE KILL-BELBOZ ()
<COND (,BELBOZ-GASPARED
<SETG BELBOZ-GASPARED <>>
<TELL
"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." CR>
<CRLF>
<I-BELBOZ-AWAKES>)
(T
<TELL
"You stab the knife time and again into Belboz, who writhes in pain,
eyes bulging outward. Sickened and dizzy, you stagger back." CR CR>
<SETG BELBOZ-DEAD T>
<SWANZO-BELBOZ>)>>
<ROUTINE SWANZO-BELBOZ ()
<TELL "A wispy translucent shape rises from the ">
<COND (,BELBOZ-DEAD
<TELL "corpse">)
(T
<TELL "body">)>
<TELL
" 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." CR CR>
<COND (,VARDIKED
<TELL
"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." CR CR>
<COND (,BELBOZ-DEAD
<TELL
"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..." CR>
<FINISH>)
(T
<TELL
"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, ">
<COND (<IN? ,GRUE-SUIT ,PROTAGONIST>
<TELL "your grue suit has vanished and ">)>
<TELL
"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.\"" CR CR>
<SETG SCORE <+ ,SCORE 25>>
<SETG HERE ,CHAMBER-OF-THE-CIRCLE>
<V-SCORE>
<USL>
<TELL CR
"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." CR>
<COND (<NOT <IN? ,MORGIA-PLANT ,BELBOZ-QUARTERS>>
<TELL CR
"You hear a distant bellow. \"What happened to my morgia plant?\"" CR>)>
<FINISH T>)>)
(T
<TELL
"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." CR>
<SETG SCORE -100>
<FINISH>)>>
<ROUTINE I-BELBOZ-AWAKES ()
<COND (<NOT <EQUAL? ,HERE ,BELBOZ-HIDEOUT>>
<RFALSE>)>
<TELL CR
"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..." CR CR>
<ROB ,PROTAGONIST>
<DISABLE <INT I-TIRED>>
<DISABLE <INT I-THIRST>>
<DISABLE <INT I-HUNGER>>
<WEAR-OFF-SPELLS>
<GOTO ,HALL-OF-ETERNAL-PAIN>>

382
fort.zil Normal file
View File

@ -0,0 +1,382 @@
"FORT.ZIL for
SORCERER
(c) Copyright 1984 Infocom, Inc. All Rights Reserved"
<OBJECT FORT
(IN LOCAL-GLOBALS)
(DESC "fort")
(SYNONYM FORT GRIFFS RAMPAR FORTRE)
(ADJECTIVE FORT PROUD MIGHTY)
(FLAGS NDESCBIT)
(ACTION FORT-F)>
<ROUTINE FORT-F ()
<COND (<VERB? THROUGH>
<COND (<OR <EQUAL? ,HERE ,PARADE-GROUND ,GUN-EMPLACEMENT>
<EQUAL? ,HERE ,BARRACKS ,ARMORY>>
<LOOK-AROUND-YOU>)
(<EQUAL? ,HERE ,FORT-ENTRANCE>
<DO-WALK ,P?EAST>)
(T
<CANT-ENTER ,FORT>)>)
(<VERB? DROP EXIT>
<COND (<EQUAL? ,HERE ,PARADE-GROUND>
<DO-WALK ,P?WEST>)
(<EQUAL? ,HERE ,GUN-EMPLACEMENT ,BARRACKS ,ARMORY>
<CANT-ENTER ,FORT T>)
(T
<LOOK-AROUND-YOU>)>)
(<VERB? RESEARCH>
<TELL
"Fort Griffspotter once guarded the lands near Egreth Castle from
attack by sea." CR>)>>
<ROOM FORT-ENTRANCE
(IN ROOMS)
(DESC "Fort Entrance")
(LDESC
"You are at the entrance to Fort Griffspotter, which lies to the east.
A trail leads along the river bank to the northwest.")
(EAST TO PARADE-GROUND)
(NW TO RIVER-BANK)
(FLAGS ONBIT RLANDBIT)
(GLOBAL FORT ROAD BANKS)>
<ROOM PARADE-GROUND
(IN ROOMS)
(DESC "Parade Ground")
(LDESC
"You are at the center of a level field inside the fort. Entrances to
rooms around the perimeter lie in several directions.")
(WEST TO FORT-ENTRANCE)
(SOUTH TO ARMORY)
(EAST TO GUN-EMPLACEMENT)
(NORTH TO BARRACKS)
(UP "If you want to climb the flagpole, just say so.")
(FLAGS RLANDBIT ONBIT)
(PSEUDO "ROPE" ROPE-PSEUDO)
(GLOBAL FORT)
(ACTION PARADE-GROUND-F)>
<ROUTINE PARADE-GROUND-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<PUT ,VEZZAS 2 0>
<RFALSE>)
(<AND <EQUAL? .RARG ,M-END>
,SLEEPING>
<DISABLE <INT I-WAKE-UP>>
<I-WAKE-UP>)>>
<ROUTINE ROPE-PSEUDO ()
<COND (<VERB? MOVE>
<PERFORM ,V?LOWER ,FLAG>
<RTRUE>)
(<VERB? TAKE>
<TELL
"The rope is attached to the pole and can't possibly be removed." CR>)>>
<OBJECT FLAG-POLE
(IN PARADE-GROUND)
(DESC "flagpole")
(SYNONYM POLE FLAGPO)
(ADJECTIVE FLAG)
(FLAGS NDESCBIT)
(ACTION FLAG-POLE-F)>
<ROUTINE FLAG-POLE-F ()
<COND (<VERB? CLIMB-ON CLIMB-FOO CLIMB-UP>
<TELL
"That sort of thing went out of fashion years ago." CR>)
(<VERB? EXAMINE>
<TELL "A rope runs up the side of the pole." CR>)>>
<OBJECT FLAG
(IN PARADE-GROUND)
(DESC "flag of Quendor")
(SYNONYM FLAG)
(ADJECTIVE TATTER BROWN GOLD)
(FLAGS TAKEBIT TRYTAKEBIT)
(SIZE 8)
(DESCFCN FLAG-DESCFCN)
(ACTION FLAG-F)>
<GLOBAL FLAG-RAISED T>
<GLOBAL FOOBLE-FOUND <>>
<ROUTINE FLAG-DESCFCN (RARG)
<COND (,FLAG-RAISED
<TELL
"A tattered flag, apparently that of ancient Quendor, still flies atop
a mighty flagpole in the center of the field." CR>)
(T
<TELL
"A flag displaying the brown and gold of ancient Quendor is lying here." CR>)>>
<ROUTINE FLAG-F ()
<COND (<VERB? FLY>
<PERFORM ,V?RAISE ,FLAG>
<RTRUE>)>
<COND (,FLAG-RAISED
<COND (<VERB? RAISE>
<TELL "It's already at the top of the pole." CR>)
(<VERB? LOWER>
<SETG FLAG-RAISED <>>
<FCLEAR ,FLAG ,TRYTAKEBIT>
<FCLEAR ,FLAG-POLE ,NDESCBIT>
<TELL "The flag is lowered to the ground." CR>)
(<VERB? EXAMINE>
<TELL
"You can't see it very well from here -- the flagpole is very tall." CR>)
(<VERB? SHAKE WAVE TAKE MOVE RUB EAT DRINK LOOK-INSIDE>
<TELL "The flag is ">
<COND (,FLYING
<TELL "still ">)>
<TELL
"way above you at the top of the flagpole!" CR>)
(<VERB? LOOK-UNDER>
<PERFORM ,V?EXAMINE ,FLAG-POLE>
<RTRUE>)>)
(T
<COND (<VERB? RAISE>
<COND (<EQUAL? ,HERE ,PARADE-GROUND>
<FSET ,FLAG ,TRYTAKEBIT>
<MOVE ,FLAG ,HERE>
<FSET ,FLAG-POLE ,NDESCBIT>
<SETG FLAG-RAISED T>
<TELL
"The flag is raised to the top of the pole." CR>)
(T
<TELL "There's no flagpole in sight." CR>)>)
(<VERB? LOWER>
<TELL "You've already done that." CR>)
(<VERB? WAVE>
<TELL "How patriotic!" CR>)
(<VERB? WEAR>
<TELL "Who do you think you are, Abbie Hoffman?" CR>)
(<AND <VERB? EXAMINE LOOK-INSIDE SHAKE RUB SEARCH>
<NOT ,FOOBLE-FOUND>>
<SETG FOOBLE-FOUND T>
<MOVE ,FOOBLE-VIAL ,HERE>
<THIS-IS-IT ,FOOBLE-VIAL>
<TELL
"As you fiddle with the flag, an aqua vial drops from a hidden pocket
and falls to the ground." CR>)
(<VERB? EXAMINE>
<TELL
"The tattered flag displays the brown and gold of ancient Quendor." CR>)>)>>
<OBJECT FOOBLE-VIAL
(IN DIAL)
(DESC "aqua vial")
(SYNONYM VIAL VIALS LABEL)
(ADJECTIVE AQUA FOOBLE)
(FLAGS CONTBIT READBIT TAKEBIT VOWELBIT VIALBIT SEARCHBIT)
(SIZE 3)
(CAPACITY 1)
(ACTION FOOBLE-VIAL-F)>
<ROUTINE FOOBLE-VIAL-F ()
<COND (<VERB? READ>
<FIXED-FONT-ON>
<TELL
"|
\"FOOBLE POTION|
(increase muscular coordination)\"" CR>
<FIXED-FONT-OFF>)>>
<OBJECT FOOBLE-POTION
(IN FOOBLE-VIAL)
(DESC "aqua potion")
(SYNONYM POTION)
(ADJECTIVE AQUA FOOBLE)
(FLAGS NARTICLEBIT VOWELBIT)
(ACTION FOOBLE-POTION-F)>
<ROUTINE FOOBLE-POTION-F ()
<COND (<AND <VERB? EAT DRINK>
<NOT <HELD? ,FOOBLE-VIAL>>>
<POTION-POUR ,FOOBLE-VIAL>)
(<VERB? RESEARCH>
<READ-ABOUT-POTIONS 2>)
(<VERB? EAT DRINK>
<MOVE ,FOOBLE-POTION ,DIAL>
<COND (,UNDER-INFLUENCE
<TWO-POTIONS>
<RTRUE>)>
<SETG UNDER-INFLUENCE ,FOOBLE-POTION>
<ENABLE <QUEUE I-UNFOOBLE 17>>
<SETG FOOBLED T>
<TELL
"The aqua potion tasted like lime jelly, and sent vibrations through
your muscles." CR>)
(<VERB? DROP>
<PERFORM ,V?POUR ,PRSO ,PRSI>
<RTRUE>)
(<AND <VERB? POUR>
<EQUAL? ,PRSO ,FOOBLE-POTION>>
<POTION-POUR ,FOOBLE-VIAL>)>>
<GLOBAL FOOBLED <>>
<ROUTINE I-UNFOOBLE ()
<SETG FOOBLED <>>
<COND (<EQUAL? ,UNDER-INFLUENCE ,FOOBLE-POTION>
<SETG UNDER-INFLUENCE <>>)>
<TELL CR "Your muscles feel limp for a moment." CR>>
<ROOM ARMORY
(IN ROOMS)
(DESC "Armory")
(LDESC
"Once the armory for the fort, this room has been picked clean by
vandals and soldiers of fortune. Exit north or northeast.")
(NORTH TO PARADE-GROUND)
(NE TO GUN-EMPLACEMENT)
(FLAGS RLANDBIT INSIDEBIT)
(GLOBAL FORT)>
<ROOM BARRACKS
(IN ROOMS)
(DESC "Barracks")
(LDESC
"This was a barracks for the battalion stationed in this fort. You
could leave to the south, or to the southeast.")
(SOUTH TO PARADE-GROUND)
(SE TO GUN-EMPLACEMENT)
(FLAGS RLANDBIT INSIDEBIT)
(PSEUDO "BARRAC" BARRACKS-PSEUDO)
(GLOBAL FORT)>
<ROUTINE BARRACKS-PSEUDO ()
<SETG PERFORMING-SPELL T>
<PERFORM ,PRSA ,GLOBAL-ROOM ,PRSI>
<RTRUE>>
<ROOM GUN-EMPLACEMENT
(IN ROOMS)
(DESC "Gun Emplacement")
(LDESC
"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.")
(WEST TO PARADE-GROUND)
(NW TO BARRACKS)
(SW TO ARMORY)
(NORTH PER EMPLACEMENT-EXIT-F)
(EAST PER EMPLACEMENT-EXIT-F)
(FLAGS ONBIT RLANDBIT)
(GLOBAL RIVER OCEAN FORT)>
<ROUTINE EMPLACEMENT-EXIT-F ()
<COND (,FLYING
<TELL "The updrafts from the ">
<COND (<EQUAL? ,PRSO ,P?NORTH>
<TELL "river">)
(T
<TELL "ocean">)>)
(T
<TELL "The plunge">)>
<TELL " would kill you." CR>
<RFALSE>>
<OBJECT CANNON
(IN GUN-EMPLACEMENT)
(DESC "cannon")
(LDESC
"A magnificent cast-iron cannon stands atop the battlement. Its wide,
shallow barrel points toward the ocean, as though daring enemy ships
to approach.")
(SYNONYM CANNON BARREL)
(ADJECTIVE MAGNIF CAST-IRON CAST IRON WIDE SHALLO)
(FLAGS CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 80)
(ACTION CANNON-F)>
<ROUTINE CANNON-F ()
<COND (<VERB? SHOOT LAMP-ON>
<TELL "This cannon probably hasn't worked for centuries!" CR>)
(<VERB? CLOSE>
<V-DEFLATE>)
(<AND <VERB? REACH-IN SEARCH>
<FSET? ,YIPPLES ,INVISIBLE>>
<SETG BITTEN T>
<ENABLE <QUEUE I-BITE-HEAL 20>>
<TELL "Something bites your hand!" CR>)
(<AND <VERB? LOOK-INSIDE>
<FSET? ,YIPPLES ,INVISIBLE>>
<FCLEAR ,YIPPLES ,INVISIBLE>
<TELL
"Lying at the bottom of the barrel is a pile of identical scrolls!" CR>)
(<VERB? EXAMINE>
<TELL
"The barrel is wide enough to hold the hugest of cannonballs, but it
isn't very deep." CR>)
(<AND <VERB? REACH-IN SEARCH>
<IN? ,YIPPLES ,CANNON>>
<PERFORM ,V?TAKE ,YIPPLES>
<RTRUE>)
(<AND <VERB? PUT>
<IN? ,YIPPLES ,CANNON>
<EQUAL? ,BAT-GUANO ,PRSO>>
<MOVE ,YIPPLES ,DIAL>
<MOVE ,YONK-SCROLL ,CANNON>
<THIS-IS-IT ,YONK-SCROLL>
<MOVE ,BAT-GUANO ,CANNON>
<TELL
"When you drop the guano into the barrel, ">
<COND (<FSET? ,YIPPLES ,INVISIBLE>
<TELL
"dozens of scrolls pour out and literally run off">)
(T
<TELL
"the scrolls sprout feet and spill out of the cannon, dashing away">)>
<TELL " in every direction! A single ordinary scroll
is left sitting at the bottom of the barrel." CR>
<FCLEAR ,YIPPLES ,INVISIBLE>)
(<AND <VERB? THROUGH>
,FWEEPED>
<TELL "Your wingspan is too large." CR>)>>
<OBJECT YIPPLES
(IN CANNON)
(DESC "pile of identical scrolls")
(SYNONYM PILE SCROLL)
(ADJECTIVE IDENTI)
(FLAGS INVISIBLE TRYTAKEBIT)
(ACTION YIPPLES-F)>
<ROUTINE YIPPLES-F ()
<COND (<VERB? TAKE>
<SETG BITTEN T>
<ENABLE <QUEUE I-BITE-HEAL 20>>
<TELL
"As you reach into the cannon, something bites you painfully on the hand!" CR>)
(<VERB? EXAMINE>
<TELL "Every scroll is virtually identical." CR>)>>
<GLOBAL BITTEN <>>
<ROUTINE I-BITE-HEAL ()
<SETG BITTEN <>>
<RFALSE>>
<OBJECT YONK-SCROLL
(IN DIAL)
(DESC "ordinary scroll")
(SYNONYM SCROLL)
(ADJECTIVE SINGLE ORDINA)
(FLAGS READBIT SCROLLBIT TAKEBIT CONTBIT TRANSBIT VOWELBIT)
(SIZE 3)
(ACTION SCROLL-F)>
<OBJECT YONK-SPELL
(IN YONK-SCROLL)
(SYNONYM SPELLS SPELL)
(ADJECTIVE YONK)
(DESC "yonk spell")
(TEXT "augment the power of certain spells")
(COUNT 0)
(SIZE 1)
(FLAGS NDESCBIT SPELLBIT)
(ACTION SPELL-F)>

1408
globals.zil Normal file

File diff suppressed because it is too large Load Diff

1184
guild.zil Normal file

File diff suppressed because it is too large Load Diff

847
maze.zil Normal file
View File

@ -0,0 +1,847 @@
"MAZE for
SORCERER
(c) Copyright 1984 by Infocom Inc. All Rights Reserved."
<OBJECT MAZE
(IN LOCAL-GLOBALS)
(DESC "glass maze")
(SYNONYM MAZE LABYRI)
(ADJECTIVE GLASS)
(FLAGS NDESCBIT)
(ACTION MAZE-F)>
<ROUTINE MAZE-F ()
<COND (<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,OUTSIDE-GLASS-DOOR>
<DO-WALK ,P?EAST>)
(<EQUAL? ,HERE ,HOLLOW>
<DO-WALK ,P?WEST>)
(T
<LOOK-AROUND-YOU>)>)
(<VERB? DROP EXIT>
<COND (<EQUAL? ,HERE ,GLASS-MAZE>
<DO-WALK ,P?OUT>)
(T
<LOOK-AROUND-YOU>)>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL
"You see nothing but reflected light in all directions." CR>)
(<VERB? RESEARCH>
<TELL
"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." CR>)>>
<ROOM END-OF-HIGHWAY
(IN ROOMS)
(SYNONYM GALEPA MAREIL CITY)
(ADJECTIVE ANCIEN)
(DESC "End of Highway")
(LDESC
"The underground road ends here. A hovel, carved into the rock, lies to the
east. To the north, wide marble stairs lead upward.")
(EAST TO STONE-HUT)
(WEST TO OUTSIDE-STORE)
(UP TO ENTRANCE-HALL)
(NORTH TO ENTRANCE-HALL)
(IN TO STONE-HUT)
(FLAGS RLANDBIT INSIDEBIT)
(GLOBAL ROAD HOVEL STAIRS)>
<OBJECT HOVEL
(IN LOCAL-GLOBALS)
(DESC "stone hovel")
(SYNONYM HUT HOVEL)
(ADJECTIVE UNDERG STONE)
(FLAGS NDESCBIT)
(ACTION HOVEL-F)>
<ROUTINE HOVEL-F ()
<COND (<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,END-OF-HIGHWAY>
<DO-WALK ,P?EAST>)
(T
<LOOK-AROUND-YOU>)>)
(<VERB? DROP EXIT>
<COND (<EQUAL? ,HERE ,STONE-HUT>
<DO-WALK ,P?WEST>)
(T
<LOOK-AROUND-YOU>)>)
(<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,STONE-HUT>
<LOOK-AROUND-YOU>)
(T
<MAKE-OUT>)>)>>
<ROOM STONE-HUT
(IN ROOMS)
(SYNONYM QUENDO KINGDO)
(DESC "Stone Hut")
(LDESC
"This is a small underground hovel. On the far wall is a small
fireplace, long unused.")
(OUT TO END-OF-HIGHWAY)
(WEST TO END-OF-HIGHWAY)
(UP PER CHIMNEY-EXIT-F)
(FLAGS RLANDBIT INSIDEBIT)
(GLOBAL CHIMNEY HOVEL)>
<ROUTINE CHIMNEY-EXIT-F ()
<COND (,FWEEPED
<TELL "Too narrow even for bats." CR>
<RFALSE>)
(T
<TELL
"Where did you get the bizarre notion that you might fit up a chimney?" CR>
<RFALSE>)>>
<OBJECT FIREPLACE
(IN STONE-HUT)
(DESC "fireplace")
(SYNONYM FIREPL)
(ADJECTIVE SMALL UNUSED)
(FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 50)
(ACTION FIREPLACE-F)>
<ROUTINE FIREPLACE-F ()
<COND (<VERB? OPEN CLOSE>
<V-DEFLATE>)>>
<ROOM ENTRANCE-HALL
(IN ROOMS)
(SYNONYM EMPIRE GUE)
(ADJECTIVE GREAT UNDERG)
(DESC "Entrance Hall")
(LDESC
"This is a large entrance hall, paved with polished stone. Large doorways
lead north and south.")
(NORTH TO OUTSIDE-GLASS-DOOR)
(SOUTH TO END-OF-HIGHWAY)
(FLAGS INSIDEBIT RLANDBIT)
(GLOBAL ARCHWAY)>
<OBJECT STATUE
(IN ENTRANCE-HALL)
(DESC "statue")
(FDESC
"Standing in the center of the hall is a life-sized statue. An inscription
at the base is in a familiar language.")
(LDESC
"There is a marble statue here, in a strikingly life-like pose of
pompous bellicosity.")
(SYNONYM STATUE INSCRI)
(ADJECTIVE LIFE- SIZED MARBLE)
(FLAGS READBIT)
(TEXT
"\"I, Duncanthrax, King of Quendor and all its subjugated outlands, invite
you to sample the delights of my Glass Labyrinth.\"")
(ACTION STATUE-F)>
<ROUTINE STATUE-F ()
<COND (<VERB? MALYON>
<TELL
"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." CR>
<FSET ,STATUE ,TOUCHBIT>
<SETG STATUE-FOLLOW T>
<ENABLE <QUEUE I-STATUE-UNFOLLOW 1>>
<COND (<EQUAL? ,HERE ,ENTRANCE-HALL ,OUTSIDE-STORE>
<COND (<PROB 50>
<MOVE ,STATUE ,HIGHWAY>)
(T
<MOVE ,STATUE ,BEND>)>)
(T
<COND (<PROB 50>
<MOVE ,STATUE ,ENTRANCE-HALL>)
(T
<MOVE ,STATUE ,OUTSIDE-STORE>)>)>)
(<AND <VERB? FOLLOW>
,STATUE-FOLLOW>
<TELL "The King moved too quickly to follow." CR>)>>
<GLOBAL STATUE-FOLLOW <>>
<ROUTINE I-STATUE-UNFOLLOW ()
<SETG STATUE-FOLLOW <>>
<RFALSE>>
<ROOM OUTSIDE-GLASS-DOOR
(IN ROOMS)
(SYNONYM TECH)
(ADJECTIVE GUE)
(DESC "Outside Glass Arch")
(LDESC
"Through a breathtaking archway of glass to the east is an
area glistening with reflected light. Another exit leads south.")
(EAST TO GLASS-MAZE)
(SOUTH TO ENTRANCE-HALL)
(FLAGS RLANDBIT INSIDEBIT)
(GLOBAL MAZE ARCHWAY)>
<ROUTINE NO-FLOOR? ()
<COND (<AND ,MAZE-CROSSED
<EQUAL? <GET ,POST-DOWN-EXITS ,ROOM-NUMBER> 0>>
<RFALSE>)
(<AND <NOT ,MAZE-CROSSED>
<EQUAL? <GET ,PRE-DOWN-EXITS ,ROOM-NUMBER> 0>>
<RFALSE>)
(T
<RTRUE>)>>
<ROOM GLASS-MAZE
(IN ROOMS)
(DESC "Inside the Glass Maze")
(UP PER MAZE-EXIT-F)
(DOWN PER MAZE-EXIT-F)
(NORTH PER MAZE-EXIT-F)
(SOUTH PER MAZE-EXIT-F)
(WEST PER MAZE-EXIT-F)
(EAST PER MAZE-EXIT-F)
(OUT "Please use compass directions here.")
(FLAGS INSIDEBIT RLANDBIT ONBIT)
(GLOBAL MAZE)
(ACTION GLASS-MAZE-F)>
<ROUTINE GLASS-MAZE-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<TABLE-TO-MAZE ,ROOM-NUMBER>
<FCLEAR ,GLASS-MAZE ,TOUCHBIT>
<PUT ,VEZZAS 5 0>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"You are inside a huge cubical maze, shimmering with light from an unseen
source above.">
<COND (<NOT ,FWEEPED>
<TELL
" It is impossible to tell if the walls and ceilings around you are
glass surfaces or openings.">)>
<COND (<AND <NOT ,FLYING>
<NO-FLOOR?>
<EQUAL? ,ROOM-NUMBER 13>>
<TELL " ">
<PLUMMET>
<RTRUE>)>
<COND (<AND <NOT ,FLYING>
<NOT <NO-FLOOR?>>>
<TELL
" 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.">)>
<COND (,FWEEPED
<RADAR-VIEW>)>
<CRLF>)>>
<ROUTINE RADAR-VIEW ("AUX" X COUNT LUP LDOWN NORTH SOUTH EAST WEST)
<SET X <>>
<SET LUP <>>
<SET LDOWN <>>
<SET NORTH <>>
<SET SOUTH <>>
<SET EAST <>>
<SET WEST <>>
<SET COUNT 0> ;"number of surfaces"
<TELL
" Thanks to your sonar-like bat senses, you can tell that there are surfaces ">
<COND (<OR <AND ,MAZE-CROSSED
<EQUAL? <GET ,POST-UP-EXITS ,ROOM-NUMBER> 0>>
<AND <NOT ,MAZE-CROSSED>
<EQUAL? <GET ,PRE-UP-EXITS ,ROOM-NUMBER> 0>>>
<SET LUP T>
<SET COUNT <+ .COUNT 1>>)>
<COND (<OR <AND ,MAZE-CROSSED
<EQUAL? <GET ,POST-DOWN-EXITS ,ROOM-NUMBER> 0>>
<AND <NOT ,MAZE-CROSSED>
<EQUAL? <GET ,PRE-DOWN-EXITS ,ROOM-NUMBER> 0>>>
<SET LDOWN T>
<SET COUNT <+ .COUNT 1>>)>
<COND (<OR <AND ,MAZE-CROSSED
<EQUAL? <GET ,POST-NORTH-EXITS ,ROOM-NUMBER> 0>>
<AND <NOT ,MAZE-CROSSED>
<EQUAL? <GET ,PRE-NORTH-EXITS ,ROOM-NUMBER> 0>>>
<SET NORTH T>
<SET COUNT <+ .COUNT 1>>)>
<COND (<OR <AND ,MAZE-CROSSED
<EQUAL? <GET ,POST-SOUTH-EXITS ,ROOM-NUMBER> 0>>
<AND <NOT ,MAZE-CROSSED>
<EQUAL? <GET ,PRE-SOUTH-EXITS ,ROOM-NUMBER> 0>>>
<SET SOUTH T>
<SET COUNT <+ .COUNT 1>>)>
<COND (<OR <AND ,MAZE-CROSSED
<EQUAL? <GET ,POST-EAST-EXITS ,ROOM-NUMBER> 0>>
<AND <NOT ,MAZE-CROSSED>
<EQUAL? <GET ,PRE-EAST-EXITS ,ROOM-NUMBER> 0>>>
<SET EAST T>
<SET COUNT <+ .COUNT 1>>)>
<COND (<OR <AND ,MAZE-CROSSED
<EQUAL? <GET ,POST-WEST-EXITS ,ROOM-NUMBER> 0>>
<AND <NOT ,MAZE-CROSSED>
<EQUAL? <GET ,PRE-WEST-EXITS ,ROOM-NUMBER> 0>>>
<SET WEST T>
<SET COUNT <+ .COUNT 1>>)>
<COND (.LUP
<COND (<EQUAL? .COUNT 1>
<TELL " and ">)
(.X
<TELL ", ">)>
<SET X T>
<SET COUNT <- .COUNT 1>>
<TELL "above you">)>
<COND (.LDOWN
<COND (<EQUAL? .COUNT 1>
<TELL " and ">)
(.X
<TELL ", ">)>
<SET X T>
<SET COUNT <- .COUNT 1>>
<TELL "below you">)>
<COND (.NORTH
<COND (<EQUAL? .COUNT 1>
<TELL " and ">)
(.X
<TELL ", ">)>
<SET X T>
<SET COUNT <- .COUNT 1>>
<TELL "to the north">)>
<COND (.SOUTH
<COND (<EQUAL? .COUNT 1>
<TELL " and ">)
(.X
<TELL ", ">)>
<SET X T>
<SET COUNT <- .COUNT 1>>
<TELL "to the south">)>
<COND (.EAST
<COND (<EQUAL? .COUNT 1>
<TELL " and ">)
(.X
<TELL ", ">)>
<SET X T>
<SET COUNT <- .COUNT 1>>
<TELL "to the east">)>
<COND (.WEST
<COND (<EQUAL? .COUNT 1>
<TELL " and ">)
(.X
<TELL ", ">)>
<SET X T>
<SET COUNT <- .COUNT 1>>
<TELL "to the west">)>
<TELL ".">>
<ROUTINE MAZE-EXIT-F ()
<COND (,MAZE-CROSSED
;"post-maze-exit-function"
<MAZE-TO-TABLE ,ROOM-NUMBER>
<COND (<EQUAL? ,PRSO ,P?UP>
<COND (<NOT ,FLYING>
<CANT-JUMP>
<TABLE-TO-MAZE ,ROOM-NUMBER>
<RFALSE>)
(T
<COND (<EQUAL? <GET ,POST-UP-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER
<GET ,POST-UP-EXITS ,ROOM-NUMBER>>)>)>)
(<EQUAL? ,PRSO ,P?DOWN>
<COND (<NOT ,FLYING>
<SOLID-FLOOR>
<TABLE-TO-MAZE ,ROOM-NUMBER>
<RFALSE>)
(T
<COND (<EQUAL? <GET ,POST-DOWN-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER
<GET ,POST-DOWN-EXITS ,ROOM-NUMBER>>)>)>)
(<EQUAL? ,PRSO ,P?NORTH>
<COND (<EQUAL? <GET ,POST-NORTH-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,POST-NORTH-EXITS ,ROOM-NUMBER>>)>)
(<EQUAL? ,PRSO ,P?SOUTH>
<COND (<EQUAL? <GET ,POST-SOUTH-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,POST-SOUTH-EXITS ,ROOM-NUMBER>>)>)
(<EQUAL? ,PRSO ,P?EAST>
<COND (<EQUAL? <GET ,POST-EAST-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,POST-EAST-EXITS ,ROOM-NUMBER>>
<COND (<EQUAL? ,ROOM-NUMBER 30>
<SETG ROOM-NUMBER 24>
<RETURN ,HOLLOW>)>)>)
(<EQUAL? ,PRSO ,P?WEST>
<COND (<EQUAL? <GET ,POST-WEST-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,POST-WEST-EXITS ,ROOM-NUMBER>>
<COND (<EQUAL? ,ROOM-NUMBER 40>
<SETG ROOM-NUMBER 13>
<RETURN ,OUTSIDE-GLASS-DOOR>)>)>)>
<TABLE-TO-MAZE ,ROOM-NUMBER>
<V-LOOK>
<PLUMMET>
<RFALSE>)
(T
;"pre-maze-exit-funtion"
<MAZE-TO-TABLE ,ROOM-NUMBER>
<COND (<EQUAL? ,PRSO ,P?UP>
<COND (<NOT ,FLYING>
<CANT-JUMP>
<TABLE-TO-MAZE ,ROOM-NUMBER>
<RFALSE>)
(T
<COND (<EQUAL? <GET ,PRE-UP-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER
<GET ,PRE-UP-EXITS ,ROOM-NUMBER>>)>)>)
(<EQUAL? ,PRSO ,P?DOWN>
<COND (<NOT ,FLYING>
<SOLID-FLOOR>
<TABLE-TO-MAZE ,ROOM-NUMBER>
<RFALSE>)
(T
<COND (<EQUAL? <GET ,PRE-DOWN-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER
<GET ,PRE-DOWN-EXITS ,ROOM-NUMBER>>)>)>)
(<EQUAL? ,PRSO ,P?NORTH>
<COND (<EQUAL? <GET ,PRE-NORTH-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,PRE-NORTH-EXITS ,ROOM-NUMBER>>)>)
(<EQUAL? ,PRSO ,P?SOUTH>
<COND (<EQUAL? <GET ,PRE-SOUTH-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,PRE-SOUTH-EXITS ,ROOM-NUMBER>>)>)
(<EQUAL? ,PRSO ,P?EAST>
<COND (<EQUAL? <GET ,PRE-EAST-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,PRE-EAST-EXITS ,ROOM-NUMBER>>
<COND (<EQUAL? ,ROOM-NUMBER 30>
<SETG SCORE <+ ,SCORE ,HOLLOW-POINT>>
<SETG HOLLOW-POINT 0>
<SETG ROOM-NUMBER 24>
<RETURN ,HOLLOW>)>)>)
(<EQUAL? ,PRSO ,P?WEST>
<COND (<EQUAL? <GET ,PRE-WEST-EXITS ,ROOM-NUMBER> 0>
<HIT-WALL>
<RFALSE>)
(T
<SETG ROOM-NUMBER <GET ,PRE-WEST-EXITS ,ROOM-NUMBER>>
<COND (<EQUAL? ,ROOM-NUMBER 40>
<SETG ROOM-NUMBER 13>
<RETURN ,OUTSIDE-GLASS-DOOR>)>)>)>
<TABLE-TO-MAZE ,ROOM-NUMBER>
<V-LOOK>
<PLUMMET>
<RFALSE>)>>
<GLOBAL MAZE-CROSSED <>>
<GLOBAL ROOM-NUMBER 13> ;"you enter maze at room number thirteen"
<ROUTINE HIT-WALL ()
<TELL "BONK! You ">
<COND (,FLYING
<TELL "fly">)
(T
<TELL "walk">)>
<TELL
" right into an almost invisible wall of glass -- a stunning blow!" CR>>
<ROUTINE CANT-JUMP ()
<TELL "You can't possibly jump that high." CR>>
<ROUTINE SOLID-FLOOR ()
<TELL "Fortunately, the floor is solid." CR>>
<ROUTINE PLUMMET ()
<COND (<AND <NOT ,FLYING>
<NO-FLOOR?>>
<JIGS-UP
"Unfortunately, this section of the glass maze has no floor.">
<RFALSE>)>>
<GLOBAL PRE-UP-EXITS
<PTABLE 0
10 0 12 0 0 0 16 0 0
0 20 21 0 0 0 0 26 0
0 0 0 0 0 0 0 0 0>>
<GLOBAL PRE-DOWN-EXITS
<PTABLE 0
0 0 0 0 0 0 0 0 0
1 0 3 0 0 0 7 0 0
0 11 12 0 0 0 0 17 0>>
<GLOBAL PRE-NORTH-EXITS
<PTABLE 0
0 0 0 1 2 3 0 0 6
0 0 0 10 11 0 0 14 15
0 0 0 0 0 21 22 0 0>>
<GLOBAL PRE-SOUTH-EXITS
<PTABLE 0
4 5 6 0 0 9 0 0 0
13 14 0 0 17 18 0 0 0
0 0 24 25 0 0 0 0 0>>
<GLOBAL PRE-EAST-EXITS
<PTABLE 0
0 0 0 5 0 0 8 9 0
11 0 0 0 0 0 17 18 0
20 0 0 23 0 30 26 27 0>>
<GLOBAL PRE-WEST-EXITS
<PTABLE 0
0 0 0 0 4 0 0 7 8
0 10 0 40 0 0 0 16 17
0 19 0 0 22 0 0 25 26>>
<GLOBAL POST-UP-EXITS
<PTABLE 0
0 0 12 13 0 0 16 0 18
19 20 0 0 0 0 25 0 27
0 0 0 0 0 0 0 0 0>>
<GLOBAL POST-DOWN-EXITS
<PTABLE 0
0 0 0 0 0 0 0 0 0
0 0 3 4 0 0 7 0 9
10 11 0 0 0 0 16 0 18>>
<GLOBAL POST-NORTH-EXITS
<PTABLE 0
0 0 0 1 2 3 0 0 0
0 0 0 0 11 12 0 0 0
0 0 0 19 0 0 22 23 0>>
<GLOBAL POST-SOUTH-EXITS
<PTABLE 0
4 5 6 0 0 0 0 0 0
0 14 15 0 0 0 0 0 0
22 0 0 25 26 0 0 0 0>>
<GLOBAL POST-EAST-EXITS
<PTABLE 0
0 3 0 5 0 0 8 9 0
11 0 0 0 15 0 0 18 0
0 21 0 0 24 30 0 27 0>>
<GLOBAL POST-WEST-EXITS
<PTABLE 0
0 0 2 0 4 0 0 7 8
0 10 0 40 0 14 0 0 17
0 0 20 0 0 23 0 0 26>>
<ROUTINE MAZE-TO-TABLE (LOC "AUX" (CNT 0) (F <FIRST? ,GLASS-MAZE>) N)
<REPEAT ()
<COND (.F
<SET N <NEXT? .F>>)
(T
<RETURN>)>
<COND (<EQUAL? .F ,WINNER>
T)
(<OR <FSET? .F ,TAKEBIT>
<EQUAL? .F ,DORN-BEAST-CORPSE>>
<REPEAT ()
<COND (<EQUAL? <GET ,MAZE-TABLE .CNT> 0>
<PUT ,MAZE-TABLE .CNT .LOC>
<PUT ,MAZE-TABLE <+ .CNT 1> .F>
<SET CNT <+ .CNT 2>>
<MOVE .F ,DIAL>
<RETURN>)
(T
<SET CNT <+ .CNT 2>>)>>)>
<SET F .N>>>
<ROUTINE TABLE-TO-MAZE (LOC "AUX" (TABLE ,MAZE-TABLE) (CNT 0))
<REPEAT ()
<COND (<NOT <L? .CNT ,MAZE-TABLE-LENGTH>>
<RETURN>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> .LOC>
<PUT ,MAZE-TABLE .CNT 0>
<MOVE <GET ,MAZE-TABLE <+ .CNT 1>> ,GLASS-MAZE>)>
<SET CNT <+ .CNT 2>>>>
<ROUTINE DROP-IN-MAZE ("AUX" (CNT 0) (NEW-ROOM 0))
<COND (,MAZE-CROSSED
<COND (<EQUAL? ,ROOM-NUMBER 12>
<SET NEW-ROOM 3>)
(<EQUAL? ,ROOM-NUMBER 13>
<SET NEW-ROOM 4>)
(<EQUAL? ,ROOM-NUMBER 16>
<SET NEW-ROOM 7>)
(<EQUAL? ,ROOM-NUMBER 18>
<SET NEW-ROOM 9>)
(<EQUAL? ,ROOM-NUMBER 19>
<SET NEW-ROOM 10>)
(<EQUAL? ,ROOM-NUMBER 20>
<SET NEW-ROOM 11>)
(<EQUAL? ,ROOM-NUMBER 25>
<SET NEW-ROOM 7>)
(<EQUAL? ,ROOM-NUMBER 27>
<SET NEW-ROOM 9>)>)
(T
<COND (<EQUAL? ,ROOM-NUMBER 10>
<SET NEW-ROOM 1>)
(<EQUAL? ,ROOM-NUMBER 12>
<SET NEW-ROOM 3>)
(<EQUAL? ,ROOM-NUMBER 16>
<SET NEW-ROOM 7>)
(<EQUAL? ,ROOM-NUMBER 20>
<SET NEW-ROOM 11>)
(<EQUAL? ,ROOM-NUMBER 21>
<SET NEW-ROOM 3>)
(<EQUAL? ,ROOM-NUMBER 26>
<SET NEW-ROOM 17>)>)>
<COND (<EQUAL? .NEW-ROOM 0>
<TELL "Bug #14" CR>
<RTRUE>)>
<REPEAT ()
<COND (<EQUAL? <GET ,MAZE-TABLE .CNT> 0>
<PUT ,MAZE-TABLE .CNT .NEW-ROOM>
<PUT ,MAZE-TABLE <+ .CNT 1> ,PRSO>
<SET CNT <+ .CNT 2>>
<RETURN>)
(T
<SET CNT <+ .CNT 2>>)>>>
<ROUTINE REARRANGE-MAZE-TABLE ("AUX" (CNT 0))
<REPEAT ()
<COND (<NOT <L? .CNT ,MAZE-TABLE-LENGTH>>
<RETURN>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 12>
<PUT ,MAZE-TABLE .CNT 3>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 13>
<PUT ,MAZE-TABLE .CNT 4>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 16>
<PUT ,MAZE-TABLE .CNT 7>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 18>
<PUT ,MAZE-TABLE .CNT 9>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 19>
<PUT ,MAZE-TABLE .CNT 10>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 20>
<PUT ,MAZE-TABLE .CNT 11>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 25>
<PUT ,MAZE-TABLE .CNT 7>)
(<EQUAL? <GET ,MAZE-TABLE .CNT> 27>
<PUT ,MAZE-TABLE .CNT 9>)>
<SET CNT <+ .CNT 2>>>>
<CONSTANT MAZE-TABLE-LENGTH 40>
<GLOBAL MAZE-TABLE ;"length should be 2*number of takeable objects"
<TABLE 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0>>
<GLOBAL HOLLOW-POINT 20>
<ROOM HOLLOW
(IN ROOMS)
(SYNONYM ANTHAR)
(DESC "Hollow")
(LDESC
"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.")
(WEST TO GLASS-MAZE)
(UP "You couldn't even fly over these cliffs.")
(DOWN "The opening in the brick structure is too small for
humans or even bats.")
(FLAGS RLANDBIT ONBIT)
(PSEUDO "CLIFF" CLIFF-PSEUDO "CLIFFS" CLIFF-PSEUDO)
(GLOBAL CHIMNEY HOLE SOOT MAZE ARCHWAY)
(ACTION HOLLOW-F)>
<ROUTINE HOLLOW-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-END>
<HELD? ,SPELL-BOOK>>
<MOVE ,SPELL-BOOK ,DIAL>
<TELL
"\"Caw! Caw!\" A giant bird of prey with a fondness for gnusto-receptive
paper swoops down and flies off with your spell book." CR>)>>
<OBJECT CHIMNEY
(IN LOCAL-GLOBALS)
(DESC "chimney")
(SYNONYM CHIMNE)
(FLAGS NDESCBIT)
(ACTION CHIMNEY-F)>
<ROUTINE CHIMNEY-F ()
<COND (<EQUAL? ,HERE ,HOLLOW>
<COND (<EQUAL? ,PRSO ,CHIMNEY>
<SETG PERFORMING-SPELL T>
<PERFORM ,PRSA ,BRICK-STRUCTURE ,PRSI>
<RTRUE>)
(T
<SETG PERFORMING-SPELL T>
<PERFORM ,PRSA ,PRSO ,BRICK-STRUCTURE>
<RTRUE>)>)>>
<OBJECT BRICK-STRUCTURE
(IN HOLLOW)
(DESC "brick structure")
(SYNONYM STRUCT BRICKS SHAFT OPENIN)
(ADJECTIVE BRICK RECTAN SMALL)
(FLAGS NDESCBIT)
(ACTION BRICK-STRUCTURE-F)>
<ROUTINE BRICK-STRUCTURE-F ()
<COND (<VERB? EXAMINE>
<TELL
"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." CR>)
(<VERB? LOOK-INSIDE>
<TELL
"The opening is dark and you can only see a few feet into it." CR>)
(<VERB? ENTER CLIMB-DOWN>
<DO-WALK ,P?DOWN>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,BRICK-STRUCTURE>>
<MOVE ,PRSO ,FIREPLACE>
<COND (<EQUAL? ,PRSO ,SWANZO-SCROLL>
<ENABLE <QUEUE I-DORN-BEAST 2>>)>
<TELL
"The " D ,PRSO " disappears into the shaft." CR>)
(<VERB? REACH-IN>
<TELL "The shaft extends beyond your reach." CR>)
(<VERB? THROUGH>
<DO-WALK ,P?DOWN>)>>
<OBJECT SOOT
(IN LOCAL-GLOBALS)
(DESC "soot")
(SYNONYM SOOT QUANTI)
(ADJECTIVE LARGE BLACK)
(FLAGS NDESCBIT NARTICLEBIT)>
<OBJECT SWANZO-SCROLL
(IN HOLLOW)
(DESC "parchment scroll")
(SYNONYM SCROLL)
(ADJECTIVE PARCHM)
(SIZE 3)
(FLAGS TAKEBIT TRYTAKEBIT TRANSBIT CONTBIT READBIT SCROLLBIT)
(ACTION SCROLL-F)>
<OBJECT SWANZO-SPELL
(IN SWANZO-SCROLL)
(SYNONYM SPELLS SPELL)
(ADJECTIVE SWANZO)
(DESC "swanzo spell")
(TEXT "exorcise an inhabiting presence")
(SIZE 1)
(COUNT 0)
(FLAGS NDESCBIT SPELLBIT VOWELBIT)
(ACTION SPELL-F)>
<OBJECT DORN-BEAST
(IN DIAL)
(DESC "ferocious dorn beast")
(SYNONYM DORNBE DORN BEAST DORNS)
(ADJECTIVE FEROCI DORN)
(ACTION DORN-BEAST-F)>
<ROUTINE DORN-BEAST-F ()
<COND (<VERB? RESEARCH>
<PERFORM ,V?RESEARCH ,LOBBY>
<RTRUE>)>>
<OBJECT DORN-BEAST-CORPSE
(IN DIAL)
(DESC "splattered body")
(LDESC
"A somewhat splattered corpse is sprawled across the floor.")
(SYNONYM CORPSE BODY)
(ADJECTIVE DEAD SPLATT)
(ACTION CORPSE-F)>
<ROUTINE CORPSE-F ()
<COND (<VERB? MALYON>
<JIGS-UP
"The corpse comes to life just long enough to fry you.">)>>
<GLOBAL DORN-BEAST-WARNING <>>
<GLOBAL DORN-BEAST-ROOM 0>
<GLOBAL LAST-DORN-ROOM 0>
<GLOBAL SPLATTERED <>>
<ROUTINE I-DORN-BEAST ()
<ENABLE <QUEUE I-DORN-BEAST -1>>
<COND (<EQUAL? ,HERE ,HOLLOW>
<COND (,DORN-BEAST-WARNING
<DORN-DEATH>)
(T
<MOVE ,DORN-BEAST ,HERE>
<SETG DORN-BEAST-WARNING T>
<TELL CR
"With a loud roar, a dreadfully huge dorn beast emerges from the
shadows at the base of the cliff and gallops toward you." CR>)>)
(T
<FSET ,DORN-BEAST ,NDESCBIT>
<COND (<NOT ,DORN-BEAST-WARNING>
<SETG DORN-BEAST-WARNING T>
<TELL CR
"From outside the maze, you hear the bellowing of a ferocious dorn beast!" CR>)
(<EQUAL? ,ROOM-NUMBER ,DORN-BEAST-ROOM ,LAST-DORN-ROOM>
<CRLF>
<DORN-DEATH>)
(T
<TELL CR
"The dorn beast rushes after you. Its ear-splitting bellowing
resounds throughout the glass maze.">
<COND (<EQUAL? ,ROOM-NUMBER 27>
<SETG SPLATTERED T>
<DISABLE <INT I-DORN-BEAST>>
<MOVE ,DORN-BEAST ,DIAL>
<PUT ,MAZE-TABLE 38 9>
<PUT ,MAZE-TABLE 39 ,DORN-BEAST-CORPSE>
<TELL
" 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.">)
(T
<SETG LAST-DORN-ROOM ,DORN-BEAST-ROOM>
<SETG DORN-BEAST-ROOM ,ROOM-NUMBER>
<MOVE ,DORN-BEAST ,HERE>)>
<CRLF>)>)>>
<ROUTINE DORN-DEATH ()
<JIGS-UP
"The dorn beast fries your brain with its hypnotic gaze and begins
secreting digestive juices.">>

575
misc.zil Normal file
View File

@ -0,0 +1,575 @@
"MISC for
SORCERER
(c) 1984 by Infocom, Inc. All Rights Reserved."
;"former MACROS.ZIL stuff"
<SETG C-ENABLED? 0>
<SETG C-ENABLED 1>
<SETG C-DISABLED 0>
<DEFMAC TELL ("ARGS" A)
<FORM PROG ()
!<MAPF ,LIST
<FUNCTION ("AUX" E P O)
<COND (<EMPTY? .A> <MAPSTOP>)
(<SET E <NTH .A 1>>
<SET A <REST .A>>)>
<COND (<TYPE? .E ATOM>
<COND (<OR <=? <SET P <SPNAME .E>>
"CRLF">
<=? .P "CR">>
<MAPRET '<CRLF>>)
(<EMPTY? .A>
<ERROR INDICATOR-AT-END? .E>)
(ELSE
<SET O <NTH .A 1>>
<SET A <REST .A>>
<COND (<OR <=? <SET P <SPNAME .E>>
"DESC">
<=? .P "D">
<=? .P "OBJ">
<=? .P "O">>
<MAPRET <FORM PRINTD .O>>)
(<OR <=? .P "NUM">
<=? .P "N">>
<MAPRET <FORM PRINTN .O>>)
(<OR <=? .P "CHAR">
<=? .P "CHR">
<=? .P "C">>
<MAPRET <FORM PRINTC .O>>)
(ELSE
<MAPRET
<FORM PRINT
<FORM GETP .O .E>>>)>)>)
(<TYPE? .E STRING ZSTRING>
<MAPRET <FORM PRINTI .E>>)
(<TYPE? .E FORM LVAL GVAL>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
<DEFMAC VERB? ("ARGS" ATMS)
<MULTIFROB PRSA .ATMS>>
<DEFMAC PRSO? ("ARGS" ATMS)
<MULTIFROB PRSO .ATMS>>
<DEFMAC PRSI? ("ARGS" ATMS)
<MULTIFROB PRSI .ATMS>>
<DEFMAC ROOM? ("ARGS" ATMS)
<MULTIFROB HERE .ATMS>>
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
(<LENGTH? .OO 2> <NTH .OO 2>)
(ELSE <CHTYPE .OO FORM>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<COND (<TYPE? .ATM ATOM>
<CHTYPE
<COND (<==? .X PRSA>
<PARSE
<STRING "V?"
<SPNAME .ATM>>>)
(ELSE .ATM)> GVAL>)
(ELSE .ATM)>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O <REST <PUTREST .O (<FORM EQUAL? <CHTYPE .X GVAL> !.L>)>>>
<SET L ()>>>
<DEFMAC BSET ('OBJ "ARGS" BITS)
<MULTIBITS FSET .OBJ .BITS>>
<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
<MULTIBITS FCLEAR .OBJ .BITS>>
<DEFMAC BSET? ('OBJ "ARGS" BITS)
<MULTIBITS FSET? .OBJ .BITS>>
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(<==? .X FSET?> <FORM OR !.O>)
(ELSE <FORM PROG () !.O>)>>)>
<SET ATM <NTH .ATMS 1>>
<SET ATMS <REST .ATMS>>
<SET O
(<FORM .X
.OBJ
<COND (<TYPE? .ATM FORM> .ATM)
(ELSE <CHTYPE .ATM GVAL>)>>
!.O)>>>
<DEFMAC RFATAL ()
'<PROG () <PUSH 2> <RSTACK>>>
<DEFMAC PROB ('BASE?)
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
;<DEFMAC PROB ('BASE? "OPTIONAL" 'LOSER?)
<COND (<ASSIGNED? LOSER?> <FORM ZPROB .BASE?>)
(ELSE <FORM G? .BASE? '<RANDOM 100>>)>>
;<ROUTINE ZPROB (BASE)
<G? .BASE <RANDOM 100>>>
<ROUTINE PICK-ONE (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
;<ROUTINE PICK-ONE (FROB
"AUX" (L <GET .FROB 0>) (CNT <GET .FROB 1>) RND MSG RFROB)
<SET L <- .L 1>>
<SET FROB <REST .FROB 2>>
<SET RFROB <REST .FROB <* .CNT 2>>>
<SET RND <RANDOM <- .L .CNT>>>
<SET MSG <GET .RFROB .RND>>
<PUT .RFROB .RND <GET .RFROB 1>>
<PUT .RFROB 1 .MSG>
<SET CNT <+ .CNT 1>>
<COND (<==? .CNT .L> <SET CNT 0>)>
<PUT .FROB 0 .CNT>
.MSG>
<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
<DEFMAC OPENABLE? ('OBJ)
<FORM OR <FORM FSET? .OBJ ',DOORBIT>
<FORM FSET? .OBJ ',CONTBIT>>>
<DEFMAC ABS ('NUM)
<FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
(T .NUM)>>
<ROUTINE FIXED-FONT-ON () ;"turns off proportional spacing for the Mac"
<PUT 0 8 <BOR <GET 0 8> 2>>>
<ROUTINE FIXED-FONT-OFF () ;"turns it back on"
<PUT 0 8 <BAND <GET 0 8> -3>>>
;"former MAIN.ZIL stuff"
<GLOBAL PLAYER <>>
<GLOBAL P-WON <>>
<CONSTANT M-FATAL 2>
<CONSTANT M-HANDLED 1>
<CONSTANT M-NOT-HANDLED <>>
<CONSTANT M-OBJECT <>>
<CONSTANT M-BEG 1>
<CONSTANT M-END 6>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<GLOBAL LAST-USED-PRSO <>>
<ROUTINE GO ()
<PUTB ,P-LEXV 0 59>
;"put interrupts on clock chain"
<ENABLE <QUEUE I-WAKE-UP 7>>
<ENABLE <QUEUE I-HELLHOUND -1>>
;"set up and go"
<SETG LIT T>
<SETG WINNER ,PROTAGONIST>
<SETG PLAYER ,WINNER>
<SETG HERE ,TWISTED-FOREST>
<MOVE ,WINNER ,HERE>
<THIS-IS-IT ,HELLHOUND>
<PUTB ,P-INBUF 0 60>
<TELL
"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>
<V-LOOK>
<I-HELLHOUND>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
<REPEAT ()
<SETG LAST-USED-PRSO <>>
<SET CNT 0>
<SET OBJ <>>
<SET PTBL T>
<COND (<SETG P-WON <PARSER>>
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
<SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
<COND (<AND ,P-IT-OBJECT <ACCESSIBLE? ,P-IT-OBJECT>>
<SET TMP <>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
<PUT ,P-PRSI .CNT ,P-IT-OBJECT>
<SET TMP T>
<RETURN>)>)>>
<COND (<NOT .TMP>
<SET CNT 0>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
<PUT ,P-PRSO .CNT ,P-IT-OBJECT>
<RETURN>)>)>>)>
<SET CNT 0>)>
<SET NUM <COND (<0? .OCNT>
.OCNT)
(<G? .OCNT 1>
<SET TBL ,P-PRSO>
<COND (<0? .ICNT>
<SET OBJ <>>)
(T
<SET OBJ <GET ,P-PRSI 1>>)>
.OCNT)
(<G? .ICNT 1>
<SET PTBL <>>
<SET TBL ,P-PRSI>
<SET OBJ <GET ,P-PRSO 1>>
.ICNT)
(T
1)>>
<COND (<AND <NOT .OBJ>
<1? .ICNT>>
<SET OBJ <GET ,P-PRSI 1>>)>
<COND (<==? ,PRSA ,V?WALK>
<SET V <PERFORM ,PRSA ,PRSO>>)
(<0? .NUM>
<COND (<0? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
<SET V <PERFORM ,PRSA>>
<SETG PRSO <>>)
(<AND <NOT ,LIT>
<NOT ,BLORTED>>
<SETG QUOTE-FLAG <>>
<SETG P-CONT <>>
<TOO-DARK>)
(<EQUAL? ,HERE ,CHAMBER-OF-LIVING-DEATH
,HALL-OF-ETERNAL-PAIN>
<SETG QUOTE-FLAG <>>
<SETG P-CONT <>>
<AGONY>)
(T
<TELL "There isn't anything to ">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (<VERB? TELL>
<TELL "talk to">)
(<OR ,P-OFLAG ,P-MERGED>
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2>
<GETB .TMP 3>>)>
<TELL "!" CR>
<SET V <>>)>)
(T
<SETG P-NOT-HERE 0>
<SETG P-MULT <>>
<COND (<G? .NUM 1>
<SETG P-MULT T>)>
<SET TMP <>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
<COND (<G? ,P-NOT-HERE 0>
<TELL "The ">
<COND (<NOT <EQUAL? ,P-NOT-HERE .NUM>>
<TELL "other ">)>
<TELL "object">
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
<TELL "s">)>
<TELL " that you mentioned ">
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
<TELL "are">)
(T
<TELL "is">)>
<TELL "n't here." CR>)
(<NOT .TMP>
<REFERRING>)>
<RETURN>)
(T
<COND (.PTBL
<SET OBJ1 <GET ,P-PRSO .CNT>>)
(T
<SET OBJ1 <GET ,P-PRSI .CNT>>)>
<SETG PRSO <COND (.PTBL
.OBJ1)
(T
.OBJ)>>
<SETG PRSI <COND (.PTBL
.OBJ)
(T
.OBJ1)>>
<COND (<OR <G? .NUM 1>
<EQUAL? <GET <GET ,P-ITBL ,P-NC1> 0>
,W?ALL>>
<COND (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>
<AGAIN>)
(<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
<VERB? TAKE>
<OR
<AND <NOT <EQUAL? <LOC .OBJ1>
,WINNER
,HERE>>
<NOT <FSET? <LOC .OBJ1>
,SURFACEBIT>>
<NOT <EQUAL? <LOC .OBJ1>
,FIREPLACE>>>
<NOT <OR <FSET? .OBJ1 ,TAKEBIT>
<FSET? .OBJ1
,TRYTAKEBIT>>>>>
<AGAIN>)
(<AND <VERB? TAKE>
,PRSI
<EQUAL?
<GET <GET ,P-ITBL ,P-NC1> 0>
,W?ALL>
<NOT <IN? ,PRSO ,PRSI>>
<DESK-KLUDGE>>
<AGAIN>)
(<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
<VERB? DROP>
<NOT <IN? .OBJ1 ,WINNER>>
<NOT <IN? ,P-IT-OBJECT ,WINNER>>>
<AGAIN>)
(<NOT <VISIBLE? .OBJ1>>
<AGAIN>)
(T
<COND (<EQUAL? .OBJ1 ,IT>
<PRINTD ,P-IT-OBJECT>)
(T
<PRINTD .OBJ1>)>
<TELL ": ">)>)>
<SET TMP T>
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
<SETG LAST-USED-PRSO ,PRSO>
<COND (<==? .V ,M-FATAL>
<RETURN>)>)>>)>
<COND (<NOT <==? .V ,M-FATAL>>
;<COND (<==? <LOC ,WINNER> ,PRSO>
<SETG PRSO <>>)> ;"removed per Retrofix #17"
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE
SAVE VERSION RESTORE SCRIPT UNSCRIPT>
T)
(T
<SET V
<APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>)>
<COND (<VERB? AGAIN SAVE RESTORE SCORE VERSION>
T)
(T
<SETG L-PRSA ,PRSA>
<COND (,LAST-USED-PRSO
<SETG L-PRSO ,LAST-USED-PRSO>)
(T
<SETG L-PRSO ,PRSO>)>
<SETG L-PRSI ,PRSI>)>
<COND (<==? .V ,M-FATAL>
<SETG P-CONT <>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION
TIME QUIT RESTART SCORE SCRIPT UNSCRIPT RESTORE
$RANDOM $COMMAND $RECORD $UNRECORD>
T)
(T
<SET V <CLOCKER>>)>)>>>
<ROUTINE DESK-KLUDGE ()
<COND (<AND <EQUAL? ,PRSI ,BELBOZ-DESK>
<IN? ,PRSO ,DESK-DRAWER>>
<RFALSE>)
(T
<RTRUE>)>>
<GLOBAL L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
<ROUTINE FAKE-ORPHAN ("AUX" TMP)
<ORPHAN ,P-SYNTAX <>>
<TELL "Be specific: what object do you want to ">
<SET TMP <GET ,P-OTBL ,P-VERBN>>
<COND (<==? .TMP 0> <TELL "tell">)
(<0? <GETB ,P-VTBL 2>>
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>
<PUTB ,P-VTBL 2 0>)>
<SETG P-OFLAG T>
<SETG P-WON <>>
<PREP-PRINT
<GETB ,P-SYNTAX ,P-SPREP1>>
<TELL "?" CR>>
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
;<COND (,DEBUG
<TELL "[Perform: ">
%<COND (<GASSIGNED? PREDGEN> '<TELL N .A>)
(T '<PRINC <NTH ,ACTIONS <+ <* .A 2> 1>>>)>
<COND (<AND .O <NOT <==? .A ,V?WALK>>>
<TELL " / PRSO = " D .O>)>
<COND (.I <TELL " / PRSI = " D .I>)>
<TELL "]" CR>)>
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<SETG PRSA .A>
<COND (<EQUAL? ,IT .I .O>
;<AND <EQUAL? ,IT .I .O>
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
<COND (<NOT .I> <FAKE-ORPHAN>)
(T
<REFERRING>)>
<RFATAL>)>
;<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
;<COND (<==? .I ,IT> <SET I ,P-IT-OBJECT>)>
<SETG PRSO .O>
<COND (<AND ,PRSO
<NOT <VERB? WALK>>
<NOT <EQUAL? ,PRSO ,NOT-HERE-OBJECT>>>
<THIS-IS-IT ,PRSO>)>
<SETG PRSI .I>
;<COND (<NOT <==? .A ,V?AGAIN>>
<SETG L-PRSA .A>
<COND (<==? .A ,V?WALK> <SETG L-PRSO <>>)
(T <SETG L-PRSO .O>)>
<SETG L-PRSI .I>)>
<COND (<AND <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>>
<SETG P-WON <>>
.V)
(T
<SET O ,PRSO>
<SET I ,PRSI>
<COND (<SET V <D-APPLY "Actor"
<GETP ,WINNER ,P?ACTION>>> .V)
(<SET V <D-APPLY "Room (M-BEG)"
<GETP <LOC ,WINNER> ,P?ACTION>
,M-BEG>> .V)
(<SET V <D-APPLY "Preaction"
<GET ,PREACTIONS .A>>> .V)
(<AND .I <SET V <D-APPLY "PRSI"
<GETP .I ,P?ACTION>>>> .V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<LOC .O>
<GETP <LOC .O> ,P?CONTFCN>
<SET V <D-APPLY "Container"
<GETP <LOC .O> ,P?CONTFCN>>>>
.V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<SET V <D-APPLY "PRSO"
<GETP .O ,P?ACTION>>>>
.V)
(<SET V <D-APPLY <>
<GET ,ACTIONS .A>>> .V)>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>
<ROUTINE D-APPLY (STR FCN "OPTIONAL" (FOO <>) "AUX" RES)
<COND (<NOT .FCN> <>)
(T
;<COND (,DEBUG
<COND (<NOT .STR>
<TELL CR " Default ->" CR>)
(T <TELL CR " " .STR " -> ">)>)>
<SET RES
<COND (.FOO <APPLY .FCN .FOO>)
(T <APPLY .FCN>)>>
;<COND (<AND ,DEBUG .STR>
<COND (<==? .RES ,M-FATAL>
<TELL "Fatal" CR>)
(<NOT .RES>
<TELL "Not handled">)
(T <TELL "Handled" CR>)>)>
.RES)>>
;"former CLOCK.ZIL stuff"
<CONSTANT C-TABLELEN 300>
<GLOBAL C-TABLE <ITABLE NONE 300>>
<GLOBAL C-DEMONS 300>
<GLOBAL C-INTS 300>
<CONSTANT C-INTLEN 6>
<CONSTANT C-ENABLED? 0>
<CONSTANT C-TICK 1>
<CONSTANT C-RTN 2>
;<ROUTINE DEMON (RTN TICK "AUX" CINT)
<PUT <SET CINT <INT .RTN T>> ,C-TICK .TICK>
.CINT>
<ROUTINE QUEUE (RTN TICK "AUX" CINT)
<PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
.CINT>
<ROUTINE INT (RTN "OPTIONAL" (DEMON <>) E C INT)
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<==? .C .E>
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
<AND .DEMON <SETG C-DEMONS <- ,C-DEMONS ,C-INTLEN>>>
<SET INT <REST ,C-TABLE ,C-INTS>>
<PUT .INT ,C-RTN .RTN>
<RETURN .INT>)
(<EQUAL? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
<SET C <REST .C ,C-INTLEN>>>>
<GLOBAL CLOCK-WAIT <>>
<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>))
<COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
<SET C <REST ,C-TABLE <COND (,P-WON ,C-INTS) (T ,C-DEMONS)>>>
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<REPEAT ()
<COND (<==? .C .E>
<SETG MOVES <+ ,MOVES 1>>
<RETURN .FLG>)
(<NOT <0? <GET .C ,C-ENABLED?>>>
<SET TICK <GET .C ,C-TICK>>
<COND (<0? .TICK>)
(T
<PUT .C ,C-TICK <- .TICK 1>>
<COND (<AND <NOT <G? .TICK 1>>
<APPLY <GET .C ,C-RTN>>>
<SET FLG T>)>)>)>
<SET C <REST .C ,C-INTLEN>>>>

773
park.zil Normal file
View File

@ -0,0 +1,773 @@
"PARK.ZIL for
SORCERER
(c) Copyright 1984 Infocom, Inc. All Rights Reserved"
<OBJECT BOZBARLAND
(IN LOCAL-GLOBALS)
(DESC "amusement park")
(SYNONYM PARK BOZBAR)
(ADJECTIVE AMUSEM ZORKY)
(FLAGS NDESCBIT VOWELBIT)
(ACTION BOZBARLAND-F)>
<ROUTINE BOZBARLAND-F ()
<COND (<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,PARK-ENTRANCE>
<DO-WALK ,P?WEST>)
(T
<LOOK-AROUND-YOU>)>)
(<VERB? EXIT DROP>
<COND (<EQUAL? ,HERE ,EAST-END-OF-MIDWAY>
<DO-WALK ,P?EAST>)
(<EQUAL? ,HERE ,PARK-ENTRANCE>
<LOOK-AROUND-YOU>)
(T
<CANT-ENTER ,BOZBARLAND T>)>)
(<VERB? RESEARCH>
<TELL
"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." CR>)>>
<ROOM PARK-ENTRANCE
(IN ROOMS)
(DESC "Park Entrance")
(LDESC
"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.")
(NE TO WINDING-TUNNEL)
(WEST PER AMUSEMENT-PARK-ENTER-F)
(FLAGS INSIDEBIT RLANDBIT)
(GLOBAL BOZBARLAND)
(PSEUDO "SIGN" PARK-SIGN-PSEUDO)>
<ROUTINE PARK-SIGN-PSEUDO ()
<COND (<VERB? READ>
<FIXED-FONT-ON>
<TELL "|
$$$$$ WELCOME TO BOZBARLAND $$$$$|
The Entertainment Capital|
of the Empire" CR>
<FIXED-FONT-OFF>)>>
<ROUTINE AMUSEMENT-PARK-ENTER-F ()
<COND (,PARK-FEE-PAID
,EAST-END-OF-MIDWAY)
(<IN? ,PARK-GNOME ,HERE>
<TELL
"As you bounce off the barrier, the gnome admonishes, \"Tsk, tsk ... you
can't enter without paying your zorkmid!\"" CR>
<RFALSE>)
(T
<MOVE ,PARK-GNOME ,HERE>
<ENABLE <QUEUE I-PARK-GNOME 6>>
<TELL
"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?\"" CR>
<RFALSE>)>>
<ROUTINE I-PARK-GNOME ()
<MOVE ,PARK-GNOME ,DIAL>
<COND (<EQUAL? ,HERE ,PARK-ENTRANCE>
<TELL CR
"\"Well, I can't wait all day, buddy,\" growls the gnome before
vanishing." CR>)>>
<OBJECT PARK-GNOME
(IN DIAL)
(DESC "gnome")
(LDESC
"A gnome, dressed in flashy attire, stands here looking impatient.")
(SYNONYM GNOME)
(FLAGS ACTORBIT)
(ACTION PARK-GNOME-F)>
<GLOBAL PARK-FEE-PAID <>>
<ROUTINE PARK-GNOME-F ()
<COND (<VERB? TELL>
<TELL
"\"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?\"" CR>
<STOP>)
(<VERB? YOMIN>
<TELL
"The gnome is thinking about the poker game you interrupted." CR>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,PARK-GNOME>
<EQUAL? ,PRSO ,ZORKMID>>
<COND (<FSET? ,ZORKMID ,ONBIT>
<GNOME-REFUSES>
<RTRUE>)>
<MOVE ,ZORKMID ,DIAL>
<MOVE ,PARK-GNOME ,DIAL>
<SETG PARK-FEE-PAID T>
<DISABLE <INT I-PARK-GNOME>>
<TELL
"\"Okay, you can go through now, bub. Enjoy your trip to
Bozbarland.\" The gnome vanishes as suddenly as he appeared." CR>)>>
<ROUTINE MIDWAY-PSEUDO ()
<COND (<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,FLUME ,ARCADE>
<DO-WALK ,P?NORTH>)
(<EQUAL? ,HERE ,ROLLER-COASTER ,HAUNTED-HOUSE>
<DO-WALK ,P?SOUTH>)
(<EQUAL? ,HERE ,CASINO>
<DO-WALK ,P?EAST>)
(T
<LOOK-AROUND-YOU>)>)
(<VERB? DROP EXIT>
<V-WALK-AROUND>)>>
<ROOM EAST-END-OF-MIDWAY
(IN ROOMS)
(DESC "East End of Midway")
(LDESC
"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.")
(NORTH TO HAUNTED-HOUSE)
(SOUTH TO FLUME)
(WEST TO WEST-END-OF-MIDWAY)
(EAST TO PARK-ENTRANCE)
(FLAGS RLANDBIT ONBIT INSIDEBIT)
(GLOBAL BOZBARLAND)
(PSEUDO "MIDWAY" MIDWAY-PSEUDO)
(ACTION EAST-END-OF-MIDWAY-F)>
<ROUTINE EAST-END-OF-MIDWAY-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<PUT ,VEZZAS 4 0>
<RFALSE>)>>
<ROOM WEST-END-OF-MIDWAY
(IN ROOMS)
(DESC "West End of Midway")
(LDESC
"Entrances lead north, west and south, and the rest of the
midway lies to the east.")
(WEST TO CASINO)
(SOUTH TO ARCADE)
(NORTH TO ROLLER-COASTER)
(EAST TO EAST-END-OF-MIDWAY)
(FLAGS RLANDBIT ONBIT INSIDEBIT)
(GLOBAL BOZBARLAND)
(PSEUDO "MIDWAY" MIDWAY-PSEUDO)>
<ROOM HAUNTED-HOUSE
(IN ROOMS)
(DESC "Haunted House")
(SOUTH TO EAST-END-OF-MIDWAY)
(NORTH TO HAUNTED-HOUSE)
(EAST TO HAUNTED-HOUSE)
(WEST TO HAUNTED-HOUSE)
(NE TO HAUNTED-HOUSE)
(NW TO HAUNTED-HOUSE)
(SE TO HAUNTED-HOUSE)
(SW TO HAUNTED-HOUSE)
(UP TO HAUNTED-HOUSE)
(DOWN TO HAUNTED-HOUSE)
(FLAGS INSIDEBIT RLANDBIT)
(GLOBAL BOZBARLAND)
(PSEUDO "MIDWAY" MIDWAY-PSEUDO)
(ACTION HAUNTED-HOUSE-F)>
<ROUTINE HAUNTED-HOUSE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<COND (,LIT
<TELL
"Something about this place seems to soak up all light, so that it">)
(,BLORTED
<TELL
"Despite the effects of the blort potion, this place ">)
(T
<TELL "It">)>
<TELL
" is quite dark. You can see vague shapes swaying about in the darkness." CR>)
(<EQUAL? .RARG ,M-ENTER>
<ENABLE <QUEUE I-HAUNT 1>>
<RFALSE>)>>
<ROUTINE I-HAUNT ()
<ENABLE <QUEUE I-HAUNT -1>>
<COND (<NOT <EQUAL? ,HERE ,HAUNTED-HOUSE>>
<DISABLE <INT I-HAUNT>>
<RFALSE>)
(<PROB 65>
<TELL CR <PICK-ONE ,HAUNT-TABLE> CR>)
(T
<RFALSE>)>>
<GLOBAL HAUNT-TABLE
<PLTABLE
"You feel a cold breath on your shoulder. You whirl around,
but there is nothing there."
"Something slimy brushes across your face."
"An unseen door creaks slowly open."
"Something slithers across your foot."
"You feel a strange shiver in your chest, almost as though
something had passed through your body."
"From several directions comes a sound like rattling chains."
"A long silence is suddenly broken by a piercing scream!"
"A glowing apparition sails by, briefly illuminating
a spiral staircase and wooden balcony."
"A deep-throated chuckle echoes about the room."
"A roller coaster car zooms past, almost knocking you over!">>
<GLOBAL RIDE-IN-PROGRESS <>>
<GLOBAL RIDE-COUNTER 0>
<ROUTINE START-RIDE (LOC "AUX" X N)
<SETG RIDE-IN-PROGRESS T>
<SET X <FIRST? .LOC>>
<REPEAT ()
<SET N <NEXT? .X>>
<COND (<NOT <EQUAL? .X ,PROTAGONIST ,CAR ,LOG-BOAT>>
<FSET .X ,INVISIBLE>)>
<COND (<NOT .N>
<RETURN>)
(T
<SET X .N>)>>>
<ROUTINE END-RIDE ("AUX" X N)
<SETG RIDE-IN-PROGRESS <>>
<SETG RIDE-COUNTER 0>
<DISABLE <INT I-FLUME-TRIP>>
<DISABLE <INT I-ROLLER-COASTER-TRIP>>
<SET X <FIRST? ,FLUME>>
<REPEAT ()
<SET N <NEXT? .X>>
<FCLEAR .X ,INVISIBLE>
<COND (<NOT .N>
<RETURN>)
(T
<SET X .N>)>>
<SET X <FIRST? ,ROLLER-COASTER>>
<REPEAT ()
<SET N <NEXT? .X>>
<FCLEAR .X ,INVISIBLE>
<COND (<NOT .N>
<RETURN>)
(T
<SET X .N>)>>>
<ROUTINE SITS-AT-PLATFORM (VEHICLE)
<TELL " A " D .VEHICLE " sits at the platform, beckoning
you to enter.">>
<ROUTINE PARK-NYMPH (VEHICLE)
<TELL "An amusement park nymph appears for a moment, warning
you not to leave the " D .VEHICLE " during the course of the ride." CR>>
<ROUTINE PLAQUE ()
<TELL
" A small plaque hangs nearby. The midway is visible to the ">>
<ROUTINE PLAQUE-PSEUDO ()
<COND (<VERB? READ EXAMINE>
<TELL "\"Constructed by the Frobozz Magic ">
<COND (<EQUAL? ,HERE ,FLUME>
<TELL "Flume">)
(T
<TELL "Roller Coaster">)>
<TELL " Company.\"" CR>)>>
<ROOM FLUME
(IN ROOMS)
(DESC "Flume")
(NORTH TO EAST-END-OF-MIDWAY)
(FLAGS RLANDBIT ONBIT INSIDEBIT)
(GLOBAL WATER BOZBARLAND)
(PSEUDO "MIDWAY" MIDWAY-PSEUDO "PLAQUE" PLAQUE-PSEUDO)
(ACTION FLUME-F)>
<ROUTINE FLUME-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<COND (,RIDE-IN-PROGRESS
<RTRUE>)
(T
<TELL
"You are at the boarding platform of a fast-moving flume, flowing
off beyond your view.">
<PLAQUE>
<TELL "north.">
<COND (<NOT <IN? ,PROTAGONIST ,LOG-BOAT>>
<SITS-AT-PLATFORM ,LOG-BOAT>)>
<CRLF>)>)>>
<OBJECT FLUME-OBJECT
(IN FLUME)
(DESC "flume")
(SYNONYM FLUME FLUMES)
(FLAGS NDESCBIT)
(ACTION FLUME-OBJECT-F)>
<ROUTINE FLUME-OBJECT-F ()
<COND (<VERB? PULVER>
<TELL
"In order to prevent damage to public life and property, flumes are
protected against this sort of prank." CR>)
(<VERB? BOARD>
<PERFORM ,V?BOARD ,LOG-BOAT>
<RTRUE>)
(<VERB? RESEARCH>
<TELL
"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." CR>)>>
<OBJECT LOG-BOAT
(IN FLUME)
(DESC "log boat")
(SYNONYM BOAT)
(ADJECTIVE LOG)
(FLAGS VEHBIT OPENBIT CONTBIT SEARCHBIT NDESCBIT)
(ACTION LOG-BOAT-F)>
<ROUTINE LOG-BOAT-F ("OPTIONAL" (RARG <>))
<COND (<AND <EQUAL? .RARG ,M-BEG>
<VERB? WALK>>
<NOT-GOING-ANYWHERE ,LOG-BOAT>)
(.RARG
<RFALSE>)
(<VERB? OPEN CLOSE>
<TELL "Huh?" CR>)
(<VERB? THROUGH ENTER CLIMB-ON>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<AND <VERB? DROP DISEMBARK STAND EXIT>
,RIDE-IN-PROGRESS>
<END-RIDE>
<JIGS-UP
"Bad time to leave the log boat. The flume is fast and rough.">)
(<AND <VERB? BOARD>
<NOT ,RIDE-IN-PROGRESS>>
<START-RIDE ,FLUME>
<MOVE ,PROTAGONIST ,LOG-BOAT>
<ENABLE <QUEUE I-FLUME-TRIP 2>>
<TELL
"As you enter the log boat, it lurches away from the platform and is
carried swiftly away by the current of the flume. ">
<PARK-NYMPH ,LOG-BOAT>)>>
<ROUTINE I-FLUME-TRIP ()
<ENABLE <QUEUE I-FLUME-TRIP -1>>
<SETG RIDE-COUNTER <+ ,RIDE-COUNTER 1>>
<COND (<NOT ,RIDE-IN-PROGRESS>
<DISABLE <INT I-FLUME-TRIP>>
<SETG RIDE-COUNTER 0>
<RFALSE>)>
<CRLF>
<COND (<EQUAL? ,RIDE-COUNTER 1>
<TELL
"The flume is wide here, and straight as an arrow.
The ride is quite relaxing." CR>)
(<EQUAL? ,RIDE-COUNTER 2>
<TELL
"You enter a stretch of sharp, winding curves! Spray dashes your face as you
are tossed about the log boat!" CR>)
(<EQUAL? ,RIDE-COUNTER 3>
<TELL
"The twists and turns are left behind as you approach the
mouth of a dark tunnel." CR>)
(<EQUAL? ,RIDE-COUNTER 4>
<COND (<OR ,LIT ,BLORTED>
<TELL
"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." CR>)
(T
<TELL
"It is pitch black. The roar of the flume's current echoes about the tunnel.
A spot of light is visible ahead." CR>)>)
(<EQUAL? ,RIDE-COUNTER 5>
<TELL
"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!" CR>)
(<EQUAL? ,RIDE-COUNTER 6>
<TELL
"Magically, the flume flows uphill here! The current slows as the boat
climbs and climbs..." CR>)
(<EQUAL? ,RIDE-COUNTER 7>
<TELL
"You reach the crest of the flume's final drop. You can see swirling
white water below!" CR>)
(<EQUAL? ,RIDE-COUNTER 8>
<TELL
"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!" CR>)
(<EQUAL? ,RIDE-COUNTER 9>
<END-RIDE>
<DISABLE <INT I-FLUME-TRIP>>
<TELL
"The boat floats serenely around a final turn and pulls up to the boarding
platform." CR>)>>
<ROOM ROLLER-COASTER
(IN ROOMS)
(DESC "Roller Coaster")
(SOUTH TO WEST-END-OF-MIDWAY)
(FLAGS RLANDBIT ONBIT INSIDEBIT)
(GLOBAL BOZBARLAND)
(PSEUDO "MIDWAY" MIDWAY-PSEUDO "PLAQUE" PLAQUE-PSEUDO)
(ACTION ROLLER-COASTER-F)>
<ROUTINE ROLLER-COASTER-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<COND (,RIDE-IN-PROGRESS
<RTRUE>)
(T
<TELL
"You are at the boarding platform of a huge roller coaster, sprawling
above and around you in every direction.">
<PLAQUE>
<TELL "south.">
<COND (<NOT <IN? ,PROTAGONIST ,CAR>>
<SITS-AT-PLATFORM ,CAR>)>
<CRLF>)>)>>
<OBJECT CAR
(IN ROLLER-COASTER)
(DESC "car")
(SYNONYM CAR)
(FLAGS VEHBIT CONTBIT OPENBIT SEARCHBIT NDESCBIT)
(ACTION CAR-F)>
<ROUTINE CAR-F ("OPTIONAL" (RARG <>))
<COND (<AND <EQUAL? .RARG ,M-BEG>
<VERB? WALK>>
<NOT-GOING-ANYWHERE ,CAR>)
(.RARG
<RFALSE>)
(<VERB? OPEN CLOSE>
<TELL "Huh?" CR>)
(<VERB? THROUGH ENTER CLIMB-ON>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<AND <VERB? DROP DISEMBARK STAND EXIT>
,RIDE-IN-PROGRESS>
<END-RIDE>
<JIGS-UP
"Dumb idea. Your body ricochets off several wooden supports as it
plummets to the ground.">)
(<VERB? DROP EXIT>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(<AND <VERB? BOARD>
<NOT ,RIDE-IN-PROGRESS>>
<START-RIDE ,ROLLER-COASTER>
<MOVE ,PROTAGONIST ,CAR>
<ENABLE <QUEUE I-ROLLER-COASTER-TRIP 2>>
<TELL
"As you enter the car, it rolls away from the platform in a gentle curve. ">
<PARK-NYMPH ,CAR>)>>
<ROUTINE I-ROLLER-COASTER-TRIP ()
<ENABLE <QUEUE I-ROLLER-COASTER-TRIP -1>>
<SETG RIDE-COUNTER <+ ,RIDE-COUNTER 1>>
<COND (<NOT ,RIDE-IN-PROGRESS>
<DISABLE <INT I-ROLLER-COASTER-TRIP>>
<END-RIDE>
<RFALSE>)>
<CRLF>
<COND (<EQUAL? ,RIDE-COUNTER 1>
<TELL
"The car, propelled by some unseen force, rolls up a huge incline. The
crest grows tantalizingly closer." CR>)
(<EQUAL? ,RIDE-COUNTER 2>
<TELL
"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." CR>)
(<EQUAL? ,RIDE-COUNTER 3>
<TELL
"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." CR>)
(<EQUAL? ,RIDE-COUNTER 4>
<TELL
"The car zips through a series of wild turns and sharp drops. Wooden
roller coaster supports whiz past, inches from your head!" CR>)
(<EQUAL? ,RIDE-COUNTER 5>
<TELL
"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." CR>)
(<EQUAL? ,RIDE-COUNTER 6>
<TELL
"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!" CR>)
(<EQUAL? ,RIDE-COUNTER 7>
<TELL
"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!" CR>)
(<EQUAL? ,RIDE-COUNTER 8>
<TELL
"The roller coaster speeds out of the loop and into a tunnel">
<COND (<OR ,LIT ,BLORTED>
<TELL
", which seems to run through the middle of a haunted house! Wispy ghosts and
ghoulish skeletons brush past you">)
(T
<TELL
". You shiver as horrible slimy things brush across your face">)>
<TELL "." CR>)
(<EQUAL? ,RIDE-COUNTER 9>
<END-RIDE>
<DISABLE <INT I-ROLLER-COASTER-TRIP>>
<TELL
"The car zooms out into daylight, and glides to a stop at the
boarding platform." CR>)>>
<ROOM ARCADE
(IN ROOMS)
(DESC "Arcade")
(LDESC
"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.")
(NORTH PER ARCADE-EXIT-F)
(FLAGS RLANDBIT ONBIT INSIDEBIT)
(GLOBAL BOZBARLAND)
(PSEUDO "MIDWAY" MIDWAY-PSEUDO "BOOTH" BOOTH-PSEUDO)
(ACTION ARCADE-F)>
<GLOBAL HAWKER-SUBDUED <>>
<ROUTINE ARCADE-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-END>
<NOT ,HAWKER-SUBDUED>
<IN? ,BALL ,HAWKER>>
<TELL
"\"C'mon, pal!\" cries the hawker from the game booth. \"Try your luck!\"
He holds the ball out toward you." CR>)>>
<ROUTINE ARCADE-EXIT-F ()
<COND (<HELD? ,BALL>
<TELL
"The hawker yells after you, \"Hey buddy, come back with that ball!\"" CR CR>)>
,WEST-END-OF-MIDWAY>
<ROUTINE BOOTH-PSEUDO ()
<COND (<VERB? THROUGH>
<TELL "The hawker pushes you away." CR>)>>
<OBJECT HAWKER
(IN ARCADE)
(DESC "hawker")
(LDESC
"A hawker stands within the booth, studying you through half-closed eyes.")
(SYNONYM HAWKER)
(FLAGS ACTORBIT CONTBIT OPENBIT SEARCHBIT)
(ACTION HAWKER-F)>
<ROUTINE HAWKER-F ()
<COND (<EQUAL? ,HAWKER ,WINNER>
<COND (<AND <EQUAL? ,PRSO ,BALL>
<EQUAL? ,PRSI ,ME>
<VERB? GIVE>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?TAKE ,BALL>
<RTRUE>)
(T
<TELL "\"No time to gab, kid.">
<COND (<NOT ,HAWKER-SUBDUED>
<TELL
" C'mon and give it a try. One hit wins!">)>
<TELL "\"" CR>
<STOP>)>)
(<VERB? YOMIN>
<TELL
"The hawker is thinking about finding a good stogie, whatever that is." CR>)
(<VERB? AIMFIZ>
<JIGS-UP
"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.">)>>
<OBJECT BALL
(IN HAWKER)
(DESC "rubber ball")
(SYNONYM BALL)
(ADJECTIVE RUBBER)
(FLAGS TAKEBIT NDESCBIT TRYTAKEBIT)
(ACTION BALL-F)>
<ROUTINE BALL-F ()
<COND (<VERB? TAKE>
<FCLEAR ,BALL ,NDESCBIT>
<FCLEAR ,BALL ,TRYTAKEBIT>
<RFALSE>)
(<AND <VERB? ATTACK>
<EQUAL? ,PRSO ,RABBITS>>
<PERFORM ,V?THROW ,BALL ,RABBITS>
<RTRUE>)
(<AND <VERB? THROW>
<EQUAL? ,PRSI ,RABBITS>
<HELD? ,BALL>>
<COND (,FOOBLED
<MOVE ,MALYON-SCROLL ,PROTAGONIST>
<SETG SCORE <+ ,SCORE 10>>
<SETG HAWKER-SUBDUED T>
<MOVE ,BALL ,DIAL>
<TELL
"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.\"" CR>)
(T
<MOVE ,BALL ,HAWKER>
<FSET ,BALL ,NDESCBIT>
<FSET ,BALL ,TRYTAKEBIT>
<TELL <PICK-ONE ,MISSES> " This game is harder
than it looks. The hawker, leering, retrieves the ball." CR>)>)>>
<GLOBAL MISSES
<PLTABLE
"You miss the rabbit by a mile!"
"Your throw is way off!"
"The rabbit hops obliviously as your throw sails far off target!">>
<OBJECT RABBITS
(IN ARCADE)
(DESC "hopping bunny")
(SYNONYM BUNNY BUNNIE RABBIT)
(ADJECTIVE HOPPIN CUTE MECHAN)
(FLAGS NDESCBIT)
(ACTION RABBITS-F)>
<ROUTINE RABBITS-F ()
<COND (<VERB? MALYON>
<TELL
"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." CR>)>>
<OBJECT MALYON-SCROLL
(IN DIAL)
(DESC "glittering scroll")
(SYNONYM SCROLL)
(ADJECTIVE GLITTE)
(FLAGS READBIT SCROLLBIT TAKEBIT CONTBIT TRANSBIT)
(SIZE 3)
(ACTION SCROLL-F)>
<OBJECT MALYON-SPELL
(IN MALYON-SCROLL)
(SYNONYM SPELLS SPELL)
(ADJECTIVE MALYON)
(DESC "malyon spell")
(TEXT "bring life to inanimate objects")
(COUNT 0)
(SIZE 1)
(FLAGS NDESCBIT SPELLBIT TOUCHBIT)
(ACTION SPELL-F)>
<ROOM CASINO
(IN ROOMS)
(DESC "Casino")
(LDESC
"This is a large, plush room, slightly neglected.")
(EAST TO WEST-END-OF-MIDWAY)
(FLAGS RLANDBIT INSIDEBIT)
(GLOBAL BOZBARLAND)
(PSEUDO "LEVER" LEVER-PSEUDO "MIDWAY" MIDWAY-PSEUDO)
(ACTION CASINO-F)>
<ROUTINE CASINO-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
,JACKPOT-DUMPED>
<SETG JACKPOT-DUMPED <>>
<TELL
"You enter just as a group of casino nymphs finish cleaning up the last
of the zorkmid coins." CR CR>)>>
<OBJECT SLOT-MACHINE
(IN CASINO)
(DESC "odd machine")
(LDESC
"Standing on one side of the room is an odd machine, with a
three-section display and a large lever on the side.")
(SYNONYM MACHIN BANDIT DISPLA)
(ADJECTIVE ODD ONE- ARMED THREE SECTIO)
(FLAGS VOWELBIT)>
<GLOBAL JACKPOT-DUMPED <>>
<GLOBAL SLOT-MACHINE-BROKEN <>>
<ROUTINE LEVER-PSEUDO ("AUX" A B C)
<COND (<VERB? MOVE PUSH>
<COND (,FWEEPED
<BATTY>)
(,SLOT-MACHINE-BROKEN
<TELL
"The machine rattles loudly and makes a few feeble pings." CR>)
(T
<COND (<PROB 25>
<SET A <GET ,SLOT-MACHINE-TABLE 1>>)
(<PROB 33>
<SET A <GET ,SLOT-MACHINE-TABLE 2>>)
(<PROB 50>
<SET A <GET ,SLOT-MACHINE-TABLE 3>>)
(T
<SET A <GET ,SLOT-MACHINE-TABLE 4>>)>
<COND (<PROB 25>
<SET B <GET ,SLOT-MACHINE-TABLE 1>>)
(<PROB 33>
<SET B <GET ,SLOT-MACHINE-TABLE 2>>)
(<PROB 50>
<SET B <GET ,SLOT-MACHINE-TABLE 3>>)
(T
<SET B <GET ,SLOT-MACHINE-TABLE 4>>)>
<COND (<PROB 25>
<SET C <GET ,SLOT-MACHINE-TABLE 1>>)
(<PROB 33>
<SET C <GET ,SLOT-MACHINE-TABLE 2>>)
(<PROB 50>
<SET C <GET ,SLOT-MACHINE-TABLE 3>>)
(T
<SET C <GET ,SLOT-MACHINE-TABLE 4>>)>
<TELL
"Ping!|
A " .A " appears in the first section of the display.|
Ping!|
A " .B " appears in the second section of the display.|
Ping!|
A " .C " appears in the third section of the display." CR>
<COND (<AND <EQUAL? .A .B>
<EQUAL? .A .C>>
<COND (<EQUAL? .A <GET ,SLOT-MACHINE-TABLE 1>>
<SETG JACKPOT-DUMPED T>
<JIGS-UP
"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.">)
(T
<MOVE ,ZORKMID ,HERE>
<SETG SLOT-MACHINE-BROKEN T>
<TELL
"Ping! Ping! Ping!|
A zorkmid coin drops out of the machine and lands at your feet." CR>)>)
(T
<RTRUE>)>)>)>>
<GLOBAL SLOT-MACHINE-TABLE
<PTABLE
0
"pot of gold"
"clove of garlic"
"noisome stew"
"hot pepper sandwich">>

1254
parser.zil Normal file

File diff suppressed because it is too large Load Diff

45
sorcerer.zil Normal file
View File

@ -0,0 +1,45 @@
"SORCERER for
SORCERER
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
<PRINC "
*** SORCERER: Interlogic Fantasy ***
">
ON!-INITIAL "for DEBUGR"
OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>)>
<SNAME "SORCERER">
<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 "SYNTAX" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "GUILD" T>
<INSERT-FILE "BELBOZ" T>
<INSERT-FILE "FORT" T>
<INSERT-FILE "PARK" T>
<INSERT-FILE "MAZE" T>
<INSERT-FILE "COAL" T>
<INSERT-FILE "END" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>

BIN
sorcerer.zip Normal file

Binary file not shown.

633
syntax.zil Normal file
View File

@ -0,0 +1,633 @@
"SYNTAX for
SORCERER
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
<BUZZ A AN THE IS ARE AM AND OF THEN ALL ONE BUT EXCEPT \. \, \" YES NO Y
PRY PLEASE HERE SOME>
<SYNONYM WITH USING>
<SYNONYM THROUGH THRU>
<SYNONYM ON ONTO>
<SYNONYM IN INSIDE INTO>
<SYNONYM UNDER BELOW BENEATH UNDERNEATH>
<SYNONYM AROUND ALONG>
<SYNONYM ALL BOTH>
<SYNONYM NORTH N>
<SYNONYM SOUTH S>
<SYNONYM EAST E>
<SYNONYM WEST W>
<SYNONYM DOWN D>
<SYNONYM UP U>
<SYNONYM NW NORTHWEST>
<SYNONYM NE NORTHE>
<SYNONYM SW SOUTHWEST>
<SYNONYM SE SOUTHE>
\
;"game commands"
<SYNTAX VERBOSE = V-VERBOSE>
<SYNTAX BRIEF = V-BRIEF>
<SYNTAX SUPER = V-SUPER-BRIEF>
<SYNONYM SUPER SUPERBRIEF>
<SYNTAX DIAGNOSE = V-DIAGNOSE>
<SYNTAX INVENTORY = V-INVENTORY>
<SYNONYM INVENTORY I>
<SYNTAX QUIT = V-QUIT>
<SYNONYM QUIT Q>
<SYNTAX RESTAR = V-RESTART>
<SYNTAX RESTOR = V-RESTORE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SCORE = V-SCORE>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX VERSION = V-VERSION>
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
<SYNTAX \#COMMAND = V-$COMMAND>
<SYNTAX \#RECORD = V-$RECORD>
<SYNTAX \#UNRECORD = V-$UNRECORD>
;"subtitle real verbs"
<SYNTAX AGAIN = V-AGAIN>
<SYNONYM AGAIN G>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-REPLY>
<SYNONYM ANSWER REPLY RESPOND>
<SYNTAX APPLY OBJECT (HELD MANY HAVE) TO OBJECT = V-PUT PRE-PUT>
<SYNTAX ASK OBJECT (FIND ACTORBIT) FOR OBJECT = V-ASK-FOR>
<SYNTAX ASK OBJECT (FIND ACTORBIT) ABOUT OBJECT = V-ASK-ABOUT>
<SYNONYM ASK QUERY INTERROGATE QUIZ>
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
<SYNONYM ATTACK ASSAULT FIGHT HURT INJURE HIT>
<SYNTAX BITE OBJECT = V-BITE>
<SYNTAX BLOW UP OBJECT = V-INFLATE>
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNONYM BOARD EMBARK RIDE>
<SYNTAX BURN OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE) = V-BURN>
<SYNTAX BURN DOWN OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE) = V-BURN>
<SYNONYM BURN IGNITE KINDLE COMBUST>
<SYNTAX CLIMB OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-FOO>
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB UP OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX CLIMB DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX CLIMB OVER OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-OVER>
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNONYM CLIMB SCALE>
<SYNTAX DESCEN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX LIE DOWN OBJECT (FIND RLANDBIT) = V-LIE-DOWN>
<SYNTAX LIE ON OBJECT (FIND VEHBIT) = V-LIE-DOWN>
<SYNONYM LIE RECLINE REPOSE>
<SYNTAX CLOSE OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
<SYNONYM CLOSE SHUT>
<SYNTAX COMBIN OBJECT = V-COMBO>
<SYNONYM COMBIN COMBO>
<SYNTAX COMPAR OBJECT TO OBJECT = V-COMPARE>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNONYM COUNT TALLY>
<SYNTAX CROSS OBJECT = V-CROSS>
<SYNONYM CROSS FORD TRAVERSE>
<SYNTAX CUT OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
<SYNTAX CUT THROUGH OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
<SYNONYM CUT SLICE GASH SLASH LACERATE CLEAVE SEVER SPLIT>
<SYNTAX SHIT = V-CURSE>
<SYNONYM SHIT DAMN FUCK>
<SYNTAX DEFLATE OBJECT = V-DEFLATE>
<SYNTAX CRACK OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
<SYNTAX CRACK OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED TAKE) = V-MUNG>
<SYNTAX CRACK DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED TAKE) = V-MUNG>
<SYNONYM CRACK DESTROY DAMAGE BREAK SMASH DEMOLISH WRECK>
<SYNTAX DIG IN OBJECT = V-DIG>
<SYNTAX DIG WITH OBJECT = V-DIG>
<SYNTAX DIG THROUGH OBJECT = V-DIG>
<SYNTAX DIG OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE) = V-DIG>
<SYNTAX DIG IN OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE) = V-DIG>
<SYNONYM DIG EXCAVATE>
<SYNTAX DISEMBARK OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNONYM DISEMBARK DEBARK>
<SYNTAX DRINK OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-DRINK>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
<SYNONYM DRINK SIP SWALLOW IMBIBE QUAFF GUZZLE SWILL>
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP>
<SYNTAX DROP OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
<SYNONYM DROP RELEASE DUMP>
<SYNTAX EAT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-EAT>
<SYNONYM EAT CONSUME TASTE DEVOUR INGEST GOBBLE NIBBLE>
<SYNTAX ENTER = V-ENTER>
<SYNTAX ENTER OBJECT = V-THROUGH>
<SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT = V-EXIT>
<SYNONYM EXIT DEPART WITHDRAW>
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
= V-LOOK-INSIDE>
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
= V-LOOK-INSIDE>
<SYNTAX EXAMINE FOR OBJECT = V-FIND>
<SYNONYM EXAMINE INSPECT DESCRIBE CHECK STUDY SURVEY OBSERVE WATCH>
<SYNTAX EXORCISE OBJECT = V-EXORCISE>
<SYNTAX EXORCISE OUT OBJECT (FIND ACTORBIT) = V-EXORCISE>
<SYNTAX EXORCISE AWAY OBJECT (FIND ACTORBIT) = V-EXORCISE>
<SYNONYM EXORCISE BANISH DRIVE>
<SYNTAX EXTINGUISH OBJECT (FIND LIGHTBIT)
(MANY HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-OFF>
<SYNONYM EXTINGUISH DOUSE QUENCH>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT = V-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
AT OBJECT = V-FILL>
<SYNTAX FIND OBJECT = V-FIND>
<SYNONYM FIND SEEK SEE>
<SYNTAX FLY = V-FLY>
<SYNTAX FLY OBJECT = V-FLY>
<SYNTAX FOLLOW = V-FOLLOW>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<SYNONYM FOLLOW PURSUE CHASE>
<SYNTAX FORGET OBJECT = V-FORGET>
<SYNONYM FORGET UNLEARN UNMEMORIZE>
<SYNTAX GIVE OBJECT (MANY HELD HAVE)
TO OBJECT (FIND ACTORBIT) (ON-GROUND) = V-GIVE PRE-GIVE>
<SYNTAX GIVE OBJECT (FIND ACTORBIT) (ON-GROUND) OBJECT (MANY HELD HAVE)
= V-SGIVE>
<SYNONYM GIVE HAND DONATE OFFER FEED BESTOW PRESENT>
<SYNTAX HELLO = V-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO>
<SYNONYM HELLO HI GREETINGS SALUTATIONS>
<SYNTAX HELP = V-HELP>
<SYNONYM HELP HINT HINTS>
<SYNTAX HIDE = V-HIDE>
<SYNTAX HIDE OBJECT (HELD HAVE) = V-HIDE>
<SYNTAX HIDE UNDER OBJECT = V-HIDE>
<SYNTAX HIDE BEHIND OBJECT = V-HIDE>
<SYNTAX HIDE OBJECT (HELD HAVE) FROM OBJECT = V-HIDE>
<SYNONYM HIDE CONCEAL SECRETE STASH ENSCONCE>
<SYNTAX INFLAT OBJECT = V-INFLATE>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP IN OBJECT = V-LEAP>
<SYNTAX JUMP FROM OBJECT = V-LEAP>
<SYNTAX JUMP OFF OBJECT = V-LEAP>
<SYNONYM JUMP LEAP DIVE BOUND HURDLE VAULT>
<SYNTAX KICK OBJECT = V-KICK PRE-OPEN>
<SYNTAX KILL OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX KILL OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-KILL>
<SYNONYM KILL MURDER SLAY DISPATCH STAB VANQUISH>
<SYNTAX KISS OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KISS>
<SYNONYM KISS SMOOCH>
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNONYM KNOCK RAP>
<SYNTAX LAND = V-LAND>
<SYNTAX LAUNCH OBJECT (FIND VEHBIT) = V-LAUNCH>
<SYNTAX LEAN ON OBJECT (HELD HAVE) = V-LEAN-ON>
<SYNTAX LEAVE = V-LEAVE>
<SYNTAX LEAVE OBJECT = V-DROP>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-LAMP-ON>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED HAVE) = V-BURN>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LISTEN FOR OBJECT = V-LISTEN>
<SYNONYM LISTEN HARKEN>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND TOOLBIT)
(HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-LOCK>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK AROUND OBJECT (FIND RLANDBIT) = V-LOOK>
<SYNTAX LOOK DOWN OBJECT (FIND RLANDBIT) = V-LOOK-DOWN>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX LOOK THROUGH OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LOOK-INSIDE>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE) THROUGH OBJECT
= V-READ PRE-READ>
<SYNTAX LOOK UP OBJECT (FIND RLANDBIT) = V-RESEARCH PRE-RESEARCH>
<SYNTAX LOOK UP OBJECT IN OBJECT = V-RESEARCH PRE-RESEARCH>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNTAX LOOK OBJECT = V-CHASTISE>
<SYNONYM LOOK L STARE GAZE>
<SYNTAX LOWER OBJECT = V-LOWER>
<SYNTAX LOWER OBJECT IN OBJECT = V-LOWER-INTO>
<SYNTAX LOWER OBJECT DOWN OBJECT = V-LOWER-INTO>
<SYNTAX MELT OBJECT WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-MELT>
<SYNONYM MELT LIQUIFY DISSOLVE THAW>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX ROLL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNONYM MOVE DISLOCATE SHIFT DISPLA>
<SYNTAX PAY OBJECT (MANY HELD HAVE) = V-PAY>
<SYNTAX PAY OBJECT (FIND ACTORBIT) WITH OBJECT (MANY HELD HAVE) = V-PAY>
<SYNTAX PAY OBJECT (MANY HELD HAVE) TO OBJECT (FIND ACTORBIT) = V-SPAY>
<SYNTAX PAY OBJECT (FIND ACTORBIT) OBJECT (MANY HELD HAVE) = V-PAY>
<SYNTAX PLAY OBJECT = V-PLAY>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX PULL DOWN OBJECT = V-LOWER>
<SYNONYM PULL TUG DRAG SHOVE YANK>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN PRE-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN PRE-OPEN>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
= V-OPEN PRE-OPEN>
<SYNTAX PICK OBJECT = V-PICK>
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND MANY) = V-TAKE PRE-TAKE>
<SYNTAX PLUG OBJECT WITH OBJECT = V-PLUG>
<SYNONYM PLUG GLUE PATCH REPAIR FIX CLOG>
<SYNTAX POINT AT OBJECT = V-POINT>
<SYNTAX POINT TO OBJECT = V-POINT>
<SYNONYM POINT GESTURE>
<SYNTAX POKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-MUNG>
<SYNONYM POKE JAB BLIND>
<SYNTAX POUR OBJECT (HELD CARRIED) = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-POUR>
<SYNONYM POUR SPILL SPRINKLE>
<SYNTAX PUMP UP OBJECT = V-PUMP>
<SYNTAX PUMP UP OBJECT WITH OBJECT = V-PUMP>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) OBJECT = V-PUSH-TO>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) TO OBJECT = V-PUSH-TO>
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
<SYNONYM PUSH PRESS THRUST NUDGE>
<SYNTAX PUT OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE) OVER OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE) ACROSS OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT DOWN OBJECT (HELD MANY) = V-DROP>
<SYNTAX PUT OBJECT (HELD MANY HAVE) UNDER OBJECT = V-PUT-UNDER>
<SYNTAX PUT ON OBJECT (IN-ROOM ON-GROUND CARRIED MANY) = V-WEAR>
<SYNTAX PUT OBJECT (HELD MANY HAVE) BEHIND OBJECT = V-PUT-BEHIND>
<SYNONYM PUT STUFF INSERT PLACE LAY>
<SYNTAX RAISE OBJECT = V-RAISE>
<SYNTAX RAISE UP OBJECT = V-RAISE>
<SYNONYM RAISE LIFT ELEVATE HOIST>
<SYNTAX RAPE OBJECT (FIND ACTORBIT) = V-RAPE>
<SYNONYM RAPE MOLEST DEFILE RAVISH>
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-READ PRE-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
THROUGH OBJECT = V-READ PRE-READ>
<SYNTAX READ ABOUT OBJECT = V-RESEARCH PRE-RESEARCH>
<SYNTAX READ ABOUT OBJECT IN OBJECT = V-RESEARCH PRE-RESEARCH>
<SYNONYM READ SKIM>
<SYNTAX REMOVE OBJECT (FIND WEARBIT) (HAVE) = V-TAKE-OFF>
<SYNONYM REMOVE DOFF SHED>
<SYNTAX SAY TO OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
<SYNTAX SAY = V-SAY>
<SYNONYM SAY TALK CALL UTTER PROCLAIM>
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNONYM SEARCH RUMMAGE FRISK RANSACK>
<SYNTAX SEND FOR OBJECT = V-SEND>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNONYM SHAKE JOSTLE RATTLE>
<SYNTAX SHARPEN OBJECT WITH OBJECT (FIND TOOLBIT) (HAVE) = V-SHARPEN>
<SYNONYM SHARPEN HONE>
<SYNTAX SHOOT OBJECT = V-SHOOT>
<SYNONYM SHOOT FIRE DISCHARGE>
<SYNTAX SHOW OBJECT TO OBJECT = V-SHOW>
<SYNTAX SHOW OBJECT OBJECT = V-SSHOW PRE-SSHOW>
<SYNTAX SIT ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX SIT DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-SIT>
<SYNTAX SIT IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX SIT AT OBJECT = V-SIT>
<SYNONYM SIT REST SQUAT>
<SYNTAX SLEEP = V-SLEEP>
<SYNTAX SLEEP IN OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNTAX SLEEP ON OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNTAX NAP = V-SLEEP>
<SYNTAX NAP IN OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNTAX NAP ON OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNTAX SNOOZE = V-SLEEP>
<SYNTAX SNOOZE IN OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNTAX SNOOZE ON OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNTAX SKIP = V-SKIP>
<SYNONYM SKIP HOP CAVORT GAMBOL>
<SYNTAX SLIDE OBJECT = V-PUSH>
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>
<SYNTAX SLIDE OBJECT (IN-ROOM ON-GROUND) OBJECT = V-PUSH-TO>
<SYNTAX SLIDE OBJECT (IN-ROOM ON-GROUND) TO OBJECT = V-PUSH-TO>
<SYNTAX SMELL OBJECT = V-SMELL>
<SYNONYM SMELL SNIFF WHIFF>
<SYNTAX SPIN OBJECT = V-SPIN>
<SYNONYM SPIN WHIRL ROTATE GYRATE>
<SYNTAX SPRAY OBJECT = V-SPRAY>
<SYNTAX SPRAY OBJECT ON OBJECT = V-SPRAY>
<SYNTAX SPRAY OBJECT WITH OBJECT = V-SSPRAY>
<SYNTAX SQUEEZE OBJECT = V-SQUEEZE>
<SYNTAX SQUEEZE OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX STAND ON OBJECT = V-STAND-ON>
<SYNONYM STAND RISE>
<SYNTAX STRIKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE) = V-ATTACK>
<SYNTAX STRIKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-STRIKE>
<SYNTAX SWIM = V-SWIM>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<SYNONYM SWIM BATHE WADE>
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-SWING>
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
AT OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-SWING>
<SYNONYM SWING THRUST>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE OUT OBJECT (FIND VEHBIT) (ON-GROUND) = V-DISEMBARK>
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX TAKE UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OUT OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OFF OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
IN OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OFF OBJECT (FIND WEARBIT) (HAVE) = V-TAKE-OFF>
<SYNONYM TAKE GRAB CATCH GET HOLD CARRY SEIZE CONFISCATE SNATCH>
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
<SYNTAX THANK OBJECT = V-THANK>
<SYNTAX THANK = V-THANK>
<SYNONYM THANK THANKS>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
AT OBJECT (ON-GROUND IN-ROOM) = V-THROW>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OFF OBJECT = V-THROW-OFF>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OVER OBJECT = V-THROW-OFF>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
THROUGH OBJECT (ON-GROUND IN-ROOM) = V-THROW>
<SYNTAX THROW OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
<SYNONYM THROW HURL CHUCK TOSS FLING PITCH>
<SYNTAX TIE OBJECT TO OBJECT = V-TIE>
<SYNTAX TIE UP OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-TIE-UP>
<SYNONYM TIE FASTEN SECURE ATTACH>
<SYNTAX TIME = V-TIME>
<SYNONYM TIME T>
<SYNTAX TORTUR OBJECT = V-TORTURE>
<SYNTAX TOUCH OBJECT = V-RUB>
<SYNTAX TOUCH OBJECT WITH OBJECT = V-RUB>
<SYNONYM TOUCH FEEL PAT PET RUB>
<SYNTAX TURN OBJECT TO OBJECT = V-TURN>
<SYNTAX TURN OBJECT FOR OBJECT = V-TURN>
<SYNTAX TURN OBJECT = V-TURN>
<SYNTAX TURN OBJECT WITH OBJECT (FIND TOOLBIT) (HAVE) = V-TURN>
<SYNTAX TURN ON OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-LAMP-ON>
<SYNTAX TURN OFF OBJECT (FIND LIGHTBIT)
(HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-LAMP-OFF>
<SYNONYM TURN FLIP SHUT SET>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (HAVE) = V-UNLOCK>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-UNTIE>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) FROM OBJECT = V-UNTIE>
<SYNONYM UNTIE FREE UNFASTEN UNATTACH UNHOOK>
<SYNTAX WAIT = V-WAIT>
<SYNTAX WAIT FOR OBJECT = V-WAIT-FOR>
<SYNONYM WAIT Z>
<SYNTAX WAKE OBJECT (FIND RLANDBIT) = V-ALARM>
<SYNTAX WAKE UP OBJECT (FIND RLANDBIT) = V-ALARM>
<SYNONYM WAKE AWAKE SURPRISE STARTLE ROUSE>
<SYNTAX WALK = V-WALK-AROUND>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT = V-THROUGH>
<SYNTAX WALK ON OBJECT = V-WALK-AROUND>
<SYNTAX WALK OVER OBJECT = V-LEAP>
<SYNTAX WALK THROUGH OBJECT = V-THROUGH>
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
<SYNTAX WALK UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX WALK DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNONYM WALK GO RUN PROCEED STEP ADVANCE TRUDGE HIKE TRAMP>
<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
<SYNTAX WAVE AT OBJECT = V-WAVE-AT>
<SYNTAX WAVE TO OBJECT = V-WAVE-AT>
<SYNTAX YELL AT OBJECT = V-WAVE-AT>
<SYNTAX WAVE OBJECT (HELD CARRIED) AT OBJECT = V-WAVE-AT>
<SYNONYM WAVE MOTION BRANDISH BECKON>
<SYNTAX WAX OBJECT = V-WAX>
<SYNTAX WAX OBJECT WITH OBJECT = V-WAX>
<SYNONYM WAX POLISH SHINE>
<SYNTAX WEAR OBJECT = V-WEAR>
<SYNONYM WEAR DON>
<SYNTAX WHAT OBJECT = V-WHAT>
<SYNONYM WHAT WHATS>
<SYNTAX WHERE OBJECT = V-WHERE>
<SYNONYM WHERE WHERES>
<SYNTAX WHO OBJECT = V-WHO>
<SYNONYM WHO WHOS>
<SYNTAX YELL = V-YELL>
<SYNONYM YELL SCREAM SHOUT HOWL>
\^L
;"magic spell syntaxes"
<SYNTAX CAST OBJECT = V-CAST>
<SYNTAX CAST OBJECT ON OBJECT = V-CAST>
<SYNTAX CAST OBJECT AT OBJECT = V-CAST>
<SYNONYM CAST INCANT INVOKE>
<SYNTAX LEARN OBJECT (HELD CARRIED MANY) = V-LEARN>
<SYNONYM LEARN MEMORIZE KNOW>
<SYNTAX SPELLS = V-SPELLS>
<SYNTAX AIMFIZ OBJECT = V-AIMFIZ PRE-CAST>
<SYNTAX AIMFIZ OBJECT TO OBJECT = V-AIMFIZ-TO>
<SYNTAX FROTZ OBJECT = V-FROTZ PRE-CAST>
<SYNTAX FWEEP = V-FWEEP PRE-CAST>
<SYNTAX FWEEP OBJECT = V-FWEEP PRE-CAST>
<SYNTAX GASPAR = V-GASPAR PRE-CAST>
<SYNTAX GASPAR OBJECT = V-GASPAR PRE-CAST>
<SYNTAX GNUSTO OBJECT = V-GNUSTO PRE-CAST>
<SYNTAX GOLMAC OBJECT = V-GOLMAC PRE-CAST>
<SYNTAX IZYUK OBJECT = V-IZYUK PRE-CAST>
<SYNTAX MEEF OBJECT = V-MEEF PRE-CAST>
<SYNTAX MALYON OBJECT = V-MALYON PRE-CAST>
<SYNTAX PULVER OBJECT = V-PULVER PRE-CAST>
<SYNTAX REZROV OBJECT = V-REZROV PRE-CAST>
<SYNTAX SWANZO OBJECT = V-SWANZO PRE-CAST>
<SYNTAX VARDIK OBJECT (FIND ACTORBIT) = V-VARDIK PRE-CAST>
<SYNTAX VEZZA = V-VEZZA PRE-CAST>
<SYNTAX VEZZA OBJECT = V-VEZZA PRE-CAST>
<SYNTAX YOMIN OBJECT (FIND ACTORBIT) = V-YOMIN PRE-CAST>
<SYNTAX YONK OBJECT = V-YONK PRE-CAST>

3276
verbs.zil Normal file

File diff suppressed because it is too large Load Diff