nordandbert/verbs.zil

3907 lines
96 KiB
Plaintext

"VERBS for
NORD AND BERT
(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 "Brief descriptions." CR>>
<ROUTINE V-SUPER-BRIEF ()
<COND (,PRSO
<RECOGNIZE>)
(T
<SETG VERBOSITY 0>
<TELL "Super-brief descriptions." CR>)>>
<ROUTINE V-SAVE ("AUX" X)
<PUTB ,OOPS-INBUF 1 0>
<SETG P-CONT <>> ;"flush anything on input line after SAVE"
<SETG QUOTE-FLAG <>>
<SET X <SAVE>>
<COND (<ZERO? .X>
<TELL "Save, failed." CR>
<RFATAL>)
(<EQUAL? .X 1>
<TELL "Save, completed." CR>
<V-$REFRESH T> ;"screen had been clearing"
<PUT 0 8 <BAND <GET 0 8> -5>> ;"so screen won't clear"
<RFATAL>)>
<TELL "Okay, restored." CR>
<SETG OLD-HERE <>>
<SETG UPDATE-SCORE? T>
<V-$REFRESH T>
<PUT 0 8 <BAND <GET 0 8> -5>> ;"to prevent screen clearing on restore"
<CRLF>
<V-LOOK>
<RFATAL>>
<ROUTINE V-RESTORE ()
<COND (<RESTORE>
<TELL ,OK>)
(T
<TELL ,FAILED>)>>
<ROUTINE V-SCRIPT ()
;<COND (<WRONG-WINNER?>
<RFATAL>)>
<TELL "[Scripting on.]" CR>
<DIROUT ,D-PRINTER-ON>
<CORP-NOTICE "begins">
<RTRUE>>
<ROUTINE V-UNSCRIPT ()
;<COND (<WRONG-WINNER?>
<RFATAL>)>
<CORP-NOTICE "ends">
<DIROUT ,D-PRINTER-OFF>
<TELL "[Scripting off.]" CR>
<RTRUE>>
<ROUTINE CORP-NOTICE (STRING)
<DIROUT ,D-SCREEN-OFF>
<TELL
"Here " .STRING " a transcript of interaction with Nord and Bert Couldn't
Make Head or Tail of It" ,PERIOD>
<DIROUT ,D-SCREEN-ON>
<RTRUE>>
<ROUTINE V-DIAGNOSE ()
<TELL "You're as fit as a fiddle">
<TELL ,PERIOD>>
<ROUTINE V-INVENTORY ()
<COND (<EQUAL? ,SCENE ,RESTAURANT>
<TELL
"You're cross-eyed with anger, which means a jaundiced eye points this way,
and an evil eye points that way. ">
<COND (<FSET? ,SPLEEN ,PHRASEBIT>
<TELL
"But you feel some justification in having vented your spleen. ">)
(T
<TELL
"You can trace a strong burning sensation to the area of your
spleen." CR CR>)>)>
<COND (<NOT <FIRST? ,PROTAGONIST>>
<TELL "You're empty-handed." CR>
<RTRUE>)>
<D-CONTENTS ,PROTAGONIST <>>
<COND (<AND <FSET? ,MOLEHILL ,PHRASEBIT>
<NOT <FSET? ,HANDS ,RMUNGBIT>>
<EQUAL? ,SCENE ,FARM>>
<FSET ,HANDS ,RMUNGBIT>
<TELL " You also notice a green tint to your thumb.">)>
<CRLF>>
<ROUTINE V-QUIT ()
;<TELL-SCORE>
<DO-YOU-WISH "leave the game">
<COND (<YES?>
<QUIT>)
(T
<TELL ,OK>)>>
<ROUTINE V-RESTART ()
;<TELL-SCORE>
<DO-YOU-WISH "restart">
<COND (<YES?>
<TELL "Restarting." CR>
<RESTART>
<TELL ,FAILED>)>>
<ROUTINE DO-YOU-WISH (STRING)
<TELL CR "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 "Please answer YES or NO. ">
<AGAIN>)>>
<ROUTINE FINISH ("AUX" (REPEATING <>) (CNT 0))
<PROG ()
<CRLF>
<COND (<NOT .REPEATING>
<SET REPEATING T>
;<TELL-SCORE>)>
<STATUS-LINE>
<TELL
"Would you like to 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?RESTART>
<RESTART>
<TELL ,FAILED>
<AGAIN>)
(<AND <EQUAL? <GET ,P-LEXV 1> ,W?RESTORE>
<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
"Nord and Bert Couldn't Make Head or Tail of It|
Infocom interactive fiction|
Copyright (c) 1987 by Infocom, Inc. All rights reserved.|
Nord and Bert... is a trademark of Infocom, Inc.|
Beta Release for Donald Abernathie (IBM) / Serial number ">
<TELL
"Nord and Bert Couldn't Make Head or Tail of It|
Infocom interactive fiction|
Copyright (c) 1987 by Infocom, Inc. All rights reserved.|
Nord and Bert Couldn't Make Head or Tail of It|
is a trademark of Infocom, Inc. ">
<V-$ID>
<TELL "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 ()
<DIROUT ,D-RECORD-ON> ;"all READS and INPUTS get sent to command file"
<RTRUE>>
;<ROUTINE V-$UNRECORD ()
<DIROUT ,D-RECORD-OFF>
<RTRUE>>
<ROUTINE V-$ID ()
<TELL "Interpreter ">
<PRINTN <GETB 0 30>>
<TELL " Version ">
<PRINTC <GETB 0 31>>
<CRLF>
<RTRUE>>
<ROUTINE V-$VERIFY ()
<COND (<AND <PRSO? ,INTNUM>
<EQUAL? ,P-NUMBER 232>>
<TELL N ,SERIAL CR>)
(T
<V-$ID>
<TELL CR "[Verifying.]" CR>
<COND (<VERIFY>
<TELL ,OK>)
(T
<TELL CR "** Bad **" CR>)>)>>
<CONSTANT SERIAL 0>
<ROUTINE V-$REFRESH ("OPTIONAL" (DONT-CLEAR <>))
<COND (.DONT-CLEAR ;"the screen"
<INIT-STATUS-LINE T>)
(T
<INIT-STATUS-LINE>)>
<STATUS-LINE>
;<CRLF>
<RTRUE>>
;<GLOBAL DEBUG <>>
;<ROUTINE V-$DEBUG ()
<TELL "O">
<COND (,DEBUG
<SETG DEBUG <>>
<TELL "ff">)
(T
<SETG DEBUG T>
<TELL "n">)>
<TELL ,PERIOD>>
;"subtitle real verbs"
<ROUTINE V-ALARM ()
<COND (<PRSO? ,ROOMS ,ME>
<PERFORM-PRSA ,ME>
<RTRUE>)
(T
<TELL "But" T ,PRSO " isn't catching 40 winks." CR>)>>
;<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 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 PRE-SPEAK ()
<COND (,GONE-APE
<TELL
"You open " 'MOUTH " to speak, but all that comes out are a few grunts." CR>
<STOP>)
(<FSET? ,EARS ,MUNGBIT>
<TELL ,YOU-CANT "carry on a conversation when " 'EARS " are">
<COND (<EQUAL? ,EARS ,HAND-COVER>
<TELL " covered">)
(T
<TELL " plugged up">)>
<TELL ,PERIOD>
<STOP>)>>
<ROUTINE V-ASK-ABOUT ("AUX" OWINNER)
<COND (<PRSO? ,ME>
<PERFORM ,V?TELL ,ME>
<RTRUE>)
;(<FSET? ,PRSO ,ACTORBIT>
;<AND <PRSO? ,INTNUM>
<EQUAL? ,P-NUMBER ,CHOICE-NUMBER>
<IN? ,SULTANS-WIFE ,HERE>>
<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 "Unsurprisingly," 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-BEND ()
<COND (<EQUAL? ,P-PRSA-WORD ,W?SPREAD>
<COND (<FSET? ,PRSO ,ACTORBIT>
<V-BOARD>)
(T
<HACK-HACK "Spreading">)>)
(T
<HACK-HACK "Bending">)>>
<ROUTINE V-BITE ()
<HACK-HACK "Biting">>
<ROUTINE V-BLESS ()
<COND (<HELD? ,BLESSING>
<PERFORM ,V?GIVE ,BLESSING ,PRSO>
<RTRUE>)
(T
<TELL ,YNH AR ,BLESSING>)>>
<ROUTINE V-BLOW ()
<CANT-VERB-A-PRSO "blow">>
<ROUTINE PRE-BOARD ()
<COND (<IN? ,PROTAGONIST ,PRSO>
<COND (<AND <EQUAL? ,P-PRSA-WORD ,W?RIDE ,W?PEDDLE>
<PRSO? ,ICICLE>>
<TELL "Indicate where you want to go." CR>)
(T
<TELL ,LOOK-AROUND>)>)
(<AND <HELD? ,PRSO>
<NOT <PRSO? ,LAUREL>>>
<COND (<PRSO? ,ICICLE>
<MOVE ,ICICLE ,HERE>
<RFALSE>)>
<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>
<SETG OLD-HERE <>>
<COND (<AND <PRSO? ,REST-CHAIR>
<NOT <FSET? ,REST-CHAIR ,RMUNGBIT>>>
<TELL
"As you brush against the table it swivels slightly. ">)>
<TELL "You are now ">
<COND (<FSET? ,PRSO ,INBIT>
<TELL "i">)
(T
<TELL "o">)>
<TELL "n" T ,PRSO ".">
<COND (<AND <IN? ,OLD-DOG ,HERE>
<FSET? ,OLD-DOG ,PHRASEBIT>>
<MOVE ,OLD-DOG ,PRSO>
<TELL " The old dog hops in with you.">)>
<FSET ,PRSO ,TOUCHBIT>
<CRLF>)
;(<FSET? ,PRSO ,ACTORBIT>
<TELL
"Let's not beat around the bush. Come out and say what you mean." CR>)
(<EQUAL? <GET ,P-ITBL ,P-PREP1> ,PR?IN>
<CANT-VERB-A-PRSO "get into">)
(T
<CANT-VERB-A-PRSO "get onto">)>>
;<ROUTINE V-BOARD-DIR ()
<RECOGNIZE>>
<ROUTINE V-BOO ()
<TELL "What did you expect -- art?" CR>>
<ROUTINE V-BURN ()
<COND (<NOT ,PRSI>
<COND (<AND <HELD? ,MATCH>
<FSET? ,MATCH ,ONBIT>>
<SETG PRSI ,MATCH>
<TELL "[with the match]" CR>)
(<EQUAL? ,HERE ,FACTORY>
<COND (<NOT <HELD? ,PRSO>>
<TELL ,YNH TR ,PRSO>
<RTRUE>)
(T
<REMOVE ,PRSO>
<TELL
"With much snapping, crackling and popping the bonfire consumes" TR ,PRSO>
<RTRUE>)>)
(T
<TELL "You have no source of fire." CR>
<RTRUE>)>)>
<COND (<NOT <PRSI? ,MATCH>>
<TELL ,YOU-CANT "burn something with" AR ,PRSI>)
(<NOT <FSET? ,MATCH ,ONBIT>>
<TELL "It's not lit." CR>)
(<PRSO? ,BOB-SHOE>
<PERFORM ,V?PUT ,MATCH ,BOB-SHOE>
<RTRUE>)
(T
<TELL
"Somebody yelling \"Fire\" in the crowded theater is enough to stop you."
CR>)>>
<ROUTINE V-BURY ()
<COND (,PRSI
<COND (<AND <PRSO? ,HATCHET>
<PRSI? ,OX>>
<SETG P-PRSA-WORD ,W?GORE>
<PERFORM ,V?KILL ,OX>
<RTRUE>)>
<PERFORM ,V?KILL ,PRSI ,PRSO>
<RTRUE>)
(<PRSO? ,HATCHET>
<SETG ORPHAN-FLAG ,HATCHET>
<QUEUE I-ORPHAN 2>
<TELL
"Into whom do you want to bury the hatchet?" CR>)
(<FSET? ,HERE ,INDOORSBIT>
<IMPOSSIBLES>)
(T
<WASTES>)>>
<GLOBAL ITEM-BOUGHT <>> ;"in store"
<ROUTINE V-BUY ()
<COND (<EQUAL? ,SCENE ,AISLE>
<COND (<AND <PRSO? ,TACKS>
<NOT <FSET? ,TACKS ,OLDBIT>>>
<TELL ,NO-SALE>
<RTRUE>)
(<OR <NOT <HELD? ,SCENT>>
<FSET? ,SCENT ,OLDBIT>>
<TELL "You don't have any money">)
(<OR <NOT <IN? ,PRSO ,SAIL>>
<FSET? ,SAIL ,OLDBIT>>
<TELL
"If" T ,PRSO " were only on sale, you might be able to afford it">)
(<OR <NOT <EQUAL? ,HERE ,CELLAR-ROOM>>
<FSET? ,CELLAR ,OLDBIT>>
<TELL
"You may be a willing buyer, but where is the willing seller?" CR>
<RTRUE>)
(<EQUAL? ,HERE ,CELLAR-ROOM>
<COND (<AND <HELD? ,TACKS>
<NOT <FSET? ,TACKS ,OLDBIT>>>
<REMOVE ,SCENT>
<REMOVE ,TACKS>
<SETG ITEM-BOUGHT ,PRSO>
<UPDATE-SCORE>
<QUEUE I-END-SCENE 1>
<TELL
"Okay, you buy" T ,PRSO ", handing the cent and the tax to the seller." CR>
<RTRUE>)
(T
<TELL
"\"Within your price range, yes,\" says the seller, \"but it looks like
you can't afford the tax.\"" CR>)>
<RTRUE>)
(T
<TELL "Sorry, there aren't any on sale here">)>
<TELL ,PERIOD>)
(<NOUN-USED ,FARM ,W?FARM>
<PERFORM ,V?BUY ,START-OBJ>
<RTRUE>)
(T
<TELL ,NO-SALE>)>>
<ROUTINE V-BUY-IN ()
<TELL ,YOU-CANT "buy" A ,PRSO " in" AR ,PRSI>>
<ROUTINE V-BUY-WITH ()
<COND (<OR <EQUAL? ,PRSI ,PENNY>
<AND <PRSI? ,SCENT>
<NOT <FSET? ,SCENT ,OLDBIT>>>>
<PERFORM ,V?BUY ,PRSO>
<RTRUE>)
(T
<TELL
"It's doubtful" T ,PRSO " could pass as anything but funny money." CR>)>>
<ROUTINE V-CALL ()
<PERFORM ,V?TELL ,PRSO>
<RTRUE>>
<ROUTINE V-CATCH ()
<TELL
"You can catch as catch can, but you can't catch" TR ,PRSO>>
<ROUTINE V-CHASTISE ()
<COND (<PRSO? ,INTDIR>
<TELL
,YOULL-HAVE-TO "go in that direction to see what's there." CR>)
(T
<TELL
"Use prepositions to indicate precisely what you want to do: LOOK AT the
object, LOOK INSIDE it, LOOK UNDER it, etc." CR>)>>
<ROUTINE V-CHEER ()
<COND (<PRSO? ,ROOMS>
<TELL ,OK>)
(T
<TELL "Probably," T ,PRSO " is as happy as possible." CR>)>>
<ROUTINE V-CHOO ()
<COND (<EQUAL? ,ORPHAN-FLAG ,FLOUR>
<TELL "Bless you." CR>)
(T
<TELL "Frustratingly, you can't quite muster a sneeze." CR>)>>
<ROUTINE V-CLEAN ()
;<SETG AWAITING-REPLY 2>
;<QUEUE I-REPLY 2>
<TELL "Do you also do windows?" CR>>
<ROUTINE V-CLEAN-IN ()
<V-CLEAN>>
;<ROUTINE V-CLICK ()
<TELL "\"Click.\"" CR>>
<ROUTINE V-CLIMB ()
<COND (<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>)
;(<AND <FSET? ,PRSO ,ACTORBIT> ;"GO DOWN ON OBJECT"
<EQUAL? ,P-PRSA-WORD ,W?GO>>
<PERFORM ,V?EAT ,PRSO>
<RTRUE>)
(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 ()
<COND (<PRSO? ,ROOMS>
<DO-WALK ,P?UP>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-CLOSE ()
<COND (<OR <FSET? ,PRSO ,SURFACEBIT>
<FSET? ,PRSO ,ACTORBIT>
<FSET? ,PRSO ,VEHBIT>>
<CANT-VERB-A-PRSO "close">)
(<OR <FSET? ,PRSO ,DOORBIT>
<FSET? ,PRSO ,CONTBIT>>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "Okay," T ,PRSO " is now closed." CR>
;<NOW-DARK?>)
(T
<TELL ,ALREADY-IS>)>)
(T
<CANT-VERB-A-PRSO "close">)>>
<ROUTINE V-COMB ()
<COND (<HELD? ,COMB>
<COND (<PRSO? ,HEAD>
<WASTES>
<RTRUE>)>
<PERFORM ,V?SEARCH-WITH ,PRSO ,COMB>
<RTRUE>)
(T
<TELL ,YNH AR ,COMB>)>>
<ROUTINE V-COOK ()
<COND (<AND <NOT ,PRSO>
<EQUAL? ,ORPHAN-FLAG ,HATCHET>>
<PERFORM ,V?NO-VERB ,COOK>
<RTRUE>)
(T
<TELL "Too many cooks spoil the broth." CR>)>>
<ROUTINE V-COUNT ()
<IMPOSSIBLES>>
<ROUTINE V-CRAWL ()
<COND (<EQUAL? ,ORPHAN-FLAG ,SHOULDER>
<PERFORM ,V?NO-VERB ,SHOULDER>
<RTRUE>)
(T
<WASTES>)>>
<ROUTINE V-CRAWL-UNDER ()
<COND (<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL-HIT-HEAD>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-CROSS ()
<V-WALK-AROUND>>
<ROUTINE V-CRY ()
<COND (,PRSO
<TELL "But" A ,PRSO " is not worth crying over">)
(T
<TELL "Boo hoo">)>
<TELL ,PERIOD>>
<ROUTINE V-CUT ()
<COND (<NOT ,PRSI>
<IMPOSSIBLES>)
(<PRSI? ,PIECE-OF-METAL ,HATCHET>
<TELL
"Brandishing" T ,PRSI " before" T ,PRSO " just won't cut the mustard." CR>)
(T
<TELL
"To put it bluntly, neither" T ,PRSI " nor you are very sharp." CR>)>>
<ROUTINE V-DECODE ()
<TELL ,YOULL-HAVE-TO "figure it out yourself." CR>>
<ROUTINE V-DEEP-SIX ()
<COND (,PRSI ;"deep object object"
<COND (<NOT <VISIBLE? ,SIX-PACK>>
<CANT-SEE <> "deep six">)
(<PRSI? ,ROOMS>
<PERFORM ,V?EXAMINE ,SIX-PACK>
<RTRUE>)
(<PRSO? ,SIX-PACK>
<PERFORM ,V?GIVE ,SIX-PACK ,PRSI>
<RTRUE>)
(T
<RECOGNIZE>)>)
(<VISIBLE? ,SIX-PACK>
<PERFORM ,V?GIVE ,SIX-PACK ,PRSO>
<RTRUE>)
(T
<CANT-SEE <> "deep six">)>>
<ROUTINE V-DEFLATE ()
<IMPOSSIBLES>>
<ROUTINE V-DIG ()
<WASTES>>
;<ROUTINE V-DINE-ON ()
<PERFORM ,V?EAT ,PRSO>
<RTRUE>>
<ROUTINE V-DISEMBARK ()
<COND (<NOT ,PRSO>
<COND (<NOT <IN? ,PROTAGONIST ,HERE>>
<PERFORM-PRSA <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<TELL ,LOOK-AROUND>)>)
(<EQUAL? ,P-PRSA-WORD ,W?TAKE> ;"since GET OUT is also TAKE OUT"
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<NOT <IN? ,PROTAGONIST ,PRSO>>
<TELL ,LOOK-AROUND>
<RFATAL>)
(T
<MOVE ,PROTAGONIST ,HERE>
<SETG OLD-HERE <>>
<TELL "You">
<COND (<AND <IN? ,OLD-DOG ,PRSO>
<FSET? ,OLD-DOG ,PHRASEBIT>>
<MOVE ,OLD-DOG ,HERE>
<TELL ", along with the old dog,">)>
<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>
<COND (<FSET? ,PRSO ,FEMALEBIT>
<TELL "Sh">)
(T
<TELL "H">)>
<TELL "e is dressed!" CR>)
(T
<IMPOSSIBLES>)>)
(T
<SETG PRSO ,ROOMS>
<V-GET-DRESSED>)>>
<ROUTINE V-DRINK ()
<CANT-VERB-A-PRSO "drink">>
<ROUTINE V-DRINK-FROM ()
<IMPOSSIBLES>>
<ROUTINE V-DROP ()
<COND (<NOT <SPECIAL-DROP>>
;<COND (<OR <EQUAL? <LOC ,PROTAGONIST> ,BARGE ,RAFT>
<EQUAL? <LOC ,PROTAGONIST> ,TREE-HOLE ,CAGE>>
<MOVE ,PRSO <LOC ,PROTAGONIST>>)>
<MOVE ,PRSO ,HERE>
<TELL "Dropped." CR>)>>
<ROUTINE SPECIAL-DROP () ;"used by drop and throw"
<RFALSE>
;<COND (<IN-CATACOMBS>
<REMOVE ,PRSO>
<TELL "With a splash," T ,PRSO " is lost forever." CR>)
(<IN-SPACE?>
<MOVE ,PRSO ,PROTAGONIST>
<TELL
"In the absence of gravity," T ,PRSO " floats back into " 'HANDS "s." CR>)
(<EQUAL? ,HERE ,EXIT-SHOP>
<MOVE ,PRSO ,DUST>
<TELL "You lose" T ,PRSO " in the dust." CR>)
(<AND <PRSO? ,TORCH>
<FSET? ,TORCH ,ONBIT>
<IN? ,PROTAGONIST ,BARGE>>
<PERFORM ,V?PUT ,TORCH ,BARGE>
<RTRUE>)>>
<ROUTINE V-EAT ()
<COND (<PRSO? ,GRAIN ,APPLE ,PEPPERS ,OATS ,APPLE-CART>
<TELL
"This is no time for pigging out on">
<COND (<PRSO? ,APPLE ,APPLE-CART>
<TELL " apples">)
(T
<TELL T ,PRSO>)>
<TELL ,PERIOD>)
(<FSET? ,PRSO ,FOODBIT>
<TELL
"Actually," T-IS-ARE ,PRSO "not all that appetizing." CR>)
(T
<TELL "That's pretty nutty." CR>)>>
;"How do you want that cooked?"
<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
<YUKS>)>)>
<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
<YUKS>)>)
(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>)
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL-HIT-HEAD>)
(<HELD? ,PRSO>
<TELL ,HOLDING-IT>
<RTRUE>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-EXAMINE ()
<COND (<AND ,PRSI ;"l at obj with obj"
<NOT <EQUAL? ,PRSI ,EYES>>>
<IMPOSSIBLES>)
(<FSET? ,PRSO ,ACTORBIT>
<COND (<AND <FIRST? ,PRSO>
<NOT <PRSO? ,CLIENT>>>
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)
(T
<NOTHING-INTERESTING>
<TELL "about" TR ,PRSO>)>)
(<OR <FSET? ,PRSO ,DOORBIT>
<FSET? ,PRSO ,SURFACEBIT>>
<V-LOOK-INSIDE>)
(<AND <FSET? ,PRSO ,CONTBIT>
<NOT <EQUAL? ,PRSO ,OLIVE-TREE>>>
<COND (<FSET? ,PRSO ,OPENBIT>
<V-LOOK-INSIDE>)
(T
<TELL "It's closed." CR>)>)
;(<FSET? ,PRSO ,LIGHTBIT>
<TELL "It's o">
<COND (<FSET? ,PRSO ,ONBIT>
<TELL "n">)
(T
<TELL "ff">)>
<TELL ,PERIOD>)
(<FSET? ,PRSO ,READBIT>
<PERFORM ,V?READ ,PRSO>
<RTRUE>)
;(<FSET? ,PRSO ,NARTICLEBIT>
<SENSE-OBJECT "look">)
;(<OR <PROB 25>
<PRSO? ,PSEUDO-OBJECT>>
<TELL "Totally ordinary looking " D ,PRSO ,PERIOD>)
(<OR <PROB 60>
<PRSO? ,DEVICES ,FOOT>
<FSET? ,PRSO ,PLURALBIT>>
<NOTHING-INTERESTING>
<TELL "about" TR ,PRSO>)
(T
<PRONOUN>
<TELL " look">
<COND (<AND <NOT <FSET? ,PRSO ,PLURALBIT>>
<NOT <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 "eye-catching">)
(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 (<EQUAL? .AV ,CART ,PAN ,HOT-TUB>
<PERFORM ,V?DISEMBARK <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE V-FEED ("AUX" FOOD)
<COND (<SET FOOD <FIND-IN ,PROTAGONIST ,FOODBIT>>
<PERFORM ,V?GIVE .FOOD ,PRSO>
<RTRUE>)
(T
<TELL "You have no food for" TR ,PRSO>)>>
<ROUTINE V-FILL ()
<COND ;(<AND <OR <FSET? ,PRSO ,CONTBIT>
<AND <PRSO? ,STAIN ,CREAM>
<FSET? ,STAIN ,MUNGBIT>>>
<OR <PRSI? ,WATER>
<GLOBAL-IN? ,WATER ,HERE>>>
<WASTES>)
(<NOT ,PRSI>
<TELL ,THERES-NOTHING "to fill it with." CR>)
(T
<IMPOSSIBLES>)>>
<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>>
<V-DECODE>)
(<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
<V-DECODE>)>>
;<ROUTINE V-FLUSH ()
<TELL "It's your brain that needs flushing." CR>>
<ROUTINE V-FOLLOW ()
<COND (<VISIBLE? ,PRSO>
<TELL "But" T-IS-ARE ,PRSO "right here!" CR>)
(<AND <NOT <FSET? ,PRSO ,ACTORBIT>>
<NOT <PRSO? ,PEARL>>>
<IMPOSSIBLES>)
(T
<TELL "You have no idea where" T ,PRSO>
<COND (<FSET? ,PRSO ,PLURALBIT>
<TELL " are">)
(T
<TELL " is">)>
<TELL ,PERIOD>)>>
<GLOBAL FOLLOW-FLAG <>>
<ROUTINE I-FOLLOW ()
<SETG FOLLOW-FLAG <>>
<RFALSE>>
<ROUTINE PRE-GIVE ()
<COND (<AND <VERB? GIVE>
<PRSO? ,HANDS>>
<PERFORM ,V?SHAKE-WITH ,PRSI>
<RTRUE>)
(<PRSO? ,EYES>
<PRE-SWITCH>
<PERFORM ,V?EXAMINE ,PRSI ,EYES>
<RTRUE>)
(<AND <EQUAL? ,P-PRSA-WORD ,W?FEED>
<NOT <FSET? ,PRSO ,FOODBIT>>>
<TELL "That's not food!" CR>)
(<AND <PRSO? ,FOOT>
<ADJ-USED ,FOOT ,W?HOT>>
<TELL "How?" CR>)
(<IDROP>
<RTRUE>)>>
<ROUTINE V-GARBLE ("AUX" X (NUM 0))
<REPEAT ()
<COND (<ZERO? .NUM>
<TELL ">">)>
<SET X <INPUT 1>>
<COND (<OR <EQUAL? .X 69 101> ;"ASCII values of E and e"
<EQUAL? .X 197 229>> ;"plus 128, to prevent bug"
<PUTB ,P-INBUF .NUM 67>
<PRINTC 67>)
(<OR <EQUAL? .X 78 110> ;"ASCII values of N and n"
<EQUAL? .X 206 238>>
<PRINTC 80>
<PUTB ,P-INBUF .NUM 80>)
(<EQUAL? .X 10 13> ;"carriage return"
<PUTB ,P-LEXV 0 59>
<MAIN-LOOP>
<AGAIN>
<RETURN>)
(T
<PRINTC .X>
<PUTB ,P-INBUF .NUM .X>)>
<INC NUM>>
<RTRUE>>
<ROUTINE V-GIVE ()
<COND (<PRSI? ,MURDERER>
<GIVE-TO-MURDERER>)
(<PRSI? ,ROCKS>
<GIVE-TO-ROCKS>)
(<AND <PRSI? ,CELLAR>
<NOT <FSET? ,CELLAR ,OLDBIT>>>
<GIVE-TO-SELLER>)
(<AND <PRSI? ,CLIENT>
<EQUAL? ,HERE ,CLOUD-ROOM>>
<GIVE-TO-CLIENT>)
(<AND <PRSI? ,PEARL>
<PRSO? ,MARE>
<NOT <FSET? ,PEARL ,OLDBIT>>>
<UPDATE-SCORE>
<REMOVE ,MARE>
<TELL
"Wide-eyed, the girl turns" T ,MARE " in her hands, marveling at the
exactitude of its right angles. She then hungrily devours it in several
large neck-stretching gulps." CR>)
(<FSET? ,PRSI ,ACTORBIT>
<TELL
"Briskly," T ,PRSI " refuse">
<COND (<NOT <FSET? ,PRSI ,PLURALBIT>>
<TELL "s">)>
<TELL " your offer." CR>)
(<OR <FSET? ,PRSI ,SCENEBIT> ;"give old bottle to room"
<PRSI? ,GLOBAL-ROOM>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<AND <PRSO? ,BLUSHING-CROW>
<NOT <FSET? ,BLUSHING-CROW ,OLDBIT>>>
<PERFORM ,V?KILL ,PRSI ,BLUSHING-CROW>
<RTRUE>)
(T
<TELL ,YOU-CANT "give" A ,PRSO " to" A ,PRSI "!" CR>)>>
<ROUTINE GIVE-TO-MURDERER ("AUX" STR)
<REMOVE ,PRSO>
<COND (<FSET? ,PRSO ,PLURALBIT>
<SET STR "them">)
(T
<SET STR "it">)>
<TELL
"You toss" T ,PRSO " down the aisle to him. He summarily bites " .STR ", then
flings " .STR " away over the shelves" >
<COND (<AND <PRSO? ,MINCE>
<EQUAL? <GET ,P-NAMW 0> ,W?MINT ,W?MINTS>
<NOT <FSET? ,MINCE ,OLDBIT>>>
<UPDATE-SCORE>
<SETG MINCE-EATEN T>
<TELL
". There's a noticable improvement in his breath, even from here">)>
<TELL ,PERIOD>>
<ROUTINE GIVE-TO-ROCKS ()
<COND (<AND <PRSO? ,PAN-OF-KEYS>
<NOT <FSET? ,PAN-OF-KEYS ,OLDBIT>>>
<UPDATE-SCORE>
<FSET ,ROCKS ,RMUNGBIT>
<FSET ,ROCKS ,SEENBIT>
<REMOVE ,PAN-OF-KEYS>
<PUTP ,ROCKS ,P?OLDDESC "fed rocks">
<TELL
"You scatter the green peas among the hungry rocks, who crack heads with each
other in their eagerness to gobble them up. When the peas are gone, they
devour even the tin can, which is loudly crushed as it disappears between
several of the fed rocks." CR>)
(T
<TELL "\"No! Feed us!\"" CR>)>>
<ROUTINE GIVE-TO-CLIENT ()
<COND (<OR <PRSO? ,HOUSE>
<AND <PRSO? ,RAT>
<IN? ,HOUSE ,RAT>>>
<TELL
"The giant greedily snatches your offering">
<MOVE ,PRSO ,CLIENT>
<COND (<OR <NOUN-USED ,HOUSE ,W?HOUSE>
<ADJ-USED ,HOUSE ,W?LEAD>>
<TELL
". In the time it takes Mr. Clean to get a closer look at it, you">
<CLIENT-FALL>)
(T
<TELL " and eyes it with suspicion." CR>)>)
(T
<WASTES>)>>
<ROUTINE GIVE-TO-SELLER ()
<COND (<OR <AND <PRSO? ,SCENT>
<NOT <FSET? ,SCENT ,OLDBIT>>>
<AND <PRSO? ,TACKS>
<NOT <FSET? ,SCENT ,OLDBIT>>>>
<SETG ORPHAN-FLAG ,CELLAR>
<QUEUE I-ORPHAN 2>
<TELL
"\"Exactly what is it you want to buy?\"" CR>
<RFATAL>)
(T
<THIS-IS-IT ,PRSO>
<TELL
"The seller offhandedly rejects" T ,PRSO ".||
\"I'm a seller, not a receiver, damn it. You want to buy something, then
buy it.\"" CR>
<RFATAL>)>>
<ROUTINE V-GIVE-UP ()
<COND (<PRSO? ,ROOMS>
<V-QUIT>)
(T
<RECOGNIZE>)>>
<ROUTINE V-GOOSE ()
<TELL "No. Just flatly no." CR>>
<ROUTINE V-GRIND ()
<COND (<EQUAL? ,HERE ,LOFT ,KITCHEN>
<TELL "There's no point in that." CR>)
(T
<CANT-SEE <> "grindstone">)>>
<ROUTINE V-HAIR ()
<COND (<AND <PRSO? ,EXPERIENCE>
,TRANS-PRINTED>
;<PUT ,P-ADJW 0 ,W?HAIR>
;<PERFORM ,V?NO-VERB ,EXPERIENCE>
<RTRUE>)
(T
<RECOGNIZE>)>>
<ROUTINE V-HAMMER ()
<TELL
"No matter how hard you hit" T ,PRSO ", it'd never turn into " AR ,PRSI>>
<ROUTINE V-HELLO ()
<COND (,PRSO
<TELL
"[The proper way to talk to characters in the story is PERSON, HELLO.]" CR>)
(T
<PERFORM ,V?TELL ,ME>
<RTRUE>)>>
<ROUTINE V-HIDE ()
<TELL ,YOU-CANT "hide ">
<COND (,PRSO
<TELL "t">)>
<TELL "here." CR>>
<ROUTINE V-HINTS-NO ()
<COND (<NOT <PRSO? ,ROOMS>>
<RECOGNIZE>
<RTRUE>)
(<NOT ,HINTS-OFF>
<TELL "[Okay, you will">)
(T
<TELL "[You">)>
<SETG HINTS-OFF T>
<TELL " have no access to help in this session.]" CR>
<RTRUE>>
<ROUTINE V-IN ("AUX" VEHICLE)
<DO-WALK ,P?IN>>
<ROUTINE V-INFLATE ()
<IMPOSSIBLES>>
;<ROUTINE V-INHALE ()
<COND (<NOT ,PRSO>
<TELL ,OK>)
(<PRSO? ,ROOMS>
<TELL "You begin to get light-headed." CR>)
(T
<RECOGNIZE>)>>
<ROUTINE V-KICK ()
<HACK-HACK "Kicking">>
<ROUTINE V-KILL ()
<TELL
"The pun is mightier than the sword." CR>>
<ROUTINE V-KISS ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL
"Since" T-IS-ARE ,PRSO "not a kissing cousin, you'd sooner kiss off or
accept the kiss of death than to take it on the kisser." CR>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-KNEEL ()
<COND (<EQUAL? ,P-PRSA-WORD ,W?BOW>
<SORE "waist">)
(<NOT <PRE-POUR>>
<SORE "knee">)>>
<ROUTINE V-KNOCK ()
<COND (<FSET? ,PRSO ,DOORBIT>
<TELL "Silence answers back." CR>)
(T
<HACK-HACK "Knocking on">)>>
<ROUTINE V-KNOCK-OFF ()
<COND (<NOT ,PRSI>
<SETG PRSI <LOC ,PRSO>>)>
<COND (<NOT <IN? ,PRSO ,PRSI>>
<NOT-IN>)
(<AND <FSET? ,PRSI ,SURFACEBIT>
<FSET? ,PRSO ,TAKEBIT>
<NOT <FSET? ,PRSO ,TRYTAKEBIT>>>
<MOVE ,PRSO ,HERE>
<TELL "Knocked off." CR>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-LAND ()
<COND (<AND <NOT ,PRSO>
<EQUAL? <LOC ,PROTAGONIST> ,RAFT ,BARGE>>
<PERFORM-PRSA <LOC ,PROTAGONIST>>
<RTRUE>)
(T
<TELL ,HUH>)>>
<ROUTINE V-LEAP ()
<COND (<OR <PRSO? ,ROOMS>
<NOT ,PRSO>>
<WEE>)
(<AND ,PRSO
<NOT <IN? ,PRSO ,HERE>>>
<IMPOSSIBLES>)
(T
<WEE>)>>
<ROUTINE V-LEAP-OFF ()
<COND (<FSET? ,PRSO ,VEHBIT>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(T
<PERFORM ,V?LEAP ,PRSO>
<RTRUE>)>>
<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-LEAVE-TO ()
<TELL "Left." CR>>
<ROUTINE V-LET-OUT ()
<TELL "But" T ,PRSO " isn't all that confined." CR>>
;<ROUTINE V-LICK ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?EAT ,PRSO>
<RTRUE>)
(T
<PERFORM ,V?TASTE ,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>)>
<WASTES>>
;<ROUTINE V-LIMBER ()
<TELL "Ahhh. Nothing like a little muscle-loosening." CR>>
;<ROUTINE PRE-LISTEN ()
<COND (<AND <FSET? ,EARS ,MUNGBIT>
<NOT ,GONE-APE>>
<TELL "You hear the sound of ">
<COND (<EQUAL? ,EARS ,HAND-COVER>
<TELL "sweating palms">)
(T
<TELL "rustling cotton">)>
<TELL ,PERIOD>)>>
<ROUTINE V-LISTEN ()
<COND (,PRSO
<SENSE-OBJECT "sound">)
(T
<TELL "You hear nothing of interest." CR>)>>
<ROUTINE V-LOCK ()
;<COND (<EQUAL? ,P-PRSA-WORD ,W?LOX>
<COND (<AND <NOT <FSET? ,LOCKS ,OLDBIT>>
<VISIBLE? ,LOCKS>>
<PERFORM ,V?PUT ,LOCKS ,PRSO>
<RTRUE>)
(T
<CANT-SEE <> "lox">)>)>
<YUKS>>
;<ROUTINE PRE-LOOK ()
<COND (<PLAYER-CANT-SEE>
<RTRUE>)>>
<ROUTINE V-LOOK ()
;<COND (<EQUAL? ,HAND-COVER ,EYES>
<UNIFORMLY-COLORED "Palm" "hands over your eyes">)
(<FSET? ,EYES ,MUNGBIT>
<UNIFORMLY-COLORED "Eyelids" "eyes closed">)>
<COND (<D-ROOM T>
<D-OBJECTS>)>
<RTRUE>>
;<ROUTINE UNIFORMLY-COLORED (ROOM-NAME STRING)
<TELL .ROOM-NAME " Room|
This location is dim and uniformly colored, resembling what you see
when you have your " .STRING ". In fact, you have your "
.STRING ,PERIOD>>
<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>
<COND (<AND <EQUAL? ,HERE ,ATTIC>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<PERFORM ,V?EXAMINE ,CEILING>)
(T
<PERFORM ,V?EXAMINE ,GROUND>)>
<RTRUE>)
(T
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)>>
<ROUTINE V-LOOK-INSIDE ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL ,IT-SEEMS-THAT T ,PRSO " has">
<COND (<NOT <D-NOTHING>>
<TELL ,PERIOD>)>
<RTRUE>)
(<IN? ,PROTAGONIST ,PRSO>
<D-VEHICLE>)
(<FSET? ,PRSO ,DOORBIT>
<TELL "All you can tell is that" T ,PRSO " is ">
<OPEN-CLOSED ,PRSO>
<TELL ,PERIOD>)
(<EQUAL? <GET ,P-ITBL ,P-PREP1> ,PR?OUT ,W?OUTSIDE>
<TELL "You see nothing special." CR>)
(<FSET? ,PRSO ,SURFACEBIT>
<TELL "On" T ,PRSO " you see">
<COND (<NOT <D-NOTHING>>
<TELL ,PERIOD>)>
<RTRUE>)
(<FSET? ,PRSO ,CONTBIT>
<COND (<SEE-INSIDE? ,PRSO>
<TELL "Inside" T ,PRSO " you see">
<COND (<NOT <D-NOTHING>>
<TELL ,PERIOD>)>
<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 Superman would have trouble seeing through" AR ,PRSO>)>>
<ROUTINE V-LOOK-OBJECT-IN ()
<COND (<AND <FSET? ,PRSO ,ACTORBIT>
<PRSI? ,MOUTH>>
<TELL "It looks like ten percent fewer cavities." CR>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-LOOK-OVER ()
<V-EXAMINE>>
<ROUTINE V-LOOK-UNDER ()
<COND (<HELD? ,PRSO>
<COND (<FSET? ,PRSO ,WORNBIT>
<TELL ,WEARING-IT>)
(T
<TELL ,HOLDING-IT>)>)
(T
<NOTHING-INTERESTING>
<TELL "under" TR ,PRSO>)>>
<ROUTINE V-LOOK-UP ()
<COND (<PRSO? ,ROOMS>
<COND ;(<EQUAL? ,HERE ,WELL-BOTTOM>
<TELL ,YOU-SEE " a dot of light." CR>)
;(<IN-CATACOMBS>
<TELL ,ONLY-BLACKNESS>)
(<FSET? ,HERE ,INDOORSBIT>
<COND (<AND <EQUAL? ,HERE ,ATTIC>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<PERFORM ,V?EXAMINE ,GROUND>)
(T
<PERFORM ,V?EXAMINE ,CEILING>)>
<RTRUE>)
(T
<TELL "The sky is an inky black." CR>)>)
(T
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)>>
;<ROUTINE V-LOVE ()
<TELL "Not difficult, considering how lovable" T ,PRSO " ">
<COND (<FSET? ,PRSO ,PLURALBIT>
<TELL "are">)
(T
<TELL "is">)>
<TELL ,PERIOD>>
<ROUTINE V-LOWER ()
<V-RAISE>>
<ROUTINE V-MAKE ()
<COND (<GET ,P-OFW 0>
<TELL
"[Use the word \"out.\" For example, MAKE A VIRTUE OUT OF NECESSITY.]">)
(T
<TELL ,YOU-CANT "just make" A ,PRSO " out of thin air.">)>
<CRLF>
<RTRUE>>
<ROUTINE V-MAKE-OBJECT-DRINK ()
<COND (<AND ,PRSI
<NOT <PRSI? ,WATER>>>
<IMPOSSIBLES>)
(<FSET? ,PRSO ,ACTORBIT>
<TELL "But" T ,PRSO " isn't particularly thirsty." CR>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-MAKE-LOVE ()
<COND (<PRSO? ,LOVE>
<PERFORM ,V?FUCK ,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 ()
<COND (<AND <PRSO? ,SMOCK>
<NOUN-USED ,SMOCK ,W?TALK>>
<PERFORM ,V?TELL ,PRSI>
<RTRUE>)
(T
<PERFORM ,V?SET ,PRSI ,PRSO>
<RTRUE>)>>
;<ROUTINE V-MARRY ()
<TELL "I doubt that" T ,PRSO " is the marrying type." CR>>
;<ROUTINE V-MASTURBATE ()
<COND (<AND ,PRSO ;"for JERK OFF OBJECT (FIND RLANDBIT)"
<NOT <PRSO? ,ROOMS>>>
<RECOGNIZE>)
(<EQUAL? ,NAUGHTY-LEVEL 0>
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "Don't you know that this causes blindness?" CR>)
(T
<PERFORM ,V?FUCK ,ME>
<RTRUE>)>>
<ROUTINE V-MEET ()
<PERFORM ,V?TELL ,PRSO>
<RTRUE>>
;<ROUTINE V-MEASURE ()
<COND (<OR <FSET? ,PRSO ,PARTBIT>
<PRSO? ,ME>>
<TELL "Usual size." CR>)
(T
<TELL "The same size as any other " D ,PRSO ,PERIOD>)>>
;<ROUTINE V-MOAN ()
<TELL "\"Ohhhh...\"" CR>>
<ROUTINE V-MOVE ()
<COND (<AND <EQUAL? ,P-PRSA-WORD ,W?LEAD>
<EQUAL? <GET ,P-NAMW 0> ,W?HOUSE>>
<PUT ,P-ADJW 0 ,W?LEAD>
<PUT ,P-NAMW 0 ,W?HOUSE>
<PERFORM ,V?NO-VERB ,HOUSE>
<RTRUE>)
(<HELD? ,PRSO>
<WASTES>)
(<FSET? ,PRSO ,INTEGRALBIT>
<PART-OF>)
(<LOC-CLOSED>
<RTRUE>)
(<AND ,PRSI
<FSET? ,PRSO ,ACTORBIT>>
<TELL "Now," T ,PRSO "'s stubborn as a mule." CR>)
(<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-NO ()
<COND (<EQUAL? ,AWAITING-REPLY 1>
<COND (<FSET? ,MANTEL ,HEARDBIT>
<TELL
"No? Oh, I think it would look ">
<ITALICIZE "wonderful">
<TELL " there">)
(T
<TELL "Yes, yes.... I'd tend to agree with you">)>
<TELL ,PERIOD>)
(T
<YOU-SOUND "nega">)>>
<ROUTINE V-NO-VERB ()
<COND ;(,PRSI ;"generic prso is horn"
<COND (<AND <EQUAL? <GET ,P-NAMW 0> ,W?POSSESSION>
<EQUAL? <GET ,P-NAMW 1> ,W?NINE-TENTHS ,W?LAW>>
<COND (<AND <FSET? ,HORN ,TRYTAKEBIT>
<EQUAL? ,HERE ,SQUARE>>
<PERFORM ,V?TAKE ,HORN> ;"generic prso is horn"
<RTRUE>)
(T
<TELL "Sometimes, yes." CR>)>)
(T
<RECOGNIZE>)>)
(<NOUN-USED ,ME ,W?I>
<V-INVENTORY>)
(,TRANS-PRINTED
<RTRUE>)
(,TURN-KLUDGE ;"PRSO"
<TELL "It seems" T ,PRSO " doesn't change." CR>)
(<AND <EQUAL? ,SCENE ,AISLE>
<PRSO? ,DESSERTS>
<OR <NOUN-USED ,DESSERTS ,W?DESSERT ,W?DESSERTS>
<NOUN-USED ,DESSERTS ,W?DESS>
<ADJ-USED ,DESSERTS ,W?DESS>>>
<SETG REAL-AISLE ,DESSERT-ROOM>
<PERFORM ,V?WALK-TO ,AISLE>
<RTRUE>)
(<AND <PRSO? ,START-OBJ>
<NOUN-USED ,START-OBJ ,W?BEGIN ,W?BEGINNING>>
<RE-BEGIN>
<RTRUE>)
(<AND <FSET? ,PRSO ,SCENEBIT>
<NOT <EQUAL? ,PRSO ,SCENE>>>
<CANT-GET-THERE>)
(<FSET? ,PRSO ,SCENEBIT>
<PERFORM ,V?WALK-TO ,PRSO>
<RTRUE>)
(,ORPHAN-FLAG
<COND (<EQUAL? ,ORPHAN-FLAG ,CELLAR>
<COND (<NOT <VISIBLE? ,PRSO>>
<CANT-SEE ,PRSO>)
(T
<PERFORM ,V?BUY ,PRSO>
<RTRUE>)>)
(<EQUAL? ,ORPHAN-FLAG ,REST-TABLE>
<COND (<NOT <VISIBLE? ,PRSO>>
<CANT-SEE ,PRSO>)
(T
<PERFORM ,V?TURN-OBJECT-ON ,REST-TABLE ,PRSO>
<RTRUE>)>)
(<AND <EQUAL? ,ORPHAN-FLAG ,NEEDLE>
<EQUAL? ,PRSO ,NEEDLE>>
<PERFORM ,V?SEARCH-OBJECT-FOR ,HAYSTACK ,PRSO>
<RTRUE>)
(<EQUAL? ,ORPHAN-FLAG ,SMOCK>
<PUT ,P-NAMW 0 ,W?TALK>
<PERFORM ,V?MAKE-WITH ,SMOCK ,PRSO>
<RTRUE>)
(<EQUAL? ,ORPHAN-FLAG ,HATCHET>
<PERFORM ,V?BURY ,HATCHET ,PRSO>
<RTRUE>)
(<AND <EQUAL? ,ORPHAN-FLAG ,SHOULDER>
<EQUAL? ,PRSO ,SHOULDER>>
<SETG ORPHAN-FLAG <>>
<UPDATE-SCORE>
<TELL "The crowd eats it up." CR>)
(<EQUAL? ,ORPHAN-FLAG ,LOUIS-CHAIR>
<UPDATE-SCORE>
<COND (<EQUAL? ,PRSO ,LOUIS-CHAIR>
<ITALICIZE "Give">
<FCLEAR ,LOUIS-CHAIR ,TRYTAKEBIT>
<TELL
" the " D ,LOUIS-CHAIR " to you -- never! Well, yes, you may borrow it. I don't even want to ">
<ITALICIZE "know">
<TELL " what you're going to use it for." CR>)
(<EQUAL? ,PRSO ,OLD-BOTTLE>
<PERFORM ,V?TAKE ,OLD-BOTTLE>
<RTRUE>)
(<NOT <VISIBLE? ,PRSO>>
<CANT-SEE ,PRSO>)
(<FSET? ,PRSO ,TAKEBIT>
<TELL "It's yours for the taking." CR>)
(T
<IMPOSSIBLES>)>)
(T
<WASTES>)>)
(<NOT <VISIBLE? ,PRSO>>
<CANT-SEE ,PRSO>)
;(<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?TELL ,PRSO>
<RTRUE>)
(,P-CONT
<PERFORM ,V?TELL ,PRSO>
<RTRUE>)
(T
;<TELL "[Examine" T ,PRSO "]" CR CR>
<PERFORM ,V?EXAMINE ,PRSO>
<RTRUE>)>>
<GLOBAL ORPHAN-FLAG <>> ;"object associated with an orphan question"
<ROUTINE I-ORPHAN ()
<SETG ORPHAN-FLAG <>>
;<COND (<EQUAL? ,ORPHAN-FLAG ,SHOULDER>)>
<RFALSE>>
<ROUTINE NO-WORD (WRD)
<COND (<OR <EQUAL? .WRD ,W?NO ,W?NOPE>
<EQUAL? .WRD ,W?NAH ,W?UH-UH>>
<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-TURN "ff">)>>
<ROUTINE V-ON ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "Hopefully, your sexy body will do the trick." CR>)
(<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-TURN "n">)>>
<ROUTINE CANT-TURN (STRING)
<TELL ,YOU-CANT "turn that o" .STRING ,PERIOD>>
<ROUTINE V-OPEN ()
<COND (<OR <FSET? ,PRSO ,SURFACEBIT>
<FSET? ,PRSO ,ACTORBIT>
<FSET? ,PRSO ,VEHBIT>>
<IMPOSSIBLES>)
(<AND <FSET? ,PRSO ,OPENBIT>
<NOT <NOUN-USED ,CRANK ,W?CRANK>>
<NOT <FSET? ,PRSO ,LOCKEDBIT>>> ;"for shining-door"
<TELL ,ALREADY-IS>)
(<OR <FSET? ,PRSO ,DOORBIT>
<AND <EQUAL? ,PRSO ,SAFE>
<FSET? ,SAFE ,LOCKEDBIT>>>
<COND (<FSET? ,PRSO ,LOCKEDBIT>
<TELL "The " D ,PRSO " is locked." CR>)
(T
<FSET ,PRSO ,OPENBIT>
<TELL "The " D ,PRSO " swings open." CR>)>)
(<FSET? ,PRSO ,CONTBIT>
<FSET ,PRSO ,OPENBIT>
<FSET ,PRSO ,TOUCHBIT>
<COND (<OR <NOT <FIRST? ,PRSO>>
<FSET? ,PRSO ,TRANSBIT>>
<TELL "Opened." CR>)
(T
<TELL "Opening" T ,PRSO " reveals">
<COND (<NOT <D-NOTHING>>
<TELL ,PERIOD>)>
;<NOW-LIT?>)>)
(T
<CANT-VERB-A-PRSO "open">)>>
<ROUTINE V-PASS ()
<COND (<HELD? ,PRSO>
<TELL ,YOULL-HAVE-TO "say who you want to pass it to." CR>)
(T
<V-WALK-AROUND>)>>
<ROUTINE V-PAY ()
<COND (<HELD? ,PENNY>
<COND (<PRSO? ,PIPER>
<PERFORM ,V?BUY-IN ,PIG ,CAT-BAG>
<RTRUE>)
(T
<PERFORM ,V?GIVE ,PENNY ,PRSO>
<RTRUE>)>)
;(<HELD? ,TEN-MARSMID-COIN>
<PERFORM ,V?GIVE ,TEN-MARSMID-COIN ,PRSO>
<RTRUE>)
(T
<TELL "You have no money!" CR>)>>
;<ROUTINE V-PHONE ()
<COND (<EQUAL? ,HERE ,VIZICOMM-BOOTH>
<V-CALL>)
(T
<TELL ,YOU-CANT-SEE-ANY "phone here!" CR>)>>
<ROUTINE V-PICK ()
<CANT-VERB-A-PRSO "pick">>
<ROUTINE V-PICK-UP ()
<PERFORM ,V?TAKE ,PRSO ,PRSI>
<RTRUE>>
<ROUTINE V-PIN ()
<COND (<NOT <HELD? ,NEEDLE>>
<TELL "You may be on pins and needles, but you have none." CR>)
(T
<V-POINT>)>>
<ROUTINE V-PLAY ()
<COND (<EQUAL? <GET ,P-NAMW 0> ,W?JACK ,W?JACKS>
<COND (<EQUAL? ,SCENE ,JOAT>
<TELL "You already are." CR>)
(T
<CANT-GET-THERE>)>)
(T
<CANT-VERB-A-PRSO "play">)>>
<ROUTINE V-PLUG ()
<IMPOSSIBLES>>
<ROUTINE V-POINT ()
<TELL "That would be pointless." CR>>
<ROUTINE V-POSSESSION ()
<COND (<AND <PRSO? ,ROOMS ,LAWS>
<FSET? ,HORN ,TRYTAKEBIT>
<EQUAL? ,HERE ,SQUARE>>
<PUT ,P-NAMW 0 ,W?POSSESSION>
<PERFORM ,V?TAKE ,HORN>
<RTRUE>)
(<PRSO? ,ROOMS>
<TELL "If you want something take it." CR>)
(T
<TELL "Not necessarily." CR>)>>
<ROUTINE PRE-POUR ()
<RFALSE>
;<COND (<IN-SPACE?>
<TELL "There's no gravity!" CR>)>>
<ROUTINE V-POUR ()
<IMPOSSIBLES>>
<ROUTINE V-PULL-OVER ()
<HACK-HACK "Pulling">>
<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>)>
<TELL ,HUH>>
<ROUTINE PRE-PUT ()
<COND (<PRSI? ,GROUND>
<COND (<AND <EQUAL? ,HERE ,ATTIC>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<RFALSE>)>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<AND <PRSI? ,CEILING>
<EQUAL? ,HERE ,ATTIC>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<PRSO? ,HANDS>
<COND (<AND <VERB? PUT-ON PUT>
<FSET? ,PRSI ,PARTBIT>>
<RFALSE>)
(<VERB? PUT>
<PERFORM ,V?REACH-IN ,PRSI>
<RTRUE>)
(T
<IMPOSSIBLES>)>)
;(<AND <NOT <FSET? ,PRSI ,PARTBIT>>
<PLAYER-CANT-SEE>>
<RTRUE>)
(<HELD? ,PRSI ,PRSO>
;<COND (<AND <PRSO? ,BABY>
<PRSI? ,BLANKET>>
<TELL ,ALREADY-IS>)>
<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 <VERB? PUT-ON>
<PRSO? ,SOD>
<PRSI? ,HOLE>>
<RFALSE>)
(<UNTOUCHABLE? ,PRSI>
<CANT-REACH ,PRSI>)
(,IN-FRONT-FLAG ;"you dont have to have it"
<PERFORM ,V?PUT-IN-FRONT ,PRSO ,PRSI>
<RTRUE>)
(<IDROP>
<RTRUE>)>>
<ROUTINE V-PUT ()
<COND (<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>>>>
<TELL "How can you do that?" CR>)
(<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>)
(<FSET? ,PRSI ,ACTORBIT>
;<PRSI? ,STALLION ,BABY>
<TELL ,HUH>)
(<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>)
;(<AND <OR <PRSO? ,TORCH>
<HELD? ,TORCH ,PRSO>>
<FSET? ,TORCH ,ONBIT>
<PRSI? ,BASKET ,SACK>>
<DO-FIRST "extinguish" ,TORCH>)
;(<IN? ,PRSI ,ODD-MACHINE>
<TELL ,ONLY-ONE-THING-IN-COMPARTMENT>)
(T
<MOVE ,PRSO ,PRSI>
<FSET ,PRSO ,TOUCHBIT>
<TELL "Done." CR>)>>
<ROUTINE V-PUT-AGAINST ()
<WASTES>>
<ROUTINE V-PUT-BEHIND ()
<WASTES>>
<ROUTINE V-PUT-IN-FRONT ()
<WASTES>>
<ROUTINE V-PUT-NEAR ()
<WASTES>>
<ROUTINE V-PUT-ON ()
<COND (<PRSI? ,ME>
<PERFORM ,V?WEAR ,PRSO>
<RTRUE>)
(<FSET? ,PRSI ,SURFACEBIT>
<V-PUT>)
(<AND <FSET? ,PRSI ,ACTORBIT>
<FSET? ,PRSO ,WEARBIT>>
<TELL "But it's not" T ,PRSI"'s size." CR>)
(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 ()
<WASTES>>
<ROUTINE V-PUT-UNDER ()
<WASTES>>
<ROUTINE V-RAISE ()
<HACK-HACK "Playing in this way with">>
;<ROUTINE RETURN-TRUE>
<ROUTINE PRE-RAKE ()
<COND (<NOT <HELD? ,RAKE>>
<TELL ,YNH " a rake." CR>)>>
<ROUTINE V-RAKE ()
<COND (<NOT ,PRSI>
<SETG PRSI ,RAKE>)>
<COND (<PRSI? ,RAKE>
<WASTES>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-RAKE-OVER ()
<TELL "That would be excessively rakish behavior." CR>>
;<ROUTINE V-RAPE ()
<TELL "Unacceptably ungallant behavior." CR>>
<ROUTINE V-SRIDE-OBJECT-TO () ;"go to market in cart"
<PERFORM ,V?RIDE-OBJECT-TO ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-RIDE-OBJECT-TO ()
<COND (<NOT <IN? ,PROTAGONIST ,PRSO>> ;"ride obj to obj"
<PERFORM ,V?BOARD ,PRSO>
<COND (<IN? ,PROTAGONIST ,PRSO>
<PERFORM ,V?WALK-TO ,PRSI>)>
<RTRUE>)
(T
<PERFORM ,V?WALK-TO ,PRSI> ;"ride obj to obj"
<RTRUE>)>>
<ROUTINE V-RIDE-TO ("AUX" V)
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CART ,ICICLE>
<PERFORM ,V?WALK-TO ,PRSO>)
;(<SET V <FIND-IN ,HERE ,VEHBIT>>
;<SET V <FIND-IN ,HERE ,ACTORBIT>>
<PERFORM ,V?BOARD .V>
<COND (<AND <IN? ,PROTAGONIST .V>
<EQUAL? .V ,CART ,ICICLE>>
<PERFORM ,V?WALK-TO ,PRSO>)>)
(T
<TELL "There's nothing to ride." CR>)>
<RTRUE>>
<ROUTINE V-REACH-IN ("AUX" OBJ)
<SET OBJ <FIRST? ,PRSO>>
<COND (<OR <FSET? ,PRSO ,ACTORBIT>
<FSET? ,PRSO ,SURFACEBIT>
<NOT <FSET? ,PRSO ,CONTBIT>>>
<YUKS>)
(<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 "[PLACEHOLDER]" ;<GETP ,PRSO ,P?TEXT> CR>)
(T
<CANT-VERB-A-PRSO "read">)>>
<ROUTINE V-READ-BETWEEN ()
<CANT-VERB-A-PRSO "read between">>
<ROUTINE V-SREAD-TO ()
<PERFORM ,V?READ-TO ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-READ-TO ()
<COND (<OR <NOT <FSET? ,PRSO ,READBIT>>
<NOT <FSET? ,PRSI ,ACTORBIT>>>
<IMPOSSIBLES>)
(T
<TELL "Nice voice, but" T ,PRSO " is not soothed." CR>)>>
;<ROUTINE V-RELIEVE ()
<TELL ,HUH>>
<ROUTINE V-REMOVE ()
<COND (<FSET? ,PRSO ,WEARBIT>
<PERFORM ,V?TAKE-OFF ,PRSO>
<RTRUE>)
;(<AND <PRSO? ,HANDS>
,HAND-COVER>
<PERFORM ,V?UNCOVER ,HAND-COVER>
<RTRUE>)
;(<AND <PRSO? ,HANDS>
,RAFT-HELD>
<PERFORM ,V?DROP ,RAFT>
<RTRUE>)
(T
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)>>
<ROUTINE V-REVOLVE ("AUX" X)
<COND (<NOT <HELD? ,REVOLUTION>>
<TELL ,YNH AR ,REVOLUTION>)
(<OR <AND <PRSO? ,GLOBAL-ROOM>
<EQUAL? ,HERE ,ATTIC>>
<AND <PRSO? ,DUELING>
<NOUN-USED ,DUELING ,W?ATTIC>>>
<REMOVE ,REVOLUTION>
<UPDATE-SCORE>
<FSET ,ATTIC ,PHRASEBIT>
<QUEUE I-END-SCENE 1>
<TELL
"You get that long, drawn-out sudden feeling of movement in the pit of your
stomach as the attic begins tilting straight up to one side, and it continues
tilting until you're in a figurative sense literally climbing the walls
and fall...|
|
\"CRUNCH!\" Your shoulders slam softly against the hardwood floor">
<ROB ,PROTAGONIST ,HERE>
<COND (<G? <CCOUNT ,PROTAGONIST> 1>
<TELL
", and your belongings scatter neatly into a pile next to you">)
(<SET X <FIRST? ,PROTAGONIST>>
<TELL
", and" T .X " breaks its fall by landing on you">)>
<TELL
". Wobbly but with steadiness, you regain your feet. Wait! You can hear the
screeching voices of disembodied spirits converge in a fright and then
around the entrance to the manor, and then grow faint in the distance." CR>)
(T
<TELL
"What goes around comes around, and so it goes with" T ,PRSO ", which ends
up in exactly the same spot as it was before." CR>)>>
<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-RIDDLE ()
<COND (<EQUAL? ,P-PRSA-WORD ,W?FIDDLE>
<WASTES>)
(<VISIBLE? ,RIDDLE-BOOK>
<PERFORM ,V?READ ,RIDDLE-BOOK>
<RTRUE>)
(,PRSI
<RECOGNIZE>)
(T
<CANT-SEE <> "book">)>>
;<ROUTINE V-RIP ()
<COND (<PRSO? ,SCRAP-OF-PAPER ,CODED-MESSAGE ,MATCHBOOK ,MAP>
<WASTES>)
(T
<TELL "Unrippable." CR>)>>
<ROUTINE V-ROLL ()
<TELL "A rolling " D ,PRSO " gathers no moss." CR>>
<ROUTINE V-RUB ()
<PERFORM ,V?TOUCH ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SAVE-SOMETHING ()
<COND (<EQUAL? ,P-PRSA-WORD ,W?HELP>
<TELL "Sorry, but" T ,PRSO " is beyond help." CR>)
(T
<PERFORM ,V?HINT>
<RTRUE>)>>
<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>)
;(<RUNNING? ,I-SNEEZE>
<RIDDLE-ANSWER>)
;(<IN? ,HAREM-GUARD ,HERE>
<PICK-WIFE>)
;(<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?KWEEPA>
<V-KWEEPA>
<STOP>)
(<SET V <FIND-IN ,HERE ,ACTORBIT>>
<TELL "You must address" T .V " directly." CR>
<STOP>)
(T
<PERFORM ,V?TELL ,ME>
<STOP>)>>
<ROUTINE V-SCORE ("AUX" SC (SOME <>) (NUM 0))
<REPEAT ()
;"Mayor scene not in rank table"
<SET SC <PICK-NEXT ,RANK-TABLE>>
<COND (<EQUAL? .NUM 7>
<RETURN>)
(<NOT <ZERO? <GETP .SC ,P?SCENE-SCORE>>>
<SET SOME T>
<TELL-SCORE .SC>
<CRLF>)>
<SET NUM <+ .NUM 1>>>
<COND (<NOT <ZERO? <GETP ,EIGHT ,P?SCENE-SCORE>>>
<SET SOME T>
<TELL-SCORE ,EIGHT>
<CRLF>)>
<COND (<NOT .SOME>
<TELL "Zero." CR>)>
<RTRUE>>
<ROUTINE V-SEARCH ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<V-SHAKE>)
(<IN? ,PROTAGONIST ,PRSO>
<D-VEHICLE>)
(<OR <FSET? ,PRSO ,SCENEBIT>
<EQUAL? ,PRSO ,GRAIN>>
<TELL ,NOTHING-NEW>)
(<AND <FSET? ,PRSO ,CONTBIT>
<NOT <FSET? ,PRSO ,OPENBIT>>>
<DO-FIRST "open" ,PRSO>)
(<FSET? ,PRSO ,CONTBIT>
<TELL "You find">
<COND (<NOT <D-NOTHING>>
<TELL ,PERIOD>)>
<RTRUE>)
(T
<CANT-VERB-A-PRSO "search">)>>
<ROUTINE V-SSEARCH-OBJECT-FOR ()
<PERFORM ,V?SEARCH-OBJECT-FOR ,PRSI, PRSO>
<RTRUE>>
<ROUTINE V-SEARCH-OBJECT-FOR ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?SEARCH ,PRSO>
<RTRUE>)
(<AND <FSET? ,PRSO ,CONTBIT>
<NOT <FSET? ,PRSO ,OPENBIT>>>
<DO-FIRST "open" ,PRSO>)
(<OR <IN? ,PRSI ,PRSO>
<IN? ,PRSI ,HERE>>
<TELL "Very observant. There "
<COND (<FSET? ,PRSI ,FEMALEBIT> "she")
(<FSET? ,PRSI ,ACTORBIT> "he")
(T "it")>
" is." CR>)
(T
<TELL "You don't find" T ,PRSI " there." CR>)>>
<ROUTINE V-SEARCH-WITH ()
;<COND (<PRSI? ,COMB>
<PERFORM ,V?SEARCH ,PRSO>
<RTRUE>)>
<TELL
"It seems that" T ,PRSI " is no help in searching" TR ,PRSO>>
<ROUTINE V-SSET () ;"make obj out of obj"
<PERFORM ,V?SET ,PRSI ,PRSO>
<RTRUE>>
<GLOBAL TURN-KLUDGE <>>
<ROUTINE PRE-SET ()
<COND (<AND <EQUAL? ,P-PRSA-WORD ,W?TURN ,W?MAKE>
,PRSI
<GETP ,PRSO ,P?OLDDESC>>
<PUT ,P-NAMW 0 <GET ,P-NAMW 1>>
<PUT ,P-ADJW 0 <GET ,P-ADJW 1>>
<SETG TURN-KLUDGE T>
<PERFORM ,V?NO-VERB ,PRSI>
<SETG TURN-KLUDGE <>>
<RTRUE>)>>
<ROUTINE V-SET ()
<COND (<PRSO? ,ROOMS>
<WEE>)
(<NOT ,PRSI>
<COND (<EQUAL? <GET ,P-ITBL ,P-PREP1> ,PR?AROUND>
<PERFORM ,V?REVOLVE ,PRSO>
<RTRUE>)
(<OR <FSET? ,PRSO ,TAKEBIT>
<FSET? ,PRSO ,INTEGRALBIT>>
<HACK-HACK "Turning">)
(T
<TELL ,YNH TR ,PRSO>)>)
(<EQUAL? ,P-PRSA-WORD ,W?TURN ,W?MAKE>
<TELL
"It would take more than a turn of phrase to ">
<COND (<PRSO? ,PRSI>
<TELL "do that">)
(T
<TELL "turn" A ,PRSO " into" A ,PRSI>)>
<TELL ,PERIOD>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-SGIVE ()
<PERFORM ,V?GIVE ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SHAKE ("AUX" PERSON)
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "That wouldn't be polite." CR>)
;(<EQUAL? ,PRSO ,HANDS> ;"in hands-f"
<COND (<SET PERSON <FIND-IN ,HERE ,ACTORBIT "with">>
<PERFORM ,V?SHAKE-WITH ,PRSO .PERSON>
<RTRUE>)>)
(T
<HACK-HACK "Shaking">)>>
<ROUTINE V-SHAKE-WITH ()
<COND (<NOT ,PRSI>
<PERFORM ,V?SHAKE-WITH ,HANDS ,PRSO>
<RTRUE>)
(<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-SHINE ()
<COND (<EQUAL? ,HERE ,CLEARING>
<PUT ,P-NAMW 0 ,W?DOOR>
<PERFORM ,V?NO-VERB ,SHINING-DOOR>
<RTRUE>)
(<EQUAL? ,HERE ,SHORE>
<PUT ,P-NAMW 0 ,W?DOOR>
<PERFORM ,V?NO-VERB ,RHINES>
<RTRUE>)
(T
<PERFORM ,V?CLEAN ,PRSO>
<RTRUE>)>>
<ROUTINE V-SHOCK ()
<TELL "How?" CR>>
<ROUTINE V-SHOW ("AUX" ACTOR)
<COND (<AND <NOT ,PRSI>
<SET ACTOR <FIND-IN ,HERE ,ACTORBIT>>>
<PERFORM ,V?SHOW ,PRSO .ACTOR>
<RTRUE>)
(<NOT ,PRSI>
<TELL "There's no one here to show it to." CR>)
(T
<TELL
"It doesn't look like" T-IS-ARE ,PRSI "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-SIGN ()
<TELL ,YNH " a writing utensil." 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 ()
<WEE>>
<ROUTINE V-SLEEP ()
<TELL "You're not tired." CR>>
;<ROUTINE PRE-SMELL ()
<COND (<AND <FSET? ,NOSE ,MUNGBIT>
<NOT ,GONE-APE>>
<TELL ,YOU-CANT "smell a thing with " 'NOSE " blocked." CR>)>>
<ROUTINE V-SMELL ()
<COND (<NOT ,PRSO>
<TELL "Smells like..." CR>
<RTRUE>)
(T
<SENSE-OBJECT "smell">)>>
<ROUTINE V-SOW ()
<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-SRUB ()
<PERFORM ,V?RUB ,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>)
(<AND <EQUAL? ,P-PRSA-WORD ,W?GET> ;"for GET UP ON OBJECT"
,PRSO
<NOT <PRSO? ,ROOMS>>> ;"not GET UP"
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<FSET? <LOC ,PROTAGONIST> ,VEHBIT>
;<NOT <EQUAL? <LOC ,PROTAGONIST> ,TREE-HOLE ,CAGE>>
<PERFORM ,V?DISEMBARK <LOC ,PROTAGONIST>>
<RTRUE>)
(<AND ,PRSO
<FSET? ,PRSO ,TAKEBIT>
<EQUAL? ,P-PRSA-WORD ,W?STAND>>
<WASTES>)
(<AND <NOT <PRSO? ,ROOMS <>>>
<NOT <EQUAL? ,P-PRSA-WORD ,W?STAND>>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(T
<TELL "You're already standing." CR>)>>
<ROUTINE V-STAND-ON ()
;<COND (<PRSO? ,STOOL>
<PERFORM ,V?BOARD ,STOOL>
<RTRUE>)>
<WASTES>>
<ROUTINE V-STELL ()
<PERFORM ,V?TELL ,PRSI>
<RTRUE>>
<ROUTINE V-STHROW ()
<PERFORM ,V?THROW-TO ,PRSI ,PRSO>
<RTRUE>>
;<ROUTINE V-SUCKLE ()
<IMPOSSIBLES>>
;<ROUTINE V-SWHIP ()
<PERFORM ,V?WHIP ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SWIM ()
<COND (<OR <AND <EQUAL? ,HERE ,SHORE>
<NOT ,PRSO>>
<AND <EQUAL? ,HERE ,SHORE>
<PRSO? ,WATER>>>
<PERFORM ,V?SWIM ,RHINES>
<RTRUE>)
(<OR <PRSO? ,WATER>
<AND <NOT ,PRSO>
<GLOBAL-IN? ,WATER ,HERE>>>
<TELL "This is no time for">)
(T
<TELL "Your head must be">)>
<TELL " swimming." CR>>
<ROUTINE V-SWING ()
<COND (,PRSI
<PERFORM ,V?KILL ,PRSI ,PRSO>
<RTRUE>)
(T
<TELL "\"Whoosh.\"" CR>)>>
;"called from syntaxes that switch the prso and prsi"
<ROUTINE PRE-SWITCH ("AUX" I O IA OA)
<SET O <GET ,P-NAMW 0>>
<SET I <GET ,P-NAMW 1>>
<SET OA <GET ,P-ADJW 0>>
<SET IA <GET ,P-ADJW 1>>
<PUT ,P-NAMW 0 .I>
<PUT ,P-NAMW 1 .O>
<PUT ,P-ADJW 0 .IA>
<PUT ,P-ADJW 1 .OA>
<RFALSE>>
<ROUTINE V-SWRAP ()
<PERFORM ,V?WRAP ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE PRE-TAKE ()
<COND ;(<AND <NOT <FSET? ,PRSO ,PARTBIT>>
<PLAYER-CANT-SEE>>
<RTRUE>)
(<LOC-CLOSED>
<RTRUE>)
(<FSET? ,PRSO ,INTEGRALBIT>
;<EQUAL? ,PRSI <LOC ,PRSO>>
<RFALSE>)
(<AND <PRSO? ,HOT-TUB>
<NOUN-USED ,HOT-TUB ,W?PLUG>>
<RFALSE>)
(<IN? ,PROTAGONIST ,PRSO>
<TELL "You're ">
<COND (<FSET? ,PRSO ,INBIT>
<TELL "i">)
(T
<TELL "o">)>
<TELL "n it!" CR>)
(<AND <PRSO? ,HOUSE>
<HELD? ,HOUSE>
,LOUSE-ON-HEAD>
<RFALSE>)
;"moved to ITAKE so obj.s can transform"
;(<OR <IN? ,PRSO ,PROTAGONIST>
<AND <HELD? ,PRSO>
<NOT <FSET? ,PRSO ,TAKEBIT>>
<NOT <NOUN-USED ,PRSO ,W?CENT>>>>
<COND (<FSET? ,PRSO ,WORNBIT>
<TELL "You're already wearing">)
(T
<TELL "You already have">)>
<TELL T ,PRSO ,PERIOD>)
(<NOT ,PRSI>
<RFALSE>)
(<IN? ,PRSO ,PRSI>
<RFALSE>)
(<PRSO? ,ME>
<PERFORM ,V?DROP ,PRSI>
<RTRUE>)
(<AND <PRSO? ,ICE>
<PRSI? ,SIGN>
<EQUAL? ,HERE ,NEAR-POND>>
<RFALSE>)
(<AND <PRSO? ,DUCK>
<PRSI? ,WATER>>
<RFALSE>)
(<AND <PRSO? ,PAN-OF-KEYS>
<PRSI? ,PAN-OF-KEYS>>
<RFALSE>)
(<AND <PRSI? ,SHOULDER>
<NOT <EQUAL? <GET ,P-ADJW 1> ,W?MY>>>
<RFALSE>) ;"FOR, remove chip from her shoulder"
(<AND <IN? ,GRAIN-OF-SALT ,LOCAL-GLOBALS>
<PRSO? ,SALT-SHAKER> ;"for, GET GRAIN OF SALT FROM SHAKER"
<PRSI? ,SALT-SHAKER>>
<PERFORM ,V?SHAKE ,SALT-SHAKER>
<RTRUE>)
(<PRSI? ,FARM> ;"lead horse out of barn"
<RFALSE>)
(<NOT <IN? ,PRSO ,PRSI>>
<NOT-IN>)
(T
<SETG PRSI <>>
<RFALSE>)>>
<ROUTINE V-TAKE ()
<COND (<NOT <EQUAL? <ITAKE T> ,M-FATAL <>>>
<TELL "Taken." CR>)>>
<ROUTINE V-TAKE-OFF ()
<COND ;(<PRSO? ,ROOMS>
<TELL >
<RTRUE>)
(<FSET? ,PRSO ,WORNBIT>
<FCLEAR ,PRSO ,WORNBIT>
<THIS-IS-IT ,PRSO>
<TELL "You remove" TR ,PRSO>)
(<EQUAL? ,P-PRSA-WORD ,W?SHAKE>
<COND (<FSET? ,PRSO ,PARTBIT>
<TELL
"You shake it just about until you break it, but" T ,PRSO ", though numbed,
stays attached." CR>)
(T
<IMPOSSIBLES>)>)
(<FSET? ,PRSO ,VEHBIT>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(T
<TELL "You aren't wearing" TR ,PRSO>)>>
<ROUTINE V-TAKE-UNDER ()
<TELL "That phrase have the right ring to it." CR>>
<ROUTINE V-TAKE-WITH ()
<COND (<NOT <HELD? ,PRSO>>
<TELL ,YNH TR ,PRSO>)
(<PRSI? ,GRAIN-OF-SALT ,SALT-SHAKER>
<TELL
"Taking" T ,PRSO " lightly is par for the course, but it doesn't seem
to affect" T ,PRSI " one iota." CR>)
(T
<TELL "Sorry," T-IS-ARE ,PRSI "no help in getting" TR ,PRSO>)>>
<ROUTINE V-TASTE ()
<SENSE-OBJECT "taste">>
<ROUTINE V-STEACH ()
<PERFORM ,V?TEACH ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-TEACH ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<WASTES>)
(T
<IMPOSSIBLES>)>>
<ROUTINE PRE-TELL ()
;"was word AND, not a comma. EG, MINCE AND STAKE"
<COND (<AND ,AND-FLAG
<NOT <EQUAL? ,PRSO ,HAZING>>>
;<PREGNANT>
<TELL "You can't use \"and\" that way." CR>
<STOP>)
(<AND ,PICKED-FLAG
<NOT <EQUAL? ,PRSO ,PIPER>>>
<RECOGNIZE>)
(<AND <NOT <FSET? ,PRSO ,ACTORBIT>>
<NOT <PRSO? ,MAN-WOMAN ,HAZING ,ME>>>
<V-TELL>
<STOP>)>>
<ROUTINE V-TELL ()
<COND (<OR <FSET? ,PRSO ,ACTORBIT>
<PRSO? ,ME ,HAZING>> ;"jack and the bean stalk"
<COND (,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
"It seems" T ,PRSO " is unmoved by your politeness." CR>)
(T
<IMPOSSIBLES>)>>
<ROUTINE V-THROW ()
<COND (<NOT <SPECIAL-DROP>>
<COND ;(<EQUAL? ,HERE ,CANAL>
<PERFORM ,V?PUT ,PRSO ,CANAL-OBJECT>
<RTRUE>)
(,PRSI
<MOVE ,PRSO ,HERE>
<TELL "You missed." CR>)
(T
<MOVE ,PRSO ,HERE>
<THIS-IS-IT ,PRSO>
<TELL "Thrown." CR>)>)>>
;"idrop is not called first for v-throw-out"
<ROUTINE V-THROW-OUT ()
<COND (<OR <EQUAL? <GET ,P-ITBL ,P-PREP2> ,PR?WITH>
<NOT <GET ,P-ITBL ,P-PREP2> ,W?OF>>
<V-TAKE-UNDER>
;<PERFORM ,V?THROW ,PRSO>
;<CRLF>
;<PERFORM ,V?THROW ,PRSI>
;<RTRUE>)
(T
<PERFORM ,V?PUT-THROUGH ,PRSO ,PRSI>
<RTRUE>)>>
<ROUTINE V-THROW-TO ()
<COND (<FSET? ,PRSI ,ACTORBIT>
<PERFORM ,V?GIVE ,PRSO ,PRSI>
<RTRUE>)
(T
<PERFORM ,V?THROW ,PRSO ,PRSI>
<RTRUE>)>>
<ROUTINE V-TIE ()
<TELL "You can't tie" TR ,PRSO>>
<ROUTINE V-TIE-TOGETHER ()
<IMPOSSIBLES>>
<ROUTINE PRE-TOUCH ()
<COND (<UNTOUCHABLE? ,PRSO>
<CANT-REACH ,PRSO>
<RTRUE>)
(<AND <VERB? TOUCH>
,PRSI
<NOT <HELD? ,PRSI>>>
<TELL ,YNH TR ,PRSI>)
(<AND <VERB? TOUCH>
<PRSI? ,NEEDLE>>
<PERFORM ,V?KILL ,PRSO>
<RTRUE>)>>
<ROUTINE V-STOUCH ()
<PERFORM ,V?TOUCH ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-TOUCH ()
<COND (<LOC-CLOSED>
<RTRUE>)
(<AND <EQUAL? ,P-PRSA-WORD ,W?POKE>
<OR <FSET? ,PRSO ,ACTORBIT>
<PRSO? ,CAT-BAG>>>
<TELL
"That'd be worse than a poke in the eye with a sharp stick." CR>)
(<PROB 30>
<HACK-HACK "Touching">)
(<PROB 40>
<HACK-HACK "Keeping in touch with">)
(T
<HACK-HACK "Putting the touch on">)>>
<ROUTINE V-TURN-OBJECT-ON ()
<IMPOSSIBLES>>
<ROUTINE V-UNLOCK ()
<COND (<EQUAL? ,P-PRSA-WORD ,W?UNLOX>
<COND (<AND <NOT <FSET? ,LOCKS ,OLDBIT>>
<VISIBLE? ,LOCKS>>
<PERFORM ,V?TAKE ,LOCKS>
<RTRUE>)
(T
<CANT-SEE <> "lox">)>)
(,PRSI
<IMPOSSIBLES>)
(<FSET? ,PRSO ,LOCKEDBIT>
;<SETG AWAITING-REPLY 2>
;<QUEUE I-REPLY 2>
<TELL
"You must indicate what to unlock" T ,PRSO " with." CR>)
(<OR <FSET? ,PRSO ,DOORBIT>
<EQUAL? ,PRSO ,SAFE>>
<TELL "But" T ,PRSO " isn't locked." CR>)
(T
<YUKS>)>>
<ROUTINE V-UNPLUG ()
<IMPOSSIBLES>>
<ROUTINE V-UNTIE ()
<IMPOSSIBLES>>
<ROUTINE V-UPSET ()
<TELL "Well," T ,PRSO " doesn't seem too upset." CR>>
<ROUTINE V-USE ()
<TELL
,YOULL-HAVE-TO "be more specific about how you want to use" TR ,PRSO>>
;<ROUTINE V-USE-QUOTES ()
<COND (<IN? ,HAREM-GUARD ,HERE>
<PICK-WIFE ,PRSO>)
(T
<SEE-MANUAL "say something \"out loud.\"">)>>
<ROUTINE V-VENT ()
<COND (<AND <FSET? ,PRSI ,ACTORBIT>
<PRSO? ,SPLEEN>>
<PERFORM ,V?KILL ,PRSI>
<RTRUE>)
(T
<IMPOSSIBLES>)>>
;<ROUTINE V-VOMIT ()
<COND (<AND <IN? ,PIZZA ,HERE>
<FSET? ,PIZZA ,TOUCHBIT>>
<TELL "Just keep trying to eat that " D ,PIZZA ,PERIOD>)
(T
<TELL
"You stick a finger down your throat, but to no avail." CR>)>>
<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> ;"caused 0 arg bug in pre-walk-to"
<V-WALK-AROUND>
<RTRUE>)
(<AND <PRSO? ,P?OUT>
<IN-EXITABLE-VEHICLE?>>
<RTRUE>)
(<AND <PRSO? ,P?IN>
<NOT <GETPT ,HERE ,P?IN>>
<SET VEHICLE <FIND-IN ,HERE ,VEHBIT>>
<NOT <HELD? .VEHICLE>>>
<PERFORM ,V?BOARD .VEHICLE>
<RTRUE>)
(<FSET? .AV ,VEHBIT>
;<NOT <EQUAL? .AV ,ICICLE>> ;"cant go up to cloud on it"
<NOT-GOING-ANYWHERE>)
(<SET PT <GETPT ,HERE ,PRSO>>
<COND (<EQUAL? <SET PTS <PTSIZE .PT>> ,UEXIT>
<GOTO <;GETB GET .PT ,REXIT>>) ;"zip to ezip"
(<EQUAL? .PTS ,NEXIT>
<TELL <GET .PT ,NEXITSTR> CR>
<RFATAL>)
(<EQUAL? .PTS ,FEXIT>
<COND (<SET RM <APPLY <GET .PT ,FEXITFCN>>>
;<COND (<EQUAL? .RM ,ROOMS> ;"catacomb fake-move"
<RTRUE>)>
<GOTO .RM>)
(T
<RFATAL>)>)
(<EQUAL? .PTS ,CEXIT>
<COND (<VALUE <GETB .PT ,CEXITFLAG>>
<GOTO <;GETB GET .PT ,REXIT>>) ;"zip to ezip"
(<SET STR <GET .PT ,CEXITSTR>>
<TELL .STR CR>
<RFATAL>)
(T
<TELL ,CANT-GO>
<RFATAL>)>)
(<EQUAL? .PTS ,DEXIT>
<COND (<FSET? <SET OBJ <;GETB GET .PT ,DEXITOBJ>> ,OPENBIT>
<GOTO <;GETB GET .PT ,REXIT>>) ;"zip to ezip"
(<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>)>
<V-WALK-AROUND>
<RFATAL>)>>
<ROUTINE V-WATCH-GROW ()
<TELL "Well," T ,PRSO " doesn't seem to grow much." CR>>
<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 ()
<TELL
"[Refer to the top of the screen to find out where you can go.]" CR>>
<ROUTINE PRE-WALK-TO (AUX L)
<SET L <META-LOC ,PRSO>>
<COND (<EQUAL? ,PRSO ,START-OBJ>
<RFALSE>)
;(<AND <NOT <IN? ,PROTAGONIST ,HERE>>
<OR <NOT <LOC ,PROTAGONIST> ,ICICLE ,CART>>
<EQUAL? ,P-PRSA-WORD ,W?RUN ,W?WALK>>
<NOT-GOING-ANYWHERE>)
(<AND <FSET? ,PRSO ,SCENEBIT>
<NOT <PRSO? ,SCENE>>>
<CANT-GET-THERE>)
(<AND <GLOBAL-IN? ,RESTAURANT ,HERE>
<PRSO? ,RESTAURANT>
<NOUN-USED ,RESTAURANT ,W?KITCHEN>>
<RFALSE>) ;"handled in restaurant-f"
(<OR <IN? ,PRSO ,HERE>
<AND <GLOBAL-IN? ,PRSO ,HERE>
<NOT <EQUAL? ,PRSO ,AISLE ,FARM ,EIGHT ,DUELING
,HAZING ,COMEDY>>>>
;"could be another aisle"
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "He's">)
(T
<TELL "It's">)>
<TELL " here!" CR>)
;(<AND .L ;"L = META-LOC, MUSTN'T BE FALSE"
<IN? <META-LOC ,PRSO> ,ROOMS>
<NOT <EQUAL? <META-LOC ,PRSO> ,HERE>>
<EQUAL? ,SCENE ,AISLE>>
<TELL "You run..." CR CR>
<GOTO <META-LOC ,PRSO>>
<CRLF>
<APPLY <GETP ,PRSO ,P?ACTION>> ;"to AISLE object also: handled"
<RTRUE>)>>
<ROUTINE V-WALK-TO ()
;<COND
(<IN? <META-LOC ,PRSO> ,ROOMS>
<COND (<EQUAL? ,SCENE ,AISLE>
<GOTO <META-LOC ,PRSO>>)>)>
<COND (<AND <PRSO? ,START-OBJ>
<NOUN-USED ,START-OBJ ,W?BEGINNING ,W?BEGIN>>
<RE-BEGIN>
<RTRUE>)
(<OR <AND <FSET? ,PRSO ,SCENEBIT>
<NOT <EQUAL? ,PRSO ,SCENE>>>
<PRSO? ,START-OBJ>>
<CANT-GET-THERE>)
(T
<V-WALK-AROUND>)>>
<ROUTINE CANT-GET-THERE ()
<TELL "You can't get there from here." CR>>
<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 V-WAIT-FOR ()
<COND (<VISIBLE? ,PRSO>
<V-FOLLOW>)
(T
<TELL "You may be waiting quite a while." CR>)>>
<ROUTINE V-WAVE ()
<COND (<AND ,PRSI
<NOT ,IN-FRONT-FLAG>>
<RECOGNIZE>)
(<HELD? ,PRSO>
<WASTES>)
(T
<TELL ,YNH TR ,PRSO>)>>
<ROUTINE PRE-WEAR ()
<COND (<EQUAL? <GET ,P-NAMW 0> ,W?SHOE ,W?SHOES>
<RFALSE>)
(<NOT <HELD? ,PRSO>>
<TELL ,YNH TR ,PRSO>)
(T
<RFALSE>)>>
<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-WHATS-GOOD ()
<TELL "Yes, true." CR>>
<ROUTINE V-WHERE ()
<V-FIND T>>
<ROUTINE V-WHO ()
<COND (<NOT ,PRSO>
<TELL "You." CR>)
(<AND <RUNNING? ,I-KNOCK>
<EQUAL? ,KNOCK-N 1 2>>
<COND (<EQUAL? ,KNOCK-JOKE ,W?BOB>
<COND (<AND <EQUAL? ,KNOCK-N 1>
<PRSO? ,GLOBAL-ROOM>>
<INC KNOCK-N>
<TELL "\"Bob.\"" CR>)
(<AND <EQUAL? ,KNOCK-N 2>
<PRSO? ,BOB>
<NOUN-USED ,BOB ,W?BOB>>
<UPDATE-SCORE>
<SETG KNOCK-JOKE <>>
<SETG KNOCK-N 3>
<QUEUE I-KNOCK 2>
<MOVE ,BOB ,FRONT-ROOM>
<TELL
"\"Ba ba ba, ba ba ba-ran....\"|
|
The door swings open and in walks your
irrepressible, long-lost (\"but not long enough\") brother-in-law Bob.
\"Howdy, Sammy! Just flew in from Pittsburgh. Boy are my arms tired,\"
he says, flapping and smiling goonily. Bob extends his hand to you in
greeting..." CR>)
(T
<V-WHAT>)>)
(<EQUAL? ,KNOCK-JOKE ,W?DWAYNE>
<COND (<AND <EQUAL? ,KNOCK-N 1>
<PRSO? ,GLOBAL-ROOM>>
<INC KNOCK-N>
<TELL "\"Dwayne.\"" CR>)
(<AND <EQUAL? ,KNOCK-N 2>
<PRSO? ,BOB>
<NOUN-USED ,BOB ,W?DWAYNE>>
<DEQUEUE I-KNOCK>
<UPDATE-SCORE>
<SETG KNOCK-JOKE <>>
<SETG KNOCK-N 0>
<MOVE ,BOB ,YOUR-CHAIR>
<TELL
"\"Dwayne the bathtub, I'm dwownin'!\"" CR CR>
<COND (<IN? ,PROTAGONIST ,YOUR-CHAIR>
<MOVE ,PROTAGONIST ,HERE>
<SETG OLD-HERE T>
<TELL
"Following the script, you rise emotionally from the chair and">)
(T
<TELL "You">)>
<TELL
" hear a suppressed cackle from behind the
bathroom door, which slowly opens to reveal the figure of your Bob,
looking sheepish but with his hurt feelings mended. He shuts the door
and slides back into your chair." CR>)
(T
<V-WHAT>)>)
(<EQUAL? ,KNOCK-JOKE ,W?GORILLA>
<COND (<AND <EQUAL? ,KNOCK-N 1>
<PRSO? ,GLOBAL-ROOM>>
<INC KNOCK-N>
<TELL "\"Gorilla.\"" CR>)
(<AND <EQUAL? ,KNOCK-N 2>
<PRSO? ,WIFE>
<NOUN-USED ,WIFE ,W?GORILLA>>
<DEQUEUE I-KNOCK>
<SETG KNOCK-JOKE <>>
<SETG KNOCK-N 0>
<UPDATE-SCORE>
<MOVE ,WIFE ,FRONT-ROOM>
<QUEUE I-WIFE -1>
<TELL
"\"Girl of your dreams!\"|
|
A lady enters the living room and, narrowing her eyes, begins sizing up the
situation." CR>)
(T
<V-WHAT>)>)
(T
<V-WHAT>)>)
(T
<V-WHAT>)>>
<ROUTINE V-WRAP ()
<WASTES>>
<ROUTINE V-YELL ()
<SORE "throat">
<STOP>>
<ROUTINE I-REPLY ()
<FCLEAR ,OLD-BOTTLE ,HEARDBIT>
<SETG AWAITING-REPLY <>>
<RFALSE>>
<GLOBAL AWAITING-REPLY <>>
<ROUTINE V-YES ()
<COND (<EQUAL? ,AWAITING-REPLY 1>
<COND (<FSET? ,OLD-BOTTLE ,HEARDBIT>
<MOVE ,OLD-BOTTLE ,MANTEL>
<UPDATE-SCORE>
<TELL
"Mmmmm. You know I really think you might be right. Yes, yes, the cherished
memento look.|
|
You carefully place the antique bottle upon the mantel.|
|
Yes, heavens yes, it really ">
<ITALICIZE "says">
<TELL
" something there. Oh, such a prized antique, what could I ">
<ITALICIZE "ever">
<SETG ORPHAN-FLAG ,LOUIS-CHAIR>
<QUEUE I-ORPHAN 2>
<TELL " give you in return?">)
(T
<TELL "Oh, you really think so? I must disagree.">)>
<CRLF>)
;(<EQUAL? ,AWAITING-REPLY 2>
<TELL"Well, I have ">
<ITALICIZE "experienced">
<TELL
" such insolence such I have just heard. Okay, smart aleck, see if you can
do better describing things. Ummm.... Let's see....
||
>EXAMINE THE MANTEL">
<SAVE-INPUT ,FIRST-BUFFER>)
;(T
<TELL "That was just a rhetorical question." 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 (<FSET? ,PRSO ,INTEGRALBIT>
<COND (.VB
<PART-OF>)>
<RFATAL>)
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<COND (.VB
<YUKS>)>
<RFATAL>)
(<PRE-TOUCH>
<RFATAL>)
;"next clause used to be in pre-take"
(<OR <IN? ,PRSO ,PROTAGONIST>
<AND <HELD? ,PRSO>
<NOT <FSET? ,PRSO ,TAKEBIT>>
<NOT <NOUN-USED ,PRSO ,W?CENT>>>>
<COND (.VB
<COND (<FSET? ,PRSO ,WORNBIT>
<TELL "You're already wearing">)
(T
<TELL "You already have">)>
<TELL T ,PRSO ,PERIOD>)>
<RFATAL>)
(<AND <NOT <HELD? ,PRSO>>
<G? <+ <WEIGHT ,PRSO> <WEIGHT ,PROTAGONIST>> 100>>
<COND (.VB
<TELL
"It's too heavy, considering your current load." CR>)>
<RFATAL>)
(<G? <CCOUNT ,PROTAGONIST> 10>
<COND (.VB
<TELL
"You're already juggling as many items as you could 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>)>)
(<AND <VERB? THROW>
<PRSO? ,EYES>>
<COND (<NOT ,PRSI>
<COND (<VISIBLE? ,WAITRESS>
<SETG PRSI ,WAITRESS>)
(T
<V-LOOK>
<RTRUE>)>)>
<PRE-SWITCH>
<PERFORM ,V?EXAMINE ,PRSI ,EYES>
<RTRUE>)
(<AND <PRSO? ,MUSSELS>
<NOT <FSET? ,MUSSELS ,OLDBIT>>>
<TELL "That would be extremely painful." CR>)
(<AND <PRSO? ,ME>
<VERB? PUT>
<FSET? ,PRSI ,ACTORBIT>>
<PERFORM ,V?BOARD ,PRSI>
<RTRUE>)
(<AND <VERB? GIVE>
<PRSO? ,LOBOTOMY>>
<RFALSE>)
(<AND <PRSI? ,ME>
<VERB? PUT>
<FSET? ,PRSO ,ACTORBIT>>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<PRSO? ,INTNUM> ;"intnum-f will 'cant see' number"
<RFALSE>)
(<IN? ,JOAT ,GLOBAL-OBJECTS>
;<VISIBLE? ,JACK-IS>
<RFALSE>)
(<NOT <HELD? ,PRSO>>
<COND (<OR <PRSO? ,ME>
<FSET? ,PRSO ,PARTBIT>>
<IMPOSSIBLES>)
(<AND <PRSO? ,BOB>
<EQUAL? <GET ,P-NAMW 0> ,W?SPONGE>>
<RFALSE>) ;"handled in bob-f"
(T
<TELL
"That's easy for you to say since you don't even have" TR ,PRSO>)>
<RFATAL>)
(<AND <EQUAL? ,PRSO ,ELECTRICAL-SWITCH>
<VERB? THROW>
<NOT ,PRSI>>
<RFALSE>)
(<AND <VERB? PUT>
<PRSO? ,CLOCK-KEY>
<PRSI? ,SAFE>>
<PERFORM ,V?UNLOCK ,SAFE ,CLOCK-KEY>
<RTRUE>)
(<FSET? ,PRSO ,INTEGRALBIT>
<PART-OF>)
(<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>)
(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"
<GLOBAL FIRST-TIME <>> ;"if T room is being decribed the first time.
set to <> in start of parser"
<GLOBAL ROOM-DESC-PRINTED <>> ;"if T room desc is printed in this turn,
set to <> in parser"
<ROUTINE D-ROOM ("OPTIONAL" (VERB-IS-LOOK <>)
"AUX" (FIRST-VISIT <>) (NUM 0))
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
;<FSET ,HERE ,TOUCHBIT>
<SET FIRST-VISIT T>
<SETG FIRST-TIME T>)>
<COND (<NOT ,KREMLIN-ENTER>
<HLIGHT ,H-BOLD>
<SAY-HERE>
;<CRLF> ;"cause of previous bug"
<HLIGHT ,H-NORMAL>
<CRLF>)>
<COND (<OR .VERB-IS-LOOK
<EQUAL? ,VERBOSITY 2>
<AND .FIRST-VISIT
<EQUAL? ,VERBOSITY 1>>>
<SETG ROOM-DESC-PRINTED T>
<CRLF>
<COND (<NOT <APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>>
<TELL <GETP ,HERE ,P?LDESC>>)>
<FSET ,HERE ,TOUCHBIT>
<CRLF>)>
<SETG KREMLIN-ENTER <>>
<RTRUE>>
;"Print FDESCs, then DESCFCNs and LDESCs, then everything else. DESCFCNs
must handle M-OBJDESC? 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 D-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 CR .STR> ;"used to be indent"
<COND (<AND <FSET? .O ,CONTBIT>
<NOT <FSET? .O ,NO-D-CONT>>> ;"added"
<D-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>>>
;" *** make sure descfcns rtrue, after printing!"
;<CRLF> ;"CRLF before! a descfcn in j3"
<COND (<AND <FSET? .O ,CONTBIT>
<N==? .STR ,M-FATAL>
<NOT <FSET? .O ,NO-D-CONT>>> ;"added"
<D-CONTENTS .O T <+ ,D-ALL? ,D-PARA?>>)>
<CRLF>)
(<SET STR <GETP .O ,P?LDESC>>
<TELL CR .STR> ;"used to be indent"
<COND (<AND <FSET? .O ,CONTBIT>
<NOT <FSET? .O ,NO-D-CONT>>
<OR <NOT <FSET? .O ,NO-D-CONT>> ;"added"
<NOT <FSET? .O ,DESC-IN-ROOMBIT>>>>
;"rest-table case"
<D-CONTENTS .O T <+ ,D-ALL? ,D-PARA?>>)>
<CRLF>)>
<SET O <NEXT? .O>>>
<D-CONTENTS ,HERE <> 0>
<COND (<AND .AV <NOT <EQUAL? ,HERE .AV>>>
<D-CONTENTS .AV <> 0>)>>
<CONSTANT D-ALL? 1> ;"print everything?"
<CONSTANT D-PARA? 2> ;"started paragraph?"
"<D-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 D-CONTENTS (OBJ "OPTIONAL" (LEVEL -1) (ALL? ,D-ALL?)
"AUX" (F <>) N (1ST? T) (IT? <>)
(START? <>) (TWO? <>) (PARA? <>))
<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 <FSET? .OBJ ,CONTBIT>
;<NOT <FSET? .OBJ ,NO-D-CONT>> ;"used above"
<OR <FSET? .OBJ ,OPENBIT>
<FSET? .OBJ ,TRANSBIT>>
<FSET? .OBJ ,SEARCHBIT>
.N>>
<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>>
;<CRLF>)>;"used to be indent"
<SET PARA? T>)
(<EQUAL? .LEVEL T>
<TELL " ">)>
<COND (<EQUAL? .OBJ ,HERE>
<TELL CR ,YOU-SEE>)
(<EQUAL? .OBJ ,PROTAGONIST>
<TELL "You have">)
(<FSET? .OBJ ,SURFACEBIT>
<TELL CR "Sitting on" T .OBJ>
<COND (<AND <OR <EQUAL? <CCOUNT .OBJ>
1>
<AND
<EQUAL? <CCOUNT .OBJ>
2>
<IN? ,PROTAGONIST
.OBJ>>>
<NOT <FSET? <FIRST? .OBJ>
,PLURALBIT>>>
<TELL " is">)
(T
<TELL " are">)>)
(T
<TELL CR ,IT-SEEMS-THAT T .OBJ>
<COND (<FSET? .OBJ ,ACTORBIT>
<TELL " has">)
(T
<TELL " contains">)>)>)>)
(<NOT <EQUAL? .LEVEL -1>>
<TELL .LEVEL>)>)
(T
<COND (.N
<TELL ",">)
(T
<TELL " and">)>)>
<COND (<AND <EQUAL? .F ,DISGUISE>
<IN? ,BLESSING ,DISGUISE>>
<TELL " a blessing in disguise">)
(T
<TELL A .F>)>
<COND (<AND <EQUAL? .F ,HOUSE>
,LOUSE-ON-HEAD>
<TELL " (crawling about on your skull)">)
(<FSET? .F ,WORNBIT>
;<COND (<EQUAL? .F ,CLOTHES-PIN>
<TELL " (pinned to " 'NOSE ")">)>
<TELL " (being worn)">)
(<EQUAL? .F ,ITEM-BOUGHT>
<TELL " (bought and paid for)">)
;(<FSET? .F ,ONBIT>
<TELL " (providing light)">)
;(<EQUAL? .F ,COMIC-BOOK>
<TELL " (stuck in your back pocket)">)>
<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?>
;<SET 1ST? <>>
<TELL " nothing">
<RFALSE>)>
<COND (<AND <NOT .1ST?>
<EQUAL? .LEVEL <> T>>
<COND (<EQUAL? .OBJ ,HERE>
<TELL " here">)>
<TELL ".">)>
<RETURN>)>>
<SET F <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .F>
<RETURN>)
(<AND <FSET? .F ,CONTBIT>
<DESCRIBABLE? .F T>
<NOT <FSET? .F ,NO-D-CONT>> ;"for things with
a simple desc"
<OR <BTST .ALL? ,D-ALL?>
<SIMPLE-DESC? .F>>>
<COND (<D-CONTENTS .F T
<COND (.PARA?
<+ ,D-ALL? ,D-PARA?>)
(T
,D-ALL?)>>
<SET 1ST? <>>
<SET PARA? T>)>)>
<SET F <NEXT? .F>>>
<COND (<AND <NOT .1ST?>
<EQUAL? .LEVEL <> T>
<EQUAL? .OBJ ,HERE <LOC ,WINNER>>>
<CRLF>)>
<NOT .1ST?>)>>
<ROUTINE DESCRIBABLE? (OBJ "OPT" (CONT? <>))
<COND (<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
(<AND <FSET? .OBJ ,FIRST-TIMEBIT>
,FIRST-TIME> ;"obj. described in JUST first M-look of room"
<RFALSE>)
(<AND <FSET? .OBJ ,DESC-IN-ROOMBIT>
,ROOM-DESC-PRINTED> ;"obj. ALWAYS described in room-desc"
<RFALSE>) ;"but if no room desc printed will"
(<EQUAL? .OBJ ,WINNER> ;"print 'theres a schmoo here'"
<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-OBJDESC?>>
<RFALSE>)
(<GETP .OBJ ,P?LDESC>
<RFALSE>)
(T
<RTRUE>)>>
<ROUTINE D-VEHICLE () ;"for LOOK AT/IN vehicle when you're in it"
<COND (<PRSO? ,HOT-TUB>
<COND (<AND <IN? ,MERMAID ,HOT-TUB>
<NOT <EQUAL? <GET ,P-NAMW 0> ,W?PLUG>>>
<TELL
"The mermaid is swimming circles around you in the well-insulated hot
tub, her long silken blond hair streaming through the steamy water. ">)
(<NOT <EQUAL? <GET ,P-NAMW 0> ,W?PLUG>>
<TELL
"The well-insulated tub's full of hot steamy water and you. ">)>
<TELL "There's a plug at the bottom of the hot tub." CR>)
(T
<TELL "Other than yourself, you can see">
<COND (<NOT <D-NOTHING>>
<COND (<FSET? ,PRSO ,INBIT>
<TELL " in">)
(T
<TELL " on">)>
<TELL TR ,PRSO>)>
<RTRUE>)>>
<ROUTINE D-NOTHING ()
<COND (<D-CONTENTS ,PRSO 2>
<COND (<NOT <IN? ,PROTAGONIST ,PRSO>>
<CRLF>)>
<RTRUE>)
(T ;"nothing"
<RFALSE>)>>
;"subtitle movement and death"
<CONSTANT REXIT 0> ;"changed to amvf-numbers from lgop constant numbers"
<CONSTANT UEXIT 2>
<CONSTANT NEXIT 3>
<CONSTANT FEXIT 4>
<CONSTANT CEXIT 5>
<CONSTANT DEXIT 6>
<CONSTANT NEXITSTR 0> ;"changed to amvf-numbers from lgop constant numbers"
<CONSTANT FEXITFCN 0>
<CONSTANT CEXITFLAG 1>
<CONSTANT CEXITSTR 1>
<CONSTANT DEXITOBJ 1>
<CONSTANT DEXITSTR 2>
<ROUTINE GOTO (NEW-LOC "AUX" OLD-HERE)
<SET OLD-HERE ,HERE>
;"if your in not moveable veh. it will be caught in PRE-WALK-TO"
<COND (<NOT <FSET? <LOC ,PROTAGONIST> ,VEHBIT>>
<MOVE ,PROTAGONIST .NEW-LOC>)>
;"if player wants to move with veh., move the veh before this"
<COND (<IN? .NEW-LOC ,ROOMS>
<SETG HERE .NEW-LOC>)
(T
<SETG HERE <LOC .NEW-LOC>>)>
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
<COND (<AND <D-ROOM>
<NOT <EQUAL? ,VERBOSITY 0>>>
<D-OBJECTS>)>
<RTRUE>>
;<ROUTINE SIDEKICK-FOLLOWS-YOU ()
<COND (<EQUAL? ,HERE ,BOUDOIR>
<MOVE ,SIDEKICK ,HERE>)
(T
<MOVE ,SIDEKICK <LOC ,PROTAGONIST>>)>
<COND (,HOLE-MOVE
<TELL " A few seconds later, you ">
<COND (<LIT? ,HERE>
<TELL "see ">)
(T
<TELL "feel ">)>
<TELL
D ,SIDEKICK "'s " <PICK-ONE ,SIDEKICK-PARTS> " appear,
followed almost immediately by the rest of ">
<HIM-HER>
<TELL ,PERIOD>)
(T
<NORMAL-SIDEKICK-FOLLOW>)>>
;<ROUTINE NORMAL-SIDEKICK-FOLLOW ()
<TELL " " D ,SIDEKICK <PICK-ONE ,FOLLOWS> CR>>
;<GLOBAL SIDEKICK-PARTS
<LTABLE
0
"earlobe"
"nose"
"big toe"
"elbow"
"left buttock">>
;<GLOBAL FOLLOWS
<LTABLE
0
" trails along."
" follows you."
" enters just a few steps behind you."
" loyally stays at your side.">>
<ROUTINE JIGS-UP (DESC)
<TELL .DESC>
<TELL CR CR
" **** You have died ****" 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 ,PROTAGONIST>
<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 four clauses are special cases"
(<OR <HELD? .OBJ ,SAFE>
<EQUAL? .OBJ ,MARX ,SAFE>>
<COND (<IN? ,PROTAGONIST ,LOUIS-CHAIR>
<RFALSE>)
(T
<RTRUE>)>)
(<AND <OR <IN? .OBJ ,REST-TABLE>
<EQUAL? .OBJ ,REST-TABLE>>
<IN? ,PROTAGONIST ,REST-CHAIR>>
<RFALSE>)
(<AND <EQUAL? .OBJ ,FIRE>
<IN? ,PROTAGONIST ,PAN>>
<RFALSE>)
(<IN? ,PROTAGONIST ,HERE>
<RFALSE>)
(<OR <HELD? .OBJ <LOC ,PROTAGONIST>>
<EQUAL? .OBJ <LOC ,PROTAGONIST>>
<IN? .OBJ ,GLOBAL-OBJECTS> ;"me, hands, etc.">
<RFALSE>)
(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 others 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 GET .TEE ,DEXITOBJ> .DOBJ>>
;"zip to ezip"
<RETURN .P>)>)>>>
<ROUTINE HELD? (OBJ "OPTIONAL" (CONT <>)) ;"formerly ULTIMATELY-IN?"
<COND (<NOT .CONT>
<SET CONT ,PROTAGONIST>)>
<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>>
<INTBL? .OBJ1 .TEE </ <PTSIZE .TEE> 2>>)>>
;"zip to ezip"
<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 " 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>
<NOT <EQUAL? .L ,CAT-BAG>>>
<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 ROB (WHO "OPTIONAL" (WHERE <>) "AUX" N X)
<SET X <FIRST? .WHO>>
<REPEAT ()
<COND (<ZERO? .X>
<RETURN>)>
<SET N <NEXT? .X>>
<MOVE .X .WHERE>
<FCLEAR .X ,WORNBIT>
<SET X .N>>>
;<ROUTINE WRONG-SEX-WORD (OBJ MALE-WORD FEMALE-WORD)
<COND (<NOT ,SEX-CHOSEN>
<RFALSE>)
(<OR <AND ,MALE
<NOUN-USED .FEMALE-WORD .OBJ>>
<AND <NOT ,MALE>
<NOUN-USED .MALE-WORD .OBJ>>>
<TELL "There's no">
<COND (<EQUAL? .OBJ ,SIDEKICK>
<TELL " one by that name">)
(<PRSO? .OBJ>
<PRSO-PRINT>)
(T
<PRSI-PRINT>)>
<TELL " here.">
<COND (<NOT <EQUAL? ,NAUGHTY-LEVEL 0>>
<TELL
" [I see you've been playing both as a male and as a female! I guess
you're the type who goes both ways, eh? Nudge, nudge, wink, wink!]">)>
<SETG P-WON <>>
<CRLF>)
(T
<RFALSE>)>>
<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 a concept."
"Nice try."
"You've gotta be kidding."
"Never in a thousand years.">>
<ROUTINE IMPOSSIBLES ()
<TELL <PICK-ONE ,IMPOSSIBLE-LIST> CR>>
<GLOBAL IMPOSSIBLE-LIST
<LTABLE
0
"Fat chance."
"Imposterous!"
"Dream on."
"Prepossible!"
"No dice."
"Out of the question.">>
<ROUTINE WASTES ()
<TELL <PICK-ONE ,WASTE-LIST> CR>>
<GLOBAL WASTE-LIST
<LTABLE 0
"You're barking up the wrong tree."
"It's not worth it. Believe me."
"There's no utility in doing that."
"There's another turn down the drain."
"Why bother?">>