wishbringer-gold/south.zil

981 lines
24 KiB
Plaintext

"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>>