plunderedhearts/verbs.zil

3699 lines
90 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"VERBS for
PLUNDERED HEARTS
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
;"subtitle game commands"
<GLOBAL VERBOSITY 1> ;"0 = super-brief, 1 = brief, 2 = verbose"
<ROUTINE V-VERBOSE ()
<SETG VERBOSITY 2>
<TELL "Maximum verbosity." CR CR>
<V-LOOK>>
<ROUTINE V-BRIEF ()
<SETG VERBOSITY 1>
<TELL "B" ,RIEF-DESC>>
<ROUTINE V-SUPER-BRIEF ()
<SETG VERBOSITY 0>
<TELL "Superb" ,RIEF-DESC>>
<ROUTINE V-SAVE ()
<SETG P-CONT <>> ;"flush anything on input line after SAVE"
<SETG QUOTE-FLAG <>>
<COND (<SAVE>
<TELL ,OK>)
(T
<TELL ,FAILED>)>>
<ROUTINE V-RESTORE ()
<COND (<RESTORE>
<TELL ,OK>)
(T
<TELL ,FAILED>)>>
<ROUTINE V-SCRIPT ()
<PUT 0 8 <BOR <GET 0 8> 1>>
<CORP-NOTICE "begins">
<V-VERSION>>
<ROUTINE V-UNSCRIPT ()
<CORP-NOTICE "ends">
<V-VERSION>
<PUT 0 8 <BAND <GET 0 8> -2>>
<RTRUE>>
<ROUTINE CORP-NOTICE (STRING)
<TELL
"Here " .STRING " a transcript of interaction with" CR>>
;<ROUTINE V-DIAGNOSE ()
<COND (<EQUAL? ,HERE ,ROAD>
<TELL
"Your ankle is swelling painfully. It's probably broken." CR>)
(T
<TELL "You are in good health" ,PCR>)>>
<ROUTINE V-INVENTORY ()
<COND (<AND <RUNNING? ,I-LSED>
<G? ,LAFOND-CTR ,HORNY>>
<COND (<HELD? ,PINCH>
<TELL CTHE ,PINCH " is not enough to cover">)
(T
<TELL "You blush to look at">)>
<TELL " your naked body." CR>
<RTRUE>)>
<SETG D-BIT <- ,WORNBIT>>
<DESCRIBE-CONTENTS ,WINNER <> <+ ,D-ALL? ,D-PARA?>>
;<COND (<NOT <DESCRIBE-CONTENTS ,WINNER <> <+ ,D-ALL? ,D-PARA?>>>
<TELL "You are empty-handed.">)>
<SETG D-BIT ,WORNBIT>
<DESCRIBE-CONTENTS ,WINNER <> <+ ,D-ALL? ,D-PARA?>>
<SETG D-BIT <>>
<CRLF>>
;<ROUTINE V-INVENTORY ()
<DESCRIBE-CONTENTS ,PROTAGONIST <>> ;"you can't have nothing"
<CRLF>>
<ROUTINE V-QUIT ()
<V-SCORE>
<DO-YOU-WISH "leave the game">
<COND (<YES?>
<QUIT>)
(T
<TELL ,OK>)>>
<ROUTINE V-RESTART ()
<V-SCORE>
<DO-YOU-WISH "restart">
<COND (<YES?>
<TELL "Restarting." CR>
<RESTART>
<TELL ,FAILED>)>>
<ROUTINE DO-YOU-WISH (STRING)
<TELL ,INDENT "Do you wish to " .STRING "? (Y is affirmative): ">>
<ROUTINE YES? ()
<PRINTI ">">
<READ ,P-INBUF ,P-LEXV>
<COND (<YES-WORD <GET ,P-LEXV 1>>
<RTRUE>)
(<OR <NO-WORD <GET ,P-LEXV 1>>
<EQUAL? <GET ,P-LEXV 1> ,W?N>>
<RFALSE>)
(T
<TELL "This is important: please answer YES or NO. ">
<AGAIN>)>>
<ROUTINE FINISH (;"OPTIONAL" ;(END-OF-GAME <>) "AUX" (REPEATING <>) (CNT 0))
<PROG ()
<CRLF>
<COND (<NOT .REPEATING>
<SET REPEATING T>
<TELL ,INDENT>
<V-SCORE>)>
<COND (<G? ,SCORE 24> ;".END-OF-GAME"
<TELL ,INDENT
"Thus you have finished the story of " ,GAME-CAPS ",
earning the title, \"" <GET ,WINNING-RANKS ,FINAL-RANK> ".\"">
<COND (<L? ,FINAL-RANK 4>
<TELL
" There are other, perhaps more satisfying, conclusions.">)>
<CRLF>)>
<TELL ,INDENT
"You may start over, restore a saved position, or end
this session of the game. (Type RESTART, RESTORE, or QUIT):|
>">
<PUTB ,P-LEXV 0 10>
<READ ,P-INBUF ,P-LEXV>
<PUTB ,P-LEXV 0 60>
<SET CNT <+ .CNT 1>>
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?RESTAR>
<RESTART>
<TELL ,FAILED>
<AGAIN>)
(<AND <EQUAL? <GET ,P-LEXV 1> ,W?RESTOR>
<NOT <RESTORE>>>
<TELL ,FAILED>
<AGAIN>)
(<OR <EQUAL? <GET ,P-LEXV 1> ,W?QUIT ,W?Q>
<G? .CNT 10>>
<QUIT>)>
<AGAIN>>>
<ROUTINE V-VERSION ("AUX" (CNT 17) V)
<SET V <BAND <GET 0 1> *3777*>>
<TELL ,GAME-CAPS CR
"Infocom interactive fiction|
Copyright (c) 1987 by Infocom, Inc. All rights reserved.|"
,GAME-CAPS " is a trademark of Infocom, Inc.|
Release " N .V " / Serial number ">
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> 23>
<RETURN>)
(T
<PRINTC <GETB 0 .CNT>>)>>
<CRLF>>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<ROUTINE V-$COMMAND ()
<DIRIN 1>
<RTRUE>>
<ROUTINE V-$RANDOM ()
<COND (<NOT <PRSO? ,INTNUM>>
<TELL "ILLEGAL." CR>)
(T
<RANDOM <- 0 ,P-NUMBER>>
<RTRUE>)>>
<ROUTINE V-$RECORD () ;"all READS and INPUTS get sent to command file"
<DIROUT ,D-RECORD-ON>
<RTRUE>>
<ROUTINE V-$UNRECORD ()
<DIROUT ,D-RECORD-OFF>
<RTRUE>>
<ROUTINE V-$VERIFY ()
<COND (<AND <PRSO? ,INTNUM>
<EQUAL? ,P-NUMBER 25>>
<TELL N ,SERIAL CR>)
(T
<TELL "Verifying." CR>
<COND (<VERIFY>
<TELL ,OK>)
(T
<TELL CR "** Bad **" CR>)>)>>
<CONSTANT SERIAL 0>
;<GLOBAL DEBUG <>>
;<ROUTINE V-$DEBUG ()
<TELL "O">
<COND (,DEBUG
<SETG DEBUG <>>
<TELL "ff">)
(T
<SETG DEBUG T>
<TELL "n">)>
<TELL ,PCR>>
;"subtitle real verbs"
<ROUTINE V-ALARM ()
<COND (<PRSO? ,ROOMS>
<PERFORM-PRSA ,ME>
<RTRUE>)
(<PRSO? ,ME>
<TELL "You pinch yourself. " ,YOU-ARENT " dreaming" ,PCR>)
(<AND <NOT <FSET? ,PRSO ,DEADBIT>>
<OR <FSET? ,PRSO ,ACTORBIT>
<PRSO? ,CROC>>>
<PRONOUN>
<TELL " isn't asleep." CR>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-ANSWER ()
<COND (<AND ,AWAITING-REPLY
<YES-WORD <GET ,P-LEXV ,P-CONT>>>
<V-YES>
<STOP>)
(<AND ,AWAITING-REPLY
<NO-WORD <GET ,P-LEXV ,P-CONT>>>
<V-NO>
<STOP>)
(T
<TELL "Nobody is awaiting your answer." CR>
<STOP>)>>
<ROUTINE V-ANSWER-KLUDGE ()
<COND (<NOUN-USED ,W?I ,ME>
<V-INVENTORY>)
(T
<SETG P-WON <>>
<TELL ,NO-VERB>
<STOP>)>>
<GLOBAL AWAITING-FAKE-ORPHAN <>>
;<ROUTINE ORPHAN-VERB ()
;<COND (<NOT <EQUAL? ,HERE ,AUDIENCE-CHAMBER ,BEDROOM>>
<SETG AWAITING-FAKE-ORPHAN <>>
<RFALSE>)>
<PUT ,P-VTBL 0 ,W?ZZMGCK>
;<PUT ,P-OVTBL 0 ,W?ANSWER> ;"maybe fix 'what do you want to'"
<PUT ,P-OTBL ,P-VERB ,ACT?ZZMGCK>
<PUT ,P-OTBL ,P-VERBN ,P-VTBL>
<PUT ,P-OTBL ,P-PREP1 0>
<PUT ,P-OTBL ,P-PREP1N 0>
<PUT ,P-OTBL ,P-PREP2 0>
<PUT ,P-OTBL 5 0>
<PUT ,P-OTBL ,P-NC1 1>
<PUT ,P-OTBL ,P-NC1L 0>
<PUT ,P-OTBL ,P-NC2 0>
<PUT ,P-OTBL ,P-NC2L 0>
<SETG P-OFLAG T>>
<ROUTINE V-APPLAUD ()
<TELL "Clap." CR>>
;<ROUTINE V-APPLY ()
<COND (<FSET? ,PRSO ,WEARBIT>
<PERFORM ,V?WEAR ,PRSO>
<RTRUE>)
(T
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Apply" T ,PRSO " for what? A job?" CR>)>>
<ROUTINE V-ASK-ABOUT ("AUX" OWINNER)
<COND (<PRSO? ,ME>
<PERFORM ,V?TELL ,ME>
<RTRUE>)
(<FSET? ,PRSO ,ACTORBIT>
<SET OWINNER ,WINNER>
<SETG WINNER ,PRSO>
<PERFORM ,V?TELL-ABOUT ,ME ,PRSI>
<SETG WINNER .OWINNER>
<THIS-IS-IT ,PRSI>
<THIS-IS-IT ,PRSO>
<RTRUE>)
(T
<PERFORM ,V?TELL ,PRSO>
<RTRUE>)>>
<ROUTINE V-ASK-FOR ()
<TELL "Naturally," T ,PRSO " doesn't oblige." CR>>
<ROUTINE V-ASK-NO-ONE-FOR ("AUX" ACTOR)
<COND (<SET ACTOR <FIND-IN ,HERE ,ACTORBIT>>
<PERFORM ,V?ASK-FOR .ACTOR ,PRSO>
<RTRUE>)
(T
<NO-ONE-HERE "ask">)>>
;<ROUTINE V-BARTER-WITH ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "But" T ,PRSO " has nothing worth trading for." CR>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-BARTER-FOR ()
<IMPOSSIBLES>>
<ROUTINE V-BITE ()
<HACK-HACK "Biting">>
<ROUTINE V-BLOW ()
<CANT-VERB-A-PRSO "blow">>
<ROUTINE PRE-BOARD ()
<COND (<IN? ,PROTAGONIST ,PRSO>
<TELL ,LOOK-AROUND>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>)
(<UNTOUCHABLE? ,PRSO>
<CANT-REACH ,PRSO>)>>
<ROUTINE V-BOARD ("AUX" (AV <LOC ,PROTAGONIST>))
<COND (<FSET? ,PRSO ,VEHBIT>
;<COND (<NOT <EQUAL? <LOC ,PRSO> ,HERE ,LOCAL-GLOBALS>>
<TELL ,YOU-CANT "board" T ,PRSO " when it's ">
<COND (<FSET? <LOC ,PRSO> ,SURFACEBIT>
<TELL "on">)
(T
<TELL "in">)>
<TELL TR <LOC ,PRSO>>
<RTRUE>)>
<MOVE ,PROTAGONIST ,PRSO>
<TELL "You are now ">
<COND (<FSET? ,PRSO ,INBIT>
<TELL "i">)
(T
<TELL "o">)>
<TELL "n" T ,PRSO ".">
<APPLY <GETP <LOC ,PROTAGONIST> ,P?ACTION> ,M-ENTER>
<CRLF>)
(<FSET? ,PRSO ,ACTORBIT>
<TELL ,POLITE-SOCIETY>)
(<EQUAL? <GET ,P-ITBL ,P-PREP1> ,PR?IN>
<CANT-VERB-A-PRSO "get into">)
(T
<CANT-VERB-A-PRSO "get onto">)>>
<ROUTINE V-BRIBE ()
<COND (<NOT ,PRSI>
<COND (<HELD? ,BANKNOTE>
<PERFORM ,V?GIVE ,BANKNOTE ,PRSO>
<RTRUE>)
(T
<TELL "A lady bribes only with money" ,PCR>)>)
(T
<PERFORM ,V?GIVE ,PRSI ,PRSO>
<RTRUE>)>>
<ROUTINE V-BURN ()
<COND (<AND <NOT ,PRSI>
<NOT <OR <GLOBAL-IN? ,FIRE ,HERE>
<GLOBAL-IN? ,TORCH ,HERE>>>>
<TELL "You have no source of fire." CR>)
(T
<TELL "Ladies do not play with fire." CR>
<RTRUE>)>
<COND ;(<IN? ,PROTAGONIST ,PRSO>
<DO-FIRST "leave" ,PRSO>)
(<FSET? ,PRSO ,WORNBIT>
<TELL
"Unless you relish a fiery death, you had best remove" TR ,PRSO>)
(<PRSO? ,POWDER>
<TELL
"Papa says never put " D ,POWDER " near a flame." CR>)
(<HELD? ,PRSO>
<DO-FIRST "drop" ,PRSO>)
(<FSET? ,PRSO ,ACTORBIT>
<TELL ,UNLADY>)
(<FSET? ,PRSO ,BURNBIT>
<REMOVE ,PRSO>
<TELL
"In an instant," T ,PRSO " is consumed by fire." CR>)
(T
<CANT-VERB-A-PRSO "burn">)>>
;<ROUTINE V-BUY ()
<TELL "Sorry, there aren't any on sale here." CR>>
;<ROUTINE V-BUY-WITH ()
<COND (<PRSI? ,ONE-MARSMID-COIN ,TEN-MARSMID-COIN>
<PERFORM ,V?BUY ,PRSO>
<RTRUE>)
(T
<TELL
"That must be a queer planet you come from, where" A ,PRSI
" is a unit of money." CR>)>>
;<ROUTINE V-CALL ()
<COND (<FSET? ,PRSO ,RLANDBIT>
<V-SCREAM>)
(<NOT <VISIBLE? ,PRSO>>
<CANT-SEE ,PRSO>)
(T
<PERFORM ,V?TELL ,PRSO>
<RTRUE>)>>
;<ROUTINE V-CAST-OFF ()
<COND (<PRSO? ,ROOMS>
<PERFORM ,V?LAUNCH <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<PERFORM ,V?TAKE-OFF ,PRSO>
<RTRUE>)>>
;<ROUTINE V-CATCH ()
<TELL "The only thing you're good at catching is a cold." CR>>
<GLOBAL CHASTISED? <>>
<ROUTINE V-CHASTISE ()
<COND (<PRSO? ,INTDIR>
<TELL
,YOULL-HAVE-TO "go in that " D ,INTDIR " to see what's there." CR>)
(T
<COND (<NOT ,CHASTISED?>
<TELL
"You may use prepositions to indicate precisely what you want to do: LOOK AT
the object, LOOK INSIDE it, LOOK UNDER it, etc. In this case I'll take you
to mean LOOK AT the object." CR ,INDENT>
<SETG CHASTISED? T>)>
<COND (<PRSO? ,ROOMS>
<PERFORM ,V?LOOK>)
(T
<PERFORM ,V?EXAMINE ,PRSO>)>
<RTRUE>)>>
<ROUTINE V-CLEAN ()
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Do you also do windows?" CR>>
<ROUTINE V-CLIMB ()
<COND (<AND <EQUAL? ,PRSO ,INTDIR>
<EQUAL? ,P-PRSA-WORD ,W?CRAWL>>
<DO-WALK ,P-DIRECTION>
<RTRUE>)
(<PRSO? ,ROOMS>
<DO-WALK ,P?UP>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-CLIMB-DOWN ()
<COND (<PRSO? ,ROOMS>
<DO-WALK ,P?DOWN>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-CLIMB-ON ()
<COND (<OR <FSET? ,PRSO ,VEHBIT>
<FSET? ,PRSO ,ACTORBIT>>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>)
(<EQUAL? <GET ,P-ITBL ,P-PREP1> ,PR?IN ;,PR?INSIDE>
<CANT-VERB-A-PRSO "climb into">)
(T
<CANT-VERB-A-PRSO "climb onto">)>>
<ROUTINE V-CLIMB-OVER ()
<COND (<HELD? ,PRSO>
<TELL ,HOLDING-IT>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-CLIMB-UP () ;"Used in GO UP, CLIMB UP and WALK UP."
<COND (<PRSO? ,ROOMS>
<DO-WALK ,P?UP>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-CLOSE ()
<COND (<AND <OR <FSET? ,PRSO ,DOORBIT>
<FSET? ,PRSO ,CONTBIT>>
<NOT <FSET? ,PRSO ,SURFACEBIT>>
<NOT <FSET? ,PRSO ,ACTORBIT>>
<NOT <PRSO? ,CROC ,GARTER ,RIGGING-OBJECT>>>
<OPEN-CLOSE ,PRSO>)
(T
<CANT-VERB-A-PRSO "close">)>>
;<ROUTINE V-COUNT ()
<IMPOSSIBLES>>
<ROUTINE V-CRAWL-UNDER ()
<COND (<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL-HIT-HEAD>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-CROSS ()
<V-WALK-AROUND>>
<ROUTINE V-CRY ()
<NO-TIME-FOR "have hysterics">>
<ROUTINE V-CUT ()
<COND (<OR <NOT ,PRSI>
<EQUAL? ,PRSI ,ROOMS>>
<COND (<HELD? ,DAGGER>
<PERFORM ,V?CUT ,PRSO ,DAGGER>
<RTRUE>)
(<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?KILL ,PRSO>
<RTRUE>)
(T
<TELL "Your fingernails aren't that sharp!" CR>)>)
(T
<TELL
"To put it bluntly, neither" T ,PRSI " nor you are very sharp" ,PCR>)>>
<ROUTINE V-DANCE ("AUX" OW)
<COND (<AND <NOT <EQUAL? ,WINNER ,PROTAGONIST>>
<EQUAL? ,PRSO <> ,ME ,PROTAGONIST>>
<SET OW ,WINNER>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?DANCE .OW>
<SETG WINNER .OW>
<RTRUE>)
(<FSET? ,PRSO ,ACTORBIT>
<COND (<NOT <EQUAL? ,HERE ,BALLROOM ,ORCHESTRA>>
<TELL "This isn't a good place to dance" ,PCR>)
(T
<TELL
"It is unlikely" T ,PRSO " would want to dance just now." CR>)>)
(<PRSO? ,ME ,ROOMS>
<COND (,PARTNER
<TELL ,PACE>)
(T
<TELL "One cannot dance the minuet alone." CR>)>)
(T
<TELL
"Dancing with" A ,PRSO " is an early symptom of the plague." CR>)>>
;<ROUTINE V-DEFLATE ()
<IMPOSSIBLES>>
;<ROUTINE V-DIG ()
<WASTES>>
<ROUTINE V-DISEMBARK ()
<COND (<NOT ,PRSO>
<COND (<NOT <IN? ,PROTAGONIST ,HERE>>
<PERFORM-PRSA <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<TELL ,LOOK-AROUND>)>)
;"And since GET OUT is also TAKE OUT"
(<EQUAL? ,P-PRSA-WORD ,W?TAKE>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<AND <EQUAL? ,PRSO ,LEDGE>
<EQUAL? ,HERE ,CABIN>>
<PERFORM ,V?CLIMB-ON ,PRSO>
<RTRUE>)
(<NOT <IN? ,PROTAGONIST ,PRSO>>
<TELL ,LOOK-AROUND>
<RFATAL>)
(<EQUAL? ,HERE ,BY-SHIP ,LAGOON>
<V-SWIM>)
(T
<MOVE ,PROTAGONIST ,HERE>
<TELL "You">
<COND (<IN? ,HERO ,PRSO>
<MOVE ,HERO ,HERE>
<TELL " and " D ,HERO>)>
<TELL " get o">
<COND (<OFF-VEHICLE? ,PRSO>
<TELL "ff">)
(T
<TELL "ut of">)>
<TELL T ,PRSO ".">
<CRLF>)>>
<ROUTINE V-DRESS ()
<COND (,PRSO
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "There's no need for that." CR>
;<PRONOUN>
;<COND (<FSET? ,PRSO ,FEMALEBIT>
<TELL "Sh">)
(T
<TELL "H">)>
;<TELL " is dressed!" CR>)
(T
<IMPOSSIBLES>)>)
(T
<SETG PRSO ,ROOMS>
<V-GET-DRESSED>)>>
<ROUTINE V-DRINK ()
<CANT-VERB-A-PRSO "drink">>
<ROUTINE V-DRINK-FROM ()
<CANT-VERB-A-PRSO "drink from">>
<ROUTINE V-DROP ()
<COND (<NOT <SPECIAL-DROP>>
<COND (<EQUAL? <LOC ,PROTAGONIST> ,SKIFF ,CASK>
<MOVE ,PRSO <LOC ,PROTAGONIST>>)
(T
<MOVE ,PRSO ,HERE>)>
<TELL "Dropped." CR>)>>
<ROUTINE SPECIAL-DROP () ;"used by drop and throw"
<COND (<EQUAL? ,HERE ,BOWSPRIT ,ON-LADDER>
<REMOVE ,PRSO>
<TELL "With a splash," T ,PRSO " is lost forever." CR>)
(<EQUAL? <LOC ,PROTAGONIST> ,SHALLOWS>
<REMOVE ,PRSO>
<TELL "With a plop," T ,PRSO " is dragged out by a wave." CR>)
(<OR <EQUAL? ,HERE ,RIGGING-ROOM>
<AND <EQUAL? ,HERE ,CROWS-NEST>
<VERB? THROW>>>
<COND (<AND <FSET? ,PRSO ,WEARBIT>
<NOT <FSET? ,PRSO ,WORNBIT>>>
<MOVE ,PRSO ,HERE>
<TELL "Billowing out," T ,PRSO " catch">
<COND (<NOT <FSET? ,PRSO ,PLURALBIT>>
<TELL "es">)>
<TELL " in" T ,RIGGING-OBJECT " nearby." CR>)
(T
<MOVE ,PRSO ,WHICH-MAST?>
<TELL CTHE ,PRSO " falls to the deck below." CR>)>)>>
<ROUTINE V-EAT ()
<TELL
"A lady is trained to eat anything, but this is absurd" ,PCR>>
<ROUTINE V-EMBRACE ()
<COND (<TOUCHING? ,PRSO>
<TELL "You give" T ,PRSO " a brief embrace">
<COND (<NOT <FSET? ,PRSO ,ACTORBIT>>
<TELL
" and are not surprised when it doesn't respond">)>
<TELL ,PCR>)
(<IN? ,PRSO ,GLOBAL-OBJECTS>
<IMPOSSIBLES>)
(T
<CANT-REACH ,PRSO>)>>
<ROUTINE V-EMPTY ("AUX" OBJ NXT)
<COND (<NOT ,PRSI>
<SETG PRSI ,GROUND>)>
<COND (<NOT <FSET? ,PRSO ,CONTBIT>>
<TELL ,HUH>)
(<NOT <FSET? ,PRSO ,OPENBIT>>
<TELL "But" T ,PRSO " isn't open." CR>)
(<NOT <FIRST? ,PRSO>>
<TELL "But" T ,PRSO " is already empty!" CR>)
(<AND <PRSI? <FIRST? ,PRSO>>
<NOT <NEXT? ,PRSI>>>
<TELL ,THERES-NOTHING "in" T ,PRSO " but" TR ,PRSI>)
(T
<SET OBJ <FIRST? ,PRSO>>
<REPEAT ()
<SET NXT <NEXT? .OBJ>>
<COND (<NOT <EQUAL? .OBJ ,PROTAGONIST>>
<TELL D .OBJ ": ">
<COND (<FSET? .OBJ ,TAKEBIT>
<MOVE .OBJ ,PROTAGONIST>
<COND (<PRSI? ,HANDS>
<TELL "Taken." CR>)
(<PRSI? ,GROUND>
<PERFORM ,V?DROP .OBJ>)
(<FSET? ,PRSI ,SURFACEBIT>
<PERFORM ,V?PUT-ON .OBJ ,PRSI>)
(T
<PERFORM ,V?PUT .OBJ ,PRSI>)>)
(T
<WASTES>)>)>
<COND (.NXT
<SET OBJ .NXT>)
(T
<RETURN>)>>)>>
<ROUTINE V-EMPTY-FROM ()
<COND (<IN? ,PRSO ,PRSI>
<COND (<FSET? ,PRSO ,TAKEBIT>
<MOVE ,PRSO ,PROTAGONIST>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(T
<WASTES>)>)
(T
<NOT-IN>)>>
<ROUTINE V-ENTER ()
<COND (<FSET? ,PRSO ,DOORBIT>
<DO-WALK <OTHER-SIDE ,PRSO>>
<RTRUE>)
(<FSET? ,PRSO ,VEHBIT>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<IN? ,PRSO ,LOCAL-GLOBALS>
<IMPOSSIBLES>)
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL-HIT-HEAD>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>
<RTRUE>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-EXAMINE ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<COND (<FIRST? ,PRSO>
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)
(T
<NOTHING-INTERESTING>
<TELL "about" TR ,PRSO>)>)
(<OR <FSET? ,PRSO ,DOORBIT>
<FSET? ,PRSO ,SURFACEBIT>>
<V-LOOK-INSIDE>)
(<FSET? ,PRSO ,CONTBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<V-LOOK-INSIDE>)
(T
<TELL "It" ,IS-CLOSED ,PCR>)>)
(<FSET? ,PRSO ,LIGHTBIT>
<TELL "It's o">
<COND (<FSET? ,PRSO ,ONBIT>
<TELL "n">)
(T
<TELL "ff">)>
<TELL ,PCR>)
(<FSET? ,PRSO ,NARTICLEBIT>
<SENSE-OBJECT "look">)
(<OR <PROB 25>
<PRSO? ,PSEUDO-OBJECT>>
<TELL ,COMMON-LOOKING D ,PRSO ,PCR>)
(<PROB 60>
<NOTHING-INTERESTING>
<TELL "about" TR ,PRSO>)
(T
<PRONOUN>
<TELL " look">
<COND (<NOT <OR <FSET? ,PRSO ,PLURALBIT>
<PRSO? ,ME>>>
<TELL "s">)>
<TELL " like every other " D ,PRSO " you've ever seen." CR>)>>
<ROUTINE NOTHING-INTERESTING ()
<TELL ,THERES-NOTHING>
<COND (<PROB 25>
<TELL "unusual">)
(<PROB 33>
<TELL "noteworthy">)
(<PROB 50>
<TELL "extraordinary">)
(T
<TELL "special">)>
<TELL " ">>
<ROUTINE V-EXIT ()
<COND (<AND ,PRSO
<FSET? ,PRSO ,VEHBIT>>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(<NOT <IN-EXITABLE-VEHICLE?>>
<DO-WALK ,P?OUT>)>>
<ROUTINE IN-EXITABLE-VEHICLE? ("AUX" AV)
<SET AV <LOC ,PROTAGONIST>>
<COND (<OR <EQUAL? .AV ,CASK ,SKIFF ,LEDGE>
<EQUAL? .AV ,LAFS-BED ,CAPT-BED ,COT>
<EQUAL? .AV ,CABIN-BED>>
<PERFORM ,V?DISEMBARK <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<RFALSE>)>
<RFALSE>>
<ROUTINE V-FEED ()
<MORE-SPECIFIC>>
<ROUTINE V-FIDDLE ()
<HACK-HACK "Fiddling with">>
<ROUTINE V-FILL ()
<COND (<NOT ,PRSI>
<TELL ,THERES-NOTHING "to fill it with." CR>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-SFILL ()
<PERFORM ,V?FILL ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-FIND ("OPTIONAL" (WHERE <>) "AUX" (L <LOC ,PRSO>))
<COND (<NOT .L>
<PRONOUN>
<TELL " could be anywhere!" CR>)
(<IN? ,PRSO ,PROTAGONIST>
<TELL "You have it!" CR>)
(<IN? ,PRSO ,HERE>
<TELL "Right in front of you." CR>)
(<OR <IN? ,PRSO ,GLOBAL-OBJECTS>
<GLOBAL-IN? ,PRSO ,HERE>
<PRSO? ,PSEUDO-OBJECT>>
<FIGURE-IT-OUT>)
(<AND <FSET? .L ,ACTORBIT>
<VISIBLE? .L>>
<TELL "Looks as if" T .L " has it." CR>)
(<AND <FSET? .L ,CONTBIT>
<VISIBLE? ,PRSO>
<NOT <IN? .L ,GLOBAL-OBJECTS>>>
<COND (<FSET? .L ,SURFACEBIT>
<TELL "O">)
(<AND <FSET? .L ,VEHBIT>
<NOT <FSET? .L ,INBIT>>>
<TELL "O">)
(T
<TELL "I">)>
<TELL "n" TR .L>)
(.WHERE
<TELL "Beats me." CR>)
(T
<FIGURE-IT-OUT>)>>
<ROUTINE V-FOLLOW ()
<COND (<VISIBLE? ,PRSO>
<TELL "But" T ,PRSO " is right here!" CR>)
(<NOT <FSET? ,PRSO ,ACTORBIT>>
<IMPOSSIBLES>)
(T
<TELL "You have no idea where" T ,PRSO " is." CR>)>>
;<GLOBAL FOLLOW-FLAG <>>
;<ROUTINE I-FOLLOW ()
<SETG FOLLOW-FLAG <>>
<RFALSE>>
<ROUTINE PRE-GIVE ("AUX" (GLASS <>))
<COND (<AND <FSET? ,PRSO ,DEADBIT>
<NOT <PRSI? ,SALTS>>>
<TELL "It's unlikely" T ,PRSO " will want that." CR>)
(<AND <VERB? GIVE>
<PRSO? ,HANDS>>
<PERFORM ,V?SHAKE-WITH ,PRSI>
<RTRUE>)
(<AND <PRSO? ,WINE>
<OR <HELD? ,BLUE-GLASS>
<HELD? ,GREEN-GLASS>>>
<COND (<HELD? ,BLUE-GLASS>
<SET GLASS ,BLUE-GLASS>)
(<HELD? ,GREEN-GLASS>
<SET GLASS ,GREEN-GLASS>)>
<PERFORM-PRSA .GLASS ,PRSI>
<RTRUE>)
(<IDROP>
<RTRUE>)>>
<ROUTINE V-GET-DRESSED ()
<COND (<PRSO? ,ROOMS>
<MORE-SPECIFIC>)
(T
<RECOGNIZE>)>>
<ROUTINE V-GET-DRUNK ()
<COND (<NOT <PRSO? ,ROOMS>>
<RECOGNIZE>)
;(<EQUAL? ,HERE ,CAPT-QUARTERS>
<PERFORM ,V?BUY ,BEER>
<RTRUE>)
(T
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Here?" CR>)>>
<ROUTINE V-GET-UNDRESSED ()
<COND (<PRSO? ,ROOMS>
<REMOVE-CLOTHES T>
;<COND (<CHECK-STRIP>
<RTRUE>)
(T
<REMOVE-CLOTHES T>)>)
(T
<RECOGNIZE>)>>
<ROUTINE REMOVE-CLOTHES ("OPTIONAL" (CALLED-BY-GET-UNDRESSED <>) "AUX" X N)
<COND (.CALLED-BY-GET-UNDRESSED
<COND (<LAF-DOFF-CHECK>
<RTRUE>)
(T
<TELL "You">
<COND (<AND <NOT <FSET? ,CHEMISE ,EVERYBIT>>
<NOT <FSET? ,PANTS ,WORNBIT>>
<NOT <FSET? ,SHIRT ,WORNBIT>>>
<TELL "'re already stripped!" CR>
<RTRUE>)
(T
<TELL " strip down to your chemise" ,PCR>)>)>)>
<SET X <FIRST? ,PROTAGONIST>>
<REPEAT ()
<COND (<NOT .X>
<RETURN>)
(<FSET? .X ,WORNBIT>
<FCLEAR .X ,WORNBIT>)>
<SET N <NEXT? .X>>
<SET X .N>>
<MOVE ,RETICULE ,PROTAGONIST>
<FSET ,SHOES ,WORNBIT>
<FSET ,CHEMISE ,WORNBIT>
<FCLEAR ,CHEMISE ,EVERYBIT>
<SETG BOY-DRESS? <>>
T>
;<ROUTINE REMOVE-CLOTHES ("OPTIONAL" (CALLED-BY-GET-UNDRESSED <>) "AUX" X N)
<COND (.CALLED-BY-GET-UNDRESSED
<COND (<AND <EQUAL? ,HERE ,LAFS-ROOM>
<IN? ,LAFOND ,HERE>>
<COND (<G? ,LAFOND-CTR ,HORNY>
<TELL ,THERES-NOTHING "to remove!" CR>)
(T
<TELL
D ,LAFOND " chuckles. \"No, ma cherie, ">
<COND (<L? ,LAFOND-CTR 3>
<TELL "have some wine first.\"" CR>
<RTRUE>)
(T
<TELL "I'll do that.\"" CR>
<SETG LAFOND-CTR ,HORNY>
<QUEUE I-LSED -1>)>)>
<RTRUE>)
(T
<TELL "You">
<COND (<AND <NOT <FSET? ,CHEMISE ,EVERYBIT>>
<NOT <FSET? ,PANTS ,WORNBIT>>
<NOT <FSET? ,SHIRT ,WORNBIT>>>
<TELL "'re already stripped!" CR>
<RTRUE>)
(T
<TELL " strip down to your chemise" ,PCR>)>)>)>
<SET X <FIRST? ,PROTAGONIST>>
<REPEAT ()
<COND (<NOT .X>
<RETURN>)
(<FSET? .X ,WORNBIT>
<FCLEAR .X ,WORNBIT>)>
<SET N <NEXT? .X>>
<SET X .N>>
<MOVE ,RETICULE ,PROTAGONIST>
<FSET ,SHOES ,WORNBIT>
<FSET ,CHEMISE ,WORNBIT>
<FCLEAR ,CHEMISE ,EVERYBIT>
<SETG BOY-DRESS? <>>
T>
<ROUTINE V-UNDRESS ()
<COND (,PRSO
<COND (<PRSO? ,DAD>
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Undress your father?!" CR>)
(<PRSO? ,ME>
<PERFORM ,V?GET-UNDRESSED ,ROOMS>
<RTRUE>)
(<AND <FSET? ,PRSO ,ACTORBIT>
<NOT <FSET? ,PRSO ,FEMALEBIT>>>
<TELL ,MOTHER>
;<TELL
"You've got it backwards -- he's supposed to do that to you" ,PCR>)
(T <IMPOSSIBLES>)>)
(T
<SETG PRSO ,ROOMS>
<V-GET-UNDRESSED>)>>
<ROUTINE V-GIVE ()
<COND (<FSET? ,PRSI ,ACTORBIT>
<COND (<FSET? ,PRSI ,DEADBIT>
<TELL ,DOESNT-RESPOND>)
(T
<TELL "Briskly," T ,PRSI " refuses your offer." CR>)>)
(T
<TELL ,YOU-CANT "give" A ,PRSO " to" A ,PRSI "!" CR>)>>
;<ROUTINE V-GIVE-UP ()
<COND (<PRSO? ,ROOMS>
<V-QUIT>)
(T
<RECOGNIZE>)>>
<ROUTINE V-HELLO ()
<COND (,PRSO
<COND (<EQUAL? ,PRSO ,W?SAILOR>
<TELL "Nothing happens" ,PCR>)
(T
<TELL
"[The proper way to talk to characters in the story is PERSON, HELLO.]" CR>)>)
(<AND <EQUAL? ,HERE ,CABIN>
<IN? ,HERO ,HERE>>
<PERFORM ,V?HELLO ,HERO>
<RTRUE>)
(T
<PERFORM ,V?TELL ,ME>
<RTRUE>)>>
<ROUTINE V-HALT ()
<COND (<PRSO? ,ROOMS>
<TELL "You haven't started" ,PCR>)
(T
<PROPOSE>)>>
<ROUTINE V-HELP ()
<TELL
"If you're feeling pillaged, maps and hint booklets are available from your
dealer, or via mail order with the form">
<IN-PACKAGE>>
<ROUTINE V-HIDE ()
<TELL ,YOU-CANT "hide ">
<COND (,PRSO
<TELL "t">)>
<TELL "here." CR>>
<ROUTINE V-I-LOVE-YOU ()
<COND (<EQUAL? ,P-PRSA-WORD ,W?I>
<TELL "[Why... I'm speechless! Thank you.]" CR>)
(T
<RECOGNIZE>)>>
<ROUTINE V-IN ("AUX" VEHICLE)
<DO-WALK ,P?IN>>
;<ROUTINE V-INFLATE ()
<IMPOSSIBLES>>
;<ROUTINE V-INHALE ()
<COND (<NOT ,PRSO>
<COND (<EQUAL? ,P-PRSA-WORD ,W?GASP>
<PERFORM ,V?INHALE ,ROOMS>
<RTRUE>)
(T
<TELL ,OK>)>)
(<PRSO? ,ROOMS>
<TELL "You get light-headed." CR>)
(T
<RECOGNIZE>)>>
<ROUTINE V-KICK ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<COND (<FSET? ,PRSO ,DEADBIT>
<TELL ,DOESNT-RESPOND>)
(T
<TELL "\"Hey! Cut that out!\"" CR>)>)
(T
<HACK-HACK "Kicking">)>>
<ROUTINE V-KILL ()
<TELL "Relax." CR>>
<ROUTINE V-KISS ()
<TELL "\"Smooch!\"" CR>>
;<ROUTINE V-KISS-ON ()
<V-KISS>>
<ROUTINE V-CURTSEY ()
<TELL "You curtsey gracefully." CR>>
<ROUTINE V-KNOCK ()
<HACK-HACK "Knocking on">
;<COND (<AND <PRSO? ,LDOOR>
<NOT <FSET? ,LDOOR ,LOCKEDBIT>>
<IN? ,LAFOND ,LAFS-ROOM>>
<TELL "Lafond calls, \"Come.\"" CR>)
(<FSET? ,PRSO ,DOORBIT>
<TELL "Silence answers back." CR>)
(T
<HACK-HACK "Knocking on">)>>
;<ROUTINE V-LAND ()
<COND (<NOT ,PRSO>
<PERFORM-PRSA <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<TELL ,HUH>)>>
<ROUTINE V-LAUGH ()
<TELL "\"Ha-ha.\"" CR>>
<ROUTINE V-LAUNCH ()
<TELL "Your brain is out to launch." CR>>
<ROUTINE V-LEAP ()
<COND (<OR <NOT ,PRSO>
<PRSO? ,ROOMS>>
<COND (<AND <EQUAL? ,HERE ,DUNGEON>
<FSET? ,TRAP ,OPENBIT>>
<PERFORM ,V?ENTER ,TRAP>
<RTRUE>)
(<EQUAL? ,HERE ,RIGGING-ROOM ,CROWS-NEST ,BOWSPRIT>
<TELL ,SUICIDE>)
(T
<WHEE>)>)
(<NOT <IN? ,PRSO ,HERE>>
<IMPOSSIBLES>)
(T
<WHEE>)>>
<ROUTINE V-LEAP-OFF ()
<COND (<FSET? ,PRSO ,VEHBIT>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(<SHIP-BOARD ,HERE>
<TELL ,SUICIDE>)
(T
<PERFORM ,V?LEAP ,PRSO>
<RTRUE>)>>
<ROUTINE V-LEAP-OVERBOARD ()
<COND (<SHIP-BOARD ,HERE>
<TELL ,SUICIDE>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-LEAVE ()
<COND (<NOT ,PRSO>
<SETG PRSO ,ROOMS>)>
<COND (<PRSO? ,ROOMS>
<DO-WALK ,P?OUT>)
(<IN? ,PROTAGONIST ,PRSO>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(T
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)>>
<ROUTINE V-LIE-DOWN ()
;<COND (<AND <EQUAL? ,HERE ,BEDROOM>
<PRSO? ,ROOMS>>
<SETG PRSO ,BED>)>
<COND (<OR <FSET? ,PRSO ,VEHBIT>
<FSET? ,PRSO ,ACTORBIT>>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(T
<WASTES>)>>
;<ROUTINE V-LIMBER ()
<TELL "Ahhh. Nothing like a little muscle-loosening." CR>>
<ROUTINE V-LISTEN ()
<COND ;(<RUNNING? ,I-OVERHEAR-CRULLEY>
<TELL D ,CRULLEY " is muttering to himself" ,PCR>)
(<RUNNING? ,I-LUCY>
<PERFORM ,V?LISTEN ,LUCY>
<RTRUE>)
(<OR <IN? ,HERO ,HERE>
<IN? ,DAD ,HERE>
<IN? ,LAFOND ,HERE>
<IN? ,COOKIE ,HERE>>
<TELL "You listen intently" ,PCR>)
(<PRSO? ,PATROL>
<TELL CTHE ,PATROL " confers quietly." CR>)
(<RUNNING? ,I-PIRATE-RESCUE>
<TELL ,THE-BALLROOM "tumult of screams." CR>)
(<AND <EQUAL? ,HERE ,ORCHESTRA ,BALLROOM ,SUPPER-ROOM>
<NOT ,ENDGAME>>
<TELL "The orchestra plays a sprightly dance tune." CR>)
(,PRSO
<SENSE-OBJECT "sound">)
(T
<TELL "You hear nothing of interest." CR>)>>
<ROUTINE PRE-LOCK ()
<COND (<AND <EQUAL? ,HERE ,QUARTERDECK ,LANDING>
<EQUAL? ,P-PRSA-WORD ,W?UNBAR>>
<RFALSE>)
(<AND <PRSO? ,FLOWER>
<VERB? PICK>>
<PERFORM ,V?TAKE ,FLOWER>
<RTRUE>)
(<AND <PRSO? ,HERO>
<EQUAL? ,HERE ,DUNGEON>>
<COND (,PRSI
<PERFORM ,V?UNLOCK ,MANACLES ,PRSI>
<RTRUE>)
(T
<PROPOSE>)>)
(<OR <AND <NOT <FSET? ,PRSO ,LOCKEDBIT>>
<VERB? UNLOCK PICK>>
<AND <FSET? ,PRSO ,LOCKEDBIT>
<VERB? LOCK>>>
<COND (<PRSO? ,MANACLES>
<TELL ,ALREADY-ARE>)
(T
<TELL ,ALREADY-IS>)>)
(<NOT ,PRSI>
<COND (<AND <VERB? PICK>
<HELD? ,JEWEL>>
<TELL "[with" T ,JEWEL "]" CR>
<PERFORM-PRSA ,PRSO ,JEWEL>)
(<HELD? ,LARGE-KEY>
<TELL "[with" T ,LARGE-KEY "]" CR>
<PERFORM-PRSA ,PRSO ,LARGE-KEY>)
;(<HELD? ,BENT-KEY>
<TELL "[with" T ,BENT-KEY "]" CR>
<PERFORM-PRSA ,PRSO ,BENT-KEY>)
(T
<PROPOSE>
<RTRUE>)>)
(T
<RFALSE>)>>
;<ROUTINE V-LOCK ()
<WASTES>>
;<ROUTINE PRE-LOOK ()
<COND (<PLAYER-CANT-SEE>
<RTRUE>)>>
<ROUTINE V-LOOK ()
<COND (<DESCRIBE-ROOM T>
<DESCRIBE-OBJECTS>)>
<RTRUE>>
<ROUTINE V-LOOK-BEHIND ()
<COND (<FSET? ,PRSO ,DOORBIT>
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)>
<TELL "There is nothing behind" TR ,PRSO>>
<ROUTINE V-LOOK-DOWN ()
<COND (<PRSO? ,ROOMS>
<PERFORM ,V?EXAMINE ,GROUND>
<RTRUE>)
(T
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)>>
<ROUTINE V-LOOK-INSIDE ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL ,IT-SEEMS-THAT>
<COND (<FSET? ,PRSO ,FEMALEBIT>
<TELL " sh">)
(T
<TELL " h">)>
<TELL "e has">
<COND (<NOT <DESCRIBE-NOTHING>>
<TELL ,PCR>)>
<RTRUE>)
(<IN? ,PROTAGONIST ,PRSO>
<DESCRIBE-VEHICLE>)
(<FSET? ,PRSO ,SURFACEBIT>
<TELL ,YOU-SEE>
<COND (<NOT <DESCRIBE-NOTHING>>
<TELL " on" TR ,PRSO>)>
<RTRUE>)
(<FSET? ,PRSO ,DOORBIT>
<TELL "You can only tell that" T ,PRSO " is">
<TELL-OPEN/CLOSED ,PRSO>
<TELL ".|">)
(<FSET? ,PRSO ,CONTBIT>
<COND (<SEE-INSIDE? ,PRSO>
<TELL ,YOU-SEE>
<COND (<NOT <DESCRIBE-NOTHING>>
<TELL " in" TR ,PRSO>)>
<RTRUE>)
(<AND <NOT <FSET? ,PRSO ,OPENBIT>>
<FIRST? ,PRSO>>
<COND (<PRE-TOUCH>
<RTRUE>)>
<PERFORM ,V?OPEN ,PRSO>
<RTRUE>)
(T
<DO-FIRST "open" ,PRSO>)>)
(<EQUAL? <GET ,P-ITBL ,P-PREP1> ,PR?IN ;,PR?INSIDE>
<CANT-VERB-A-PRSO "look inside">)
(T
<TELL
"Even if Queen Augusta commanded it, you couldn't see through that" ,PCR>)>>
;<ROUTINE V-LOOK-OVER ()
<V-EXAMINE>>
<ROUTINE V-LOOK-UNDER ()
<COND (<HELD? ,PRSO>
<COND (<FSET? ,PRSO ,WORNBIT>
<TELL "You're wearing it!" CR>)
(T
<TELL ,HOLDING-IT>)>)
(<FSET? ,PRSO ,DOORBIT>
<TELL "The space is too narrow to see anything." CR>)
(T
<NOTHING-INTERESTING>
<TELL "under" TR ,PRSO>)>>
<ROUTINE V-LOOK-UP ()
<COND (<PRSO? ,ROOMS>
<COND (<EQUAL? ,HERE ,RIGGING-ROOM ,CROWS-NEST>
<TELL ,YOU-SEE " a mess of sails and rope." CR>)
(<FSET? ,HERE ,INDOORSBIT>
<PERFORM ,V?EXAMINE ,CEILING>
<RTRUE>)
(T
<TELL
"The midnight sky is clear of all but a full moon." CR>)>)
(T
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)>>
;<ROUTINE V-LOVE ()
<COND (<PRSO? ,LAFOND ,CRULLEY>
<TELL "Never!" CR>)
(T
<LADY-MUST "loving">
;<TELL
"A lady must obtain her father's permission before loving anyone." CR>
;<TELL "Not difficult, considering how lovable" T ,PRSO " ">
;<COND (<FSET? ,PRSO ,PLURALBIT>
<TELL "are">)
(T
<TELL "is">)>
;<TELL ,PCR>)>>
;<ROUTINE V-LOWER ()
<V-RAISE>>
;<ROUTINE V-MAKE ()
<CANT-VERB-A-PRSO "make">>
;<ROUTINE V-MAKE-LOVE ()
;<COND (<PRSO? ,LOVE>
<PERFORM ,V?MAKE-OUT ,PRSI>
<RTRUE>)
(T
<RECOGNIZE>)>>
<ROUTINE V-MAKE-OUT ("AUX" KISSEE)
<COND (<NOT <PRSO? ,ROOMS>>
<SET KISSEE ,PRSO>)
(<NOT <SET KISSEE <FIND-IN ,HERE ,ACTORBIT "with">>>
<SET KISSEE ,ME>)>
<PERFORM ,V?KISS .KISSEE>
<RTRUE>>
;<ROUTINE V-MAKE-WITH ()
<V-MAKE>>
<ROUTINE V-MARRY ()
<COND (<PRSO? ,LAFOND ,CRULLEY ,COOKIE>
<TELL "I doubt that" T ,PRSO " is the marrying type." CR>)
(<PRSO? ,DAD>
<TELL "Don't be absurd." CR>)
(<PRSO? ,HERO>
<LADY-MUST "marrying">
;<TELL
"A lady must obtain her father's permission before marrying anyone." CR>)
(T
<WASTES>)>>
;<ROUTINE V-MOAN ()
<TELL "\"Ohhhh...\"" CR>>
<ROUTINE V-MOVE ()
<COND (<HELD? ,PRSO>
<WASTES>)
(<LOC-CLOSED>
<RTRUE>)
(<FSET? ,PRSO ,TAKEBIT>
<TELL "Moving" T ,PRSO " reveals nothing." CR>)
(<EQUAL? ,P-PRSA-WORD ,W?PULL>
<HACK-HACK "Pulling">)
(T
<CANT-VERB-A-PRSO "move">)>>
<ROUTINE V-MUNG ()
<HACK-HACK "Trying to destroy">>
<ROUTINE V-MUZZLE ()
<HACK-HACK "Trying to muzzle">>
<CONSTANT SHAKE-HEAD "You shake your head">
;"3 - secret door.
4 - hero, leave me alone.
5 - I-MEET-HERO
6 - Dad and garter.
;7 - Kitchen, Lucy and ballgown.
8 - do you really want to fight the croc?
9 - Jump to interrupt Lafond.
10 - Cookie: do you know where hero is?
11 - Hero: will you go with Lafond?
12 - Lafond seduction, drink wine"
<ROUTINE V-NO ()
<COND (<EQUAL? ,AWAITING-REPLY 1 2>
<V-YES>)
(<EQUAL? ,AWAITING-REPLY 3>
<TELL
"One should hope not! Lafond is too
respectable to harbour such secrets" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 4>
<TELL
"\"Foolish of me to have thought you were serious,\"
he smiles, relieved" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 5>
<TELL "\"No!\" you say pertly" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 6>
<TELL
"Papa clucks. \"Pity. I'll introduce you to Lucy
after we're out of this mess.\"" CR>)
(<EQUAL? ,AWAITING-REPLY 9>
<TELL ,SHAKE-HEAD " firmly, \"No.\"" CR>)
(<EQUAL? ,AWAITING-REPLY 10>
<TELL ,SHAKE-HEAD ,PCR>)
(<EQUAL? ,AWAITING-REPLY 11>
<TELL "\"No,\" you say, chin trembling" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 12>
<TELL ,SHAKE-HEAD ", teeth clenched." CR>)
(<EQUAL? ,AWAITING-REPLY 13>
<TELL
"\"God's blood! We'll have to find some other way.\"" CR>)
(<EQUAL? ,AWAITING-REPLY 14>
<TELL
"\"Sorry, but I'm enjoying this dance too much to just let you go.\" Jamison
tightens his grip on " D ,HANDS " as you circle each other" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 15>
<TELL ,SHAKE-HEAD " breathlessly." CR>)
(<EQUAL? ,AWAITING-REPLY 16>
<TELL "\"'Tis a pity. I was hoping...\"" CR>)
(<EQUAL? ,AWAITING-REPLY 17>
<TELL "\"I'll do the hittin' 'ere.\"" CR>)
(T
<YOU-SOUND "nega">)>>
<ROUTINE NO-WORD (WRD)
<COND (<OR <EQUAL? .WRD ,W?NO ,W?NOPE>
<EQUAL? .WRD ,W?NAY ,W?NEVER>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE V-OFF ()
<COND (<FSET? ,PRSO ,LIGHTBIT>
<COND (<FSET? ,PRSO ,ONBIT>
<FCLEAR ,PRSO ,ONBIT>
<TELL "Okay," T ,PRSO " is now off." CR>
;<NOW-DARK?>)
(T
<TELL "It isn't on!" CR>)>)
(T
<CANT-VERB-A-PRSO "extinguish">
;<TELL ,YOU-CANT "extinguish that" ,PCR>)>>
<ROUTINE V-ON ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL ,HUH>)
(<FSET? ,PRSO ,LIGHTBIT>
<COND (<FSET? ,PRSO ,ONBIT>
<TELL ,ALREADY-IS>)
(T
<FSET ,PRSO ,ONBIT>
<TELL "Okay," T ,PRSO " is now on." CR>
;<NOW-LIT?>)>)
(T
<CANT-VERB-A-PRSO "light">
;<TELL ,YOU-CANT "light that" ,PCR>)>>
;<ROUTINE CANT-TURN (STRING)
<TELL ,YOU-CANT "turn that o" .STRING ,PCR>>
<ROUTINE V-OPEN ()
<COND (<FSET? ,PRSO ,LOCKEDBIT>
<TELL "It's quite locked." CR>
<RTRUE>)
(<AND <OR <FSET? ,PRSO ,DOORBIT>
<FSET? ,PRSO ,CONTBIT>>
<NOT <FSET? ,PRSO ,SURFACEBIT>>
<NOT <FSET? ,PRSO ,ACTORBIT>>>
<OPEN-CLOSE ,PRSO>)
(T
<CANT-VERB-A-PRSO "open">)>>
;<ROUTINE V-PAY ()
<COND (<HELD? ,ONE-MARSMID-COIN>
<PERFORM ,V?GIVE ,ONE-MARSMID-COIN ,PRSO>
<RTRUE>)
(<HELD? ,TEN-MARSMID-COIN>
<PERFORM ,V?GIVE ,TEN-MARSMID-COIN ,PRSO>
<RTRUE>)
(T
<TELL "You have no money!" CR>)>>
<ROUTINE V-PICK ()
<COND (<AND <FSET? ,PRSO ,DOORBIT>
<HELD? ,JEWEL>>
<TELL "That doesn't work here" ,PCR>)
(T
<CANT-VERB-A-PRSO "pick">)>>
<ROUTINE V-POINT ()
<TELL "That would be pointless." CR>>
<ROUTINE V-SPOINT ()
<PERFORM ,V?POINT ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE SPECIFY-WHAT (ACTION-STRING OBJ)
<TELL
,YOULL-HAVE-TO "specify what you want to "
.ACTION-STRING T .OBJ " in" ,PCR>>
<ROUTINE PRE-POUR ()
<COND (<AND <PRSO? ,WINE>
<NOT ,PRSI>
<NOT <EQUAL? ,P-PRSA-WORD ,W?SPILL>>>
<SPECIFY-WHAT "pour" ,PRSO>)
(<PRSO? ,BOTTLE ,LAUD>
<COND (<NOT <HELD? ,PRSO>>
<TELL ,YNH TR ,BOTTLE>)
(<EQUAL? ,LAUD-LEFT 0>
<TELL "There's no " D ,LAUD " left." CR>)
(<NOT ,PRSI>
<MOVE ,BOTTLE ,PROTAGONIST>
<TELL
"A bubble of " D ,LAUD " forms on the tip of"
T ,BOTTLE " then slurps back in." CR>)
;(<NOT ,PRSI>
<RFALSE>)
(<PRSI? ,WINE>
<TELL
,YOULL-HAVE-TO "specify which glass you want to put" T ,LAUD " into." CR>)
(<EQUAL? <GETP ,PRSI ,P?CONTENTS> ,POISONED ,W-P>
<TELL ,YOU-HAVE-ALREADY
" dosed" T ,PRSI ". Any more might be dangerous" ,PCR>)
(T
<RFALSE>)>)
;(<PRSI? ,MOUTH>
<RFALSE>)
;(<NOT ,PRSI>
<RFALSE>)>>
;<ROUTINE V-POUR ()
<IMPOSSIBLES>>
;<ROUTINE V-POUR-FROM ()
<PERFORM ,V?EMPTY-FROM ,PRSO ,PRSI>
<RTRUE>>
<ROUTINE V-PUSH ()
<HACK-HACK "Pushing">>
<ROUTINE V-PUSH-DIR ()
<COND (<PRSI? ,INTDIR>
<V-PUSH>)
(T
<RECOGNIZE>)>>
;<ROUTINE V-PUSH-OFF ()
<COND (<AND <PRSO? ,ROOMS ,DOCK-OBJECT ,RAFT ,BARGE>
<NOT <IN? ,PROTAGONIST ,HERE>>>
<PERFORM ,V?LAUNCH <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<TELL ,HUH>)>>
<ROUTINE PRE-PUT ()
<COND (<PRSI? ,GROUND>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<PRSO? ,WINE ,LAUD>
<PERFORM ,V?POUR ,PRSO ,PRSI>
<RTRUE>)
(<PRSO? ,HANDS>
<COND (<VERB? PUT>
<PERFORM ,V?REACH-IN ,PRSI>
<RTRUE>)
(T
<WASTES>)>)
(<AND <PRSI? ,SEA>
<EQUAL? ,HERE ,RIGGING-ROOM ,CROWS-NEST ,BOWSPRIT
,POOP ,QUARTERDECK ,MAIN-DECK ,FOCSLE>
<VERB? THROW DROP PUT-ON PUT>>
<RFALSE>)
(<AND <FSET? ,PRSI ,ACTORBIT>
<NOT <VERB? PUT-ON>>
;<NOT <PRSI? ,CROC>>>
<WASTES>)
;(<AND <NOT <FSET? ,PRSI ,BODYBIT>>
<PLAYER-CANT-SEE>>
<RTRUE>)
(<HELD? ,PRSI ,PRSO>
<TELL ,YOU-CANT "put" T ,PRSO>
<COND (<EQUAL? <GET ,P-ITBL ,P-PREP2> ,PR?ON>
<TELL " on">)
(T
<TELL " in">)>
<TELL T ,PRSI " when" T ,PRSI " is already ">
<COND (<FSET? ,PRSO ,SURFACEBIT>
<TELL "on">)
(T
<TELL "in">)>
<TELL T ,PRSO "!" CR>)
(<AND <NOT <HELD? ,PRSO>>
<NOT <PRSO? ,MANACLES>>>
<TELL ,YNH TR ,PRSO>)
(<UNTOUCHABLE? ,PRSI>
<CANT-REACH ,PRSI>)
(<IDROP>
<RTRUE>)>>
<ROUTINE V-PUT ()
<COND ;(<NOT <OR <FSET? ,PRSI ,OPENBIT>
<FSET? ,PRSI ,CONTBIT>
<FSET? ,PRSI ,SURFACEBIT>
<FSET? ,PRSI ,VEHBIT>>>
<TELL ,YOU-CANT "put" T ,PRSO " in" A ,PRSI "!" CR>)
(<AND <NOT <FSET? ,PRSI ,OPENBIT>>
<NOT <FSET? ,PRSI ,CONTBIT>>
<NOT <FSET? ,PRSI ,SURFACEBIT>>
<NOT <FSET? ,PRSI ,VEHBIT>>>
<TELL ,YOU-CANT "put" T ,PRSO " in" A ,PRSI "!" CR>)
(<OR <PRSI? ,PRSO>
<AND <HELD? ,PRSO>
<NOT <FSET? ,PRSO ,TAKEBIT>>>>
<WASTES>
;<PROPOSE>)
(<FSET? ,PRSI ,DOORBIT>
<TELL ,CANT-FROM-HERE>)
(<AND <NOT <FSET? ,PRSI ,OPENBIT>>
<NOT <FSET? ,PRSI ,SURFACEBIT>>>
<THIS-IS-IT ,PRSI>
<DO-FIRST "open" ,PRSI>)
(<IN? ,PRSO ,PRSI>
<TELL "But" T ,PRSO " is already in" TR ,PRSI>)
(<AND <G? <- <+ <WEIGHT ,PRSI> <WEIGHT ,PRSO>>
<GETP ,PRSI ,P?SIZE>>
<GETP ,PRSI ,P?CAPACITY>>
<NOT <HELD? ,PRSO ,PRSI>>>
<TELL "There's no room ">
<COND (<FSET? ,PRSI ,SURFACEBIT>
<TELL "on">)
(T
<TELL "in">)>
<TELL T ,PRSI " for" TR ,PRSO>)
(<AND <NOT <HELD? ,PRSO>>
<EQUAL? <ITAKE <>> ,M-FATAL <>>>
<RTRUE>)
(T
<MOVE ,PRSO ,PRSI>
<FSET ,PRSO ,TOUCHBIT>
<TELL "Done." CR>)>>
;<ROUTINE V-PUT-AGAINST ()
<WASTES>>
;<ROUTINE V-PUT-BEHIND ()
<WASTES>>
;<ROUTINE V-PUT-NEAR ()
<WASTES>>
<ROUTINE V-PUT-ON ()
<COND (<PRSI? ,ME>
<PERFORM ,V?WEAR ,PRSO>
<RTRUE>)
(<FSET? ,PRSI ,SURFACEBIT>
<V-PUT>)
(T
<TELL "There's no good surface on" TR ,PRSI>)>>
<ROUTINE V-PUT-THROUGH ()
<COND (<FSET? ,PRSI ,DOORBIT>
<COND (<FSET? ,PRSI ,OPENBIT>
<V-THROW>)
(T
<DO-FIRST "open" ,PRSI>)>)
(<AND <PRSI? <LOC ,PROTAGONIST>>
<EQUAL? ,P-PRSA-WORD ,W?THROW ,W?TOSS ,W?HURL>>
<SETG PRSI <>>
<V-THROW>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-PUT-TO ()
<RECOGNIZE>>
;<ROUTINE V-PUT-UNDER ()
<WASTES>>
<ROUTINE V-RAISE ()
<HACK-HACK "Playing in this way with">>
<ROUTINE V-RAPE ()
<TELL ,UNLADY>>
<ROUTINE V-REACH-IN ("AUX" OBJ)
<SET OBJ <FIRST? ,PRSO>>
<COND (<OR <FSET? ,PRSO ,ACTORBIT>
<FSET? ,PRSO ,SURFACEBIT>
<NOT <FSET? ,PRSO ,CONTBIT>>>
<WASTES>)
(<NOT <FSET? ,PRSO ,OPENBIT>>
<DO-FIRST "open" ,PRSO>)
(<OR <NOT .OBJ>
<FSET? .OBJ ,INVISIBLE>
<NOT <FSET? .OBJ ,TAKEBIT>>>
<TELL ,THERES-NOTHING "in" TR ,PRSO>)
(T
<TELL "You feel something inside" TR ,PRSO>)>>
<ROUTINE V-READ ()
;<COND (<FSET? ,PRSO ,READBIT>
<TELL <GETP ,PRSO ,P?TEXT> CR>)>
<CANT-VERB-A-PRSO "read">>
<ROUTINE V-REFLECT ()
<COND (<AND <PRSO? ,MOONBEAM>
<PRSI? ,MIRROR ,TRAY>
<EQUAL? ,HERE ,LAFS-ROOM>>
<PERFORM ,V?SPOINT ,SHIP ,PRSI>
<RTRUE>)
(T
<WASTES>)>>
<ROUTINE V-REMOVE ()
<COND (<AND <FSET? ,PRSO ,WEARBIT>
<IN? ,PRSO ,PROTAGONIST>>
<COND (<NOT <FSET? ,PRSO ,WORNBIT>>
<TELL ,YOU-ARENT "wearing that!" CR>)
(<NOT <LAF-DOFF-CHECK>>
<FCLEAR ,PRSO ,WORNBIT>
<TELL "You remove" TR ,PRSO>)>)
(T
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)>>
<ROUTINE LAF-DOFF-CHECK ()
<COND (<AND <EQUAL? ,HERE ,LAFS-ROOM>
<IN? ,LAFOND ,HERE>>
<COND (<G? ,LAFOND-CTR ,HORNY>
<TELL ,THERES-NOTHING "to remove!" CR>)
(T
<TELL D ,LAFOND " chuckles. \"No, ma cherie, ">
<COND (<L? ,LAFOND-CTR 3>
<TELL "have some wine first.\"" CR>)
(T
<TELL "I'll do that.\"" CR>
<SETG LAFOND-CTR ,HORNY>
<QUEUE I-LSED -1>)>)>
<RTRUE>)>>
<ROUTINE V-RETURN ("AUX" ACTOR)
<COND (<NOT ,PRSI>
<COND (<SET ACTOR <FIND-IN ,HERE ,ACTORBIT "to">>
<PERFORM ,V?GIVE ,PRSO .ACTOR>
<RTRUE>)
(T
<NO-ONE-HERE "return it to">)>)
(<FSET? ,PRSI ,ACTORBIT>
<PERFORM ,V?GIVE ,PRSO ,PRSI>
<RTRUE>)
(T
<PERFORM ,V?PUT ,PRSO ,PRSI>
<RTRUE>)>>
<ROUTINE V-RIP ()
<COND (<PRSO? ,INVITE ,LETTER>
<TELL "There's no reason to be so destructive" ,PCR>)
(T
<TELL "It doesn't tear." CR>)>>
<ROUTINE V-ROLL ()
<COND ;(<PRSO? ,HOOPS>
<TELL "Mere child's play" ,PCR>)
(<PRSO? ,EYES>
<TELL "You ARE exasperated." CR>)
(<UNTOUCHABLE? ,PRSO>
<CANT-REACH ,PRSO>)
(<EQUAL? ,P-PRSA-WORD ,W?TIP>
<COND (<PRSO? ,HEAD>
<V-YES>)
(T
<PRONOUN>
<TELL " can't take tips!" CR>)>)
(T
<TELL "A rolling " D ,PRSO " gathers no moss." CR>)>>
<ROUTINE V-ROW ()
<TELL "You haven't any oars!" CR>>
<ROUTINE V-ROW-DIR ()
<COND (<PRSI? ,INTDIR>
<V-ROW>)
(T
<RECOGNIZE>)>>
<ROUTINE V-ROW-TO ()
<COND (<OR <PRSO? ,ISLAND>
<AND <PRSO? ,SKIFF>
<PRSI? ,ISLAND>>>
<SETG P-DIRECTION ,P?WEST>
<PERFORM ,V?ROW-DIR ,SKIFF ,INTDIR>
<RTRUE>)
(<OR <PRSO? ,SHIP ,REEFS>
<AND <PRSO? ,SKIFF>
<PRSI? ,SHIP ,REEFS>>>
<SETG P-DIRECTION ,P?EAST>
<PERFORM ,V?ROW-DIR ,SKIFF ,INTDIR>
<RTRUE>)
;(<OR <PRSO? ,SKIFF>
<AND <PRSO? ,SKIFF>
<PRSI? ,SKIFF>>>
<TELL ,YOU-CANT "row" T ,SKIFF " to" TR ,SKIFF>)
(T
<COND (<EQUAL? <LOC ,PROTAGONIST> ,SKIFF>
<WASTES>)
(T
<DO-FIRST "get in" ,SKIFF>)>)>>
;<ROUTINE V-RUB ()
<PERFORM ,V?TOUCH ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SAVE-SOMETHING ()
<PROPOSE>
;<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "Sorry, but" T ,PRSO " will have to save ">
<HIM-HER>
<TELL "self" ,PCR>)
(T
<TELL "Sorry, but" T ,PRSO " is beyond help." CR>)>>
;<ROUTINE V-SAY ("AUX" V)
<COND (<AND ,AWAITING-REPLY
<YES-WORD <GET ,P-LEXV ,P-CONT>>>
<V-YES>
<STOP>)
(<AND ,AWAITING-REPLY
<NO-WORD <GET ,P-LEXV ,P-CONT>>>
<V-NO>
<STOP>)
(<SET V <FIND-IN ,HERE ,ACTORBIT>>
<V-USE-QUOTES>
<RTRUE>
;<TELL "You must address" T .V " directly." CR>
;<STOP>)
(T
<PERFORM ,V?TELL ,ME>
<STOP>)>>
<GLOBAL FINAL-RANK 0>
<ROUTINE V-SCORE ()
<TELL "In " N ,MOVES " turn">
<COND (<NOT <EQUAL? ,MOVES 1>>
<TELL "s">)>
<TELL ", you have achieved a score of " N ,SCORE " out of 25 points">
<COND (<L? ,SCORE 25>
<TELL ". This gives you the rank of ">
<COND (<L? ,SCORE 5>
<TELL "Damsel in Distress">)
(<L? ,SCORE 10>
<TELL "Missish Minx">)
(<L? ,SCORE 15>
<TELL "Plucky Lass">)
(<L? ,SCORE 20>
<TELL "Daring Demoiselle">)
(<L? ,SCORE 25>
<TELL "Lady Leman">)>)>
<TELL ,PCR>>
;"Broken Hearted - final-rank when Nick dies - 0. Is no more."
<GLOBAL WINNING-RANKS
<TABLE
0
"Orphan" ;"Dad dies"
"Love Transcending Death" ;"You die"
;"Femme Fatale" ;"You desert -- Lafond dead"
"Pirate Queen" ;"You desert"
"Happily Ever After" ;"Ideal ending">>
<ROUTINE V-SEARCH ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<V-SHAKE>)
(<IN? ,PROTAGONIST ,PRSO>
<DESCRIBE-VEHICLE>)
(<AND <FSET? ,PRSO ,CONTBIT>
<NOT <FSET? ,PRSO ,OPENBIT>>>
<DO-FIRST "open" ,PRSO>)
(<FSET? ,PRSO ,CONTBIT>
<TELL "You find">
<COND (<NOT <DESCRIBE-NOTHING>>
<TELL ,PCR>)>
<RTRUE>)
(T
<CANT-VERB-A-PRSO "search">)>>
<ROUTINE V-SET ()
<COND (<PRSO? ,ROOMS>
<WHEE>)
;(<AND <PRSO? ,INTDIR>
<EQUAL? <LOC ,PROTAGONIST> ,BARGE ,RAFT>>
<PERFORM-PRSA <LOC ,PROTAGONIST> ,INTNUM>
<RTRUE>)
(<NOT ,PRSI>
<COND (<FSET? ,PRSO ,TAKEBIT>
<HACK-HACK "Turning">)
(T
<TELL ,YNH TR ,PRSO>)>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-SGIVE ()
<PERFORM ,V?GIVE ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SHAKE ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL ,POLITE>)
(T
<HACK-HACK "Shaking">)>>
<ROUTINE V-SHAKE-WITH ()
<COND (<NOT <PRSO? ,HANDS>>
<RECOGNIZE>)
(<NOT <FSET? ,PRSI ,ACTORBIT>>
<TELL "I don't think" T ,PRSI " even has hands." CR>)
(T
<PERFORM ,V?THANK ,PRSI>
<RTRUE>)>>
<ROUTINE V-SHOOT ()
<COND (<NOT ,PRSI>
<COND (<HELD? ,PISTOL>
<PERFORM ,V?SHOOT ,PRSO ,PISTOL>
<RTRUE>)
;(<PRSO? ,PISTOL ,STONE ,GARTER>
<TELL
,YOULL-HAVE-TO "specify what you are aiming for." CR>)
;(<AND <HELD? ,GARTER>
<IN? ,STONE ,GARTER>>
<PERFORM ,V?SHOOT ,PRSO ,STONE>
<RTRUE>)
(T
<PROPOSE>)>)
(T
<TELL
"Don't ever bother applying for a job as a gunswoman." CR>)>>
<ROUTINE PRE-SSHOOT ()
<COND (<OR <PRSO? ,CANNON>
<HELD? ,PRSO>>
<RFALSE>)
(<NOT ,PRSI>
<COND (<NOT <HELD? ,PISTOL>>
<PROPOSE>)
(T
<PERFORM ,V?SHOOT ,PRSO>
<RTRUE>)>)
(T
<TELL ,YNH TR ,PRSO>)>>
<ROUTINE V-SSHOOT ()
<PERFORM ,V?SHOOT ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SHOW ()
<TELL ,DOESNT-LOOK T ,PRSI " is interested." CR>>
<ROUTINE V-SHUT-UP ()
<COND (<PRSO? ,ROOMS>
<TELL "[I hope you're not addressing me...]" CR>)
(T
<PERFORM ,V?CLOSE ,PRSO>
<RTRUE>)>>
<ROUTINE V-SIGH ()
<TELL "You sigh contentedly, smiling." CR>>
;<ROUTINE V-SINK ()
<IMPOSSIBLES>>
<ROUTINE V-SIT ("AUX" VEHICLE)
<COND (<SET VEHICLE <FIND-IN ,HERE ,VEHBIT>>
<PERFORM ,V?BOARD .VEHICLE>
<RTRUE>)
(T
<WASTES>)>>
;<ROUTINE V-SKIP ()
<WHEE>>
<ROUTINE V-SLEEP ()
<COND (<QUEUED? ,I-SLEEP>
<I-SLEEP>)
(T
<TELL "You're not tired." CR>)>>
<ROUTINE V-SMELL ()
<COND (,PRSO
<TELL "Smells like any other " D ,PRSO ,PCR>)
(<EQUAL? <LOC ,PROTAGONIST> ,CASK>
<TELL "You recoil from the taint of rancid meat" ,PCR>)
(<EQUAL? ,HERE ,FOCSLE ,GALLEY>
<TELL
"The odor of old grease and char does not improve your appetite." CR>)
(<EQUAL? ,HERE ,CABIN>
<TELL
"The odors of charred wood, sea salt and blood burn your nose" ,PCR>)
(<EQUAL? ,HERE ,CREWS-QUARTERS>
<TELL "Close quarters, indeed." CR>)
(T
<TELL "Nothing smells unusual" ,PCR>)>>
<ROUTINE V-SOAK ()
<COND (<NOT ,PRSI>
<SPECIFY-WHAT "soak" ,PRSO>
;<TELL "Please specify what to soak" T ,PRSO " in" ,PCR>)
(T
<IMPOSSIBLES>)>>
<ROUTINE SENSE-OBJECT (STRING)
<PRONOUN>
<TELL " " .STRING>
<COND (<AND <NOT <FSET? ,PRSO ,PLURALBIT>>
<NOT <PRSO? ,ME>>>
<TELL "s">)>
<TELL " just like" AR ,PRSO>>
<ROUTINE V-SPUT-ON ()
<PERFORM ,V?PUT-ON ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SSHOW ()
<PERFORM ,V?SHOW ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-STAND ()
<COND (<EQUAL? ,P-PRSA-WORD ,W?HOLD> ;"for HOLD UP OBJECT"
<WASTES>)
(<FSET? <LOC ,PROTAGONIST> ,VEHBIT>
<PERFORM ,V?DISEMBARK <LOC ,PROTAGONIST>>
<RTRUE>)
(<AND ,PRSO
<FSET? ,PRSO ,TAKEBIT>>
<WASTES>)
(<EQUAL? ,HERE ,IN-HEDGE ,BY-HOUSE ,SLEEPING-CUPBOARD>
<TELL
"There's not enough room for even your petite frame to stand straight." CR>)
(T
<TELL ,YOU-ARE-ALREADY "standing." CR>)>>
;<ROUTINE V-STAND-ON ()
<WASTES>>
<ROUTINE V-STELL ()
<PERFORM ,V?TELL ,PRSI>
<RTRUE>>
<ROUTINE V-STHROW ()
<PERFORM ,V?THROW-TO ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-FIX ()
<COND ;(<PRSO? ,BENT-KEY>
<REMOVE ,BENT-KEY>
<TELL "Using all your strength you unbend" T ,PRSO ". Suddenly
it snaps in two pieces. In your surprise you drop them, disappearing ">
<COND (<OR <EQUAL? ,HERE ,BEACH ,LAWN ,TRADE-ENTRANCE>
<EQUAL? ,HERE ,CLEARING ,IN-HEDGE ,BY-HOUSE>
<EQUAL? ,HERE ,MAIN-ENTRANCE ,FOREST ,FRONT-DRIVE>>
<TELL "into the grass">)
(<BELOW-GROUND ,HERE>
<TELL "into the darkness">)
(<EQUAL? ,HERE ,BY-SHIP ,LAGOON ,SHALLOWS>
<TELL "into the sea">)
(T
<TELL "between the floorboards">)>
<TELL ,PCR>)
(<PRSO? ,DAGGER>
<REPERTOIRE "Dagger sharpening">)
(T
<TELL "But" T ,PRSO " isn't ">
<COND (<EQUAL? ,P-PRSA-WORD ,W?SHARPEN ,W?WHET>
<TELL "dull">)
(T
<TELL "broken">)>
<TELL "!" CR>
<RTRUE>)>>
;<ROUTINE V-SWHIP ()
<PERFORM ,V?WHIP ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SWIM ()
<COND (<OR <PRSO? ,SEA>
<AND <NOT ,PRSO>
<GLOBAL-IN? ,SEA ,HERE>>>
<REPERTOIRE "Swimming">
;<TELL "You don't know how to swim." CR>)
(T
<TELL "Your head must be swimming." CR>)>>
<ROUTINE V-SWING ()
<COND (,PRSI
<PERFORM ,V?KILL ,PRSI ,PRSO>
<RTRUE>)
(<AND <PRSO? ,ROOMS>
<EQUAL? ,HERE ,GALLERY>>
<PERFORM ,V?SWING ,ROPE>
<RTRUE>)
(T
<WHEE>
;<TELL "\"Whoosh.\"" CR>)>>
<ROUTINE V-SWOON ()
<TELL "You've never been missish enough to faint on demand" ,PCR>>
<ROUTINE V-SWRAP ()
<PERFORM ,V?WRAP ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE PRE-TAKE ()
<COND ;(<AND <NOT <FSET? ,PRSO ,BODYBIT>>
<PLAYER-CANT-SEE>>
<RTRUE>)
(<LOC-CLOSED>
<RTRUE>)
(<IN? ,PROTAGONIST ,PRSO>
<TELL "You're ">
<COND (<FSET? ,PRSO ,INBIT>
<TELL "i">)
(T
<TELL "o">)>
<TELL "n it!" CR>)
(<AND <G? ,LAFOND-CTR ,HORNY>
<EQUAL? ,HERE ,LAFS-ROOM>
<IN? ,HERE ,LAFOND>>
<RFALSE>)
(<OR <IN? ,PRSO ,PROTAGONIST>
<AND <HELD? ,PRSO>
<NOT <FSET? ,PRSO ,TAKEBIT>>>>
<COND ;(<AND <PRSO? ,CANDLE>
<PRSI? ,SHUTTERS>>
<RFALSE>)
(<FSET? ,PRSO ,WORNBIT>
<TELL ,YOU-ARE-ALREADY "wearing">)
(T
<TELL ,YOU-HAVE-ALREADY>)>
<TELL TR ,PRSO>)
(<AND <PRSO? ,LAUD>
<NOT <PRSI? ,BOTTLE>>>
<WASTES>)
(<NOT ,PRSI>
<RFALSE>)
(<IN? ,PRSO ,PRSI>
<RFALSE>)
(<NOT <IN? ,PRSO ,PRSI>>
<NOT-IN>)
(<PRSO? ,ME>
<PERFORM ,V?DROP ,PRSI>
<RTRUE>)
(T
<SETG PRSI <>>
<RFALSE>)>>
<ROUTINE V-TAKE ()
<COND (<EQUAL? <ITAKE> T>
<TELL "Taken." CR>)>>
<ROUTINE V-TAKE-OFF ()
<COND ;(<PRSO? ,ROOMS>
<COND (<EQUAL? ,P-PRSA-WORD ,W?GET>
<COND (<FSET? <LOC ,PROTAGONIST> ,VEHBIT>
<TELL "[of" T <LOC ,PROTAGONIST> "]" CR>
<PERFORM ,V?DISEMBARK <LOC ,PROTAGONIST>>
<RTRUE>)>)
(T
<MORE-SPECIFIC>
<RTRUE>)>)
(<FSET? ,PRSO ,WORNBIT>
<PERFORM ,V?REMOVE ,PRSO>
<RTRUE>)
(<FSET? ,PRSO ,VEHBIT>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(T
<TELL ,YOU-ARENT "wearing" TR ,PRSO>)>>
<ROUTINE V-TAKE-WITH ()
<TELL "Sorry," T ,PRSI " is no help in getting" TR ,PRSO>>
;<ROUTINE V-TASTE ()
<SENSE-OBJECT "taste">>
<ROUTINE V-TELL ()
<COND (<AND <FSET? ,PRSO ,ACTORBIT>
<NOT <PRSO? ,CROC>>>
<COND (<FSET? ,PRSO ,DEADBIT>
<TELL ,DOESNT-RESPOND>
<STOP>)
(,P-CONT
<SETG WINNER ,PRSO>
<SETG CLOCK-WAIT T>
<RTRUE>)
(T
<TELL
"Hmmm ..." T ,PRSO " looks at you expectantly,
as if you seemed to be about to talk." CR>)>)
(T
<CANT-VERB-A-PRSO "talk to">
<STOP>)>>
<ROUTINE V-TELL-ABOUT ()
<COND (<PRSO? ,ME>
<PERFORM ,V?WHAT ,PRSI>
<RTRUE>)
(T
<PERFORM ,V?SHOW ,PRSI ,PRSO>
<RTRUE>)>>
<ROUTINE V-THANK ()
<COND (<NOT ,PRSO>
<TELL "[Just doing my job.]" CR>)
(<FSET? ,PRSO ,ACTORBIT>
<TELL "\"You're welcome.\"" CR>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-THROW-AT ()
<PERFORM ,V?MUNG ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-THROW ()
<COND (<NOT <SPECIAL-DROP>>
<COND (<EQUAL? ,HERE ,LAGOON ,BY-SHIP ,SHALLOWS>
<PERFORM ,V?PUT ,PRSO ,SEA>
<RTRUE>)
(,PRSI
<MOVE ,PRSO ,HERE>
<TELL "You missed." CR>)
(T
<MOVE ,PRSO ,HERE>
<TELL "Thrown." CR>)>)>>
<ROUTINE V-THROW-OVER ()
<MOVE ,PRSO ,HERE>
<TELL "You missed." CR>>
<ROUTINE V-THROW-OVERBOARD ()
<COND (<OR <EQUAL? ,HERE ,LAGOON ,SHALLOWS>
<SHIP-BOARD ,HERE>>
<PERFORM ,V?PUT ,PRSO ,SEA>
<RTRUE>)
(T
<TELL "One normally tries this on a boat." CR>)>>
<ROUTINE V-THROW-TO ()
<COND (<FSET? ,PRSI ,ACTORBIT>
<PERFORM ,V?GIVE ,PRSO ,PRSI>
<RTRUE>)
(T
<PERFORM ,V?THROW ,PRSO ,PRSI>
<RTRUE>)>>
<ROUTINE V-TIE-WITH ()
<PERFORM ,V?TIE ,PRSI ,PRSO>
<RTRUE>>
;<ROUTINE V-TIE ()
<WASTES>
;<TELL ,YOU-CANT "tie" A ,PRSO " to anything" ,PCR>
;<COND (<OR <FSET? ,PRSO ,ACTORBIT>
<FSET? ,PRSI ,ACTORBIT>>
<TELL "Kinky!" CR>
<RTRUE>)
(T
<TELL ,YOU-CANT "tie" A ,PRSO " to anything" ,PCR>)>>
;<ROUTINE V-TIE-TOGETHER ()
<IMPOSSIBLES>>
<ROUTINE PRE-TOUCH ()
<COND (<AND <VERB? RAISE LOWER>
,PRSI
<NOT <EQUAL? ,PRSI ,ROOMS>>>
<RECOGNIZE>)
(<AND <VERB? TOUCH>
<PRSO? ,COOKIE>
<PRSI? ,DAGGER>>
<TELL ,UNLADY>)
(<AND <VERB? OPEN CLOSE>
<PRSO? ,DIVAN ,COT ,CABIN-BED
,CAPT-BED ,LAFS-BED ,GUEST-BED>>
<CANT-VERB-A-PRSO "do that to">
;<TELL ,YOU-CANT "do that to" AR ,PRSO>)
(<AND <EQUAL? ,PRSO ,LINE>
<VERB? TOUCH>
<EQUAL? <LOC ,PROTAGONIST> ,CASK>>
<TELL "Your fingers just brush" TR ,LINE>)
(<UNTOUCHABLE? ,PRSO>
<CANT-REACH ,PRSO>)
(<VERB? EMPTY>
<COND (<PRSO? ,WATER-BARREL ,RUM-BARREL>
<RFALSE>)
(<OR <NOT <HELD? ,PRSO>>
<NOT <TAKE-CHECK>>>
<TELL ,YNH TR ,PRSO>
<RFATAL>)
(T
<RFALSE>)>)
(<AND <VERB? EMPTY-FROM>
<NOT <PRSI? ,WATER-BARREL ,RUM-BARREL>>
<OR <NOT <HELD? ,PRSO>>
<NOT <TAKE-CHECK>>>>
<TELL ,YNH TR ,PRSO>
<RFATAL>)>>
<ROUTINE V-TOUCH ()
<COND (<LOC-CLOSED>
<RTRUE>)
(T
<HACK-HACK "Caressing">)>>
<ROUTINE V-STOUCH ()
<PERFORM ,V?TOUCH ,PRSI ,PRSO>
<RTRUE>>
;<ROUTINE V-UNCOVER ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?UNDRESS ,OBJECT>
<RTRUE>)
(T
<COND (<FSET? ,PRSO ,PLURALBIT>
<TELL "They're">)
(<FSET? ,PRSO ,FEMALEBIT>
<TELL "She's">)
(<FSET? ,PRSO ,ACTORBIT>
<TELL "He's">)
(T
<TELL "It's">)>
<TELL " not covered!" CR>)>>
;<ROUTINE SENSE-AGAIN (BODY-PART)
<FCLEAR .BODY-PART ,MUNGBIT>
<TELL "You can once again sense with" TR .BODY-PART>>
<ROUTINE V-UNLOCK ()
<COND (,PRSI
<IMPOSSIBLES>)
(<FSET? ,PRSO ,LOCKEDBIT>
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Your nose is key-shaped, I suppose?" CR>)
(<FSET? ,PRSO ,DOORBIT>
<TELL "But" T ,PRSO " isn't locked." CR>)
(T
<WASTES>)>>
;<ROUTINE V-UNROLL ()
<IMPOSSIBLES>>
;<ROUTINE V-UNTIE ()
<IMPOSSIBLES>>
;<ROUTINE V-USE ()
<MORE-SPECIFIC>
;<TELL
,YOULL-HAVE-TO "be more specific about how you want to use" TR ,PRSO>>
;<ROUTINE V-USE-QUOTES ()
<SEE-MANUAL "say something \"out loud.\"">
<RFATAL>>
<ROUTINE V-WALK ("AUX" AV VEHICLE PT PTS STR OBJ RM)
<SET AV <LOC ,PROTAGONIST>>
<COND (<NOT ,P-WALK-DIR>
<PERFORM ,V?WALK-TO ,PRSO>
<RTRUE>)
(<AND <PRSO? ,P?OUT>
<IN-EXITABLE-VEHICLE?>>
<RTRUE>)
;(<AND <PRSO? ,P?DOWN>
<EQUAL? .AV ,STOOL ,STALLION>>
<PERFORM ,V?DISEMBARK .AV>
<RTRUE>)
;(<AND <PRSO? ,P?IN>
<EQUAL? ,HERE ,ON-LADDER>>
<PERFORM ,V?BOARD ,LEDGE>
<RTRUE>)
(<AND <PRSO? ,P?IN>
<NOT <GETPT ,HERE ,P?IN>>
<SET VEHICLE <FIND-IN ,HERE ,VEHBIT>>
<NOT <HELD? .VEHICLE>>>
<PERFORM ,V?BOARD .VEHICLE>
<RTRUE>)
(<SET PT <GETPT ,HERE ,PRSO>>
<COND (<EQUAL? <SET PTS <PTSIZE .PT>> ,UEXIT>
<GOTO <GETB .PT ,REXIT>>)
(<EQUAL? .PTS ,NEXIT>
<TELL <GET .PT ,NEXITSTR> CR>
<RFATAL>)
(<EQUAL? .PTS ,FEXIT>
<COND (<SET RM <APPLY <GET .PT ,FEXITFCN>>>
;"catacombs fake-move" <COND (<EQUAL? .RM ,ROOMS>
<RTRUE>)>
<GOTO .RM>)
(T
<RFATAL>)>)
(<EQUAL? .PTS ,CEXIT>
<COND (<VALUE <GETB .PT ,CEXITFLAG>>
<GOTO <GETB .PT ,REXIT>>)
(<SET STR <GET .PT ,CEXITSTR>>
<TELL .STR CR>
<RFATAL>)
(T
<TELL ,CANT-GO>
<RFATAL>)>)
(<EQUAL? .PTS ,DEXIT>
<COND (<FSET? <SET OBJ <GETB .PT ,DEXITOBJ>> ,OPENBIT>
<GOTO <GETB .PT ,REXIT>>)
(<SET STR <GET .PT ,DEXITSTR>>
<THIS-IS-IT .OBJ>
<TELL .STR CR>
<RFATAL>)
(T
<THIS-IS-IT .OBJ>
<DO-FIRST "open" .OBJ>
<RFATAL>)>)>)
(T
<COND (<PRSO? ,P?OUT ,P?IN>
<V-WALK-AROUND>)
(T
<TELL ,CANT-GO>)>
<RFATAL>)>>
<ROUTINE V-WAVE ("OPTIONAL" (AT-OBJ <>))
<TELL "You wave">
<COND (<NOT .AT-OBJ>
<PRSO-PRINT>
<TELL " in the air" ,PCR>)
(T
<TELL " cheerfully at" TR ,PRSO>)>>
<ROUTINE V-WAVE-AT ()
<V-WAVE T>
<RTRUE>>
<ROUTINE V-WRING ()
<COND (<NOT ,PRSI>
<COND (<OR <AND <PRSO? ,DRESS>
,WET-DRESS>
<AND <PRSO? ,RAG>
,WET-RAG>>
<TELL "You don't have time to dry it." CR>)
(<EQUAL? ,P-PRSA-WORD ,W?DRY>
<TELL "That isn't wet!" CR>)
(T
<WASTES>)>)
(<PRSI? ,DRESS ,RAG>
<PERFORM ,V?WRING ,PRSI>
<RTRUE>)
(T
<WASTES>)>>
;<ROUTINE NOT-GOING-ANYWHERE ("AUX" AV)
<SET AV <LOC ,PROTAGONIST>>
<TELL "You're not going anywhere until you get ">
<COND (<OFF-VEHICLE? .AV>
<TELL "off">)
(T
<TELL "out of">)>
<TELL TR .AV>
<RFATAL>>
<ROUTINE V-WALK-AROUND ()
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Did you have any particular " D ,INTDIR " in mind?" CR>>
<ROUTINE V-WALK-TO ()
<COND (<EQUAL? ,PRSO ,INTDIR>
<DO-WALK ,P-DIRECTION>)
(T
<V-WALK-AROUND>)>>
;<ROUTINE V-WALK-TO ()
<COND (<OR <IN? ,PRSO ,HERE>
<GLOBAL-IN? ,PRSO ,HERE>>
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "He's">)
(T
<TELL "It's">)>
<TELL " here!" CR>)
(T
<V-WALK-AROUND>)>>
<ROUTINE V-WAIT ("OPTIONAL" (NUM 3))
<TELL "Time passes..." CR>
<REPEAT ()
<COND (<L? <SET NUM <- .NUM 1>> 0>
<RETURN>)
(<CLOCKER>
<RETURN>)>>
<SETG CLOCK-WAIT T>>
<ROUTINE PRE-DOFF ()
<COND (<AND <NOUN-USED ,W?DECK ,GROUND>
<OR <EQUAL? ,HERE ,DEUX-DECK>
<SHIP-BOARD ,HERE>>>
<V-WALK-AROUND>
<RTRUE>) ;"GET OFF DECK"
(<AND ,PRSO
<VERB? UNDRESS>>
<RFALSE>)
(<CHECK-STRIP>
<RTRUE>)
(<OR <EQUAL? ,HERE ,LAFS-ROOM>
<AND <EQUAL? ,HERE ,ANTEROOM>
<NOT <IN? ,DAD ,HERE>>>>
<RFALSE>)
(<OR <FIND-IN ,HERE ,ACTORBIT "in front of">
<EQUAL? ,HERE ,ORCHESTRA ,SUPPER-ROOM ,BALLROOM>>
<TELL ,POLITE-SOCIETY>
<RTRUE>)
(<AND <EQUAL? ,HERE ,ANTEROOM>
<NOT <EQUAL? ,HERE <LOC ,DAD> <LOC ,COOKIE>>>>
<RFALSE>)
(<OR <NOT ,PRSO>
<PRSO? ,RETICULE>>
<RFALSE>)
(<NOT <OR <FSET? ,PRSO ,WORNBIT>
<FSET? ,PRSO ,WEARBIT>>>
<RFALSE>)
;(<PRSO? ,ME>
<V-GET-UNDRESSED>
<RTRUE>)
(<NOT <FSET? ,PRSO ,WORNBIT>>
<TELL "You're not wearing" T ,PRSO "!" CR>
<RTRUE>)>>
<ROUTINE PRE-WEAR ()
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
<CANT-VERB-A-PRSO "wear">
;<TELL ,YOU-CANT "wear" AR ,PRSO>)
(<FSET? ,PRSO ,WORNBIT>
<TELL ,YOU-ARE-ALREADY "wearing" T ,PRSO "!" CR>)
(<CHECK-STRIP>
<RTRUE>)
(<AND ;<PRSO? ,CHEMISE>
<RUNNING? ,I-LSED>
<EQUAL? <LOC ,LAFOND> ,HERE ;<LOC ,PROTAGONIST>>>
<TELL D ,LAFOND " prevents you." CR>)
(<AND <NOT ,ENDGAME>
<EQUAL? ,HERE ,FOYER ,BALLROOM ,SUPPER-ROOM ,ORCHESTRA>>
<TELL "People might notice." CR>)>>
<ROUTINE CHECK-STRIP ()
<COND (<EQUAL? ,HERE ,CABIN>
<TELL
"With pirates attacking?! " ,MOTHER>)
(<EQUAL? ,HERE ,ON-LADDER ,RIGGING-ROOM>
<TELL
,YOU-CANT "manage the fastenings while whipping to and fro ">
<COND (<EQUAL? ,HERE ,ON-LADDER>
<TELL "on" AR ,LADDER>)
(T
<TELL "in" TR ,RIGGING-OBJECT>)>)
(<EQUAL? ,HERE ,IN-HEDGE ,BY-HOUSE>
<TELL
,YOU-CANT "even stand straight, much less change clothes!" CR>)>>
;<ROUTINE CHECK-STRIP ()
<COND (<EQUAL? ,HERE ,CABIN>
<TELL
"With pirates attacking?! " ,MOTHER>)
(<EQUAL? ,HERE ,ON-LADDER>
<TELL
,YOU-CANT "undo the fastenings while whipping to and fro on" A ,LADDER ,PCR>)
(<EQUAL? ,HERE ,RIGGING-ROOM>
<TELL "That'd be a neat trick" ,PCR>)
(<EQUAL? ,HERE ,IN-HEDGE ,BY-HOUSE>
<TELL
,YOU-CANT "even stand up straight, much less get undressed!" CR>)
(<AND <EQUAL? ,HERE ,LAFS-ROOM>
<IN? ,LAFOND ,HERE>>
<RFALSE>)
(<OR <FIND-IN ,HERE ,ACTORBIT "in front of">
<EQUAL? ,HERE ,ORCHESTRA ;,SUPPER-ROOM>>
<TELL ,POLITE-SOCIETY>)
(T
<RFALSE>)>>
<ROUTINE V-WEAR ()
<MOVE ,PRSO ,PROTAGONIST>
;<COND (<PRSO? ,FLOWER>
<TELL
"You tuck" T ,FLOWER "behind your ear, but it slips out" ,PCR>)>
<FSET ,PRSO ,WORNBIT>
<TELL "You're now wearing" TR ,PRSO>>
;<ROUTINE V-WEAR ()
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
<CANT-VERB-A-PRSO "wear">)
(T
<TELL "You're ">
<COND (<FSET? ,PRSO ,WORNBIT>
<TELL "already">)
(T
<MOVE ,PRSO ,PROTAGONIST>
<FSET ,PRSO ,WORNBIT>
<TELL "now">)>
<TELL " wearing" TR ,PRSO>)>>
<ROUTINE V-WHAT ()
<TELL "Good question." CR>>
<ROUTINE V-WHERE ()
<V-FIND T>>
;<ROUTINE V-WHIP ()
<TELL "It isn't ladylike to whip" AR ,PRSO>>
;<ROUTINE V-WRAP ()
<WASTES>>
<GLOBAL HELP-SCREAM "\"Help me!\" you cry, hoping someone will help you.">
<ROUTINE V-YELL ()
<COND ;(<EQUAL? ,HERE ,BALLROOM ,FOYER ,ORCHESTRA ,SUPPER-ROOM>
<TELL
"You give a loud yelp above the music. Some nearby dancers stop, look
at you nervously, and return to dancing." CR>)
(<EQUAL? ,HERE ,GALLERY ,DEUX-DECK>
<TELL
"Although your voice is quite piercing, no one notices you." CR>)
(<EQUAL? ,HERE ,CABIN>
;<AND <EQUAL? ,HERE ,DUNGEON>
<FSET? ,MANACLES ,MUNGBIT>>
<TELL ,HELP-SCREAM>
<CRLF>)
(T
<TELL "Papa always says, \"Action, not reaction, girl!\"" CR>
;<SORE "throat">)>
<STOP>>
<ROUTINE I-REPLY ()
<SETG AWAITING-REPLY <>>
<RFALSE>>
<GLOBAL AWAITING-REPLY <>>
;"3 - secret door.
4 - hero, leave me alone.
5 - Jump to interrupt hero.
6 - Dad and garter.
;7 - Kitchen, Lucy and ballgown.
8 - do you really want to fight the croc?
9 - Jump to interrupt Lafond.
10 - Cookie: do you know where hero is?
11 - Hero: will you go with Lafond?"
<ROUTINE V-YES ()
<COND (<EQUAL? ,AWAITING-REPLY 1>
<TELL "That wasn't a yes or no question" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 2>
<TELL "That was just a rhetorical question." CR>)
(<EQUAL? ,AWAITING-REPLY 3>
<TELL "Whither goes a will, goes a way." CR>)
(<EQUAL? ,AWAITING-REPLY 4>
<REMOVE ,HERO>
<STOP-QUEUES>
<TELL
"Silently he drops your arm and retreats. You are alone." CR>)
(<EQUAL? ,AWAITING-REPLY 5>
<TELL "You nod tentatively." CR>)
(<EQUAL? ,AWAITING-REPLY 6>
<TELL
"\"Quite a girl, isn't she? You two will be great friends,\" he says" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 9>
<TELL
"You have no breath to speak. You nod once,
never taking " D ,EYES " off Nicholas Jamison" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 10>
<TELL "You nod eagerly." CR>)
(<EQUAL? ,AWAITING-REPLY 11>
<TELL
"You summon a gracious smile, \"Why yes, I'd love to.\""CR>)
(<EQUAL? ,AWAITING-REPLY 12>
<TELL "You nod" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 13>
<TELL "Nicholas pulls forward a fettered wrist" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 14>
<TELL "Jamison grins at you" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 15>
<TELL "Breathless, eager, you lean into him" ,PCR>)
(<EQUAL? ,AWAITING-REPLY 16>
<TELL
"Your father twinkles, \"Good! He's of good family, you know.\"" CR>)
(<EQUAL? ,AWAITING-REPLY 17>
<TELL "\"Har, just you try!\"" CR>)
(T
<YOU-SOUND "posi">)>>
<ROUTINE YOU-SOUND (STRING)
<TELL "You sound rather " .STRING "tive." CR>>
<ROUTINE YES-WORD (WRD)
<COND (<OR <EQUAL? .WRD ,W?YES ,W?Y ,W?YUP>
<EQUAL? .WRD ,W?OK ,W?OKAY ,W?SURE>>
<RTRUE>)
(T
<RFALSE>)>>
;"subtitle object manipulation"
<ROUTINE ITAKE ("OPTIONAL" (VB T) "AUX" ;CNT OBJ)
<COND (<NOT <FSET? ,PRSO ,TAKEBIT>>
<COND (.VB
<WASTES>)>
<RFATAL>)
(<PRE-TOUCH>
<RFATAL>)
(<AND <NOT <HELD? ,PRSO>>
<G? <+ <WEIGHT ,PRSO> <WEIGHT ,PROTAGONIST>> 110>>
<COND (.VB
<TELL
"It's too heavy, considering your current load." CR>)>
<RFATAL>)
(<G? <CCOUNT ,PROTAGONIST> 12>
<COND (.VB
<TELL ,YOU-ARE-ALREADY
"juggling as many items as you can possibly carry." CR>)>
<RFATAL>)>
<FSET ,PRSO ,TOUCHBIT>
<FCLEAR ,PRSO ,NDESCBIT>
<COND (<IN? ,PROTAGONIST ,PRSO>
<RFALSE> ;"Hope this is right -- pdl 4/22/86")
;(<AND <PRSO? ,RAFT>
,RAFT-HELD>
<SETG RAFT-HELD <>>)>
<MOVE ,PRSO ,PROTAGONIST>>
;"IDROP is called by PRE-GIVE and PRE-PUT.
IDROP acts directly as PRE-DROP, PRE-THROW and PRE-PUT-THROUGH."
<ROUTINE IDROP ()
<COND (<PRSO? ,HANDS>
<COND (<VERB? DROP THROW GIVE>
<IMPOSSIBLES>)
(T
<RFALSE>)>)
(<PRSO? ,RETICULE>
<COND (<VERB? DROP THROW GIVE>
<TELL "A lady is never without her reticule." CR>)
(T
<RFALSE>)>)
(<AND <PRSO? ,ME>
<VERB? PUT>
<FSET? ,PRSI ,ACTORBIT>>
<PERFORM ,V?BOARD ,PRSI>
<RTRUE>)
(<AND <PRSI? ,ME>
<VERB? PUT>
<FSET? ,PRSO ,ACTORBIT>>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<AND <OR <PRSO? ,SPICES>
<PRSO? ,PINCH>>
<HELD? ,PINCH>>
<RFALSE>)
(<NOT <HELD? ,PRSO>>
<COND (<OR <PRSO? ,ME>
<FSET? ,PRSO ,BODYBIT>>
<IMPOSSIBLES>)
;(<AND <EQUAL? ,HERE ,ON-LADDER>
<EQUAL? ,PRSO ,LADDER>>
<RFALSE>)
(T
<TELL ,YNH TR ,PRSO>)>
<RFATAL>)
(<AND <NOT <IN? ,PRSO ,PROTAGONIST>>
<FSET? <LOC ,PRSO> ,CONTBIT>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
<DO-FIRST "open" <LOC ,PRSO>>)
(<FSET? ,PRSO ,WORNBIT>
<DO-FIRST "remove" ,PRSO>) ; "RETICULE is not WORNBIT"
(T
<RFALSE>)>>
<ROUTINE CCOUNT (OBJ "AUX" (CNT 0) X)
<COND (<SET X <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT <FSET? .X ,WORNBIT>>
<SET CNT <+ .CNT 1>>)>
<COND (<NOT <SET X <NEXT? .X>>>
<RETURN>)>>)>
.CNT>
;"Gets SIZE of supplied object, recursing to nth level."
<ROUTINE WEIGHT (OBJ "AUX" CONT (WT 0))
<COND (<SET CONT <FIRST? .OBJ>>
<REPEAT ()
<SET WT <+ .WT <WEIGHT .CONT>>>
<COND (<NOT <SET CONT <NEXT? .CONT>>>
<RETURN>)>>)>
<+ .WT <GETP .OBJ ,P?SIZE>>>
;"subtitle describers"
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (VERB-IS-LOOK <>)
"AUX" (FIRST-VISIT <>) (NUM 0))
<COND (<NOT ,LIT>
<TELL ,TOO-DARK>
<CRLF>
<RFALSE> ;"so DESCRIBE-CONTENTS of room isn't called")>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<FSET ,HERE ,TOUCHBIT>
<SET FIRST-VISIT T>)>
<TELL D ,HERE>
;<SET NUM <CANAL-LOC>>
<COND (<FSET? <LOC ,PROTAGONIST> ,VEHBIT>
<TELL ", ">
<COND (<FSET? <LOC ,PROTAGONIST> ,INBIT>
<TELL "i">)
(T
<TELL "o">)>
<TELL "n" T <LOC ,PROTAGONIST>>)>
<CRLF>
<COND (<OR .VERB-IS-LOOK
<EQUAL? ,VERBOSITY 2>
<AND .FIRST-VISIT
<EQUAL? ,VERBOSITY 1>>>
<TELL ,INDENT>
<COND (<NOT <APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>>
<TELL <GETP ,HERE ,P?LDESC>>)>
<CRLF>)>
<RTRUE>>
;"Print FDESCs, then DESCFCNs and LDESCs, then everything else. DESCFCNs
must handle M-DESC? by RTRUEing (but not printing) if the DESCFCN would
like to handle printing the object's description. RFALSE otherwise. DESCFCNs
are responsible for doing the beginning-of-paragraph indentation."
<ROUTINE DESCRIBE-OBJECTS ("AUX" O STR (1ST? T) (AV <LOC ,WINNER>))
<SET O <FIRST? ,HERE>>
<COND (<NOT .O>
<RFALSE>)>
<REPEAT () ;"FDESCS and MISC."
<COND (<NOT .O>
<RETURN>)
(<AND <DESCRIBABLE? .O>
<NOT <FSET? .O ,TOUCHBIT>>
<SET STR <GETP .O ,P?FDESC>>>
<TELL ,INDENT .STR>
<COND (<FSET? .O ,CONTBIT>
<DESCRIBE-CONTENTS .O T <+ ,D-ALL? ,D-PARA?>>)>
<CRLF>)>
<SET O <NEXT? .O>>>
<SET O <FIRST? ,HERE>>
<SET 1ST? T>
<REPEAT () ;"DESCFCNS"
<COND (<NOT .O>
<RETURN>)
(<OR <NOT <DESCRIBABLE? .O>>
<AND <GETP .O ,P?FDESC>
<NOT <FSET? .O ,TOUCHBIT>>>>
T)
(<AND <SET STR <GETP .O ,P?DESCFCN>>
<SET STR <APPLY .STR ,M-OBJDESC>>>
<COND (<AND <FSET? .O ,CONTBIT>
<N==? .STR ,M-FATAL>>
<DESCRIBE-CONTENTS .O T <+ ,D-ALL? ,D-PARA?>>)>
<CRLF>)
(<SET STR <GETP .O ,P?LDESC>>
;<TELL " " .STR>
<TELL ,INDENT .STR>
<COND (<FSET? .O ,CONTBIT>
<DESCRIBE-CONTENTS .O T <+ ,D-ALL? ,D-PARA?>>)>
<CRLF>)>
<SET O <NEXT? .O>>>
<DESCRIBE-CONTENTS ,HERE <> 0>
<COND (<AND .AV <NOT <EQUAL? ,HERE .AV>>>
<DESCRIBE-CONTENTS .AV <> 0>)>>
<CONSTANT D-ALL? 1> ;"print everything?"
<CONSTANT D-PARA? 2> ;"started paragraph?"
"<DESCRIBE-CONTENTS ,OBJECT-WHOSE-CONTENTS-YOU-WANT-DESCRIBED
level: -1 means only top level
0 means top-level (include crlf)
1 for all other levels
or string to print
all?: t if not being called from room-desc >"
<ROUTINE DESCRIBE-CONTENTS (OBJ "OPTIONAL" (LEVEL -1) (ALL? ,D-ALL?)
"AUX" (F <>) N (1ST? T) (IT? <>) (TWO? <>) (START? <>) (PARA? <>) DB)
<COND (<EQUAL? .LEVEL 2>
<SET LEVEL T>
<SET PARA? T>
<SET START? T>)
(<BTST .ALL? ,D-PARA?>
<SET PARA? T>)>
<SET N <FIRST? .OBJ>>
<COND (<OR .START?
<IN? .OBJ ,ROOMS>
<FSET? .OBJ ,ACTORBIT>
<AND .N
<FSET? .OBJ ,CONTBIT>
<OR <FSET? .OBJ ,OPENBIT>
<FSET? .OBJ ,TRANSBIT>>
<OR <EQUAL? .LEVEL -1>
<FSET? .OBJ ,SEARCHBIT>>>>
<REPEAT ()
<COND (<OR <NOT .N>
<AND <DESCRIBABLE? .N>
<OR <BTST .ALL? ,D-ALL?>
<SIMPLE-DESC? .N>>>>
<COND (.F
<COND (.1ST?
<SET 1ST? <>>
<COND (<EQUAL? .LEVEL <> T>
<COND (<NOT .START?>
<COND (<NOT .PARA?>
<COND (<NOT <EQUAL? .OBJ
,PROTAGONIST>>
<TELL ,INDENT>
;<TELL " ">)>
<SET PARA? T>)
(<EQUAL? .LEVEL T>
<TELL " ">)>
<DESCRIBE-START .OBJ ;.N>)>)
(<NOT <EQUAL? .LEVEL -1>>
<TELL .LEVEL>)>)
(.N
<TELL ",">)
(T
<TELL " and">)>
<TELL A .F>
<COND (<FSET? .F ,ONBIT>
<TELL " (providing light)">)
(<EQUAL? .F ,RETICULE>
<TELL " (hanging from your wrist)">)
;(<AND <EQUAL? .F ,HAT>
<NOT <FSET? ,HAT ,WORNBIT>>
<EQUAL? ,HERE ,FOYER ,BALLROOM>>
<TELL " (hidden" ,FOLDS ")">)>
<COND (<AND <NOT .IT?> <NOT .TWO?>>
<SET IT? .F>)
(T
<SET TWO? T>
<SET IT? <>>)>)>
<SET F .N>)>
<COND (.N
<SET N <NEXT? .N>>)>
<COND (<AND <NOT .F>
<NOT .N>>
<COND (<AND .IT?
<NOT .TWO?>>
<THIS-IS-IT .IT?>)>
<COND (<AND .1ST? .START?>
<TELL " nothing">
<RFALSE>)
(<AND <NOT .1ST?>
<EQUAL? .LEVEL <> T>>
<COND (<EQUAL? .OBJ ,HERE>
<TELL " here">)>
<TELL ".">)>
<RETURN>)>>
<COND (<EQUAL? .LEVEL <> T>
<SET F <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .F>
<RETURN>)
(<AND <FSET? .F ,CONTBIT>
<DESCRIBABLE? .F T>
<OR <BTST .ALL? ,D-ALL?>
<SIMPLE-DESC? .F>>>
<SET DB ,D-BIT>
<SETG D-BIT <>>
<COND (<DESCRIBE-CONTENTS .F T
<COND (.PARA?
<+ ,D-ALL? ,D-PARA?>)
(T
,D-ALL?)>>
<SET 1ST? <>>
<SET PARA? T>)>
<SETG D-BIT .DB>)>
<SET F <NEXT? .F>>>)>
<COND (<AND <NOT .1ST?>
<EQUAL? .LEVEL <> T>
<EQUAL? .OBJ ,HERE <LOC ,WINNER>>>
<CRLF>)>
<NOT .1ST?>)>>
<ROUTINE DESCRIBE-START (OBJ)
<COND (<EQUAL? .OBJ ,HERE>
<TELL ,YOU-SEE>)
(<EQUAL? .OBJ ,PROTAGONIST>
<COND (<EQUAL? ,D-BIT ,WORNBIT>
<TELL " You are wearing">)
(T
<TELL "You have">)>)
(<FSET? .OBJ ,SURFACEBIT>
<TELL "Sitting on" T .OBJ " is">)
(<AND <FSET? .OBJ ,ACTORBIT>
<NOT <EQUAL? .OBJ ,CROC>>>
<COND (<EQUAL? .OBJ ,LUCY>
<TELL "Sh">)
(T
<TELL "H">)>
<TELL "e has">)
(<EQUAL? .OBJ ,FENCE ,BOTTLE ,HORN>
<RTRUE>)
(T
<TELL ,IT-SEEMS-THAT T .OBJ " contains">)>>
<GLOBAL D-BIT <>> ;"bit to screen objects"
<ROUTINE DESCRIBABLE? (OBJ "OPT" (CONT? <>))
<COND (<FSET? .OBJ ,INVISIBLE> <RFALSE>)
(<EQUAL? .OBJ ,WINNER> <RFALSE>)
(<AND <EQUAL? .OBJ <LOC ,WINNER>>
<NOT <EQUAL? ,HERE <LOC ,WINNER>>>>
<RFALSE>)
(<AND <NOT .CONT?> <FSET? .OBJ ,NDESCBIT>>
<RFALSE>)
(,D-BIT
<COND (<G? ,D-BIT 0>
<COND (<FSET? .OBJ ,D-BIT> <RTRUE>)
(ELSE <RFALSE>)>)
(<NOT <FSET? .OBJ <- ,D-BIT>>>
<RTRUE>)
(ELSE <RFALSE>)>)
(ELSE
<RTRUE>)>>
;<ROUTINE DESCRIBABLE? (OBJ "OPT" (CONT? <>))
<COND (<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
(<EQUAL? .OBJ ,WINNER>
<RFALSE>)
(<AND <EQUAL? .OBJ <LOC ,WINNER>>
<NOT <EQUAL? ,HERE <LOC ,WINNER>>>>
<RFALSE>)
(<AND <NOT .CONT?>
<FSET? .OBJ ,NDESCBIT>>
<RFALSE>)
;(<AND <EQUAL? .OBJ ,RAFT ,BARGE>
<EQUAL? ,HERE ,CANAL>
<NOT <HELD? .OBJ>>
<NOT <IN? .OBJ ,BARGE>>
<NOT <EQUAL? ,RAFT-LOC-NUM ,BARGE-LOC-NUM>>>
<RFALSE>)
(T
<RTRUE>)>>
<ROUTINE SIMPLE-DESC? (OBJ "AUX" STR)
<COND (<AND <GETP .OBJ ,P?FDESC>
<NOT <FSET? .OBJ ,TOUCHBIT>>>
<RFALSE>)
(<AND <SET STR <GETP .OBJ ,P?DESCFCN>>
<APPLY .STR ,M-DESC?>>
<RFALSE>)
(<GETP .OBJ ,P?LDESC>
<RFALSE>)
(T
<RTRUE>)>>
<ROUTINE DESCRIBE-VEHICLE () ;"for LOOK AT/IN vehicle when you're in it"
<TELL "Other than " D ,ME ", you can see">
<COND (<NOT <DESCRIBE-NOTHING>>
<COND (<FSET? ,PRSO ,INBIT>
<TELL " in">)
(T
<TELL " on">)>
<TELL TR ,PRSO>)>
<RTRUE>>
<ROUTINE DESCRIBE-NOTHING ()
<COND (<DESCRIBE-CONTENTS ,PRSO 2>
<COND (<NOT <IN? ,PROTAGONIST ,PRSO>>
<CRLF>)>
<RTRUE>)
(T ;"nothing"
<RFALSE>)>>
;"subtitle movement and death"
<CONSTANT REXIT 0>
<CONSTANT UEXIT 1>
<CONSTANT NEXIT 2>
<CONSTANT FEXIT 3>
<CONSTANT CEXIT 4>
<CONSTANT DEXIT 5>
<CONSTANT NEXITSTR 0>
<CONSTANT FEXITFCN 0>
<CONSTANT CEXITFLAG 1>
<CONSTANT CEXITSTR 1>
<CONSTANT DEXITOBJ 1>
<CONSTANT DEXITSTR 1>
;<ROUTINE ;GOTO (NEW-LOC "AUX" OLD-HERE)
<SET OLD-HERE ,HERE>
<MOVE ,PROTAGONIST .NEW-LOC>
<COND (<IN? .NEW-LOC ,ROOMS>
<SETG HERE .NEW-LOC>)
(T
<SETG HERE <LOC .NEW-LOC>>)>
<SETG LIT <LIT? ,HERE>>
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
<COND (<AND <DESCRIBE-ROOM>
<NOT <EQUAL? ,VERBOSITY 0>>>
<DESCRIBE-OBJECTS>)>
<RTRUE>>
<ROUTINE GOTO (NEW-LOC "OPTIONAL" (DONT-DESCRIBE-DAD <>) "AUX" OLD-HERE)
<SET OLD-HERE ,HERE>
<MOVE ,PROTAGONIST .NEW-LOC>
<COND (<IN? .NEW-LOC ,ROOMS>
<SETG HERE .NEW-LOC>)
(T
<SETG HERE <LOC .NEW-LOC>>)>
<SETG LIT <LIT? ,HERE>>
<COND (<AND <EQUAL? .OLD-HERE ,LIBRARY>
<HELD? ,HAT>
<EQUAL? ,HERE ,BY-HOUSE ,HALL-E>>
<SAFETY-SAKE>
<CRLF>)>
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
;<COND (<RUNNING? ,I-DUEL>
<SEE/HEAR-DUEL>)>
<COND (<AND <EQUAL? ,HERE ,PASSAGE-4>
<IN? ,DAD ,HERE>>
<TELL
"\"What a brave tot! You've inherited all your mother's spirit.\"
Your father beams with pride" ,PCR CR>)
(<AND <EQUAL? ,HERE ,BOTTOM-STAIRS>
<IN? ,COOKIE ,ANTEROOM>>
<SETG COOKIE-FIGHTING-CROC <>>
<FCLEAR ,CROC ,NDESCBIT>
<TELL
"\"I ain't goin' to fight this beast if you're headin' back upstairs.\""
T ,COOKIE>
<COND (<IN? ,RAPIER ,PROTAGONIST>
<MOVE ,RAPIER ,COOKIE>
<TELL
" eyes" T ,RAPIER " in" T ,HANDS ". \"Not a proper thing fer a lady,\"
he grumbles, taking it from you. He">)>
<TELL " follows you" ,PCR CR>)
;(<AND <EQUAL? ,HERE ,FOYER>
<NOT <EQUAL? .OLD-HERE ,BALLROOM>>
<NOT <FSET? ,BUTLER ,DEADBIT>>>
<COND (<HELD? ,HAT>
<WEARING-HAT>
<CRLF>
<CRLF>)>)
(<EQUAL? ,HERE ,LAGOON> ;"so as not to describe room again"
<RTRUE>)>
<COND (<AND <DESCRIBE-ROOM>
<NOT <EQUAL? ,VERBOSITY 0>>>
<DESCRIBE-OBJECTS>)>
<COND (<AND <IN? ,DAD .OLD-HERE>
<IN? ,PROTAGONIST ,HERE> ;"don't, if you're in a vehicle"
<NOT .DONT-DESCRIBE-DAD>
<NOT ,ENDGAME>>
<DAD-FOLLOWS-YOU>)>
<COND (<AND <IN? ,HERO .OLD-HERE>
<IN? ,PROTAGONIST ,HERE>
<NOT ,ENDGAME>>
<COND (<AND <EQUAL? ,HERE ,BALLROOM>
<EQUAL? ,PARTNER ,HERO>>
<MOVE ,HERO ,HERE>
<TELL
D ,HERO " smiles and follows you, pulling you onto" ,DANCE-FLOOR ,PCR>)
(<EQUAL? .OLD-HERE ,BALLROOM>
<MOVE ,HERO ,HERE>
<RTRUE>)
(T
<STOP-QUEUES>
<REMOVE ,HERO>
<TELL ,INDENT "\"No, wait -- !\" Jamison cries. He ">
<COND (<EQUAL? ,HERE ,LAWN>
<TELL "slips past you into the forest">)
(T
<TELL "hesitates and turns away">)>
<TELL ,PCR>)>)>
<COND (<AND ,ENDGAME
<IN? ,COOKIE .OLD-HERE>
<IN? ,PROTAGONIST ,HERE>
<NOT ,COOKIE-FIGHTING-CROC>
<NOT <RUNNING? ,I-ENDGAME>>>
<COND (<AND <RUNNING? ,I-DUEL>
<EQUAL? .OLD-HERE ,GALLERY ,STAIRTOP>>
<RTRUE>)
(<EQUAL? ,HERE ,BEACH> ;"prevents going back to ship"
<RTRUE>)>
<MOVE ,COOKIE ,HERE>
<TELL ,INDENT D ,COOKIE " pegs after you" ,PCR>)>
<RTRUE>>
<ROUTINE SAFETY-SAKE ()
<MOVE ,HAT ,LIBRARY>
<FCLEAR ,HAT ,WORNBIT>
<FSET ,HAT ,EVERYBIT>
<FCLEAR ,KNOB ,EVERYBIT>
<FSET ,KNOB ,DEADBIT>
<TELL
"For safety's sake, you leave" T ,HAT " on its knob.
Best not to show that you've been wandering" ,PCR>>
; "Sets globals to the appropriate T/<>: as soon as you pass through a room
where a global's value might change, this checks and changes it."
;<ROUTINE SEE/HEAR-DUEL ()
<COND (<EQUAL? ,HERE ,LIBRARY ,VERANDA ,HALL-W>
<SETG CAN-HEAR-DUEL T>)
(<EQUAL? ,HERE ,GALLERY>
<SETG CAN-HEAR-DUEL <>>
<SETG CAN-SEE-DUEL T>)
;(<EQUAL? ,HERE ,STAIRTOP ,GALLERY>
<SETG CAN-HEAR-DUEL <>>
<SETG CAN-SEE-DUEL T>)
(<EQUAL? ,HERE ,STAIRWELL ,MAIN-ENTRANCE ,KITCHEN ,LAWN>
<SETG CAN-HEAR-DUEL <>>)
(<EQUAL? ,HERE ,UPPER-HALL-E ,FOYER ,UPPER-HALL-W>
<SETG CAN-SEE-DUEL <>>
<SETG CAN-HEAR-DUEL T>)>
<RFALSE>>
<ROUTINE DAD-FOLLOWS-YOU ()
<COND (<EQUAL? ,HERE ,CELL-4>
<TELL
"Your father chuckles in the darkness of the passageway, \"No dear,
I'm not going in there again!\"" CR>)
(T
<MOVE ,DAD <LOC ,PROTAGONIST>>
<TELL ,INDENT "Papa " <PICK-ONE ,FOLLOWS> CR>)>>
<GLOBAL FOLLOWS
<LTABLE
0
"mutters something to himself. You hear an occasional \"Zounds!\""
"follows you."
"enters just a few steps behind you."
;" gives you a brief hug, \"It's good to see thee, daughter.\"">>
<GLOBAL YOU-DIED "|| *** You have died ***||">
<ROUTINE JIGS-UP (DESC)
<TELL ;,INDENT .DESC>
<TELL ,YOU-DIED>
<FINISH>>
<ROUTINE H-JIGS-UP (DESC "OPTIONAL" (DAD-DEAD <>))
<TELL .DESC>
<TELL ,YOU-DIED ,INDENT>
<COND (.DAD-DEAD
<TELL
"Troubled by Papa's death, caused by your own unthinking pride,
your life loses meaning. You die by your own hand, in grief and shame.">)
(T
<TELL
"Rather, your flesh is intact, but your spirit has flown with the death
of your heart's love. The years pass, unnoticed, twisting you into an old
and ugly spinster, that dies alone, loved by no one.">)>
<CRLF>
<FINISH>>
<ROUTINE FWTD (DESC)
<TELL ;,INDENT .DESC>
<TELL CR CR
" *** You have suffered|
a fate worse than death ***" CR>
<FINISH>>
;"subtitle useful utility routines"
<ROUTINE ACCESSIBLE? (OBJ "AUX" L) ;"revised 2/18/86 by SEM"
<COND (<NOT .OBJ>
<RFALSE>)>
<SET L <LOC .OBJ>>
<COND (<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
(<EQUAL? .OBJ ,PSEUDO-OBJECT>
<COND (<EQUAL? ,LAST-PSEUDO-LOC ,HERE>
<RTRUE>)
(T
<RFALSE>)>)
(<NOT .L>
<RFALSE>)
(<EQUAL? .L ,GLOBAL-OBJECTS>
<RTRUE>)
(<AND <EQUAL? .L ,LOCAL-GLOBALS>
<GLOBAL-IN? .OBJ ,HERE>>
<RTRUE>)
(<NOT <EQUAL? <META-LOC .OBJ> ,HERE>>
<RFALSE>)
(<EQUAL? .L ,WINNER ,HERE>
<RTRUE>)
(<AND <FSET? .L ,OPENBIT>
<ACCESSIBLE? .L>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE VISIBLE? (OBJ "AUX" L) ;"revised 5/2/84 by SEM and SWG"
<COND (<NOT .OBJ>
<RFALSE>)>
<SET L <LOC .OBJ>>
<COND (<ACCESSIBLE? .OBJ>
<RTRUE>)
(<AND <SEE-INSIDE? .L>
<VISIBLE? .L>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE UNTOUCHABLE? (OBJ)
;"figures out whether, due to vehicle-related locations, object is touchable"
<COND (<NOT .OBJ>
<RFALSE>)
;"next clause is special case for PH"
(<EQUAL? .OBJ ,SEA>
<COND (<EQUAL? ,HERE ,LAGOON ,SHALLOWS ,MAIN-DECK ,BEACH>
<RFALSE>)
(T
<RTRUE>)>)
(<AND <EQUAL? .OBJ ,LADDER>
<EQUAL? <LOC ,PROTAGONIST> ,LEDGE>>
<RFALSE>)
(<IN? ,PROTAGONIST ,HERE>
<RFALSE>)
(<OR <HELD? .OBJ <LOC ,PROTAGONIST>>
<EQUAL? .OBJ <LOC ,PROTAGONIST>>
<IN? .OBJ ,GLOBAL-OBJECTS> ;"me, hands, etc.">
<RFALSE>)
;(<PRSO? ,PATROL>
<CANT-REACH ,PRSO>) ;"covered below"
(T
<RTRUE>)>>
<ROUTINE META-LOC (OBJ)
<REPEAT ()
<COND (<NOT .OBJ>
<RFALSE>)
(<IN? .OBJ ,GLOBAL-OBJECTS>
<RETURN ,GLOBAL-OBJECTS>)>
<COND (<IN? .OBJ ,ROOMS>
<RETURN .OBJ>)
(T
<SET OBJ <LOC .OBJ>>)>>>
<ROUTINE OTHER-SIDE (DOBJ "AUX" (P 0) TEE) ;"finds room on other side of door"
<REPEAT ()
<COND (<L? <SET P <NEXTP ,HERE .P>> ,LOW-DIRECTION>
<RETURN <>>)
(T
<SET TEE <GETPT ,HERE .P>>
<COND (<AND <EQUAL? <PTSIZE .TEE> ,DEXIT>
<EQUAL? <GETB .TEE ,DEXITOBJ> .DOBJ>>
<RETURN .P>)>)>>>
<ROUTINE HELD? (OBJ "OPTIONAL" (CONT <>)) ;"formerly ULTIMATELY-IN?"
<COND (<NOT .CONT>
<SET CONT ,WINNER>)>
<COND (<NOT .OBJ>
<RFALSE>)
(<IN? .OBJ .CONT>
<RTRUE>)
(<IN? .OBJ ,ROOMS>
<RFALSE>)
;(<IN? .OBJ ,GLOBAL-OBJECTS>
<RFALSE>)
(T
<HELD? <LOC .OBJ> .CONT>)>>
<ROUTINE SEE-INSIDE? (OBJ)
<AND .OBJ
<NOT <FSET? .OBJ ,INVISIBLE>>
<OR <FSET? .OBJ ,TRANSBIT>
<FSET? .OBJ ,OPENBIT>>>>
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" TEE)
<COND (<SET TEE <GETPT .OBJ2 ,P?GLOBAL>>
<ZMEMQB .OBJ1 .TEE <- <PTSIZE .TEE> 1>>)>>
<ROUTINE FIND-IN (WHERE FLAG-IN-QUESTION
"OPTIONAL" (STRING <>) "AUX" OBJ RECURSIVE-OBJ)
<SET OBJ <FIRST? .WHERE>>
<COND (<NOT .OBJ>
<RFALSE>)>
<REPEAT ()
<COND (<AND <FSET? .OBJ .FLAG-IN-QUESTION>
<NOT <FSET? .OBJ ,INVISIBLE>>>
<COND (.STRING
<TELL "[" .STRING T .OBJ "]" CR>)>
<RETURN .OBJ>)
(<SET RECURSIVE-OBJ <FIND-IN .OBJ .FLAG-IN-QUESTION>>
<RETURN .RECURSIVE-OBJ>)
(<NOT <SET OBJ <NEXT? .OBJ>>>
<RETURN <>>)>>>
;<ROUTINE DIRECTION? (OBJ)
<COND (<OR <EQUAL? .OBJ ,P?NORTH ,P?SOUTH ,P?EAST>
<EQUAL? .OBJ ,P?WEST ,P?NE ,P?NW>
<EQUAL? .OBJ ,P?SE ,P?SW>>
<RTRUE>)
(T
<RFALSE>)>>
;<ROUTINE NOW-DARK? ()
<COND (<AND ,LIT
<NOT <LIT? ,HERE>>>
<SETG LIT <>>
<TELL ,INDENT "It is now too dark to see." CR>)>>
;<ROUTINE NOW-LIT? ()
<COND (<AND <NOT ,LIT>
<LIT? ,HERE>>
<SETG LIT T>
<CRLF>
<V-LOOK>)>>
<ROUTINE LOC-CLOSED ("AUX" (L <LOC ,PRSO>))
<COND (<AND <FSET? .L ,CONTBIT>
<NOT <FSET? .L ,OPENBIT>>
<FSET? ,PRSO ,TAKEBIT>>
<DO-FIRST "open" .L>)
(T
<RFALSE>)>>
<ROUTINE DO-WALK (DIR)
<SETG P-WALK-DIR .DIR>
<PERFORM ,V?WALK .DIR>>
<ROUTINE STOP ()
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RFATAL>>
<ROUTINE ANYTHING-HELD ("AUX" (SOMETHING-HELD <>) N X)
<SET X <FIRST? ,PROTAGONIST>>
<REPEAT ()
<COND (<ZERO? .X>
<RETURN>)>
<COND (<NOT <OR <FSET? .X ,WORNBIT>
<EQUAL? .X ,RETICULE>>>
<SET SOMETHING-HELD T>)>
<SET N <NEXT? .X>>
<SET X .N>>
<RETURN .SOMETHING-HELD>>
<ROUTINE ROB (WHO "OPTIONAL" (WHERE <>) "AUX" N X)
<SET X <FIRST? .WHO>>
<REPEAT ()
<COND (<ZERO? .X>
<RETURN>)>
<SET N <NEXT? .X>>
<COND (<NOT <OR <FSET? .X ,WORNBIT>
<EQUAL? .X ,PINCH>>>
<COND (.WHERE
<MOVE .X .WHERE>)
(T
<REMOVE .X>)>)>
<SET X .N>>
<MOVE ,RETICULE ,PROTAGONIST>>
<ROUTINE HACK-HACK (STR)
<TELL .STR T ,PRSO>
<HO-HUM>>
<ROUTINE HO-HUM ()
<TELL <PICK-ONE ,HO-HUM-LIST> CR>>
<GLOBAL HO-HUM-LIST
<LTABLE
0
" doesn't do anything."
" accomplishes nothing."
" has no desirable effect.">>
;<ROUTINE YUKS ()
<TELL <PICK-ONE ,YUK-LIST> CR>>
;<GLOBAL YUK-LIST
<LTABLE
0
"What an odd thing to attempt to do."
"Nice try."
"Not a good idea.">>
<ROUTINE IMPOSSIBLES ()
<TELL <PICK-ONE ,IMPOSSIBLE-LIST> CR>>
<GLOBAL IMPOSSIBLE-LIST
<LTABLE
0
"Think again, guv'nor."
"This is no time to get hysterical."
"It's Bedlam for you!"
"Don't be absurd."
"You have lost your mind.">>
<ROUTINE WASTES ()
<TELL <PICK-ONE ,WASTE-LIST> CR>>
<GLOBAL WASTE-LIST
<LTABLE
0
"What an odd thing to attempt."
"That is a waste of time."
"Don't dally around."
"It's not worth it. Believe me."
"That seems a useless idea."
"Don't bother.">>
;<ROUTINE V-$CAPT ()
<DEQUEUE I-COFFER>
<DEQUEUE I-MEET-HERO>
<DEQUEUE I-CRULLEY>
<FCLEAR ,COFFER ,NDESCBIT>
<TELL "Cheat to captain's " D ,OBJ-QUARTERS "." CR>
<I-END-PROLOGUE>>
;<ROUTINE V-$SHIP ()
<TELL "Nah" ,PCR>>
;<ROUTINE V-$SHIP ()
<DEQUEUE I-COFFER>
<DEQUEUE I-MEET-HERO>
<DEQUEUE I-CRULLEY>
;<MOVE ,LADDER ,CAPT-QUARTERS>
<SETG LADDER-HANGING T>
<REMOVE ,COFFER>
<FSET ,LEDGE ,MUNGBIT>
<FSET ,POOP ,TOUCHBIT>
<FCLEAR ,DRESS ,WORNBIT>
;<FCLEAR ,HOOPS ,WORNBIT>
<FSET ,SHIRT ,WORNBIT>
<FSET ,PANTS ,WORNBIT>
<FCLEAR ,SHIRT ,NDESCBIT>
<FCLEAR ,PANTS ,NDESCBIT>
<FSET ,SHIRT ,TOUCHBIT>
<FSET ,PANTS ,TOUCHBIT>
<MOVE ,SHIRT ,PROTAGONIST>
<MOVE ,PANTS ,PROTAGONIST>
<SETG BOY-DRESS? T>
<REMOVE ,PILE-OF-CLOTHES>
<I-END-PROLOGUE>
<TELL CR "Wheeeeeee!" CR>
<GOTO ,MAIN-DECK>
<DEQUEUE I-HSHIP>
<QUEUE I-SMELL-SMOKE 2>
<REMOVE ,HERO>>
;<ROUTINE V-$BEACH ()
<CLEAR-SCREEN>
;<DEQUEUE I-JIGS-UP-SNAFU>
<DEQUEUE I-MEET-HERO>
<DEQUEUE I-PIRATE-ATTACK>
<DEQUEUE I-CRULLEY>
<DEQUEUE I-COFFER>
<MOVE ,SHIRT ,PROTAGONIST>
<MOVE ,PANTS ,PROTAGONIST>
;<FCLEAR ,HOOPS ,WORNBIT>
<FCLEAR ,DRESS ,WORNBIT>
<FSET ,SHIRT ,WORNBIT>
<FSET ,PANTS ,WORNBIT>
<FSET ,POOP ,TOUCHBIT>
<SETG BOY-DRESS? T>
<MOVE ,CASK ,SHALLOWS>
<GOTO ,BEACH>
<REMOVE ,HERO>>
;<ROUTINE V-$DUNGEON ()
<TELL "Nah" ,PCR>>
;<ROUTINE V-$DUNGEON ()
<PERFORM ,V?$BEACH>
<TELL CR ,INDENT "\"Ooh, nice beach. Me? I go in for dungeons.\"" CR>
<MOVE ,PROTAGONIST ,STAIRWELL>
;<MOVE ,CANDLE ,PROTAGONIST>
<FSET ,PORTRAIT ,MUNGBIT>
<FSET ,PORTRAIT ,OPENBIT>
;<FSET ,IRON-CELL-DOOR ,OPENBIT>>
;<ROUTINE V-$BUTLER ()
<CLEAR-SCREEN>
<DEQUEUE I-COFFER>
<DEQUEUE I-CRULLEY>
<DEQUEUE I-MEET-HERO>
<DEQUEUE I-HSHIP>
<DEQUEUE I-PIRATE-ATTACK>
;<DEQUEUE I-JIGS-UP-SNAFU>
<MOVE ,INVITE ,PROTAGONIST>
<MOVE ,SHIRT ,PROTAGONIST>
<MOVE ,PANTS ,PROTAGONIST>
;<REMOVE ,HOOPS>
<FCLEAR ,DRESS ,WORNBIT>
<REMOVE ,HERO>
<MOVE ,GOWN ,PROTAGONIST>
<FSET ,GOWN ,WORNBIT>
<FCLEAR ,GOWN ,NDESCBIT>
<TELL "Yippee! A ball!" CR>
<GOTO ,MAIN-ENTRANCE>>
;<ROUTINE V-$MUZZLED ()
<SETG MUZZLED T>
<MOVE ,GARTER ,CROC>
<FCLEAR ,GARTER ,INVISIBLE>
<TELL "It's safe now, the baby's muzzled." CR>>
;<ROUTINE V-$GARTER ()
<MOVE ,GARTER ,PROTAGONIST>
<FCLEAR ,GARTER ,INVISIBLE>
<TELL "You got it, baby" ,PCR>>
;<ROUTINE V-$SEDUCTION ()
;<TELL "[This should be done only after giving the butler your
invitation, by the way. You can V-$BUTLER to shortcut.]" CR>
<FSET ,BALLROOM ,TOUCHBIT>
<MOVE ,PROTAGONIST ,FOYER>
<MOVE ,MIRROR ,PROTAGONIST>
<MOVE ,BOTTLE ,PROTAGONIST>
<QUEUE I-SUMMONS 1>>
;<ROUTINE V-$END () ;"Puts you in the gallery, ready to swing."
<CLEAR-SCREEN>
<DEQUEUE I-COFFER>
<DEQUEUE I-CRULLEY>
<DEQUEUE I-MEET-HERO>
<DEQUEUE I-HSHIP>
<DEQUEUE I-PIRATE-ATTACK>
;<DEQUEUE I-JIGS-UP-SNAFU>
<MOVE ,PROTAGONIST ,GALLERY>
<MOVE ,HORN ,PROTAGONIST>
<FCLEAR ,ROPE ,EVERYBIT>
<SETG ENDGAME T>
<FSET ,COOKIE ,MUNGBIT>
<QUEUE I-DUEL -1>
<FSET ,RAPIER ,NDESCBIT>
<MOVE ,DAD ,GALLERY>
<MOVE ,LUCY ,GALLERY>
<MOVE ,COOKIE ,GALLERY>
<MOVE ,HERO ,GALLERY>
<MOVE ,RAPIER ,HERO>
<MOVE ,LAFOND ,GALLERY>
<FCLEAR ,BALLROOM ,EVERYBIT>
<MOVE ,BUTLER ,UPPER-HALL-E>
<MOVE ,SKIFF ,SHALLOWS>
<FSET ,BUTLER ,DEADBIT>
;<FSET ,BUTLER ,MUNGBIT>
<MOVE ,INVITE ,BUTLER>
<FSET ,LAWN ,TOUCHBIT>
<FSET ,BEACH ,TOUCHBIT>
<MOVE ,GARTER ,DAD>
<FCLEAR ,GARTER ,INVISIBLE>
;<MOVE ,DAGGER ,PROTAGONIST>
<FSET ,DRESS ,MUNGBIT>
<FCLEAR ,DRESS ,WORNBIT>
<FSET ,GOWN ,WORNBIT>
<FSET ,BALLROOM ,TOUCHBIT>
<TELL "[You're ready to go, swinger!]" CR>>