Revision 63 (Original Source)

This commit is contained in:
historicalsource 2019-04-14 00:26:43 -04:00
commit 3a4d17d26a
19 changed files with 18070 additions and 0 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
# spellbreaker

1903
c1.zil Normal file

File diff suppressed because it is too large Load Diff

1386
c2.zil Normal file

File diff suppressed because it is too large Load Diff

2284
c3.zil Normal file

File diff suppressed because it is too large Load Diff

1839
c4.zil Normal file

File diff suppressed because it is too large Load Diff

40
debug.zil Normal file
View File

@ -0,0 +1,40 @@
%<DEBUG-CODE <GLOBAL ZDEBUG <>>>
%<DEBUG-CODE <SYNTAX $DEBUG = V-$DEBUG>>
%<DEBUG-CODE
<ROUTINE V-$DEBUG ()
<COND (<SETG ZDEBUG <NOT ,ZDEBUG>>
<TELL-ON>)
(T <TELL-OFF>)>>>
%<DEBUG-CODE <ROUTINE TELL-ON () <TELL "On." CR>>>
%<DEBUG-CODE <ROUTINE TELL-OFF () <TELL "Off." CR>>>
%<DEBUG-CODE <SYNTAX $BLORPLE OBJECT = V-$BLORPLE>>
%<DEBUG-CODE
<ROUTINE V-$BLORPLE ("AUX" CUBE)
<MOVE ,PRSO ,WINNER>
<V-BLORPLE>>>
%<DEBUG-CODE <SYNTAX $CHEAT = V-$CHEAT>>
%<DEBUG-CODE
<ROUTINE V-$CHEAT ("AUX" CUBE)
<TELL "[Solution: " D ,TIME-CUBE "]" CR>>>
%<DEBUG-CODE
<SYNTAX $TAKE OBJECT = V-$TAKE>>
%<DEBUG-CODE
<ROUTINE V-$TAKE ("AUX" CUBE)
<MOVE ,PRSO ,WINNER>
<FCLEAR ,PRSO ,NDESCBIT>
<FCLEAR ,PRSO ,INVISIBLE>
<TELL ,TAKEN>>>
%<DEBUG-CODE
<ROUTINE TELL-C-INTS ()
<TELL "[MaxInts: " N </ <- ,C-TABLELEN ,C-MAXINTS> ,C-INTLEN>
"]" CR>>>

1087
globals.zil Normal file

File diff suppressed because it is too large Load Diff

688
guild.zil Normal file
View File

