Final Revision

This commit is contained in:
historicalsource 2019-04-14 00:22:08 -04:00
commit 3e13b2806b
35 changed files with 26502 additions and 0 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
# wishbringer

621
boxes.zil Normal file
View File

@ -0,0 +1,621 @@
"BOXES for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** BAD MAILBOX ***"
<GLOBAL BOX-SEEN? <>>
<GLOBAL BOX-DANGEROUS? <>>
<OBJECT MAILBOX
(IN PLEASURE-WHARF)
(DESC "big mailbox")
(SYNONYM MAILBOX BOX LID)
(ADJECTIVE MAIL BIG LARGE)
(FLAGS CONTBIT)
(ACTION MAILBOX-F)
(DESCFCN DESCRIBE-MAILBOX)
(CAPACITY 15)
(CONTFCN IN-MAILBOX)>
<ROUTINE IN-MAILBOX (CONTEXT)
<COND (<AND <EQUAL? .CONTEXT ,M-CONT>
<TOUCHING? ,PRSO>>
<TELL ,CANT " reach into the " D ,MAILBOX "." CR>
<RFATAL>)
(T
<RFALSE>)>>
<ROUTINE DESCRIBE-MAILBOX (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-OBJDESC>
<TELL "A big">
<COND (,BOX-DANGEROUS?
<TELL ", hungry">)>
<TELL " mailbox is ">
<COND (,BOX-DANGEROUS?
<TELL "threatening you ">)>
<TELL "nearby.">)>>
<ROUTINE BY-ITSELF ()
<SAY-THE ,MAILBOX>
<TELL " is opening and closing all by itself!" CR>>
<ROUTINE MAILBOX-F ()
<THIS-IS-IT ,MAILBOX>
<COND (<VERB? EXAMINE>
<COND (,BOX-DANGEROUS?
<BY-ITSELF>)
(T
<SAY-THE ,MAILBOX>
<TELL " seems ordinary enough.">
<COND (,SKEWED?
<TELL " Or does it?">)>
<CRLF>)>
<RTRUE>)
(<VERB? OPEN>
<COND (,BOX-DANGEROUS?
<BY-ITSELF>)
(<FSET? ,MAILBOX ,OPENBIT>
<ALREADY-OPEN>)
(,SKEWED?
<TELL "It immediately snaps shut. Bang!" CR>
<RFATAL>)
(T
<ENABLE <QUEUE I-BOX-LID 2>>
; <FSET ,MAILBOX ,OPENBIT>
; <OPENED>
; <CRLF>
<NOW-CLOSED-OR-OPEN ,MAILBOX T>)>
<RTRUE>)
(<VERB? CLOSE>
<COND (,BOX-DANGEROUS?
<BY-ITSELF>)
(<NOT <FSET? ,MAILBOX ,OPENBIT>>
<ALREADY-CLOSED>)
(T
<DISABLE <INT I-BOX-LID>>
; <FCLEAR ,MAILBOX ,OPENBIT>
; <TELL "Closed." CR>
<NOW-CLOSED-OR-OPEN ,MAILBOX>)>
<RTRUE>)
(<HURT? ,MAILBOX>
<COND (,BOX-DANGEROUS?
<BOX-MOOD>)
(T
<TELL "You shouldn't">
<DO-TO>
<TELL "government property." CR>)>
<RTRUE>)
(<AND <VERB? LOOK-INSIDE LOOK-DOWN REACH-IN>
,BOX-DANGEROUS?>
<BOX-MOOD>
<RTRUE>)
(<AND <VERB? GIVE PUT FEED THROW>
<EQUAL? ,PRSI ,MAILBOX>>
<COND (<EQUAL? ,PRSO ,LEAFLET>
<COND (<ENABLED? ,I-WAKE-BOX>
<DISABLE <INT I-WAKE-BOX>>)
(T
<DISABLE <INT I-BAD-BOX>>)>
<MOVE ,LEAFLET ,MAILBOX>
<TELL "Done." CR>
<COND (,BOX-DANGEROUS?
<SETG BOX-DANGEROUS? <>>
<MOVE ,MAILBOX ,STEEP-TRAIL>
<CRLF>
<SAY-THE ,MAILBOX>
<TELL " gobbles the " D ,LEAFLET
" down, smacks its lid and belches. \"Mmmm! Good!\"|
|
The satisfied box scrapes slowly out of sight." CR>)>
<RTRUE>)
(<NOT ,BOX-DANGEROUS?>
<RFALSE>)
(<EQUAL? ,PRSO ,VIOLET-NOTE>
<BOX-SPITS "STAMPED">
<RTRUE>)
(T
<BOX-SPITS "MAIL">
<RTRUE>)>)
(T
<RFALSE>)>>
<ROUTINE BOX-MOOD ()
<TELL "Better not. ">
<SAY-THE ,MAILBOX>
<TELL " isn't in a very good mood." CR>>
<ROUTINE BOX-SPITS (STR)
<MOVE ,PRSO ,HERE>
<SAY-THE ,MAILBOX>
<TELL " spits out ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " on the " D ,GROUND ". \"Not " .STR "!\"" CR>>
<ROUTINE I-BOX-LID ()
<COND (<IN? ,MAILBOX ,HERE>
<TELL CR "The ">
<BIG-LID>
<TELL "squeaks and">
<BANGS>)>
; <DISABLE <INT I-BOX-LID>>
<FCLEAR ,MAILBOX ,OPENBIT>>
<ROUTINE BIG-LID ()
<TELL "lid of the " D ,MAILBOX " ">>
<ROUTINE BANGS ()
<TELL " snaps shut with a clang." CR>>
<GLOBAL BOX-YELLS
<LTABLE 0
"Feed me"
"I'm hungry"
"I want MAIL"
"Feed me. I'm HUNGRY"
"Mail"
"Hungry"
"Eat">>
<ROUTINE HUNGRY ()
<TELL "\"" <PICK-ONE ,BOX-YELLS> "!\"">>
<GLOBAL BOX-SCRIPT 0>
<ROUTINE I-WAKE-BOX ()
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<EQUAL? ,HERE ,PLEASURE-WHARF>
<SETG BOX-SCRIPT <+ ,BOX-SCRIPT 1>>
<THIS-IS-IT ,MAILBOX>
<CRLF>
<COND (<EQUAL? ,BOX-SCRIPT 1>
<TELL "A voice behind you growls, ">
<HUNGRY>
<TELL
" You turn to face the sound, but there's nobody here except you." CR>)
(<EQUAL? ,BOX-SCRIPT 2>
<TELL "You watch with astonishment as the ">
<BIG-LID>
<TELL
"slowly opens by itself, then">
<BANGS>)
(<EQUAL? ,BOX-SCRIPT 3>
<SETG BOX-DANGEROUS? T>
<TELL "The ">
<BIG-LID>
<TELL "opens again. ">
<HUNGRY>
<CRLF>)
(<EQUAL? ,BOX-SCRIPT 4>
<DISABLE <INT I-WAKE-BOX>>
<ENABLE <QUEUE I-BAD-BOX -1>>
<SAY-THE ,MAILBOX>
<TELL
" begins to clatter like a rusty machine. Your astonishment turns to horror as the mindless thing begins to MOVE! Slowly at first, but with increasing confidence, it scrapes across the planks of the "
D ,PLEASURE-WHARF ", heading straight in your direction!" CR CR "The ">
<BIG-LID>
<TELL "snaps open with a menacing clang. ">
<HUNGRY>
<CRLF>)>)>>
<GLOBAL BOX-COMING 0>
<GLOBAL EAT-SCRIPT 0>
<GLOBAL PREVIOUS-LOC <>>
<ROUTINE NO-MAILBOX-ALLOWED? ()
<COND (<OR <EQUAL? ,HERE ,WHARF ,PLEASURE-WHARF ,FESTERON-POINT>
<EQUAL? ,HERE ,ROTARY-NORTH ,ROTARY-SOUTH ,ROTARY-EAST>
<EQUAL? ,HERE ,ROTARY-WEST ,EDGE-OF-LAKE ,RIVER-OUTLET>
<EQUAL? ,HERE ,PARK ,LOOKOUT-HILL ,SOUTH-OF-BRIDGE>
<EQUAL? ,HERE ,WEST-OF-HOUSE ,ROCKY-PATH>>
<RFALSE>)
(T
<RTRUE>)>>
; <ROUTINE NO-MAILBOX-ALLOWED? ("AUX" TEMP)
<SET TEMP <GET ,BOXES-ALLOWED 0>>
<REPEAT ()
<COND (<EQUAL? ,HERE <GET ,BOXES-ALLOWED .TEMP>>
<RFALSE>)
(<ZERO? .TEMP>
<RTRUE>)
(T
<SET TEMP <- .TEMP 1>>)>>>
; <GLOBAL BOXES-ALLOWED
<PLTABLE
WHARF PLEASURE-WHARF PARK ROTARY-NORTH ROTARY-SOUTH ROTARY-EAST
ROTARY-WEST EDGE-OF-LAKE RIVER-OUTLET LOOKOUT-HILL SOUTH-OF-BRIDGE
WEST-OF-HOUSE FESTERON-POINT>>
<ROUTINE I-BAD-BOX ("AUX" TEMP)
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<IN? ,MAILBOX ,HERE>
<SETG BOX-COMING 0>
<SETG EAT-SCRIPT <+ ,EAT-SCRIPT 1>>
<COND (<FIGHT? ,SMALL-BOX>
<RTRUE>)
(<EQUAL? ,EAT-SCRIPT 1>
<SAY-BOX-CLOSER ,BOX-CLOSERS>)
(<EQUAL? ,EAT-SCRIPT 2>
<SAY-BOX-CLOSER ,BOX-EVEN-CLOSERS>)
(T
<SETG EAT-SCRIPT 0>
<SET TEMP <FIRST? ,PROTAGONIST>>
<COND (.TEMP
<FCLEAR .TEMP ,WORNBIT>
<MOVE .TEMP ,FOSSIL>
<CRLF>
<SAY-THE ,MAILBOX>
<TELL " " <PICK-ONE ,SWIPES> " ">
<ARTICLE .TEMP T>
<TELL D .TEMP " away from you and swallows it! ">
<COND (<PROB 50>
<HUNGRY>)>
<CRLF>
<COND (<EQUAL? .TEMP ,WISHBRINGER ,SHOE>
<I-LUCK>
<I-GLOW>)>)
(T
<HUNGRY> <CRLF> <CRLF>
<TELL
"With a triumphant roar, the " D ,MAILBOX " trips your feet and sends you sprawling to the " D ,GROUND ". Its snapping lid closes in, and you are Sent.">
<BAD-ENDING>)>)>)
(T
<SETG EAT-SCRIPT 0>
<COND (<EQUAL? ,HERE ,WEST-OF-HOUSE>
<RTRUE>)
(<NO-MAILBOX-ALLOWED?>
<RTRUE>)>
<COND (<NOT <EQUAL? ,HERE ,PREVIOUS-LOC>>
<SETG PREVIOUS-LOC ,HERE>
<SETG BOX-COMING 0>)>
<SETG BOX-COMING <+ ,BOX-COMING 1>>
<COND ; (<EQUAL? ,BOX-COMING 1>
<RTRUE>)
(<EQUAL? ,BOX-COMING 2>
<TELL CR <PICK-ONE ,BAD-BOX-COMINGS> CR>)
(T
<MOVE ,MAILBOX ,HERE>
<SAY-BOX-CLOSER ,BAD-BOX-ARRIVALS T>
<FIGHT? ,SMALL-BOX>)>)>>
<ROUTINE SAY-BOX-CLOSER (LIST "OPTIONAL" (HUNGRY? <>))
<CRLF>
<SAY-THE ,MAILBOX>
<TELL <PICK-ONE .LIST> ".">
<COND (<OR .HUNGRY?
<PROB 50>>
<TELL " ">
<HUNGRY>)>
<CRLF>>
<GLOBAL BOX-CLOSERS
<LTABLE 0
" is getting closer"
" shouts \"MAIL!\" as it edges closer"
"'s lid snaps open and shut with hunger">>
<GLOBAL BOX-EVEN-CLOSERS
<LTABLE 0
" cries, \"Feed me MAIL!\" It's getting very close"
" is almost close enough to touch you"
" scrapes even closer and snaps its lid">>
<GLOBAL BAD-BOX-COMINGS
<LTABLE 0
"You hear a scraping noise nearby. It's getting closer!"
"Something is scraping across the ground nearby. It's coming this way!"
"A distant scraping noise is getting louder.">>
<GLOBAL BAD-BOX-ARRIVALS
<LTABLE 0
" has found you again"
" scrapes into view"
" appears nearby">>
"*** SMALL MAILBOX ***"
<OBJECT SMALL-BOX
(IN INSIDE-POST-OFFICE)
(DESC "little mailbox")
(SYNONYM MAILBOX BOX BOXES LID)
(ADJECTIVE MAIL SMALL LITTLE PRIVATE)
(FLAGS CONTBIT NDESCBIT)
(CAPACITY 10)
(ACTION SMALL-BOX-F)>
<ROUTINE SMALL-BOX-F ()
<THIS-IS-IT ,SMALL-BOX>
<COND (<EQUAL? ,HERE ,INSIDE-POST-OFFICE>
<COND (<PRIVATE-BOXES?>
<RTRUE>)
(T
<RFALSE>)>)
(<AND <VERB? OPEN>
<NOT ,HOUSE-VISITED?>>
<SETG HOUSE-VISITED? T>
<ENABLE <QUEUE I-WAKE-SMALL-BOX -1>>
<RFALSE>)
(<VERB? EXAMINE>
<COND (<OR ,BOX-ALIVE?
<ENABLED? ,I-WAKE-SMALL-BOX>>
<TELL "It's the strangest " D ,SMALL-BOX
" you've ever seen." CR>
<RTRUE>)
(T
<RFALSE>)>)
(<AND <VERB? RUB>
,BOX-ALIVE?>
<SAY-THE ,SMALL-BOX>
<COOS-AT "your touch">
<RTRUE>)
(<AND <TALKING-TO? ,SMALL-BOX>
,BOX-ALIVE?>
<SAY-THE ,SMALL-BOX>
<TELL " doesn't reply, but">
<COOS-AT "the sound of your voice">
<RFATAL>)
(T
<RFALSE>)>>
<ROUTINE COOS-AT (STR)
<TELL " coos with pleasure at " .STR "." CR>>
<GLOBAL SMALL-SCRIPT 0>
<GLOBAL BOX-ALIVE? <>>
<ROUTINE I-WAKE-SMALL-BOX ()
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<EQUAL? ,HERE ,WEST-OF-HOUSE>
<SETG SMALL-SCRIPT <+ ,SMALL-SCRIPT 1>>
<CRLF>
<COND (<EQUAL? ,SMALL-SCRIPT 1>
<TELL
"The edges of the " D ,SMALL-BOX " are beginning to twinkle.">)
(<EQUAL? ,SMALL-SCRIPT 2>
<SAY-THE ,SMALL-BOX>
<TELL
" is engulfed in a sparkling aurora! Tremors of anticipation run up and down its length, and the air sings with Magick.">)
(<EQUAL? ,SMALL-SCRIPT 3>
<SETG BOX-ALIVE? T>
<TELL
"With a gentle pop, the " D ,SMALL-BOX " pulls itself out of the " D ,GROUND
" and cavorts about the grass like a happy rabbit!">)
(T
<DISABLE <INT I-WAKE-SMALL-BOX>>
<ENABLE <QUEUE I-FRIENDLY-BOX -1>>
<SAY-THE ,SMALL-BOX>
<TELL
" notices you and snaps its tiny lid with joy. It makes a silly">
<CLUMP>
<TELL "as it">
<HOPS-TO-SIDE>)>
<CRLF>)
; (T
<DISABLE <INT I-WAKE-SMALL-BOX>>
<ENABLE <QUEUE I-FRIENDLY-BOX -1>>)>>
<ROUTINE CLUMP ()
<TELL " \"clump-clump, clump-clump\" sound ">>
<ROUTINE HOPS-TO-SIDE ()
<TELL " hops to your side and rubs lovingly against your sleeve.">>
<GLOBAL SMALL-BOX-COMING 0>
<GLOBAL PREVIOUS-SMALL-LOC <>>
<ROUTINE I-FRIENDLY-BOX ("AUX" TEMP)
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<IN? ,SMALL-BOX ,HERE>
<SETG SMALL-BOX-COMING 0>
<COND (<FIGHT? ,MAILBOX>
<RTRUE>)
(<PROB 50>
<CRLF>
<SAY-THE ,SMALL-BOX>
<TELL " " <PICK-ONE ,CUDDLES> "." CR>)>)
(T
<COND (<NO-MAILBOX-ALLOWED?>
<RTRUE>)>
<COND (<NOT <EQUAL? ,HERE ,PREVIOUS-SMALL-LOC>>
<SETG PREVIOUS-SMALL-LOC ,HERE>
<SETG SMALL-BOX-COMING 0>)>
<SETG SMALL-BOX-COMING <+ ,SMALL-BOX-COMING 1>>
<COND (<EQUAL? ,SMALL-BOX-COMING 1>
<RTRUE>)
(<EQUAL? ,SMALL-BOX-COMING 2>
<MOVE ,SMALL-BOX ,HERE>
<CRLF>
<SAY-THE ,SMALL-BOX>
<TELL " \"clump-clumps\" "
<PICK-ONE ,SMALL-BOX-ARRIVALS> "." CR>
<FIGHT? ,MAILBOX>)>)>>
<GLOBAL CUDDLES
<LTABLE 0
"cuddles up around your feet"
"rubs your leg"
"is watching you eagerly"
"nuzzles you lovingly"
"hops around with excitement"
"snaps playfully at your heels"
"is \"clump-clumping\" about happily">>
<GLOBAL SMALL-BOX-ARRIVALS
<LTABLE 0
"into view and snaps a greeting"
"to your side with a joyful snap"
"happily into view">>
<ROUTINE FIGHT? (ENEMY)
<COND (<AND <IN? .ENEMY ,HERE>
<G? ,BOX-SCRIPT 2>>
<REMOVE ,SMALL-BOX>
<REMOVE ,MAILBOX>
<REMOVE ,EXHIBITS>
<MOVE ,FOSSIL ,MUSEUM>
<MOVE-ALL ,SMALL-BOX ,FOSSIL>
<DISABLE <INT I-FRIENDLY-BOX>>
<COND (<ENABLED? ,I-WAKE-BOX>
<DISABLE <INT I-WAKE-BOX>>)>
<COND (<ENABLED? ,I-BAD-BOX>
<DISABLE <INT I-BAD-BOX>>)>
<SETG BOX-ALIVE? <>>
<TELL CR
"The two mailboxes freeze at the sight of one another.|
|
The " D ,SMALL-BOX " snarls and stands protectively by your side. The "
D ,MAILBOX " emits a frightful growl and throws its lid wide open, displaying rows of ">
<SHARP-TEETH>
<TELL
". A crowd of postal meters and stamp dispensers gathers as the metal warriors circle each other with tense, snapping lids.|
|
With a sudden rush, the " D ,SMALL-BOX " throws itself at the " D ,MAILBOX
" and clamps onto its forefoot. The " D ,MAILBOX
" roars with anger, bites the " D ,SMALL-BOX " viciously and tries in vain to shake it off. You stare in wonder as the fighting boxes swell to twice their normal size, then four times larger, eight times!|
|
The " D ,MAILBOX " frees itself with a savage twist and bends to finish its foe. The " D ,SMALL-BOX " dodges, grips the descending lid and holds on for dear life. Locked in mortal combat, the giant boxes roll over and over, shaking the earth with the thunder of battle.|
|
The scene disappears under a cloud of dust. You hear a terrible scream of agony, then an even more terrible silence. When the air clears, the boxes and spectators are gone." CR>
<RTRUE>)
(T
<RFALSE>)>>
"*** BOOTS ***"
<OBJECT BOOTS
(DESC "boots")
(SYNONYM BOOTS PATROL)
(ADJECTIVE BOOT TALL)
(FLAGS NARTICLEBIT ACTORBIT NDESCBIT)>
<ROUTINE DEPOSIT-BRANCH ()
<COND (<IN? ,BRANCH ,PROTAGONIST>
<MOVE ,BRANCH ,HERE>)
(<IN? ,BROOM ,PROTAGONIST>
<SETG BROOM-SIT? <>>
<MOVE ,BROOM ,HERE>)>>
<ROUTINE TRAMP ()
<TELL " tramp of marching " D ,BOOTS " ">>
<ROUTINE COMING-THIS-WAY ()
<TELL " It sounds as if they're coming this way!">>
<GLOBAL JAIL-VISITS 0> ; "# times jail visited"
<ROUTINE TO-JAIL ()
<SETG ON-STUMP? <>>
<COND (<ZERO? ,JAIL-VISITS>
<SETG JAIL-SCRIPT 24>
<DISABLE <INT I-BREAK-IN>>
<ENABLE <QUEUE I-JAIL -1>>) ; "In case you snuck in"
(T
<SETG JAIL-SCRIPT 16>)> ; "fewer turns for 2nd visit"
<SETG JAIL-VISITS <+ ,JAIL-VISITS 1>> ; "New visit!"
<MOVE ,PROTAGONIST ,JAIL-CELL>
<SETG HERE ,JAIL-CELL>
<MOVE-ALL ,PROTAGONIST ,JAIL-CELL>
<COND (<G? ,JAIL-VISITS 1>
<FCLEAR ,BUNK ,RMUNGBIT>
<FCLEAR ,UNDER-CELL ,ONBIT>
<FCLEAR ,UNDER-CELL ,TOUCHBIT>)>
<CRLF>
<CRLF>
<V-LOOK>
<I-LUCK>
<I-GLOW>>
<ROUTINE EVIL-VOICES ()
<TELL "evil voices down the " D ,CORRIDOR>>
<ROUTINE HEAR-WAILS ()
<TELL ,YOU-HEAR <PICK-ONE ,JAIL-SOUNDS> " from ">
<COND (<PROB 50>
<TELL "an adjacent cell">)
(T
<TELL "the " D ,CORRIDOR " outside">)>
<TELL "." CR>>
<GLOBAL JAIL-SOUNDS
<LTABLE 0
"wails of anguish"
"somebody howling with pain"
"sounds of violence"
"an agonized cry">>
<ROUTINE SHARK-SNACK ()
<TELL
" with this jailbreaker any more tonight, do we?\" The surrounding "
D ,BOOTS " grunt in sympathy. \"No, of course not. Let's ">
<COND (<NOT <EQUAL? ,HERE ,WHARF ,PLEASURE-WHARF>>
<TELL "pay a visit to the " D ,PLEASURE-WHARF ", and ">)>
<TELL "give the " D ,SHARKS " a little bedtime snack!\"">>
<ROUTINE THROWN-OVER-SHOULDER ()
<TELL CR CR
"You're thrown into an especially smelly Boot and carried, kicking and screaming, to ">>
<ROUTINE INTO-BAY ()
<TELL
"the edge of the " D ,PLEASURE-WHARF ". With a mighty swing, you're thrown high into the air and fall with a splash into the churning waters of">
<WHICH-TOWN "Bay">
<TELL ".|
|
The " D ,BOOTS " on the wharf stomp and hoot as a black fin rises above the waves. It circles slowly, getting closer. You shut your eyes and pray that the end will be quick and not too painful...">
<COND (,HORSE-SAVED?
<SAVED-BY-HORSES>)
(T
<BAD-ENDING>)>>
<ROUTINE SAVED-BY-HORSES ()
<REMOVE ,BOOTS>
<DISABLE <INT I-JAIL>>
<DISABLE <INT I-BOOT-PATROL>>
<TELL CR CR
"\"Hop on!\"|
|
The tiny voice is somewhere near your left ear. \"Don't just thrash about with your eyes shut. Hop on!\"|
|
The " D ,BOOTS " on the " D ,PLEASURE-WHARF " have stopped hooting and started screaming. Timidly, you open one eye.|
|
The bay is boiling with thousands of " D ,HORSE "s! They leap from the waves like wet little rockets, splashing the " D ,PLEASURE-WHARF " with black, oily water. Many of the " D ,BOOTS " have already slipped and fallen into the sea; and a black fin is gliding confidently in their direction.|
|
\"What are you waiting for? Halloween?\"|
|
The familiar " D ,HORSE " at your ear urges you to a nearby buoy. You grasp it with your last ounce of strength and feel yourself speeding across the bay, propelled by dozens of " D ,HORSE "s reined to the buoy with seaweed.|
|
\"I don't mind returning a favor,\" remarks the " D ,HORSE " as your brain sinks into oblivion, \"but can't you pick a better night to go swimming?\"">
<FCLEAR ,POLICE-DOOR ,OPENBIT>
<FSET ,POLICE-DOOR ,LOCKEDBIT>
<MOVE ,PROTAGONIST ,FESTERON-POINT>
<SETG HERE ,FESTERON-POINT>
<MOVE-ALL ,PROTAGONIST ,FESTERON-POINT>
<COME-TO-SENSES>>
<ROUTINE JAIL-AGAIN ()
<FSET ,HIDDEN-HATCH ,RMUNGBIT>
<REMOVE ,PSEUDO-BUNK>
<FCLEAR ,HIDDEN-HATCH ,TOUCHBIT>
<TELL "\"Well, well. If it isn't the disappearing mail clerk.\" You open your mouth to reply, but a vicious little kick changes your mind. \"The Tower wants a chat with this troublemaker.\"|
|
\"The " D ,SHARKS " are getting restless,\" remarks the Tall Boot hopefully."
CR CR D ,MACGUFFIN " smirks. \"So is" ,EONE ".\"">>
; "Table for BUTTON-F"
<GLOBAL DESTINATIONS
<PLTABLE
<PLTABLE <> <> EDGE-OF-LAKE <> <>>
<PLTABLE <> LOOKOUT-HILL ROTARY-WEST INSIDE-GRAVE <>>
<PLTABLE SOUTH-OF-BRIDGE ROTARY-NORTH PARK ROTARY-SOUTH HILLTOP>
<PLTABLE <> WEST-OF-HOUSE ROTARY-EAST VIDEO-ARCADE <>>
<PLTABLE <> <> PLEASURE-WHARF <> <>>>>

677
bridge.zil Normal file
View File

@ -0,0 +1,677 @@
"BRIDGE for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** ON BRIDGE ***"
<OBJECT ON-BRIDGE
(IN ROOMS)
(DESC "Bridge")
(FLAGS ONBIT RLANDBIT INDOORSBIT WETBIT)
(GLOBAL RIVER BRIDGE)
(NORTH PER OFF-BRIDGE)
(EAST PER PROBABLY-DROWN)
(SOUTH TO SOUTH-OF-BRIDGE)
(WEST PER PROBABLY-DROWN)
(DOWN PER PROBABLY-DROWN)
(ACTION ON-BRIDGE-F)>
<ROUTINE ON-BRIDGE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"You're on a " D ,BRIDGE " that spans the">
<WHICH-TOWN "River">
<TELL ". A sign hangs on an arch overhead." CR>)>>
<ROUTINE OFF-BRIDGE ()
<COND (<AND ,SKEWED?
<IN? ,TROLL ,NORTH-OF-BRIDGE>>
; <START-BUZZ 2>
<FCLEAR ,TOLL-GATE ,OPENBIT>
<ENABLE <QUEUE I-SHUT-GATE -1>>)>
<RETURN ,NORTH-OF-BRIDGE>>
<ROUTINE I-SHUT-GATE ()
<DISABLE <INT I-SHUT-GATE>>
<CRLF>
<SAY-THE ,TROLL>
<TELL " lowers the " D ,TOLL-GATE " after you pass." CR>>
<OBJECT BRIDGE
(IN LOCAL-GLOBALS)
(DESC "covered bridge")
(SYNONYM BRIDGE)
(ADJECTIVE COVERED)
(FLAGS NDESCBIT)
(ACTION BRIDGE-F)>
<ROUTINE BRIDGE-F ()
<COND (<VERB? CROSS WALK-TO THROUGH ENTER>
<COND (<EQUAL? ,HERE ,SOUTH-OF-BRIDGE>
<DO-WALK ,P?NORTH>)
(<EQUAL? ,HERE ,NORTH-OF-BRIDGE>
<DO-WALK ,P?SOUTH>)
(<EQUAL? ,HERE ,ON-BRIDGE>
<V-WALK-AROUND>)
(T
<RFALSE>)>
<RTRUE>)
(<VERB? LEAP>
<COND (<EQUAL? ,HERE ,ON-BRIDGE>
<PERFORM ,V?KILL ,ME>)
(T
<ALREADY-ON ,BRIDGE T>)>
<RTRUE>)
(<VERB? LOOK-UNDER>
<PERFORM ,V?EXAMINE ,RIVER>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT BRIDGE-SIGN
(IN ON-BRIDGE)
(DESC "sign")
(SYNONYM SIGN ARCH)
(ADJECTIVE BIG)
(FLAGS NDESCBIT READBIT)
(ACTION BRIDGE-SIGN-F)>
<ROUTINE BRIDGE-SIGN-F ()
<COND (<VERB? READ EXAMINE>
<CRLF>
<FIXED-FONT-ON>
<TELL " ">
<COND (<EQUAL? ,WHERE-FROM ,SOUTH-OF-BRIDGE>
<TELL "LEAV">)
(T
<TELL "ENTER">)>
<TELL "ING ">
<COND (,SKEWED?
<TELL "WITCHVILLE">)
(T
<TELL "FESTERON">)>
<TELL CR CR>
<COND (,SKEWED?
<TELL
" Curfew Begins At 6 PM|
Boot Patrol On Duty|
Violators Will Be Jailed!">)
(T
<COND (<EQUAL? ,WHERE-FROM ,SOUTH-OF-BRIDGE>
<TELL "Next Time You're In Town" CR>)>
<TELL
" Visit Our Fun-Filled" CR " " D ,PLEASURE-WHARF>)>
<CRLF>
<FIXED-FONT-OFF>
<RTRUE>)
(T
<RFALSE>)>>
"*** NORTH OF BRIDGE ***"
<OBJECT NORTH-OF-BRIDGE
(IN ROOMS)
(DESC "North of Bridge")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL BRIDGE RIVER CLIFF SIGN)
(NORTH PER BUMP-CLIFF)
(EAST TO CLIFF-BOTTOM)
(SOUTH PER ENTER-BRIDGE?)
(WEST PER BUMP-CLIFF)
(UP "The cliff is much too steep to climb.")
(IN PER ENTER-BRIDGE?)
(ACTION NORTH-OF-BRIDGE-F)
(PSEUDO "SHORE" HERE-F)>
<ROUTINE NORTH-OF-BRIDGE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "This is the north side of the">
<WHICH-TOWN "Bridge">
<TELL ". Sheer cliff walls rise abruptly " <TO-N> " and west. A path wanders east along the shore of the river.">
<COND (,SKEWED?
<TELL CR CR
"A rickety " D ,TOLL-GATE " has been thrown up across the " D ,ENTRANCE
" to the " D ,BRIDGE ". A handpainted sign is nailed to the middle of the">
<OPEN-CLOSED ,TOLL-GATE>
<TELL "gate.">
<COND (<IN? ,TROLL ,NORTH-OF-BRIDGE>
<THIS-IS-IT ,TROLL>
<TELL CR CR
"Standing near the " D ,TOLL-GATE " is an ugly, gnomelike creature. A less original story would probably refer to it as a troll.">)>)>
<CRLF>)>>
<ROUTINE ENTER-BRIDGE? ()
<SETG WHERE-FROM ,NORTH-OF-BRIDGE>
<COND (<NOT ,SKEWED?>
<RETURN ,ON-BRIDGE>)
(<FSET? ,TOLL-GATE ,OPENBIT>
<COND (<L? ,WISDOM 3>
<COND (<FSET? ,LAKE-SAND ,TOOLBIT>
<START-BUZZ 4>)
(T
<START-BUZZ 3>)>)>
<FSET ,TROLL ,RMUNGBIT>
<RETURN ,ON-BRIDGE>)
(T
<COND (<IN? ,TROLL ,NORTH-OF-BRIDGE>
<THIS-IS-IT ,TROLL>
<TELL
"\"" <PICK-ONE ,TOLL-DEMANDS> "\" croaks the troll, palm outstretched." CR>)
(T
<ITS-CLOSED ,TOLL-GATE>)>
<RFALSE>)>>
<GLOBAL TOLL-DEMANDS
<LTABLE 0
"The sign says 'One Gold Coin,'"
"Show me first a gold coin,"
"Ask not for whom the troll tolls,">>
<OBJECT TROLL
(DESC "troll")
(SYNONYM TROLL CREATURE)
(ADJECTIVE UGLY GNOMELIKE)
(FLAGS ACTORBIT NDESCBIT RMUNGBIT TOOLBIT)
(ACTION TROLL-F)>
; "RMUNGBIT = troll has not accepted the coin,
TOOLBIT = troll has not been given the can"
<ROUTINE TROLL-F ("OPTIONAL" (CONTEXT <>))
<COND (<VERB? EXAMINE>
<SAY-THE ,TROLL>
<TELL " is staring ">
<COND (,ECLIPSE?
<TELL "fearfully upward">)
(T
<TELL "back at you stupidly">)>
<TELL "." CR>
<RTRUE>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,TROLL>>
<COND (,ECLIPSE?
<TROLL-NOT-INTERESTED>
<RTRUE>)
(<EQUAL? ,PRSO ,COIN>
<COND (,COIN-OFFERED?
<REMOVE ,COIN>
<SAY-THE ,TROLL>
<TELL
" angrily tosses your " D ,COIN " into the river and mutters something indelicate about counterfeiters." CR>
<RTRUE>)>
<SETG COIN-OFFERED? T>
<SAY-THE ,TROLL>
<TELL
" snatches away your " D ,COIN " with a grunt">
<COND (,LUCKY?
<MOVE ,COIN ,TROLL>
<FSET ,TOLL-GATE ,OPENBIT>
<FCLEAR ,TROLL ,RMUNGBIT>
<THIS-IS-IT ,BRIDGE>
<START-BUZZ 3>
<TELL
". Luckily, he hides it away without looking at it and opens the "
D ,TOLL-GATE ". \"Pass.\"" CR>
<RTRUE>)
(T
<MOVE ,COIN ,NORTH-OF-BRIDGE>
<THIS-IS-IT ,COIN>
<TELL " and squints at it suspiciously. \"Ugh!\" he cries, holding it up to the moonlight. \"This is a fake!\" He points accusingly at the familiar">
<SAY-PROFILE>
<TELL ", throws your coin to the " D ,GROUND
" and pulls out another. \"This is what an OFFICIAL " D ,COIN " looks like!\"|
|
The " D ,TROLL " proudly exhibits his coin. It shows the profile of an evil-looking " D ,OLD-WOMAN>)>
<TELL "." CR>
<RFATAL>)
(<AND <EQUAL? ,PRSO ,SNAKE-CAN>
<NOT <FSET? ,SNAKE-CAN ,OPENBIT>>>
<SAY-THE ,SNAKE-CAN>
<TELL
" rattles as you hand it to the " D ,TROLL ". ">
<COND (<FSET? ,TROLL ,TOOLBIT>
<FCLEAR ,TROLL ,TOOLBIT>
<FSET ,SNAKE-CAN ,OPENBIT>
<TELL "\"Mmm, yummy!\" he exclaims, peering at the label and then greedily opening the lid..." CR CR>)>
<COND (,SNAKE-GONE?
<MOVE ,SNAKE-CAN ,HERE>
<TELL
"\"Hurumph!\" he growls, pitching the can to the " D ,GROUND ". \"Not funny!\""
CR>)
(T
<TELL "Yow! As he opens">
<SNAKE-LEAPS-OUT-AT "the troll">
<CAN-FALLS>
<FRIGHTEN-TROLL>
<CRLF>
<UPDATE-SCORE 3>)>
<RFATAL>)
(T
<MOVE ,PRSO ,NORTH-OF-BRIDGE>
<SAY-THE ,TROLL>
<TELL " studies ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO
" closely to see if it resembles a " D ,COIN ", and pitches it to the "
D ,GROUND " when he decides that it doesn't." CR>
<RTRUE>)>)
(<ASKING? ,TROLL>
<COND (,ECLIPSE?
<TROLL-NOT-INTERESTED>)
(T
<TELL
"\"No time for questions,\" " <PICK-ONE ,YELL-TYPES> " the idle troll." CR>)>
<RFATAL>)
(<VERB? FEED TELL YELL REPLY HELLO WAVE-AT ; GOODBYE>
<COND (,ECLIPSE?
<TROLL-NOT-INTERESTED>)
(T
<SAY-THE ,TROLL>
<TELL " " <PICK-ONE ,YELL-TYPES>
" something awful and ignores you." CR>)>
<RFATAL>)
(<AND <VERB? FOLLOW>
,TROLL-SCARED?
<EQUAL? ,HERE ,NORTH-OF-BRIDGE ,ON-BRIDGE>>
<DO-WALK ,P?SOUTH>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE TROLL-NOT-INTERESTED ()
<SAY-THE ,TROLL>
<TELL " is too busy watching the sky to notice." CR>>
<GLOBAL COIN-OFFERED? <>>
<OBJECT TOLL-GATE
(DESC "toll gate")
(SYNONYM GATE)
(ADJECTIVE TOLL)
(FLAGS NDESCBIT DOORBIT)
(ACTION TOLL-GATE-F)>
<ROUTINE TOLL-GATE-F ()
<COND (<NOT ,SKEWED?>
<CANT-SEE-ANY ,TOLL-GATE>
<RFATAL>)
(<VERB? OPEN RAISE>
<COND (<FSET? ,TOLL-GATE ,OPENBIT>
<ALREADY-OPEN>)
(T
<NOW-CLOSED-OR-OPEN ,TOLL-GATE T>
<COND (<AND <IN? ,TROLL ,NORTH-OF-BRIDGE>
<FSET? ,TROLL ,RMUNGBIT>>
<FCLEAR ,TOLL-GATE ,OPENBIT>
<CRLF>
<SAY-THE ,TROLL>
<TELL " slams the " D ,TOLL-GATE " shut. \""
<PICK-ONE ,TOLL-DEMANDS>
"\" he " <PICK-ONE ,YELL-TYPES> "." CR>)>)>
<RTRUE>)
(<VERB? WALK-TO ENTER EXIT THROUGH>
<COND (<FSET? ,TOLL-GATE ,OPENBIT>
<DO-WALK ,P?SOUTH>)
(T
<ITS-CLOSED ,TOLL-GATE>)>
<RTRUE>)
(<VERB? LEAP CROSS CLIMB-ON CLIMB-UP>
<TOO-HIGH ,TOLL-GATE>
<RTRUE>)
(<AND <HURT? ,TOLL-GATE>
<IN? ,TROLL ,NORTH-OF-BRIDGE>>
<SAY-THE ,TROLL>
<MIGHT-NOT-LIKE>
<RTRUE>)
(<VERB? CLOSE LOWER>
<COND (<NOT <FSET? ,TOLL-GATE ,OPENBIT>>
<ALREADY-CLOSED>)
(<IN? ,TROLL ,NORTH-OF-BRIDGE>
<TELL "\"That's MY job,\" snaps the " D ,TROLL "." CR>)
(T
; <FCLEAR ,TOLL-GATE ,OPENBIT>
; <TELL "Closed." CR>
<NOW-CLOSED-OR-OPEN ,TOLL-GATE>)>
<RTRUE>)
(<VERB? EXAMINE READ LOOK-ON>
<PERFORM ,V?EXAMINE ,SIGN>
<RTRUE>)
(T
<RFALSE>)>>
"*** CLIFF BOTTOM ***"
<OBJECT CLIFF-BOTTOM
(IN ROOMS)
(DESC "Cliff Bottom")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL RIVER SAND CLIFF TRAIL)
(NORTH PER BUMP-CLIFF)
(EAST PER BUMP-CLIFF)
(SOUTH PER PROBABLY-DROWN)
(WEST PER LIFT-VULTURE)
(UP PER ENTER-TRAIL?)
(IN PER BUMP-CLIFF)
(ACTION CLIFF-BOTTOM-F)>
<ROUTINE CLIFF-BOTTOM-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "You're at the bottom of a cliff that rises up from the north bank of the river.">
<COND (<NOT ,SKEWED?>
<TELL " ">
<TRAIL-WINDS-UP>)>
<CRLF>)>>
<ROUTINE ENTER-TRAIL? ()
<COND (,SKEWED?
<TRAIL-MISPLACED>
<RFALSE>)
(T
<COND (<FSET? ,STEEP-TRAIL ,RMUNGBIT>
<FCLEAR ,STEEP-TRAIL ,RMUNGBIT>
<TELL "(The " D ,TRAIL " you're climbing is narrow and twisty. It's a good idea to draw a map as you go up.)" CR CR>)>
<SETG TLOC 1>
<RETURN ,STEEP-TRAIL>)>>
<ROUTINE TRAIL-MISPLACED ()
<TELL
"The steep " D ,TRAIL " seems to have disappeared with the fog." CR>>
<ROUTINE TRAIL-WINDS-UP ()
<TELL "A steep " D ,TRAIL " winds upward.">>
<ROUTINE FEATURELESS-WALL ()
<TELL "It's a sheer, featureless wall, a hundred feet high." CR>>
<OBJECT CLIFF
(IN LOCAL-GLOBALS)
(DESC "cliff")
(SYNONYM CLIFF WALL FACE)
(ADJECTIVE SHEER ROCK ROCKY STEEP FEATURELESS)
(FLAGS NDESCBIT)
(ACTION CLIFF-F)>
<ROUTINE CLIFF-F ()
<COND (<VERB? EXAMINE LOOK-UP>
<COND (<AND <EQUAL? ,HERE ,CLIFF-BOTTOM>
<NOT ,SKEWED?>>
<TRAIL-WINDS-UP>
<CRLF>)
(T
<FEATURELESS-WALL>)>
<RTRUE>)
(<VERB? LEAP>
<COND (<EQUAL? ,HERE ,CLIFF-EDGE ,STEEP-TRAIL ,FOG>
<PERFORM ,V?KILL ,ME>)
(T
<ALREADY-ON ,CLIFF T>)>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT BRANCH
(IN GNARLED-TREE)
(DESC "dead branch")
(SYNONYM BRANCH)
(ADJECTIVE LONE HORIZONTAL DEAD)
(FLAGS BURNBIT TAKEBIT)
(ACTION BRANCH-F)
(DESCFCN DESCRIBE-BRANCH)
(VALUE 0)
(SIZE 23)>
<ROUTINE DESCRIBE-BRANCH (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-OBJDESC>
<TELL "A " D ,BRANCH " is ">
<COND (<IN? ,BRANCH ,PIT>
<STICKUP>)
(T
<TELL "lying on the " D ,GROUND>)>
<TELL ".">)>>
<ROUTINE STICKUP ()
<TELL "sticking up out of the pit">>
<ROUTINE BRANCH-F ()
<COND (<VERB? EXAMINE>
<SAY-THE ,BRANCH>
<TELL " is ">
<COND (<IN? ,BRANCH ,PIT>
<STICKUP>
<COND (<FSET? ,PLATYPUS ,TOOLBIT>
<TELL ". A " D ,PLATYPUS
" is holding on to the bottom end, and looking up at you expectantly">)>)
(T
<TELL "about six feet long">)>
<TELL "." CR>
<RTRUE>)
(<AND <VERB? TAKE MOVE PULL RAISE>
<EQUAL? ,PRSO ,BRANCH>>
<COND (<NOT <FSET? ,GNARLED-TREE ,RMUNGBIT>>
<BRANCH-BREAKS>)
(<AND <IN? ,BRANCH ,PIT>
<FSET? ,PLATYPUS ,TOOLBIT>>
<COND (<V-TAKE>
<CRLF>
<UPDATE-SCORE 5>
<CRLF>
<SAY-THE ,PLATYPUS>
<TELL " hangs on to the " D ,BRANCH " as you pull it out of the pit. It lets go when the branch clears the edge and waddles joyfully around on the ">
<COND (,PIT-FULL?
<TELL "wet ">)>
<TELL "sand." CR CR>
<DRAW-X>)>
<RTRUE>)
(T
<RFALSE>)>
<RTRUE>)
(<AND <VERB? CLIMB-UP CLIMB-ON SIT MUNG>
<EQUAL? ,PRSO ,BRANCH>
<NOT <FSET? ,GNARLED-TREE ,RMUNGBIT>>>
<BRANCH-BREAKS>
<RTRUE>)
(T
<RFALSE>)>>
"*** VULTURE ***"
<OBJECT VULTURE
(DESC "vulture")
(SYNONYM VULTURE BIRD)
(FLAGS ACTORBIT TRYTAKEBIT NDESCBIT)
(ACTION VULTURE-F)>
; "RMUNGBIT = force vulture sighting"
<ROUTINE VULTURE-F ("OPTIONAL" (CONTEXT <>))
<COND (<VERB? EXAMINE LOOK-UP>
<TELL "Its steady gaze makes you uneasy." CR>
<RTRUE>)
(<IMAGE? ,VULTURE>
<RFATAL>)
(<OR <TALKING-TO? ,VULTURE>
<VERB? YELL>>
<SAY-THE ,VULTURE>
<TELL " " <PICK-ONE ,IGNORANCE> "." CR>
<RFATAL>)
(<AND <VERB? THROW>
<EQUAL? ,PRSI ,VULTURE>>
<SAY-THE ,VULTURE>
<COND (<EQUAL? ,PRSO ,WISHBRINGER>
<COND (<ENABLED? ,I-VULTURE>
<DISABLE <INT I-VULTURE>>)>
<REMOVE ,VULTURE>
<REMOVE ,WISHBRINGER>
<TELL " eagerly snatches up the " D ,WISHBRINGER
" in its beak,">
<SOARS-AWAY-OVER>
<TELL "your head with a croak of delight." CR CR>
<UPDATE-SCORE -10>)
(T
<TELL " ignores you." CR>)>
<RTRUE>)
(<IN? ,VULTURE ,HERE>
<TOO-HIGH ,VULTURE>
<RTRUE>)
(<AND <VERB? FEED GIVE>
<EQUAL? ,PRSI ,VULTURE>>
<PERFORM ,V?THROW ,PRSO ,VULTURE>
<RTRUE>)
(<OR <HURT? ,VULTURE>
<VERB? KISS EAT PLAY SQUEEZE RUB>>
<REMOVE ,VULTURE>
<SAY-THE ,VULTURE>
<TELL
" sees your thought. Before you can do anything, it makes a haughty little croak and flies serenely away." CR>
<RFATAL>)
(T
<RFALSE>)>>
<ROUTINE LIFT-VULTURE ()
<COND (<IN? ,VULTURE ,GNARLED-TREE>
<FCLEAR ,VULTURE ,RMUNGBIT>
<REMOVE ,VULTURE>
<ENABLE <QUEUE I-VULTURE -1>>
<SAY-THE ,VULTURE>
<SOARS-AWAY-OVER>
<TELL "your head." CR CR>)>
<RETURN ,NORTH-OF-BRIDGE>>
<ROUTINE SOARS-AWAY-OVER ()
<TELL " spreads its wings and soars away over ">>
<ROUTINE SEE-VULTURE ()
<SAY-THE ,VULTURE>
<TELL " " <PICK-ONE ,SIGHTINGS> " high overhead." CR>>
<GLOBAL SIGHTINGS
<LTABLE 0
"appears" "is circling" "begins to hover" "can be seen circling"
"is watching you from" "hovers in the sky" "hovers"
"eyes you suspiciously from">>
<OBJECT GNARLED-TREE
(IN CLIFF-BOTTOM)
(DESC "gnarled tree trunk")
(SYNONYM TRUNK TREE)
(ADJECTIVE GNARLED OLD DEAD)
(FLAGS ; NDESCBIT SURFACEBIT ; BURNBIT)
(DESCFCN DESCRIBE-TREE)
(ACTION GNARLED-TREE-F)>
<ROUTINE DESCRIBE-TREE (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-OBJDESC>
<TELL "A " D ,GNARLED-TREE>
<COND (<IN? ,BRANCH ,GNARLED-TREE>
<TELL
" stands nearby, a lone branch its only adornment.">)
(T
<TELL
", stripped of all its branches, stands nearby.">)>
<COND (<IN? ,VULTURE ,GNARLED-TREE>
<TELL " A " D ,VULTURE " perched on top is watching every move you make.">)>)>>
<ROUTINE GNARLED-TREE-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<SAY-THE ,GNARLED-TREE>
<TELL " is rotten to the core." CR>
<RTRUE>)
(<VERB? CLIMB-ON CLIMB-UP SIT>
<COND (<FSET? ,GNARLED-TREE ,RMUNGBIT>
<NO-FOOTHOLDS>)
(T
<TELL
"Done. You're sitting on the rotten, creaking branch..." CR CR>
<BRANCH-BREAKS>
<TELL CR
"You're now sitting on the " D ,GROUND ". Painfully." CR>)>
<RTRUE>)
(<AND <VERB? PUT PUT-ON THROW>
<EQUAL? ,PRSI ,GNARLED-TREE>>
<WASTE-OF-TIME>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE BRANCH-BREAKS ()
<FCLEAR ,BRANCH ,NDESCBIT>
<FSET ,GNARLED-TREE ,RMUNGBIT>
<MOVE ,BRANCH ,CLIFF-BOTTOM>
<TELL "Crack! ">
<SAY-THE ,BRANCH>
<TELL " snaps off the " D ,GNARLED-TREE " and falls to the "
D ,GROUND " with a thud. ">
<VULTURE-IN-TREE>
<CRLF>>
<ROUTINE VULTURE-IN-TREE ()
<COND (<IN? ,VULTURE ,GNARLED-TREE>
<FCLEAR ,VULTURE ,RMUNGBIT>
<REMOVE ,VULTURE>
<ENABLE <QUEUE I-VULTURE -1>>
<TELL "Visibly annoyed, the " D ,VULTURE>
<SOARS-AWAY-OVER>
<TELL "the river.">)>>
<ROUTINE CAN-FALLS ()
<MOVE ,SNAKE-CAN ,NORTH-OF-BRIDGE>
<CLATTERS ,SNAKE-CAN>>
<ROUTINE CLATTERS (THING)
<CRLF>
<SAY-THE .THING>
<TELL " clatters to the " D ,GROUND "." CR>>
<GLOBAL SNAKE-GONE? <>>
<ROUTINE SNAKE-LEAPS-OUT-AT (STR)
<SETG SNAKE-GONE? T>
<TELL " the can a ">
<COND (,SKEWED?
<THIS-IS-IT ,SNAKE-CAN>
<FSET ,SNAKE-CAN ,OPENBIT>
<TELL
"real, live rattlesnake leaps out! It squirms about angrily for a few moments, turns to hiss at " .STR " and slithers out of sight">)
(T
<TELL
"three-foot plastic snake springs out! It hits you in the nose and lands harmlessly at your feet.|
|
\"Oldest trick in the book,\" remarks the " D ,OLD-WOMAN ", chuckling despite herself. \"Try it next time you want to get rid of somebody.\" She stuffs the snake back into the " D ,SNAKE-CAN ", closes the lid and hands it back to you">)>
<TELL "." CR>>
<GLOBAL TROLL-SCARED? <>>
<ROUTINE FRIGHTEN-TROLL ()
<SETG TROLL-SCARED? T>
<COND (<EQUAL? ,WISDOM 2>
<START-BUZZ 3>)>
<MOVE ,TROLL ,STEEP-TRAIL>
<COND (<AND <IN? ,COIN ,TROLL>
,LUCKY?>
<FCLEAR ,COIN ,TOUCHBIT>
<FCLEAR ,ON-BRIDGE ,TOUCHBIT>
<MOVE ,COIN ,ON-BRIDGE>
<PUTP ,COIN ,P?FDESC "Lucky you! Your gold coin is lying here on the bridge. The troll must have dropped it when he ran away.">)>
<TELL CR
"A scream of terror echoes off the cliffs as the " D ,TROLL
" runs away across the " D ,BRIDGE "." CR>>
<ROUTINE INTO-NIGHT ()
<TELL " into the night.">>

831
cemetery.zil Normal file
View File

@ -0,0 +1,831 @@
"CEMETERY for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
<OBJECT CREEPY-CORNER
(IN ROOMS)
(DESC "Creepy Corner")
(FLAGS ONBIT RLANDBIT)
(GLOBAL MONUMENTS TREE VAPORS SOUTH-GATE CORNER CEMETERY)
(NORTH PER ENTER-SPOOKY-COPSE)
(EAST PER EXIT-TO-OUTSIDE)
(SOUTH PER TOMBS-BLOCK)
(WEST PER TOMBS-BLOCK)
(OUT PER EXIT-TO-OUTSIDE)
(PSEUDO "LANE" HERE-F)
(ACTION CREEPY-CORNER-F)>
<ROUTINE TOMBS-BLOCK ()
<THIS-IS-IT ,MONUMENTS>
<SAY-THE ,MONUMENTS>
<TELL "s block your path." CR>
<RFALSE>>
<ROUTINE CREEPY-CORNER-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "You're in a creepy " D ,CORNER " of the">
<WHICH-TOWN "Cemetery">
<TELL ", surrounded by silent " D ,MONUMENTS "s. A">
<COND (<FSET? ,SOUTH-GATE ,OPENBIT>
<TELL "n iron gate opens">)
(T
<TELL " closed iron gate stands">)>
<TELL
" " <TO-E> ", and a narrow lane wanders north." CR>)>>
<ROUTINE EXIT-TO-OUTSIDE ()
<COND (<FSET? ,SOUTH-GATE ,OPENBIT>
<COND (,SKEWED?
<SLAM-THE-GATE>
<RFALSE>)
(T
<SURE-IS-SPOOKY>
<RETURN ,OUTSIDE-CEMETERY>)>)
(T
<ITS-CLOSED ,SOUTH-GATE>
<RFALSE>)>>
<ROUTINE SURE-IS-SPOOKY ()
<TELL "Whew! That " D ,CEMETERY " sure is spooky." CR CR>>
<OBJECT SPOOKY-COPSE
(IN ROOMS)
(DESC "Spooky Copse")
(FLAGS ONBIT RLANDBIT)
(GLOBAL MONUMENTS VAPORS CEMETERY)
(NORTH PER TOMBS-BLOCK)
(EAST PER TOMBS-BLOCK)
(SOUTH PER COPSE-TO-CORNER)
(WEST PER COPSE-TO-GLEN)
(DOWN PER ENTER-GRAVE)
(IN PER ENTER-GRAVE)
(PSEUDO "LANE" HERE-F)
(ACTION SPOOKY-COPSE-F)>
<ROUTINE SPOOKY-COPSE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"A copse of " D ,WILLOWS "s makes this part of the " D ,CEMETERY " look really spooky. Narrow lanes wander south and west.|
|
There's an " D ,OPEN-GRAVE " nearby, freshly dug, with a " D ,MONUMENTS " erected next to it.">
<COND (<IN? ,GRAVEDIGGER ,SPOOKY-COPSE>
<TELL CR CR
"An old " D ,GRAVEDIGGER " is resting under a " D ,WILLOWS ".">)>
<CRLF>)>>
<OBJECT TWILIGHT-GLEN
(IN ROOMS)
(DESC "Twilight Glen")
(FLAGS ONBIT RLANDBIT)
(GLOBAL MONUMENTS TREE VAPORS NORTH-GATE CEMETERY)
(NORTH PER EXIT-TO-LAKE)
(EAST PER RETURN-TO-COPSE)
(SOUTH PER TOMBS-BLOCK)
(WEST PER TOMBS-BLOCK)
(OUT PER EXIT-TO-LAKE)
(PSEUDO "LANE" HERE-F)
(ACTION TWILIGHT-GLEN-F)>
<ROUTINE EXIT-TO-LAKE ()
<COND (<FSET? ,NORTH-GATE ,OPENBIT>
<COND (,SKEWED?
<ESCAPE-VAPORS>)
(T
<SURE-IS-SPOOKY>)>
<RETURN ,EDGE-OF-LAKE>)
(T
<ITS-CLOSED ,NORTH-GATE>
<RFALSE>)>>
<ROUTINE RETURN-TO-COPSE ()
<COND (<IN? ,GRAVEDIGGER ,EDGE-OF-LAKE>
<REMOVE ,GRAVEDIGGER>)>
<RETURN ,SPOOKY-COPSE>>
<ROUTINE TWILIGHT-GLEN-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"The trees here are so thick, it's almost too dark to see! You can make out a">
<OPEN-CLOSED ,NORTH-GATE T>
<TELL D ,NORTH-GATE " " <TO-N> ", and a narrow lane between the " D ,MONUMENTS "s winds off " <TO-E> "." CR>)>>
<OBJECT NORTH-GATE
(IN LOCAL-GLOBALS)
(DESC "iron gate")
(SYNONYM GATE GATES LOCK BARS)
(ADJECTIVE IRON TALL)
(FLAGS NDESCBIT VOWELBIT DOORBIT LOCKEDBIT OPENBIT RMUNGBIT)
(ACTION NORTH-GATE-F)>
; "RMUNGBIT = skewed gate not opened"
<ROUTINE NORTH-GATE-F ()
<THIS-IS-IT ,NORTH-GATE>
<COND (<VERB? ENTER THROUGH WALK-TO USE>
<COND (<EQUAL? ,HERE ,TWILIGHT-GLEN>
<DO-WALK ,P?NORTH>)
(T
<DO-WALK ,P?SOUTH>)>
<RTRUE>)
(<GENERIC-GATE? ,NORTH-GATE>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT INSIDE-GRAVE
(IN ROOMS)
(DESC "Open Grave")
(FLAGS ONBIT RLANDBIT)
(GLOBAL HOLE VAPORS)
(NORTH PER ENTER-HOLE?)
(EAST PER WALL-OF-DIRT)
(SOUTH PER WALL-OF-DIRT)
(WEST PER WALL-OF-DIRT)
(UP PER GRAVE-TO-COPSE)
(IN PER ENTER-HOLE?)
(OUT PER GRAVE-TO-COPSE)
(DOWN PER ENTER-HOLE?)
(ACTION INSIDE-GRAVE-F)
(PSEUDO "DIRT" WALLS-F)>
<ROUTINE WALL-OF-DIRT ()
<TELL "You just walked into a wall of dirt." CR>
<RFALSE>>
<ROUTINE ENTER-HOLE? ()
<COND (<NOT ,SKEWED?>
<CANT-GO>
<RFALSE>)
(<CANT-FIT-INTO? "hole">
<RFALSE>)
(T
<MOVE-ALL ,INSIDE-GRAVE ,OPEN-GRAVE>
<MOVE ,GRAVE ,INSIDE-GRAVE>
<RETURN ,TUNNEL-FORK>)>>
<ROUTINE ENTER-GRAVE ()
<COND (<CANT-FIT-INTO? "grave">
<RFALSE>)
(,SKEWED?
<ESCAPE-VAPORS>)
(<IN? ,GRAVEDIGGER ,SPOOKY-COPSE>
<SAY-THE ,GRAVEDIGGER>
<TELL
" reaches into the " D ,OPEN-GRAVE " and pulls you out. \"Don't go in there!\" he cries. \"You might get buried alive!\"" CR>
<RFALSE>)>
<MOVE-ALL ,OPEN-GRAVE ,INSIDE-GRAVE>
<RETURN ,INSIDE-GRAVE>>
<ROUTINE ESCAPE-VAPORS ()
<DISABLE <INT I-VAPORS>>
<FCLEAR ,VAPORS ,RMUNGBIT>
<COND (<AND <EQUAL? ,DIGGER-SCRIPT 1 0>
<NOT <EQUAL? ,HERE ,SPOOKY-COPSE>>>
<SURE-IS-SPOOKY>)
(T
<SAY-THE ,VAPORS>
<TELL "s " <PICK-ONE ,VAPOR-YELLS>
" as you escape their misty clutches." CR CR>)>>
<GLOBAL VAPOR-YELLS
<LTABLE 0
"moan with disappointment"
"howl with anguish"
"wail with dismay">>
<ROUTINE GRAVE-TO-COPSE ()
<COND (<IN? ,BRANCH ,PROTAGONIST>
<NEVER-GET-OUT-WITH "that branch">
<RFALSE>)
(<AND <IN? ,UMBRELLA ,PROTAGONIST>
<FSET? ,UMBRELLA ,OPENBIT>>
<NEVER-GET-OUT-WITH "that open umbrella">
<RFALSE>)
(<G? <WEIGHT ,PROTAGONIST> 18>
<NEVER-GET-OUT-WITH "all those things">
<RFALSE>)
(T
<TELL
"With great difficulty, you manage to climb out of the "
D ,OPEN-GRAVE "." CR CR>
<COND (,SKEWED?
<SETG DIGGER-SCRIPT 0>
<ENABLE <QUEUE I-VAPORS -1>>)>
<MOVE-ALL ,INSIDE-GRAVE ,OPEN-GRAVE>
<MOVE ,GRAVE ,INSIDE-GRAVE>
<RETURN ,SPOOKY-COPSE>)>>
<ROUTINE NEVER-GET-OUT-WITH (STR)
<TELL
"You'll never climb out of the " D ,OPEN-GRAVE " holding " .STR "!" CR>>
<ROUTINE ARE-YOU-SURE? ()
<COND (<EQUAL? ,HERE ,OUTSIDE-CEMETERY>
<COND (<FSET? ,SOUTH-GATE ,OPENBIT>
<COND (<BE-SURE>
<COND (,SKEWED?
<SLAM-THE-GATE>
<RFALSE>)
(T
<RETURN ,CREEPY-CORNER>)>)
(T
<RFALSE>)>)
(T
<ITS-CLOSED ,SOUTH-GATE>
<RFALSE>)>)
(<EQUAL? ,HERE ,EDGE-OF-LAKE>
<COND (<FSET? ,NORTH-GATE ,OPENBIT>
<COND (<BE-SURE>
<RETURN ,TWILIGHT-GLEN>)
(T
<RFALSE>)>)
(T
<ITS-CLOSED ,NORTH-GATE>
<RFALSE>)>)>>
<ROUTINE BE-SURE ()
<SAY-THE ,CEMETERY>
<TELL " is a " <PICK-ONE ,FRIGHTS> " place">
<COND (,SKEWED?
<TELL ", especially at night">)>
<TELL ". ">
<SAY-SURE>
<TELL "go in there?">
<COND (<YES?>
<COND (,SKEWED?
<SETG DIGGER-SCRIPT 0>
<ENABLE <QUEUE I-VAPORS -1>>)>
<TELL CR "You have been warned." CR CR>
<RTRUE>)
(T
<THAT-WAS-CLOSE>
<RFALSE>)>>
<GLOBAL FRIGHTS
<LTABLE 0 "spooky" "fearful" "creepy">>
<ROUTINE SLAM-THE-GATE ()
<FCLEAR ,SOUTH-GATE ,OPENBIT>
<FSET ,SOUTH-GATE ,LOCKEDBIT>
<TELL "Clang! ">
<SUDDEN-GUST>
<TELL "blows the " D ,SOUTH-GATE " shut in your face."
CR CR ,YOU-HEAR "misty voices giggling ">
<COND (<EQUAL? ,HERE ,OUTSIDE-CEMETERY>
<TELL "on the other side">)
(T
<TELL "all around you">)>
<TELL ", and a loud \"click\" as the gate locks." CR>>
<OBJECT CEMETERY
(IN LOCAL-GLOBALS)
(DESC "cemetery")
(SYNONYM CEMETERY GRAVEYARD)
(ADJECTIVE FESTERON)
(FLAGS NDESCBIT)
(ACTION CEMETERY-F)>
<ROUTINE CEMETERY-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE FIND>
<COND (<IN-CEMETERY?>
<RTRUE>)
(<EQUAL? ,HERE ,OUTSIDE-CEMETERY>
<SEE-IT "west">)
(<EQUAL? ,HERE ,EDGE-OF-LAKE>
<SEE-IT "south">)
(T
<REFER-TO-MAP>)>
<RTRUE>)
(<VERB? WALK-TO THROUGH ENTER>
<COND (<IN-CEMETERY?>
<RTRUE>)
(<EQUAL? ,HERE ,OUTSIDE-CEMETERY>
<DO-WALK ,P?WEST>)
(<EQUAL? ,HERE ,EDGE-OF-LAKE>
<DO-WALK ,P?SOUTH>)
(T
<REFER-TO-MAP>)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE IN-CEMETERY? ()
<COND (<EQUAL? ,HERE ,CREEPY-CORNER ,SPOOKY-COPSE ,TWILIGHT-GLEN>
<TELL "It's all around you!" CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE SEE-IT (STR)
<TELL ,YOU-SEE "it to the " .STR "." CR>>
<OBJECT MONUMENTS
(IN LOCAL-GLOBALS)
(DESC "tombstone")
(SYNONYM STONES STONE TOMBSTONES MONUMENTS)
(ADJECTIVE TOMB TOMBS)
(FLAGS READBIT)
(ACTION MONUMENTS-F)>
<ROUTINE MONUMENTS-F ()
<COND (<VERB? READ EXAMINE>
<COND (<EQUAL? ,HERE ,SPOOKY-COPSE>
<SAY-THE ,MONUMENTS>
<TELL " next to the " D ,OPEN-GRAVE>
<COND (,SKEWED?
<HAS-YOUR-NAME>)
(T
<TELL " is blank." CR>)>)
(T
<TELL "The lettering">
<TOO-FADED>)>
<RTRUE>)
(<MOVING? ,MONUMENTS>
<TOO-LARGE ,MONUMENTS>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE TOO-FADED ()
<TELL " is too faded to read clearly." CR>>
<OBJECT OPEN-GRAVE
(IN SPOOKY-COPSE)
(DESC "open grave")
(SYNONYM GRAVE HOLE)
(ADJECTIVE OPEN)
(FLAGS NDESCBIT VOWELBIT CONTBIT OPENBIT TRANSBIT)
(CAPACITY 50)
(CONTFCN IN-OPEN-GRAVE)
(ACTION OPEN-GRAVE-F)>
<ROUTINE IN-OPEN-GRAVE (CONTEXT)
<COND (<AND <EQUAL? .CONTEXT ,M-CONT>
<TOUCHING? ,PRSO>>
<TELL ,CANT " reach ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " from here. The " D ,OPEN-GRAVE
" is too deep." CR>
<RFATAL>)
(T
<RFALSE>)>>
<ROUTINE OPEN-GRAVE-F ()
<COND (<VERB? WALK-TO ENTER THROUGH CLIMB-DOWN CLIMB-ON>
<DO-WALK ,P?DOWN>
<RTRUE>)
(<VERB? EXIT CLIMB-UP>
<ALREADY-IN ,OPEN-GRAVE T>
<RTRUE>)
(<VERB? EXAMINE SEARCH LOOK-DOWN LOOK-INSIDE>
<TELL "It's six feet deep and freshly dug.">
<COND (<FIRST? ,OPEN-GRAVE>
<TELL " " ,YOU-SEE>
<PRINT-CONTENTS ,OPEN-GRAVE>
<TELL " inside.">)>
<CRLF>
<RTRUE>)
(<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,OPEN-GRAVE>>
<COND (<EQUAL? ,PRSO ,HANDS>
<NOTHING-EXCITING>
<RTRUE>)
; (<G? <GETP ,PRSO ,P?SIZE> 10>
<TOO-LARGE ,PRSO>
<RTRUE>)
(<AND <EQUAL? ,PRSO ,UMBRELLA>
<FSET? ,UMBRELLA ,OPENBIT>>
<YOUD-HAVE-TO "close" ,UMBRELLA>
<RTRUE>)
(T
<RFALSE>)>)
(<GENERIC-GRAVE?>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE GENERIC-GRAVE? ()
<COND (<VERB? DIG>
<TELL "It's deep enough already." CR>
<RTRUE>)
(<VERB? CLOSE>
<HOW?>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT GRAVE
(IN INSIDE-GRAVE)
(DESC "open grave")
(SYNONYM GRAVE HOLE)
(ADJECTIVE OPEN)
(FLAGS NDESCBIT VOWELBIT CONTBIT OPENBIT TRANSBIT)
(CAPACITY 50)
(ACTION GRAVE-F)>
<ROUTINE GRAVE-F ()
<COND (<VERB? ENTER WALK-TO THROUGH CLIMB-DOWN>
<COND (,SKEWED?
<DO-WALK ,P?NORTH>)
(T
<ALREADY-AT ,GRAVE>)>
<RTRUE>)
(<VERB? EXIT CLIMB-UP CLIMB-ON>
<DO-WALK ,P?OUT>
<RTRUE>)
(<VERB? LOOK-DOWN EXAMINE SEARCH LOOK-INSIDE>
<V-LOOK>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSI ,GRAVE>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,GRAVE>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<GENERIC-GRAVE?>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE ENTER-SPOOKY-COPSE ()
<COND (<AND <NOT ,SKEWED?>
<ZERO? ,DIGGER-SCRIPT>>
<ENABLE <QUEUE I-DIGGER-TALK -1>>)>
<RETURN ,SPOOKY-COPSE>>
<ROUTINE COPSE-TO-GLEN ()
<COND (<IN? ,GRAVEDIGGER ,TWILIGHT-GLEN>
<ENABLE <QUEUE I-BYE-DIGGER -1>>)
(<IN? ,GRAVEDIGGER ,SPOOKY-COPSE>
<DISABLE <INT I-DIGGER-TALK>>
<ENABLE <QUEUE I-DIGGER-FOLLOWS -1>>)>
<RETURN ,TWILIGHT-GLEN>>
<ROUTINE I-BYE-DIGGER ()
<DISABLE <INT I-BYE-DIGGER>>
<CRLF>
<SAY-THE ,GRAVEDIGGER>
<TELL " is locking the " D ,NORTH-GATE
" from the outside as you approach.">
<OUT-OF-TROUBLE>>
<ROUTINE OUT-OF-TROUBLE ()
<THIS-IS-IT ,GRAVEDIGGER>
<THIS-IS-IT ,NORTH-GATE>
<MOVE ,GRAVEDIGGER ,EDGE-OF-LAKE>
<FCLEAR ,NORTH-GATE ,OPENBIT>
<FSET ,NORTH-GATE ,LOCKEDBIT>
<TELL " \"Keep out of the " D ,CEMETERY
" after Dark,\" he tells you with a sly wink."
CR CR ,YOU-HEAR "him chuckling as he disappears "
<TO-N> "." CR>>
<ROUTINE I-DIGGER-FOLLOWS ()
<DISABLE <INT I-DIGGER-FOLLOWS>>
<CRLF>
<SAY-THE ,GRAVEDIGGER>
<TELL " follows behind you. ">
<COND (<OR <IN? ,ENVELOPE ,GRAVEDIGGER>
<IN? ,ENVELOPE ,SPOOKY-COPSE>>
<MOVE ,ENVELOPE ,PROTAGONIST>
<FORGOT>
<TELL " he says, handing it back to you.">
<YOU-ARE-HOLDING ,ENVELOPE T>)
(T
<TELL
"\"What's your hurry?\" he complains.">)>
<TELL CR CR
"Throwing a shovel over his shoulder, the " D ,GRAVEDIGGER
" ambles through the " D ,NORTH-GATE " and locks it.">
<OUT-OF-TROUBLE>>
<ROUTINE FORGOT ()
<TELL "\"Hey! You forgot your envelope!\"">>
<ROUTINE COPSE-TO-CORNER ()
<COND (<AND <IN? ,GRAVEDIGGER ,SPOOKY-COPSE>
<OR <IN? ,ENVELOPE ,GRAVEDIGGER>
<IN? ,ENVELOPE ,SPOOKY-COPSE>>>
<SAY-THE ,GRAVEDIGGER>
<TELL " yells, ">
<FORGOT>
<CRLF>
<CRLF>)>
<RETURN ,CREEPY-CORNER>>
<OBJECT WILLOWS
(IN SPOOKY-COPSE)
(DESC "willow tree")
(SYNONYM TREE TREES BOUGH BOUGHS)
(ADJECTIVE WILLOW)
(FLAGS NDESCBIT)
(ACTION WILLOWS-F)>
<ROUTINE WILLOWS-F ()
<COND (<VERB? EXAMINE>
<TELL "The droopy boughs sway eerily in the breeze." CR>
<RTRUE>)
(<GETTING-INTO?>
<NO-FOOTHOLDS>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE NO-FOOTHOLDS ()
<TELL ,CANT ". There aren't any good footholds." CR>>
<OBJECT VAPORS
(IN LOCAL-GLOBALS)
(DESC "eldritch vapor")
(SYNONYM VAPOR VAPORS MIST MISTS)
(ADJECTIVE ELDRITCH RIBBON GHOSTLY)
(FLAGS VOWELBIT NDESCBIT NARTICLEBIT)
(ACTION VAPORS-F)>
; "RMUNGBIT = Vapors have stolen a possession"
<ROUTINE VAPORS-F ("OPTIONAL" (CONTEXT <>))
<COND (<NOT ,SKEWED?>
<CANT-SEE-ANY ,VAPORS>
<RFATAL>)
(<VERB? EXAMINE>
<SAY-THE ,VAPORS>
<TELL
"s stare back at you with translucent curiosity." CR>
<RTRUE>)
(<TOUCHING? ,VAPORS>
<TELL ,CANT " touch an " D ,VAPORS "!" CR>
<RTRUE>)
(<TALKING-TO? ,VAPORS>
<SAY-THE ,VAPORS>
<TELL "s pay no heed." CR>
<RTRUE>)
(<VERB? LISTEN>
<SAY-THE ,VAPORS>
<TELL "s' voices are hard to hear, but sinister." CR>
<RTRUE>)
(<AND <VERB? GIVE FEED THROW>
<EQUAL? ,PRSI ,VAPORS>>
<REMOVE ,PRSO>
<TELL "Silently, ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " disappears into the ghostly mist." CR>
<COND (<EQUAL? ,PRSO ,WISHBRINGER ,SHOE>
<I-LUCK>)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE I-VAPORS ("AUX" OBJ NXT (DO-LUCK? <>))
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<EQUAL? ,HERE ,TWILIGHT-GLEN ,SPOOKY-COPSE ,CREEPY-CORNER>
<SETG DIGGER-SCRIPT <+ ,DIGGER-SCRIPT 1>>
<CRLF>
<COND (<EQUAL? ,DIGGER-SCRIPT 1>
<TELL
"As you glance around you notice luminous ribbons of mist darting among the "
D ,MONUMENTS "s. The air is filled with sinister voices." CR>)
(<EQUAL? ,DIGGER-SCRIPT 2>
<COND (<FSET? ,VAPORS ,RMUNGBIT>
<SET OBJ <FIRST? ,PROTAGONIST>>
<SAY-THE ,VAPORS>
<COND (.OBJ
<TELL "s are eyeing ">
<ARTICLE .OBJ T>
<TELL D .OBJ>
<COND (<FSET? .OBJ ,WORNBIT>
<TELL " you're wearing">)
(T
<TELL " in " D ,HANDS "s">)>)
(T
<TELL "s are hovering around you">)>
<TELL " fiendishly">)
(T
<COND (,LUCKY?
<FSET ,VAPORS ,RMUNGBIT>
<SETG DIGGER-SCRIPT 1>)>
<TELL "The luminous mists suddenly condense into a cloud of " D ,VAPORS "s! Circling like " D ,SHARKS ", they stroke your face with ghostly fingers and whisper dreadful secrets into your ears">)>
<TELL "." CR>)
(T
<SET OBJ <FIRST? ,PROTAGONIST>>
<TELL
"Giggling with mischievous Glee, the " D ,VAPORS "s ">
<COND (<OR <NOT ,LUCKY?>
<NOT .OBJ>>
<FCLEAR ,VAPORS ,RMUNGBIT>
<DISABLE <INT I-VAPORS>>
<TELL
"clutch your legs and cover your eyes with their luminous hands. ">
<SAY-THE ,GROUND>
<BENEATH-FEET>
<TELL
" as the foggy fiends lift you high above the treetops">
<COND (.OBJ
<TELL ", scatter your possessions">)>
<TELL " and carry you screaming">
<INTO-NIGHT>
; "Move player somewhere else"
<SETG HERE <PICK-ONE ,DROP-OFFS>>
<MOVE ,PROTAGONIST ,HERE>
; "Scatter player's possessions"
<REPEAT ()
<COND (.OBJ
<SET NXT <NEXT? .OBJ>>
<FCLEAR .OBJ ,WORNBIT>
<MOVE .OBJ <PICK-ONE ,DROP-OFFS>>
<COND (<EQUAL? .OBJ ,WISHBRINGER
,SHOE>
<SET DO-LUCK? T>)>
<SET OBJ .NXT>)
(T
<RETURN>)>>
<COME-TO-SENSES>
<COND (.DO-LUCK?
<I-LUCK>
<I-GLOW>)>)
; "Steal one of player's possessions"
(T
<SETG DIGGER-SCRIPT 1>
<FCLEAR .OBJ ,WORNBIT>
<MOVE .OBJ <PICK-ONE ,DROP-OFFS>>
<FSET ,VAPORS ,RMUNGBIT>
<TELL "snatch ">
<ARTICLE .OBJ T>
<TELL D .OBJ
" out of " D ,HANDS "s and carry it away">
<INTO-NIGHT>
<CRLF>
<COND (<EQUAL? .OBJ ,BROOM>
<SETG BROOM-SIT? <>>)
(<EQUAL? .OBJ ,WISHBRINGER ,SHOE>
<I-LUCK>
<I-GLOW>)>)>)>)>>
<GLOBAL DROP-OFFS
<LTABLE 0
LOOKOUT-HILL PARK FESTERON-POINT
SOUTH-OF-BRIDGE EDGE-OF-LAKE ROCKY-PATH WHARF
CLIFF-BOTTOM RIVER-OUTLET>>
<ROUTINE INSIDE-GRAVE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "You're at the bottom of an " D ,OPEN-GRAVE
", surrounded by six-foot walls of dirt.">
<COND (,SKEWED?
<COND (<ZERO? ,DIGGER-SCRIPT>
<TELL " A">)
(T
<TELL
" Luminous ribbons of mist are swarming overhead, and a">)>
<TELL " dark hole is visible in the north wall.">)>
<CRLF>)>>
<OBJECT HOLE
(IN LOCAL-GLOBALS)
(DESC "hole")
(SYNONYM HOLE OPENING)
(ADJECTIVE DARK)
(ACTION HOLE-F)>
<ROUTINE HOLE-F ()
<COND (<OR <NOT ,SKEWED?>
<AND <EQUAL? ,HERE ,LOOKOUT-HILL ,UNDER-HILL>
<NOT <FSET? ,STUMP ,OPENBIT>>>>
<CANT-SEE-ANY ,HOLE>
<RFATAL>)
(<VERB? WALK-TO ENTER THROUGH>
<COND (<EQUAL? ,HERE ,INSIDE-GRAVE ,LOOKOUT-HILL>
<DO-WALK ,P?IN>)
(<EQUAL? ,HERE ,TUNNEL-FORK>
<DO-WALK ,P?SOUTH>)
(T
<DO-WALK ,P?OUT>)>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<CANT-MAKE-OUT-ANYTHING>
<RTRUE>)
(T
<YOU-DONT-NEED ,HOLE>
<RFATAL>)>>
<OBJECT UMBRELLA
(IN TWILIGHT-GLEN)
(DESC "umbrella")
(FDESC "There must have been a burial here recently. Somebody left their umbrella leaning up against a tombstone.")
(SYNONYM UMBRELLA HANDLE HEAD)
(ADJECTIVE PARROT)
(FLAGS VOWELBIT CONTBIT TAKEBIT)
(SIZE 10)
(CAPACITY 10)
(VALUE 0)
(ACTION UMBRELLA-F)>
<ROUTINE UMBRELLA-F ()
<COND (<VERB? EXAMINE>
<TELL "The handle of the">
<OPEN-CLOSED ,UMBRELLA>
<TELL D ,UMBRELLA " is carved like a parrot's head." CR>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-ON LOOK-DOWN>
<COND (<FSET? ,UMBRELLA ,OPENBIT>
<NOTHING-INTERESTING T>)
(T
<ITS-CLOSED ,UMBRELLA>)>
<RTRUE>)
(<AND <VERB? OPEN RAISE>
<EQUAL? ,PRSO ,UMBRELLA>>
<COND (<FSET? ,UMBRELLA ,OPENBIT>
<ALREADY-OPEN>
<RTRUE>)
(<NOT <IN? ,UMBRELLA ,PROTAGONIST>>
<YOUD-HAVE-TO "be holding" ,UMBRELLA>
<RTRUE>)
(<EQUAL? ,HERE ,INSIDE-GRAVE>
<TELL "There's no room here!" CR>
<RTRUE>)>
<PUTP ,UMBRELLA ,P?SIZE 20>
<FSET ,UMBRELLA ,SURFACEBIT>
<NOW-CLOSED-OR-OPEN ,UMBRELLA T>
<COND (<FSET? ,HERE ,INDOORSBIT>
<BAD-LUCK "open an umbrella indoors">)>
<RTRUE>)
(<AND <VERB? CLOSE LOWER>
<FSET? ,UMBRELLA ,OPENBIT>>
<COND (<NOT <IN? ,UMBRELLA ,PROTAGONIST>>
<YOUD-HAVE-TO "be holding" ,UMBRELLA>
<RTRUE>)>
<PUTP ,UMBRELLA ,P?SIZE 10>
<FCLEAR ,UMBRELLA ,SURFACEBIT>
<RFALSE>)
(<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,UMBRELLA>>
<COND (<EQUAL? ,PRSO ,UMBRELLA>
<TELL <PICK-ONE ,YUKS> CR>
<RTRUE>)
(<NOT <IN? ,UMBRELLA ,PROTAGONIST>>
<YOUD-HAVE-TO "be holding" ,UMBRELLA>)
(<EQUAL? ,PRSO ,HAT ,COAT ,SNAKE-CAN>
<TELL "That would look silly." CR>)
(<AND <EQUAL? ,PRSA ,V?PUT>
<NOT <FSET? ,UMBRELLA ,OPENBIT>>>
<ITS-CLOSED ,UMBRELLA>)
(<G? <GETP ,PRSO ,P?SIZE> 5>
<TOO-LARGE ,PRSO>)
(T
<TELL "It immediately slides ">
<COND (<EQUAL? ,PRSA ,V?PUT-ON>
<TELL "off">)
(T
<TELL "out">)>
<AND-DROPS-OUT ,PRSO>)>
<RTRUE>)
(<VERB? STAND-UNDER RAISE>
<COND (<DONT-HAVE? ,UMBRELLA>
<RTRUE>)
(<NOT <FSET? ,UMBRELLA ,OPENBIT>>
<YOUD-HAVE-TO "open" ,UMBRELLA>)
(T
<TELL ,OKAY "you look very cosmopolitan." CR>)>
<RTRUE>)
(<AND <VERB? SIT STAND-ON LIE-DOWN MUNG BURN>
<EQUAL? ,PRSO ,UMBRELLA>>
<RUIN ,UMBRELLA>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE PUTTING-OPEN-UMBRELLA? ()
<COND (<AND <EQUAL? ,PRSO ,UMBRELLA>
<FSET? ,UMBRELLA ,OPENBIT>>
<YOUD-HAVE-TO "close" ,UMBRELLA>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT TREE
(IN LOCAL-GLOBALS)
(DESC "tree")
(SYNONYM TREE TREES)
(FLAGS NDESCBIT)
(ACTION TREE-F)>
<ROUTINE TREE-F ()
<COND (<VERB? EXAMINE>
<TELL "This is no time for botanizing." CR>
<RTRUE>)
(<GETTING-INTO?>
<NO-FOOTHOLDS>
<RTRUE>)
(T
<RFALSE>)>>

2863
center.zil Normal file

File diff suppressed because it is too large Load Diff

872
east.zil Normal file
View File

@ -0,0 +1,872 @@
"EAST for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** PLEASURE WHARF ***"
<ROUTINE ENTER-PLEASURE-WHARF ()
<COND (<AND ,SKEWED?
<NOT ,BOX-SEEN?>>
<SETG BOX-SEEN? T>
<ENABLE <QUEUE I-WAKE-BOX -1>>)>
<RETURN ,PLEASURE-WHARF>>
<OBJECT PLEASURE-WHARF
(IN ROOMS)
(DESC "Pleasure Wharf")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL BAY ARCADE SIGN SAND)
(NORTH PER ENTER-POOL?)
(EAST PER ENTER-WHARF)
(SOUTH TO VIDEO-ARCADE)
(WEST TO ROTARY-EAST)
(IN TO VIDEO-ARCADE)
(ACTION PLEASURE-WHARF-F)
(PSEUDO "WHARF" HERE-F)>
<ROUTINE PLEASURE-WHARF-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<STANDING>
<TELL "near the ">
<COND (,SKEWED?
<TELL "remains of">)
(T
<TELL D ,ENTRANCE " to">)>
<TELL " the " D ,PLEASURE-WHARF>
<COND (<NOT ,SKEWED?>
<TELL ", the town's most popular tourist attraction">)>
<TELL ". The Wharf extends eastward into">
<WHICH-TOWN "Bay">
<COND (<NOT ,SKEWED?>
<TELL
", and a tidal beach curves north along the shore">)>
<TELL ".|
|
To the south stands a ramshackle old building. Colorful lights, curious electronic sounds and a neon sign beckon you through the open " D ,ENTRANCE "." CR>)>>
<ROUTINE ENTER-POOL? ()
<COND (<NOT ,SKEWED?>
<RETURN ,TIDAL-POOL>)
(T
<TELL ,CANT " go that way now. The tide is in." CR>
<RFALSE>)>>
"*** WHARF ***"
<OBJECT WHARF
(IN ROOMS)
(DESC "Wharf's End")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL BAY)
(NORTH PER FALL-OFF-WHARF)
(EAST PER FALL-OFF-WHARF)
(SOUTH PER FALL-OFF-WHARF)
(WEST PER ENTER-PLEASURE-WHARF)
(ACTION WHARF-F)
(PSEUDO "PLANKS" HERE-F "WHARF" HERE-F)>
<ROUTINE WHARF-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "The sea-worn planks of the">
<WHICH-TOWN>
<TELL " " D ,PLEASURE-WHARF
" end abruptly a few feet " <TO-E> ". You're surrounded by the ">
<COND (,SKEWED?
<TELL "dark, shark-infested">)
(T
<TELL "blue, sparkling">)>
<TELL " waters of">
<WHICH-TOWN "Bay">
<TELL "." CR>)>>
<ROUTINE ENTER-WHARF ()
<COND (<AND <NOT ,SKEWED?>
<NOT <FSET? ,HORSE ,TOUCHBIT>>>
<ENABLE <QUEUE I-HORSE-DEATH -1>>)>
<RETURN ,WHARF>>
<ROUTINE FALL-OFF-WHARF ()
<COND (,SKEWED?
<SAY-THE ,SHARKS>
<TELL " would gobble you up">
<IF-YOU-TRIED>)
(T
<PROBABLY-DROWN>)>
<RFALSE>>
<OBJECT SHARKS
(DESC "sharks")
(SYNONYM SHARK SHARKS FIN FINS)
(ADJECTIVE BLACK)
(FLAGS NDESCBIT)
(ACTION SHARKS-F)>
<ROUTINE SHARKS-F ()
<COND (<VERB? EXAMINE LOOK-ON>
<TELL ,YOU-SEE
"their black fins circling in the water nearby." CR>
<RTRUE>)
(T
<YOU-DONT-NEED ,SHARKS>
<RFATAL>)>>
<OBJECT BAY
(IN LOCAL-GLOBALS)
(DESC "bay")
(SYNONYM BAY SEA OCEAN WATER)
(ADJECTIVE FESTERON)
(FLAGS NDESCBIT TRYTAKEBIT CONTBIT OPENBIT)
(ACTION BAY-F)>
<ROUTINE BAY-F ()
<COND (<VERB? EXAMINE>
<TELL "The waters of the bay ">
<COND (,SKEWED?
<TELL "swell ominously in the moon">)
(T
<TELL "twinkle merrily in the sun">)>
<TELL "light." CR>
<RTRUE>)
(<HANDLE-WATER?>
<RTRUE>)
(T
<RFALSE>)>>
"*** VIDEO ARCADE ***"
<OBJECT VIDEO-ARCADE
(IN ROOMS)
(DESC "Video Arcade")
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL ARCADE SIGN CORNER)
(NORTH PER EXIT-ARCADE)
(OUT PER EXIT-ARCADE)
(ACTION VIDEO-ARCADE-F)>
<ROUTINE EXIT-ARCADE ()
<COND (<FSET? ,MACHINE ,TOOLBIT>
<ENABLE <QUEUE I-SMOKE -1>>
<FCLEAR ,MACHINE ,TOOLBIT>
<TELL "One of the " D ,HUMANOIDS " eagerly takes over your "
D ,MACHINE " as you walk away." CR CR>)>
<RETURN ,PLEASURE-WHARF>>
<ROUTINE VIDEO-ARCADE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "This old building is the home of a sleazy " D ,ARCADE
", lined with coin-op video games. The machines are ">
<COND (,SKEWED?
<THIS-IS-IT ,HUMANOIDS>
<TELL
"crowded with half-crazed, " D ,HUMANOIDS ", who pay no attention to you as they satisfy their thirst for electric violence.|
|
One machine in the " D ,CORNER " appears to be deserted">)
(T
<THIS-IS-IT ,MACHINE>
<TELL "all deserted and quiet">
<COND (<NOT <FSET? ,MACHINE ,RMUNGBIT>>
<TELL ", except for one in the " D ,CORNER
" that emits a feeble \"wokka-wokka\" sound">)>)>
<TELL "." CR CR>
<ARCADE-SIGN>)>>
<ROUTINE ARCADE-SIGN ()
<TELL
"A sign on the wall says, \"All Games One Token.\"" CR>>
<OBJECT ARCADE
(IN LOCAL-GLOBALS)
(DESC "arcade")
(SYNONYM ARCADE BUILDING ENTRANCE ENTRY)
(ADJECTIVE VIDEO OLD RAMSHACKLE)
(ACTION ARCADE-F)>
<ROUTINE ARCADE-F ()
<COND (<ENTER-FROM? ,PLEASURE-WHARF ,VIDEO-ARCADE ,ARCADE>
<RTRUE>)
(<VERB? LOOK-ON EXAMINE LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,PLEASURE-WHARF>
<GO-INSIDE>)
(T
<V-LOOK>)>
<RTRUE>)
(<VERB? OPEN>
<ALREADY-OPEN>
<RTRUE>)
(<VERB? CLOSE>
<TELL ,CANT " close the " D ,ARCADE
" (though many have tried)." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT HUMANOIDS
(DESC "stunted humanoids")
(SYNONYM HUMANOIDS)
(ADJECTIVE STUNTED)
(FLAGS NDESCBIT NARTICLEBIT ACTORBIT)
(ACTION HUMANOIDS-F)>
<ROUTINE HUMANOIDS-F ("OPTIONAL" (CONTEXT <>))
<COND (<VERB? EXAMINE>
<TELL
"They have extraordinarily supple wrists, fast reflexes and tiny brains." CR>
<RTRUE>)
(<OR <TALKING-TO? ,HUMANOIDS>
<VERB? GIVE FEED YELL>>
<SAY-THE ,HUMANOIDS>
<TELL " pay no attention." CR>
<RFATAL>)
(<HURT? ,HUMANOIDS>
<TELL "Why bother? The " D ,HUMANOIDS
" will soon be extinct anyway." CR>
<RTRUE>)
(T
<YOU-DONT-NEED ,HUMANOIDS>
<RFATAL>)>>
<OBJECT MACHINE
(IN VIDEO-ARCADE)
(DESC "game machine")
(SYNONYM MACHINE UNIT GAME LOGO)
(ADJECTIVE GAME ARCADE VIDEO SIDES BROKEN)
(FLAGS NDESCBIT CONTBIT OPENBIT READBIT)
(CAPACITY 1)
(ACTION MACHINE-F)>
; "TOOLBIT = MACHINE ON, RMUNGBIT = MACHINE BROKEN"
<ROUTINE MACHINE-F ()
<COND (<VERB? EXAMINE READ LOOK-ON>
<SAY-THE ,MACHINE>
<TELL " is equipped with a video screen, a joystick, a big red button and a narrow slot for tokens. A lurid logo (\"">
<COND (,SKEWED?
<TELL "TRANSMATTER">)
(T
<TELL "LEATHER GODDESSES OF PHOBOS">)>
<TELL "!\") is painted on the side." CR>
<RTRUE>)
(<VERB? LISTEN KICK>
<COND (<FSET? ,MACHINE ,RMUNGBIT>
<NOTHING-EXCITING>
<RTRUE>)
(,SKEWED?
<SAY-THE ,MACHINE>
<TELL " emits a familiar electronic dirge.">)
(T
<TELL "\"Wokka.\"">)>
<CRLF>
<RTRUE>)
(<PUT-THING-IN-SLOT?>
<RTRUE>)
(<VERB? OPEN CLOSE LOOK-INSIDE>
<TELL "Only an authorized service representative of the ">
<FROBOZZ "Arcade Game">
<TELL " could do that." CR>
<RTRUE>)
(<BREAK-MACHINE?>
<RTRUE>)
(<VERB? PLAY>
<HOW?>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT VIDEO-SCREEN
(IN VIDEO-ARCADE)
(DESC "video screen")
(SYNONYM SCREEN GRID MAP MESSAGE)
(ADJECTIVE VIDEO FLASHING DIAMOND)
(FLAGS NDESCBIT READBIT)
(ACTION VIDEO-SCREEN-F)>
<ROUTINE VIDEO-SCREEN-F ()
<COND (<VERB? EXAMINE READ>
<SAY-THE ,VIDEO-SCREEN>
<COND (<OR <NOT ,SKEWED?>
<FSET? ,MACHINE ,RMUNGBIT>>
<TELL " is dark.">)
(T
<TELL " displays a map of">
<WHICH-TOWN "Village">
<TELL ". A grid divides the map into 13 squares">
<COND (<FSET? ,MACHINE ,TOOLBIT>
<TELL
", and a " D ,STAR " is centered over one of the squares">)
(T
<TELL ". The words \"Insert Token To Play\" are scrolling across the top of the screen">)>
<TELL "." CR CR>
<FIND-IN-PACKAGE "map">
<RTRUE>)>
<CRLF>
<RTRUE>)
(<BREAK-MACHINE?>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE BREAK-MACHINE? ()
<COND (<NOT <FSET? ,MACHINE ,RMUNGBIT>>
<COND (<AND <VERB? PUSH MOVE SHAKE>
<FSET? ,MACHINE ,TOOLBIT>>
<TELL "An electric alarm shrieks, \"Tilt!\"" CR>
<GAME-OVER>
<RTRUE>)
(<AND <VERB? THROW>
<EQUAL? ,PRSI ,MACHINE>>
<MOVE ,PRSO ,HERE>
<MUNG-MACHINE>
<RTRUE>)
(<HURT? ,MACHINE>
<MUNG-MACHINE>
<RTRUE>)
(T
<RFALSE>)>)
(T
<RFALSE>)>>
<ROUTINE MUNG-MACHINE ()
<FCLEAR ,MACHINE ,TOOLBIT>
<FSET ,MACHINE ,RMUNGBIT>
<TELL "A shower of sparks erupts from the back of the " D ,MACHINE
", and the " D ,VIDEO-SCREEN " goes black." CR>>
<OBJECT STAR
(IN VIDEO-ARCADE)
(DESC "blinking star")
(SYNONYM STAR CURSOR)
(ADJECTIVE BLINKING)
(FLAGS NDESCBIT READBIT)
(ACTION STAR-F)>
<ROUTINE STAR-F ()
<COND (<NOT <FSET? ,MACHINE ,TOOLBIT>>
<CANT-SEE-ANY>
<RFATAL>)
(<VERB? EXAMINE READ>
<SAY-THE ,STAR>
<TELL " is now centered over square "
<GET ,H-NAMES ,HORZ> "-" N ,VERT " on the map." CR>
<RTRUE>)
(<VERB? MOVE PULL PUSH>
<HOW?>
<RTRUE>)
(<VERB? PUSH-TO>
<TELL "(with the " D ,JOYSTICK ")" CR>
<PERFORM ,V?PUSH-TO ,JOYSTICK ,PRSI>
<RTRUE>)
(T
<RFALSE>)>>
<GLOBAL H-NAMES <PLTABLE "A" "B" "C" "D" "E">>
<OBJECT SLOT
(IN VIDEO-ARCADE)
(DESC "slot")
(SYNONYM SLOT)
(ADJECTIVE NARROW)
(FLAGS NDESCBIT CONTBIT OPENBIT READBIT)
(CAPACITY 1)
(ACTION SLOT-F)>
<ROUTINE SLOT-F ()
<COND (<VERB? EXAMINE READ LOOK-ON>
<TELL "The narrow slot is marked \"Tokens Only!\"" CR>
<RTRUE>)
(<OR <PUT-THING-IN-SLOT?>
<BREAK-MACHINE?>>
<RTRUE>)
(<VERB? OPEN CLOSE>
<TELL <PICK-ONE ,YUKS> CR>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-BEHIND>
<TOO-DARK>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE PUT-THING-IN-SLOT? ()
<COND (<OR <VERB? REACH-IN>
<AND <VERB? PUT>
<NOT <EQUAL? ,PRSO ,TOKEN>>>>
<SAY-THE ,SLOT>
<TELL " is too narrow." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT JOYSTICK
(IN VIDEO-ARCADE)
(DESC "joystick")
(SYNONYM JOYSTICK STICK)
(ADJECTIVE JOY CONTROL)
(FLAGS NDESCBIT ; TRYTAKEBIT)
(ACTION JOYSTICK-F)>
<GLOBAL VERT 3>
<GLOBAL HORZ 5>
<ROUTINE JOYSTICK-F ()
<COND (<AND <VERB? PUSH-TO>
<EQUAL? ,PRSI ,INTDIR>>
<COND (<NOT <FSET? ,MACHINE ,TOOLBIT>>
<NOTHING-EXCITING>)
(<EQUAL? ,P-DIRECTION ,P?NORTH ,P?UP>
<COND (<OR <EQUAL? ,HORZ 1 5>
<EQUAL? ,VERT 1>
<AND <EQUAL? ,HORZ 2 4>
<EQUAL? ,VERT 2>>>
<JOYBUZZ>)
(T
<SETG VERT <- ,VERT 1>>
<MOVE-STAR "upward">)>)
(<EQUAL? ,P-DIRECTION ,P?SOUTH ,P?DOWN>
<COND (<OR <EQUAL? ,HORZ 1 5>
<EQUAL? ,VERT 5>
<AND <EQUAL? ,HORZ 2 4>
<EQUAL? ,VERT 4>>>
<JOYBUZZ>)
(T
<SETG VERT <+ ,VERT 1>>
<MOVE-STAR "downward">)>)
(<EQUAL? ,P-DIRECTION ,P?EAST>
<COND (<OR <EQUAL? ,VERT 1 5>
<EQUAL? ,HORZ 5>
<AND <EQUAL? ,VERT 2 4>
<EQUAL? ,HORZ 4>>>
<JOYBUZZ>)
(T
<SETG HORZ <+ ,HORZ 1>>
<MOVE-STAR "to the right">)>)
(<EQUAL? ,P-DIRECTION ,P?WEST>
<COND (<OR <EQUAL? ,VERT 1 5>
<EQUAL? ,HORZ 1>
<AND <EQUAL? ,VERT 2 4>
<EQUAL? ,HORZ 2>>>
<JOYBUZZ>)
(T
<SETG HORZ <- ,HORZ 1>>
<MOVE-STAR "to the left">)>)
(T
<RFALSE>)>
<RTRUE>)
(<VERB? EXAMINE>
<SAY-THE ,JOYSTICK>
<TELL
" can be moved north, south, east or west." CR>
<RTRUE>)
(<VERB? PUSH MOVE PULL USE PLAY>
<TELL "(To use the " D ,JOYSTICK ", you must indicate a compass direction as well as an action. For example, try MOVE THE JOYSTICK TO THE WEST or PUSH STICK NORTH.)" CR>
<RFATAL>)
(<BREAK-MACHINE?>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE JOYBUZZ ()
<TELL "Buzz! A synthetic voice growls, \"Keep the " D ,STAR
" inside the grid!\"" CR>>
<ROUTINE MOVE-STAR (STR)
<TELL "Bing! You moved the " D ,STAR " one square " .STR "." CR>>
<OBJECT BUTTON
(IN VIDEO-ARCADE)
(DESC "big red button")
(SYNONYM BUTTON SWITCH)
(ADJECTIVE BIG RED LARGE CRIMSON)
(FLAGS NDESCBIT)
(ACTION BUTTON-F)>
<ROUTINE BUTTON-F ()
<COND (<VERB? PUSH>
<COND (<NOT <EQUAL? ,HERE ,VIDEO-ARCADE>>
<CANT-SEE-ANY ,BUTTON>
<RTRUE>)>
<SAY-SURE>
<TELL "push the " D ,BUTTON "?">
<COND (<YES?>
<CRLF>
<COND (,SKEWED?
<SAY-THE ,HUMANOIDS>
<TELL " in the " D ,ARCADE " "
<PICK-ONE ,POSSIBILITIES>
" as " D ,HANDS " touches the ">
<COND (<FSET? ,MACHINE ,TOOLBIT>
<TELL "flashing ">)>
<TELL "button. This might be a trap">)
(T
<TELL "You don't know what this "
D ,MACHINE " might do">)>
<TELL "! You don't really want to press that "
D ,BUTTON ", do you?">
<COND (<YES?>
<PRESS-BUTTON>
<RTRUE>)>)>
<THAT-WAS-CLOSE>
<RTRUE>)
(<AND <VERB? EXAMINE>
<FSET? ,MACHINE ,TOOLBIT>>
<TELL "It's flashing on and off rapidly." CR>
<RTRUE>)
(<BREAK-MACHINE?>
<RTRUE>)
(T
<RFALSE>)>>
<GLOBAL POSSIBILITIES
<LTABLE 0
"snicker behind your back"
"watch you carefully"
"hold their breath">>
<ROUTINE PRESS-BUTTON ("AUX" WHERE)
<TELL CR "(">
<COND (<FSET? ,MACHINE ,TOOLBIT>
<SET WHERE <GET <GET ,DESTINATIONS ,HORZ> ,VERT>>
<ENABLE <QUEUE I-SMOKE -1>>
<TELL "Hope you saved your story position.)|
|
A sudden power drain makes all the other games in the " D ,ARCADE " go dim. Blue sheets of energy leap from the " D ,MACHINE ", surrounding you in an incandescent aura.">
<COND (<NOT <EQUAL? .WHERE ,VIDEO-ARCADE>>
<COND (<EQUAL? .WHERE ,INSIDE-GRAVE>
<MOVE-ALL ,OPEN-GRAVE ,INSIDE-GRAVE>)>
<MOVE ,PROTAGONIST .WHERE>
<SETG HERE .WHERE>
<TELL " You can feel your molecules being taken apart one at a time, analyzed, modulated and broadcast through space. It is not a pleasant sensation.">
<CARRIAGE-RETURNS>
<V-LOOK>)
(T ; "Handle the dummy corner"
<CRLF>
<CRLF>
<MUNG-MACHINE>)>
<GAME-OVER>
<COND (<EQUAL? .WHERE ,HILLTOP>
<CRLF>
<UPDATE-SCORE 5>)>)
(T
<TELL ,OKAY "just testing you.)" CR CR>
<NOTHING-EXCITING>)>>
<ROUTINE GAME-OVER ()
<FCLEAR ,MACHINE ,TOOLBIT>
<TELL CR
"A synthetic voice says, \"Game Over. Insert Token To Play Again.\"" CR>>
<OBJECT TOKEN
(DESC "brass token")
(SYNONYM TOKEN)
(ADJECTIVE BRASS)
(FLAGS NDESCBIT TAKEBIT READBIT)
(VALUE 3)
(SIZE 1)
(ACTION TOKEN-F)>
<ROUTINE TOKEN-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"The words \"Good For One Play\" are etched into the " D ,TOKEN "." CR>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,MACHINE ,SLOT>>
<REMOVE ,TOKEN>
<SAY-THE ,TOKEN>
<TELL " disappears into the slot">
<COND (<FSET? ,MACHINE ,RMUNGBIT>
<TELL ", but the broken " D ,MACHINE
" doesn't respond." CR>)
(T
<FSET ,MACHINE ,TOOLBIT>
<TELL ".|
|
Ding! You hear a pleasant electric chime, and a " D ,STAR
" appears on the " D ,VIDEO-SCREEN "." CR CR>
<UPDATE-SCORE 1>
<GOOD-PLACE-TO-SAVE>)>
<RTRUE>)
(T
<RFALSE>)>>
"*** TIDAL POOL ***"
<OBJECT TIDAL-POOL
(IN ROOMS)
(DESC "Tidal Pool")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL BAY SAND)
(NORTH TO FESTERON-POINT)
(EAST PER PROBABLY-DROWN)
(SOUTH TO PLEASURE-WHARF)
(WEST "There's nothing but sand that way.")
(DOWN "There's nothing but sand that way.")
(ACTION TIDAL-POOL-F)>
<ROUTINE TIDAL-POOL-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "You're on a damp stretch of sand that extends north towards Festeron Point, and south to the " D ,PLEASURE-WHARF "." CR>)>>
<OBJECT CONCH-SHELL
(IN TIDAL-POOL)
(DESC "conch shell")
(FDESC "A large conch shell is lying in the sand at your feet.")
(SYNONYM SHELL)
(ADJECTIVE CONCH ADVICE)
(FLAGS TAKEBIT CONTBIT OPENBIT RMUNGBIT)
(ACTION CONCH-SHELL-F)
(CAPACITY 1)
(SIZE 5)
(VALUE 0)>
<ROUTINE CONCH-SHELL-F ()
<COND (<VERB? LISTEN>
<COND (<DONT-HAVE? ,CONCH-SHELL>
<RTRUE>)>
<COND (<AND <NOT ,WOMAN-SEEN-ENVELOPE?>
<FSET? ,CONCH-SHELL ,RMUNGBIT>>
<FCLEAR ,CONCH-SHELL ,RMUNGBIT>
<TINY-VOICE>
<TELL " that sounds just like">
<BOSS>
<TELL ", " <PICK-ONE ,YELL-TYPES> ", \"">
<COND (<HELD? ,ENVELOPE>
<TELL "Don't just stand there! DELIVER">)
(T
<TELL "You " <PICK-ONE ,INSULTS>>)>
<TELL "!\"">)
(<AND <ENABLED? ,I-SHELL-TALK>
<L? ,SHELL-SCRIPT 5>>
<FCLEAR ,CONCH-SHELL ,RMUNGBIT>
<SETG SHELL-SCRIPT 1>
<TINY-VOICE>
<TELL " says, \"" <GET ,WISE-SAYINGS ,WISDOM> ".\"">)
(T
<TELL ,YOU-HEAR "the rush of ocean surf.">)>
<CRLF>
<RTRUE>)
(<VERB? BLOW-INTO>
<COND (<DONT-HAVE? ,CONCH-SHELL>
<RTRUE>)>
<SAY-THE ,CONCH-SHELL>
<TELL " makes an embarrassing sound." CR>
<RTRUE>)
(<VERB? SHAKE LOOK-INSIDE>
<COND (<DONT-HAVE? ,CONCH-SHELL>
<RTRUE>)>
<TELL "A few grains of sand fall out." CR>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,CONCH-SHELL>>
<COND (<G? <GETP ,PRSO ,P?SIZE> 1>
<TOO-LARGE ,PRSO>)
(T
<TELL "It immediately drops out">
<AND-DROPS-OUT ,PRSO>)>
<RTRUE>)
(<VERB? EXAMINE>
<SAY-THE ,CONCH-SHELL>
<TELL " is smooth and shiny. It">
<TV-SET>
<TELL "." CR>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,CONCH-SHELL>>
<COND (<AND <V-TAKE>
<IN? ,WISHBRINGER ,PROTAGONIST>
<FSET? ,ADVICE ,TOUCHBIT>>
<START-BUZZ>)>
<RTRUE>)
(<VERB? CLOSE OPEN>
<TELL <PICK-ONE ,YUKS> CR>
<RTRUE>)
(<HURT? ,CONCH-SHELL>
<RUIN ,CONCH-SHELL>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE TV-SET ("OPTIONAL" (MY? <>))
<TELL "'ll look great on ">
<COND (.MY?
<TELL "my">)
(T
<TELL "your">)>
<TELL " TV set back home">>
<ROUTINE TINY-VOICE ()
<TELL "A tiny voice in the " D ,CONCH-SHELL>>
<GLOBAL WISDOM 1>
<GLOBAL WISE-SAYINGS
<PTABLE 0
; (0) ; "Get thee to yonder Tower, for therein lies thy Fate"
; (1) "If ye hath not kept a Map, only patience or Magick can help thee"
; (2) "Magick may help thee cross the Bridge"
; (3) "Release a prisoner, and be Rewarded"
; (4) "Learn the Word of Power, else never gain the Tower"
; (5) "One path Magick, one path Science; both lead to thy Goal"
; (6) "Many wonders await thee in the Halls of Knowledge"
; (7) "Fit the pieces together, and the Puzzle is complete">>
<ROUTINE START-BUZZ ("OPTIONAL" (SAYING <>))
<COND (.SAYING
<SETG WISDOM .SAYING>)>
<COND (<AND <FSET? ,ADVICE ,TOUCHBIT>
<IN? ,CONCH-SHELL ,PROTAGONIST>
<IN? ,WISHBRINGER ,PROTAGONIST>
<NOT <ENABLED? ,I-SHELL-TALK>>>
<SETG SHELL-SCRIPT 7>
<ENABLE <QUEUE I-SHELL-TALK -1>>)>>
<OBJECT SAND
(IN LOCAL-GLOBALS)
(DESC "sand")
(SYNONYM SAND BEACH BANK)
(FLAGS TRYTAKEBIT NDESCBIT)
(ACTION SAND-F)
(VALUE 0)>
<ROUTINE SAND-F ()
<COND (<VERB? SEARCH EXAMINE DIG LOOK-UNDER LOOK-INSIDE LOOK-ON>
<NOTHING-INTERESTING>
<RTRUE>)
(<VERB? TAKE>
<SAY-THE ,SAND>
<TELL " slips away between your fingers." CR>
<RTRUE>)
(<VERB? FOLLOW WALK-TO CROSS THROUGH ENTER EXIT>
<COND (<EQUAL? ,HERE ,PLEASURE-WHARF>
<DO-WALK ,P?NORTH>)
(<EQUAL? ,HERE ,FESTERON-POINT>
<DO-WALK ,P?SOUTH>)
(T
<V-WALK-AROUND>)>
<RTRUE>)
(<AND <VERB? PUT PUT-ON THROW>
<EQUAL? ,PRSI ,SAND>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<VERB? KICK>
<RFALSE>)
(T
<YOU-DONT-NEED ,SAND>
<RFATAL>)>>
"*** OUTSIDE LIGHTHOUSE ***"
<OBJECT FESTERON-POINT
(IN ROOMS)
(DESC "Lighthouse")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL BAY RIVER SAND)
(NORTH PER PROBABLY-DROWN-IN-RIVER)
(EAST PER PROBABLY-DROWN)
(SOUTH PER ENTER-POOL?)
(WEST TO ROCKY-PATH)
(ACTION FESTERON-POINT-F)>
<ROUTINE FESTERON-POINT-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "This is where the river empties into">
<WHICH-TOWN "Bay">
<TELL ". A">
<COND (<NOT ,SKEWED?>
<TELL
" beach follows the shore of the bay " <TO-S> ", and a">)>
<TELL " path leads west along the riverbank.|
|
A ">
<COND (,SKEWED?
<TELL "broken-down old ">)
(T
<TELL "miniature ">)>
<TELL D ,LIGHTHOUSE
", barely ten feet high, stands ">
<COND (<NOT ,SKEWED?>
<TELL "blinking ">)>
<TELL "on the shore nearby." CR>
<COND (<IN? ,PELICAN ,FESTERON-POINT>
<CRLF>
<NOTE-PELICAN>)>)>>
<ROUTINE NOTE-PELICAN ()
<TELL "Perched on top of the " D ,LIGHTHOUSE
" is a " D ,PELICAN ", ">
<COND (<IN? ,HAT ,PELICAN>
<A-WIZARDS-HAT>)
(T
<TELL "watching you through half-closed eyelids.">)>
<CRLF>>
<ROUTINE A-WIZARDS-HAT ()
<TELL "a " D ,HAT " balanced on its head." CR>>
<OBJECT LIGHTHOUSE
(IN FESTERON-POINT)
(DESC "lighthouse")
(SYNONYM LIGHTHOUSE HOUSE BEACON)
(ADJECTIVE MINIATURE MINI AUTOMATIC AUTO BROKEN)
(FLAGS SURFACEBIT NDESCBIT)
(ACTION LIGHTHOUSE-F)
(CAPACITY 10)>
<ROUTINE LIGHTHOUSE-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<TELL "It's really just an automated beacon, erected by the town to impress tourists. ">
<NO-ENTRIES>
<COND (<IN? ,PELICAN ,FESTERON-POINT>
<CRLF>
<NOTE-PELICAN>)>
<RTRUE>)
(<AND <VERB? LOOK-ON>
<IN? ,PELICAN ,FESTERON-POINT>>
<NOTE-PELICAN>
<RTRUE>)
(<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,LIGHTHOUSE>>
<COND (<NOT <IN? ,PELICAN ,FESTERON-POINT>>
<MOVE ,PRSO ,FESTERON-POINT>
<TELL "It slides off the " D ,LIGHTHOUSE
" and lands at your feet." CR>)
(<OR <EQUAL? ,PRSO ,DHORSE ,WORM ,HAT>
<EQUAL? ,PRSO ,WISHBRINGER ,CHOCOLATE ,MILK>>
<PERFORM ,V?GIVE ,PRSO ,PELICAN>)
(T
<MOVE ,PRSO ,FESTERON-POINT>
<SAY-THE ,PELICAN>
<TELL " pushes ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " off the " D ,LIGHTHOUSE
" with its beak and glares at you." CR>)>
<RTRUE>)
(<AND <VERB? WALK-TO ENTER THROUGH PUT>
<EQUAL? ,PRSO ,LIGHTHOUSE>>
<NO-ENTRIES>
<RTRUE>)
(<VERB? SIT LIE-DOWN STAND-ON CLIMB-ON CLIMB-UP>
<COND (<IN? ,PELICAN ,FESTERON-POINT>
<THIS-IS-IT ,PELICAN>
<SAY-THE ,PELICAN>
<TELL " rudely nudges you off with its foot">)
(T
<TELL "There isn't enough room">)>
<TELL "." CR>
<RTRUE>)
(<VERB? OPEN CLOSE>
<TELL <PICK-ONE ,YUKS> CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE NO-ENTRIES ()
<TELL "There aren't any " D ,ENTRANCE "s or openings." CR>>

256
fog.zil Normal file
View File

@ -0,0 +1,256 @@
"FOG for WISHBRINGER: Copyright (C)1985 Infocom, Inc."
"*** STEEP TRAIL & FOG ***"
<OBJECT FOG
(IN ROOMS)
(DESC "Fog")
(LDESC "You're lost in a thick cloud of fog.")
(GLOBAL TRAIL CLIFF)
(FLAGS ONBIT RLANDBIT)
(NORTH PER N-TRAIL)
(EAST PER E-TRAIL)
(SOUTH PER S-TRAIL)
(WEST PER W-TRAIL)
(UP PER U-TRAIL)
(DOWN PER D-TRAIL)
; (IN "You're \"in\" this fog far enough already.")
; (OUT "You won't get \"out\" of this fog that easily.")
(PSEUDO "FOG" FOG-PSEUDO "CLOUD" FOG-PSEUDO)>
<GLOBAL TLOC <>>
<ROUTINE I-FOG-RISING ()
<COND (<OR ,ECLIPSE?
<NOT <EQUAL? ,HERE ,CLIFF-EDGE>>>
<DISABLE <INT I-FOG-RISING>>
<RTRUE>)>
<SETG WOMAN-SCRIPT <+ ,WOMAN-SCRIPT 1>>
<COND (<ZERO? ,WOMAN-SCRIPT>
<RTRUE>)>
<CRLF>
<COND (<EQUAL? ,WOMAN-SCRIPT 1>
<TELL "The fog in the valley is rising towards you!">)
(<EQUAL? ,WOMAN-SCRIPT 2>
<TELL "Fog is spilling over the edge of the cliff.">)
(<EQUAL? ,WOMAN-SCRIPT 3>
<TELL "Fingers of fog are swirling around your feet.">)
(T
<DISABLE <INT I-FOG-RISING>>
<MOVE ,PROTAGONIST ,FOG>
<SETG HERE ,FOG>
<SETG TLOC 7>
<START-BUZZ 1>
<TELL
"The rising mist envelops the cliff in a thick layer of..." CR CR>
<V-LOOK>
<RTRUE>)>
<CRLF>>
<ROUTINE ENTER-FOG? ()
<COND (,ENDING?
<SETG WOMAN-SCRIPT 5>
<TELL "A sudden noise from the " D ,MAGICK-SHOPPE
" changes your mind." CR>
<RFALSE>)>
<SETG TLOC 6>
<START-BUZZ 1>
<COND (,SKEWED?
<TELL
"As you descend the " D ,TRAIL " you are immediately engulfed in..." CR CR>
<RETURN ,FOG>)
(T
<RETURN ,STEEP-TRAIL>)>>
<ROUTINE FOG-PSEUDO ()
<COND (<VERB? EXAMINE LOOK-THRU LOOK-INSIDE>
<TELL "It's so thick you can barely see your own feet!" CR>
<RTRUE>)
(<VERB? TAKE WALK-TO ENTER THROUGH>
<TELL "There's more than enough right here." CR>
<RTRUE>)
(T
<YOU-DONT-NEED "fog" T>
<RFATAL>)>>
<OBJECT STEEP-TRAIL
(IN ROOMS)
(DESC "Steep Trail")
(FLAGS ONBIT RLANDBIT RMUNGBIT)
(GLOBAL TRAIL CLIFF)
(NORTH PER N-TRAIL)
(EAST PER E-TRAIL)
(SOUTH PER S-TRAIL)
(WEST PER W-TRAIL)
(UP PER U-TRAIL)
(DOWN PER D-TRAIL)
(ACTION STEEP-TRAIL-F)>
; "RMUNGBIT = No map warning given"
<ROUTINE STEEP-TRAIL-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "A steep, rocky " D ,TRAIL " winds "
<GET ,TRAILS ,TLOC> "." CR>)>>
<GLOBAL TRAILS
<PLTABLE
"west and downward"
"north and east"
"south and upward"
"east and downward"
"south and west"
"north and upward">>
<ROUTINE N-TRAIL ()
<COND (<EQUAL? ,TLOC 1 3 7>
<BUMP-CLIFF>
<RFALSE>)
(<EQUAL? ,TLOC 4 5>
<PROB-TUMBLE>
<RFALSE>)
(<EQUAL? ,TLOC 2>
<NEW-TRAIL 3>)
(T ; "6"
<NEW-TRAIL 5>)>
<RETURN <NEXT-CELL>>>
<ROUTINE E-TRAIL ()
<COND (<EQUAL? ,TLOC 5 6 7>
<PROB-TUMBLE>
<RFALSE>)
(<EQUAL? ,TLOC 1 3>
<BUMP-CLIFF>
<RFALSE>)
(<EQUAL? ,TLOC 2>
<NEW-TRAIL 1>)
(T ; "4"
<NEW-TRAIL 5>)>
<RETURN <NEXT-CELL>>>
<ROUTINE S-TRAIL ()
<COND (<EQUAL? ,TLOC 1 2 7>
<PROB-TUMBLE>
<RFALSE>)
(<EQUAL? ,TLOC 4 6>
<BUMP-CLIFF>
<RFALSE>)
(<EQUAL? ,TLOC 3>
<NEW-TRAIL 2>)
(T ; "5"
<NEW-TRAIL 6>)>
<RETURN <NEXT-CELL>>>
<ROUTINE W-TRAIL ()
<COND (<EQUAL? ,TLOC 2 3 4>
<PROB-TUMBLE>
<RFALSE>)
(<EQUAL? ,TLOC 6>
<BUMP-CLIFF>
<RFALSE>)
(<EQUAL? ,TLOC 1>
<NEW-TRAIL 2>)
(<EQUAL? ,TLOC 5>
<NEW-TRAIL 4>)
(T ; "7"
<TELL "Crash! ">
<BELL-TINKLES>
<RFALSE>)>
<RETURN <NEXT-CELL>>>
<ROUTINE U-TRAIL ()
<COND (<OR <EQUAL? ,TLOC 1 2 4>
<EQUAL? ,TLOC 5 7>>
<CANT-SEE-ANY "any upward trails" T>
<RFALSE>)
(<EQUAL? ,TLOC 3>
<NEW-TRAIL 4>)
(T ; "6"
<COND (,SKEWED?
<SETG TLOC 7>)
(T
<SETG TLOC <>>
<COND (<FSET? ,CLIFF-EDGE ,RMUNGBIT>
<FCLEAR ,CLIFF-EDGE ,RMUNGBIT>
<UPDATE-SCORE 1>
<CRLF>)>
<RETURN ,CLIFF-EDGE>)>)>
<RETURN <NEXT-CELL>>>
<ROUTINE D-TRAIL ()
<COND (<OR <EQUAL? ,TLOC 2 3 5>
<EQUAL? ,TLOC 6>>
<CANT-SEE-ANY "any downward trails" T>
<RFALSE>)
(<EQUAL? ,TLOC 1>
<COND (,SKEWED?
<WALK-OUT-OF-FOG>)>
<SETG TLOC <>>
<RETURN ,CLIFF-BOTTOM>)
(<EQUAL? ,TLOC 4>
<NEW-TRAIL 3>)
(T ; "7"
<NEW-TRAIL 6>)>
<RETURN <NEXT-CELL>>>
<ROUTINE NEXT-CELL ()
<COND (,SKEWED?
<FCLEAR ,FOG ,TOUCHBIT>
<RETURN ,FOG>)
(T
<RETURN ,STEEP-TRAIL>)>>
<ROUTINE WALK-OUT-OF-FOG ()
<START-BUZZ 2>
<SUDDEN-GUST>
<TELL "dissolves the fog and clears your vision." CR CR>>
<ROUTINE SUDDEN-GUST ()
<TELL "A sudden gust of wind ">>
<ROUTINE NEW-TRAIL (NEW-LOC)
<FCLEAR ,FOG ,TOUCHBIT>
<FCLEAR ,STEEP-TRAIL ,TOUCHBIT>
<SETG TLOC .NEW-LOC>>
<ROUTINE BUMP-CLIFF ()
<TELL <PICK-ONE ,BUMPS> "." CR>
<RFALSE>>
<GLOBAL BUMPS
<LTABLE 0
"A cliff wall blocks your path"
"You just walked into a solid wall of stone"
"Your path is blocked by a cliff wall">>
<GLOBAL T-PROB 0>
<ROUTINE PROB-TUMBLE ()
<SETG T-PROB <+ ,T-PROB 10>>
<COND (<OR <EQUAL? ,T-PROB 100>
<PROB ,T-PROB>>
<TELL
"Oh, no! You lost your footing and tumbled off the cliff!">
<BAD-ENDING>)
(T
<TUMBLE>)>>
<ROUTINE TUMBLE ()
<TELL "You'd " <PICK-ONE ,FALLS>>
<COND (<EQUAL? ,HERE ,HILLTOP ,LOOKOUT-HILL>
<TELL " down the hill">)
(T
<TELL " off the " D ,CLIFF>)>
<WENT-THAT-WAY>
<RFALSE>>
<GLOBAL FALLS
<LTABLE 0 "tumble" "fall" "plummet">>

888
globals.zil Normal file
View File

@ -0,0 +1,888 @@
"GLOBALS for WISHBRINGER: (C)1985 Infocom, Inc. All Rights Reserved."
<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
<GLOBAL HERE 0>
<GLOBAL LIT T>
<GLOBAL MOVES 0>
<GLOBAL SCORE 0>
<OBJECT GLOBAL-OBJECTS
(FLAGS RMUNGBIT INVISIBLE TOUCHBIT SURFACEBIT
TRYTAKEBIT OPENBIT SEARCHBIT TRANSBIT
WEARBIT VOWELBIT ONBIT RLANDBIT
ACTORBIT TAKEBIT NDESCBIT NARTICLEBIT
TOOLBIT LOCKEDBIT WISHBIT
INDOORSBIT FLAMEBIT WORNBIT THROWNBIT
WETBIT VEHBIT)>
<OBJECT LOCAL-GLOBALS
(IN GLOBAL-OBJECTS)
(SYNONYM ZZZP)
(DESCFCN 0)
(GLOBAL GLOBAL-OBJECTS)
(ADVFCN 0)
(FDESC "F")
(LDESC "L")
(PSEUDO "FOOBAR" V-WALK)
(CONTFCN 0)
(SIZE 0)
;(TEXT "")
(CAPACITY 0)>
<OBJECT ROOMS
(IN TO ROOMS)>
<OBJECT INTNUM
(IN GLOBAL-OBJECTS)
(SYNONYM INTNUM)
(DESC "number")>
<OBJECT PSEUDO-OBJECT
(DESC "pseudo")
(ACTION ME-F)>
<OBJECT IT
(IN GLOBAL-OBJECTS)
(SYNONYM IT THAT)
(DESC "it")
(FLAGS VOWELBIT NARTICLEBIT NDESCBIT TOUCHBIT)>
<ROUTINE BE-SPECIFIC ()
<TELL "(Be specific: what do you want to ">>
<ROUTINE TO-DO-THING-USE (STR1 STR2)
<TELL "(To " .STR1 " something, use the command: "
.STR2 " THING.)" CR>>
<ROUTINE CANT-USE (PTR "AUX" BUF)
<SETG QUOTE-FLAG <>>
<SETG P-OFLAG <>>
<TELL "(This story can't understand the word \"">
<WORD-PRINT <GETB <REST ,P-LEXV <SET BUF <* .PTR 2>>> 2>
<GETB <REST ,P-LEXV .BUF> 3>>
<TELL "\" when you use it that way.)" CR>>
<ROUTINE DONT-UNDERSTAND ()
<TELL "(That sentence didn't make sense. Please reword it or try something else.)" CR>>
<ROUTINE NOT-IN-SENTENCE (STR)
<TELL "(There aren't " .STR " in that sentence!)" CR>>
<OBJECT DUST
(IN GLOBAL-OBJECTS)
(DESC "dust")
(SYNONYM DUST DIRT GRIME FILTH)>
<OBJECT GROUND
(IN GLOBAL-OBJECTS)
(DESC "ground")
(SYNONYM FLOOR GROUND LAWN GRASS)
(FLAGS NDESCBIT SURFACEBIT)
(CAPACITY 30000)
(ACTION GROUND-F)>
<ROUTINE GROUND-F ()
<COND (<VERB? EXAMINE LOOK-ON SEARCH>
<COND (<AND <EQUAL? ,HERE ,INSIDE-THEATER>
<FSET? ,GLASSES ,RMUNGBIT>>
<PERFORM ,V?LOOK-UNDER ,SEAT>)
(T
<TELL ,YOU-SEE "nothing " <PICK-ONE ,YAWNS>
" about the ">
<GROUND-OR-FLOOR>
<TELL "." CR>)>
<RTRUE>)
(<VERB? SIT LIE-DOWN>
<V-LIE-DOWN>)
(<VERB? CROSS WALK-TO THROUGH ENTER>
<V-WALK-AROUND>)
(<VERB? LOOK-UNDER PUT-UNDER>
<HOW?>)
(<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,GROUND ,AISLE>>
<PERFORM ,V?DROP ,PRSO>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSI ,GROUND ,AISLE>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<EQUAL? ,AISLE ,PRSO ,PRSI>
<RFALSE>)
(T
<YOU-DONT-NEED ,GROUND>
<RFATAL>)>
<RTRUE>>
<ROUTINE GROUND-OR-FLOOR ()
<COND (<FSET? ,HERE ,INDOORSBIT>
<TELL "floor">)
(T
<PRINTD ,GROUND>)>>
<OBJECT ROAD
(IN GLOBAL-OBJECTS)
(DESC "road")
(SYNONYM ROAD STREET PATH)
(ACTION HERE-F)>
<ROUTINE HERE-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-DOWN>
<V-LOOK>)
(<VERB? FIND>
<TELL "It's right here!" CR>)
(<VERB? FOLLOW WALK-TO WALK LEAVE CROSS CLIMB-ON CLIMB-UP
CLIMB-DOWN ENTER THROUGH>
<V-WALK-AROUND>
<RFATAL>)
(<VERB? SIT LIE-DOWN DIG>
<WASTE-OF-TIME>)
(<AND <VERB? PUT PUT-ON THROW>
<EQUAL? ,PRSI ,PSEUDO-OBJECT>>
<PERFORM ,V?DROP ,PRSO>)
(<OR <TALKING-TO? ,ROAD>
<VERB? YELL>>
<NOTHING-EXCITING>
<RFATAL>)
(T
<YOU-DONT-NEED "area" T>)>
<RTRUE>>
<OBJECT WALLS
(IN GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "wall")
(SYNONYM WALL WALLS)
(ACTION WALLS-F)>
<ROUTINE WALLS-F ()
<COND (<AND <NOT <FSET? ,HERE ,INDOORSBIT>>
<NOT <EQUAL? ,HERE ,INSIDE-GRAVE>>>
<CANT-SEE-ANY ,WALLS>
<RFATAL>)
(<OR <GETTING-INTO?>
<VERB? LOOK-BEHIND>>
<TELL <PICK-ONE ,YUKS> CR>)
(<VERB? LOOK-UNDER>
<TELL "There's a floor there." CR>)
(<OR <HURT? ,WALLS>
<MOVING? ,WALLS>>
<SAY-THE ,WALLS>
<TELL " is not affected." CR>)
(<OR <TALKING-TO? ,WALLS>
<VERB? YELL>>
<TELL "Talking to walls">
<SIGN-OF-COLLAPSE>
<RFATAL>)
(T
<YOU-DONT-NEED ,WALLS>
<RFATAL>)>
<RTRUE>>
<OBJECT CEILING
(IN GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "ceiling")
(SYNONYM CEILING)
(ACTION CEILING-F)>
<ROUTINE CEILING-F ()
<COND (<NOT <FSET? ,HERE ,INDOORSBIT>>
<CANT-SEE-ANY ,CEILING>
<RFATAL>)
(<VERB? LOOK-UNDER>
<V-LOOK>
<RTRUE>)
(<VERB? EXAMINE LOOK-ON>
<COND (<EQUAL? ,HERE ,UNDER-CELL>
<PERFORM ,V?EXAMINE ,HIDDEN-HATCH>)
(<EQUAL? ,HERE ,ON-BRIDGE>
<TELL "The bridge is covered by a roof." CR>)
(T
<RFALSE>)>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT HANDS
(IN GLOBAL-OBJECTS)
(DESC "your hand")
(SYNONYM HAND HANDS)
(ADJECTIVE MY BARE)
(FLAGS NDESCBIT TOOLBIT TOUCHBIT NARTICLEBIT)>
<OBJECT PROTAGONIST
(IN HILLTOP)
(SYNONYM PROTAG)
(DESC "yourself")
(FLAGS NDESCBIT NARTICLEBIT INVISIBLE)
(ACTION 0)
(SIZE 0)>
; <OBJECT POCKET
(IN PROTAGONIST)
(DESC "your pocket")
(SYNONYM POCKET)
(ADJECTIVE MY)
(FLAGS WORNBIT NDESCBIT OPENBIT NARTICLEBIT CONTBIT)
(CAPACITY 10)
(ACTION POCKET-F)>
; <ROUTINE POCKET-F ("AUX" OBJ NXT)
<COND (<VERB? LOOK-INSIDE SEARCH LOOK-DOWN EXAMINE>
<COND (<FIRST? ,POCKET>
<TELL "There's ">
<PRINT-CONTENTS ,POCKET>
<TELL " in " D ,POCKET>)
(T
<TELL "Y">
<POCKET-EMPTY>)>
<TELL "." CR>
<RTRUE>)
(<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,POCKET>>
<COND (<AND <EQUAL? ,PRSO ,CANDLE>
<FSET? ,CANDLE ,ONBIT>>
<TELL "Putting a lighted " D ,CANDLE
" in " D ,POCKET " isn't a good idea." CR>
<RTRUE>)
(<EQUAL? ,PRSO ,HANDS>
<TELL "No wonder " D ,CRISP " says you're lazy!" CR>
<RTRUE>)
(T
<RFALSE>)>)
(<VERB? OPEN CLOSE>
<TELL "You don't need to do that." CR>
<RTRUE>)
(<VERB? TAKE-OFF>
<TELL <PICK-ONE ,YUKS> CR>
<RTRUE>)
(<HURT? ,POCKET>
<WASTE-OF-TIME>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT ME
(IN GLOBAL-OBJECTS)
(SYNONYM I ME MYSELF)
(DESC "yourself")
(FLAGS ACTORBIT TOUCHBIT NARTICLEBIT)
(ACTION ME-F)>
<ROUTINE ME-F ("OPTIONAL" (CONTEXT <>) "AUX" OLIT)
<COND (<VERB? ALARM>
<TELL "You're already wide awake." CR>
<RTRUE>)
(<OR <TALKING-TO? ,ME>
<VERB? YELL>>
<TALK-TO-SELF>
<RFATAL>)
(<VERB? LISTEN>
<TELL ,CANT " help doing that." CR>
<RTRUE>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,ME>>
<COND (<HELD? ,PRSO>
<TELL "You already have it." CR>)
(T
<PERFORM ,V?TAKE ,PRSO>)>
<RTRUE>)
(<VERB? KILL>
<TELL "Desperate? Call the Samaritans." CR>
<RTRUE>)
(<VERB? FIND>
<TELL "You're right here!" CR>
<RTRUE>)
(<HURT? ,ME>
<TELL "Punishing yourself that way won't help matters." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE TALK-TO-SELF ()
<TELL "Talking to yourself">
<SIGN-OF-COLLAPSE>
<PCLEAR>>
<ROUTINE SIGN-OF-COLLAPSE ()
<TELL " is said to be a sign of impending mental collapse." CR>>
<OBJECT GLOBAL-ROOM
(IN GLOBAL-OBJECTS)
(DESC "room")
(SYNONYM ROOM AREA PLACE)
(ACTION GLOBAL-ROOM-F)>
<ROUTINE GLOBAL-ROOM-F ()
<COND (<VERB? LOOK EXAMINE LOOK-INSIDE>
<V-LOOK>
<RTRUE>)
(<VERB? ENTER THROUGH DROP EXIT>
<V-WALK-AROUND>
<RFATAL>)
(<VERB? WALK-AROUND>
<TELL
"Walking around the area reveals nothing new.|
|
(If you want to go somewhere, just type a direction.)" CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE ALREADY-IN (PLACE "OPTIONAL" (NOT? <>))
<TELL "But you're ">
<COND (.NOT?
<TELL "not">)
(T
<TELL "already">)>
<TELL " in ">
<ARTICLE .PLACE T>
<TELL D .PLACE "!" CR>>
<ROUTINE UPDATE-SCORE (POINTS)
<SETG GSCORE <+ ,GSCORE .POINTS>>
<TELL "(Your score just went ">
<COND (<G? .POINTS -1>
<TELL "up">)
(T
<TELL "DOWN">)>
<TELL " by " N <ABS .POINTS> " point">
<COND (<NOT <EQUAL? .POINTS 1 -1>>
<TELL "s">)>
<TELL "! Your total score is " N ,GSCORE " out of 100.)" CR>>
<ROUTINE GO-INSIDE ()
<TELL "Why not go inside and look around?" CR>>
<ROUTINE CANT-MAKE-OUT-ANYTHING ()
<TELL ,CANT " make out anything inside." CR>>
<ROUTINE OBJECT-IS-LOCKED ()
<TELL ,CANT " do that. It's locked." CR>>
<ROUTINE CANT-SEE-ANY ("OPTIONAL" (THING <>) (STRING? <>))
<YOU-CANT-SEE>
<COND (.STRING?
<TELL .THING>)
(.THING
<COND (<NOT <FSET? .THING ,NARTICLEBIT>>
<TELL "any ">)>
<TELL D .THING>)
(T
<TELL "that">)>
<TELL " here!" CR>>
<ROUTINE YOU-CANT-SEE ()
<SETG CLOCK-WAIT T>
<PCLEAR>
<TELL ,CANT " see ">>
<ROUTINE HOW-WOULD-YOU-LIKE-IT (OBJ)
<TELL
"How would you like it if somebody did that to YOUR " D .OBJ "?" CR>>
<OBJECT SIGN
(IN LOCAL-GLOBALS)
(DESC "sign")
(SYNONYM SIGN SIGNPOST POST MESSAGE)
(ADJECTIVE PAINT PAINTED HANDPAINTED NEON)
(FLAGS NDESCBIT READBIT TRYTAKEBIT)
(ACTION SIGN-F)>
<ROUTINE SIGN-F ()
<COND (<VERB? READ EXAMINE>
<COND (<EQUAL? ,HERE ,HILLTOP>
<TELL
"There are two arrows on the signpost. The arrow pointing west says \"To Cemetery.\" The east arrow is marked \"To">
<WHICH-TOWN>
<TELL ".\"" CR>)
(<EQUAL? ,HERE ,ROTARY-WEST>
<SAY-THE ,SIGN>
<TELL " over the " D ,ENTRANCE " says, \"">
<COND (,SKEWED?
<TELL "Witchville">)
(T
<TELL "Festeron">)>
<TELL " Police Headquarters.\"" CR>)
(<EQUAL? ,HERE ,NORTH-OF-BRIDGE>
<COND (,SKEWED?
<TELL
"The childlike scrawl is hard to decipher. With a little imagination, you can make out the phrase \"Toll Bridge, One Gold Coin.\"" CR>)
(T
<CANT-SEE-ANY ,SIGN>)>)
(<EQUAL? ,HERE ,CLIFF-EDGE>
<DESCRIBE-SIGN>)
(<EQUAL? ,HERE ,PLEASURE-WHARF>
<TELL "The neon sign says, \"VIDEO GAMES.\"" CR>)
(<EQUAL? ,HERE ,EDGE-OF-LAKE>
<PERFORM ,V?READ ,SAND>)
(<EQUAL? ,HERE ,GRUE-NEST>
<PERFORM ,V?EXAMINE ,REFRIGERATOR>)
(<EQUAL? ,HERE ,VIDEO-ARCADE>
<ARCADE-SIGN>)
(<EQUAL? ,HERE ,CIRCULATION-DESK>
<SAY-THE ,SIGN>
<TELL
" over the hall says, \"To " D ,MUSEUM ".\"" CR>)
(<EQUAL? ,HERE ,MUSEUM>
<SAY-DCASE-SIGN>)
(T
<RFALSE>)>
<RTRUE>)
(<OR <HURT? ,SIGN>
<VERB? TAKE RUB PUT PUSH MOVE>>
<WASTE-OF-TIME>
<RTRUE>)
(T
<YOU-DONT-NEED ,SIGN>
<RFATAL>)>>
<ROUTINE CANT-FIT-INTO? (PLACE)
<COND (<IN? ,BRANCH ,PROTAGONIST>
<NEVER-GET-IN .PLACE "that branch">
<RTRUE>)
(<AND <IN? ,UMBRELLA ,PROTAGONIST>
<FSET? ,UMBRELLA ,OPENBIT>>
<NEVER-GET-IN .PLACE "that open umbrella">
<RTRUE>)
(<G? <WEIGHT ,PROTAGONIST> 18>
<NEVER-GET-IN .PLACE "all that stuff">
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE NEVER-GET-IN (PLACE THING)
<TELL
"You'll never get into the " .PLACE " holding " .THING "!" CR>>
<ROUTINE GET-INTO (PLACE)
<TELL "With great effort, you manage to squeeze yourself into the "
.PLACE "." CR CR>>
<ROUTINE NOT-LIQUID ()
<ITS-NOT-A "liquid">>
<ROUTINE NOT-SOLID ()
<ITS-NOT-A "solid">>
<ROUTINE ITS-NOT-A (STR)
<TELL "It's not a " .STR "." CR>>
<ROUTINE COME-TO-SENSES ()
<CARRIAGE-RETURNS>
<SETG BROOM-SIT? <>>
<TELL
"You come to your senses empty-handed and aching all over." CR CR>
<V-LOOK>
<I-LUCK>
<I-GLOW>>
<ROUTINE PROBABLY-DROWN-IN-RIVER ()
<PROBABLY-DROWN T>
<RFALSE>>
<ROUTINE PROBABLY-DROWN ("OPTIONAL" (RIVER? <>))
<TELL "You'd probably drown in the ">
<COND (.RIVER?
<PRINTD ,RIVER>)
(<EQUAL? ,HERE ,WHARF ,TIDAL-POOL ,FESTERON-POINT>
<PRINTD ,BAY>)
(<EQUAL? ,HERE ,EDGE-OF-LAKE ,RIVER-OUTLET ,ISLAND>
<PRINTD ,LAKE>)
(<EQUAL? ,HERE ,PARK>
<PRINTD ,FOUNTAIN>)
(<AND <EQUAL? ,HERE ,HILLTOP>
,SKEWED?>
<PRINTD ,MOAT>)
(T
<PRINTD ,RIVER>)>
<WENT-THAT-WAY>
<RFALSE>>
<ROUTINE WENT-THAT-WAY ()
<TELL " if you went that way." CR>>
<ROUTINE WATER-DIRTY ()
<TELL "Better not. The water might be dirty." CR>>
<ROUTINE HANDLE-WATER? ()
<COND (<GETTING-INTO?>
<PROBABLY-DROWN>)
(<VERB? DRINK TASTE>
<WATER-DIRTY>)
(<VERB? EAT BITE>
<NOT-SOLID>)
(<AND <VERB? PUT PUT-ON PUT-UNDER THROW>
<OR <EQUAL? ,PRSI ,BAY ,RIVER ,LAKE>
<EQUAL? ,PRSI ,MOAT>>>
<REMOVE ,PRSO>
<TELL "Splash!" CR CR>
<COND (<EQUAL? ,PRSO ,HORSE ,DHORSE>
<COND (<ENABLED? ,I-HORSE-DEATH>
<DISABLE <INT I-HORSE-DEATH>>)>
<SAY-THE ,PRSO>
<TELL
" floats without moving for a few anxious moments. Then it ">
<COND (<EQUAL? ,PRSO ,DHORSE>
<TELL
"sinks slowly into the dark water">)
(T
<SETG HORSE-SAVED? T>
<TELL "springs suddenly to life, circling and splashing joyfully in the waves. Before it swims away it looks up at you with an unmistakable expression of gratitude">)>
<TELL "." CR>)
(<AND <EQUAL? ,PRSO ,CANDLE>
<FSET? ,CANDLE ,ONBIT>>
<TELL "Weird! ">
<SAY-THE ,CANDLE>
<TELL " remains lit even as it">
<SINKS-INTO-WATER>)
(T
<TELL "Silently, ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO>
<SINKS-INTO-WATER>)>)
(<AND <VERB? PUSH-TO>
<OR <EQUAL? ,PRSI ,BAY ,RIVER ,LAKE>
<EQUAL? ,PRSI ,MOAT>>>
<COND (<HELD? ,PRSO>
<PRESUMABLY-YOU-WANT-TO "PUT it in" ,PRSI>
<PERFORM ,V?PUT ,PRSO ,PRSI>
<RTRUE>)
(<AND <IN? ,PRSO ,HERE>
<FSET? ,PRSO ,TAKEBIT>>
<MOVE ,PRSO ,PROTAGONIST>
<TELL "(with your foot)" CR>
<PERFORM ,V?PUT ,PRSO ,PRSI>
<RTRUE>)
(T
<V-PUSH-TO>)>)
(<SEE-VERB?>
<TELL "The water is too deep to see much of anything." CR>)
(T
<YOU-DONT-NEED "water" T>
<RFATAL>)>
<RTRUE>>
<ROUTINE SINKS-INTO-WATER ()
<TELL " disappears beneath the surface of ">
<ARTICLE ,PRSI T>
<TELL D ,PRSI "." CR>>
<ROUTINE YOU-ARE-HOLDING (THING "OPTIONAL" (AGAIN <>))
<THIS-IS-IT .THING>
<TELL CR CR "(You are ">
<COND (.AGAIN
<TELL "again">)
(T
<TELL "now">)>
<TELL " holding ">
<ARTICLE .THING .AGAIN>
<TELL D .THING ".)">>
<ROUTINE NOTHING-EXCITING ()
<TELL "Nothing exciting happens." CR>>
<ROUTINE THAT-WAS-CLOSE ()
<TELL "Whew! That was close." CR>>
<ROUTINE GOOD-PLACE-TO-SAVE ()
<TELL CR
"(This might be a good time to SAVE your story position.)" CR>>
<ROUTINE HOW? ()
<TELL "How do you intend to do that?" CR>>
<OBJECT CORNER
(IN LOCAL-GLOBALS)
(DESC "corner")
(SYNONYM CORNER)
(FLAGS NDESCBIT)
(ACTION CORNER-F)>
<ROUTINE CORNER-F ()
<COND (<VERB? EXAMINE LOOK-ON LOOK-INSIDE>
<V-LOOK>
<RTRUE>)
(<GETTING-INTO?>
<TELL
"You're close enough to the " D ,CORNER " already." CR>
<RTRUE>)
(T
<YOU-DONT-NEED ,CORNER>
<RFATAL>)>>
<ROUTINE TOO-FAR-AWAY (OBJ)
<UNFORTUNATELY>
<ARTICLE .OBJ T>
<TELL D .OBJ " is too far away for you to do that." CR>>
<ROUTINE UNFORTUNATELY ()
<TELL "Unfortunately, ">>
<ROUTINE EXCELLENT-VIEW (OBJ)
<SAY-THE .OBJ>
<TELL " affords an excellent view of the surrounding area." CR>>
<ROUTINE ALREADY-AT (OBJ "OPTIONAL" (TOP? <>))
<TELL "You're already at the ">
<COND (.TOP?
<TELL "top">)
(T
<TELL "bottom">)>
<TELL " of the " D .OBJ "!" CR>>
<ROUTINE LOITERING-ON (OBJ)
<TELL "There's no reason to loiter around the " D .OBJ "." CR>>
<ROUTINE PRESUMABLY-YOU-WANT-TO (STR "OPTIONAL" (THING <>))
<TELL ,I-ASSUME " " .STR " ">
<COND (.THING
<ARTICLE .THING T>
<TELL D .THING>)
(T
<TELL "it">)>
<TELL ".)" CR>>
<ROUTINE MAKE-IT-SNAPPY ()
<TELL
" If you want to make a wish, you'd better make it snappy!)">>
<ROUTINE HOLD-YOUR-PEACE ()
<TELL
" Wish now, or forever hold your peace!)">>
<ROUTINE IT-IGNORES-YOU (WHO)
<SAY-THE .WHO>
<TELL " " <PICK-ONE ,IGNORANCE> "." CR>>
<GLOBAL IGNORANCE
<LTABLE 0
"studiously ignores you"
"pretends not to understand you"
"pays no attention to you"
"makes a rude little noise">>
<OBJECT SOUND
(IN GLOBAL-OBJECTS)
(DESC "sound")
(SYNONYM SOUND VOICE VOICES MUSIC)
(ADJECTIVE NOISE NOISES)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION SOUND-F)>
<ROUTINE SOUND-F ()
<COND (<VERB? LISTEN>
<COND (<EQUAL? ,HERE ,INSIDE-THEATER>
<COND (<OR <EQUAL? ,MOVIE-SCRIPT 6>
,ECLIPSE?>
<BLANK-SCREEN>)
(T
<TELL
"The soundtrack is an artless mix of Witchville slogans and John Philip Sousa marches, played at earsplitting volume." CR>)>
<RTRUE>)
(<AND <EQUAL? ,HERE ,LOBBY>
<L? ,MOVIE-SCRIPT 6>
<NOT ,ECLIPSE?>>
<TELL ,YOU-HEAR
"a blare of noise coming from inside the " D ,MOVIE-THEATER>)
(<AND <EQUAL? ,HERE ,HILLTOP>
<NOT <FSET? ,ENVELOPE ,RMUNGBIT>>> ; "Not given?"
<TELL
"Uh-oh! The calling voice belongs to">
<BOSS>
<TELL "!" CR>
<RTRUE>)
(<AND <EQUAL? ,HERE ,MUSEUM>
<ENABLED? ,I-PLEA>>
<TELL "The voice sounds just like the "
D ,OLD-WOMAN " you met at the " D ,MAGICK-SHOPPE>)
(<AND <EQUAL? ,HERE ,INSIDE-SHOPPE>
<FSET? ,CLOCK ,RMUNGBIT>>
<PERFORM ,V?LISTEN ,CLOCK>
<RTRUE>)
(<EQUAL? ,HERE ,JAIL-CELL>
<COND (<L? ,JAIL-SCRIPT 9>
<TELL "The ">
<EVIL-VOICES>
<TELL " don't sound very friendly." CR>)
(T
<HEAR-WAILS>)>
<RTRUE>)
(T
<TELL
"At the moment, you hear nothing " <PICK-ONE ,YAWNS>>)>
<TELL "." CR>
<RTRUE>)
(<VERB? FOLLOW WALK-TO>
<V-WALK-AROUND>)
(<VERB? WAIT-FOR>
<V-WAIT>)
(<AND <VERB? REPLY>
<EQUAL? ,HERE ,HILLTOP>
<NOT <FSET? ,ENVELOPE ,RMUNGBIT>>> ; "Not given?"
<TELL "You'll have to go inside to do that." CR>)
(<OR <TALKING-TO? ,SOUND>
<VERB? YELL>>
<TELL "Try addressing the source of the sound." CR>
<RFATAL>)
(T
<TELL ,CANT>
<DO-TO>
<TELL "a " D ,SOUND "!" CR>)>
<RTRUE>>
<ROUTINE TOO-LARGE (THING "OPTIONAL" (SMALL? <>))
<BUT-THE .THING>
<TELL "is much too ">
<COND (.SMALL?
<TELL "small">)
(T
<TELL "large">)>
<TELL "!" CR>>
<ROUTINE FROBOZZ (STR)
<TELL "Frobozz Magic " .STR " Company">>
<ROUTINE NOT-LIKELY (THING STR)
<TELL "It" <PICK-ONE ,LIKELIES> " that ">
<ARTICLE .THING T>
<TELL D .THING " " .STR "." CR>>
<GLOBAL LIKELIES
<LTABLE 0
" isn't likely"
" seems doubtful"
" seems unlikely"
"'s unlikely"
"'s not likely"
"'s doubtful">>
<ROUTINE YOUD-HAVE-TO (STR THING)
<TELL "You'd have to " .STR " ">
<ARTICLE .THING T>
<TELL D .THING " to do that." CR>>
<ROUTINE CLOSED-AND-LOCKED ()
<TELL " closed and locked." CR>>
; <ROUTINE OPENED ()
<TELL "Opened.">>
<ROUTINE STANDING ()
<TELL "You're standing ">>
<ROUTINE DO-TO ()
<TELL " do that to ">>
<ROUTINE INTRO ()
<TELL "\"Behind you!\" cries the Princess. \"It's a trap!\"|
|
Too late. The " D ,DRAWBRIDGE " crashes shut against the " D ,TOWER " wall. You turn to face your enemy, and find yourself staring into the open maw of">>
<ROUTINE FIRED ("OPTIONAL" (TIMEOUT? <>))
<TELL CR "\"There you are, " <PICK-ONE ,INSULTS> "!\"|
|
You wince as " D ,CRISP " strides into view and grabs you by the front of your uniform.|
|
\"You good-for-nothing " <PICK-ONE ,INSULTS> "!\" he bellows in your face. \"I wanted you to ">
<COND (.TIMEOUT?
<TELL "deliver that envelope BEFORE five o'clock! Now the "
D ,MAGICK-SHOPPE " is closed... and y">)
(T
<TELL "get back to the " D ,POST-OFFICE
" as soon as you were done with that envelope! Y">)>
<TELL "ou're FIRED!\"">
<BAD-ENDING>>
<ROUTINE SAY-HURRY ()
<TELL CR "(It's ">
<TELL-TIME>
<TELL ". Better hurry! ">>
<ROUTINE BETTER-HURRY ("OPTIONAL" (HALF? <>))
<SAY-HURRY>
<SAY-THE ,MAGICK-SHOPPE>
<TELL " closes in less than ">
<COND (.HALF?
<TELL "half ">)>
<TELL "an hour!)" CR>>
; <ROUTINE PLACE-HOLDER (STR)
<TELL CR "[TESTER: " .STR ". Film at eleven. -BM]" CR>>
; <ROUTINE VPRINT ("AUX" TMP)
<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>>)>>
; <ROUTINE NOT-HERE (OBJ)
<SETG CLOCK-WAIT T>
<TELL ,CANT " see ">
<COND (<NOT <FSET? .OBJ ,NARTICLEBIT>> <TELL "any ">)>
<TELL D .OBJ " here." CR>>
<OBJECT HER
(IN GLOBAL-OBJECTS)
(SYNONYM SHE HER ; WOMAN ; GIRL ; LADY)
(DESC "her")
(FLAGS NARTICLEBIT)>
<OBJECT HIM
(IN GLOBAL-OBJECTS)
(SYNONYM HE HIM ; MAN ;BOY)
(DESC "him")
(FLAGS NARTICLEBIT)>
<OBJECT THEM
(IN GLOBAL-OBJECTS)
(SYNONYM THEY THEM)
(DESC "them")
(FLAGS NARTICLEBIT)>
<GLOBAL GAME "Wishbringer">
<GLOBAL I-ASSUME "(Presumably, you mean">
<GLOBAL CANT "You can't">
<SYNONYM EAST RIGHT>
<SYNONYM WEST LEFT>
<OBJECT INTDIR
(IN GLOBAL-OBJECTS)
(DESC "direction")
(SYNONYM DIRECTION)
(ADJECTIVE NORTH EAST SOUTH WEST ; "UP DOWN" ; "NE NW SE SW")
; "(NE 0)
(SE 0)
(SW 0)
(NW 0)" >

477
island.zil Normal file
View File

@ -0,0 +1,477 @@
"ISLAND for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
<OBJECT WHISTLE
(DESC "silver whistle")
(SYNONYM WHISTLE)
(ADJECTIVE SILVER)
(FLAGS TAKEBIT)
(ACTION WHISTLE-F)
(VALUE 3)
(SIZE 1)>
<GLOBAL BEEN-TO-ISLAND? <>>
<GLOBAL RETURN-FROM-ISLAND? <>>
<ROUTINE WHISTLE-F ()
<COND (<VERB? EXAMINE>
<SAY-THE ,WHISTLE>
<TELL " is shaped like a " D ,PLATYPUS>
<COND (<OR <EQUAL? ,HERE ,EDGE-OF-LAKE>
<AND <EQUAL? ,HERE ,ISLAND ,THRONE-ROOM>
,RETURN-FROM-ISLAND?>>
<TELL ", and twinkles with gentle Magick">)>
<TELL "." CR>
<RTRUE>)
(<VERB? BLOW-INTO>
<COND (<DONT-HAVE? ,WHISTLE>
<RTRUE>)>
<WHISTLE-SOUND>
<COND (<AND <NOT ,BEEN-TO-ISLAND?>
<EQUAL? ,HERE ,EDGE-OF-LAKE>>
<SETG BEEN-TO-ISLAND? T>
<CRLF>
<SAY-THE ,WHISTLE>
<TELL
"'s music echoes over the lake, rippling the water with gentle Magick. ">
<SUDDEN-GUST>
<TELL "blows through your hair. " ,YOU-SEE
"the soft outline of " D ,ISLAND " drawing closer as you streak across the waves...">
<CARRIAGE-RETURNS>
<MOVE ,PROTAGONIST ,ISLAND>
<SETG HERE ,ISLAND>
<V-LOOK>)
(<AND ,RETURN-FROM-ISLAND?
<EQUAL? ,HERE ,ISLAND ,THRONE-ROOM>>
<REMOVE ,WHISTLE>
<COND (<NOT <IN? ,BOOTS ,FESTERON-POINT>>
<SETG BOOT-LOC 0>
<MOVE ,BOOTS ,FESTERON-POINT>)>
<MOVE ,PROTAGONIST ,EDGE-OF-LAKE>
<SETG HERE ,EDGE-OF-LAKE>
<CRLF>
<SUDDEN-GUST>
<TELL "rises out of nowhere, and " D ,ISLAND>
<BENEATH-FEET>
<TELL ". You feel the " D ,WHISTLE " slip from "
D ,HANDS " as you streak across the lake...">
<CARRIAGE-RETURNS>
<V-LOOK>)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE WHISTLE-SOUND ()
<TELL
"A clear, sweet note stills the night with its beauty." CR>>
<OBJECT ISLAND
(IN ROOMS)
(DESC "Misty Island")
(FLAGS ONBIT WETBIT RLANDBIT NARTICLEBIT)
(GLOBAL CASTLE CLIFF LAKE ISLE)
(NORTH PER BUMP-CLIFF)
(EAST PER PROBABLY-DROWN)
(SOUTH PER BUMP-CLIFF)
(WEST PER ENTER-THRONE-ROOM)
(IN PER ENTER-THRONE-ROOM)
(PSEUDO "BEACH" HERE-F)
(ACTION ISLAND-F)>
<ROUTINE ISLAND-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<STANDING>
<TELL
"on a fog-shrouded beach. Sheer cliff walls rise " <TO-N> " and south, and the dark waters of the lake stretch eastward.|
|
To the west stands a magnificent " D ,CASTLE ", its parapets rising high into the mist. Golden light streams invitingly through the open " D ,ENTRANCE ". "
,YOU-HEAR "friendly voices and music inside." CR>)>>
<ROUTINE ENTER-THRONE-ROOM ()
<COND (<ZERO? ,KING-SCRIPT>
<SETG ANGER 4>
<ENABLE <QUEUE I-KING-BLAB -1>>)>
<RETURN ,THRONE-ROOM>>
"*** THRONE ROOM ***"
<OBJECT THRONE-ROOM
(IN ROOMS)
(DESC "Throne Room")
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)
(GLOBAL CASTLE ISLE)
(NORTH PER PLATS-BLOCK)
(EAST PER EXIT-THRONE-ROOM)
(SOUTH PER PLATS-BLOCK)
(WEST PER PLATS-BLOCK)
(OUT PER EXIT-THRONE-ROOM)
(ACTION THRONE-ROOM-F)>
<ROUTINE PLATS-BLOCK ()
<THIS-IS-IT ,CROWD>
<SAY-THE ,CROWD>
<TELL " blocks your path." CR>
<RFALSE>>
<ROUTINE EXIT-THRONE-ROOM ()
<COND (<AND <ENABLED? ,I-KING-BLAB>
<L? ,KING-SCRIPT 4>>
<TELL "\"Wait!\" cries the white " D ,PLATYPUS ". \"">
<COND (<EQUAL? <LOC ,HAT> ,KING ,THRONE-ROOM>
<TELL "You forgot the " D ,HAT>)
(T
<TELL "I wish to speak with you">)>
<TELL "!\"" CR CR>)>
<RETURN ,ISLAND>>
<ROUTINE THRONE-ROOM-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<THIS-IS-IT ,CROWD>
<THIS-IS-IT ,KING>
<THIS-IS-IT ,PRINCESS>
<STANDING>
<TELL
"in a long, high-ceilinged chamber. Hundreds of " D ,PLATYPUS "es are ">
<COND (<G? ,KING-SCRIPT 1>
<TELL "watching you respectfully">)
(T
<TELL "milling about with teacups in their paws">)>
<TELL
", their faces illuminated by a roaring fireplace.|
|
At the far end of the chamber stands a mighty throne. It's occupied by a snow-white " D ,PLATYPUS " with a gold crown on its head and a jeweled scepter in its paw. On the floor near the throne is another crowned " D ,PLATYPUS
"... the same one you rescued from the pit." CR>)>>
<GLOBAL ADVENTURER ", brave Adventurer">
<GLOBAL KING-SCRIPT 0>
<ROUTINE I-KING-BLAB ()
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<EQUAL? ,HERE ,THRONE-ROOM>
<CRLF>
<COND (<IN? ,HAT ,KING>
<SETG ANGER <- ,ANGER 1>>
<COND (<ZERO? ,ANGER>
<KING-ANNOYED>)
(T
<TELL "\"" <PICK-ONE ,KING-OFFERS>
",\" says " D ,KING ", holding it out to you." CR>)>
<RTRUE>)>
<SETG KING-SCRIPT <+ ,KING-SCRIPT 1>>
<COND (<EQUAL? ,KING-SCRIPT 1>
<SAY-THE ,CROWD>
<TELL " falls silent as you enter.|
|
\"Welcome" ,ADVENTURER ",\" says the white " D ,PLATYPUS ", rising from its throne to greet you. \"I am Anatinus, King of " D ,ISLAND ". My court thanks you most humbly for rescuing the life of my daughter, " D ,PRINCESS ". Great would our sorrow have been if not for your cunning.\"|
|
The " D ,CROWD " applauds politely, and " D ,PRINCESS " blushes." CR>)
(<EQUAL? ,KING-SCRIPT 2>
<THIS-IS-IT ,HAT>
<MOVE ,HAT ,KING>
<TELL
"\"My messengers have told me of your quest,\" continues " D ,KING ". \"Allow me to repay your kindness with words of advice.\"|
|
The old " D ,PLATYPUS " motions you to his side. \"The Tower of" ,EONE
" is formidable,\" he begins in a low, serious voice. \"You will never get inside unaided. Legends speak of a Magick Word that can open the gates of the Tower. But what Word it is, none can say.\"|
|
The king reaches beneath his throne and takes out a small " D ,HAT ". \"Take this,\" he says, holding it out to you." CR>)
(<EQUAL? ,KING-SCRIPT 3>
<TELL
"\"Take it to the sea,\" " D ,KING " whispers as you turn the hat in "
D ,HANDS "s. \"There you will find a creature learned in the lore of Magick. Heed him well! In his wisdom lies your only hope.\"" CR>)
(<EQUAL? ,KING-SCRIPT 4>
<SETG ANGER 4>
<SETG RETURN-FROM-ISLAND? T>
<THIS-IS-IT ,WHISTLE>
<TELL
"A fanfare of trumpets breaks the silence, and the " D ,CROWD
" falls to its knees." CR CR>
<REAPPEARS>
<TELL "\"Good luck to you" ,ADVENTURER "!\" cries "
D ,KING ", bowing deeply. \"Now blow into the " D ,WHISTLE " one more time, and deliver us from the horror of" ,EONE ".\"|
|
The " D ,PLATYPUS "es look at you expectantly." CR>)
(T
<REAPPEARS>
<SETG ANGER <- ,ANGER 1>>
<COND (<ZERO? ,ANGER>
<KING-ANNOYED T>)
(T
<TELL "\"" <PICK-ONE ,SCRAMS>
",\" says " D ,KING "." CR>)>)>)>>
<GLOBAL KING-OFFERS
<LTABLE 0
"Take this Hat"
"This Hat is for you. Take it"
"I offer you this Hat">>
<GLOBAL SCRAMS
<LTABLE 0
"Blow into the whistle, and your quest will continue"
"You need only blow into the whistle"
"The merest blow into the whistle will speed you on your quest">>
<ROUTINE REAPPEARS ("AUX" (THING <>))
<COND (<NOT <HELD? ,WHISTLE>>
<SET THING ,WHISTLE>)
(<NOT <HELD? ,HAT>>
<SET THING ,HAT>)>
<COND (.THING
<MOVE .THING ,PROTAGONIST>
<SAY-THE .THING>
<TELL " magically reappears in " D ,HANDS "." CR CR>)>>
<ROUTINE KING-ANNOYED ("OPTIONAL" (BLOW? <>))
<SAY-THE ,KING>
<TELL " glares at you with annoyance.|
|
\"You dare to ignore a royal ">
<COND (.BLOW?
<TELL "command">)
(T
<TELL "gift">)>
<TELL "?\" he cries, deeply offended. \"I see. Perhaps a short visit to the granola mines will teach you some respect!\"|
|
The King turns you into a " D ,PLATYPUS " with an angry wave of his scepter, and the guards lead you away to twenty years of backbreaking labor.">
<BAD-ENDING>>
<OBJECT HAT
(DESC "wizard's hat")
(SYNONYM HAT)
(ADJECTIVE WIZARD)
(FLAGS TAKEBIT ; CONTBIT WEARBIT RMUNGBIT READBIT)
(SIZE 5)
(CAPACITY 5)
(VALUE 1)
(ACTION HAT-F)>
; "RMUNGBIT = player has not yet looked inside hat"
<ROUTINE HAT-F ("AUX" TEMP)
<COND (<VERB? EXAMINE LOOK-ON READ>
<SAY-THE ,HAT>
<TELL " is decorated with foil stars and cheap glitter." CR>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-DOWN>
<COND (<DONT-HAVE? ,HAT>
<RTRUE>)>
<FCLEAR ,HAT ,RMUNGBIT>
<TELL "Weird! It's like peering into an endless well." CR>
<RTRUE>)
(<AND <VERB? TAKE>
<IN? ,HAT ,PELICAN>>
<SAY-THE ,PELICAN>
<TELL " would rather you didn't." CR>
<RTRUE>)
(<VERB? WEAR>
<TOO-LARGE ,HAT T>
<RTRUE>)
(<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,HAT>>
<COND (<DONT-HAVE? ,HAT>
<RTRUE>)
(<EQUAL? ,PRSO ,HAT>
<WHAT-A-CONCEPT>
<RTRUE>)
(<EQUAL? ,PRSO ,HANDS>
<TELL "You feel " D ,HANDS " tingling." CR>
<RTRUE>)>
<SET TEMP <GETP ,PRSO ,P?SIZE>>
<COND (<G? .TEMP 5>
<TOO-LARGE ,PRSO>)
(<FSET? ,HAT ,RMUNGBIT>
<TELL
"Maybe you should look inside the " D ,HAT " first." CR>)
(T
<SAY-SURE>
<TELL "put ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " into the " D ,HAT "?">
<COND (<YES?>
<SET TEMP <+ .TEMP <GETP ,DCASE ,P?CAPACITY>>>
<PUTP ,DCASE ,P?CAPACITY .TEMP>
<MOVE ,PRSO ,DCASE>
<SAY-THE ,PRSO>
<TELL " disappears into the " D ,HAT>
<NO-TRACE>)
(T
<TELL ,OKAY "you're still holding ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO "." CR>)>)>
<RTRUE>)
(<VERB? REACH-IN>
<PERFORM ,V?PUT ,HANDS ,HAT>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT PRINCESS
(IN THRONE-ROOM)
(DESC "Princess Tasmania")
(SYNONYM TASMANIA PLATYPUS)
(ADJECTIVE PRINCESS)
(FLAGS NDESCBIT NARTICLEBIT ACTORBIT TRYTAKEBIT)
(ACTION PRINCESS-F)>
<GLOBAL CLAMPED? <>>
<ROUTINE PRINCESS-F ("OPTIONAL" (CONTEXT <>))
<THIS-IS-IT ,PRINCESS>
<COND (<EQUAL? ,HERE ,VESTIBULE>
<TAKE-MIND-OFF ,PRINCESS>
<RTRUE>)
(<EQUAL? ,HERE ,TORTURE-CHAMBER>
<COND (<VERB? TAKE PUSH MOVE>
<COND (,CLAMPED?
<STILL-CLAMPED>)
(T
<TELL D ,PRINCESS
" probably wouldn't enjoy being manhandled." CR>)>)
(<ASKING? ,PRINCESS>
<COND (,COAT-WORN?
<NO-TALKING>)
(T
<HAD-TIME "questions">)>
<RFATAL>)
(<VERB? TELL REPLY HELLO WAVE-AT ; GOODBYE>
<COND (,COAT-WORN?
<NO-TALKING>)
(T
<HAD-TIME "conversation">)>
<RFATAL>)
(<VERB? RESCUE UNLOCK RELEASE>
<HOW?>)
(<OR <HURT? ,PRINCESS>
<VERB? YELL KISS RUB SQUEEZE>>
<PRINTD ,PRINCESS>
<MIGHT-NOT-LIKE>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,PRINCESS>>
<COND (,COAT-WORN?
<NO-TALKING>)
(T
<TELL D ,PRINCESS
" gracefully declines your offer." CR>)>
<RTRUE>)
(<PRINCESS-SPECIFIC?>
<RTRUE>)
(T
<RFALSE>)>
<RTRUE>)
(<CROWD-F>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE STILL-CLAMPED ()
<BUT-THE ,PRINCESS>
<TELL "is still clamped into the " D ,TMACHINE "!" CR>>
<ROUTINE HAD-TIME (STR)
<TELL
"\"Would that we had time for " .STR ",\" sighs " D ,PRINCESS "." CR>>
<ROUTINE NO-TALKING ()
<TELL "\"No communication between prisoners!\" barks "
D ,CRISP "." CR>>
<ROUTINE TAKE-MIND-OFF (OBJ)
<TELL "A rumbling noise calls your attention away from ">
<ARTICLE .OBJ T>
<TELL D .OBJ "." CR>>
<ROUTINE PRINCESS-SPECIFIC? ()
<COND (<VERB? EXAMINE>
<TELL "Not unexpectedly, ">
<COND (<AND <EQUAL? ,PRSO ,PRINCESS>
,CLAMPED?>
<TELL "the Princess clamped into the " D ,TMACHINE>)
(T
<ARTICLE ,PRSO T>
<PRINTD ,PRSO>)>
<TELL " is arrayed in high " D ,PLATYPUS
" fashion." CR>
<RTRUE>)
(<VERB? LISTEN BOW>
<TELL "Graciously, ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " acknowledges your respectful attention." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT KING
(IN THRONE-ROOM)
(DESC "King Anatinus")
(SYNONYM ANATINUS PLATYPUS)
(ADJECTIVE KING OLD WHITE)
(FLAGS NDESCBIT NARTICLEBIT ACTORBIT)
(ACTION CROWD-F)>
<OBJECT CROWD
(IN THRONE-ROOM)
(DESC "crowd")
(SYNONYM CROWD ; PLATYPUS)
(FLAGS NDESCBIT ACTORBIT)
(ACTION CROWD-F)>
<ROUTINE CROWD-F ("OPTIONAL" (CONTEXT <>))
<COND (<PRINCESS-SPECIFIC?>
<RTRUE>)
(<TALKING-TO? ,PRSO>
<TELL D ,KING " interrupts you gently. \"There's little time for chit-chat.\"" CR>
<RFATAL>)
(<OR <HURT? ,PRSO>
<VERB? YELL KISS>>
<NOT-LIKELY ,KING "would approve">
<RTRUE>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,PRINCESS ,KING ,CROWD>>
<TELL "With reluctant dignity, ">
<ARTICLE ,PRSI T>
<TELL D ,PRSI " refuses your offer." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT CASTLE
(IN LOCAL-GLOBALS)
(DESC "castle")
(SYNONYM CASTLE PALACE BUILDING ENTRANCE)
(FLAGS NDESCBIT)
(ACTION CASTLE-F)>
<ROUTINE CASTLE-F ()
<COND (<ENTER-FROM? ,ISLAND ,THRONE-ROOM ,CASTLE>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,THRONE-ROOM>
<V-LOOK>)
(T
<GO-INSIDE>)>
<RTRUE>)
(T
<YOU-DONT-NEED ,CASTLE>
<RFATAL>)>>
<OBJECT CASTLE-JUNK
(IN THRONE-ROOM)
(DESC "that")
(SYNONYM THRONE CHEST SCEPTER FIREPLACE)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION CASTLE-JUNK-F)>
<ROUTINE CASTLE-JUNK-F ()
<COND (<SEE-VERB?>
<TELL ,YOU-SEE "nothing " <PICK-ONE ,YAWNS>
" about it." CR>
<RTRUE>)
(T
<YOU-DONT-NEED "things in the castle" T>
<RFATAL>)>>

17
j2.chart Normal file
View File

@ -0,0 +1,17 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
7/22 69 129104 22604 253 235 1043
7/22 69 128928 22600 253 233 1043
7/22 69 128932 22600 253 233 1043
7/22 69 128932 22600 253 233 1043
7/22 69 128872 22598 253 232 1043
7/22 69 128876 22598 253 232 1043
7/22 69 128878 22598 253 232 1043
8/27 70 128884 22601 253 232 1043
9/17 -1 128904 22601 253 232 1043
9/17 69 128904 22601 253 232 1043
9/20 69 128904 22601 253 232 1043
9/20 70 128816 22601 253 232 1043
9/20 69 128816 22601 253 232 1043
5/23 70 139040 22043 253 231 1045
5/24 70 139040 22043 253 231 1045
6/09 70 127980 22555 253 231 1045

91
j2.errors Normal file
View File

@ -0,0 +1,91 @@
Assembling J2.XZAP.1 on Thursday, June 9, 1988 16:10:47
Release(last was 70): 70
0 Inserting J2FREQ.ZAP.4 (554 bytes)
618 Inserting J2DAT.ZAP.1 (21937 bytes)
22555 Inserting MISC.ZAP.3 (1626 bytes)
24181 Inserting PARSER.ZAP.3 (11820 bytes)
36001 Inserting GLOBALS.ZAP.3 (4087 bytes)
40088 Inserting SYNTAX.ZAP.1 (0 bytes)
40088 Inserting VERBS.ZAP.3 (8871 bytes)
48959 Inserting PEOPLE.ZAP.4 (10770 bytes)
59729 Inserting SOUTH.ZAP.3 (4495 bytes)
64224 Inserting CENTER.ZAP.3 (14636 bytes)
78860 Inserting WEST.ZAP.3 (3848 bytes)
82708 Inserting EAST.ZAP.3 (4497 bytes)
87205 Inserting NORTH.ZAP.3 (897 bytes)
88102 Inserting BRIDGE.ZAP.3 (3739 bytes)
91841 Inserting FOG.ZAP.3 (964 bytes)
92805 Inserting SHOPPE.ZAP.3 (5546 bytes)
98351 Inserting CEMETERY.ZAP.3 (3773 bytes)
102124 Inserting UNDER.ZAP.3 (3046 bytes)
105170 Inserting TOWER.ZAP.3 (7163 bytes)
112333 Inserting ISLAND.ZAP.3 (3262 bytes)
115595 Inserting BOXES.ZAP.3 (4159 bytes)
119754 Inserting MAGICK.ZAP.2 (3581 bytes)
123335 Inserting J2STR.ZAP.1 (4645 bytes)
QUEUED? global undefined: 121906
GVAL global undefined: 120247
PT?402 global undefined: 10802
PT?302 global undefined: 10800
PT?202 global undefined: 10798
PT?102 global undefined: 10796
PT?106 global undefined: 1068
PT?113 global undefined: 1044
PT?2602 global undefined: 966
PT?502 global undefined: 892
PT?110 global undefined: 726
PT?619 global undefined: 710
PT?210 global undefined: 684
PT?2502 global undefined: 644
Symbols unused:
ZORKID
FLAGS
STR?255
STR?254
STR?253
STR?252
STR?251
STR?250
STR?229
STR?228
STR?227
STR?226
STR?225
STR?224
STR?223
STR?213
STR?212
STR?211
STR?210
STR?209
STR?146
STR?145
STR?144
STR?27
STR?26
STR?25
STR?24
STR?23
STR?22
STR?21
STR?14
STR?13
STR?12
STR?11
STR?10
STR?9
STR?8
253 objects.
231 globals.
1045 word vocabulary.
127980 bytes (125K).
22555 bytes of preload.
11712 bytes of impure.
Outputting symbol tables

1233
j2.record Normal file

File diff suppressed because it is too large Load Diff

1
j2.serial Normal file
View File

@ -0,0 +1 @@
10

3449
j2.temp Normal file

File diff suppressed because it is too large Load Diff

134
j2.txt Normal file
View File

@ -0,0 +1,134 @@
Junior-Level Adventure #2
Working Title: DEVILSTONE
Market and Audience
DEVILSTONE is an easy-to-play introduction to interactive fantasies like
ZORK. Its goal is to familiarize novices with the conventions and
traditions of the genre. Text, plot and puzzles will be geared to the
comprehension of a bright sixth-grader.
Plot Synopsis
You're an apprentice postal clerk in the sleepy village of Frobton. As
another eventless afternoon draws to an end, your boss Mr. Blather hands
you a special delivery envelope addressed to Ye Olde Magick Shoppe, a
little-visited establishment on the far side of town. You obediently
hop onto your bicycle and pedal through the friendly streets, where you
are greeted by old neighbors and ritually chased by a poodle. After
passing Hoople's Drug Store, the Palace Theater, the Park and other
familiar landmarks, you cross the little creek at the edge of town and
climb the steep hill up to the Magick Shoppe.
The Shoppe is a fascinating place full of strange machines, forbidden
books and fake ice cubes, all presided over by a sad old woman. She's
mourning the loss of her beloved pet cat, which disappeared under
mysterious circumstances a few nights ago. The letter you are
delivering turns out to be a ransom note:
"Bring the one true Devilstone to me before the moon sets, or you will
never see your cat again!"
or words of similar ilk, signed by a dangerous-sounding witch.
The bereaved woman vows never to surrender the Devilstone to anyone, cat
or no cat, and somehow manages to recruit you for a rescue mission. Your
only defense against the Evil Witch is to be the Devilstone itself, an
ordinary-looking pebble said to possess considerable Magick power when
used according to the instructions provided.
Upon leaving the Shoppe, you discover that the entire town of Frobton
has been skewed into some kind of alternative reality. All the
landmarks and faces have taken on a sinister, larger-than-life aspect:
-- The little creek that used to run around the outskirts is now a dark,
raging river. There's only one bridge, and that is guarded by a
creature which less original scenarios would refer to as a Troll.
-- The poodle that used to chase your bicycle has evolved into a
Hellhound. Its appetite for bicylists is unaffected. Good thing your
bike changed into a broomstick.
-- The little park in the center of town has become a dense forest full
of wild beasts, quicksand and other inconveniences. But it's better
than walking the streets, which are patrolled by the Witch's Goon Squad.
-- Mr. Hoople's Drug Store and Ice Cream Parlor is now a swarmy tavern
full of ne'er-do-wells, misfits and troublemakers like yourself. You
can buy supplies here that may prove useful in your quest. But don't
expect much sympathy from Mr. Hoople, who is a spy for the Evil Witch.
-- The Palace Theater appears to be running a propaganda film called THE
WITCH IS WATCHING. A better title might be WATCHING THE WITCH, because
what you see on the screen corresponds to what the Witch is actually
doing at that moment -- a good thing to know if you're trying to avoid
her.
-- The Post Office you used to work in is now the fortresslike lair of
the Witch. Those unfortunate enough to visit the witch's Dungeon will
notice that the Chief Torturer bears a remarkable resemblance to Mr.
Blather.
Your mission, should you choose to accept it, is to rescue the poor
little kitty cat without being turned into a furry toilet seat cover or
a Commodore 64.
Spellcrafting
Unlike ZORK IV and V, it takes more than a magic word to make the
Devilstone do its thing. Each of the dozen or so available spells
requires the player to locate some object or solve a puzzle before the
miracle can be invoked. Some silly examples:
-- To "Fly," you must find a feather and wear it in your hair.
-- To "Walk Across Water," you must put white sand in your shoes.
-- To "See Through Walls," you must be holding a lighted candle.
The props you need for each spell are "spelled out" in the Devilstone
instruction card provided with the game (see below).
Other possibilities include:
-- Spells can be used only a few times, or once.
-- Using the Devilstone helps the Evil Witch find out where you are (a
"lighthouse" effect a la Tolkien). This implies that it should be
possible to solve any problem without using the Stone, thereby rewarding
clever players with less interference from the Witch.
-- A "panic button" spell that works like an on-line hint service.
Characters
-- Mr. Blather. He has two cameos, first as your boss at the post
office and later as a torturer in the witch's Dungeon.
-- The Woman in the Magick Shoppe. She sounds and acts like a feeble
old lady, but is sharp enough to get you to do her dirty work. Like the
other characters in DEVILSTONE, she talks a lot but doesn't move around
much, if at all.
-- Various Townspeople. Amiable enough in Frobton, their New Frobton
counterparts greet you with warnings, sneers and sharp farming tools.
Some of them are employed by the Evil Witch as spies and/or goons.
-- The Evil Witch (to be named later). Impervious to water and falling
houses.
Package Ideas
-- A small white pebble.
-- Instructions for using the Devilstone. Instead of a booklet, it
might be more fun to design a cardboard slide-rule device that lets you
"dial up" the combination of objects you need to invoke a spell.
-- A sealed special-delivery letter containing the ransom note.
-- Two maps, one for each "version" of Frobton. It might be possible to
use a single map with a clever transparent overlay or something.

25
j2.xzap Normal file
View File

@ -0,0 +1,25 @@
.TIME
.INSERT "J2FREQ"
.INSERT "J2DAT"
.INSERT "MISC"
.INSERT "PARSER"
.INSERT "GLOBALS"
.INSERT "SYNTAX"
.INSERT "VERBS"
.INSERT "PEOPLE"
.INSERT "SOUTH"
.INSERT "CENTER"
.INSERT "WEST"
.INSERT "EAST"
.INSERT "NORTH"
.INSERT "BRIDGE"
.INSERT "FOG"
.INSERT "SHOPPE"
.INSERT "CEMETERY"
.INSERT "UNDER"
.INSERT "TOWER"
.INSERT "ISLAND"
.INSERT "BOXES"
.INSERT "MAGICK"
.INSERT "J2STR"
.END

49
j2.zil Normal file
View File

@ -0,0 +1,49 @@
"J2 for WISHBRINGER: (C)1985 Infocom, Inc. All Rights Reserved."
<PRINC "
WISHBRINGER: The Magick Stone of Dreams
">
ON!-INITIAL
OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<VERSION ZIP>
<SET REDEFINE T>
; <GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<COND (<GASSIGNED? PREDGEN>
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)>
<INSERT-FILE "MISC" T>
<INSERT-FILE "PARSER" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "PEOPLE" T>
<INSERT-FILE "SOUTH" T>
<INSERT-FILE "CENTER" T>
<INSERT-FILE "WEST" T>
<INSERT-FILE "EAST" T>
<INSERT-FILE "NORTH" T>
<INSERT-FILE "BRIDGE" T>
<INSERT-FILE "FOG" T>
<INSERT-FILE "SHOPPE" T>
<INSERT-FILE "CEMETERY" T>
<INSERT-FILE "UNDER" T>
<INSERT-FILE "TOWER" T>
<INSERT-FILE "ISLAND" T>
<INSERT-FILE "BOXES" T>
<INSERT-FILE "MAGICK" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>

BIN
j2.zip Normal file

Binary file not shown.

599
magick.zil Normal file
View File

@ -0,0 +1,599 @@
"MAGICK for WISHBRINGER:
Copyright (C)1985 Infocom, Inc. All rights reserved.
Reconstructed from .ZAP files 5/23/88 by Prof."
<OBJECT WISHBRINGER
(DESC "small stone")
(FLAGS TOOLBIT RMUNGBIT TAKEBIT)
(SYNONYM STONE ROCK LIGHT WISHBRINGER)
(ADJECTIVE SMALL MAGIC MAGICK GLOWING VIOLET)
(SIZE 1)
(VALUE 5)
(ACTION WISHBRINGER-F)>
<ROUTINE WISHBRINGER-F ()
<COND (<VERB? EXAMINE>
<SAY-THE ,WISHBRINGER>
<COND (<FSET? ,WISHBRINGER ,ONBIT>
<TELL " glows">
<SAY-GLOW>
<RTRUE>)>
<TELL " is dark and cold." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE SAY-GLOW ()
<TELL " with an eerie violet-white radiance." CR>
<RTRUE>>
<ROUTINE NOT-SATISFIED ("OPT" (CONDITIONS? <>))
<REFER-TO-MANUAL>
<TELL " for a summary of what you must ">
<COND (.CONDITIONS?
<TELL "do ">)
(T
<TELL "be holding ">)>
<TELL "to make that Wish come true.)" CR>
<RTRUE>>
<ROUTINE BEFORE-YOU-WISH (STR OBJ)
<THIS-IS-IT .OBJ>
<TELL "(You probably ought to " .STR " the " D .OBJ
" before you make that Wish!)" CR>
<RTRUE>>
<ROUTINE STONE-IGNORES (STR)
<TELL "The Stone, sensing that " .STR
", decides to ignore your Wish." CR>
<RTRUE>>
<ROUTINE NOT-WISHING? (OBJ)
<COND (<VERB? WISH>
<TELL "How can you do that ">
<COND (<EQUAL? .OBJ ,PRSO>
<TELL "to">)
(T
<TELL "with">)>
<TELL " an abstract concept like \"" D .OBJ "\"?" CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT FLIGHT
(LOC GLOBAL-OBJECTS)
(DESC "Flight")
(FLAGS WISHBIT NARTICLEBIT)
(SYNONYM FLIGHT)
(ACTION FLIGHT-F)>
<ROUTINE FLIGHT-F ()
<COND (<NOT-WISHING? ,FLIGHT>
<RFATAL>)
(<NOT <IN? ,BROOM ,PROTAGONIST>>
<NOT-SATISFIED>
<RFATAL>)
(<ZERO? ,BROOM-SIT?>
<BEFORE-YOU-WISH "sit on" ,BROOM>
<RFATAL>)
(<AND <FSET? ,HERE ,INDOORSBIT>
<NOT <EQUAL? ,HERE ,LABORATORY>>>
<STONE-IGNORES "you're not outdoors">
<RFATAL>)>
<FSET ,FLIGHT ,TOUCHBIT>
<FSET ,VULTURE ,RMUNGBIT>
<INC SPELLS>
<TELL
"The Stone begins to pulse with violet Magick. Translucent planes of energy coax the broomstick ">
<COND (<EQUAL? ,HERE ,LABORATORY>
<TELL "out the window and ">)>
<TELL "high into the moonlit sky.|
|
You feel a cool wind whip your face as you streak northward, guided by the steady glow of " ,GAME ".">
<TO-FINISH>
<MOVE ,BROOM ,CLIFF-EDGE>
<SETG BROOM-SIT? <>>
<CLATTERS ,BROOM>
<CRLF>
<V-LOOK>
<RTRUE>>
<OBJECT FREEDOM
(LOC GLOBAL-OBJECTS)
(DESC "Freedom")
(FLAGS WISHBIT NARTICLEBIT)
(SYNONYM FREEDOM)
(ACTION FREEDOM-F)>
<ROUTINE FREEDOM-F ("AUX" RM)
<COND (<NOT-WISHING? ,FREEDOM>
<RFATAL>)
(<HELD? ,CHOCOLATE> ;"NOT removed - GTB"
<BEFORE-YOU-WISH "eat" ,CHOCOLATE>
<RFATAL>)
(<ZERO? ,CHOCOLATE-SCRIPT>
<NOT-SATISFIED T>
<RFATAL>)
(<AND ,CHAINED?
<EQUAL? ,HERE ,TORTURE-CHAMBER>>
<SETG CHOCOLATE-SCRIPT 1>
<FSET ,FREEDOM ,TOUCHBIT>
<INC SPELLS>
<COND (<IN? ,CRISP ,TORTURE-CHAMBER>
<FSET ,WISHBRINGER ,NDESCBIT>
<MOVE ,WISHBRINGER ,COAT>
<TELL D ,CRISP " watches with surprise as a">
<FINGER-OF-LIGHT>
<TELL CR "\"Good trick,\" " D ,CRISP
" remarks as he relocks your chains, snatches " ,GAME
" away from you and drops it into his coat pocket. \"You'll have to tell "
,EONE " how you did it.\"" CR>
<RFATAL>)>
<OPEN-TORTURE-CHAINS>
<TELL "A">
<FINGER-OF-LIGHT>
<RFATAL>)
(<AND <EQUAL? ,HERE ,JAIL-CELL>
<FSET? ,HIDDEN-HATCH ,RMUNGBIT>>
<SET RM ,LOOKOUT-HILL>
<COND (<EQUAL? <LOC ,BOOTS> ,LOOKOUT-HILL ,RIVER-OUTLET>
<SET RM ,ROTARY-WEST>)>
<FREE-TO .RM>
<RFATAL>)
(T
<SETG CHOCOLATE-SCRIPT 2>
<STONE-IGNORES "you're not really confined">
<RFATAL>)>>
<ROUTINE FINGER-OF-LIGHT ()
<TELL
" wraithlike finger of light jumps out of the Magick Stone! It twists itself into the shape of a " D ,KEY ", unlocks your chains and fades away." CR>
<RTRUE>>
<ROUTINE FREE-TO (PLACE)
<FSET ,FREEDOM ,TOUCHBIT>
<FSET ,VULTURE ,RMUNGBIT>
<INC SPELLS>
<SETG CHOCOLATE-SCRIPT 1>
<MOVE ,PROTAGONIST .PLACE>
<SETG HERE .PLACE>
<FCLEAR .PLACE ,TOUCHBIT>
<TELL
"The Magick Stone shines brightly as you speak the Wish. You feel a momentary dizziness, then a breath of fresh air...">
<CARRIAGE-RETURNS>
<V-LOOK>
<RTRUE>>
<OBJECT RAIN
(LOC GLOBAL-OBJECTS)
(DESC "rain")
(FLAGS WISHBIT NARTICLEBIT)
(SYNONYM RAIN RAINWATER)
(ACTION RAIN-F)>
<GLOBAL RAIN-ROOM <>>
<ROUTINE RAIN-F ("AUX" OBJ NXT)
<COND (<VERB? WISH>
<COND (<NOT <IN? ,UMBRELLA ,PROTAGONIST>>
<NOT-SATISFIED>
<RFATAL>)
(<NOT <FSET? ,UMBRELLA ,OPENBIT>>
<BEFORE-YOU-WISH "open" ,UMBRELLA>
<RFATAL>)
(<FSET? ,HERE ,INDOORSBIT>
<STONE-IGNORES "you're not outdoors">
<RFATAL>)>
<FSET ,RAIN ,TOUCHBIT>
<FSET ,VULTURE ,RMUNGBIT>
<INC SPELLS>
<SETG RAIN-ROOM ,HERE>
<TELL
"A searing bolt of lightning shatters the night! It strikes the glowing Stone of Dreams, and fractures the sky into a billion raindrops.|
|
Everything around you is soaked in a brief but savage downpour.">
<COND (<EQUAL? ,HERE ,FOG>
<SETG HERE ,CLIFF-BOTTOM>
<MOVE ,PROTAGONIST ,CLIFF-BOTTOM>
<SETG TLOC <>>
<START-BUZZ 2>
<TELL
" Your vision clears as the thick fog sinks away.||">
<V-LOOK>
<RTRUE>)
(<EQUAL? ,HERE ,EDGE-OF-LAKE>
<SETG PIT-FULL? T>
<TELL
" A flood of rainwater cascades down Lookout Hill, quickly filling the narrow pit." CR>
<COND (<IN? ,PLATYPUS ,PIT>
<THIS-IS-IT ,PLATYPUS>
<TELL CR
"The platypus swims gracefully out and shakes herself off.||">
<DRAW-X>)>
<COND (<SET OBJ <FIRST? ,PIT>>
<REPEAT ()
<COND (<ZERO? .OBJ>
<RETURN>)>
<SET NXT <NEXT? .OBJ>>
<COND (<NOT <EQUAL? .OBJ ,BRANCH>>
<REMOVE .OBJ>)>
<SET OBJ .NXT>>)>
<RTRUE>)>
<CRLF>
<SET OBJ <REACTOR?>>
<COND (<ZERO? .OBJ>
<RTRUE>)>
<TELL CR "It's obvious that ">
<ARTICLE .OBJ T>
<TELL " did not enjoy the sudden bath." CR>
<RTRUE>)
(<OR <NOT <FSET? ,RAIN ,TOUCHBIT>>
<NOT <EQUAL? ,HERE ,RAIN-ROOM>>>
<TELL "No rain is expected">
<COND (<FSET? ,HERE ,INDOORSBIT>
<TELL ", especially indoors." CR>
<RFATAL>)>
<TELL " here." CR>
<RFATAL>)
(<AND ,PIT-FULL?
<EQUAL? ,HERE ,EDGE-OF-LAKE>>
<TELL "The only rain here is in the pit." CR>
<RFATAL>)
(T
<TELL "Alas. The rain is all gone." CR>
<RFATAL>)>>
<OBJECT FORESIGHT
(LOC GLOBAL-OBJECTS)
(DESC "Foresight")
(FLAGS WISHBIT NARTICLEBIT)
(SYNONYM FORESIGHT)
(ACTION FORESIGHT-F)>
<ROUTINE FORESIGHT-F ("AUX" FROM)
<COND (<NOT-WISHING? ,FORESIGHT>
<RFATAL>)
(<NOT <IN? ,GLASSES ,PROTAGONIST>>
<NOT-SATISFIED>
<RFATAL>)
(<NOT <FSET? ,GLASSES ,WORNBIT>>
<BEFORE-YOU-WISH "wear" ,GLASSES>
<RFATAL>)>
<FSET ,FORESIGHT ,TOUCHBIT>
<FSET ,VULTURE ,RMUNGBIT>
<INC SPELLS>
<TELL "The ">
<COND (,FUZZY?
<TELL <PICK-ONE ,BLURS> " ">)>
<COND (<FSET? ,HERE ,INDOORSBIT>
<TELL "room around you">)
(T
<TELL "moonlight">)>
<TELL " fades as you speak the Wish.">
<SET FROM ,HERE>
<SETG HERE ,MUSEUM>
<CARRIAGE-RETURNS>
<USL>
<TELL
"A pinprick of brilliance pierces the gloom. It creeps closer, growing more powerful and unearthly as it approaches.|
|
The light is shining from the forehead of a " D ,KITTY
"! It leaps into your arms and curls comfortably around your neck, purring like an old companion.|
|
Suddenly a pair of gnarled hands closes around the " D ,KITTY
" and tears it away from you. The glowing spot on the cat's forehead drops into your open palm as the thief disappears with a cackle into the " D ,DARKNESS
".|
|
An aged voice in your mind chuckles, ">
<LIAR>
<TELL ".\"">
<CARRIAGE-RETURNS>
<SETG HERE .FROM>
<COND (<ZERO? ,FUZZY>
<SET FROM <ANYONE-HERE?>>
<COND (<NOT <EQUAL? .FROM <> ,KITTY ,BABY>>
; <TELL " ">
<COND (<FSET? .FROM ,NARTICLEBIT>
<TELL "The ">)>
<STRANGE-LOOK .FROM>
<CRLF>)>)>
<RFATAL>>
<ROUTINE LIAR ()
<TELL "\"Now you know me for the old liar I am">
<RTRUE>>
<ROUTINE STRANGE-LOOK (WHO)
<TELL D .WHO " gives you a strange look." CR>
<RTRUE>>
<OBJECT LUCK
(LOC GLOBAL-OBJECTS)
(DESC "Luck")
(FLAGS WISHBIT NARTICLEBIT)
(SYNONYM LUCK)
(ACTION LUCK-F)>
<GLOBAL LUCKY? <>>
<ROUTINE LUCK-F ()
<COND (<NOT-WISHING? ,LUCK>
<RFATAL>)
(<NOT <IN? ,SHOE ,PROTAGONIST>>
<NOT-SATISFIED>
<RFATAL>)>
<FSET ,LUCK ,TOUCHBIT>
<FSET ,VULTURE ,RMUNGBIT>
<INC SPELLS>
<SETG LUCKY? T>
<FSET ,SHOE ,ONBIT>
<ENABLE <QUEUE I-LUCK -1>>
<THIS-IS-IT ,SHOE>
<TELL
"The Stone of Dreams brightens as you speak the Wish, and the edges of the "
D ,SHOE " begin to twinkle with Luck." CR>
<COND (<EQUAL? ,HERE ,FOG>
<SETG TLOC <>>
<SETG HERE ,CLIFF-BOTTOM>
<MOVE ,PROTAGONIST ,CLIFF-BOTTOM>
<WALK-OUT-OF-FOG>
<V-LOOK>)>
<RFATAL>>
<ROUTINE BAD-LUCK (STR)
<TELL CR "(It's bad luck to " .STR ".">
<COND (<ENABLED? ,I-LUCK>
<DISABLE <INT I-LUCK>>
<TELL " You've neutralized the Luck Wish!)" CR>
<I-LUCK T>
<RTRUE>)>
<TELL ")" CR>
<RTRUE>>
<OBJECT ADVICE
(LOC GLOBAL-OBJECTS)
(DESC "Advice")
(FLAGS WISHBIT NARTICLEBIT)
(SYNONYM ADVICE)
(ACTION ADVICE-F)>
<ROUTINE ADVICE-F ()
<COND (<NOT-WISHING? ,ADVICE>
<RFATAL>)
(<NOT <IN? ,CONCH-SHELL, PROTAGONIST>>
<NOT-SATISFIED>
<RFATAL>)>
<FSET ,ADVICE ,TOUCHBIT>
<FSET ,VULTURE ,RMUNGBIT>
<INC SPELLS>
<ENABLE <QUEUE I-SHELL-TALK -1>>
<TELL ,GAME " emits a violet flash of Magick." CR>
<RFATAL>>
<OBJECT DARKNESS
(LOC GLOBAL-OBJECTS)
(DESC "darkness")
(FLAGS WISHBIT NARTICLEBIT)
(SYNONYM DARKNESS DARK)
(ACTION DARKNESS-F)>
<GLOBAL DARK-PLACE <>>
<GLOBAL ECLIPSE? <>>
<ROUTINE DARKNESS-F ("AUX" (INDOORS? <>) WHO)
<COND (<VERB? WISH>
<COND (<AND <IN? ,BOTTLE ,PROTAGONIST>
<IN? ,MILK ,BOTTLE>>
<BEFORE-YOU-WISH "drink" ,MILK>
<RFATAL>)
(<ZERO? ,MILK-SCRIPT>
<NOT-SATISFIED T>
<RFATAL>)
(<NOT <FSET? ,HERE ,ONBIT>>
<STONE-IGNORES "dim enough in here already">
<RFATAL>)>
<FSET ,DARKNESS ,TOUCHBIT>
<FSET ,VULTURE ,RMUNGBIT>
<INC SPELLS>
<SETG DARK-PLACE ,HERE>
<SETG MILK-SCRIPT 1>
<ENABLE <QUEUE I-ECLIPSE 2>>
<FCLEAR ,WISHBRINGER ,ONBIT>
<FCLEAR ,SHOE ,ONBIT>
<SETG ECLIPSE? T>
<SETG MOVIE-STATUS ,NO-MOVIE?>
<SETG NO-MOVIE? T>
<COND (<FSET? ,HERE ,INDOORSBIT>
<SET INDOORS? T>)>
<SET WHO <REACTOR?>>
<TELL "The ">
<COND (.INDOORS?
<TELL "air">)
(T
<TELL "night">)>
<TELL " becomes very still as you speak the Wish. ">
<COND (<EQUAL? .WHO ,HELLHOUND ,PELICAN>
<SAY-THE .WHO>
<COND (<EQUAL? .WHO ,HELLHOUND>
<TELL " stops ">
<COND (,HELLHOUND-HAPPY?
<TELL "thumping its tail,">)
(T
<TELL "in mid-roar,">)>)>
<TELL " cocks its head and sniffs the air nervously.">)
(<EQUAL? .WHO ,TROLL ,GRAVEDIGGER>
<SAY-THE .WHO>
<FROWNS>)
(<EQUAL? .WHO ,MACGUFFIN ,CRISP ,KING>
<TELL D .WHO>
<FROWNS>)
(<EQUAL? .WHO ,MISS-VOSS ,PRINCESS ,EVIL-ONE>
<TELL D .WHO>
<FROWNS T>)
(.WHO
<TELL "You notice ">
<ARTICLE .WHO T>
<TELL " looking">
<NERVOUSLY>)>
<TELL
"||All at once a terrifying shadow sweeps across the ">
<COND (.INDOORS?
<TELL "surface of " ,GAME>)
(T
<TELL "face of the full moon">)>
<COND (<FSET? ,CANDLE ,ONBIT>
<FCLEAR ,CANDLE ,ONBIT>
<COND (<VISIBLE? ,CANDLE>
<TELL ". The candle flame withers and dies">)>)>
<TELL ", plunging the ">
<COND (.INDOORS?
<TELL "room">)
(T
<TELL "landscape">)>
<TELL " into total darkness.">
<COND (<EQUAL? .WHO ,HELLHOUND>
<TELL CR CR>
<SAY-THE ,HELLHOUND>
<TELL
"'s eyes grow wide with terror. It flops itself down on the ground, covers its eyes with its forepaws and moans pitifully">
<IN-GLOOM>)
(<EQUAL? .WHO ,TROLL>
<CRLF>
<FRIGHTEN-TROLL>)
(<EQUAL? .WHO ,GRAVEDIGGER>
<TELL "|
|
\"Who turned out the lights?!\" cries the " D ,GRAVEDIGGER
", stumbling around the pitch-black lobby in terror." CR>)
(.WHO
<TELL CR CR ,YOU-HEAR>
<ARTICLE .WHO T>
<TELL "making fearful noises">
<IN-GLOOM>)
(T
<CRLF>)>
<SETG LIT <LIT? ,HERE>>
<RTRUE>)
(<AND <EQUAL? ,PRSO ,DARKNESS>
<SEE-VERB?>>
<YOU-CANT-SEE>
<TELL "anything in darkness!" CR>
<RFATAL>)
(<OR <EQUAL? ,PRSA ,V?LISTEN ,V?YELL>
<TALKING-TO? ,DARKNESS>>
<TELL "You hear nothing." CR>
<RFATAL>)
(<NOT-WISHING? ,DARKNESS>
<RFATAL>)
(T
<RFALSE>)>>
<ROUTINE IN-GLOOM ()
<TELL " in the sudden gloom." CR>
<RTRUE>>
<ROUTINE NERVOUSLY ()
<TELL " around nervously.">
<RTRUE>>
<ROUTINE FROWNS ("OPT" (FEMALE? <>))
<TELL " frowns, blinks ">
<COND (.FEMALE?
<TELL "her">)
(T
<TELL "his">)>
<TELL " eyes and looks">
<NERVOUSLY>
<RTRUE>>
<ROUTINE REACTOR? ("AUX" WHO)
<COND (<AND <EQUAL? ,HERE ,EDGE-OF-LAKE>
<IN? ,PLATYPUS ,PIT>>
<RETURN ,PLATYPUS>)
(<EQUAL? ,HERE ,THRONE-ROOM>
<RETURN ,CROWD>)>
<SET WHO <ANYONE-HERE?>>
<COND (<EQUAL? .WHO <> ,BABY>
<RFALSE>)
(<AND <EQUAL? .WHO ,KITTY>
<FSET? ,KITTY ,RMUNGBIT>>
<RFALSE>)>
<RETURN .WHO>>
<ROUTINE I-ECLIPSE ("AUX" WHO)
<COND (,LUCKY?
<FSET ,SHOE ,ONBIT>)>
<DISABLE <INT I-ECLIPSE>>
<SETG ECLIPSE? <>>
<SETG NO-MOVIE? ,MOVIE-STATUS>
<FSET ,VULTURE ,RMUNGBIT>
<FSET ,WISHBRINGER ,ONBIT>
<TELL CR "As suddenly as it faded, the light ">
<COND (<FSET? ,HERE ,INDOORSBIT>
<COND (<VISIBLE? ,WISHBRINGER>
<TELL "from " ,GAME>)
(T
<TELL "around you">)>)
(T
<TELL "of the moon">)>
<TELL " returns">
<COND (<AND <NOT <FSET? ,CANDLE ,RMUNGBIT>>
<NOT <FSET? ,CANDLE ,ONBIT>>>
<FSET ,CANDLE ,ONBIT>
<COND (<VISIBLE? ,CANDLE>
<TELL ", and the candle flares back to life">)>)>
<TELL ".">
<SET WHO <REACTOR?>>
<COND (<EQUAL? .WHO ,HELLHOUND>
<SETG DOG-SCRIPT 0>
<TELL CR CR>
<SAY-THE ,HELLHOUND>
<TELL
" recovers from its embarrassing fear of darkness, and ">
<COND (,HELLHOUND-HAPPY?
<TELL "thumps its tail">)
(T
<TELL "snarls at you">)>
<TELL " with renewed enthusiasm.">)
(.WHO
<TELL "||With a ">
<COND (<EQUAL? .WHO ,CROWD ,HUMANOIDS>
<TELL "collective ">)>
<TELL "sigh of relief, ">
<ARTICLE .WHO T>
<TELL D .WHO " turn">
<COND (<NOT <EQUAL? .WHO ,HUMANOIDS ,BOOTS>>
<TELL "s">)>
<TELL " to look at you.">)>
<CRLF>
<SETG LIT <LIT? ,HERE>>
<COND (<NOT <EQUAL? ,HERE ,DARK-PLACE>>
<CRLF>
<V-LOOK>)>
<SETG DARK-PLACE <>>
<RTRUE>>
<OBJECT MOON
(LOC GLOBAL-OBJECTS)
(DESC "moon")
(FLAGS NDESCBIT)
(SYNONYM MOON)
(ACTION MOON-F)>
<ROUTINE MOON-F ()
<COND (<OR <ZERO? ,SKEWED?>
<FSET? ,HERE ,INDOORSBIT>>
<YOU-CANT-SEE>
<TELL "the moon right now." CR>
<RFATAL>)
(<VERB? LOOK-ON EXAMINE>
<SAY-THE ,MOON>
<COND (,ECLIPSE?
<TELL " has disappeared!" CR>
<RFATAL>)>
<TELL "'s cold light makes you shiver." CR>
<RTRUE>)
(T
<YOU-DONT-NEED ,MOON>
<RFATAL>)>>

567
misc.zil Normal file
View File

@ -0,0 +1,567 @@
"MISC for WISHBRINGER: (C)1985 Infocom, Inc. All Rights Reserved."
<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 <FORM GVAL .ATM>)>>
!.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>>)>>
<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)>>
"*** ZCODE STARTS HERE ***"
"NOTE: This object MUST be the FIRST one defined (for MOBY-FIND)!"
<OBJECT DUMMY-OBJECT>
<ROUTINE GO ()
<SETG HERE ,HILLTOP>
<SETG WINNER ,PROTAGONIST>
<SETG SCORE 15>
<SETG MOVES 0>
<ENABLE <QUEUE I-PROMPT-1 1>>
<ENABLE <QUEUE I-PROMPT-2 10>>
<ENABLE <QUEUE I-CRISP-CALLING -1>>
<ENABLE <QUEUE I-VOSS-CALLING -1>>
<ENABLE <QUEUE I-BARKING -1>>
<ENABLE <QUEUE I-BEFORE-FIVE -1>>
<RESET-THEM>
<CRLF>
<INTRO>
<TELL " Thermofax.|
|
Only your Magick sword can save you now. You swing it high, speak the Word and stand unhurt as the blade absorbs the searing dragon-breath.|
|
The reptile bellows with rage and flaps its wings to fan the fire in its belly. You are advancing, sword poised to strike, when a familiar voice shatters the daydream and stays your mighty hand..." CR>
<V-VERSION>
<CRLF>
<V-LOOK>
<SOMEBODY-CALLING>
<DO-MAIN-LOOP>
<AGAIN>>
<ROUTINE DO-MAIN-LOOP ("AUX" X)
<REPEAT ()
<SET X <MAIN-LOOP>>>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP X)
<REPEAT ()
<SET CNT 0>
<SET OBJ <>>
<SET PTBL T>
<SETG P-WON <PARSER>>
<COND (,P-WON
<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>
<PCLEAR>
<TOO-DARK>)
(T
<PCLEAR>
<TELL "(There isn't anything to ">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (<VERB? TELL>
<TELL "talk to">)
(<OR ,P-MERGED ,P-OFLAG>
<PRINTB <GET .TMP 0>>)
(T
<SET V <WORD-PRINT <GETB .TMP 2>
<GETB .TMP 3>>>)>
<TELL "!)" CR>
<SET V <>>)>)
; (<AND .PTBL <G? .NUM 1> <VERB? COMPARE>>
<SET V <PERFORM ,PRSA ,OBJECT-PAIR>>)
(T
<SET X 0>
;"<SETG P-MULT <>>
<COND (<G? .NUM 1> <SETG P-MULT T>)>"
<SET TMP 0>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
<COND (<G? .X 0>
<TELL "(The ">
<COND (<NOT <EQUAL? .X .NUM>>
<TELL "other ">)>
<TELL "object">
<COND (<NOT <EQUAL? .X 1>>
<TELL "s">)>
<TELL " that you mentioned ">
<COND (<NOT <EQUAL? .X 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>>)>
<COND (<OR <G? .NUM 1>
<EQUAL? <GET <GET ,P-ITBL ,P-NC1> 0> ,W?ALL ,W?EVERYTHING>>
<COND (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
<SET X <+ .X 1>>
<AGAIN>)
(<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
<DONT-ALL? .OBJ1 .OBJ>>
<AGAIN>)
; (<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
<VERB-ALL-TEST .OBJ1 .OBJ>>
<AGAIN>)
; (<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
<VERB? TAKE>
<OR <AND <NOT <EQUAL? <LOC .OBJ1> ,WINNER ,HERE>>
<NOT <FSET? <LOC .OBJ1> ,SURFACEBIT>>>
<NOT <OR <FSET? .OBJ1 ,TAKEBIT>
<FSET? .OBJ1 ,TRYTAKEBIT>>>>>
<AGAIN>)
; (<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
<VERB? DROP PUT GIVE PUT-ON PUT-UNDER
PUT-BEHIND THROW>
<NOT <IN? .OBJ1 ,WINNER>>
<NOT <IN? ,P-IT-OBJECT ,WINNER>>>
<AGAIN>)
(<NOT <ACCESSIBLE? .OBJ1>>
<AGAIN>)
(<EQUAL? .OBJ1 ,PROTAGONIST ; ,POCKET>
<AGAIN>)
(T
<COND (<EQUAL? .OBJ1 ,IT>
<COND (<NOT <FSET? ,P-IT-OBJECT ,NARTICLEBIT>>
<TELL "The ">)>
<PRINTD ,P-IT-OBJECT>)
(T
<COND (<NOT <FSET? .OBJ1 ,NARTICLEBIT>>
<TELL "The ">)>
<PRINTD .OBJ1>)>
<TELL ": ">)>)>
<SET TMP T>
<SETG PRSO <COND (.PTBL
.OBJ1)
(T
.OBJ)>>
<SETG PRSI <COND (.PTBL
.OBJ)
(T
.OBJ1)>>
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
<COND (<EQUAL? .V ,M-FATAL>
<RETURN>)>)>>)>
; <COND (<NOT <EQUAL? .V ,M-FATAL>>
<COND (<GAME-VERB?>
T)
(T
<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION>
,M-END>>)>)>
<COND (<GAME-VERB?>
T)
(<VERB? AGAIN>
T)
(,P-OFLAG
T)
(T
<SETG L-PRSA ,PRSA>
<SETG L-PRSO ,PRSO>
<SETG L-PRSI ,PRSI>)>
<COND (<EQUAL? .V ,M-FATAL>
<SETG P-CONT <>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<GAME-VERB?>
T)
(<AND <VERB? AGAIN>
<GAME-VERB? ,L-PRSA>>
T)
(T
<SET V <CLOCKER>>)>)>
<SETG PRSA <>>
<SETG PRSO <>>
<SETG PRSI <>>>>
<ROUTINE DONT-ALL? (O I "AUX" L)
<SET L <LOC .O>>
<COND (<EQUAL? .O .I>
<RTRUE>)
(<VERB? TAKE>
<COND (<EQUAL? .L ,PROTAGONIST ; ,WINNER>
<RTRUE>)
(<AND <NOT <FSET? .O ,TAKEBIT>>
<NOT <FSET? .O ,TRYTAKEBIT>>>
<RTRUE>)
(<EQUAL? .O ,CAN-BOTTOM>
<RTRUE>)
(.I
<COND (<NOT <EQUAL? .L .I>>
<RTRUE>)
(<SEE-INSIDE? .I>
<RFALSE>)
(T
<RTRUE>)>)
(<EQUAL? .O ,MILK ,VULTURE>
<RTRUE>)
(<EQUAL? .L ,HERE>
<RFALSE>)
(<FSET? .L ,SURFACEBIT>
<RFALSE>)
(<FSET? .L ,ACTORBIT>
<RFALSE>)
; (<SEE-INSIDE? .L>
<RFALSE>)
(T
<RTRUE>)>)
(<OR <EQUAL? ,PRSA ,V?DROP ,V?PUT ,V?PUT-ON>
<EQUAL? ,PRSA ; ,V?GIVE ; ,V?FEED ,V?THROW>>
<COND (<EQUAL? .O ,MILK ,CAN-BOTTOM>
<RTRUE>)
(<EQUAL? .L ,PROTAGONIST ,WINNER>
<RFALSE>)
(T
<RTRUE>)>)
(T
<RFALSE>)>>
<ROUTINE ENABLED? (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-ENABLED?>> <RFALSE>)
(T <RTRUE>)>)>
<SET C <REST .C ,C-INTLEN>>>>
<ROUTINE GAME-VERB? ("OPTIONAL" (V <>))
<COND (<NOT .V>
<SET V ,PRSA>)>
<COND (<OR <EQUAL? .V ,V?BRIEF ,V?SCORE ,V?VERBOSE>
<EQUAL? .V ,V?QUIT ,V?RESTART ,V?RESTORE>
<EQUAL? .V ,V?SAVE ,V?SCRIPT ,V?SUPER-BRIEF>
<EQUAL? .V ,V?TELL ,V?UNSCRIPT ,V?VERSION>
<EQUAL? .V ,V?TIME ; ,V?INVENTORY>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE SPOKEN-TO (WHO)
<PCLEAR>
<TELL "(spoken to ">
<ARTICLE .WHO T>
<TELL D .WHO ")" CR>>
<ROUTINE ACCESSIBLE? (OBJ)
<COND (<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
(<EQUAL? <META-LOC .OBJ> ,WINNER ,HERE ,GLOBAL-OBJECTS>
<RTRUE>)
(<VISIBLE? .OBJ>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE VISIBLE? (OBJ "AUX" L)
<SET L <LOC .OBJ>>
<COND (<NOT .L>
<RFALSE>)
(<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
(<EQUAL? .L ,GLOBAL-OBJECTS>
<RFALSE>)
(<EQUAL? .L ,PROTAGONIST ,HERE ,WINNER>
<RTRUE>)
(<AND <EQUAL? .L ,LOCAL-GLOBALS>
<GLOBAL-IN? .OBJ ,HERE>>
<RTRUE>)
(<AND <SEE-INSIDE? .L>
<VISIBLE? .L>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE SEE-INSIDE? (CONTAINER)
<COND (<FSET? .CONTAINER ,SURFACEBIT>
<RTRUE>)
(<FSET? .CONTAINER ,CONTBIT>
<COND (<OR <FSET? .CONTAINER ,OPENBIT>
<FSET? .CONTAINER ,TRANSBIT>>
<RTRUE>)
(T
<RFALSE>)>)
(<AND <FSET? .CONTAINER ,ACTORBIT>
<NOT <EQUAL? .CONTAINER ,PROTAGONIST>>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE META-LOC (OBJ)
<REPEAT ()
<COND (<NOT .OBJ>
<RFALSE>)
(<IN? .OBJ ,GLOBAL-OBJECTS>
<RETURN ,GLOBAL-OBJECTS>)
(<IN? .OBJ ,ROOMS>
<RETURN .OBJ>)
(<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
(T
<SET OBJ <LOC .OBJ>>)>>>
<CONSTANT C-TABLELEN 330>
<GLOBAL C-TABLE <ITABLE NONE 330>>
<GLOBAL C-DEMONS 330>
<GLOBAL C-INTS 330>
<CONSTANT C-INTLEN 6>
<CONSTANT C-ENABLED? 0>
<CONSTANT C-TICK 1>
<CONSTANT C-RTN 2>
<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 (<EQUAL? .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 I 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>>
; "The following clause forces I-ECLIPSE to be
executed before any other pending interrupts"
<COND (,ECLIPSE?
<SET I <INT I-ECLIPSE>>
<COND (<AND <NOT <ZERO? <GET .I ,C-ENABLED?>>>
<L? <GET .I ,C-TICK> 2>>
<APPLY <GET .I ,C-RTN>>)>)>
<REPEAT ()
<COND (<EQUAL? .C .E>
<COND (<OR <NOT <EQUAL? ,HERE ,INSIDE-SHOPPE>>
<FSET? ,CLOCK ,RMUNGBIT>>
<SETG GMOVES <+ ,GMOVES 1>>
<SETG MOVES <+ ,MOVES 1>>
<COND (<G? ,MOVES 59>
<SETG MOVES 0>
<SETG SCORE <+ ,SCORE 1>>
<COND (<G? ,SCORE 23>
<SETG SCORE 0>)>)>)>
<RETURN .FLG>)
(<NOT <ZERO? <GET .C ,C-ENABLED?>>>
<SET TICK <GET .C ,C-TICK>>
<COND (<ZERO? .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>>>>
<ROUTINE CARRIAGE-RETURNS ("AUX" (CNT 22))
<RESET-THEM>
<REPEAT ()
<CRLF>
<SET CNT <- .CNT 1>>
<COND (<ZERO? .CNT>
<RTRUE>)>>>
<ROUTINE RESET-THEM ()
<PCLEAR>
<SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
<SETG P-HIM-OBJECT ,NOT-HERE-OBJECT>
<SETG P-HER-OBJECT ,NOT-HERE-OBJECT>
<SETG P-THEM-OBJECT ,NOT-HERE-OBJECT>>
<ROUTINE PCLEAR ()
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>>

BIN
nj2.zip Normal file

Binary file not shown.

201
north.zil Normal file
View File

@ -0,0 +1,201 @@
"NORTH for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** WEST OF HOUSE ***"
<OBJECT WEST-OF-HOUSE
(IN ROOMS)
(DESC "West of House")
(LDESC
"You are standing in an open field west of a white house, with a boarded front door.")
(FLAGS ONBIT RLANDBIT)
(GLOBAL TREE TRAIL)
(NORTH PER BACK-TO-ROCKY-PATH)
(SOUTH PER UNWILLING-TO-MOVE)
(EAST PER BOARDS-ARE-SECURE)
(WEST PER UNWILLING-TO-MOVE)
(IN PER BOARDS-ARE-SECURE)>
<ROUTINE BACK-TO-ROCKY-PATH ()
<COND (<ENABLED? ,I-WAKE-SMALL-BOX>
<TELL "The spectacle of the " D ,SMALL-BOX
" has you frozen in your tracks." CR>
<RFALSE>)
(T
<TELL "As the house disappears into the distance, you get the distinct feeling that, someday, you will pass this way again.">
<CARRIAGE-RETURNS>
<RETURN ,ROCKY-PATH>)>>
<ROUTINE BOARDS-ARE-SECURE ()
<SAY-THE ,HOUSE-DOOR>
<TELL " is securely closed." CR>
<RFALSE>>
<OBJECT WHITE-HOUSE
(IN WEST-OF-HOUSE)
(DESC "house")
(SYNONYM HOUSE)
(ADJECTIVE WHITE)
(FLAGS NDESCBIT)
(ACTION WHITE-HOUSE-F)>
<ROUTINE WHITE-HOUSE-F ()
<COND (<VERB? EXAMINE>
<TELL
"This place has seen better days. Its stately colonial architecture reflects the taste and wealth of its builders. But eons of trespassing by thoughtless adventurers have left the once noble edifice in ruins." CR>
<RTRUE>)
(<VERB? LOOK-INSIDE OPEN MUNG THROUGH ENTER>
<BOARDS-ARE-SECURE>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT HOUSE-DOOR
(IN WEST-OF-HOUSE)
(DESC "front door")
(SYNONYM DOOR ENTRANCE ENTRY BOARDS)
(ADJECTIVE FRONT BOARDED)
(FLAGS NDESCBIT DOORBIT)
(ACTION HOUSE-DOOR-F)>
<ROUTINE HOUSE-DOOR-F ()
<COND (<OR <HURT? ,HOUSE-DOOR>
<VERB? OPEN>>
<BOARDS-ARE-SECURE>
<RTRUE>)
(<USE-DOOR? ,WEST-OF-HOUSE>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT LEAFLET
(IN SMALL-BOX)
(DESC "leaflet")
(SYNONYM LEAFLET MAIL ADVERT AD)
(ADJECTIVE JUNK-MAIL CANCEL JUNK STAMPED STAMP)
(FLAGS TAKEBIT READBIT)
(ACTION LEAFLET-F)
(VALUE 0)
(SIZE 1)>
<ROUTINE LEAFLET-F ()
<COND (<VERB? READ LOOK-ON EXAMINE>
<COND (<IN? ,LEAFLET ,PROTAGONIST>
<TELL "It seems to be a junk-mail ad for a primitive computer game. The cancelled stamp on the " D ,LEAFLET>
<TOO-FADED>)
(T
<YOUD-HAVE-TO "be holding" ,LEAFLET>)>
<RTRUE>)
(<HURT? ,LEAFLET>
<RUIN ,LEAFLET>
<RTRUE>)
(T
<RFALSE>)>>
"*** ROCKY PATH ***"
<OBJECT ROCKY-PATH
(IN ROOMS)
(DESC "Rocky Path")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL RIVER TREE TRAIL)
(NORTH PER PROBABLY-DROWN)
(EAST TO FESTERON-POINT)
(SOUTH PER ENTER-HOUSE?)
(WEST TO SOUTH-OF-BRIDGE)
(ACTION ROCKY-PATH-F)
(PSEUDO "FOREST" FOREST-PSEUDO "WOODS" FOREST-PSEUDO)>
<ROUTINE FOREST-PSEUDO ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<TELL "It's ">
<COND (<NOT ,HOUSE-VISITED?>
<TELL "almost ">)>
<TELL "impenetrable." CR>
<RTRUE>)
(<VERB? ENTER THROUGH WALK-TO>
<DO-WALK ,P?SOUTH>
<RTRUE>)
(T
<YOU-DONT-NEED "forest" T>
<RFATAL>)>>
<GLOBAL HOUSE-VISITED? <>>
<ROUTINE ROCKY-PATH-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "You're on a rocky path that runs east and west along the banks of the">
<WHICH-TOWN "River">
<TELL ". A ">
<COND (<AND ,SKEWED?
<NOT ,HOUSE-VISITED?>>
<TELL
"shimmering " D ,TRAIL " leads south into a dense forest">)
(T
<TELL
"dense, impenetrable forest borders the south edge of the path">)>
<TELL "." CR>)>>
<ROUTINE ENTER-HOUSE? ()
<COND (<AND ,SKEWED?
<NOT ,HOUSE-VISITED?>>
<TELL
"As you walk along the shimmering " D ,TRAIL " you feel a vague sense of disorientation, then a shock of recognition...">
<CARRIAGE-RETURNS>
<RETURN ,WEST-OF-HOUSE>)
(T
<TELL ,CANT " enter an impenetrable forest." CR>
<RFALSE>)>>
"*** SOUTH OF BRIDGE ***"
<OBJECT RIVER
(IN LOCAL-GLOBALS)
(DESC "river")
(SYNONYM RIVER WATER)
(ADJECTIVE FESTERON WITCHVILLE)
(FLAGS NDESCBIT TRYTAKEBIT CONTBIT OPENBIT)
(ACTION RIVER-F)>
<ROUTINE RIVER-F ()
<COND (<VERB? EXAMINE>
<TELL "The current looks swift and ">
<COND (,SKEWED?
<TELL "murky">)
(T
<TELL "clean">)>
<TELL "." CR>
<RTRUE>)
(<VERB? CROSS>
<COND (<EQUAL? ,HERE ,SOUTH-OF-BRIDGE>
<DO-WALK ,P?NORTH>)
(<EQUAL? ,HERE ,NORTH-OF-BRIDGE>
<DO-WALK ,P?SOUTH>)
(T
<V-WALK-AROUND>)>
<RTRUE>)
(<HANDLE-WATER?>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT SOUTH-OF-BRIDGE
(IN ROOMS)
(DESC "South of Bridge")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL RIVER BRIDGE)
(NORTH PER GO-ON-BRIDGE)
(EAST TO ROCKY-PATH)
(SOUTH TO ROTARY-NORTH)
(WEST TO RIVER-OUTLET)
(ACTION SOUTH-OF-BRIDGE-F)>
<ROUTINE SOUTH-OF-BRIDGE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"This is the south side of a " D ,BRIDGE " that spans the">
<WHICH-TOWN "River">
<TELL ". Paths lead off " <TO-E> " and west, and a road leads south to the " D ,FESTERON "." CR>)>>
<ROUTINE GO-ON-BRIDGE ()
<SETG WHERE-FROM ,SOUTH-OF-BRIDGE>
<RETURN ,ON-BRIDGE>>

134
originalj2.txt Normal file
View File

@ -0,0 +1,134 @@
Junior-Level Adventure #2
Working Title: DEVILSTONE
Market and Audience
DEVILSTONE is an easy-to-play introduction to interactive fantasies like
ZORK. Its goal is to familiarize novices with the conventions and
traditions of the genre. Text, plot and puzzles will be geared to the
comprehension of a bright sixth-grader.
Plot Synopsis
You're an apprentice postal clerk in the sleepy village of Frobton. As
another eventless afternoon draws to an end, your boss Mr. Blather hands
you a special delivery envelope addressed to Ye Olde Magick Shoppe, a
little-visited establishment on the far side of town. You obediently
hop onto your bicycle and pedal through the friendly streets, where you
are greeted by old neighbors and ritually chased by a poodle. After
passing Hoople's Drug Store, the Palace Theater, the Park and other
familiar landmarks, you cross the little creek at the edge of town and
climb the steep hill up to the Magick Shoppe.
The Shoppe is a fascinating place full of strange machines, forbidden
books and fake ice cubes, all presided over by a sad old woman. She's
mourning the loss of her beloved pet cat, which disappeared under
mysterious circumstances a few nights ago. The letter you are
delivering turns out to be a ransom note:
"Bring the one true Devilstone to me before the moon sets, or you will
never see your cat again!"
or words of similar ilk, signed by a dangerous-sounding witch.
The bereaved woman vows never to surrender the Devilstone to anyone, cat
or no cat, and somehow manages to recruit you for a rescue mission. Your
only defense against the Evil Witch is to be the Devilstone itself, an
ordinary-looking pebble said to possess considerable Magick power when
used according to the instructions provided.
Upon leaving the Shoppe, you discover that the entire town of Frobton
has been skewed into some kind of alternative reality. All the
landmarks and faces have taken on a sinister, larger-than-life aspect:
-- The little creek that used to run around the outskirts is now a dark,
raging river. There's only one bridge, and that is guarded by a
creature which less original scenarios would refer to as a Troll.
-- The poodle that used to chase your bicycle has evolved into a
Hellhound. Its appetite for bicylists is unaffected. Good thing your
bike changed into a broomstick.
-- The little park in the center of town has become a dense forest full
of wild beasts, quicksand and other inconveniences. But it's better
than walking the streets, which are patrolled by the Witch's Goon Squad.
-- Mr. Hoople's Drug Store and Ice Cream Parlor is now a swarmy tavern
full of ne'er-do-wells, misfits and troublemakers like yourself. You
can buy supplies here that may prove useful in your quest. But don't
expect much sympathy from Mr. Hoople, who is a spy for the Evil Witch.
-- The Palace Theater appears to be running a propaganda film called THE
WITCH IS WATCHING. A better title might be WATCHING THE WITCH, because
what you see on the screen corresponds to what the Witch is actually
doing at that moment -- a good thing to know if you're trying to avoid
her.
-- The Post Office you used to work in is now the fortresslike lair of
the Witch. Those unfortunate enough to visit the witch's Dungeon will
notice that the Chief Torturer bears a remarkable resemblance to Mr.
Blather.
Your mission, should you choose to accept it, is to rescue the poor
little kitty cat without being turned into a furry toilet seat cover or
a Commodore 64.
Spellcrafting
Unlike ZORK IV and V, it takes more than a magic word to make the
Devilstone do its thing. Each of the dozen or so available spells
requires the player to locate some object or solve a puzzle before the
miracle can be invoked. Some silly examples:
-- To "Fly," you must find a feather and wear it in your hair.
-- To "Walk Across Water," you must put white sand in your shoes.
-- To "See Through Walls," you must be holding a lighted candle.
The props you need for each spell are "spelled out" in the Devilstone
instruction card provided with the game (see below).
Other possibilities include:
-- Spells can be used only a few times, or once.
-- Using the Devilstone helps the Evil Witch find out where you are (a
"lighthouse" effect a la Tolkien). This implies that it should be
possible to solve any problem without using the Stone, thereby rewarding
clever players with less interference from the Witch.
-- A "panic button" spell that works like an on-line hint service.
Characters
-- Mr. Blather. He has two cameos, first as your boss at the post
office and later as a torturer in the witch's Dungeon.
-- The Woman in the Magick Shoppe. She sounds and acts like a feeble
old lady, but is sharp enough to get you to do her dirty work. Like the
other characters in DEVILSTONE, she talks a lot but doesn't move around
much, if at all.
-- Various Townspeople. Amiable enough in Frobton, their New Frobton
counterparts greet you with warnings, sneers and sharp farming tools.
Some of them are employed by the Evil Witch as spies and/or goons.
-- The Evil Witch (to be named later). Impervious to water and falling
houses.
Package Ideas
-- A small white pebble.
-- Instructions for using the Devilstone. Instead of a booklet, it
might be more fun to design a cardboard slide-rule device that lets you
"dial up" the combination of objects you need to invoke a spell.
-- A sealed special-delivery letter containing the ransom note.
-- Two maps, one for each "version" of Frobton. It might be possible to
use a single map with a clever transparent overlay or something.

2908
parser.zil Normal file

File diff suppressed because it is too large Load Diff

1505
people.zil Normal file

File diff suppressed because it is too large Load Diff

BIN
rmode.init Normal file

Binary file not shown.

927
shoppe.zil Normal file
View File

@ -0,0 +1,927 @@
"SHOPPE for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** CLIFF EDGE ***"
<OBJECT CLIFF-EDGE
(IN ROOMS)
(DESC "Cliff Edge")
(FLAGS ONBIT RLANDBIT RMUNGBIT)
(GLOBAL CLIFF MAGICK-SHOPPE SHOPPE-DOOR TOWER SIGN POST-OFFICE
TRAIL HILL)
(NORTH PER BUMP-CLIFF)
(EAST PER TUMBLE)
(SOUTH PER TUMBLE)
(WEST PER ENTER-SHOPPE)
(DOWN PER ENTER-FOG?)
(IN PER ENTER-SHOPPE)
(ACTION CLIFF-EDGE-F)
(PSEUDO "FOG" CLIFF-FOG-PSEUDO)>
; "RMUNGBIT = Cliff Edge not yet visited"
<ROUTINE CLIFF-EDGE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<STANDING>
<TELL "high on a rocky cliff, at the top of a steep " D ,TRAIL
" leading downward.">
<COND (,SUCCESS?
<TELL
" Looking southeast, you see a friendly orange sun rising from a bank of morning clouds." CR CR D ,POST-OFFICE " Hill is visible " <TO-S> ", topped as usual by the Festeron " D ,POST-OFFICE ".">)>
<COND (<FSET? ,MAGICK-SHOPPE ,TOUCHBIT>
<SHOPPE-IS-NEARBY>)
(T
<FSET ,MAGICK-SHOPPE ,TOUCHBIT>
<COND (,ENDING?
<RTRUE>)
(,SKEWED?
<TELL CR CR
"The surrounding landscape has disappeared under a " D ,BLANKET " of evening fog. All the familiar buildings and landmarks are completely hidden; only the summit of " D ,POST-OFFICE " Hill is high enough to pierce the cloud, rising like a lonely " D ,ISLE " in a sea of mist...|
|
... an " D ,ISLE " with a " D ,TOWER " on it.|
|
There's a TOWER where the " D ,POST-OFFICE " used to be! The massive outline is hard to make out against the twilight sky. But the longer you stare, the clearer and more frightening it becomes.">
<SHOPPE-IS-NEARBY>)
(T
<TELL
" Looking southwest, you can see the shadow of " D ,POST-OFFICE " Hill creeping across the " D ,FESTERON " as the sun sinks into a bank of clouds.|
|
The peaceful scenery is disturbed by a tiny figure emerging from the distant "
D ,POST-OFFICE ". It stares in your direction for a few moments, checks its wrist and shakes a threatening little fist at you.|
|
A little old-fashioned store stands nearby. Its brightly painted shutters and thatched roof remind you of something out of a fairy tale. ">
<DESCRIBE-SIGN>)>)>)>>
<ROUTINE SHOPPE-IS-NEARBY ()
<CRLF>
<CRLF>
<SAY-THE ,MAGICK-SHOPPE>
<TELL " stands nearby." CR>>
<ROUTINE DESCRIBE-SIGN ()
<TELL
"A curiously painted sign over the " D ,HOUSE-DOOR " reads, \"Ye Olde "
D ,MAGICK-SHOPPE ".\"" CR>>
<ROUTINE CLIFF-FOG-PSEUDO ()
<COND (<OR <NOT ,SKEWED?>
,SUCCESS?>
<CANT-SEE-ANY>
<RFATAL>)
(<VERB? EXAMINE LOOK-INSIDE LOOK-ON>
<V-LOOK>
<RTRUE>)
(<VERB? WALK-TO THROUGH ENTER>
<DO-WALK ,P?DOWN>
<RTRUE>)
(T
<YOU-DONT-NEED "fog" T>
<RFATAL>)>>
<OBJECT MAGICK-SHOPPE
(IN LOCAL-GLOBALS)
(DESC "Magick Shoppe")
(SYNONYM SHOPPE SHOP STORE BUILDING)
(ADJECTIVE MAGICK MAGIC)
(ACTION MAGICK-SHOPPE-F)>
<ROUTINE MAGICK-SHOPPE-F ()
<COND (<ENTER-FROM? ,CLIFF-EDGE ,INSIDE-SHOPPE ,MAGICK-SHOPPE>
<RTRUE>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,INSIDE-SHOPPE>
<V-LOOK>)
(T
<DESCRIBE-SIGN>)>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-THRU>
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<GO-INSIDE>
<RTRUE>)
(T
<ITS-CLOSED ,SHOPPE-DOOR>
<RFATAL>)>)
(T
<RFALSE>)>>
<OBJECT SHOPPE-DOOR
(IN LOCAL-GLOBALS)
(DESC "Magick Shoppe door")
(SYNONYM DOOR ENTRANCE ENTRY LOCK)
(ADJECTIVE FRONT SHOPPE SHOP MAGICK MAGIC)
(FLAGS DOORBIT NDESCBIT)
(ACTION SHOPPE-DOOR-F)>
; <GLOBAL CLOSED-IN-SHOPPE? <>>
<ROUTINE SHOPPE-DOOR-F ()
<COND (<AND <VERB? OPEN MOVE PULL PUSH>
<EQUAL? ,PRSO ,SHOPPE-DOOR>
<NOT <FSET? ,SHOPPE-DOOR ,OPENBIT>>>
<COND (<OR <EQUAL? ,HERE ,INSIDE-SHOPPE>
,SKEWED?>
<BEST-EFFORTS ,HOUSE-DOOR "refuses to budge">
<COND (<IN? ,OLD-WOMAN ,HERE>
<TELL CR
"\"That door always sticks this time of year,\" notes the "
D ,OLD-WOMAN " drily." CR>)>
<RTRUE>)
(T
<BELL-TINKLES>
<CRLF>
<RFALSE>)>)
(<AND <VERB? CLOSE>
<FSET? ,SHOPPE-DOOR ,OPENBIT>>
; <COND (<EQUAL? ,HERE ,INSIDE-SHOPPE>
<SETG CLOSED-IN-SHOPPE? T>)>
<BELL-TINKLES>
<RFALSE>)
(<VERB? KNOCK>
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<ALREADY-OPEN>)
(<EQUAL? ,HERE ,INSIDE-SHOPPE>
<WASTE-OF-TIME>)
(,ENDING?
<SETG WOMAN-SCRIPT 5>)
(,SKEWED?
<RFALSE>)
(T
<TELL "A voice cries, \"Come in!\"" CR>)>
<RTRUE>)
(<USE-DOOR? ,CLIFF-EDGE>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE BELL-TINKLES ()
<TELL "A concealed bell tinkles merrily." CR>>
"*** INSIDE SHOPPE ***"
<ROUTINE ENTER-SHOPPE ()
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<COND (<HELD? ,ENVELOPE>
<ENABLE <QUEUE I-WOMAN-SCRIPT -1>>
<DISABLE <INT I-BEFORE-FIVE>>
<RETURN ,INSIDE-SHOPPE>)
(T
<FCLEAR ,SHOPPE-DOOR ,OPENBIT>
<SAY-THE ,SHOPPE-DOOR>
<TELL ", sensing that you have no mail to deliver, slams itself shut in your face. ">
<BELL-TINKLES>
<RFALSE>)>)
(T
<ITS-CLOSED ,SHOPPE-DOOR>
<RFALSE>)>>
<ROUTINE MOBILE? ()
<COND (,IMMOBILIZED?
<UNWILLING-TO-MOVE>
<RFALSE>)
; (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<SETG CLOSED-IN-SHOPPE? T>
<TELL "Bang! ">
<SUDDEN-GUST>
<TELL "slams the ">
<PRINTD ,SHOPPE-DOOR>
<TELL " shut. ">
<BELL-TINKLES>
<FCLEAR ,SHOPPE-DOOR ,OPENBIT>
<RFALSE>)
(T
<ITS-CLOSED ,SHOPPE-DOOR>
<RFALSE>)>>
<ROUTINE UNWILLING-TO-MOVE ()
<TELL <PICK-ONE ,FROZENS> "." CR>
<RFALSE>>
<GLOBAL FROZENS
<LTABLE 0
"Your feet seem unwilling to move in that direction"
"A subtle pressure against your body prevents you from moving that way">>
<ROUTINE APPROACH-CURTAIN ()
<COND (,IMMOBILIZED?
<UNWILLING-TO-MOVE>)
(T
<TELL
"As you approach the " D ,CURTAIN "ed exit, the " D ,MAGICK-SHOPPE " subtly rearranges itself until you find yourself facing the other way.">
<COND (<IN? ,OLD-WOMAN ,INSIDE-SHOPPE>
<TELL " The " D ,OLD-WOMAN
" watches with wry amusement.">)>
<CRLF>)>
<RFALSE>>
<OBJECT INSIDE-SHOPPE
(IN ROOMS)
(DESC "Magick Shoppe")
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL MAGICK-SHOPPE SHOPPE-DOOR CORNER)
(EAST PER MOBILE?)
(WEST PER APPROACH-CURTAIN)
(IN PER APPROACH-CURTAIN)
(OUT PER MOBILE?)
(ACTION INSIDE-SHOPPE-F)>
<ROUTINE INSIDE-SHOPPE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"You're in the front showroom of the " D ,MAGICK-SHOPPE ".|
|
Every inch of wall space is crowded with magic tricks, puzzles and mystical paraphernalia. A glass case offers a selection of obscene jokes and naughty birthday cards.|
|
In the " D ,CORNER " stands an ancient " D ,CLOCK
", its dial ornamented with a " <PICK-ONE ,FACES> "ing crescent moon and other celestial symbols.|
|
The " D ,HOUSE-DOOR " of the " D ,MAGICK-SHOPPE " is ">
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<TELL "wide open">)
(T
<TELL "closed">)>
<TELL ". At the west end of the room, you can see another exit concealed by a " D ,CURTAIN "." CR>)>>
<OBJECT CLOCK
(IN INSIDE-SHOPPE)
(DESC "grandfather clock")
(SYNONYM CLOCK MOON TIME DIAL)
(ADJECTIVE GRANDFATHER)
(FLAGS NDESCBIT TRYTAKEBIT CONTBIT TRANSBIT
LOCKEDBIT READBIT RMUNGBIT)
(ACTION CLOCK-F)>
; "RMUNGBIT = clock running"
<GLOBAL FACES <LTABLE 0 "frown" "smil" "sneer" "grinn" "star">>
<ROUTINE CLOCK-F ()
<COND (<VERB? EXAMINE READ>
<TELL "The " <PICK-ONE ,FACES> "ing " D ,CLOCK " ">
<COND (<FSET? ,CLOCK ,RMUNGBIT>
<TELL "says it's ">)
(T
<TELL "is stopped at ">)>
<TELL-TIME>
<TELL "." CR>
<RTRUE>)
(<VERB? LOOK-INSIDE>
<TELL "Inside the " D ,CLOCK
" you see an intricate brass mechanism." CR>
<RTRUE>)
(<AND <VERB? LISTEN>
<FSET? ,CLOCK ,RMUNGBIT>>
<SAY-THE ,CLOCK>
<TELL " is ticking noisily." CR>
<RTRUE>)
(<MOVING? ,CLOCK>
<TOO-LARGE ,CLOCK>
<RTRUE>)
(<OR <HURT? ,CLOCK>
<VERB? OPEN>>
<RUIN ,CLOCK>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE RUIN (THING)
<TELL "You'd probably ruin the " D .THING>
<IF-YOU-TRIED>>
<OBJECT STOCK
(IN INSIDE-SHOPPE)
(DESC "magic tricks")
(SYNONYM TRICK TRICKS PUZZLE PARAPH)
(ADJECTIVE MAGIC MYSTIC)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION STOCK-F)>
<ROUTINE STOCK-F ()
<COND (<VERB? EXAMINE LOOK-ON LOOK-INSIDE READ>
<TELL "They look like fun." CR>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(<VERB? BUY>
<RFALSE>)
(T
<YOU-DONT-NEED ,STOCK>
<RFATAL>)>>
<OBJECT NAUGHTY-STOCK
(IN GLASS-CASE)
(DESC "naughty jokes")
(SYNONYM JOKE JOKES CARD CARDS)
(ADJECTIVE OBSCENE PRACTICAL NAUGHTY BIRTHDAY)
(FLAGS READBIT NDESCBIT NARTICLEBIT)
(ACTION NAUGHTY-STOCK-F)>
<ROUTINE NAUGHTY-STOCK-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE READ LOOK-ON>
<TELL <PICK-ONE ,NAUGHTY-BITS> CR>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(<VERB? BUY>
<RFALSE>)
(T
<YOU-DONT-NEED ,NAUGHTY-STOCK>
<RFATAL>)>>
<ROUTINE TRY-HANDLING-STOCK ()
<COND (<VERB? TAKE>
<TELL D ,MACGUFFIN
" takes a dim view of shoplifters." CR>
<RTRUE>)
(<OR <HURT? ,PRSO>
<VERB? STAND-ON POUR EMPTY>>
<TELL
"The proprietor of the " D ,MAGICK-SHOPPE>
<MIGHT-NOT-LIKE>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE MIGHT-NOT-LIKE ()
<TELL " might not like it">
<IF-YOU-TRIED>>
<OBJECT GLASS-CASE
(IN INSIDE-SHOPPE)
(DESC "glass case")
(SYNONYM CASE)
(ADJECTIVE GLASS)
(FLAGS NDESCBIT CONTBIT DOORBIT TRANSBIT LOCKEDBIT)
(CAPACITY 25)
(ACTION GLASS-CASE-F)>
<ROUTINE GLASS-CASE-F ()
<COND (<VERB? EXAMINE>
<TELL "The naughty " D ,GLASS-CASE " is">
<CLOSED-AND-LOCKED>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-DOWN>
<TELL <PICK-ONE ,NAUGHTY-BITS> CR>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT CURTAIN
(IN INSIDE-SHOPPE)
(DESC "curtain")
(SYNONYM CURTAIN)
(ADJECTIVE DARK)
(FLAGS NDESCBIT)
(ACTION CURTAIN-F)>
<ROUTINE CURTAIN-F ()
<COND (<VERB? THROUGH ENTER WALK-TO LOOK-INSIDE LOOK-BEHIND
OPEN CLOSE PUSH MOVE>
<DO-WALK ,P?IN>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(T
<RFALSE>)>>
<GLOBAL NAUGHTY-BITS
<LTABLE 0
"Can't keep your mind off that stuff, eh?"
"Tsk, tsk, tsk!"
"Intriguing, aren't they?">>
<OBJECT ENVELOPE
(DESC "mysterious envelope")
(SYNONYM ENVELOPE MAIL LETTER)
(ADJECTIVE MYSTERIOUS)
(ACTION ENVELOPE-F)
(FLAGS TAKEBIT READBIT CONTBIT)
(VALUE 5)
(SIZE 3)
(CAPACITY 1)>
; "RMUNGBIT = envelope given by Crisp"
<GLOBAL WOMAN-SEEN-ENVELOPE? <>>
<ROUTINE ENVELOPE-F ()
<COND (<VERB? EXAMINE READ>
<FIND-IN-PACKAGE "envelope">
<RTRUE>)
(<HURT? ,ENVELOPE>
<HOW-WOULD-YOU-LIKE-IT ,ENVELOPE>
<RTRUE>)
(<VERB? OPEN>
<COND (<DONT-HAVE? ,ENVELOPE>
<RTRUE>)
(,WOMAN-SEEN-ENVELOPE?
<SETG ANGER 4>
<MOVE ,ENVELOPE ,STEEP-TRAIL>
<MOVE ,OPEN-ENVELOPE ,PROTAGONIST>
<FSET ,OPEN-ENVELOPE ,TOUCHBIT>
<MOVE ,RANSOM-LETTER ,PROTAGONIST>
<SETG L-PRSO ,OPEN-ENVELOPE>
<SETG PRSO ,OPEN-ENVELOPE>
<THIS-IS-IT ,RANSOM-LETTER>
<TELL "(You should now open the " D ,ENVELOPE
" in your " ,GAME " package.)|
|
Opening the " D ,ENVELOPE " reveals a letter.">)
(T
<TELL "(You're not supposed to open the " D ,ENVELOPE
" until the story tells you to do so.)">)>
<CRLF>
<RTRUE>)
(<AND <VERB? TAKE>
<NOT <FSET? ,ENVELOPE ,TOUCHBIT>>>
<SETG ANGER 4>
<RFALSE>)
(T
<RFALSE>)>>
<ROUTINE IVE-ALREADY-SEEN-IT ()
<TELL "\"I've already seen it.\"" CR>>
<OBJECT OPEN-ENVELOPE
(DESC "mysterious envelope")
(SYNONYM ENVELOPE)
(ADJECTIVE MYSTERIOUS)
(FLAGS TAKEBIT READBIT CONTBIT OPENBIT)
(VALUE 0)
(CAPACITY 1)
(SIZE 5)
(ACTION OPEN-ENVELOPE-F)>
<ROUTINE OPEN-ENVELOPE-F ()
<COND (<VERB? EXAMINE READ>
<FIND-IN-PACKAGE "envelope">
<RTRUE>)
(<HURT? ,OPEN-ENVELOPE>
<HOW-WOULD-YOU-LIKE-IT ,ENVELOPE>
<RTRUE>)
(<OR <AND <VERB? CLOSE>
<FSET? ,OPEN-ENVELOPE ,OPENBIT>>
<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,OPEN-ENVELOPE>>>
<UNFORTUNATELY>
<TELL "you ripped the " D ,ENVELOPE " when you opened it." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT RANSOM-LETTER
; (IN OPEN-ENVELOPE)
(DESC "letter")
(SYNONYM LETTER MAIL)
(ADJECTIVE RANSOM)
(FLAGS TAKEBIT READBIT)
(ACTION RANSOM-LETTER-F)
(SIZE 1)
(VALUE 0)>
<ROUTINE RANSOM-LETTER-F ()
<COND (<VERB? READ>
; <COND (<AND <IN? ,RANSOM-LETTER ,OPEN-ENVELOPE>
<IN? ,OPEN-ENVELOPE ,PROTAGONIST>>
<MOVE ,RANSOM-LETTER ,PROTAGONIST>
<TELL "(taking the " D ,RANSOM-LETTER
" out of the " D ,OPEN-ENVELOPE " first)" CR>)>
<COND (<DONT-HAVE? ,RANSOM-LETTER>
<RTRUE>)
(<IN? ,OLD-WOMAN ,HERE>
<TELL "(to the " D ,OLD-WOMAN ")" CR>
<READ-LETTER-TO-WOMAN>)
(T
<FIND-IN-PACKAGE "letter">)>
<RFATAL>)
(<VERB? READ-TO>
<COND (<EQUAL? ,PRSI ,OLD-WOMAN>
<READ-LETTER-TO-WOMAN>
<RFATAL>)
(<EQUAL? ,PRSI ,ME>
<FIND-IN-PACKAGE "letter">
<RFATAL>)
(T
<RFALSE>)>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,OLD-WOMAN>>
<COND (,LETTER-READ-TO-WOMAN?
<READ-LETTER-TO-WOMAN>)
(T
<TELL "She politely refuses your offer." CR>)>
<RFATAL>)
(<VERB? EXAMINE>
<FIND-IN-PACKAGE "letter">
<RFATAL>)
(<HURT? ,RANSOM-LETTER>
<HOW-WOULD-YOU-LIKE-IT ,RANSOM-LETTER>
<RFATAL>)
(T
<RFALSE>)>>
<OBJECT SNAKE-CAN
(DESC "metal can")
(SYNONYM CAN NUTS LID)
(ADJECTIVE METAL SMALL LITTLE TRINKET GIFT)
(FLAGS TAKEBIT CONTBIT READBIT)
(CAPACITY 1)
(VALUE 3)
(SIZE 3)
(CONTFCN IN-CAN)
(ACTION SNAKE-CAN-F)>
<ROUTINE IN-CAN (CONTEXT)
<COND (<AND <EQUAL? .CONTEXT ,M-CONT>
<NOT <IN? ,SNAKE-CAN ,PROTAGONIST>>
<NOT <SEE-VERB?>>
<NOT <EQUAL? ,PRSO ,CAN-BOTTOM>>>
<YOUD-HAVE-TO "pick up" ,SNAKE-CAN>
<RTRUE>)
(T
<RFALSE>)>>
<SYNONYM NUTS NUT MIXED>
<OBJECT SQUASHED-CAN
(DESC "squashed can")
(SYNONYM CAN NUTS LID)
(ADJECTIVE METAL SMALL FLAT SQUASH)
(FLAGS TOUCHBIT TAKEBIT CONTBIT OPENBIT READBIT)
(ACTION SQUASHED-CAN-F)
(CAPACITY 1)
(VALUE 0)
(SIZE 3)>
<ROUTINE SNAKE-CAN-F ()
<COND (<AND ,BOTTOM?
<CAN-BOTTOM-F>>
<RTRUE>)
(<VERB? EXAMINE LOOK-ON READ>
<TELL "It's a round " D ,SNAKE-CAN " with a">
<OPEN-CLOSED ,SNAKE-CAN T>
<TELL
"lid, illustrated with a tasty-looking assortment of mixed nuts." CR>
<RTRUE>)
(<AND <VERB? OPEN TAKE-OFF>
<NOT <FSET? ,SNAKE-CAN ,OPENBIT>>>
<COND (<DONT-HAVE? ,SNAKE-CAN>
<RTRUE>)
(,SNAKE-GONE?
<NOW-CLOSED-OR-OPEN ,SNAKE-CAN T>)
(T
<TELL "Yow! When you open">
<SNAKE-LEAPS-OUT-AT "you">
<COND (<AND ,SKEWED?
<EQUAL? ,HERE ,NORTH-OF-BRIDGE>
<IN? ,TROLL ,NORTH-OF-BRIDGE>>
<CAN-FALLS>
<FRIGHTEN-TROLL>
<CRLF>
<UPDATE-SCORE 3>)>)>
<RTRUE>)
(<VERB? LISTEN SHAKE SPIN>
<COND (<DONT-HAVE? ,SNAKE-CAN>
<RTRUE>)>
<SAY-THE ,GCAN>
<TELL
" rattles again. It sounds like there are nuts inside">
<COND (<FSET? ,SNAKE-CAN ,OPENBIT>
<TELL ", although it seems to be empty">)>
<TELL "." CR>
<RTRUE>)
(<VERB? READ>
<READ-CAN>
<RTRUE>)
(<VERB? LOOK-INSIDE SEARCH LOOK-DOWN>
<LOOK-IN-CAN>
<RTRUE>)
(<AND <VERB? DROP>
<EQUAL? ,PRSO ,SNAKE-CAN>>
<TELL "It hits the ">
<GROUND-OR-FLOOR>
<TELL " with a rattle">
<AND-DROPS-OUT ,SNAKE-CAN>
<COND (<EQUAL? ,HERE ,INSIDE-SHOPPE>
<MOVE ,SNAKE-CAN ,PROTAGONIST>
<CRLF>
<SAY-THE ,OLD-WOMAN>
<TELL " picks up the " D ,SNAKE-CAN " and hands it back to you. \"I think you dropped this.\"" CR>)>
<RTRUE>)
(<VERB? SQUEEZE>
<PERFORM ,V?SQUEEZE ,CAN-BOTTOM>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,SNAKE-CAN>
<IN? ,SNAKE-CAN ,OLD-WOMAN>>
<COND (<V-TAKE>
<ENABLE <QUEUE I-RATTLE -1>>)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE LOOK-IN-CAN ()
<COND (<NOT <IN? ,SNAKE-CAN ,PROTAGONIST>>
<YOUD-HAVE-TO "be holding" ,SNAKE-CAN>)
(<FSET? ,SNAKE-CAN ,OPENBIT>
<SAY-THE ,SNAKE-CAN>
<TELL
" appears to have a " D ,CAN-BOTTOM
". You could probably get it out by squeezing the can." CR>)
(T
<ITS-CLOSED ,SNAKE-CAN>)>>
<ROUTINE SQUASHED-CAN-F ()
<COND (<AND <VERB? OPEN CLOSE EXAMINE LOOK-INSIDE
LOOK-DOWN SQUEEZE MUNG>
<EQUAL? ,PRSO ,SQUASHED-CAN>>
<SAY-BOTTOM>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,GCAN>>
<NO-ROOM>
<SAY-BOTTOM>
<RTRUE>)
(<VERB? READ>
<READ-CAN>
<RTRUE>)
(<VERB? LISTEN SHAKE SPIN>
<COND (<DONT-HAVE? ,GCAN>
<RTRUE>)>
<SAY-THE ,GCAN>
<TELL " makes no sound." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE READ-CAN ()
<SAY-THE ,GCAN>
<TELL " says, 'Mixed Nuts.'" CR>>
<GLOBAL GCAN SNAKE-CAN>
<OBJECT CAN-BOTTOM
(IN SNAKE-CAN)
(DESC "false bottom")
(SYNONYM BOTTOM)
(ADJECTIVE FALSE)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION CAN-BOTTOM-F)>
<ROUTINE CAN-BOTTOM-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<LOOK-IN-CAN>
<RTRUE>)
(<AND <VERB? OPEN SQUEEZE MOVE PULL PUSH TAKE-OFF>
<EQUAL? ,PRSO ,CAN-BOTTOM ,GCAN>>
<COND (<DONT-HAVE? ,GCAN>
<RTRUE>)
(<NOT <FSET? ,SNAKE-CAN ,OPENBIT>>
<YOUD-HAVE-TO "open" ,SNAKE-CAN>
<RTRUE>)
(<NOT <IN? ,CAN-BOTTOM ,SQUASHED-CAN>>
<MOVE ,SQUASHED-CAN ,PROTAGONIST>
<REMOVE ,SNAKE-CAN>
<SETG GCAN ,SQUASHED-CAN>
<DISABLE <INT I-RATTLE>>
<ENABLE <QUEUE I-GLOW -1>>
<MOVE ,WISHBRINGER ,PROTAGONIST>
<THIS-IS-IT ,WISHBRINGER>
<SAY-THE ,CAN-BOTTOM>
<TELL
" is wedged tightly into the " D ,SNAKE-CAN ". You might be able to loosen it by squeezing harder... harder!...|
|
Pop! A " D ,WISHBRINGER " drops out of the " D ,SQUASHED-CAN>
<AND-DROPS-OUT ,WISHBRINGER>)
(T
<SAY-BOTTOM>)>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,CAN-BOTTOM ,GCAN>
,PRSI>
<COND (<DONT-HAVE? ,GCAN>
<RTRUE>)>
<HOW?>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE SAY-BOTTOM ()
<TELL "You squashed the " D ,SNAKE-CAN " flat when you removed the "
D ,CAN-BOTTOM "." CR>>
<ROUTINE I-RATTLE ()
<COND (<AND <IN? ,SNAKE-CAN ,PROTAGONIST>
<PROB 5>>
<TELL CR <PICK-ONE ,GIVE-AWAYS> "." CR>)>>
<GLOBAL GIVE-AWAYS
<LTABLE 0
"The can rattles in your hand"
"Something rattles in the can"
"You hear a rattling noise in the can">>
<GLOBAL ENDING? <>>
<ROUTINE TO-FINISH ()
<SETG ENDING? T>
<SETG FUZZY? <>>
<SETG FUZZY-FROM ,CLIFF-EDGE>
<DISABLE <INT I-GLOW>>
<FCLEAR ,WISHBRINGER ,ONBIT>
<COND (<ENABLED? ,I-DRINK>
<SETG MILK-SCRIPT 1>)>
<COND (<ENABLED? ,I-DIGEST-CHOCOLATE>
<SETG CHOCOLATE-SCRIPT 1>)>
<DISABLE <INT I-VULTURE>>
<SETG WOMAN-SCRIPT 0>
<ENABLE <QUEUE I-FINALE -1>>
<FSET ,MAGICK-SHOPPE ,TOUCHBIT>
<DISABLE <INT I-BEFORE-MOONSET>>
<SETG HERE ,CLIFF-EDGE>
<MOVE ,PROTAGONIST ,CLIFF-EDGE>
<CARRIAGE-RETURNS>>
<OBJECT CHAOS
(DESC "Chaos")
(SYNONYM CHAOS CAT KITTY PUSSY)
(ADJECTIVE BLACK)
(FLAGS NDESCBIT ACTORBIT NARTICLEBIT TAKEBIT)
(SIZE 10)
(VALUE 0)
(ACTION CHAOS-F)>
<ROUTINE CHAOS-F ("OPTIONAL" (CONTEXT <>))
<THIS-IS-IT ,CHAOS>
<COND (<VERB? EXAMINE>
<DESCRIBE-CHAOS T>
<TELL " right in the middle of her forehead." CR>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,CHAOS>>
<COND (<V-TAKE>
<CRLF>
<PERFORM ,V?LISTEN ,CHAOS>)>
<RTRUE>)
(<VERB? LISTEN RUB KISS>
<NICE-KITTY>
<RTRUE>)
(<TALKING-TO? ,CHAOS>
<NICE-KITTY>
<RFATAL>)
(<HURT? ,CHAOS>
<V-RAPE>
<RTRUE>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,CHAOS>>
<COND (<EQUAL? ,PRSO ,CHAOS>
<TELL <PICK-ONE ,YUKS> CR>)
(<EQUAL? ,PRSO ,MILK>
<READY-MILK>
<GIVE-MILK-TO-CAT ,CHAOS>)
(T
<NOT-LIKELY ,KITTY "is interested">)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE NICE-KITTY ()
<SAY-THE ,KITTY>
<TELL " " <PICK-ONE ,NICES> "." CR>>
<ROUTINE DESCRIBE-CHAOS ("OPTIONAL" (SPOT? <>))
<TELL "She's black as night from head to tail">
<COND (.SPOT?
<TELL ", except for one little white spot">)>>
<GLOBAL SUCCESS? <>>
<ROUTINE I-FINALE ()
<COND (<EQUAL? ,HERE ,CLIFF-EDGE>
<SETG WOMAN-SCRIPT <+ ,WOMAN-SCRIPT 1>>
<COND (<EQUAL? ,WOMAN-SCRIPT 1>
<COND (,SUCCESS?
<THIS-IS-IT ,CHAOS>
<TELL CR "A " D ,KITTY
" is rubbing against your leg." CR>)
(T
<SETG WOMAN-SCRIPT 5>)>
<RTRUE>)>
<COND (<AND ,SUCCESS?
<EQUAL? ,WOMAN-SCRIPT 3>
<ACCESSIBLE? ,CHAOS>>
<THIS-IS-IT ,CHAOS>
<CRLF>
<SAY-THE ,KITTY>
<COND (<IN? ,CHAOS ,PROTAGONIST>
<MOVE ,CHAOS ,CLIFF-EDGE>
<TELL " leaps from your arms and">)>
<TELL " begins scratching urgently on the "
D ,SHOPPE-DOOR "." CR>)
(<EQUAL? ,WOMAN-SCRIPT 6>
<THIS-IS-IT ,OLD-WOMAN>
<FSET ,SHOPPE-DOOR ,OPENBIT>
<TELL CR "The door of the " D ,MAGICK-SHOPPE " creaks open, and the " D ,OLD-WOMAN ", dressed in a nightgown, ">
<COND (,SUCCESS?
<TELL "stands blinking in the morning sun.">)
(T
<TELL "peers sleepily">
<INTO-NIGHT>)>
<TELL " \"Who's there?\"" CR CR>
<COND (<AND ,SUCCESS?
<ACCESSIBLE? ,CHAOS>>
<SAY-THE ,KITTY>
<COND (<IN? ,CHAOS ,PROTAGONIST>
<TELL " squirms away from you and">)>
<TELL
" leaps into the woman's arms. \"" D ,CHAOS "!\" she cries, laughing and sobbing all at once as the cat licks tears of joy from her face.|
|
At last the " D ,OLD-WOMAN " lowers " D ,CHAOS " to the " D ,GROUND " and walks over to where you're standing, red with embarrassment." CR CR>
<LIAR>
<TELL ",\" she chuckles, clasping " D ,HANDS
"s gratefully in her own. \"I promised to give you " ,GAME ", knowing full well that, if you succeeded, its virtue would be lost.|
|
\"In truth, the Stone would make a poor reward,\" she continues, stooping to tickle the cat's white forehead. \"As you can see, it brings more joy in the shape of a companion than in any other. This is " ,GAME "'s finest Magick. A pity that my sister," ,EONE ", did not know of it.\"" CR CR>
<COND (,HOUSE-VISITED?
<TELL ,YOU-HEAR "a familiar">
<CLUMP>
<TELL "behind you. It's the "
D ,SMALL-BOX ", hopping bravely up the steep " D ,TRAIL "! The woman looks on with puzzled amusement as the faithful box">
<HOPS-TO-SIDE>
<CRLF>
<CRLF>)>
<SAY-THE ,OLD-WOMAN>
<COND (<IN? ,VIOLET-NOTE ,PROTAGONIST>
<TELL " touches the " D ,VIOLET-NOTE
" in " D ,HANDS>)
(T
<COND (<IN? ,VIOLET-NOTE ,HERE>
<TELL " picks up the "
D ,VIOLET-NOTE>)
(T
<TELL " pulls " D ,MISS-VOSS "'s "
D ,VIOLET-NOTE " from an obscure pocket">)>
<TELL " and hands it to you">)>
<TELL ". \"Make sure you give this to " D ,CRISP
" when you see him,\" she says with a sly wink. \"And tell him I said hello.\"|
|
Cradling " D ,CHAOS " in her arms like a child, the " D ,OLD-WOMAN
" ambles back into the " D ,MAGICK-SHOPPE ". \"Farewell!\" she calls from the closing door, and the sunlight makes her face look young. \"Now you are a true Adventurer.\"" CR CR>
<BELL-TINKLES>
<MOVE ,PROTAGONIST ,END-ROOM>
<SETG HERE ,END-ROOM>
<CARRIAGE-RETURNS>
<TELL
"Congratulations! You've finished the story of " ,GAME "!" CR CR>
<V-SCORE>
<COND (<NOT <ZERO? ,SPELLS>>
<TELL CR
"Did you know that it's possible to complete the story without using any of the 7 Wishes? It's fun to go back and see if you can solve all of the problems without Wishing." CR>)>
<FINISH T>)
; "Unsuccessful endings"
(T
<COND (<VISIBLE? ,KITTY>
<TELL "A look of joy spreads over the "
D ,OLD-WOMAN "'s face when she sees the " D ,KITTY>
<COND (<IN? ,KITTY ,PROTAGONIST>
<TELL " in your arms">)
(T
<TELL " playing at your feet">)>
<TELL
". \"Here, " D ,CHAOS "! Come to mama!\"|
|
But the cat pays no attention. Frowning, the woman walks over and peers at it closely. \"This isn't " D ,CHAOS ",\" she says, her voice now heavy with sadness. \"You did not heed me when I described her to you. See? There's no white spot on her forehead, as I said there would be. You should have examined her before you returned here!\"">)
(T ; "Return with no KITTY"
<TELL
"A hopeful look brightens the " D ,OLD-WOMAN "'s face as she sees you. \"Did you find my cat, " D ,CHAOS "?\" she cries hopefully. But the guilty look in your eyes turns her brief joy to sadness.|
|
\"You have failed, then,\" she sighs. \"">
<THANKS-ANYWAY>)>
<BAD-ENDING>)>)>)>>
<ROUTINE THANKS-ANYWAY ()
<TELL "Too bad. I should not have placed my hopes upon a simpleton. But thank you for your useless effort.\"">>
<OBJECT END-ROOM
(IN ROOMS)
(DESC "End of Story")
(FLAGS ONBIT RLANDBIT)>

980
south.zil Normal file
View File

@ -0,0 +1,980 @@
"SOUTH for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** HILLTOP ***"
<OBJECT HILLTOP
(IN ROOMS)
(DESC "Hilltop")
(GLOBAL POST-OFFICE POST-DOOR HILL SIGN TOWER DRAWBRIDGE WINDOW)
(FLAGS ONBIT RLANDBIT)
(NORTH PER TUMBLE)
(SOUTH PER ENTER-TOWER?)
(EAST PER ENTER-OUTSIDE-COTTAGE)
(WEST TO OUTSIDE-CEMETERY)
(DOWN "(Which way to you want to go down the hill, east or west?)")
(IN PER ENTER-TOWER?)
(ACTION HILLTOP-F)>
<ROUTINE HILLTOP-F ("OPTIONAL" (CONTEXT <>))
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"You're on a hilltop overlooking the seaside " D ,FESTERON " of">
<WHICH-TOWN>
<TELL "." CR CR>
<COND (,SKEWED?
<TELL "A " D ,TOWER
" stands in bleak silhouette against the moonlit sky. It rises a hundred feet above a barren plateau, and is encircled by a deep moat. The only "
D ,ENTRANCE "s are a">
<OPEN-CLOSED ,DRAWBRIDGE T>
<TELL D ,DRAWBRIDGE
" and a dark " D ,WINDOW " near the top." CR>)
(T
<TELL
"To the south stands the Festeron " D ,POST-OFFICE ". It's a little brick building with a neatly-trimmed lawn. ">
<SAY-DOOR ,POST-DOOR>)>
<TELL CR "Roads run down the hill " <TO-E> " and west. There's a signpost nearby." CR>)
(T
<RFALSE>)>>
<ROUTINE SAY-DOOR (OBJ)
<SAY-THE .OBJ>
<COND (<FSET? .OBJ ,OPENBIT>
<TELL " stands invitingly open.">)
(T
<IS-CLOSED>)>
<CRLF>>
<ROUTINE I-CRISP-CALLING ()
<COND (<EQUAL? ,HERE ,HILLTOP>
<SOMEBODY-CALLING>)>>
<ROUTINE SOMEBODY-CALLING ("OPTIONAL" (ROTARY? <>))
<TELL CR "Somebody ">
<COND (.ROTARY?
<TELL "on the south side of the Rotary">)
(T
<TELL "inside the " D ,POST-OFFICE>)>
<TELL " is calling you." CR>>
<OBJECT HILL
(IN LOCAL-GLOBALS)
(DESC "hill")
(SYNONYM HILL HILLTOP)
(ADJECTIVE POST OFFICE LOOKOUT)
(FLAGS NDESCBIT)
(ACTION HILL-F)>
<ROUTINE HILL-F ()
<COND (<VERB? EXAMINE LOOK-DOWN LOOK-UP LOOK-ON>
<V-LOOK>
<RTRUE>)
(<EQUAL? ,HERE ,CLIFF-EDGE>
<TOO-FAR-AWAY ,HILL>
<RFATAL>)
(<VERB? WALK-TO USE ENTER THROUGH CLIMB-ON CLIMB-UP>
<COND (<EQUAL? ,HERE ,HILLTOP ,LOOKOUT-HILL>
<ALREADY-AT ,HILL T>)
(T
<DO-WALK ,P?UP>)>
<RTRUE>)
(<VERB? EXIT CLIMB-DOWN>
<COND (<EQUAL? ,HERE ,HILLTOP ,LOOKOUT-HILL>
<DO-WALK ,P?DOWN>)
(T
<ALREADY-AT ,HILL>)>
<RTRUE>)
(T
<YOU-DONT-NEED ,HILL>
<RFATAL>)>>
<ROUTINE ALREADY-ON (THING "OPTIONAL" (NOT? <>))
<TELL "But you're ">
<COND (.NOT?
<TELL "not">)
(T
<TELL "already">)>
<TELL " on ">
<ARTICLE .THING T>
<TELL D .THING "!" CR>>
<ROUTINE ENTER-TOWER? ()
<COND (,SKEWED?
<COND (<FSET? ,DRAWBRIDGE ,OPENBIT>
<ENABLE <QUEUE I-CRISP-CAPTURE -1>>
<RETURN ,VESTIBULE>)
(T
<ITS-CLOSED ,DRAWBRIDGE>
<RFALSE>)>)
(T
<COND (<FSET? ,POST-DOOR ,OPENBIT>
<COND (<ZERO? ,CRISP-SCRIPT>
<ENABLE <QUEUE I-HOORAY -1>>
<ENABLE <QUEUE I-GIVE-ENVELOPE -1>>)>
<RETURN ,INSIDE-POST-OFFICE>)
(T
<ITS-CLOSED ,POST-DOOR>
<RFALSE>)>)>>
<ROUTINE I-HOORAY ()
<DISABLE <INT I-HOORAY>>
<SETG POWER <- <RANDOM 3> 1>>
<CRLF>
<UPDATE-SCORE 1>>
<OBJECT POST-OFFICE
(IN LOCAL-GLOBALS)
(DESC "Post Office")
(SYNONYM OFFICE BUILDING)
(ADJECTIVE POST LITTLE BRICK)
(FLAGS NDESCBIT)
(ACTION POST-OFFICE-F)>
<ROUTINE POST-OFFICE-F ()
<COND (<AND ,SKEWED?
<NOT ,SUCCESS?>>
<CANT-SEE-ANY ,POST-OFFICE>
<RFATAL>)
(<EQUAL? ,HERE ,CLIFF-EDGE>
<TOO-FAR-AWAY ,POST-OFFICE>
<RFATAL>)
(<ENTER-FROM? ,HILLTOP ,INSIDE-POST-OFFICE ,POST-OFFICE>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,INSIDE-POST-OFFICE>
<V-LOOK>)
(T
<COND (<FSET? ,POST-DOOR ,OPENBIT>
<GO-INSIDE>)>)>)
(T
<RFALSE>)>>
<OBJECT POST-DOOR
(IN LOCAL-GLOBALS)
(DESC "Post Office door")
(SYNONYM DOOR ENTRANCE ENTRY LOCK)
(ADJECTIVE FRONT POST OFFICE)
(FLAGS DOORBIT OPENBIT NDESCBIT)
(ACTION POST-DOOR-F)>
<ROUTINE POST-DOOR-F ()
<COND (,SKEWED?
<CANT-SEE-ANY "any doors" T>
<RFATAL>)>
<THIS-IS-IT ,POST-DOOR>
<COND (<VERB? KNOCK>
<COND (<FSET? ,POST-DOOR ,OPENBIT>
<ALREADY-OPEN>)
(<EQUAL? ,HERE ,INSIDE-POST-OFFICE>
<WASTE-OF-TIME>)
(<NOT <FSET? ,POST-DOOR ,LOCKEDBIT>>
<TELL "A voice inside " <PICK-ONE ,YELL-TYPES>
", \"Come in!\"" CR>)
(T
<RFALSE>)>
<RTRUE>)
(<USE-DOOR? ,HILLTOP>
<RTRUE>)
(T
<RFALSE>)>>
"*** INSIDE POST OFFICE ***"
<OBJECT INSIDE-POST-OFFICE
(IN ROOMS)
(DESC "Post Office")
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL POST-OFFICE POST-DOOR)
(NORTH PER EXIT-POST-OFFICE)
(OUT PER EXIT-POST-OFFICE)
(PSEUDO "POSTCARD" POSTCARD-PSEUDO
"LOBBY" HERE-F)
(ACTION INSIDE-POST-OFFICE-F)>
<ROUTINE INSIDE-POST-OFFICE-F ("OPTIONAL" (CONTEXT <>))
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"This is the " D ,GLOBBY " of the Festeron " D ,POST-OFFICE ". The walls are lined with small, private mailboxes and " D ,POSTER "s. A " D ,COUNTER " runs along the entire length of the room.">
<COND (<FIRST? ,COUNTER>
<TELL " " ,YOU-SEE>
<PRINT-CONTENTS ,COUNTER>
<TELL " on the " D ,COUNTER ".">)>
<COND (<IN? ,CRISP ,INSIDE-POST-OFFICE>
<TELL CR CR "Your boss, " D ,CRISP ", is ">
<COND (<FSET? ,CRISP ,TOUCHBIT>
<TELL "watching you impatiently.">)
(T
<FSET ,CRISP ,TOUCHBIT>
<TELL
"behind the " D ,COUNTER " reading other people's postcards.">)>)>
<CRLF>)>>
<ROUTINE EXIT-POST-OFFICE ()
<COND (<FSET? ,POST-DOOR ,OPENBIT>
<COND (<AND <FSET? ,ENVELOPE ,RMUNGBIT> ; "Given?"
<HELD? ,ENVELOPE>>
<TELL
"As you leave the " D ,POST-OFFICE ", somebody">
<SLAMS-AND-LOCKS>)
(T
<TELL D ,CRISP " " <PICK-ONE ,YELL-TYPES>
", \"Come back here, " <PICK-ONE ,INSULTS>>
<COND (<FSET? ,ENVELOPE ,RMUNGBIT> ; "Given?"
<TELL "! You forgot the envelope">)>
<TELL "!\"">)>
<CRLF>
<CRLF>
<RETURN ,HILLTOP>)
(T
<ITS-CLOSED ,POST-DOOR>
<RFALSE>)>>
<ROUTINE SLAMS-AND-LOCKS ()
<TELL " slams and locks the door behind you.">
<SETG ANGER 4>
<DISABLE <INT I-CRISP-CALLING>>
<DISABLE <INT I-GIVE-ENVELOPE>>
<FCLEAR ,POST-DOOR ,OPENBIT>
<FSET ,POST-DOOR ,LOCKEDBIT>>
<ROUTINE POSTCARD-PSEUDO ()
<TELL ,CANT " do that. " D ,CRISP " has hidden them." CR>
<RFATAL>>
<OBJECT COUNTER
(IN INSIDE-POST-OFFICE)
(DESC "service counter")
(SYNONYM COUNTER)
(ADJECTIVE SERVICE)
(FLAGS SURFACEBIT NDESCBIT)
(ACTION COUNTER-F)
(CAPACITY 10)>
<ROUTINE COUNTER-F ()
<COND (<VERB? LOOK-BEHIND LOOK-INSIDE LOOK-UNDER>
<COND (<NOT <FSET? ,ENVELOPE ,RMUNGBIT>> ; "Not given?"
<TELL D ,CRISP
" pushes you away before you can get a good look." CR>
<RTRUE>)
(T
<RFALSE>)>)
(<GETTING-INTO?>
<TELL D ,CRISP " might yell at you">
<IF-YOU-TRIED>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT POSTER
(IN INSIDE-POST-OFFICE)
(DESC "wanted poster")
(SYNONYM POSTER)
(ADJECTIVE WANTED)
(FLAGS NDESCBIT READBIT ; TRYTAKEBIT)
(ACTION POSTER-F)>
<ROUTINE POSTER-F ()
<COND (<VERB? EXAMINE READ>
<COND (<EQUAL? ,HERE ,INSIDE-POST-OFFICE>
<FIXED-FONT-ON>
<TELL CR
" WANTED!|
For Impersonating A|
Storyteller|
\"PROFESSOR\" BRIAN MORIARTY" CR>
<FIXED-FONT-OFF>)
(,SKEWED?
<SAY-THE ,POSTER>
<HAS-YOUR-NAME>)
(T
<TELL "It's the same as the one in the "
D ,POST-OFFICE "." CR>)>
<RTRUE>)
(<OR <HURT? ,POSTER>
<VERB? TAKE>>
<COND (<EQUAL? ,HERE ,INSIDE-POST-OFFICE>
<PRINTD ,CRISP>)
(T
<PRINTD ,MACGUFFIN>)>
<MIGHT-NOT-LIKE>
<RTRUE>)
(T
<YOU-DONT-NEED ,POSTER>
<RFATAL>)>>
<ROUTINE HAS-YOUR-NAME ()
<TELL " has your name on it!" CR>>
<ROUTINE PRIVATE-BOXES? ()
<COND (<VERB? EXAMINE>
<SAY-THE ,SMALL-BOX>
<TELL "es are">
<CLOSED-AND-LOCKED>)
(<OR <HURT? ,SMALL-BOX>
<VERB? OPEN LOOK-INSIDE LOOK-DOWN UNLOCK REACH-IN>>
<SAY-THE ,SMALL-BOX>
<TELL "es are private!">
<LEAVE-THEM-ALONE>
<CRLF>)
(T
<YOU-DONT-NEED ,SMALL-BOX>
<RFATAL>)>
<RTRUE>>
<ROUTINE LEAVE-THEM-ALONE ()
<TELL " Better leave them alone.">>
"*** OUTSIDE CEMETERY ***"
<OBJECT OUTSIDE-CEMETERY
(IN ROOMS)
(DESC "Outside Cemetery")
(GLOBAL SOUTH-GATE HILL CEMETERY)
(FLAGS ONBIT RLANDBIT)
(EAST TO HILLTOP)
(UP TO HILLTOP)
(WEST PER ARE-YOU-SURE?)
(IN PER ARE-YOU-SURE?)
(ACTION OUTSIDE-CEMETERY-F)>
<ROUTINE OUTSIDE-CEMETERY-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<STANDING>
<TELL "next to a">
<OPEN-CLOSED ,SOUTH-GATE T>
<TELL "iron gate that leads west into the">
<WHICH-TOWN "Cemetery">
<TELL
". A road runs east to the top of " D ,POST-OFFICE " Hill." CR>)>>
<OBJECT SOUTH-GATE
(IN LOCAL-GLOBALS)
(DESC "iron gate")
(SYNONYM GATE GATES LOCK BARS)
(ADJECTIVE IRON TALL)
(FLAGS NDESCBIT VOWELBIT DOORBIT OPENBIT)
(ACTION SOUTH-GATE-F)>
<ROUTINE SOUTH-GATE-F ()
<THIS-IS-IT ,SOUTH-GATE>
<COND (<VERB? ENTER THROUGH WALK-TO USE>
<COND (<EQUAL? ,HERE ,CREEPY-CORNER>
<DO-WALK ,P?EAST>)
(T
<DO-WALK ,P?WEST>)>
<RTRUE>)
(<GENERIC-GATE? ,SOUTH-GATE>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE GENERIC-GATE? (GATE)
<COND (<VERB? EXAMINE LOOK-ON>
<TELL "The bars of the">
<OPEN-CLOSED .GATE>
<TELL D .GATE " are 12 feet high, and closely spaced." CR>
<RTRUE>)
(<VERB? LEAP CLIMB-UP CLIMB-ON>
<TOO-HIGH .GATE>
<RTRUE>)
(<AND <VERB? CLOSE>
<FSET? .GATE ,OPENBIT>>
<SAY-THE .GATE>
<TELL " is too big to close by yourself." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE TOO-HIGH (THING)
<TELL "The " D .THING " is much too high." CR>>
"*** OUTSIDE COTTAGE ***"
<GLOBAL WHERE-FROM <>>
<ROUTINE ENTER-OUTSIDE-COTTAGE ()
<COND (<EQUAL? ,HERE ,ROTARY-SOUTH>
<WAIT-CRY T>)>
<SETG WHERE-FROM ,HERE>
<COND (,SKEWED?
<SETG DOG-SCRIPT 0>)>
; <SETG POODLE-HAPPY? <>>
<RETURN ,OUTSIDE-COTTAGE>>
<OBJECT OUTSIDE-COTTAGE
(IN ROOMS)
(DESC "Outside Cottage")
(FLAGS ONBIT RLANDBIT)
(GLOBAL HILL COTTAGE COTTAGE-DOOR)
(NORTH PER NORTH-PAST-DOG?)
(EAST PER ENTER-VOSS?)
(WEST PER WEST-PAST-DOG?)
(UP PER WEST-PAST-DOG?)
(IN PER ENTER-VOSS?)
(ACTION OUTSIDE-COTTAGE-F)>
<ROUTINE LIBRARIAN ()
<THIS-IS-IT ,MISS-VOSS>
<PRINTD ,MISS-VOSS>
<TELL ", the ">
<COND (,SKEWED?
<TELL "former ">)>
<TELL "town librarian">>
<ROUTINE OUTSIDE-COTTAGE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "You're outside the " D ,COTTAGE " of ">
<LIBRARIAN>
<TELL ". The road turns north toward the " D ,FESTERON ", and bends upward to the summit of " D ,POST-OFFICE " Hill." CR>)>>
<ROUTINE TEETH-OR-FANGS ()
<COND (,SKEWED?
<TELL "sharp, bloody fangs">)
(T
<SHARP-TEETH>)>>
<ROUTINE SHARP-TEETH ()
<TELL "sharp little teeth">>
<ROUTINE NORTH-PAST-DOG? ()
<COND (<DOG-ONLY-ALLOWS? ,ROTARY-SOUTH>
<COND (<NOT <FSET? ,ROTARY-SOUTH ,TOUCHBIT>>
<FSET ,NORTH-GATE ,LOCKEDBIT>
<FCLEAR ,NORTH-GATE ,OPENBIT>
<MOVE ,POSTER ,INSIDE-POLICE-STATION>)>
<RETURN <ENTER-ROTARY-SOUTH>>)
(T
<RFALSE>)>>
<ROUTINE WEST-PAST-DOG? ()
<COND (<DOG-ONLY-ALLOWS? ,HILLTOP>
<RETURN ,HILLTOP>)
(T
<RFALSE>)>>
<ROUTINE DOG-ONLY-ALLOWS? (FROM)
<COND (,POODLE-HAPPY?
<REMOVE ,BONE>
<SETG POODLE-HAPPY? <>>
<DOG-THREATENS>
<RTRUE>)
(<OR <EQUAL? ,WHERE-FROM .FROM>
,HELLHOUND-HAPPY?
,ECLIPSE?>
<DOG-THREATENS>
<RTRUE>)
(T
<SAY-THE ,POOCH>
<TELL " won't let you go that way." CR>
<RFALSE>)>>
<ROUTINE DOG-THREATENS ()
<SAY-THE ,POOCH>
<COND (,ECLIPSE?
<TELL
" howls mournfully in the " D ,DARKNESS " as you creep past.">)
(,HELLHOUND-HAPPY?
<THUMPS-TAIL>)
(T
<TELL " ">
<BARK-OR-ROAR>
<TELL "s a threat as you back away.">)>
<CRLF>
<CRLF>>
<ROUTINE THUMPS-TAIL ()
<TELL " thumps its big tail happily as you pass.">>
<OBJECT POODLE
(IN OUTSIDE-COTTAGE)
(DESC "poodle")
(SYNONYM POODLE DOG MUTT)
(ADJECTIVE TINY SMALL LITTLE MEAN)
(FLAGS ACTORBIT ; NDESCBIT TRYTAKEBIT RMUNGBIT)
(DESCFCN DESCRIBE-POOCH)
(ACTION CANINE-F)>
; "RMUNGBIT means poodle has not been fed the bone"
<OBJECT HELLHOUND
(DESC "hellhound")
(SYNONYM HELLHOUND HOUND DOG MUTT)
(ADJECTIVE BIG LARGE HELL)
(FLAGS ACTORBIT ; NDESCBIT TRYTAKEBIT)
(DESCFCN DESCRIBE-POOCH)
(ACTION CANINE-F)>
<ROUTINE DESCRIBE-POOCH (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-OBJDESC>
<COND (<NOT <FSET? ,POOCH ,TOUCHBIT>>
<FSET ,POOCH ,TOUCHBIT>
<TELL
"As you approach the " D ,COTTAGE " you are greeted by the ">
<COND (,SKEWED?
<TELL "bigg">)
(T
<TELL "tini">)>
<TELL "est " D ,POOCH
" you've ever seen in your entire life. It charges across the street, ">
<COND (,SKEWED?
<TELL "roar">)
(T
<TELL "yapp">)>
<TELL "ing angrily and showing its ">
<TEETH-OR-FANGS>
<TELL ".">
<RTRUE>)
(,ECLIPSE?
<TELL "A " D ,HELLHOUND
" is hiding its eyes under its paws">)
(,HELLHOUND-HAPPY?
<TELL "A happy " D ,HELLHOUND
" is thumping its tail nearby">)
(,POODLE-HAPPY?
<TELL "A tiny " D ,POODLE
" is gnawing on a bone and watching you">)
(T
<TELL "An angry " D ,POOCH
" is blocking your path">)>
<TELL ".">
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT ALEXIS
(IN OUTSIDE-COTTAGE)
(DESC "Alexis")
(SYNONYM ALEXIS)
(FLAGS ACTORBIT NDESCBIT NARTICLEBIT)
(ACTION ALEXIS-F)>
<GLOBAL POOCH POODLE>
<GLOBAL POODLE-HAPPY? <>>
<GLOBAL HELLHOUND-HAPPY? <>>
<ROUTINE CANINE-F ("OPTIONAL" (CONTEXT <>))
<COND (<VERB? EXAMINE>
<SAY-THE ,POOCH>
<TELL " is ">
<COND (,ECLIPSE?
<TELL "watching the dark sky anxiously">)
(,HELLHOUND-HAPPY?
<TELL "thumping its big tail happily">)
(,SKEWED?
<TELL
"big enough to eat you whole, and willing to try">)
(,POODLE-HAPPY?
<TELL "watching you as it gnaws on the bone">)
(T
<TELL "tiny, mean and ">
<COND (<FSET? ,POODLE ,RMUNGBIT>
<TELL "hungry">)
(T
<TELL "nasty">)>
<TELL "-looking">)>
<TELL "." CR>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,POOCH>>
<SAY-THE ,POOCH>
<MIGHT-NOT-LIKE>
<RTRUE>)
(<VERB? RUB KISS>
<SAY-THE ,POOCH>
<COND (,HELLHOUND-HAPPY?
<TELL " seems to enjoy your attention." CR>)
(T
<TELL " would probably chew you up">
<IF-YOU-TRIED>)>
<RTRUE>)
(<AND <VERB? GIVE THROW FEED>
<EQUAL? ,PRSI ,POOCH ,ALEXIS>>
<COND (<EQUAL? ,PRSO ,BROOM>
<GET-OFF-BROOM-FIRST>)>
<SAY-THE ,POOCH>
<COND (,ECLIPSE?
<TELL " is too uneasy to notice it." CR>
<RTRUE>)>
<TELL " tests ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " with its tongue, ">
<COND (<EQUAL? ,PRSO ,BONE>
; <AND <EQUAL? ,PRSO ,BONE>
<EQUAL? ,PRSI ,POODLE>>
<MOVE ,BONE ,OUTSIDE-COTTAGE>
<FSET ,BONE ,NDESCBIT>
<FCLEAR ,POODLE ,RMUNGBIT>
<SETG POODLE-HAPPY? T>
<TELL
"lies down and begins to gnaw on it, keeping a red eye on you." CR CR>
<UPDATE-SCORE 3>
<RTRUE>)
(<EQUAL? ,PRSO ,CHOCOLATE ; ,KITTY ,WORM>
<REMOVE ,PRSO>
<TELL "gobbles it down greedily">)
(T
<MOVE ,PRSO ,OUTSIDE-COTTAGE>
<TELL "drops it on the road">)>
<TELL " and turns to ">
<BARK-OR-ROAR>
<TELL " at you again." CR>
<RTRUE>)
(<OR <TALKING-TO? ,POOCH>
<TALKING-TO? ,ALEXIS>
<EQUAL? ,PRSA ,V?YELL>>
<COND (,HELLHOUND-HAPPY?
<SOUND-OF-VOICE>
<RFATAL>)>
<SAY-THE ,POOCH>
<TELL " growls ">
<COND (,ECLIPSE?
<TELL "uneasi">)
(T
<TELL "dangerous">)>
<TELL "ly in reply." CR>
<RFATAL>)
(<OR <HURT? ,POOCH>
<VERB? CLIMB-ON CLIMB-UP SHAKE SQUEEZE>>
<COND (,HELLHOUND-HAPPY?
<TELL "Why">
<DO-TO>
<TELL "a friendly, obedient " D ,HELLHOUND "?">)
(T
<TELL "Are you kidding? This " D ,POOCH " is MEAN!">)>
<CRLF>
<RTRUE>)
(<VERB? LISTEN>
<TELL "It ">
<BARK-OR-ROAR>
<TELL "s louder." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE ALEXIS-F ("OPTIONAL" (CONTEXT <>))
<COND (<NOT <EQUAL? ,HERE ,OUTSIDE-COTTAGE>>
<CANT-SEE-ANY ,ALEXIS>
<RFATAL>)
(<EQUAL? .CONTEXT ,M-WINNER>
<COND (<VERB? HEEL>
<PRINTD ,ALEXIS>
<COND (,HELLHOUND-HAPPY?
<TELL " is already doing that!" CR>)
(T
<SETG HELLHOUND-HAPPY? T>
<DISABLE <INT I-BARKING>>
<SETG P-HER-OBJECT ,HELLHOUND>
<TELL
" pricks up her ears at the sound of her name. She sits obediently at your feet, gently licks " D ,HANDS " and thumps her big tail happily." CR CR>
<UPDATE-SCORE 5>)>)
(,HELLHOUND-HAPPY?
<SOUND-OF-VOICE>)
(T
<FOOL-POOCH>)>
<RFATAL>)
(<NOT ,NOTE-READ?>
<SETG P-HER-OBJECT ,HELLHOUND>
<FOOL-POOCH>
<RFATAL>)
(<AND <VERB? TELL>
<EQUAL? ,PRSO ,ALEXIS>>
<RFALSE>)
(<CANINE-F .CONTEXT>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE FOOL-POOCH ()
<SAY-THE ,POOCH>
<TELL " decides that you're only guessing its name, and ">
<BARK-OR-ROAR>
<TELL "s all the louder." CR>>
<ROUTINE SOUND-OF-VOICE ()
<SAY-THE ,POOCH>
<TELL " thumps its tail harder at the sound of your voice." CR>>
<GLOBAL POODLE-HINTS
<LTABLE 0
"Try examining the poodle. You might discover something"
"Look around. You might find something the poodle would like"
"Maybe you can bribe the poodle with something">>
<GLOBAL DOG-SCRIPT 0>
<GLOBAL P-HINT 0>
<ROUTINE BARK-OR-ROAR ()
<COND (,ECLIPSE?
<TELL "whimper">)
(,HELLHOUND-HAPPY?
<TELL "thump">)
(,SKEWED?
<TELL "roar">)
(T
<TELL "yap">)>>
<ROUTINE I-BARKING ()
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<EQUAL? ,HERE ,OUTSIDE-COTTAGE>
<COND (,POODLE-HAPPY?
<RTRUE>)>
<SETG DOG-SCRIPT <+ ,DOG-SCRIPT 1>>
<SETG P-HINT <+ ,P-HINT 1>>
<THIS-IS-IT ,POOCH>
<CRLF>
<COND (<AND <NOT ,SKEWED?>
<FSET? ,POODLE ,RMUNGBIT>
<NOT <IN? ,BONE ,PROTAGONIST>>
<G? ,P-HINT 8>>
<SETG DOG-SCRIPT 0>
<SETG P-HINT 0>
<TELL "(" <PICK-ONE ,POODLE-HINTS> ".)" CR>)
(<EQUAL? ,DOG-SCRIPT 1>
<TELL
"You can smell the " D ,POOCH "'s hot breath as it ">
<BARK-OR-ROAR>
<TELL "s." CR>)
(<EQUAL? ,DOG-SCRIPT 2>
<SAY-THE ,POOCH>
<TELL
" glares at you through eyes red with hatred." CR>)
(<EQUAL? ,DOG-SCRIPT 3>
<TELL ,YOU-HEAR "the " D ,POOCH "'s ">
<TEETH-OR-FANGS>
<TELL " snapping as it nips your heels." CR>)
(<EQUAL? ,DOG-SCRIPT 4>
<SAY-THE ,POOCH>
<TELL
" circles you warily, snarling and growling with menace.">
<COND (<AND ,SKEWED?
<NOT ,LUCKY?>>
<TELL
" It looks as if it's getting ready to attack!">)
(T
<SETG DOG-SCRIPT 0>)>
<CRLF>)
(T
<TELL "With a savage leap, the " D ,HELLHOUND
" lives up to its bloodthirsty reputation.">
<BAD-ENDING>)>)>>
<OBJECT BONE
(IN OPEN-GRAVE)
(DESC "old bone")
(SYNONYM BONE)
(ADJECTIVE OLD)
(FLAGS TAKEBIT VOWELBIT RMUNGBIT)
(VALUE 1)
(SIZE 5)>
; "RMUNGBIT = bone not discovered"
"*** INSIDE VOSS HOUSE ***"
<OBJECT COTTAGE-DOOR
(IN LOCAL-GLOBALS)
(DESC "cottage door")
(SYNONYM DOOR ENTRANCE ENTRY LOCK)
(ADJECTIVE COTTAGE)
(FLAGS NDESCBIT DOORBIT)
(ACTION COTTAGE-DOOR-F)>
<ROUTINE COTTAGE-DOOR-F ()
<COND (<SEE-VERB?>
<RFALSE>)
(<USE-DOOR? ,OUTSIDE-COTTAGE>
<RTRUE>)
(<NOT ,HELLHOUND-HAPPY?>
<COND (,ECLIPSE?
<TOO-DARK>)
(T
<WONT-LET-YOU-NEAR>)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE ENTER-VOSS? ()
<COND (<FSET? ,COTTAGE-DOOR ,OPENBIT>
<SAY-THE ,POOCH>
<THUMPS-TAIL>
<CRLF>
<CRLF>
<RETURN ,INSIDE-COTTAGE>)
(T
<COND (<OR ,HELLHOUND-HAPPY? ,ECLIPSE?>
<ITS-CLOSED ,COTTAGE-DOOR>)
(T
<WONT-LET-YOU-NEAR>)>
<RFALSE>)>>
<ROUTINE WONT-LET-YOU-NEAR ()
<SAY-THE ,POOCH>
<TELL
" won't let you near the " D ,COTTAGE "." CR>>
<OBJECT COTTAGE
(IN LOCAL-GLOBALS)
(DESC "cottage")
(SYNONYM COTTAGE HOUSE BUILDING HOME)
(FLAGS NDESCBIT)
(ACTION COTTAGE-F)>
<ROUTINE COTTAGE-F ()
<COND (<ENTER-FROM? ,OUTSIDE-COTTAGE ,INSIDE-COTTAGE ,COTTAGE>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,INSIDE-COTTAGE>
<V-LOOK>)
(T
<TELL "It">
<COND (,SKEWED?
<TELL
" looks as if it was deserted a long time ago">)
(T
<TELL
"'s a tidy, happy-looking little place">)>
<TELL "." CR>)>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT INSIDE-COTTAGE
(IN ROOMS)
(DESC "Cottage")
(GLOBAL COTTAGE COTTAGE-DOOR)
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(WEST TO OUTSIDE-COTTAGE IF COTTAGE-DOOR IS OPEN)
(OUT TO OUTSIDE-COTTAGE IF COTTAGE-DOOR IS OPEN)
(ACTION INSIDE-COTTAGE-F)>
<ROUTINE INSIDE-COTTAGE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL "This is the " D ,COTTAGE " of ">
<LIBRARIAN>
<TELL ". The walls are lined with timeworn books and dusty, faded photographs. Looks as if nobody's lived here for a long time." CR>)>>
<OBJECT BOOKCASE
(IN INSIDE-COTTAGE)
(DESC "bookcase")
(SYNONYM BOOKCASE CASE)
(ADJECTIVE BOOK)
(FLAGS SURFACEBIT)
(CAPACITY 10)
(ACTION BOOKCASE-F)
(DESCFCN DESCRIBE-BOOKCASE)>
<ROUTINE DESCRIBE-BOOKCASE (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-OBJDESC>
<TELL "There's a dusty " D ,BOOKCASE>
<COND (<FIRST? ,BOOKCASE>
<TELL " with ">
<PRINT-CONTENTS ,BOOKCASE>
<TELL " on it">)>
<TELL " near the">
<OPEN-CLOSED ,COTTAGE-DOOR>
<TELL D ,HOUSE-DOOR ".">
<COND (<NOT <FSET? ,SCRAWL ,RMUNGBIT>>
<TELL
" Somebody has scrawled a message in the dust on the " D ,BOOKCASE ".">)>)>>
<ROUTINE BOOKCASE-F ()
<COND (<GETTING-INTO?>
<WASTE-OF-TIME>
<RTRUE>)
(<VERB? EXAMINE>
<TELL ,YOU-SEE>
<PRINT-CONTENTS ,BOOKCASE>
<TELL " on the " D ,BOOKCASE>
<COND (<NOT <FSET? ,SCRAWL ,RMUNGBIT>>
<TELL ", ">
<COND (<FIRST? ,BOOKCASE>
<TELL "and">)
(T
<TELL "except for">)>
<TELL " a message scrawled on its dusty surface">)>
<TELL "." CR>
<RTRUE>)
(<HURT? ,BOOKCASE>
<HOW-WOULD-YOU-LIKE-IT ,BOOKCASE>
<RTRUE>)
(<VERB? OPEN CLOSE>
<TELL "It's not that kind of " D ,BOOKCASE "." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT LIBRARY-KEY
(IN BOOKCASE)
(DESC "steel key")
(SYNONYM KEY)
(ADJECTIVE STEEL)
(FLAGS TAKEBIT READBIT)
(VALUE 3)
(SIZE 1)
(ACTION LIBRARY-KEY-F)>
<ROUTINE LIBRARY-KEY-F ()
<COND (<VERB? EXAMINE READ>
<TELL "The words \"Witchville Public Library\" are etched into the " D ,LIBRARY-KEY "." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT SCRAWL
(IN INSIDE-COTTAGE)
(DESC "scrawled message")
(SYNONYM MESSAGE)
(ADJECTIVE SCRAWL DUST)
(FLAGS NDESCBIT READBIT)
(ACTION SCRAWL-F)>
<ROUTINE SCRAWL-F ()
<COND (<VERB? EXAMINE READ>
<COND (<FSET? ,SCRAWL ,RMUNGBIT>
<TELL "You rubbed out the " D ,SCRAWL "." CR>)
(T
<SAY-THE ,SCRAWL>
<TELL
" is enclosed in a heart-shaped outline. It says," CR>
<FIXED-FONT-ON>
<TELL CR
"VIOLET + CORKY|
XXXX" CR>
<FIXED-FONT-OFF>)>
<RTRUE>)
(<OR <HURT? ,SCRAWL>
<VERB? MOVE PULL PUSH RUB>>
<FSET ,SCRAWL ,RMUNGBIT>
<SAY-THE ,SCRAWL>
<TELL " is rubbed out." CR>
<RTRUE>)
(<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,SCRAWL>>
<TELL ,I-ASSUME " the " D ,BOOKCASE ".)" CR>
<PERFORM ,V?PUT-ON ,PRSO ,BOOKCASE>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT BOOKS
(IN INSIDE-COTTAGE)
(DESC "books and photographs")
(SYNONYM BOOK BOOKS PHOTOS PHOTOGRAPHS)
(ADJECTIVE TIMEWORN DUSTY FADED)
(FLAGS NDESCBIT READBIT TRYTAKEBIT)
(ACTION BOOKS-F)>
<ROUTINE BOOKS-F ()
<COND (<AND <VERB? EXAMINE READ TAKE>
<EQUAL? ,PRSO ,BOOKS>>
<UNFORTUNATELY>
<TELL "you don't have time for browsing." CR>)
(<HURT? ,BOOKS>
<HOW-WOULD-YOU-LIKE-IT ,BOOKS>)
(T
<YOU-DONT-NEED ,BOOKS>
<RFATAL>)>
<RTRUE>>

730
syntax.zil Normal file
View File

@ -0,0 +1,730 @@
"SYNTAX for WISHBRINGER: (C)1985 Infocom, Inc. All Rights Reserved."
<BUZZ A AN THE IS ARE AM AND OF THEN ALL BUT EXCEPT \. \, \"
PRY HERE SOME ; PLEASE>
<SYNONYM TO TOWARD>
<SYNONYM WITH USING>
<SYNONYM THROUGH THRU>
<SYNONYM ON ONTO>
<SYNONYM IN INSIDE INTO BEYOND BETWEEN>
<SYNONYM OUT OUTSIDE>
<SYNONYM UNDER BELOW BENEATH UNDERNEATH>
<SYNONYM AROUND ALONG>
<SYNONYM ALL BOTH EVERYTHING>
<SYNONYM OVER ACROSS>
<SYNONYM NORTH N>
<SYNONYM SOUTH S>
<SYNONYM EAST E>
<SYNONYM WEST W>
<SYNONYM DOWN D>
<SYNONYM UP U>
<SYNTAX NE = V-BAD-DIRECTION>
<SYNONYM NE NORTHE NORTHW SOUTHE SOUTHW>
<SYNTAX NW = V-BAD-DIRECTION>
<SYNTAX SE = V-BAD-DIRECTION>
<SYNTAX SW = V-BAD-DIRECTION>
<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 RESTART = V-RESTART>
<SYNTAX RESTORE = V-RESTORE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SAVE OBJECT = V-RESCUE>
<SYNTAX SCORE = V-SCORE>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX TIME = V-TIME>
<SYNONYM TIME T>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX VERSION = V-VERSION>
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX $VERIFY OBJECT = V-$VERIFY>
; "<SYNTAX $MOVIE = V-$MOVIE>
<SYNTAX $SHOPPE = V-$SHOPPE>
<SYNTAX $CLIFF = V-$CLIFF>
<SYNTAX $CRACK = V-$CRACK>
<SYNTAX $TREE = V-$TREE>
<SYNTAX $SKEW = V-$SKEW>
<SYNTAX $TUNNEL = V-$TUNNEL>
<SYNTAX $PLAT = V-$PLAT>
<SYNTAX $MACHINE = V-$MACHINE>
<SYNTAX $END = V-$END>
<SYNTAX $GOLD = V-$GOLD>
<SYNTAX $DEBUG = V-$DEBUG>"
; <SYNTAX $FINALE = V-$FINALE>
<SYNTAX AGAIN = V-AGAIN>
<SYNONYM AGAIN G>
<SYNTAX ANSWER OBJECT (FIND ACTORBIT) = V-REPLY>
<SYNTAX ANSWER TO OBJECT (FIND ACTORBIT) = V-REPLY>
<SYNONYM ANSWER REPLY RESPOND ; RETORT>
; <SYNTAX APPLY OBJECT (HELD MANY) TO OBJECT = V-PUT PRE-PUT>
<SYNTAX ASK OBJECT (FIND ACTORBIT) = V-QUESTION>
<SYNTAX ASK OBJECT (FIND ACTORBIT) ABOUT OBJECT = V-ASK-ABOUT>
<SYNTAX ASK OBJECT (FIND ACTORBIT) FOR OBJECT = V-ASK-FOR>
<SYNONYM ASK QUERY INTERROGATE QUIZ QUESTION>
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-KILL>
<SYNONYM ATTACK ASSAULT FIGHT HURT INJURE>
<SYNTAX BACK = V-WALK-AROUND>
<SYNTAX BITE OBJECT = V-BITE>
<SYNTAX BLOW OBJECT = V-BLOW-INTO>
<SYNTAX BLOW IN OBJECT = V-BLOW-INTO>
<SYNTAX BLOW THROUGH OBJECT = V-BLOW-INTO>
<SYNTAX BLOW UP OBJECT = V-MUNG ; V-INFLATE>
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
; <SYNTAX BOARD OBJECT (FIND VEHBIT)
(ON-GROUND IN-ROOM) = V-ENTER ; "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) = 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 BUY OBJECT ; (ON-GROUND IN-ROOM) = V-BUY>
<SYNTAX BUY OBJECT WITH OBJECT (HELD HAVE) = V-BUY>
<SYNTAX CLEAN OBJECT = V-CLEAN>
<SYNTAX CLEAN OFF OBJECT = V-CLEAN>
<SYNONYM CLEAN SWEEP ; WIPE BRUSH ; POLISH>
; <SYNTAX CLIMB = V-CLIMB-UP>
<SYNTAX CLIMB OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<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 (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-OVER>
<SYNTAX CLIMB UNDER OBJECT (ON-GROUND IN-ROOM) = V-THROUGH>
<SYNTAX CLIMB IN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-ENTER>
<SYNTAX CLIMB OUT OBJECT (FIND RLANDBIT) = V-EXIT>
<SYNONYM CLIMB SCALE>
; <SYNTAX ASCEND = V-CLIMB-UP>
<SYNTAX ASCEND OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
; <SYNTAX DESCEND = V-CLIMB-DOWN>
<SYNTAX DESCEND OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX CLOSE OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-CLOSE>
<SYNONYM CLOSE SLAM>
<SYNTAX SHUT OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
; <SYNTAX COMPARE OBJECT TO OBJECT = V-COMPARE>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNONYM COUNT TALLY ; TABULATE>
<SYNTAX CROSS OBJECT = V-CROSS>
<SYNONYM CROSS 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 TEAR RIP SLASH ; "SLICE GASH LACERATE CLEAVE SEVER SPLIT">
; <SYNTAX FUCK = V-CURSE>
; <SYNTAX FUCK OBJECT (FIND ACTORBIT) = V-CURSE>
; <SYNONYM FUCK FUCKED CURSE GODDAMNED CUSS DAMN SHIT CHOMP ASSHOLE HELL
SHITHEAD PISS SUCK BASTARD SCREW FUCKING DAMNED PEE COCKSUCKER>
; <SYNTAX DEFLATE OBJECT = V-DEFLATE>
<SYNTAX BREAK OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
<SYNTAX BREAK OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HAVE HELD CARRIED) = V-MUNG>
<SYNTAX BREAK OBJECT (ON-GROUND IN-ROOM)
OFF OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
<SYNTAX BREAK DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HAVE HELD CARRIED) = V-MUNG>
<SYNTAX BREAK IN OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
<SYNTAX BREAK IN OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (HAVE HELD CARRIED) = V-MUNG>
<SYNTAX BREAK THROUGH OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
<SYNTAX BREAK THROUGH OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (HAVE HELD CARRIED) = V-MUNG>
<SYNONYM BREAK DESTROY DAMAGE SMASH DEMOLISH WRECK CRACK TRASH ERASE>
<SYNTAX DIG IN OBJECT = V-DIG>
<SYNTAX DIG AT OBJECT = V-DIG>
<SYNTAX DIG UP 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 GUZZLE ; "IMBIBE QUAFF SWILL">
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP>
<SYNTAX DROP OBJECT (HELD MANY) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT-ON>
<SYNONYM DROP DUMP>
<SYNTAX EAT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-EAT>
<SYNONYM EAT CONSUME SWALLOW DEVOUR GOBBLE NIBBLE ; INGEST>
<SYNTAX ENTER OBJECT (FIND RLANDBIT) = V-THROUGH>
<SYNONYM ENTER ; BOARD ; EMBARK>
; <SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT (FIND RLANDBIT) = V-EXIT>
<SYNONYM EXIT DEPART SCRAM WITHDRAW ; DISEMBARK ; DEBARK>
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM) ; (FIND DARKBIT)
= 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-ON>
<SYNTAX EXAMINE FOR OBJECT = V-FIND>
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
THROUGH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LOOK-THRU>
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LOOK-THRU>
<SYNONYM EXAMINE ; EXAM INSPECT DESCRIBE CHECK STUDY SURVEY OBSERVE WATCH SEE>
<SYNTAX EXTINGUISH OBJECT (FIND LIGHTBIT) = V-LAMP-OFF>
<SYNONYM EXTINGUISH DOUSE QUENCH SNUFF>
<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>
<SYNTAX FLY = V-FLY>
<SYNTAX FLY OBJECT = V-FLY>
<SYNTAX FLY ON OBJECT = V-FLY>
<SYNTAX FLY WITH OBJECT = V-FLY>
;<SYNTAX FOLLOW = V-FOLLOW>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<SYNONYM FOLLOW PURSUE CHASE>
<SYNTAX GIVE OBJECT (HELD ; HAVE ; MANY)
TO OBJECT (FIND ACTORBIT) (IN-ROOM ON-GROUND) = V-GIVE PRE-GIVE>
<SYNTAX GIVE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
OBJECT (HELD ; HAVE ; MANY) = V-SGIVE>
<SYNONYM GIVE SHOW HAND DONATE DELIVER OFFER BESTOW PRESENT>
<SYNTAX FEED OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(HELD ; HAVE ; MANY) = V-SFEED>
<SYNTAX FEED OBJECT (HELD ; HAVE ; MANY) TO OBJECT
(FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-FEED PRE-FEED>
<SYNTAX FEED OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
OBJECT (HELD ; HAVE ; MANY) = V-SFEED>
<SYNTAX HEAR OBJECT = V-LISTEN>
<SYNTAX HEEL = V-HEEL>
<SYNTAX HELLO = V-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO>
<SYNONYM HELLO HI GREETINGS GREET SALUTE AFTERNOON BYE GOODBYE FAREWELL>
;<SYNTAX BYE = V-GOODBYE>
;<SYNTAX BYE OBJECT = V-GOODBYE>
;<SYNONYM BYE GOODBYE SAYONARA ADIOS FAREWELL>
<SYNTAX HELP = V-HELP>
<SYNTAX HELP OBJECT = V-RESCUE>
<SYNONYM HELP AID>
<SYNTAX HIDE OBJECT (FIND RLANDBIT) = 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 OBJECT (HELD HAVE) BEHIND OBJECT = V-HIDE>
<SYNTAX HIDE OBJECT (HELD HAVE) UNDER OBJECT = V-HIDE>
<SYNONYM HIDE CONCEAL ; "SECRETE ENSCONCE CAMOUFLAGE">
<SYNTAX COVER OBJECT WITH OBJECT (HELD HAVE) = V-COVER>
; <SYNTAX TUCK IN OBJECT WITH OBJECT (HELD HAVE) = V-COVER>
; <SYNTAX TUCK OBJECT (HELD HAVE) AROUND OBJECT = V-PUT PRE-PUT>
<SYNTAX HINT = V-HELP>
<SYNONYM HINT HINTS>
; <SYNTAX INFLATE OBJECT = V-INFLATE>
<SYNTAX JUMP OBJECT (FIND RLANDBIT) = V-LEAP>
<SYNTAX JUMP ON OBJECT = V-STAND-ON>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNTAX JUMP IN OBJECT (FIND RLANDBIT) = V-ENTER>
<SYNTAX JUMP OUT OBJECT (FIND RLANDBIT) = V-EXIT>
<SYNTAX JUMP FROM OBJECT = V-LEAP>
<SYNTAX JUMP OFF OBJECT = V-LEAP>
<SYNONYM JUMP LEAP DIVE ; " BOUND HURDLE VAULT " >
<SYNTAX KICK OBJECT = V-KICK>
<SYNTAX KICK IN OBJECT = V-KICK>
<SYNTAX KICK DOWN OBJECT = V-KICK>
<SYNTAX KILL OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX KILL OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (HELD CARRIED HAVE) = V-KILL>
<SYNONYM KILL MURDER SLAY HIT SLAP WHACK STRIKE STAB PUNCH WOUND
; "DISPATCH 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-KILL>
<SYNONYM KNOCK RAP POUND>
; <SYNTAX LAUNCH OBJECT (FIND VEHBIT) = V-LAUNCH>
<SYNTAX LEAVE OBJECT (FIND RLANDBIT) = V-LEAVE>
<SYNTAX LEAVE OBJECT (HELD CARRIED HAVE MANY) IN OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT PRE-PUT>
<SYNTAX LEAVE OBJECT (HELD CARRIED HAVE MANY) ON OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT-ON PRE-PUT-ON>
; <SYNTAX LEAVE OBJECT = V-DROP>
<SYNTAX LIE DOWN OBJECT (FIND RLANDBIT) = V-LIE-DOWN>
<SYNTAX LIE ON OBJECT ; (FIND VEHBIT) = V-LIE-DOWN>
<SYNTAX LIE IN OBJECT ; (FIND VEHBIT) = V-LIE-DOWN>
<SYNONYM LIE RECLINE ; REPOSE>
<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 OBJECT (FIND RLANDBIT) = V-LISTEN>
<SYNTAX LISTEN TO OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LISTEN>
<SYNTAX LISTEN IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LISTEN>
<SYNTAX LISTEN FOR OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LISTEN>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (HELD HAVE) = 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 UP OBJECT (FIND RLANDBIT) = V-LOOK-UP>
<SYNTAX LOOK OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-DUMB-EXAMINE PRE-DUMB-EXAMINE>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) ; (FIND DARKBIT)
= V-EXAMINE PRE-EXAMINE>
<SYNTAX LOOK THROUGH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
= V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LOOK-INSIDE>
<SYNTAX LOOK ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LOOK-ON>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM) THROUGH OBJECT
= V-LOOK-THRU>
<SYNTAX LOOK OUT OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNONYM LOOK L STARE GAZE PEER PEEK>
<SYNTAX LOWER OBJECT = V-LOWER>
;<SYNTAX MELT OBJECT WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-MELT>
;<SYNONYM MELT LIQUIFY DISSOLVE THAW>
<SYNTAX MOVE OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) OBJECT = V-PUSH-TO>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) TO OBJECT = V-PUSH-TO>
<SYNONYM MOVE SHIFT ROLL ; DISLOCATE>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-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>
<SYNONYM OPEN UNSEAL>
; <SYNTAX POCKET OBJECT (HELD CARRIED HAVE) = V-POCKET PRE-POCKET>
<SYNTAX PRAY = V-HELP>
<SYNTAX PRAY FOR OBJECT = V-WISH PRE-WISH>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-PULL>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-PULL>
<SYNTAX PULL UP OBJECT (ON-GROUND IN-ROOM) = V-RAISE>
<SYNTAX PULL DOWN OBJECT = V-LOWER>
<SYNTAX PULL OBJECT (FIND TAKEBIT) OUT OBJECT (ON-GROUND IN-ROOM)
= V-TAKE PRE-TAKE>
<SYNONYM PULL TUG DRAG SHOVE YANK>
<SYNTAX PAY OBJECT (FIND ACTORBIT) WITH OBJECT (HELD CARRIED) = V-PAY>
<SYNONYM PAY BRIBE ENTICE ; RENUMERATE>
<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 PLAY OBJECT (FIND RLANDBIT) = V-PLAY>
<SYNTAX PLAY WITH OBJECT = V-PLAY>
<SYNONYM PLAY FIDDLE TOY CAVORT>
; <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 OUT OBJECT (HELD CARRIED) = V-POUR>
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-POUR>
<SYNTAX POUR OUT 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 EMPTY OBJECT (HELD CARRIED) = V-EMPTY>
<SYNTAX EMPTY OUT OBJECT (HELD CARRIED) = V-EMPTY>
<SYNTAX EMPTY OBJECT FROM OBJECT = V-TAKE PRE-TAKE>
<SYNTAX EMPTY OBJECT OUT OBJECT = V-TAKE PRE-TAKE>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
<SYNTAX PUSH UP OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
<SYNTAX PUSH DOWN OBJECT (IN-ROOM ON-GROUND) = 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 (IN-ROOM ON-GROUND) IN OBJECT = V-PUSH-TO>
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
<SYNONYM PUSH PRESS THRUST NUDGE>
<SYNTAX PUT OBJECT (HELD CARRIED HAVE MANY) IN OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD CARRIED HAVE MANY) DOWN OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD CARRIED HAVE MANY) ON OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT-ON PRE-PUT-ON>
<SYNTAX PUT OBJECT (HELD CARRIED HAVE MANY) OVER OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT-ON PRE-PUT-ON>
<SYNTAX PUT DOWN OBJECT (HELD CARRIED HAVE MANY) = V-DROP>
<SYNTAX PUT OBJECT (HELD MANY HAVE CARRIED) UNDER OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT-UNDER>
<SYNTAX PUT ON OBJECT (ON-GROUND IN-ROOM CARRIED ; MANY) = V-WEAR>
<SYNTAX PUT OBJECT (HELD CARRIED MANY HAVE) BEHIND OBJECT
(ON-GROUND IN-ROOM CARRIED ; MANY) = V-PUT-BEHIND>
<SYNTAX PUT OUT OBJECT (ON-GROUND IN-ROOM CARRIED HELD) = V-LAMP-OFF>
<SYNONYM PUT STUFF INSERT PLACE LAY WEDGE FORCE STASH>
<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 HUMP>
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
THROUGH OBJECT = V-LOOK-THRU>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
TO OBJECT = V-READ-TO>
<SYNONYM READ SKIM>
<SYNTAX RELEASE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-RELEASE>
<SYNTAX RELEASE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT ; (FIND TOOLBIT) (HAVE) = V-RELEASE>
<SYNTAX RELEASE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
FROM OBJECT = V-RELEASE>
<SYNONYM RELEASE FREE UNTIE UNDO UNFASTEN DETACH UNHOOK>
<SYNTAX REMOVE OBJECT (FIND WORNBIT) (HAVE) = V-TAKE-OFF>
; <SYNONYM REMOVE DOFF SHED>
<SYNTAX REPLACE OBJECT = V-REPLACE>
<SYNTAX RESCUE OBJECT (FIND ACTORBIT) = V-RESCUE>
<SYNONYM RESCUE PRESERVE>
<SYNTAX RIDE OBJECT = V-RIDE>
<SYNTAX RIDE IN OBJECT = V-RIDE>
<SYNTAX RIDE ON OBJECT = V-RIDE>
<SYNTAX BOW TO OBJECT (FIND ACTORBIT) = V-BOW>
<SYNTAX BOW BEFORE OBJECT (FIND ACTORBIT) = V-BOW>
<SYNONYM BOW KNEEL GROVEL ; "GENUFLECT PROSTRATE">
<SYNTAX SAY OBJECT (FIND RLANDBIT) = V-SAY>
<SYNTAX SAY TO OBJECT (FIND ACTORBIT) = V-TELL>
<SYNONYM SAY TALK SPEAK CALL UTTER ; "PROCLAIM MAYBE">
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNTAX SEARCH UNDER OBJECT = V-LOOK-UNDER>
<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 (FIND ACTORBIT) = V-SHOW>
; <SYNTAX SHOW OBJECT (FIND ACTORBIT) OBJECT = V-SHOW PRE-SHOW>
<SYNTAX SIT OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-SIT>
<SYNTAX SIT ON OBJECT (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-ENTER ; "V-BOARD PRE-BOARD">
<SYNTAX SIT AT OBJECT = V-SIT>
<SYNONYM SIT SQUAT>
<SYNTAX SLEEP = V-SLEEP>
<SYNTAX SLEEP IN OBJECT (IN-ROOM ON-GROUND) = V-LIE-DOWN ; V-BOARD>
<SYNTAX SLEEP ON OBJECT (IN-ROOM ON-GROUND) = V-LIE-DOWN ; V-BOARD>
<SYNONYM SLEEP NAP SNOOZE REST>
; <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 (FIND RLANDBIT) = V-SMELL>
<SYNONYM SMELL SNIFF ; WHIFF>
<SYNTAX SPIN OBJECT = V-SPIN>
<SYNONYM SPIN WHIRL ROTATE ; GYRATE>
<SYNTAX SQUEEZE OBJECT = V-SQUEEZE>
<SYNTAX SQUEEZE OBJECT (HELD) ON OBJECT = V-PUT PRE-PUT>
<SYNONYM SQUEEZE SQUASH CRUSH>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX STAND ON OBJECT = V-STAND-ON>
<SYNTAX STAND UNDER OBJECT = V-STAND-UNDER>
<SYNONYM STAND RISE>
;<SYNTAX STRIKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(HELD CARRIED HAVE) = V-KILL>
;<SYNTAX STRIKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KILL>
<SYNTAX SWIM OBJECT (FIND RLANDBIT) = V-SWIM>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<SYNTAX SWIM TO 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>
<SYNTAX SWING ON OBJECT = V-CLIMB-ON>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE>
<SYNTAX TAKE IN OBJECT (ON-GROUND IN-ROOM) = V-ENTER>
<SYNTAX TAKE OUT OBJECT = V-EXIT>
<SYNTAX TAKE ON OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX TAKE UP OBJECT (FIND RLANDBIT) = V-RAISE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
OUT OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED 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 OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
ON OBJECT = V-TAKE PRE-TAKE>
<SYNTAX TAKE OFF OBJECT = V-TAKE-OFF>
<SYNONYM TAKE GRAB CATCH GET HOLD CARRY SEIZE STEAL CONFISCATE SNATCH>
<SYNTAX TASTE OBJECT = V-TASTE>
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) ABOUT OBJECT = V-TELL>
<SYNTAX THANK OBJECT = V-THANK>
<SYNTAX THANK = V-THANK>
<SYNONYM THANK THANKS ; MERCI>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE)
AT OBJECT (ON-GROUND IN-ROOM) = V-THROW PRE-THROW>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE)
TO OBJECT (ON-GROUND IN-ROOM) = V-THROW PRE-THROW>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE) OFF OBJECT = V-THROW-OFF>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE) OVER OBJECT = V-THROW-OFF>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE)
THROUGH OBJECT (ON-GROUND IN-ROOM) = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE) DOWN OBJECT
(ON-GROUND IN-ROOM) = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE) IN OBJECT
(ON-GROUND IN-ROOM) = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD MANY CARRIED HAVE) ON OBJECT
(ON-GROUND IN-ROOM) = 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 TOUCH OBJECT ; (FIND DARKBIT) = V-RUB>
<SYNTAX TOUCH OBJECT WITH OBJECT = V-RUB>
<SYNONYM TOUCH FEEL PAT PET RUB DISTURB>
<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) = V-LAMP-OFF>
<SYNONYM TURN FLIP SET>
<SYNTAX SHUT OFF OBJECT ; (FIND LIGHTBIT)
(HELD CARRIED ON-GROUND IN-ROOM) = V-LAMP-OFF>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (HELD HAVE) = V-UNLOCK>
;<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-UNTIE>
;<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (HAVE) = V-UNLOCK>
;<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) FROM OBJECT = V-UNLOCK>
;<SYNONYM UNTIE FREE UNFASTEN UNATTACH UNHOOK RELEASE UNDO>
<SYNTAX USE OBJECT = V-USE>
<SYNONYM USE EMPLOY EXPLOIT>
<SYNTAX WAIT = V-WAIT>
<SYNTAX WAIT FOR OBJECT = V-WAIT-FOR>
<SYNONYM WAIT LOITER Z>
<SYNTAX WAKE OBJECT (FIND RLANDBIT) = V-ALARM>
<SYNTAX WAKE UP OBJECT (FIND RLANDBIT) = V-ALARM>
<SYNONYM WAKE AWAKE AWAKEN SURPRISE STARTLE ROUSE>
<SYNTAX WALK = V-WALK-AROUND>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT (FIND RLANDBIT) = V-ENTER>
<SYNTAX WALK OUT OBJECT (FIND RLANDBIT) = V-EXIT>
<SYNTAX WALK ON OBJECT = V-STAND-ON>
<SYNTAX WALK OVER OBJECT = V-CROSS>
<SYNTAX WALK THROUGH OBJECT = V-THROUGH>
<SYNTAX WALK AROUND OBJECT (FIND RLANDBIT) = V-WALK-AROUND>
<SYNTAX WALK BEHIND OBJECT = V-WALK-AROUND>
<SYNTAX WALK UNDER OBJECT = V-THROUGH>
<SYNTAX WALK UP OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX WALK DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNONYM WALK GO RUN PROCEED STEP ADVANC TRUDGE HIKE TRAMP CRAWL
SKIP HOP>
; <SYNTAX WAVE OBJECT (FIND ACTORBIT) = V-WAVE>
<SYNTAX WAVE AT OBJECT ; (FIND ACTORBIT) = V-WAVE-AT>
<SYNTAX WAVE TO OBJECT ; (FIND ACTORBIT) = V-WAVE-AT>
; <SYNTAX WAVE OBJECT (HELD CARRIED) AT OBJECT = V-WAVE-AT>
<SYNONYM WAVE NOD SMILE LAUGH GRIN SNEER ; "MOTION BRANDISH BECKON" >
<SYNTAX WEAR OBJECT = V-WEAR>
<SYNONYM WEAR DON>
;<SYNTAX WHAT OBJECT = V-WHAT>
;<SYNTAX WHAT ABOUT OBJECT = V-WHAT-ABOUT>
;<SYNONYM WHAT WHATS>
;<SYNTAX WHERE OBJECT = V-WHERE>
;<SYNONYM WHERE WHERES>
<SYNTAX WISH FOR OBJECT = V-WISH PRE-WISH>
<SYNTAX WISH FOR OBJECT WITH OBJECT = V-WISH PRE-WISH>
<SYNONYM WISH DREAM YEARN HOPE>
;<SYNTAX WHO OBJECT = V-WHO>
;<SYNONYM WHO WHOS>
;<SYNTAX WHY = V-WHY>
;<SYNTAX WHY OBJECT = V-WHY>
<SYNTAX YELL OBJECT (FIND RLANDBIT) = V-YELL>
<SYNTAX YELL AT OBJECT = V-YELL>
<SYNTAX YELL TO OBJECT = V-YELL>
<SYNONYM YELL SCREAM SHOUT HOWL>
<SYNTAX YES = V-HELLO>
<SYNTAX YES OBJECT (FIND ACTORBIT) = V-HELLO>
<SYNONYM YES Y AYE OK OKAY SURE YUP AFFIRM POSITI NO NAY NEGATIVE NOPE NAW>
;<SYNTAX NO = V-NO>
;<SYNONYM NO NAY NEGATIVE NOPE NAW>

1546
tower.zil Normal file

File diff suppressed because it is too large Load Diff

599
under.zil Normal file
View File

@ -0,0 +1,599 @@
"UNDER for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
<OBJECT TUNNEL-FORK
(IN ROOMS)
(DESC "Underground")
(FLAGS RLANDBIT INDOORSBIT)
(GLOBAL HOLE)
(NORTH TO UNDER-HILL)
(EAST TO UNDER-CELL)
(SOUTH PER INTO-GRAVE)
(IN "Which way do you want to go in?")
(OUT "Which way do you want to go out?")
(PSEUDO "TUNNEL" HERE-F)
(ACTION TUNNEL-FORK-F)>
<ROUTINE TUNNEL-FORK-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<SAY-CHAMBER>
<TELL <TO-N>
" and east, and there's a dark hole in the south wall." CR>)>>
<ROUTINE SAY-CHAMBER ()
<TELL "You're in a " <PICK-ONE ,CRAMPS>
" under" D ,GROUND " chamber. ">
<COND (<PROB 50>
<TELL "Long">)
(T
<TELL "Cold">)>
<COND (<PROB 50>
<TELL ", " <PICK-ONE ,CRAMPS>>)>
<TELL " tunnels wander away ">>
<GLOBAL CRAMPS <LTABLE 0 "damp" "dark" "smelly" "dirty">>
<ROUTINE INTO-GRAVE ()
<COND (<CANT-FIT-INTO? "hole">
<RFALSE>)
(T
<MOVE-ALL ,OPEN-GRAVE ,INSIDE-GRAVE>
<RETURN ,INSIDE-GRAVE>)>>
<OBJECT TUNNEL-CORNER
(IN ROOMS)
(DESC "Underground")
(FLAGS RLANDBIT INDOORSBIT)
(EAST PER ENTER-GRUE-NEST)
(SOUTH TO UNDER-CELL)
(WEST TO UNDER-HILL)
(OUT "Which way do you want to go out?")
(PSEUDO "TUNNEL" HERE-F)
(ACTION TUNNEL-CORNER-F)>
<ROUTINE TUNNEL-CORNER-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<SAY-CHAMBER>
<TELL <TO-S> ", east and west." CR>)>>
<ROUTINE ENTER-GRUE-NEST ()
<COND (<AND <NOT ,GRUE-COVERED?>
<NOT <ENABLED? I-GRUE-SLEEP>>>
<SETG SLEEP-SCRIPT 0>
<ENABLE <QUEUE I-GRUE-SLEEP -1>>)>
<RETURN ,GRUE-NEST>>
<OBJECT UNDER-HILL
(IN ROOMS)
(DESC "Underground")
(FLAGS RLANDBIT INDOORSBIT)
(GLOBAL STUMP)
(EAST TO TUNNEL-CORNER)
(SOUTH TO TUNNEL-FORK)
(UP TO LOOKOUT-HILL IF STUMP IS OPEN)
(OUT "Which way do you want to go out?")
(PSEUDO "TUNNEL" HERE-F)
(ACTION UNDER-HILL-F)>
<ROUTINE UNDER-HILL-F ("OPTIONAL" (CONTEXT <>))
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<SAY-CHAMBER>
<TELL <TO-S> " and east.|
|
The surrounding walls are almost obscured by the roots of a mighty tree. ">
<COND (<FSET? ,STUMP ,OPENBIT>
<TELL
"Feeble light streams in from an opening overhead">)
(T
<TELL
"Overhead you can see the underside of a large " D ,STUMP ". It appears to be hinged">)>
<TELL "." CR>)>>
"*** GRUE'S NEST ***"
<OBJECT GRUE-NEST
(IN ROOMS)
(DESC "Grue's Nest")
(FLAGS RLANDBIT INDOORSBIT)
(GLOBAL SIGN CORNER)
(WEST PER EXIT-NEST)
(OUT PER EXIT-NEST)
(PSEUDO "TUNNEL" HERE-F "NEST" HERE-F)
(ACTION GRUE-NEST-F)>
<ROUTINE EXIT-NEST ()
<SETG SLEEP-SCRIPT <- ,SLEEP-SCRIPT 1>>
<RETURN ,TUNNEL-CORNER>>
<ROUTINE GRUE-NEST-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"You have stumbled into the nesting place of a family of grues. Congratulations. Few indeed are the adventurers who have entered a grue's nest and lived as long as you have.|
|
Everything is littered with rusty swords of elvish workmanship, piles of bones and other debris. A">
<OPEN-CLOSED ,REFRIGERATOR T>
<TELL D ,REFRIGERATOR
" stands in one " D ,CORNER " of the nest, and something">
<COND (<IN? ,BLANKET ,BABY>
<TELL " is curled up under a " D ,BLANKET>)
(T
<TELL
"... a small, dangerous-looking " D ,BABY "... is curled up">)>
<TELL " in the other " D ,CORNER ".|
|
The only exit is to the west. Hope you survive long enough to use it."
CR>)>>
<OBJECT BABY
(IN GRUE-NEST)
(DESC "little beast")
(SYNONYM BEAST ANIMAL GRUE GRUB)
(ADJECTIVE LITTLE BABY SLEEPING SMALL)
(FLAGS NDESCBIT ACTORBIT SURFACEBIT)
(CAPACITY 10)
(SIZE 10)
(ACTION BABY-F)>
<GLOBAL GRUE-COVERED? <>>
<ROUTINE BABY-F ("OPTIONAL" (CONTEXT <>))
<COND (<VERB? EXAMINE>
<SAY-THE ,BABY>
<TELL " is ">
<COND (<IN? ,BLANKET ,BABY>
<TELL "covered with a " D ,BLANKET>)
(T
<TELL
"dressed in swaddling clothes with a pink baby bonnet, has long, slavering fangs and appears to be sleeping">)>
<TELL "." CR>
<RTRUE>)
(<AND <VERB? TELL HELLO REPLY ALARM YELL
ASK-ABOUT ASK-FOR QUESTION>
<EQUAL? ,PRSO ,BABY>>
<WAKE-BABY "The sound of your voice">
<RFATAL>)
(<AND <VERB? PUT PUT-ON THROW THROW-OFF>
<EQUAL? ,PRSI ,BABY>>
<COND (<EQUAL? ,PRSO ,BLANKET>
<COVER-GRUE>)
(T
<WAKE-BABY>)>
<RTRUE>)
(<AND <VERB? HIDE>
<EQUAL? ,PRSO ,BABY>
,PRSI>
<COND (<EQUAL? ,PRSI ,BLANKET>
<COVER-GRUE>)
(T
<PERFORM ,V?PUT-ON ,PRSI ,BABY>)>
<RTRUE>)
(<VERB? KISS>
<SAY-THE ,BABY>
<TELL " smiles in its sleep." CR>
<RTRUE>)
(<VERB? FEED GIVE>
<YOUD-HAVE-TO "wake" ,BABY>
<RTRUE>)
(<TOUCHING? ,BABY>
<WAKE-BABY>
<RFATAL>)
(<VERB? LISTEN>
<SAY-THE ,BABY>
<TELL " snores gently." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE WAKE-BABY ("OPTIONAL" REASON)
<TELL "Oh, no! ">
<COND (.REASON
<TELL .REASON>)
(T
<TELL "Your reckless fumbling">)>
<TELL " woke up the " D ,BABY "!|
|
The little creature ">
<COND (,LIT
<TELL "blinks helplessly in the glow of">
<CANDLE-OR-STONE>)
(T
<TELL "gurgles angrily in the " D ,DARKNESS>)>
<TELL ".">
<MOTHER-COMES>>
<ROUTINE MOTHER-COMES ()
<TELL " It opens its slavering jaws and">
<SUBWAY>
<CRLF>
<CRLF>
<COND (,LIT
<TELL "A very large creature, equipped with slavering fangs and wearing a calico apron,">)
(T
<TELL "Something very large">)>
<TELL " lurks into the nest">
<COND (,LIT
<TELL ". Its mother-instinct overcomes its overwhelming fear of light long enough to devour">)
(T
<TELL " and devours">)>
<TELL " you.">
<BAD-ENDING>>
<ROUTINE SUBWAY ()
<TELL " emits a hideous, plaintive wail that reminds you of a subway screeching to a halt.">>
<ROUTINE COVER-GRUE ()
<SETG GRUE-COVERED? T>
<DISABLE <INT I-GRUE-SLEEP>>
<MOVE ,BLANKET ,BABY>
<TELL ,OKAY "the " D ,BABY " is now covered with the " D ,BLANKET ".|
|
The creature stirs restlessly for an anxious moment. Then it settles into the comfortable " D ,DARKNESS " of the " D ,BLANKET
", sighs gently and lies still." CR CR>
<UPDATE-SCORE 3>>
<ROUTINE CANDLE-OR-STONE ("AUX" OBJ)
<COND (<OR <IN? ,CANDLE ,PROTAGONIST>
<IN? ,CANDLE ,HERE>>
<SET OBJ ,CANDLE>)
(T
<SET OBJ ,WISHBRINGER>)>
<TELL " ">
<ARTICLE .OBJ T>
<TELL D .OBJ>>
<GLOBAL SLEEP-SCRIPT 0>
<ROUTINE I-GRUE-SLEEP ()
<COND (<OR ,FUZZY? ,ECLIPSE?>
<RTRUE>)
(<EQUAL? ,HERE ,GRUE-NEST>
<COND (<NOT ,LIT>
<SETG SLEEP-SCRIPT 0>
<RTRUE>)
(T
<SETG SLEEP-SCRIPT <+ ,SLEEP-SCRIPT 1>>
<CRLF>
<COND (<EQUAL? ,SLEEP-SCRIPT 1>
<TELL "Snoring fitfully, the " D ,BABY
" turns away from the light of">
<CANDLE-OR-STONE>
<TELL " and faces the wall." CR>)
(<EQUAL? ,SLEEP-SCRIPT 2>
<SAY-THE ,BABY>
<TELL
" is stirring restlessly. It looks as if it's about to wake up!" CR>)
(T
<TELL
"With a toothy yawn, the " D ,BABY " opens its big red eyes and blinks at you with surprise and fear.">
<MOTHER-COMES>)>)>)>>
<OBJECT REFRIGERATOR
(IN GRUE-NEST)
(DESC "refrigerator")
(SYNONYM REFRIGERATOR FRIGE FRIDGE)
(ADJECTIVE GRUE)
(FLAGS CONTBIT NDESCBIT TRYTAKEBIT READBIT)
(CAPACITY 10)
(ACTION REFRIGERATOR-F)>
<ROUTINE REFRIGERATOR-F ()
<COND (<VERB? EXAMINE LOOK-ON READ>
<TELL "A label on the " D ,REFRIGERATOR " reads, \"">
<FROBOZZ "Grue Refrigerator">
<TELL ".\"" CR>
<RTRUE>)
(<AND <VERB? OPEN>
<NOT <FSET? ,REFRIGERATOR ,OPENBIT>>>
<HANDLE-FRIDGE " goes out as you open">
<RFALSE>)
(<AND <VERB? CLOSE>
<FSET? ,REFRIGERATOR ,OPENBIT>>
<HANDLE-FRIDGE " comes on as you close">
<RFALSE>)
(<AND <VERB? PUT-ON>
<EQUAL? ,PRSI ,REFRIGERATOR>>
<NO-ROOM>
<TELL "It's covered with debris." CR>
<RTRUE>)
(<MOVING? ,REFRIGERATOR>
<TOO-LARGE ,REFRIGERATOR>
<RTRUE>)
(<HURT? ,REFRIGERATOR>
<TELL "The owners">
<MIGHT-NOT-LIKE>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE HANDLE-FRIDGE (STR)
<TELL "A light inside the " D ,REFRIGERATOR .STR " it." CR CR>>
<OBJECT BOTTLE
(IN REFRIGERATOR)
(DESC "bottle")
(SYNONYM BOTTLE)
(ADJECTIVE MILK)
(FLAGS CONTBIT TAKEBIT TRANSBIT READBIT)
(VALUE 0)
(CAPACITY 1)
(SIZE 5)
(ACTION BOTTLE-F)>
<ROUTINE BOTTLE-F ("AUX" (FULL? <>))
<THIS-IS-IT ,BOTTLE>
<SET FULL? <IN? ,MILK ,BOTTLE>>
<COND (<VERB? EXAMINE LOOK-ON READ>
<TELL "The words \"">
<FROBOZZ "Unbreakable Milk Bottle">
<TELL "\" are etched on the">
<OPEN-CLOSED ,BOTTLE>
<TELL D ,BOTTLE "." CR>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-DOWN SEARCH>
<COND (<NOT <EQUAL? <LOC ,BOTTLE> ,HERE ,PROTAGONIST>>
<YOUD-HAVE-TO "take out" ,BOTTLE>
<RTRUE>)>
<TELL "There's ">
<COND (.FULL?
<TELL "a bit of " D ,MILK>)
(T
<PRINT-CONTENTS ,BOTTLE>)>
<TELL " in the " D ,BOTTLE "." CR>
<RTRUE>)
(<VERB? DRINK DRINK-FROM>
<COND (.FULL?
<PERFORM ,V?DRINK ,MILK>)
(T
<BOTTLE-EMPTY>)>
<RTRUE>)
(<VERB? POUR EMPTY>
<COND (.FULL?
<PERFORM ,V?POUR ,MILK>)
(T
<BOTTLE-EMPTY>)>
<RTRUE>)
(<VERB? SHAKE>
<COND (.FULL?
<COND (<FSET? ,BOTTLE ,OPENBIT>
<PERFORM ,V?POUR ,MILK>)
(T
<SAY-THE ,MILK>
<TELL " doesn't look any better." CR>)>)
(T
<BOTTLE-EMPTY>)>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,BOTTLE>>
<TELL "The mouth of the " D ,BOTTLE
" is too narrow." CR>
<RTRUE>)
(<AND <VERB? OPEN CLOSE>
<DONT-HAVE? ,BOTTLE>>
<RTRUE>)
(<HURT? ,BOTTLE>
<TELL
"Maybe you should read the " D ,BOTTLE " first." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE BOTTLE-EMPTY ()
<SAY-THE ,BOTTLE>
<TELL " is empty." CR>>
<OBJECT MILK
(IN BOTTLE)
(DESC "grue milk")
(SYNONYM MILK LIQUID)
(ADJECTIVE GRUE LITTLE ICKY)
(FLAGS NDESCBIT NARTICLEBIT TAKEBIT)
(ACTION MILK-F)
(SIZE 0)>
<ROUTINE ACCESS-MILK? ()
<COND (<NOT <IN? ,MILK ,BOTTLE>>
<BOTTLE-EMPTY>
<RFALSE>)
(<FSET? ,BOTTLE ,OPENBIT>
<RTRUE>)
(T
<YOUD-HAVE-TO "open" ,BOTTLE>
<RFALSE>)>>
<ROUTINE MILK-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<SAY-THE ,MILK>
<TELL
" is dark brown, with little icky things lurking in it." CR>
<RTRUE>)
(<NOT <IN? ,BOTTLE ,PROTAGONIST>>
<YOUD-HAVE-TO "be holding" ,BOTTLE>
<RTRUE>)
(<VERB? DRINK DRINK-FROM TASTE>
<COND (<ACCESS-MILK?>
<REMOVE ,MILK>
<SETG MILK-SCRIPT 4>
<ENABLE <QUEUE I-DRINK -1>>
<TELL "Slurp! All gone." CR>)>
<RTRUE>)
(<AND <VERB? POUR EMPTY TAKE PUT PUT-ON THROW DROP>
<EQUAL? ,PRSO ,MILK>>
<COND (<ACCESS-MILK?>
<REMOVE ,MILK>
<SAY-THE ,MILK>
<TELL " splashes all over the place." CR>
<COND (<AND <ACCESSIBLE? ,KITTY>
<NOT <FSET? ,KITTY ,RMUNGBIT>>>
<CRLF>
<GIVE-MILK-TO-CAT ,KITTY>)
(<ACCESSIBLE? ,CHAOS>
<CRLF>
<GIVE-MILK-TO-CAT ,CHAOS>)>)>
<RTRUE>)
(<AND <VERB? FEED GIVE>
<EQUAL? ,PRSO ,MILK>
<FSET? ,PRSI ,ACTORBIT>>
<PERFORM ,V?POUR ,MILK>
<RTRUE>)
(<VERB? SMELL>
<COND (<ACCESS-MILK?>
<TELL "The fumes make you queasy." CR>)>
<RTRUE>)
(<VERB? SHAKE>
<MEAN-BOTTLE>
<PERFORM ,V?SHAKE ,BOTTLE>
<RTRUE>)
(<VERB? EAT BITE>
<NOT-SOLID>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE MEAN-BOTTLE ()
<TELL ,I-ASSUME " the " D ,BOTTLE ".)" CR CR>>
<GLOBAL MILK-SCRIPT 0>
<ROUTINE I-DRINK ()
<SETG MILK-SCRIPT <- ,MILK-SCRIPT 1>>
<CRLF>
<COND (<EQUAL? ,MILK-SCRIPT 3>
<TELL
"You can feel little icky things sliding down your throat.">)
(<EQUAL? ,MILK-SCRIPT 2>
<TELL
"(The " D ,MILK " is lurking in your stomach.">
<MAKE-IT-SNAPPY>)
(<EQUAL? ,MILK-SCRIPT 1>
<TELL
"(The taste of the " D ,MILK " is starting to wear off.">
<HOLD-YOUR-PEACE>)
(T
<SETG MILK-SCRIPT 0>
<DISABLE <INT I-DRINK>>
<TELL
"(Thankfully, the icky taste of " D ,MILK " is gone.)">)>
<CRLF>>
<OBJECT WORM
(IN REFRIGERATOR)
(DESC "earthworm")
(SYNONYM WORM EARTHWORM)
(ADJECTIVE EARTH WORMS)
(FLAGS VOWELBIT TAKEBIT)
(VALUE 3)
(SIZE 1)
(ACTION WORM-F)>
<ROUTINE WORM-F ()
<COND (<AND <VERB? TAKE>
<EQUAL? ,PRSO ,WORM>>
<COND (<V-TAKE>
<CRLF>
<SAY-THE ,WORM>
<TELL " squirms with annoyance at your touch." CR>)>
<RTRUE>)
(<VERB? EXAMINE>
<SAY-THE ,WORM>
<TELL " is covered with nasty little bits of dirt and slime. It wriggles nervously">
<COND (<IN? ,WORM ,PROTAGONIST>
<TELL " in " D ,HANDS>)>
<TELL " as you look at it." CR>
<RTRUE>)
(<TALKING-TO? ,WORM>
<IT-IGNORES-YOU ,WORM>
<RFATAL>)
(<AND <VERB? EAT TASTE KISS>
<EQUAL? ,PRSO ,WORM>>
<TELL "Yuck! You've got to be kidding." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT DEBRIS
(IN GRUE-NEST)
(DESC "debris")
(SYNONYM DEBRIS BONE SWORDS BONES)
(ADJECTIVE SWORD ELVISH)
(FLAGS NDESCBIT)
(ACTION DEBRIS-F)>
<ROUTINE DEBRIS-F ()
<COND (<NOT <EQUAL? ,HERE ,GRUE-NEST>>
<CANT-SEE-ANY>
<RFATAL>)
(<SEE-VERB?>
<TELL "Aside from the ominous implications, you see nothing "
<PICK-ONE ,YAWNS> " about the " D ,DEBRIS "." CR>
<RTRUE>)
(T
<YOU-DONT-NEED ,DEBRIS>
<RFATAL>)>>
; <OBJECT GENERIC-GRUE
(IN GLOBAL-OBJECTS)
(DESC "grue")
(SYNONYM GRUE GRUES)
(ADJECTIVE LURKING SINISTER)
(ACTION GENERIC-GRUE-F)>
; <ROUTINE GENERIC-GRUE-F ()
<COND (<AND <EQUAL? ,HERE ,GRUE-NEST>
<BABY-F>>
<RTRUE>)
(<VERB? EXAMINE>
<TELL
"No one has ever seen a grue... except, perhaps, from the inside." CR>
<RTRUE>)
(<VERB? WHAT>
<TELL
"The grue is a sinister, lurking presence in the dark places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light. No grue has ever been seen by the light of day, and few have survived its fearsome jaws to tell the tale." CR>
<RTRUE>)
(<VERB? FIND WHERE>
<TELL "There aren't any grues here">
<COND (<FSET? ,HERE ,ONBIT>
<TELL "! There's too much light.">
<CRLF>)
(T
<TELL ", but there's probably one">
<LURKING-NEARBY>)>
<RTRUE>)
(<VERB? LISTEN>
<TELL "They make no sound, but are always">
<LURKING-NEARBY>
<RTRUE>)
(T
<RFALSE>)>>
; <ROUTINE LURKING-NEARBY ()
<TELL " lurking in the " D ,DARKNESS " nearby." CR>>
"*** UNDER CELL ***"
<OBJECT UNDER-CELL
(IN ROOMS)
(DESC "Underground")
(FLAGS RLANDBIT INDOORSBIT)
(GLOBAL CELL HIDDEN-HATCH)
(NORTH TO TUNNEL-CORNER)
(WEST TO TUNNEL-FORK)
(UP PER THROUGH-HATCH?)
(OUT "Which way do you want to go out?")
(PSEUDO "TUNNEL" HERE-F)
(ACTION UNDER-CELL-F)>
<ROUTINE UNDER-CELL-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<SAY-CHAMBER>
<TELL <TO-N> " and west." CR CR>
<COND (<FSET? ,HIDDEN-HATCH ,RMUNGBIT>
<TELL "A patch of freshly-dried concrete is visible">)
(T
<COND (<FSET? ,UNDER-CELL ,ONBIT>
<TELL
"Faint light is streaming in from a narrow hole">)
(T
<TELL "A dark, narrow hole is visible">)>)>
<TELL " overhead." CR>)>>

2447
verbs.zil Normal file

File diff suppressed because it is too large Load Diff

776
west.zil Normal file
View File

@ -0,0 +1,776 @@
"WEST for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** EDGE OF LAKE ***"
<OBJECT ISLE
(IN LOCAL-GLOBALS)
(DESC "island")
(SYNONYM ISLAND ISLE MIST FOG)
(ADJECTIVE MISTY)
(FLAGS NDESCBIT)
(ACTION ISLE-F)>
<ROUTINE ISLE-F ("AUX" (AT-ISLE? <>))
<THIS-IS-IT ,ISLE>
<SET AT-ISLE? <EQUAL? ,HERE ,ISLAND ,THRONE-ROOM>>
<COND (<VERB? EXAMINE LOOK-ON>
<COND (.AT-ISLE?
<V-LOOK>)
(T
<TELL D ,ISLAND
" has been shrouded in fog for as long as you can remember. Strange legends and mysterious rumors abound; but nobody you know has ever been there." CR>)>
<RTRUE>)
(<OR <EQUAL? ,PRSA ,V?WALK-TO ,V?FOLLOW ,V?THROUGH>
<EQUAL? ,PRSA ,V?ENTER ,V?FIND ,V?SWIM>>
<COND (.AT-ISLE?
<ALREADY-ON ,ISLE>)
(T
<PROBABLY-DROWN>)>
<RTRUE>)
(<VERB? STAND-ON SIT LIE-DOWN WEAR>
<COND (.AT-ISLE?
<ALREADY-ON ,ISLE>)
(T
<YOUD-HAVE-TO "get to" ,ISLE>)>
<RTRUE>)
(<VERB? WALK-AROUND CROSS SEARCH>
<COND (.AT-ISLE?
<V-WALK-AROUND>)
(T
<YOUD-HAVE-TO "get to" ,ISLE>)>
<RTRUE>)
(T
<YOU-DONT-NEED ,ISLE>
<RFATAL>)>>
<OBJECT EDGE-OF-LAKE
(IN ROOMS)
(DESC "Lake Edge")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL LAKE NORTH-GATE ISLE CEMETERY)
(NORTH TO RIVER-OUTLET)
(EAST TO ROTARY-WEST)
(SOUTH PER ARE-YOU-SURE?)
(WEST PER PROBABLY-DROWN)
(IN PER ENTER-PIT?)
(DOWN PER ENTER-PIT?)
(ACTION EDGE-OF-LAKE-F)
(PSEUDO "SHORE" HERE-F)>
<ROUTINE EDGE ()
<TELL " the edge of the lake">>
<ROUTINE EDGE-OF-LAKE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"You're on the sandy shore of the lake. A road heads east towards the "
D ,FESTERON ", and another runs north along">
<EDGE>
<TELL ". Looking south, you can see a">
<OPEN-CLOSED ,NORTH-GATE T>
<TELL D ,NORTH-GATE
" leading into the">
<WHICH-TOWN "Cemetery">
<TELL "." CR CR D ,ISLAND
", its outline shrouded in fog, is visible far across the water." CR CR>
<TELL ,YOU-SEE "a ">
<COND (<FSET? ,PIT ,OPENBIT>
<TELL "narrow pit">
<COND (,PIT-FULL?
<TELL " full of rainwater">)>)
(T
<TELL "circular " D ,LEAVES>)>
<TELL " near">
<EDGE>
<TELL ". ">
<COND (<IN? ,BRANCH ,PIT>
<TELL "A " D ,BRANCH " is sticking out of the pit. ">)>
<COND (<NOT <FSET? ,LAKE-SAND ,RMUNGBIT>>
<COND (<FSET? ,PLATYPUS ,RMUNGBIT>
<TELL "An \"X\" has been drawn">)
(T
<COND (,SKEWED?
<TELL "Animal tracks are visible">)
(T
<TELL
"Somebody has scrawled a message">)>)>
<TELL " in the sand next to the ">
<COND (<FSET? ,PIT ,OPENBIT>
<TELL D ,PIT>)
(T
<TELL D ,LEAVES>)>
<TELL ".">)>
<CRLF>)>>
<ROUTINE ENTER-PIT? ()
<COND (<FSET? ,PIT ,OPENBIT>
<PIT-NOT-WIDE>)
(T
<CANT-GO>
<RFALSE>)>
<RFALSE>>
<ROUTINE PIT-NOT-WIDE ()
<TELL ,CANT " fit into the pit. It's too narrow." CR>>
<OBJECT LAKE-SAND
(IN EDGE-OF-LAKE)
(DESC "sand")
(SYNONYM SAND MESSAGE TRACKS X)
(ADJECTIVE SCRAWL ANIMAL)
(FLAGS TRYTAKEBIT NDESCBIT READBIT)
(ACTION LAKE-SAND-F)>
; "TOOLBIT = pile of leaves disturbed"
<ROUTINE LAKE-SAND-F ()
<COND (<VERB? DIG SEARCH LOOK-UNDER LOOK-INSIDE>
<COND (<AND ,SKEWED?
<FSET? ,PLATYPUS ,RMUNGBIT>
<NOT <FSET? ,LAKE-SAND ,RMUNGBIT>>>
<MOVE ,WHISTLE ,EDGE-OF-LAKE>
<THIS-IS-IT ,WHISTLE>
<TELL
"You discovered a " D ,WHISTLE " in the sand under the \"X\"!" CR>)
(T
<NOTHING-INTERESTING>)>
<FSET ,LAKE-SAND ,RMUNGBIT>
<FCLEAR ,LEAVES ,RMUNGBIT>
<RTRUE>)
(<VERB? EXAMINE READ LOOK-ON FOLLOW>
<COND (<FSET? ,LAKE-SAND ,RMUNGBIT>
<YOU-ERASED-SAND>
<RTRUE>)
(<FSET? ,PLATYPUS ,RMUNGBIT>
<TELL ,YOU-SEE "an \"X\" drawn in the sand." CR>)
(T
<COND (,SKEWED?
<TELL
"The animal tracks emerge from the lake and lead to the edge of the pit, where they ">
<COND (<FSET? ,LAKE-SAND ,TOOLBIT>
<TELL
"turn and head back into the water">)
(T
<TELL "disappear abruptly">)>
<TELL "." CR>)
(T
<FCLEAR ,LEAVES ,RMUNGBIT>
<SAY-THE ,SCRAWL>
<TELL
" in the sand reads, \"Do Not Disturb!\"" CR>)>)>
<RTRUE>)
(<AND <VERB? THROUGH ENTER>
<NOT <FSET? ,LAKE-SAND ,RMUNGBIT>>>
<WASTE-SAND>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,LAKE-SAND>>
<PERFORM ,V?TAKE ,SAND>
<RTRUE>)
(<AND <VERB? PUT PUT-ON THROW>
<EQUAL? ,PRSI ,LAKE-SAND>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<AND <OR <HURT? ,LAKE-SAND>
<VERB? RUB>>
<NOT <FSET? ,LAKE-SAND ,RMUNGBIT>>>
<WASTE-SAND>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE WASTE-SAND ()
<FSET ,LAKE-SAND ,RMUNGBIT>
<FCLEAR ,LEAVES ,RMUNGBIT>
<YOU-ERASED-SAND>>
<ROUTINE YOU-ERASED-SAND ()
<TELL "You rubbed out all the markings in the sand." CR>>
<OBJECT PIT
(IN EDGE-OF-LAKE)
(DESC "pit")
(SYNONYM PIT HOLE TRAP SNARE)
(ADJECTIVE DEEP NARROW)
(FLAGS CONTBIT NDESCBIT)
(CAPACITY 25)
(ACTION PIT-F)
(CONTFCN IN-PIT)>
<GLOBAL PIT-FULL? <>>
<ROUTINE IN-PIT (CONTEXT)
<COND (<AND <EQUAL? .CONTEXT ,M-CONT>
<VERB? TAKE>
<NOT <EQUAL? ,PRSO ,BRANCH>>>
<TELL ,CANT " reach ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO ". ">
<SAY-THE ,PIT>
<TELL " is ">
<COND (,PIT-FULL?
<TELL "full of rainwater">)
(T
<TELL "a little too deep">)>
<TELL "." CR>
<RFATAL>)
(T
<RFALSE>)>>
<ROUTINE PIT-F ()
<COND (<NOT <FSET? ,PIT ,OPENBIT>>
<CANT-SEE-ANY ,PIT>
<RFATAL>)>
<THIS-IS-IT ,PIT>
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-DOWN>
<SAY-THE ,PIT>
<TELL " is ">
<COND (,PIT-FULL?
<FILLED-PIT>)
(T
<TELL "more than five feet deep.">)>
<COND (<FIRST? ,PIT>
<TELL " " ,YOU-SEE>
<PRINT-CONTENTS ,PIT>
<TELL " in it.">)>
<CRLF>
<RTRUE>)
(<VERB? CLOSE HIDE>
<TELL ,CANT ". The leaves that used to cover the pit have all blown away." CR>
<RTRUE>)
(<GETTING-INTO?>
<PIT-NOT-WIDE>
<RTRUE>)
(<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,PIT>>
<COND ; (<EQUAL? ,PRSO ,KITTY>
<NOT-LIKELY ,KITTY "would cooperate">
<RTRUE>)
(<PUTTING-OPEN-UMBRELLA?>
<RTRUE>)
(<EQUAL? ,PRSO ,BRANCH>
<MOVE ,BRANCH ,PIT>
<TELL ,OKAY "the " D ,BRANCH
" is now standing up inside the">
<COND (,PIT-FULL?
<TELL " watery">)>
<TELL " pit." CR>
<COND (<IN? ,PLATYPUS ,PIT>
<FSET ,PLATYPUS ,TOOLBIT>
<CRLF>
<SAY-THE ,PLATYPUS>
<TELL
" grabs onto the bottom of the " D ,BRANCH " with its forepaws." CR>)>
<RTRUE>)
(,PIT-FULL?
<REMOVE ,PRSO>
<TELL "You watch as ">
<ARTICLE ,PRSO T>
<TELL D ,PRSO " sinks into the watery pit." CR>
<RTRUE>)
(T
<RFALSE>)>)
(<VERB? OPEN>
<ALREADY-OPEN>
<RTRUE>)
(<VERB? REACH-IN EMPTY>
<TELL ,CANT ". ">
<SAY-THE ,PIT>
<TELL " is ">
<COND (,PIT-FULL?
<FILLED-PIT>)
(T
<TELL "too deep.">)>
<CRLF>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE FILLED-PIT ()
<TELL "filled with rainwater.">>
<OBJECT LEAVES
(IN EDGE-OF-LAKE)
(DESC "pile of leaves")
(SYNONYM LEAVES)
(ADJECTIVE PATCH PILE CIRCUL ROUND)
(FLAGS NDESCBIT TAKEBIT RMUNGBIT)
(ACTION LEAVES-F)
(VALUE 0)
(SIZE 5)>
; "RMUNGBIT = warning not read yet"
<ROUTINE LEAVES-F ()
<COND (<FSET? ,PIT ,OPENBIT>
<SAY-THE ,LEAVES>
<TELL " blew away when you disturbed it." CR>
<RFATAL>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,LEAVES>>
<TELL "The leaves slip through your fingers." CR>
<RTRUE>)
(<VERB? EXAMINE>
<SAY-THE ,LEAVES>
<TELL " is crisscrossed with twigs to keep it from blowing away. There seems to be something underneath." CR>
<RTRUE>)
(<AND <VERB? LOOK-UNDER MOVE PULL PUSH SEARCH KICK RAISE RUB>
<EQUAL? ,PRSO ,LEAVES>>
<COND (<DISTURB-LEAVES?>
<RTRUE>)
(<WANT-TO-MUNG?>
<TELL "Moving the " D ,LEAVES " reveals">
<DESCRIBE-PIT>)>
<RTRUE>)
(<VERB? ENTER THROUGH WALK-TO CROSS>
<COND (<DISTURB-LEAVES?>
<RTRUE>)
(<WANT-TO-MUNG?>
<SAY-THE ,LEAVES>
<TELL " caves in under your feet, revealing">
<DESCRIBE-PIT>)>
<RTRUE>)
(<VERB? COUNT>
<COUNT-LEAVES>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE COUNT-LEAVES ()
<TELL "A quick count turns up exactly 69,105 leaves." CR>>
<ROUTINE DISTURB-LEAVES? ()
<COND (<FSET? ,LEAVES ,RMUNGBIT>
<TELL
"(You'd better read the message in the sand before you disturb the " D ,LEAVES
".)" CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE WANT-TO-MUNG? ()
<SAY-SURE>
<TELL "disturb that " D ,LEAVES
"? There's an old saying about curiosity...">
<COND (<YES?>
<RTRUE>)
(T
<TELL ,OKAY "the leaves are still intact." CR>
<RFALSE>)>>
<ROUTINE DESCRIBE-PIT ()
<FSET ,PIT ,OPENBIT>
<TELL " a deep, narrow pit in the sand. It appears to be a trap of some kind.|
|
The leaves blow away in the breeze." CR CR>
<UPDATE-SCORE -10>>
<OBJECT PLATYPUS
(DESC "platypus")
(SYNONYM PLATYPUS TASMANIA)
(ADJECTIVE PRINCESS)
(FLAGS ACTORBIT TRYTAKEBIT NDESCBIT)
(ACTION PLATYPUS-F)
(VALUE 0)
(SIZE 10)>
; "PLATYPUS STATE FLAGS: TOOLBIT = HOLDING ON, RMUNGBIT = GONE"
<ROUTINE PLATYPUS-F ("OPTIONAL" (CONTEXT <>))
<COND (<VERB? EXAMINE>
<SAY-THE ,PLATYPUS>
<TELL " is ">
<COND (<FSET? ,PLATYPUS ,TOOLBIT>
<TELL
"clutching the end of the " D ,BRANCH " and looking up at you expectantly">)
(T
<TELL
"obviously unhappy about being trapped in the pit">)>
<TELL "." CR>
<RTRUE>)
(<TALKING-TO? ,PLATYPUS>
<SAY-THE ,PLATYPUS>
<TELL " stares back at you impatiently." CR>
<RFATAL>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,PLATYPUS>>
<SAY-THE ,PLATYPUS>
<TELL " doesn't seem interested." CR>
<RTRUE>)
(<VERB? RESCUE RELEASE>
<TELL "Very thoughtful of you. ">
<HOW?>
<RTRUE>)
(<TOUCHING? ,PLATYPUS>
<TELL ,CANT " reach the " D ,PLATYPUS
" while it's in the pit." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE DRAW-X ()
<START-BUZZ 4>
<REMOVE ,PLATYPUS>
<FCLEAR ,PLATYPUS ,TOOLBIT>
<FSET ,PLATYPUS ,RMUNGBIT>
<FCLEAR ,LAKE-SAND ,RMUNGBIT>
<TELL "The little creature draws an \"X\" in the ">
<COND (,PIT-FULL?
<TELL "wet ">)>
<TELL "sand with its tail. Then it gives you an oddly dignified nod of thanks, waddles to">
<EDGE>
<TELL " and disappears into the dark water." CR>>
"*** RIVER OUTLET ***"
<OBJECT RIVER-OUTLET
(IN ROOMS)
(DESC "River Outlet")
(FLAGS ONBIT RLANDBIT WETBIT)
(GLOBAL LAKE RIVER HILL TRAIL)
(NORTH PER PROBABLY-DROWN-IN-RIVER)
(EAST TO SOUTH-OF-BRIDGE)
(SOUTH TO EDGE-OF-LAKE)
(WEST PER PROBABLY-DROWN)
(UP TO LOOKOUT-HILL)
(ACTION RIVER-OUTLET-F)>
<ROUTINE RIVER-OUTLET-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"This is where the lake empties into the">
<WHICH-TOWN "River">
<TELL ". A road leads south along">
<EDGE>
<TELL ", and bends east to follow the river bank. A narrow "
D ,TRAIL " leads upward to the top of ">
<PRINTD ,LOOKOUT-HILL>
<TELL "." CR>)>>
"*** LOOKOUT HILL ***"
<OBJECT TRAIL
(IN LOCAL-GLOBALS)
(DESC "trail")
(SYNONYM TRAIL)
(ADJECTIVE STEEP NARROW SHIMMERING)
(FLAGS NDESCBIT)
(ACTION TRAIL-F)>
<ROUTINE TRAIL-F ()
<COND (<AND <EQUAL? ,HERE ,CLIFF-BOTTOM>
,SKEWED?>
<TRAIL-MISPLACED>
<RFATAL>)
(<AND <EQUAL? ,HERE ,ROCKY-PATH>
<OR <NOT ,SKEWED?>
,HOUSE-VISITED?>>
<CANT-SEE-ANY ,TRAIL>
<RFATAL>)
(<VERB? WALK-TO ENTER THROUGH EXIT USE CLIMB-ON>
<COND (<EQUAL? ,HERE ,LOOKOUT-HILL ,CLIFF-EDGE>
<DO-WALK ,P?DOWN>)
(<EQUAL? ,HERE ,RIVER-OUTLET ,CLIFF-BOTTOM>
<DO-WALK ,P?UP>)
(<EQUAL? ,HERE ,ROCKY-PATH>
<DO-WALK ,P?SOUTH>)
(<EQUAL? ,HERE ,WEST-OF-HOUSE>
<DO-WALK ,P?NORTH>)
(T
<V-WALK-AROUND>)>
<RTRUE>)
(<VERB? CLIMB-DOWN>
<COND (<OR <EQUAL? ,HERE ,STEEP-TRAIL ,FOG ,CLIFF-EDGE>
<EQUAL? ,HERE ,LOOKOUT-HILL>>
<DO-WALK ,P?DOWN>)
(<EQUAL? ,HERE ,ROCKY-PATH>
<DO-WALK ,P?SOUTH>)
(<EQUAL? ,HERE ,WEST-OF-HOUSE>
<DO-WALK ,P?NORTH>)
(T
<ALREADY-AT ,TRAIL>)>
<RTRUE>)
(<VERB? CLIMB-UP>
<COND (<OR <EQUAL? ,HERE ,RIVER-OUTLET ,CLIFF-BOTTOM ,FOG>
<EQUAL? ,HERE ,STEEP-TRAIL>>
<DO-WALK ,P?UP>)
(<EQUAL? ,HERE ,ROCKY-PATH>
<DO-WALK ,P?SOUTH>)
(<EQUAL? ,HERE ,WEST-OF-HOUSE>
<DO-WALK ,P?NORTH>)
(T
<ALREADY-AT ,TRAIL T>)>
<RTRUE>)
(<VERB? EXAMINE LOOK-DOWN LOOK-UP>
<V-LOOK>
<RTRUE>)
(T
<YOU-DONT-NEED ,TRAIL>
<RFATAL>)>>
<OBJECT LOOKOUT-HILL
(IN ROOMS)
(DESC "Lookout Hill")
(FLAGS ONBIT RLANDBIT)
(GLOBAL TRAIL HILL ; TREE HOLE STUMP)
(NORTH PER NORTH-DOWN-HILL)
(EAST PER TUMBLE)
(SOUTH PER TUMBLE)
(WEST PER TUMBLE)
(DOWN PER DOWN-THE-HILL)
(IN TO UNDER-HILL IF STUMP IS OPEN)
(ACTION LOOKOUT-HILL-F)>
<ROUTINE NORTH-DOWN-HILL ()
<GET-OFF-STUMP?>
<RETURN ,RIVER-OUTLET>>
<ROUTINE DOWN-THE-HILL ()
<COND (<FSET? ,STUMP ,OPENBIT>
<TELL "(Do you want to go down the north side of the hill, or down into the open stump? Please type NORTH or IN.)" CR>
<SETG CLOCK-WAIT T>
<RFALSE>)
(T
; <COND (<NOT <VERB? CLIMB-DOWN>>
<TELL ,I-ASSUME " north, down the hill.)" CR>)>
<GET-OFF-STUMP?>
<RETURN ,RIVER-OUTLET>)>>
<ROUTINE LOOKOUT-HILL-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<STANDING>
<TELL
"at the summit of a high, barren hill. Looking east, you can see">
<WHICH-TOWN "Village">
<TELL " nestled among the trees. A narrow " D ,TRAIL " winds down the north side of the hill, towards the river.|
|
Crowning the hill is the " D ,STUMP " of what must have been a very large and majestic oak tree.">
<COND (<FSET? ,STUMP ,OPENBIT>
<TELL
" An opening in the " D ,STUMP " leads down into " D ,DARKNESS ".">)>
<CRLF>)>>
<OBJECT STUMP
(IN LOCAL-GLOBALS)
(DESC "stump")
(SYNONYM STUMP UNDERSIDE)
; (ADJECTIVE HOLE OPENING)
(FLAGS NDESCBIT TRYTAKEBIT DOORBIT RMUNGBIT)
(ACTION STUMP-F)>
; "RMUNGBIT = stump not yet opened or examined"
<GLOBAL ON-STUMP? <>>
<ROUTINE STUMP-F ()
<COND (<VERB? EXAMINE LOOK-ON>
<SAY-THE ,STUMP>
<COND (<FSET? ,STUMP ,OPENBIT>
<TELL " is open, revealing a round hole that leads ">
<COND (<EQUAL? ,HERE ,LOOKOUT-HILL>
<TELL "downward into " D ,DARKNESS>)
(T
<TELL "upward into moonlight">)>)
(T
<TELL " is huge, easily four feet across">
<COND (,SKEWED?
<FCLEAR ,STUMP ,RMUNGBIT>
<TELL
". Looking closely, you notice that the edge of the " D ,STUMP
" is hinged">)>)>
<TELL "." CR>
<RTRUE>)
(<VERB? OPEN RAISE>
<COND (<FSET? ,STUMP ,OPENBIT>
<ALREADY-OPEN>)>
<GET-OFF-STUMP?>
<COND (,SKEWED?
<FSET ,UNDER-HILL ,ONBIT>
<SETG LIT T>
<FSET ,STUMP ,OPENBIT>
<FCLEAR ,STUMP ,RMUNGBIT>
<TELL "Lifting the hinged top of the " D ,STUMP
" reveals a round hole leading ">
<COND (<EQUAL? ,HERE ,LOOKOUT-HILL>
<TELL "downward into " D ,DARKNESS>)
(T
<TELL "upward into moonlight">)>)
(T
<TELL ,CANT>
<DO-TO>
<TELL "an ordinary stump">)>
<TELL "." CR>
<RTRUE>)
(<VERB? CLOSE LOWER>
<COND (<FSET? ,STUMP ,OPENBIT>
<FCLEAR ,STUMP ,OPENBIT>
<FCLEAR ,UNDER-HILL ,ONBIT>
<SETG LIT <LIT? ,HERE>>
<SAY-THE ,STUMP>
<TELL " closes with a hollow bang">)
(T
<BUT-THE ,STUMP>
<TELL "isn't open">)>
<TELL "." CR>
<RTRUE>)
(<AND <VERB? MOVE PULL PUSH>
<EQUAL? ,PRSO ,STUMP>>
<COND (<NOT ,SKEWED?>
<TOO-LARGE ,STUMP>)
(<FSET? ,STUMP ,OPENBIT>
<PERFORM ,V?CLOSE ,STUMP>)
(T
<PERFORM ,V?OPEN ,STUMP>)>
<RTRUE>)
(<VERB? SIT STAND-ON CLIMB-ON>
<COND (<EQUAL? ,HERE ,UNDER-HILL>
<ALREADY-ON ,STUMP T>)
(,ON-STUMP?
<ALREADY-ON ,STUMP>)
(<FSET? ,STUMP ,OPENBIT>
<UNFORTUNATELY>
<TELL
"you forgot to close the " D ,STUMP " first. Crash!">
<CARRIAGE-RETURNS>
<FCLEAR ,UNDER-HILL ,TOUCHBIT>
<DO-WALK ,P?IN>
<RFATAL>)
(T
<SETG ON-STUMP? T>
<EXCELLENT-VIEW ,STUMP>)>
<RTRUE>)
(<VERB? CLIMB-UP>
<COND (<EQUAL? ,HERE ,UNDER-HILL>
<DO-WALK ,P?UP>)
(T
<PERFORM ,V?SIT ,STUMP>)>
<RTRUE>)
(<VERB? CLIMB-DOWN TAKE-OFF LEAP>
<COND (,ON-STUMP?
<SETG ON-STUMP? <>>
<TELL ,OKAY "you're no longer">)
(<AND <FSET? ,STUMP ,OPENBIT>
<EQUAL? ,HERE ,LOOKOUT-HILL>>
<DO-WALK ,P?IN>
<RTRUE>)
(T
<TELL "But you're not">)>
<TELL " on the " D ,STUMP "." CR>
<RTRUE>)
(<VERB? WALK-TO THROUGH ENTER>
<COND (<FSET? ,STUMP ,OPENBIT>
<COND (<EQUAL? ,HERE ,LOOKOUT-HILL>
<DO-WALK ,P?IN>)
(T
<DO-WALK ,P?UP>)>)
(T
<STUMP-NOT-OPEN>)>
<RTRUE>)
(<VERB? LOOK-INSIDE>
<COND (<FSET? ,STUMP ,OPENBIT>
<CANT-MAKE-OUT-ANYTHING>)
(T
<STUMP-NOT-OPEN>)>
<RTRUE>)
(<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,STUMP>>
<COND (<NOT ,SKEWED?>
<WASTE-OF-TIME>
<RTRUE>)
(<NOT <FSET? ,STUMP ,OPENBIT>>
<ITS-CLOSED ,STUMP>
<RTRUE>)
(<EQUAL? ,PRSO ,HANDS>
<NOTHING-EXCITING>
<RTRUE>)
; (<NOT <THROUGH-HOLE?>>
<RFATAL>)
(<PUTTING-OPEN-UMBRELLA?>
<RTRUE>)
(<G? <GETP ,PRSO ,P?SIZE> 10>
<TOO-LARGE ,PRSO>
<RTRUE>)
(<EQUAL? ,HERE ,LOOKOUT-HILL>
<MOVE ,PRSO ,UNDER-HILL>)
(T
<MOVE ,PRSO ,LOOKOUT-HILL>)>
<TELL ,OKAY>
<ARTICLE ,PRSO T>
<TELL D ,PRSO " disappears into the " D ,STUMP "." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE GET-OFF-STUMP? ()
<COND (,ON-STUMP?
<SETG ON-STUMP? <>>
<TELL "(climbing off the " D ,STUMP " first)" CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE STUMP-NOT-OPEN ()
<COND (<FSET? ,STUMP ,RMUNGBIT>
<SAY-THE ,STUMP>
<TELL " has no visible openings." CR>)
(T
<ITS-CLOSED ,STUMP>)>>
<OBJECT SHOE
(IN LOOKOUT-HILL)
(DESC "horseshoe")
(FDESC "A horseshoe is lying in the grass near the stump.")
(SYNONYM HORSESHOE SHOE)
;(ADJECTIVE HORSE)
(FLAGS TAKEBIT WEARBIT)
(SIZE 5)
(VALUE 0)
(ACTION SHOE-F)>
<ROUTINE SHOE-F ()
<COND (<AND <VERB? EXAMINE>
<FSET? ,SHOE ,ONBIT>>
<SAY-THE ,SHOE>
<TELL " is twinkling with lucky Magick." CR>
<RTRUE>)
(<VERB? WEAR>
<TELL "You don't have any shoeing nails." CR>
<RTRUE>)
(<AND <VERB? THROW PLAY>
<NOT ,PRSI>>
<TELL "This is no time for lawn games." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT LAKE
(IN LOCAL-GLOBALS)
(DESC "lake")
(SYNONYM LAKE POND WATER)
(FLAGS NDESCBIT TRYTAKEBIT CONTBIT OPENBIT)
(ACTION LAKE-F)>
<ROUTINE LAKE-F ()
<COND (<VERB? EXAMINE>
<TELL "The surface of the lake is ">
<COND (,SKEWED?
<TELL "black and sinister">)
(T
<TELL "bright with ripples">)>
<TELL "." CR>
<RTRUE>)
(<HANDLE-WATER?>
<RTRUE>)
(T
<RFALSE>)>>

49
wishbringer.zil Normal file
View File

@ -0,0 +1,49 @@
"J2 for WISHBRINGER: (C)1985 Infocom, Inc. All Rights Reserved."
<PRINC "
WISHBRINGER: The Magick Stone of Dreams
">
ON!-INITIAL
OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>)>
<SET REDEFINE T>
; <GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<COND (<GASSIGNED? PREDGEN>
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)>
<INSERT-FILE "MISC" T>
<INSERT-FILE "PARSER" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "PEOPLE" T>
<INSERT-FILE "SOUTH" T>
<INSERT-FILE "CENTER" T>
<INSERT-FILE "WEST" T>
<INSERT-FILE "EAST" T>
<INSERT-FILE "NORTH" T>
<INSERT-FILE "BRIDGE" T>
<INSERT-FILE "FOG" T>
<INSERT-FILE "SHOPPE" T>
<INSERT-FILE "CEMETERY" T>
<INSERT-FILE "UNDER" T>
<INSERT-FILE "TOWER" T>
<INSERT-FILE "ISLAND" T>
<INSERT-FILE "BOXES" T>
<INSERT-FILE "MAGICK" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>

49
z0.zil Normal file
View File

@ -0,0 +1,49 @@
"J2 for WISHBRINGER: (C)1985 Infocom, Inc. All Rights Reserved."
<PRINC "
WISHBRINGER: The Magick Stone of Dreams
">
ON!-INITIAL
OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>)>
<SET REDEFINE T>
; <GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<COND (<GASSIGNED? PREDGEN>
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)>
<INSERT-FILE "MISC" T>
<INSERT-FILE "PARSER" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "PEOPLE" T>
<INSERT-FILE "SOUTH" T>
<INSERT-FILE "CENTER" T>
<INSERT-FILE "WEST" T>
<INSERT-FILE "EAST" T>
<INSERT-FILE "NORTH" T>
<INSERT-FILE "BRIDGE" T>
<INSERT-FILE "FOG" T>
<INSERT-FILE "SHOPPE" T>
<INSERT-FILE "CEMETERY" T>
<INSERT-FILE "UNDER" T>
<INSERT-FILE "TOWER" T>
<INSERT-FILE "ISLAND" T>
<INSERT-FILE "BOXES" T>
<INSERT-FILE "MAGICK" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>