@ -0,0 +1,688 @@
"GUILD for
MAGE
(c) Copyright 1985 Infocom, Inc. All Rights Reserved."
<OBJECT KNIFE
(IN PLAYER)
(DESC "knife")
(SYNONYM KNIFE DAGGER)
(FLAGS TAKEBIT WEAPONBIT)
(ACTION KNIFE-F)>
<ROUTINE KNIFE-F ()
<COND (<AND <VERB? CUT>
<EQUAL? ,PRSO ,BREAD ,FISH>>
<TELL
"You slice off a little piece and eat it. It tastes pretty good, but
you really weren't feeling very hungry." CR>)>>
<ROOM GUILD-HALL
(IN ROOMS)
(DESC "Guild Hall")
(NORTH TO COUNCIL-CHAMBER)
(SOUTH TO BELWIT-SQUARE)
(OUT TO BELWIT-SQUARE)
(ACTION GUILD-HALL-F)
(FLAGS ONBIT RLANDBIT)>
<ROUTINE GUILD-HALL-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is the entrance to the Guild Hall in Borphee. To the north is
the Council Chamber, and to the south is an exit leading outside.">
<COND (<OR <NOT <FSET? ,BREAD ,TOUCHBIT>>
<NOT <FSET? ,FISH ,TOUCHBIT>>>
<TELL
" Little is left of the sumptuous buffet lunch. Only ">
<COND (<NOT <FSET? ,BREAD ,TOUCHBIT>>
<TELL "a loaf of bread">
<COND (<NOT <FSET? ,FISH ,TOUCHBIT>>
<TELL " and ">)>)>
<COND (<NOT <FSET? ,FISH ,TOUCHBIT>>
<TELL "some smoked fish">)>
<TELL " remains.">)>
<CRLF>)>>
<OBJECT BREAD
(IN GUILD-HALL)
(DESC "chunk of rye bread")
(SYNONYM BREAD FOOD LOAF CHUNK)
(ADJECTIVE FRESH RYE LOAF CHUNK)
(FLAGS NDESCBIT BRIEFBIT TAKEBIT)>
<OBJECT FISH
(IN GUILD-HALL)
(DESC "smoked fish")
(SYNONYM FISH SARDINE HERRING FOOD)
(ADJECTIVE SMOKED)
(FLAGS NDESCBIT BRIEFBIT TAKEBIT)
(GENERIC GENERIC-FISH-F)>
<ROOM COUNCIL-CHAMBER
(IN ROOMS)
(DESC "Council Chamber")
(ACTION COUNCIL-CHAMBER-F)
(SOUTH TO GUILD-HALL)
(OUT TO GUILD-HALL)
(FLAGS ONBIT RLANDBIT)
(THINGS
<PSEUDO (LEOPARD FROG FROG-PSEUDO)
(<> FROGS AMPHIBIAN-PSEUDO)
(TREE TOAD TOAD-PSEUDO)
(<> TOADS AMPHIBIAN-PSEUDO)
(<> SALAMANDER SALAMANDER-PSEUDO)
(<> NEWT NEWT-PSEUDO)
(<> NEWTS AMPHIBIAN-PSEUDO)
(<> HELLBENDER HELLBENDER-PSEUDO)
(<> EFT AMPHIBIAN-PSEUDO)
(<> EFTS AMPHIBIAN-PSEUDO)>)>
<ROUTINE FROG-PSEUDO ()
<COND (,CLEESHED? <REDIRECT ,PSEUDO-OBJECT ,GZORNENPLATZ>)
(ELSE <AMPHIBIAN-PSEUDO>)>>
<ROUTINE TOAD-PSEUDO ()
<COND (,CLEESHED? <REDIRECT ,PSEUDO-OBJECT ,SNEFFLE>)
(ELSE <AMPHIBIAN-PSEUDO>)>>
<ROUTINE SALAMANDER-PSEUDO ()
<COND (,CLEESHED? <REDIRECT ,PSEUDO-OBJECT ,HOOBLY>)
(ELSE <AMPHIBIAN-PSEUDO>)>>
<ROUTINE NEWT-PSEUDO ()
<COND (,CLEESHED? <REDIRECT ,PSEUDO-OBJECT ,ARDIS>)
(ELSE <AMPHIBIAN-PSEUDO>)>>
<ROUTINE HELLBENDER-PSEUDO ()
<COND (,CLEESHED? <REDIRECT ,PSEUDO-OBJECT ,ORKAN>)
(ELSE <AMPHIBIAN-PSEUDO>)>>
<ROUTINE AMPHIBIAN-PSEUDO ()
<COND (,CLEESHED?
<TELL
"They are hopping around so wildly it's hard to do anything with them." CR>)
(ELSE
<TELL
"I think you had too much punch at lunch. There's no such thing here." CR>)>>
<GLOBAL ORATOR <>>
<GLOBAL CLEESHED? <>>
<OBJECT SORCERER
(IN COUNCIL-CHAMBER)
(DESC "sorcerer")
(SYNONYM SORCERER ENCHANTER MAGE MAGES)
(ADJECTIVE GROUP PARTY)
(ACTION SORCERER-F)
(FLAGS NDESCBIT PERSON THE)>
<ROUTINE SORCERER-F ()
<COND (<VERB? TELL>
<TELL
,MORE-SPECIFIC ". There are about ten of them around, including
yourself." CR>)
(<VERB? EXAMINE>
<COND (,CLEESHED?
<TELL
"The former mages are scuttling hither and yon across the floor." CR>)
(ELSE
<TELL
"The mages, grouped loosely near you, are listening to the speakers." CR>)>)
(<VERB? COUNT>
<COND (,CLEESHED?
<TELL
"It's hard to tell. I assume there are still about ten." CR>)
(ELSE
<TELL
"There are about ten, including you and " 'ORKAN ", the
most eminent of the group, now that Belboz has retired." CR>)>)>>
<OBJECT SPEAKER
(IN COUNCIL-CHAMBER)
(DESC "speaker")
(SYNONYM SPEAKER ORATOR GUILDMASTER)
(ACTION SPEAKER-F)
(FLAGS NDESCBIT)>
<ROUTINE SPEAKER-F ()
<REDIRECT ,SPEAKER ,ORATOR>>
<ROUTINE COUNCIL-CHAMBER-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in the Council Chamber of the ancient Guild Hall at Borphee. To
the south is the entry of the Guild Hall. ">
<COND (,CLEESHED?
<TELL
"Scurrying wetly hither and yon around you are many brightly colored newts,
efts, and salamanders. Toads and frogs hop excitedly about.">)
(ELSE
<TELL
"There is a meeting of the Guildmasters going on. You are standing among
a group of about ten sorcerers, each the master of an Enchanters Guild chapter
somewhere in the land.">
<COND (<G? ,OCOUNT 0>
<TELL
" " 'ORATOR " is addressing the meeting.">)>)>
<CRLF>)
(<EQUAL? .RARG ,M-BEG>
<COND (<NOT ,CLEESHED?>
<COND (<VERB? WALK>
<TELL
"Annoyed guildmasters make way grudgingly. You hear muttering about
\"arrogant enchanters\" as you try to leave the chamber. Finally, "
'ORKAN ", one of your colleagues, says, \"Stay. Be quiet. Don't
embarrass us.\"" CR>)
(<AND <VERB? SAY> <NOT ,PRSO>>
<TELL
'ORKAN " quiets you. \"Interruptions will only annoy them.\"" CR>)
(<AND <VERB? LISTEN>
<NOT ,PRSO>>
<TELL
'ORATOR " is speaking." CR>)
(<SPELL-VERB?>
<TELL
'ORKAN " stares at you in wonderment. \"Are you trying to get them
even more mad at us?\" He makes a gesture of cancellation before you can
finish the spell." CR>)
(<AND <HOSTILE-VERB?>
<FSET? ,PRSO ,PERSON>>
<COND (<EQUAL? ,PRSO ,ORKAN>
<TELL
'ORKAN " easily subdues you without causing undue disruption." CR>)
(ELSE
<TELL
'ORKAN " grabs you and prevents your antisocial deed." CR>)>)
(<VERB? YAWN SLEEP>
<TELL
"Realizing how insulting you are being to the speaker, you try to stifle
the yawn." CR>)>)>)>>
<OBJECT ORKAN
(IN COUNCIL-CHAMBER)
(DESC "Orkan of Thriff")
(SYNONYM ORKAN)
(ADJECTIVE THRIFF)
(ACTION ORKAN-F)
(FLAGS PERSON NOABIT NOTHEBIT NDESCBIT)>
<ROUTINE ORKAN-F ()
<COND (<EQUAL? ,WINNER ,ORKAN>
<COND (<AND <VERB? TELL-ABOUT>
<EQUAL? ,PRSO ,ME>>
<RFALSE>)
(,CLEESHED?
<TELL "Orkan doesn't reply." CR>)
(ELSE
<TELL
"\"Please! You should at least pretend to pay attention to these fools,\"
whispers Orkan." CR>)>
<END-QUOTE>)
(<VERB? EXAMINE>
<COND (,CLEESHED?
<TELL "Orkan is now a hellbender." CR>)
(ELSE
<TELL
'ORKAN " is a large bear-like gentleman dressed in the traditional garb
of a mage." CR>)>)
(<VERB? LISTEN>
<COND (<NOT ,CLEESHED?>
<TELL
"Orkan is listening to the speaker and suggests you do the same." CR>)>)
(<VERB? YOMIN>
<COND (,CLEESHED?
<TELL
"You get a vague impression of hunger and annoyance at being dry." CR>)>)>>
<OBJECT SNEFFLE
(IN COUNCIL-CHAMBER)
(DESC "Sneffle")
(SYNONYM SNEFFLE BAKER)
(ACTION SNEFFLE-F)
(FLAGS PERSON NOABIT NOTHEBIT NDESCBIT)>
<ROUTINE SNEFFLE-F ()
<COND (<EQUAL? ,WINNER ,SNEFFLE>
<COND (<AND <VERB? TELL-ABOUT>
<EQUAL? ,PRSO ,ME>>
<RFALSE>)
(,CLEESHED?
<TELL "\"Breep!\"" CR>)
(ELSE
<TELL
"\"Interrupting, eh? This is precisely what I was talking about!\" snorts "
'SNEFFLE>
<TELL ,PERIOD>)>
<END-QUOTE>)
(<VERB? EXAMINE>
<COND (,CLEESHED?
<TELL "Sneffle is now a tree toad." CR>)
(ELSE
<TELL
"Sneffle is a small doughy gentleman whose person is splotched here and
there with flour." CR>)>)
(<VERB? LISTEN>
<COND (<NOT ,CLEESHED?>
<LISTEN-TO-GUILDMASTER>)>)
(<VERB? YOMIN>
<COND (,CLEESHED?
<TELL
"Sneffle is searching intently for flies." CR>)>)>>
<ROUTINE LISTEN-TO-GUILDMASTER ()
<TELL 'PRSO " is ">
<COND (<EQUAL? ,PRSO ,ORATOR>
<TELL "making a speech.">)
(ELSE
<TELL "listening to the speaker.">)>
<CRLF>>
<OBJECT HOOBLY
(IN COUNCIL-CHAMBER)
(DESC "Hoobly")
(SYNONYM HOOBLY BREWER)
(ADJECTIVE CORPULENT FAT)
(ACTION HOOBLY-F)
(FLAGS PERSON NOABIT NOTHEBIT NDESCBIT)>
<ROUTINE HOOBLY-F ()
<COND (<EQUAL? ,WINNER ,HOOBLY>
<COND (<AND <VERB? TELL-ABOUT>
<EQUAL? ,PRSO ,ME>>
<RFALSE>)
(,CLEESHED?
<TELL "\"Ssss!\"" CR>)
(<EQUAL? ,ORATOR ,HOOBLY>
<TELL
'HOOBLY " pointedly ignores you." CR>)
(ELSE
<TELL
"\"Your manners leave something to be desired! " 'ORATOR " is
speaking!\" remarks " 'HOOBLY>
<TELL ,PERIOD>)>
<END-QUOTE>)
(<VERB? EXAMINE>
<COND (,CLEESHED?
<TELL "Hoobly has become a salamander." CR>)
(ELSE
<TELL
"Hoobly is a large, florid, and solid-looking fellow who gives the appearance
of being one of his own better customers." CR>)>)
(<VERB? YOMIN>
<COND (,CLEESHED?
<TELL
"You get a strong feeling of torpidity." CR>)>)>>
<OBJECT GZORNENPLATZ
(IN COUNCIL-CHAMBER)
(DESC "Gzornenplatz")
(SYNONYM GZORNENPLATZ HUNTSMAN)
(ACTION GZORNENPLATZ-F)
(FLAGS PERSON NOABIT NOTHEBIT NDESCBIT)>
<ROUTINE GZORNENPLATZ-F ()
<COND (<EQUAL? ,WINNER ,GZORNENPLATZ>
<COND (<AND <VERB? TELL-ABOUT>
<EQUAL? ,PRSO ,ME>>
<RFALSE>)
(,CLEESHED?
<TELL "\"Braaaak! Gleep?\"" CR>)
(ELSE
<TELL
'GZORNENPLATZ " glares at you.">
<COND (<NOT <EQUAL? ,ORATOR ,GZORNENPLATZ>>
<TELL " \"No doubt you don't wish the speakers
to be heard. This is what I expect from such as you!\"">)>
<CRLF>)>
<END-QUOTE>)
(<VERB? EXAMINE>
<COND (,CLEESHED?
<TELL 'GZORNENPLATZ " has become a leopard frog." CR>)
(ELSE
<TELL
'GZORNENPLATZ " is a tall, whipcord thin man with sandy blond hair. He
is dressed in the traditional lincoln green of huntsmen." CR>)>)
(<VERB? YOMIN>
<COND (,CLEESHED?
<TELL
"You feel a strong impression of intent, careful stalking of a beetle."
CR>)>)>>
<OBJECT ARDIS
(IN COUNCIL-CHAMBER)
(DESC "Ardis")
(SYNONYM ARDIS POET)
(ACTION ARDIS-F)
(FLAGS PERSON NOABIT NOTHEBIT NDESCBIT)>
<ROUTINE ARDIS-F ()
<COND (<EQUAL? ,WINNER ,ARDIS>
<COND (<AND <VERB? TELL-ABOUT>
<EQUAL? ,PRSO ,ME>>
<RFALSE>)
(,CLEESHED?
<UNINTERESTED ,ARDIS>)
(ELSE
<TELL
"\"You must wait your turn!\" screams " 'ARDIS>
<TELL ,PERIOD>)>
<END-QUOTE>)
(<VERB? EXAMINE>
<COND (,CLEESHED?
<TELL "Ardis has become a newt." CR>)
(ELSE
<TELL
"Ardis is the muscular sort of poet (as opposed to the neurasthenic).
He sports a full black beard, wild hair, and talks in a loud voice." CR>)>)
(<VERB? YOMIN>
<COND (,CLEESHED?
<TELL
"You get a feeling of surprise and terror." CR>)>)>>
<ROOM BELWIT-SQUARE
(IN ROOMS)
(DESC "Belwit Square")
(NORTH TO GUILD-HALL)
(EAST "You wander around for a while and end up back in the square.")
(WEST "You wander around for a while and end up back in the square.")
(SOUTH "A remarkably surly guard blocks your way.")
(ACTION BELWIT-SQUARE-F)
(FLAGS ONBIT RLANDBIT)
(THINGS
<PSEUDO (SURLY GUARD GUARD-PSEUDO)
(STORIED MANSE MANSE-PSEUDO)
(GUILD HALL GUILD-HALL-PSEUDO)
(<> BUILDING RANDOM-PSEUDO)>)>
<ROUTINE GUILD-HALL-PSEUDO ()
<COND (<VERB? THROUGH>
<DO-WALK ,P?NORTH>)
(ELSE <RANDOM-PSEUDO>)>>
<ROUTINE MANSE-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "It is a large, imposing building of great age." CR>)
(<VERB? THROUGH>
<TELL "The manse is closed to the public." CR>)>>
<ROUTINE GUARD-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "He looks very zealous." CR>)
(<VERB? TELL ASK-ABOUT>
<TELL
"The guard ignores you, intent on his duty." CR>
<COND (<VERB? TELL> <END-QUOTE>)
(ELSE <RTRUE>)>)
(<VERB? SHOW GIVE OFFER>
<TELL "Trying to bribe the guard, eh?" CR>)
(<HOSTILE-VERB?>
<TELL "That would be incredibly dangerous." CR>)
(<SPELL-VERB?>
<TELL
"Nothing happens, as the mayoral guards are quite well-protected
from spells." CR>)>>
<ROUTINE BELWIT-SQUARE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is " 'HERE ". ">
<COND (<NOT <FSET? ,CLOUD ,INVISIBLE>>
<TELL
"Its many historic and picturesque buildings are obscured by
a cloud of orange smoke.">)
(ELSE
<TELL
"To the north is the ancient Guild Hall.
A wide cobblestone street runs east and west. To the south is the storied
Manse, home of the Mayors of Borphee for generations.">)>
<CRLF>)
(<AND <EQUAL? .RARG ,M-BEG>
<NOT <FSET? ,CLOUD ,INVISIBLE>>>
<COND (<VERB? WALK>
<TELL
,YOU-CANT-SEE "well enough to find your way out" ,PERIOD>)
(<EQUAL? ,PRSO ,CLOUD> <RFALSE>)
(<AND <VERB? FIND LOOK TAKE EXAMINE TELL ASK-ABOUT>
<NOT <HELD? ,PRSO>>>
<TELL
,YOU-CANT-SEE "anything, what with the smokey orange cloud that blankets
the square." CR>)
(<VERB? DROP>
<COND (<IDROP>
<TELL
"Dropped, but you lose it in the smoke." CR>)
(ELSE <RTRUE>)>)
(<AND <VERB? SMELL> <NOT ,PRSO>>
<SMELL-CLOUD>)>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<AND <FSET? ,DEATH-CUBE ,TOUCHBIT>
<NOT ,SAMARRA?>>
<SETG SAMARRA? T>
<QUEUE I-SAMARRA 1>)>)>>
<OBJECT SHADOW
(IN COUNCIL-CHAMBER)
(DESC "shadowy figure")
(SYNONYM FIGURE SHADOW TWIN BEING)
(ADJECTIVE SHADOW CLOAKED)
(DESCFCN SHADOW-DESC)
(ACTION SHADOW-F)
(FLAGS PERSON NDESCBIT TAKEBIT TRYTAKEBIT THE MAGICBIT)>
<ROUTINE SHADOW-DESC (RARG OBJ)
<COND (,CLEESHED?
<TELL
"A " 'SHADOW " in a dark cloak ">
<COND (<EQUAL? ,HERE ,GUILD-HALL ,COUNCIL-CHAMBER>
<TELL "is running out the door">)
(<EQUAL? ,HERE ,BELWIT-SQUARE>
<TELL "flees across the square">)
(ELSE
<TELL "is here">)>
<TELL ,PERIOD>)>>
<ROUTINE SHADOW-F ()
<COND (<OR <NOT <EQUAL? ,HERE ,CASTLE>>
<NOT <IN? ,SHADOW ,CASTLE>>>
<COND (<EQUAL? ,WINNER ,SHADOW>
<END-QUOTE>
<TELL "What shadow?" CR>)
(<AND <NOT ,CLEESHED?>
<VERB? FIND>
<PROB 33>>
<TELL
"There is a figure wearing a dark cloak on the other side of the room,
but almost the moment you catch sight of it, it disappears." CR>)
(<VERB? EXAMINE>
<TELL
"I don't see any " 'SHADOW " anywhere." CR>)
(<VERB? ASK-ABOUT TELL-ABOUT TELL-ME-ABOUT>
<RFALSE>)
(<AND <VERB? FOLLOW>
<NOT <IN? ,SHADOW ,HERE>>>
<COND (<EQUAL? ,HERE ,COUNCIL-CHAMBER ,GUILD-HALL>
<DO-WALK ,P?SOUTH>)
(ELSE
<TELL
"Where it went, I doubt you can follow." CR>)>)
(ELSE
<TELL
"There is no sign of such a person." CR>)>)
(<EQUAL? ,HERE ,CASTLE>
<COND (<EQUAL? ,WINNER ,SHADOW>
<COND (<TIME-FROZEN?>
<IMMOBILE>
<END-QUOTE>)
(ELSE
<TELL
"\"All will be revealed in due time.\"" CR>)>)
(<AND <VERB? GIVE>
<GETP ,PRSO ,P?CUBE>>
<MOVE ,PRSO ,HERE>
<FSET ,PRSO ,NDESCBIT>
<TELL
CTHE ,SHADOW " snatches it greedily." CR>)
(<HOSTILE-VERB?>
<COND (<EQUAL? ,TIME-STOPPED? ,HERE>
<TELL
"The frozen shadow is impervious to harm." CR>)
(ELSE <FREEZES-YOU>)>)
(<VERB? ESPNIS>
<TELL
"The shadow begins to nod off but with great effort resists and
awakens. ">
<FREEZES-YOU>)
(<VERB? YOMIN>
<TELL
"You feel your own innermost desires, petty jealousies, and unworthy
thoughts magnified a thousand times." CR>)
(<VERB? EXAMINE>
<TELL
CTHE ,SHADOW " is hard to see, almost as though some spell is acting
to obscure it. It's clad in a dark cloak with a hood, and it blends into
the background in a disturbing way." CR>)
(<AND <VERB? TELL> ,FROZEN?>
<TELL "You cannot speak." CR>
<END-QUOTE>)
(<AND <NOT ,FROZEN?>
<G? ,SHADOW-COUNT 4>
<L? ,SHADOW-COUNT 8>>
<COND (<VERB? TELL>
<FREEZES-YOU>)
(<OR <NO-CLOCK-VERB?>
<VERB? EXAMINE LOOK WAIT LOOK-INSIDE>>
<RFALSE>)
(ELSE
<FREEZES-YOU>)>)>)>>
<OBJECT CLOUD
(IN BELWIT-SQUARE)
(DESC "cloud of orange smoke")
(SYNONYM CLOUD SMOKE)
(ADJECTIVE ORANGE)
(FLAGS NDESCBIT INVISIBLE)
(ACTION CLOUD-F)>
<ROUTINE CLOUD-F ()
<COND (<VERB? EXAMINE>
<TELL
"This is a fairly standard " 'PRSO ", a side effect of a certain class
of teleportation spells. These spells are favored by those of a less
than honest nature, as the " 'PRSO " serves to conceal their usually
hasty departures." CR>)
(<VERB? THROUGH>
<TELL ,YOU-ARE " in the middle of it." CR>)
(<VERB? SMELL>
<SMELL-CLOUD>)>>
<ROUTINE SMELL-CLOUD ()
<TELL
"It smells vaguely of orange peels, but the predominant motif is less
pleasant and more acrid." CR>>
<ROOM CASTLE
(IN ROOMS)
(DESC "Castle")
(ACTION CASTLE-F)
(FLAGS RLANDBIT ONBIT)
(THINGS
<PSEUDO (<> THRONE RANDOM-PSEUDO)
(<> WINDOW RANDOM-PSEUDO)
(<> SKYLIGHT RANDOM-PSEUDO)
(<> MIST RANDOM-PSEUDO)>)>
<ROUTINE CASTLE-F (RARG "AUX" F)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is the audience chamber. It is high and spacious, and every
proportion and decoration is intended to highlight the throne that
looms before you. The throne itself is bathed in light, but only
featureless gray may be seen through the windows and skylights." CR>)
(<EQUAL? .RARG ,M-BEG>
<COND (<OR <VERB? EXAMINE WAIT LOOK>
<NO-CLOCK-VERB?>>
<RFALSE>)
(,FROZEN?
<COND (<EQUAL? ,FROZEN? 1>
<COND (<NOT <EQUAL? ,TIME-STOPPED? ,HERE>>
<TELL "You clumsily attempt to ">
<COND (<SPELL-VERB?>
<TELL "cast the spell.">)
(ELSE
<TELL "do it.">)>
<COND (<OR <L? ,SHADOW-COUNT 8>
<SPELL-VERB?>
<HOSTILE-VERB?>
<EQUAL? ,PRSO ,SHADOW>>
<TELL " ">
<FREEZES-YOU>)>
<RTRUE>)>)
(ELSE
<TELL "You are frozen." CR>)>)
(<VERB? LEARN>
<TELL
"Something about this place prevents you. It's unsettling." CR>)
(<VERB? TAKE>
<COND (<EQUAL? ,TIME-STOPPED? ,HERE>
<COND (<NOT <ZERO? ,P-MULT>>
<TELL
"As you try to decide what to take first, the spell wears off! ">
<FREEZES-YOU>
<RFATAL>)
(<AND <EQUAL? ,PRSO ,MAGIC-CUBE>
<EQUAL? ,SHADOW-COUNT 9>>
<MOVE ,MAGIC-CUBE ,WINNER>
<FCLEAR ,MAGIC-CUBE ,NDESCBIT>
<TELL
"You tug and pull at the cube, trying desperately to remove it from its
place in the center of the tesseract. With your last reserve of strength
you free it!" CR>)
(<AND <GETP ,PRSO ,P?CUBE>
<FSET? ,PRSO ,NDESCBIT>>
<TELL
"You can no longer see " THE ,PRSO " in the blaze of light." CR>)
(<EQUAL? <ITAKE> T>
<TELL ,TAKEN>)
(ELSE <RTRUE>)>)
(<IN? ,SHADOW ,HERE>
<FREEZES-YOU>)>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,HYPERCUBE>>
<COND (<EQUAL? ,TIME-STOPPED? ,HERE>
<COND (<SET F <FIRST? ,HYPERCUBE>>
<TELL
CTHE .F " is already there." CR>)
(ELSE
<MOVE ,PRSO ,HYPERCUBE>
<FSET ,PRSO ,NDESCBIT>
<TELL
"You push " THE ,PRSO " into the hypercube, where it hangs unsupported." CR>)>)
(<IN? ,SHADOW ,HERE>
<FREEZES-YOU>)>)
(<AND <VERB? BOARD>
<IN? ,SHADOW ,HERE>
<NOT <EQUAL? ,TIME-STOPPED? ,HERE>>>
<FREEZES-YOU>)
(<VERB? JINDAK>
<TELL "Everything glows." CR>)>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<NOT <IN? ,SHADOW ,HERE>>
<QUEUE I-SHADOW-ARRIVES 2>)
(ELSE <QUEUE I-SHADOW -1>)>
<TELL
"Mocking laughter echoes around you." CR CR>)>>
<OBJECT HYPERCUBE
(DESC "construction")
(SYNONYM CONSTRUCT HYPERCUBE TESSERACT SQUARE)
(ADJECTIVE GLOWING TUMBLING)
(FLAGS NDESCBIT CONTBIT OPENBIT)
(ACTION HYPERCUBE-F)>
<ROUTINE HYPERCUBE-F ()
<COND (<VERB? EXAMINE>
<TELL
"It floats in front of you, glowing and tumbling." CR>)
(<VERB? LEAP>
<TELL
"Though tempted, you cannot bring yourself to do it." CR>)>>

1373
interrupts.zil Normal file

File diff suppressed because it is too large Load Diff

1364
magic.zil Normal file

File diff suppressed because it is too large Load Diff

957
misc.zil Normal file
View File

@ -0,0 +1,957 @@
"MISC for
MAGE
(c) 1985 by Infocom, Inc. All Rights Reserved."
;"former MACROS.ZIL stuff"
<SETG C-NORTH 1>
<SETG C-EAST 2>
<SETG C-WEST 4>
<SETG C-SOUTH 8>
<SETG C-NE 16>
<SETG C-NW 32>
<SETG C-SE 64>
<SETG C-SW 128>
<CONSTANT C-NORTH 1>
<CONSTANT C-EAST 2>
<CONSTANT C-WEST 4>
<CONSTANT C-SOUTH 8>
<CONSTANT C-NE 16>
<CONSTANT C-NW 32>
<CONSTANT C-SE 64>
<CONSTANT C-SW 128>
;"SUSPECT tell macro and friends"
<COND (<GASSIGNED? ZILCH> ;"version for when compiling"
<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>>)
;(<=? .P "V">
<MAPRET '<VPRINT>>)
(<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
<PFORM DPRINT .O>>)
(<=? .P "CD">
<MAPRET
<PFORM CDPRINT .O>>)
(<=? .P "THE">
<MAPRET
<PFORM THE-PRINT .O>>)
(<=? .P "CTHE">
<MAPRET
<PFORM CTHE-PRINT .O>>)
(<OR <=? .P "A">
<=? .P "AN">>
<MAPRET
<PFORM PRINTA .O>>)
(<OR <=? .P "NUM">
<=? .P "N">>
<MAPRET
<FORM PRINTN .O>>)
(<OR <=? .P "CHAR">
<=? .P "CHR">
<=? .P "C">>
<MAPRET
<FORM PRINTC
<CHTYPE .O FIX>>>)
(ELSE
<MAPRET
<FORM PRINT
<FORM GETP .O .E>>>)>)>)
(<TYPE? .E STRING ZSTRING>
<MAPRET
<COND (<==? <LENGTH .E> 1>
<FORM PRINTC
<CHTYPE <1 .E> FIX>>)
(ELSE
<FORM PRINTI .E>)>>)
(<AND <TYPE? .E FORM>
<==? <NTH .E 1> QUOTE>>
<MAPRET
<FORM PRINTD
<MAKE-GVAL <NTH .E 2>>>>)
(<TYPE? .E FORM LVAL GVAL>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>)
(ELSE ;"version for when interpreting"
<DEFINE TELL ("TUPLE" A)
<MAPR <>
<FUNCTION ("AUX" E P O)
<COND (<EMPTY? .A> <MAPLEAVE>)
(<SET E <NTH .A 1>>
<SET A <REST .A>>)>
<COND (<TYPE? .E ATOM>
<COND (<OR <=? <SET P <SPNAME .E>>
"CRLF">
<=? .P "CR">>
<CRLF>)
;(<=? .P "V"> <VPRINT>)
(<AND <GASSIGNED? .E>
<TYPE? ,.E OBJECT>>
<PRINTD ,.E>)
(<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">>
<DPRINT .O>)
(<=? .P "CD">
<DPRINT .O T>)
;(<=? .P "HE/SHE">
<HE/SHE-PRINT .O>)
;(<=? .P "HIM/HER">
<HIM/HER-PRINT .O>)
;(<=? .P "HIS/HER">
<HIM/HER-PRINT .O T>)
(<=? .P "THE">
<THE-PRINT .O>)
(<=? .P "CTHE">
<CTHE-PRINT .O>)
(<OR <=? .P "A">
<=? .P "AN">>
<PRINTA .O>)
(<OR <=? .P "NUM">
<=? .P "N">>
<PRINTN .O>)
(<OR <=? .P "CHAR">
<=? .P "CHR">
<=? .P "C">>
<PRINTC .O>)
(ELSE
<PRINT <GETP .O .E>>)>)>)
(<TYPE? .E STRING ZSTRING>
<PRINTI .E>)
(<AND <TYPE? .E FORM>
<==? <NTH .E 1> QUOTE>>
<PRINTD <GVAL <NTH .E 2>>>)
(<TYPE? .E FORM LVAL GVAL>
<PRINT .E>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>
)>
<DEFINE PFORM (APP OBJ "AUX" A)
<COND (<AND <TYPE? .OBJ LVAL GVAL>
<MEMQ <SET A <CHTYPE .OBJ ATOM>> '[PRSO PRSI]>>
<COND (<==? .APP DPRINT>
<COND (<==? .A PRSO> <FORM DPRINT-PRSO>)
(ELSE <FORM DPRINT-PRSI>)>)
(<==? .APP CDPRINT>
<COND (<==? .A PRSO> <FORM CDPRINT-PRSO>)
(ELSE <FORM CDPRINT-PRSI>)>)
(<==? .APP THE-PRINT>
<COND (<==? .A PRSO> <FORM THE-PRINT-PRSO>)
(ELSE <FORM THE-PRINT-PRSI>)>)
(<==? .APP CTHE-PRINT>
<COND (<==? .A PRSO> <FORM CTHE-PRINT-PRSO>)
(ELSE <FORM CTHE-PRINT-PRSI>)>)
(<==? .APP PRINTA>
<COND (<==? .A PRSO> <FORM PRINTA-PRSO>)
(ELSE <FORM PRINTA-PRSI>)>)
(ELSE <ERROR .APP .OBJ>)>)
(<ASSIGNED? EXT>
<FORM .APP .OBJ .EXT>)
(ELSE
<FORM .APP .OBJ>)>>
<DEFINE MAKE-GVAL (E)
<COND (<OR <GASSIGNED? MUDDLE>
<NOT <TYPE? .E ATOM>>>
<FORM GVAL .E>)
(ELSE
<CHTYPE .E GVAL>)>>
<ROUTINE CTHE-PRINT-PRSO ()
<THE-PRINT ,PRSO T>>
<ROUTINE CTHE-PRINT-PRSI ()
<THE-PRINT ,PRSI T>>
<ROUTINE CTHE-PRINT (O)
<THE-PRINT .O T>>
<ROUTINE THE-PRINT-PRSO ()
<THE-PRINT ,PRSO>>
<ROUTINE THE-PRINT-PRSI ()
<THE-PRINT ,PRSI>>
<ROUTINE THE-PRINT (O "OPTIONAL" (CAP? <>))
<DPRINT .O .CAP? <NOT <FSET? .O ,NOTHEBIT>>>>
<ROUTINE PRINTA-PRSO ()
<PRINTA ,PRSO>>
<ROUTINE PRINTA-PRSI ()
<PRINTA ,PRSI>>
<ROUTINE PRINTA (O)
<COND (<FSET? .O ,THE> <PRINTI "the ">)
(<NOT <FSET? .O ,NOABIT>>
<COND (<FSET? .O ,AN> <PRINTI "an ">)
(ELSE <PRINTI "a ">)>)>
<IPRINT .O>>
;<ROUTINE CDPRINT-PRSO ()
<DPRINT ,PRSO T>>
;<ROUTINE CDPRINT-PRSI ()
<DPRINT ,PRSI T>>
;<ROUTINE CDPRINT (O)
<DPRINT .O T>>
<ROUTINE DPRINT (O "OPTIONAL" (CAP? <>) (THE? <>) "AUX" S)
<COND (<OR .THE? <FSET? .O ,THE>>
<COND (.CAP? <PRINTI "The ">)
(T <PRINTI "the ">)>)>
<IPRINT .O>>
<ROUTINE IPRINT (O)
<COND (<AND <EQUAL? .O ,PSEUDO-OBJECT>
<NOT ,P-MERGED>
<EQUAL? .O ,PRSO ,PRSI>>
<THING-PRINT ,PSEUDO-PRSO ;"<EQUAL? .O ,PRSO>">)
(<AND <EQUAL? .O ,WEED>
<FSET? .O ,RWATERBIT>>
<TELL "weed cutting">)
(<EQUAL? .O ,SPELL-COPY>
<PRINTD .O>
<PRINTI " ">
<PRINTD <GETP .O ,P?WALLS>>)
(ELSE
<COND (<NOT <ZERO? <GETP .O ,P?NAME>>>
<CUBE-NAME .O>
<PRINTI " ">)
(<AND <FSET? .O ,RWATERBIT>
<GETPT .O ,P?COUNT>>
<PRINTI "duplicate ">)>
<PRINTD .O>)>>
<COND (<GASSIGNED? ZILCH>
<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>)>>)>
<REST
<PUTREST
.O
<SET O (<REPEAT ((LL <FORM EQUAL? <MAKE-GVAL .X>>)
(L <REST .LL>))
<COND (<OR <EMPTY? .ATMS>
<==? <LENGTH <REST .LL 2>> 3>>
<RETURN!- .LL>)>
<SET ATM <NTH .ATMS 1>>
<PUTREST .L
<SET L
(<COND
(<TYPE? .ATM ATOM>
<MAKE-GVAL
<COND (<==? .X PRSA>
<PARSE
<STRING
"V?"
<SPNAME .ATM>>>)
(ELSE .ATM)>>)
(ELSE .ATM)>)>>
<SET ATMS <REST .ATMS>>>)>>>>>)
(ELSE
<DEFINE VERB? ("TUPLE" ATMS)
<MAPF <>
<FUNCTION (A "AUX" ATM)
<COND (<NOT <TYPE? .A ATOM>> <ERROR MULTIFROB>)
(<NOT <SET ATM
<LOOKUP <STRING "V?" <SPNAME .A>>
<MOBLIST INITIAL>>>>
<ERROR NOT-A-VERB? .A>)
(<EQUAL? ,PRSA ,.ATM>
<MAPLEAVE T>)>>
.ATMS>>
<DEFINE PRSO? ("TUPLE" ATMS)
<MULTIFROB ,PRSO .ATMS>>
<DEFINE PRSI? ("TUPLE" ATMS)
<MULTIFROB ,PRSI .ATMS>>
<DEFINE ROOM? ("TUPLE" ATMS)
<MULTIFROB HERE .ATMS>>
<DEFINE MULTIFROB (X ATMS)
<MAPF <>
<FUNCTION (A)
<COND (<TYPE? .A ATOM> <SET A ,.A>)>
<COND (<EQUAL? .X .A>
<MAPLEAVE T>)>>
.ATMS>>)>
<COND (<GASSIGNED? ZILCH>
<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" (OT <COND (<==? .X FSET?> <FORM OR>)
(ELSE <FORM PROG ()>)>)
(OO <COND (<LENGTH? .OT 1> .OT)
(ELSE <REST .OT>)>)
(O .OO)
ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- .OT>)>
<SET ATM <NTH .ATMS 1>>
<SET ATMS <REST .ATMS>>
<PUTREST .O
<SET O
(<FORM .X
.OBJ
<COND (<TYPE? .ATM FORM> .ATM)
(ELSE <MAKE-GVAL .ATM>)>>)>>>>)
(ELSE
<DEFINE BSET (OBJ "TUPLE" BITS)
<MULTIBITS ,FSET .OBJ .BITS>>
<DEFINE BCLEAR (OBJ "TUPLE" BITS)
<MULTIBITS ,FCLEAR .OBJ .BITS>>
<DEFINE BSET? (OBJ "TUPLE" BITS)
<MAPF <>
<FUNCTION (A)
<COND (<FSET? .OBJ ,.A> <MAPLEAVE T>)>>
.BITS>>
<DEFINE MULTIBITS (X OBJ ATMS)
<MAPF <>
<FUNCTION (A)
<APPLY!- .X .OBJ ,.A>>
.ATMS>>)>
<DEFMAC RFATAL ()
'<PROG () <PUSH 2> <RSTACK>>>
<COND (<GASSIGNED? ZILCH>
<DEFMAC PROB ('BASE?)
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>)
(ELSE
<DEFINE PROB (BASE?)
<NOT <L? .BASE? <RANDOM 100>>>>)>
<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>
<ROUTINE RANDOM-ELEMENT (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
;"former MAIN.ZIL stuff"
<GLOBAL P-WON <>>
<CONSTANT M-FATAL 2>
<CONSTANT M-BEG 1>
<CONSTANT M-END 2>
<CONSTANT M-ENTER 3>
<CONSTANT M-LEAVE 4>
<CONSTANT M-LOOK 5>
<CONSTANT M-FLASH 6>
<CONSTANT M-OBJDESC 7>
<CONSTANT M-CONTAINER 8>
<ROUTINE GO ()
<INITIALIZE-CUBES>
<PUTB ,P-LEXV 0 59>
;"put interrupts on clock chain"
<SETG CLOCK-HAND <REST ,C-TABLE ,C-TABLELEN>>
<QUEUE I-TIRED 80>
<QUEUE I-ORATION -1>
;"set up and go"
<SETG MAGIC-BOX-CUBE ,WATER-CUBE>
<SETG WINNER ,PLAYER>
<SETG HERE ,COUNCIL-CHAMBER>
<SETG LIT <LIT? ,HERE>>
<SETG ORATOR ,SNEFFLE>
<V-VERSION>
<CRLF>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" TRASH)
<REPEAT ()
<SET TRASH <MAIN-LOOP-1>>>>
<ROUTINE MAIN-LOOP-1 ("AUX" ICNT OCNT NUM CNT OBJ TBL (V <>) PTBL OBJ1 TMP)
<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 (<ZERO? .OCNT> .OCNT)
(<G? .OCNT 1>
<SET TBL ,P-PRSO>
<COND (<ZERO? .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 (<EQUAL? ,PRSA ,V?WALK> <SET V <PERFORM ,PRSA ,PRSO>>)
(<ZERO? .NUM>
<COND (<ZERO? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
<SET V <PERFORM ,PRSA>>
<SETG PRSO <>>)
(<NOT ,LIT>
<TELL ,TOO-DARK>
<END-QUOTE>)
(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 <>>
<END-QUOTE>)>)
(T
<SETG P-NOT-HERE 0>
<SETG P-MULT <>>
<COND (<G? .NUM 1> <SETG P-MULT 1>)>
<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>
<TELL ,REFERRING CR>)>
<RETURN>)
(T ;"REFORMATTED AREA"
<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 (<MULTIPLE-EXCEPTION? .OBJ1> <AGAIN>)
(T
<COND (<EQUAL? .OBJ1 ,IT>
<TELL D ,P-IT-OBJECT>)
(ELSE
<TELL D .OBJ1>)>
<TELL ": ">)>)>
<SET TMP T>
<SETG PSEUDO-PRSO <COND (<EQUAL? ,PRSO ,PSEUDO-OBJECT>)>>
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
<COND (<EQUAL? .V ,M-FATAL> <RETURN>)>
<COND (,P-MULT <SETG P-MULT <+ ,P-MULT 1>>)>) ;"END REFORMATTING"
>>)>
<COND (<NOT <EQUAL? .V ,M-FATAL>>
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE
SAVE VERSION RESTORE SCRIPT UNSCRIPT>
T)
(T
<SET V
%<DEBUG-CODE
<D-APPLY "End"
<GETP <LOC ,WINNER> ,P?ACTION>
,M-END>
<APPLY <GETP <LOC ,WINNER> ,P?ACTION>
,M-END>>>)>)>
<COND (<VERB? SAVE RESTORE SCRIPT UNSCRIPT
VERBOSE BRIEF SUPER-BRIEF>
T)
(,P-OFLAG T)>
<COND (<EQUAL? .V ,M-FATAL>
<SETG P-CONT <>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
%<DEBUG-CODE
<COND (<VERB? $DEBUG>
<AGAIN>)>>
<COND (<NO-CLOCK-VERB?> T)
(T
<SET V <CLOCKER>>)>
<SETG PRSA <>>
<SETG PRSO <>>
<SETG PRSI <>>)>>
<GLOBAL PSEUDO-PRSO <>> ;"T IF ORIGINAL PRSO WAS PSEUDO-OBJECT"
<ROUTINE NO-CLOCK-VERB? ()
<COND (<AND <VERB? TELL> ,P-CONT> <RTRUE>)
(<VERB? BRIEF SUPER-BRIEF VERBOSE VERSION QUIT SCORE
SAVE RESTORE SCRIPT UNSCRIPT HELP RESTART $VERIFY
TIME $RANDOM $COMMAND $RECORD $UNRECORD>
<RTRUE>)>>
"MULTIPLE-EXCEPTION? -- return true if an object found by all should not
be include when the crunch comes."
<ROUTINE MULTIPLE-EXCEPTION? (OBJ1 "AUX" (L <LOC .OBJ1>))
<COND (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>
<RTRUE>)
(<AND <VERB? TAKE>
,PRSI
<NOT <IN? ,PRSO ,PRSI>>>
;"TAKE X FROM Y and x not in y"
<RTRUE>)
(<NOT <ACCESSIBLE? .OBJ1>>
;"can't get at object"
<RTRUE>)
(<EQUAL? ,P-GETFLAGS ,P-ALL>
;"cases for ALL"
<COND (<AND <VERB? TAKE>
<OR <AND <NOT <EQUAL? .L ,WINNER ,HERE ,PRSI>>
<NOT <EQUAL? .L <LOC ,WINNER>>>
<NOT <FSET? .L ,SURFACEBIT>>
<NOT <FSET? .L ,SEARCHBIT>>>
<AND <NOT <FSET? .OBJ1 ,TAKEBIT>>
<NOT <FSET? .OBJ1 ,TRYTAKEBIT>>>>>
;"TAKE ALL and object not accessible or takeable"
<RTRUE>)
(<AND <VERB? TAKE>
<NOT ,PRSI>
<HELD? ,PRSO>>
;"TAKE ALL and one object has others in it"
<RTRUE>)
(<AND <VERB? DROP>
<NOT <IN? .OBJ1 ,WINNER>>>
;"DROP ALL and object not held"
<RTRUE>)
(<AND ,PRSI
<EQUAL? ,PRSO ,PRSI>>
;"VERB ALL and prso = prsi"
<RTRUE>)
(<AND <VERB? PUT>
<NOT <IN? ,PRSO ,WINNER>>
<HELD? ,PRSO ,PRSI>>
;"PUT ALL IN X and object already in x"
<RTRUE>)
(<AND <FSET? ,PRSO ,SPELLBIT>
<NOT <VERB? LEARN GNUSTO CAST>>
<NOT <VERB? READ>>>
;"normally ignore spells in ALL"
<RTRUE>)>)>>
;<ROUTINE SAVE-INPUT (TBL "AUX" (OFFS 0) CNT TMP)
<SET CNT <+ <GETB ,P-LEXV <SET TMP <* 4 ,P-INPUT-WORDS>>>
<GETB ,P-LEXV <+ .TMP 1>>>>
<COND (<EQUAL? .CNT 0> ;"failed"
<RFALSE>)>
<SET CNT <- .CNT 1>>
<REPEAT ()
<COND (<EQUAL? .OFFS .CNT>
<PUTB .TBL .OFFS 0>
<RETURN>)
(T
<PUTB .TBL .OFFS <GETB ,P-INBUF <+ .OFFS 1>>>)>
<SET OFFS <+ .OFFS 1>>>
<RTRUE>>
;<ROUTINE RESTORE-INPUT (TBL "AUX" CHR)
<REPEAT ()
<COND (<EQUAL? <SET CHR <GETB .TBL 0>> 0>
<RETURN>)
(T
<PRINTC .CHR>
<SET TBL <REST .TBL>>)>>>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
<ROUTINE FAKE-ORPHAN ("AUX" TMP)
<ORPHAN ,P-SYNTAX <>>
<TELL "What do you want to ">
<SET TMP <GET ,P-OTBL ,P-VERBN>>
<COND (<EQUAL? .TMP 0>
<TELL "tell">)
(<ZERO? <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 CNT)
%<DEBUG-CODE
<COND (,ZDEBUG
<TELL "[Perform: ">
%<COND (<GASSIGNED? ZILCH> '<TELL N .A>)
(T '<PRINT <SPNAME <NTH ,ACTIONS <+ <* .A 2> 1>>>>)>
<COND (.O
<COND (<AND <EQUAL? .A ,V?WALK>
,P-WALK-DIR>
<TELL "/" N .O>)
(ELSE
<TELL "/" D .O>)>)>
<COND (.I <TELL "/" D .I>)>
<TELL "]" CR>)>>
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<SETG PRSA .A>
<COND (<EQUAL? ,IT .I .O>
<COND (<NOT .I>
<FAKE-ORPHAN>)
(T
<TELL ,REFERRING CR>)>
<RFATAL>)
(<AND .O
<NOT <VERB? WALK>>
<NOT <EQUAL? .O ,NOT-HERE-OBJECT>>>
<THIS-IS-IT .O>)>
<SETG PRSO .O>
<SETG PRSI .I>
<COND (<AND <NOT <EQUAL? .A ,V?WALK>>
<EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V
%<DEBUG-CODE
<D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>
<APPLY ,NOT-HERE-OBJECT-F>>>>
<SETG P-WON <>>
.V)
(T
<SET O ,PRSO>
<SET I ,PRSI>
<COND (<SET V
%<DEBUG-CODE
<DD-APPLY "Actor" ,WINNER
<GETP ,WINNER ,P?ACTION>>
<APPLY <GETP ,WINNER ,P?ACTION>>>>
.V)
(<AND <NOT <EQUAL? <LOC ,WINNER> ,HERE>>
<SET V
%<DEBUG-CODE
<D-APPLY "Begin"
<GETP <LOC ,WINNER> ,P?ACTION>
,M-BEG>
<APPLY <GETP <LOC ,WINNER> ,P?ACTION>
,M-BEG>>>>
.V)
(<SET V
%<DEBUG-CODE
<D-APPLY "Begin"
<GETP ,HERE ,P?ACTION>
,M-BEG>
<APPLY <GETP ,HERE ,P?ACTION>
,M-BEG>>>
.V)
(<SET V
%<DEBUG-CODE
<D-APPLY "Preaction"
<GET ,PREACTIONS .A>>
<APPLY <GET ,PREACTIONS .A>>>>
.V)
(<AND .I
<SET V
%<DEBUG-CODE
<D-APPLY "PRSI" <GETP .I ,P?ACTION>>
<APPLY <GETP .I ,P?ACTION>>>>>
.V)
(<AND .O
<NOT <EQUAL? .A ,V?WALK>>
<LOC .O>
<GETP <LOC .O> ,P?CONTFCN>
<SET V
%<DEBUG-CODE
<D-APPLY "Container"
<GETP <LOC .O> ,P?CONTFCN>
,M-CONTAINER>
<APPLY <GETP <LOC .O> ,P?CONTFCN>
,M-CONTAINER>>>>
.V)
(<AND .O
<NOT <EQUAL? .A ,V?WALK>>
<SET V
%<DEBUG-CODE
<D-APPLY "PRSO"
<GETP .O ,P?ACTION>>
<APPLY <GETP .O ,P?ACTION>>>>>
.V)
(<SET V
%<DEBUG-CODE
<D-APPLY <>
<GET ,ACTIONS .A>>
<APPLY <GET ,ACTIONS .A>>>>
.V)>)>
<COND (,SPELL-CAST
<COND (<G? <SET CNT <GETP ,SPELL-CAST ,P?COUNT>> 0>
<PUTP ,SPELL-CAST ,P?COUNT <- .CNT 1>>)>
<COND (<L? ,SPELL-ROOM ,SPELL-MAX>
<SETG SPELL-ROOM <+ ,SPELL-ROOM 1>>)>
<SETG SPELL-CAST <>>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>
%<COND (,ZDEBUGGING?
<COND (<GASSIGNED? ZILCH>
<ROUTINE II-APPLY (STR FCN)
<COND (,ZDEBUG
<TELL "[I- " N <* .FCN 2> " ">)>
<D-APPLY .STR .FCN>>)
(ELSE
<ROUTINE II-APPLY (STR FCN)
<D-APPLY <COND (<TYPE? .FCN ATOM> <SPNAME .FCN>)
(ELSE .STR)>
.FCN>>)>)>
%<DEBUG-CODE
<ROUTINE DD-APPLY (STR OBJ FCN)
<COND (,ZDEBUG <TELL "[" D .OBJ "=]">)>
<D-APPLY .STR .FCN>>>
%<DEBUG-CODE
<ROUTINE D-APPLY (STR FCN "OPTIONAL" (FOO <>) "AUX" RES)
<COND (<NOT .FCN> <>)
(T
<COND (,ZDEBUG
<COND (<NOT .STR>
<TELL "[Action:]" CR>)
(T <TELL "[" .STR ": ">)>)>
<SET RES
<COND (.FOO <APPLY .FCN .FOO>)
(T <APPLY .FCN>)>>
%<DEBUG-CODE
<COND (<AND ,ZDEBUG .STR>
<COND (<EQUAL? .RES ,M-FATAL>
<TELL "Fatal]" CR>)
(<NOT .RES>
<TELL "Not handled]" CR>)
(T <TELL "Handled]" CR>)>)>>
.RES)>>>
;"former CLOCK.ZIL stuff"
<GLOBAL CLOCK-WAIT <>>
<GLOBAL C-TABLE %<COND (<GASSIGNED? ZILCH>
'<ITABLE NONE 26>)
(T
'<ITABLE NONE 52>)>>
<CONSTANT C-TABLELEN 52>
<GLOBAL C-INTS 52>
%<DEBUG-CODE <GLOBAL C-MAXINTS 52>>
<CONSTANT C-INTLEN 4> ;"length of an interrupt entry"
<CONSTANT C-RTN 0> ;"offset of routine name"
<CONSTANT C-TICK 1> ;"offset of count"
<ROUTINE DEQUEUE (RTN)
<COND (<SET RTN <QUEUED? .RTN>>
<PUT .RTN ,C-RTN 0>)>>
<ROUTINE QUEUED? (RTN "AUX" C E)
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<EQUAL? .C .E> <RFALSE>)
(<EQUAL? <GET .C ,C-RTN> .RTN>
<COND (<ZERO? <GET .C ,C-TICK>>
<RFALSE>)
(T <RETURN .C>)>)>
<SET C <REST .C ,C-INTLEN>>>>
"this version of QUEUE automatically enables as well"
<ROUTINE QUEUE (RTN TICK "AUX" C E (INT <>))
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<EQUAL? .C .E>
<COND (.INT
<SET C .INT>)
(ELSE
%<DEBUG-CODE
<COND (<L? ,C-INTS ,C-INTLEN>
<TELL
"[**Too many interrupts!**]" CR>)>>
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
%<DEBUG-CODE
<COND (<L? ,C-INTS ,C-MAXINTS>
<SETG C-MAXINTS ,C-INTS>)>>
<SET INT <REST ,C-TABLE ,C-INTS>>)>
<PUT .INT ,C-RTN .RTN>
<RETURN>)
(<EQUAL? <GET .C ,C-RTN> .RTN>
<SET INT .C>
<RETURN>)
(<ZERO? <GET .C ,C-RTN>>
<SET INT .C>)>
<SET C <REST .C ,C-INTLEN>>>
<COND (%<COND (<GASSIGNED? ZILCH>
'<G? .INT ,CLOCK-HAND>)
(ELSE
'<L=? <LENGTH .INT> <LENGTH ,CLOCK-HAND>>)>
<SET TICK <- <+ .TICK 3>>>)>
<PUT .INT ,C-TICK .TICK>
.INT>
<GLOBAL CLOCK-HAND <>>
<ROUTINE CLOCKER ("AUX" E TICK RTN (FLG <>) (Q? <>) OWINNER)
<COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
<SETG CLOCK-HAND <REST ,C-TABLE ,C-INTS>>
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET OWINNER ,WINNER>
<SETG WINNER ,PLAYER>
<REPEAT ()
<COND (<EQUAL? ,CLOCK-HAND .E>
<SETG CLOCK-HAND .E>
<SETG MOVES <+ ,MOVES 1>>
<SETG WINNER .OWINNER>
<RETURN .FLG>)
(<NOT <ZERO? <GET ,CLOCK-HAND ,C-RTN>>>
<SET TICK <GET ,CLOCK-HAND ,C-TICK>>
<COND (<L? .TICK -1>
<PUT ,CLOCK-HAND ,C-TICK <- <- .TICK> 3>>
<SET Q? ,CLOCK-HAND>)
(<NOT <ZERO? .TICK>>
<COND (<G? .TICK 0>
<SET TICK <- .TICK 1>>
<PUT ,CLOCK-HAND ,C-TICK .TICK>)>
<COND (<NOT <ZERO? .TICK>>
<SET Q? ,CLOCK-HAND>)>
<COND (<NOT <G? .TICK 0>>
<SET RTN
%<COND (<GASSIGNED? ZILCH>
'<GET ,CLOCK-HAND ,C-RTN>)
(ELSE
'<NTH ,CLOCK-HAND
<+ <* ,C-RTN 2>
1>>)>>
<COND (<ZERO? .TICK>
<PUT ,CLOCK-HAND ,C-RTN 0>)>
<COND (%<COND
(,ZDEBUGGING?
'<II-APPLY "Int" .RTN>)
(ELSE
'<APPLY .RTN>)>
<SET FLG T>)>
<COND (<AND <NOT .Q?>
<NOT
<ZERO?
<GET ,CLOCK-HAND
,C-RTN>>>>
<SET Q? T>)>)>)>)>
<SETG CLOCK-HAND <REST ,CLOCK-HAND ,C-INTLEN>>
<COND (<NOT .Q?>
<SETG C-INTS <+ ,C-INTS ,C-INTLEN>>)>>>
<DEFINE PSEUDO ("TUPLE" V)
<MAPF ,PLTABLE
<FUNCTION (OBJ)
<COND (<N==? <LENGTH .OBJ> 3>
<ERROR BAD-THING .OBJ>)>
<MAPRET <COND (<NTH .OBJ 2>
<VOC <SPNAME <NTH .OBJ 2>>>)>
<COND (<NTH .OBJ 1>
<VOC <SPNAME <NTH .OBJ 1>> ADJECTIVE>)>
<3 .OBJ>>>
.V>>

1763
parser.zil Normal file

File diff suppressed because it is too large Load Diff

30
record.zil Normal file
View File

@ -0,0 +1,30 @@
"RECORD for
MAGE
(c) Copyright 1985 Infocom, Inc. All Rights Reserved."
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
<SYNTAX \#COMMAND = V-$COMMAND>
<SYNTAX \#RECORD = V-$RECORD>
<SYNTAX \#UNRECORD = V-$UNRECORD>
<ROUTINE V-$COMMAND ()
<DIRIN 1>
<RTRUE>>
<ROUTINE V-$RANDOM ()
<COND (<NOT <EQUAL? ,PRSO ,INTNUM>>
<TELL "Illegal call to #RANDOM." CR>)
(T
<RANDOM <- 0 ,P-NUMBER>>
<RTRUE>)>>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<ROUTINE V-$RECORD ()
<DIROUT ,D-RECORD-ON> ;"all READS and INPUTS get sent to command file"
<RTRUE>>
<ROUTINE V-$UNRECORD ()
<DIROUT ,D-RECORD-OFF>
<RTRUE>>

684
syntax.zil Normal file
View File

@ -0,0 +1,684 @@
"SYNTAX for
MAGE
(c) Copyright 1985 Infocom, Inc. All Rights Reserved."
<BUZZ $BUZZ A AN THE IS ARE AM AND OF THEN ALL ONE BUT EXCEPT \. \, \"
PLEASE HERE SOME G AGAIN OOPS>
<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>
\
;"game commands"
<SYNTAX VERBOSE = V-VERBOSE>
<SYNTAX BRIEF = V-BRIEF>
<SYNTAX SUPER = V-SUPER-BRIEF>
<SYNONYM SUPER SUPERBRIEF>
<SYNTAX DIAGNOSE = V-DIAGNOSE>
<SYNTAX I = V-INVENTORY>
<SYNONYM I INVENTORY>
<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 $VERIFY OBJECT = V-$VERIFY>
\
;"subtitle real verbs"
<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 FOR OBJECT = V-ASK-FOR PRE-ASK-FOR>
<SYNTAX ASK OBJECT (FIND PERSON) FOR OBJECT = V-ASK-FOR PRE-ASK-FOR>
<SYNTAX ASK ABOUT OBJECT = V-ASK-ABOUT PRE-ASK-ABOUT>
<SYNTAX ASK OBJECT (FIND PERSON) ABOUT OBJECT = V-ASK-ABOUT PRE-ASK-ABOUT>
<SYNONYM ASK QUERY QUIZ>
<SYNTAX ATTACK OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX ATTACK OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
<SYNONYM ATTACK ASSAULT FIGHT HIT STRIKE>
<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>
<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>
<SYNTAX CLIMB OFF OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX CLIMB OUT OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNONYM CLIMB SCALE>
<SYNTAX DESCEN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX LIE DOWN OBJECT (FIND RLANDBIT) = V-SLEEP>
<SYNTAX LIE ON OBJECT (FIND VEHBIT) = V-BOARD>
;<SYNONYM LIE>
<SYNTAX CLOSE OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-CLOSE PRE-CLOSE>
<SYNONYM CLOSE SHUT ZIP>
<SYNTAX COMPARE OBJECT TO OBJECT = V-COMPARE>
<SYNTAX COMPARE OBJECT WITH OBJECT = V-COMPARE>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNTAX COUNT OBJECT IN OBJECT = V-COUNT>
;<SYNONYM COUNT>
<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 SLASH SEVER SPLIT DIVIDE PRUNE>
<SYNTAX SHIT = V-CURSE>
<SYNONYM SHIT DAMN FUCK>
<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 BREAK SMASH WRECK SCRATCH>
<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 = V-DISEMBARK>
<SYNTAX DISEMBARK OBJECT (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>
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP PRE-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 ;INGEST GOBBLE>
<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 OBSERVE WATCH>
;<SYNTAX EXORCISE OBJECT = V-EXORCISE>
;<SYNTAX EXORCISE OUT OBJECT (FIND PERSON) = V-EXORCISE>
;<SYNTAX EXORCISE AWAY OBJECT (FIND PERSON) = V-EXORCISE>
;<SYNONYM EXORCISE BANISH DRIVE>
<SYNTAX EXTINGUISH OBJECT
(MANY HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-OFF>
;<SYNONYM EXTINGUISH DOUSE>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD TAKE HAVE) = V-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD TAKE HAVE)
WITH OBJECT = V-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD TAKE HAVE)
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 PERSON) (ON-GROUND) = V-GIVE PRE-GIVE>
<SYNTAX GIVE OBJECT (FIND PERSON) (ON-GROUND) OBJECT (MANY HELD HAVE)
= V-SGIVE PRE-SGIVE>
<SYNTAX GIVE OBJECT (FIND PERSON) (ON-GROUND) WITH OBJECT (MANY HELD HAVE)
= V-SGIVE PRE-SGIVE>
<SYNTAX GIVE OBJECT FOR OBJECT = V-OFFER>
<SYNONYM GIVE HAND OFFER FEED ;PRESENT>
<SYNTAX HELLO = V-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO>
<SYNONYM HELLO HI ;GREETINGS>
<SYNTAX HELP = V-HELP>
<SYNTAX HELP OBJECT = 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>
<SYNTAX HIDE IN OBJECT = V-BOARD>
<SYNTAX HIDE FROM OBJECT = V-HIDE-FROM>
<SYNONYM HIDE CONCEAL ;STASH>
<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 DOWN OBJECT (FIND RLANDBIT) = V-LEAP>
<SYNTAX JUMP OFF OBJECT = V-LEAP>
<SYNTAX JUMP ON OBJECT = V-CLIMB-ON>
<SYNTAX JUMP TO OBJECT = V-CLIMB-ON>
<SYNONYM JUMP LEAP DIVE>
<SYNTAX KICK OBJECT = V-KICK PRE-OPEN>
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-KILL>
<SYNONYM KILL MURDER SLAY STAB>
<SYNTAX KISS OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KISS>
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNONYM KNOCK RAP>
<SYNTAX LAND = V-LAND>
<SYNTAX LEAN ON OBJECT (HELD HAVE) = V-LEAN-ON>
<SYNTAX LEAVE = V-LEAVE>
<SYNTAX LEAVE OBJECT = V-DROP PRE-DROP>
<SYNTAX LISTEN = V-LISTEN>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LISTEN FOR OBJECT = V-LISTEN>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT
(HELD CARRIED ON-GROUND IN-ROOM) = 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-LOOK-INSIDE>
<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-LOOK-UP>
<SYNTAX LOOK UP OBJECT IN OBJECT = V-WHAT>
<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 THAW>
<SYNTAX MOVE = V-WALK-AROUND>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX ROLL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNONYM MOVE SHIFT>
<SYNTAX PAY OBJECT (MANY HELD HAVE) = V-PAY>
<SYNTAX PAY OBJECT (FIND PERSON) WITH OBJECT (MANY HELD HAVE) = V-PAY>
<SYNTAX PAY OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) = V-SPAY>
<SYNTAX PAY OBJECT (FIND PERSON) 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>
<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>
<SYNONYM OPEN UNZIP>
<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 CLOG BLOCK>
<SYNTAX REPAIR OBJECT = V-REPAIR>
<SYNTAX REPAIR OBJECT WITH OBJECT = V-REPAIR>
<SYNONYM REPAIR PATCH FIX>
<SYNTAX POINT AT OBJECT = V-POINT>
<SYNTAX POINT TO OBJECT = V-POINT>
<SYNONYM POINT GESTURE>
<SYNTAX POKE OBJECT (FIND PERSON) (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 EMPTY SPILL>
<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 SHOVE>
<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 PRE-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 FIT WEDGE>
<SYNTAX RAISE OBJECT = V-RAISE>
<SYNTAX RAISE UP OBJECT = V-RAISE>
<SYNONYM RAISE LIFT>
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-READ PRE-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
THROUGH OBJECT = V-READ PRE-READ>
<SYNTAX READ ABOUT OBJECT = V-WHAT>
<SYNTAX READ ABOUT OBJECT IN OBJECT = V-WHAT>
;<SYNONYM READ>
<SYNTAX REMOVE OBJECT = V-TAKE-OFF>
<SYNONYM REMOVE SHED>
<SYNTAX SAY TO OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<SYNTAX SAY = V-SAY>
<SYNONYM SAY TALK CALL>
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNONYM SEARCH RUMMAGE ;FRISK>
<SYNTAX SEND FOR OBJECT = V-SEND>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNTAX SHAKE OBJECT AT OBJECT = V-WAVE-AT>
<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>
<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-SIT>
<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 MEDITATE>
<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 UNDER OBJECT = V-PUT-UNDER>
<SYNTAX SMELL = V-SMELL>
<SYNTAX SMELL OBJECT = V-SMELL>
<SYNONYM SMELL SNIFF>
<SYNTAX SPIN OBJECT = V-SPIN>
<SYNONYM SPIN WHIRL ROTATE>
<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 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 PERSON) (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 RLANDBIT) (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 = V-TAKE-OFF>
<SYNONYM TAKE GRAB CATCH GET HOLD CARRY SNATCH>
<SYNTAX TELL OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
<SYNTAX TELL OBJECT ABOUT OBJECT = V-TELL-ABOUT PRE-TELL-ABOUT>
<SYNTAX TELL OBJECT OBJECT = V-REPLY>
<SYNTAX TELL ABOUT OBJECT = V-TELL-ME-ABOUT>
<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)
TO 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-THROW>
<SYNTAX THROW OBJECT (HELD MANY HAVE) IN OBJECT = V-THROW>
<SYNTAX THROW OBJECT (HELD MANY HAVE) ON OBJECT = V-THROW>
<SYNONYM THROW HURL TOSS PITCH>
<SYNTAX TIE OBJECT TO OBJECT = V-TIE>
<SYNTAX TIE UP OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) WITH OBJECT
(FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-TIE-UP>
<SYNONYM TIE FASTEN 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>
<SYNTAX TOUCH OBJECT TO OBJECT = V-SRUB PRE-SRUB>
<SYNONYM TOUCH FEEL PAT PET RUB>
<SYNTAX TURN OBJECT TO OBJECT = V-TURN>
<SYNTAX TURN OBJECT = V-TURN>
<SYNTAX TURN OBJECT WITH OBJECT (FIND TOOLBIT) (HAVE) = V-TURN>
<SYNTAX TURN ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LAMP-ON>
<SYNTAX TURN OFF OBJECT
(HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-LAMP-OFF>
<SYNTAX TURN OVER OBJECT = V-TURN-OVER>
<SYNONYM TURN FLIP SHUT SET>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT = 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>
<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-BOARD>
<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>
<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>
<SYNONYM WAVE ;MOTION BECKON>
<SYNTAX WEAR OBJECT = V-WEAR>
<SYNTAX WHAT OBJECT = V-WHAT>
;<SYNONYM WHAT WHATS>
<SYNTAX WHERE = V-WHERE>
<SYNTAX WHERE OBJECT = V-WHERE>
;<SYNONYM WHERE WHERES>
<SYNTAX WHO = V-WHO>
<SYNTAX WHO OBJECT = V-WHO>
;<SYNONYM WHO WHOS>
<SYNTAX YAWN = V-YAWN>
<SYNTAX YELL = V-YELL>
<SYNONYM YELL SCREAM SHOUT>
\^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 FROTZ OBJECT = V-FROTZ PRE-CAST>
<SYNTAX GNUSTO OBJECT = V-GNUSTO PRE-CAST>
<SYNTAX MALYON OBJECT = V-MALYON PRE-CAST>
<SYNTAX REZROV OBJECT = V-REZROV PRE-CAST>
<SYNTAX YOMIN OBJECT (FIND PERSON) = V-YOMIN PRE-CAST>
<SYNTAX BLORPLE OBJECT (HELD CARRIED HAVE) = V-BLORPLE PRE-CAST>
<SYNTAX LESOCH = V-LESOCH PRE-CAST>
<SYNTAX LESOCH OBJECT = V-LESOCH PRE-CAST>
<SYNTAX SNAVIG = V-SNAVIG PRE-CAST>
<SYNTAX SNAVIG OBJECT = V-SNAVIG PRE-CAST>
<SYNTAX GIRGOL = V-GIRGOL PRE-CAST>
<SYNTAX GIRGOL OBJECT = V-GIRGOL PRE-CAST>
<SYNTAX JINDAK = V-JINDAK PRE-CAST>
<SYNTAX JINDAK OBJECT = V-JINDAK PRE-CAST>
<SYNTAX ESPNIS OBJECT = V-ESPNIS PRE-CAST>
<SYNTAX CASKLY OBJECT = V-CASKLY PRE-CAST>
<SYNTAX LISKON OBJECT = V-LISKON PRE-CAST>
<SYNTAX THROCK OBJECT = V-THROCK PRE-CAST>
<SYNTAX TINSOT OBJECT = V-TINSOT PRE-CAST>
<SYNTAX $XEROX OBJECT = V-$XEROX PRE-CAST>
<SYNTAX LABEL OBJECT (HELD CARRIED) = V-SWRITE PRE-SWRITE>
<SYNTAX LABEL OBJECT (HELD CARRIED) WITH OBJECT = V-SWRITE PRE-SWRITE>
<SYNTAX WRITE OBJECT = V-WRITE PRE-WRITE>
<SYNTAX WRITE OBJECT ON OBJECT (HELD CARRIED) = V-WRITE PRE-WRITE>
<SYNTAX WRITE OBJECT IN OBJECT (HELD CARRIED) = V-WRITE PRE-WRITE>
<SYNTAX WRITE ON OBJECT (HELD CARRIED) = V-WRITE-ON PRE-WRITE-ON>
<SYNTAX WRITE IN OBJECT (HELD CARRIED) = V-WRITE-ON PRE-WRITE-ON>
<SYNTAX WRITE ON OBJECT (HELD CARRIED)
WITH OBJECT (FIND TOOLBIT) = V-WRITE-ON PRE-WRITE-ON>
<SYNTAX WRITE IN OBJECT (HELD CARRIED)
WITH OBJECT (FIND TOOLBIT) = V-WRITE-ON PRE-WRITE-ON>
<SYNONYM WRITE PRINT INSCRIBE SCRIBE>
<SYNTAX PRY OBJECT WITH OBJECT = V-PRY>
<SYNTAX PRY OUT OBJECT WITH OBJECT = V-PRY>
<SYNTAX PLANT OBJECT = V-PLANT>
<SYNTAX PLANT OBJECT IN OBJECT = V-PLANT>
<SYNONYM PLANT BURY>
<SYNTAX YES = V-YES>
<SYNONYM YES Y OKAY>
<SYNTAX NO = V-NO>
<SYNONYM NO NOPE>
<SYNTAX BUY OBJECT FROM OBJECT (FIND PERSON) = V-BUY>
<SYNTAX BUY OBJECT WITH OBJECT = V-BUY>
<SYNONYM BUY PURCHASE>
<SYNTAX SELL OBJECT TO OBJECT (FIND PERSON) = V-SELL>
<SYNTAX SELL OBJECT OBJECT = V-SSELL PRE-SSELL>
<SYNTAX TRADE OBJECT (HELD CARRIED HAVE) WITH OBJECT (FIND PERSON) = V-TRADE>
<SYNTAX TRADE OBJECT (HELD CARRIED HAVE) FOR OBJECT = V-TRADE>
<SYNTAX TRADE OBJECT (HELD CARRIED HAVE) = V-TRADE>
<SYNTAX LURK = V-SLAVER>
<SYNTAX LURK BEHIND OBJECT = V-SLAVER>
<SYNTAX LURK IN OBJECT = V-SLAVER>
<SYNTAX SLAVER = V-SLAVER>
<SYNONYM SLAVER DROOL SALIVATE GURGLE>
<SYNTAX ERASE OBJECT = V-ERASE>
<SYNTAX ADMIRE OBJECT (FIND PERSON) = V-ADMIRE>
<SYNONYM ADMIRE COMPLIMENT>
<SYNTAX COPY OBJECT (FIND READBIT)
WITH OBJECT (FIND TOOLBIT) = V-COPY>
<SYNTAX COPY OBJECT (FIND READBIT)
ON OBJECT = V-COPY>
<SYNTAX COPY OBJECT (FIND READBIT)
TO OBJECT = V-COPY>
<SYNTAX COPY OBJECT (FIND READBIT) = V-COPY>
<SYNTAX BARGAIN WITH OBJECT (FIND PERSON) = V-BARGAIN>
<SYNONYM BARGAIN HAGGLE>

2390
verbs.zil Normal file

File diff suppressed because it is too large Load Diff

18
z6.xzap Normal file
View File

@ -0,0 +1,18 @@
.INSERT "Z6FREQ"
.INSERT "Z6DAT" ; DATA IS IN THIS FILE
.INSERT "MISC"
.INSERT "PARSER"
.INSERT "SYNTAX"
.INSERT "DEBUG"
.INSERT "RECORD"
.INSERT "INTERRUPTS"
.INSERT "VERBS"
.INSERT "MAGIC"
.INSERT "GLOBALS"
.INSERT "GUILD"
.INSERT "C1"
.INSERT "C2"
.INSERT "C3"
.INSERT "C4"
.INSERT "Z6STR"
.END

63
z6.zil Normal file
View File

@ -0,0 +1,63 @@
"Z6 for
MAGE
(c) Copyright 1985 Infocom, Inc. All Rights Reserved."
<COND (<GASSIGNED? ZILCH>
<SETG ZDEBUGGING? <>>)
(ELSE
<SETG ZDEBUGGING? T>)>
<PRINC "
*** MAGE: Interactive Fantasy ***
">
ON!-INITIAL
OFF!-INITIAL
;<REPEAT (CHR)
<PRINC "Debugging? (Y or N): " ,OUTCHAN>
<SET CHR <TYI>>
<COND (<MEMQ .CHR "Yy ">
<PRINC " Debugging!
" ,OUTCHAN>
<RETURN <SETG ZDEBUGGING? T>>)
(<MEMQ .CHR "Nn">
<PRINC " No debugging!
" ,OUTCHAN>
<RETURN <SETG ZDEBUGGING? <>>>)
(ELSE
<PRINC " ??
" ,OUTCHAN>)>>
<DEFINE DEBUG-CODE ('X "OPTIONAL" ('Y T))
<COND (,ZDEBUGGING? .X)(ELSE .Y)>>
<SNAME "Z6">
<SET REDEFINE T>
<COND (<NOT <GASSIGNED? ZILCH>>
<SETG WBREAKS <STRING !\" !,WBREAKS>>)>
<COND (<GASSIGNED? ZILCH>
<ID 0>)>
<CONSTANT SERIAL 0>
<INSERT-FILE "MISC" T>
<INSERT-FILE "PARSER" T>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "DEBUG" T>
<INSERT-FILE "RECORD" T>
<INSERT-FILE "INTERRUPTS" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "MAGIC" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "GUILD" T>
<INSERT-FILE "C1" T>
<INSERT-FILE "C2" T>
<INSERT-FILE "C3" T>
<INSERT-FILE "C4" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>

BIN
z6.zip Normal file

Binary file not shown.

200
z6freq.xzap Normal file
View File

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;1880 941
.FSTR FSTR?2,"The " ;1005 336
.FSTR FSTR?3,"and " ;962 482
.FSTR FSTR?4,", " ;955 956
.FSTR FSTR?5,"You " ;840 281
.FSTR FSTR?6,"you " ;736 369
.FSTR FSTR?7,". " ;686 687
.FSTR FSTR?8,"is " ;525 526
.FSTR FSTR?9,"of " ;489 490
.FSTR FSTR?10,"are " ;440 221
.FSTR FSTR?11,"to " ;427 428
.FSTR FSTR?12,"your " ;426 143
.FSTR FSTR?13,"There " ;370 75
.FSTR FSTR?14,"that " ;366 123
.FSTR FSTR?15,"This " ;356 90
.FSTR FSTR?16,"with " ;336 113
.FSTR FSTR?17,"It's " ;325 66
.FSTR FSTR?18,"in " ;279 280
.FSTR FSTR?19,"It " ;234 118
.FSTR FSTR?20,"something " ;232 30
.FSTR FSTR?21,"have " ;228 77
.FSTR FSTR?22,"from " ;222 75
.FSTR FSTR?23,"spell " ;204 52
.FSTR FSTR?24,"but " ;194 98
.FSTR FSTR?25,"into " ;192 65
.FSTR FSTR?26,"about " ;176 45
.FSTR FSTR?27,"for " ;172 87
.FSTR FSTR?28,"which " ;168 43
.FSTR FSTR?29,"small " ;168 43
.FSTR FSTR?30,"water " ;160 41
.FSTR FSTR?31,"can't " ;160 33
.FSTR FSTR?32,"around " ;160 33
.FSTR FSTR?33,"it " ;158 159
.FSTR FSTR?34,"like " ;150 51
.FSTR FSTR?35,"doesn't " ;147 22
.FSTR FSTR?36,"its " ;144 73
.FSTR FSTR?37,"has " ;142 72
.FSTR FSTR?38,"looks " ;136 35
.FSTR FSTR?39,"There's " ;136 18
.FSTR FSTR?40,"can " ;126 64
.FSTR FSTR?41,"very " ;123 42
.FSTR FSTR?42,"would " ;120 31
.FSTR FSTR?43,"Your " ;120 31
.FSTR FSTR?44,"begins " ;120 25
.FSTR FSTR?45,"here" ;116 59
.FSTR FSTR?46,"large " ;116 30
.FSTR FSTR?47,"you" ;114 115
.FSTR FSTR?48,"through " ;114 20
.FSTR FSTR?49,"don't " ;110 23
.FSTR FSTR?50,"almost " ;110 23
.FSTR FSTR?51,"on " ;109 110
.FSTR FSTR?52,"as " ;108 109
.FSTR FSTR?53,"light " ;108 28
.FSTR FSTR?54,"That " ;104 27
.FSTR FSTR?55,"was " ;100 51
.FSTR FSTR?56,"this " ;99 34
.FSTR FSTR?57,"spell" ;99 34
.FSTR FSTR?58,"see " ;98 50
.FSTR FSTR?59,"I " ;96 97
.FSTR FSTR?60,"out " ;96 49
.FSTR FSTR?61,"there " ;96 25
.FSTR FSTR?62,"Belboz " ;96 17
.FSTR FSTR?63,"before " ;95 20
.FSTR FSTR?64,"been " ;93 32
.FSTR FSTR?65,"not " ;92 47
.FSTR FSTR?66,"nothing " ;90 16
.FSTR FSTR?67,"already " ;90 16
.FSTR FSTR?68,"at " ;88 89
.FSTR FSTR?69,"an " ;86 87
.FSTR FSTR?70,"only " ;84 29
.FSTR FSTR?71,"They " ;84 22
.FSTR FSTR?72,"glowing " ;84 15
.FSTR FSTR?73,"something" ;84 13
.FSTR FSTR?74,"anything " ;84 13
.FSTR FSTR?75,"You're " ;84 13
.FSTR FSTR?76,"just " ;81 28
.FSTR FSTR?77,"their " ;80 21
.FSTR FSTR?78,"still " ;80 21
.FSTR FSTR?79,"little " ;80 17
.FSTR FSTR?80,"enough " ;80 17
.FSTR FSTR?81,"too " ;76 39
.FSTR FSTR?82,"cube" ;76 39
.FSTR FSTR?83,"He " ;76 39
.FSTR FSTR?84,"rock " ;75 26
.FSTR FSTR?85,"look " ;75 26
.FSTR FSTR?86,"even " ;75 26
.FSTR FSTR?87,"down " ;75 26
.FSTR FSTR?88,"isn't " ;75 16
.FSTR FSTR?89,"carpet " ;75 16
.FSTR FSTR?90,"all " ;72 37
.FSTR FSTR?91,"more " ;72 25
.FSTR FSTR?92,"Room" ;72 25
.FSTR FSTR?93,"grues " ;72 19
.FSTR FSTR?94,"Octagonal " ;72 9
.FSTR FSTR?95,"one " ;70 36
.FSTR FSTR?96,"Nothing " ;70 11
;word frequency table of 96 most common words
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI