leathergoddesses/venus.zil

1560 lines
46 KiB
Plaintext

"VENUS for
LEATHER GODDESSES OF PHOBOS
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
<OBJECT VENUS
(IN LOCAL-GLOBALS)
(DESC "Venus")
(SYNONYM VENUS)
(FLAGS NARTICLEBIT)
(ACTION VENUS-F)>
<ROUTINE VENUS-F ()
<COND (<VERB? EXAMINE>
<V-LOOK>)
(<VERB? LEAVE DISEMBARK EXIT>
<TELL "How?" CR>)>>
<ROOM JUNGLE
(IN ROOMS)
(DESC "Jungle")
(EAST TO FORK-OF-SORTS)
(WEST PER PASS-FLYTRAP-F)
(FLAGS RLANDBIT ONBIT)
(GLOBAL TREE VENUS)
(ACTION JUNGLE-F)>
<ROUTINE JUNGLE-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<IN? ,FLYTRAP ,HERE>>
<QUEUE I-FLYTRAP -1>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"You are surrounded by hot, steamy, primitive rain forest. Judging by the
overpowering heat, the excessive humidity, and ">
<COND (<IN? ,FLYTRAP ,HERE>
<TELL
"especially by the gigantic " 'FLYTRAP " sidling your way, ">)
(T
<TELL "the odd flora, ">)>
<TELL
"you must be in the death-clogged jungles of Venus.|
A path runs east-west through the jungle">
<COND (<IN? ,FLYTRAP ,HERE>
<TELL
", but don't even think about going west unless you love
wading into four tons of ">
<COND (<NOT ,MALE>
<TELL "wo">)>
<TELL "man-eating lettuce">)>
<TELL ".">)>>
<ROUTINE PASS-FLYTRAP-F ()
<COND (<IN? ,FLYTRAP ,HERE>
<TELL
"Despite being warned, you walk right into the orifice of the " 'FLYTRAP ". ">
<FLYTRAP-DEATH>)
(<EQUAL? ,HERE ,JUNGLE>
,SPAWNING-GROUND)
(T
,JUNGLE)>>
<ROUTINE FLYTRAP-DEATH ()
<TELL
"A little known fact about " 'FLYTRAP "s: they secrete an enzyme which
stimulates the pleasure centers of their victim. Hence, you experience ">
<COND (<EQUAL? ,NAUGHTY-LEVEL 0>
<TELL
"a feeling similar to eating a really good hot fudge sundae">)
(T
<TELL "multiple orgasms">)>
<JIGS-UP
" as your flesh is quietly dissolved away. What a way to go.">>
<OBJECT FLYTRAP
(IN JUNGLE)
(DESC "Venus flytrap")
(SYNONYM FLYTRAP LETTUCE)
(ADJECTIVE VENUS LARGE)
(FLAGS NDESCBIT)
(ACTION FLYTRAP-F)>
<ROUTINE FLYTRAP-F ()
<COND (<VERB? EXAMINE>
<TELL
"It looks just like the Terrestrial variety -- except that " 'FLYTRAP "s on
Earth" ,EVOLVED "n ounce, and Venusian " 'FLYTRAP "s" ,EVOLVED " ton. Oh, one
other thing. Terrestrial " 'FLYTRAP "s don't usually stalk their prey." CR>)
(<VERB? FOLLOW>
<COND (<EQUAL? ,FOLLOW-FLAG 9>
<DO-WALK ,P?WEST>)
(<EQUAL? ,FOLLOW-FLAG 10>
<PERFORM ,V?DISEMBARK ,TREE-HOLE>
<RTRUE>)
(<EQUAL? ,FOLLOW-FLAG 11>
<PERFORM ,V?ENTER ,TREE-HOLE>
<RTRUE>)>)
(<TOUCHING? ,FLYTRAP>
<TELL
"You don't want to get that close to the flytrap -- and it has nothing
to do with its breath." CR>)>>
<GLOBAL FLYTRAP-COUNTER 0>
<GLOBAL TOO-LATE <>>
<ROUTINE I-FLYTRAP ()
<SETG FLYTRAP-COUNTER <+ ,FLYTRAP-COUNTER 1>>
<TELL " ">
<COND (<NOT <IN? ,FLYTRAP ,HERE>>
<SETG FLYTRAP-COUNTER 0>
<COND (<EQUAL? ,HERE ,CLEARING>
<COND (<AND ,LEAVES-PLACED
<NOT ,TOO-LATE>>
<TRAP-FLYTRAP>
<TELL "You hear a crash from the west">)
(T
<MOVE ,FLYTRAP ,JUNGLE>
<SETG TOO-LATE <>>
<DEQUEUE I-FLYTRAP>
<SETG FOLLOW-FLAG 9>
<QUEUE I-FOLLOW 2>
<TELL
"Holy tropism! The " 'FLYTRAP " loses interest in you and crawls away">)>
<TELL ,PERIOD-CR>)
(T
<MOVE ,FLYTRAP ,HERE>
<COND (<NOT ,LEAVES-PLACED>
<SETG TOO-LATE T>)>
<TELL
"As" T ,FLYTRAP " scurries along, you dash to the eastern side of the hole
in order to be as far from it as possible." CR>)>)
(<IN? ,PROTAGONIST ,TREE-HOLE>
<MOVE ,FLYTRAP ,JUNGLE>
<SETG FOLLOW-FLAG 10>
<QUEUE I-FOLLOW 2>
<SETG TOO-LATE <>>
<SETG FLYTRAP-COUNTER 0>
<DEQUEUE I-FLYTRAP>
<TELL
"The " 'FLYTRAP " peers down, decides that it's not worth getting trapped
for such a measly scrap of meat, and shuffles away." CR>)
(<AND <EQUAL? ,FLYTRAP-COUNTER 1>
<FSET? ,FLYTRAP ,TOUCHBIT>
<EQUAL? ,HERE ,JUNGLE>>
<TELL
"Flies must be in short supply, because the " 'FLYTRAP " nearby expectantly
rustles a few stalks and begins creeping in your direction." CR>)
(<L? ,FLYTRAP-COUNTER 4>
<FSET ,FLYTRAP ,TOUCHBIT>
<TELL "The " 'FLYTRAP " sidles ">
<COND (<AND <EQUAL? ,HERE ,FORK-OF-SORTS>
<OR <NOT ,LEAVES-PLACED>
,TOO-LATE>>
<TELL "around the hole toward you." CR>)
(T
<TELL "closer." CR>)>)
(<AND <EQUAL? ,HERE ,FORK-OF-SORTS>
,LEAVES-PLACED
<NOT ,TOO-LATE>>
<TRAP-FLYTRAP>
<TELL
"Never before has splintering wood sounded so sweet or tossed salad looked
so lovely. The amazing flying flytrap tumbles into your flytrap trap, covered
with leaves and bits of shattered trellis, giving the plant the amusing
appearance of a tar-and-feather victim." CR>)
(T
<FLYTRAP-DEATH>)>>
<ROUTINE TRAP-FLYTRAP ()
<FSET ,FLYTRAP ,MUNGBIT>
<INCREMENT-SCORE 2 15>
<MOVE ,FLYTRAP ,TREE-HOLE>
<SETG FOLLOW-FLAG 11>
<QUEUE I-FOLLOW 2>
<ROB ,TRELLIS ,TREE-HOLE>
<REMOVE ,TRELLIS>
<FCLEAR ,FLYTRAP ,NDESCBIT>
<UNDO-TRAP>
<DEQUEUE I-FLYTRAP>>
<ROOM SPAWNING-GROUND
(IN ROOMS)
(DESC "Spawning Ground")
(EAST TO JUNGLE)
(FLAGS RLANDBIT ONBIT)
(GLOBAL HOLE VENUS)
(HOLE-DESTINATION HOLD)
(ACTION SPAWNING-GROUND-F)>
<ROUTINE SPAWNING-GROUND-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"As if this hasn't already been a rough enough day, you have stumbled upon a
spawning ground for Venusian slime beasts. " ,OOZY-WITH-SLIME " Fortunately,
these beasts are still in the earliest (and least deadly) stage. Only one
spot is free of slime:" T ,HOLE " near the path to the east.">)>>
<OBJECT CREAM
(IN SPAWNING-GROUND)
(SDESC "jar of untangling cream")
(NO-T-DESC "jar of unangling cream")
(FDESC
"Inexplicably, sitting next to the circle, untouched by time or slime,
is a jar of ointment.")
(SYNONYM JAR OINTMENT LOTION CREAM)
(ADJECTIVE UNTANG UNANGL)
(FLAGS TAKEBIT READBIT)
(SIZE 4)
(ACTION CREAM-F)>
<ROUTINE CREAM-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<EXAMINE-CREAM-AND-STAIN>)
(<VERB? READ>
<TELL "The jar is marked \"Un">
<COND (<NOT <FSET? ,CREAM ,UNTEEDBIT>>
<TELL "t">)>
<TELL "angling cream.\"" CR>)
(<AND <VERB? EMPTY>
<PRSO? ,CREAM>>
<COND (<NOT ,PRSI>
<PUT ,P-NAMW 1 <>>
<SETG PRSI ,GROUND>)>
<COND (<FSET? ,CREAM ,MUNGBIT>
<TELL ,ALREADY-IS>)
(T
<PUT ,P-NAMW 0 ,W?CREAM> ;"because PUT-ON checks it"
<PERFORM ,V?PUT-ON ,CREAM ,PRSI>
<RTRUE>)>)
(<VERB? OPEN CLOSE>
<NO-LID>)
(<VERB? EAT>
<TELL ,YECHH>)
(<AND <VERB? POUR PUT-ON RUB>
<PRSO? ,CREAM>
<NOT <EQUAL? <GET ,P-NAMW 0> ,W?JAR <> ;"false for ALL">>>
<COND (<FSET? ,CREAM ,MUNGBIT>
<EXAMINE-CREAM-AND-STAIN>
<RTRUE>)>
<MOVE ,CREAM ,PROTAGONIST>
<FSET ,CREAM ,MUNGBIT>
<TELL "As the lotion soaks in,">
<COND (<AND <FSET? ,CREAM ,UNTEEDBIT>
<PRSI? ,THETA>>
<MOVE ,EIGHTY-TWO-DEGREE-ANGLE ,THRONE-ROOM>
<FCLEAR ,THETA ,MUNGBIT>
<FCLEAR ,THETA ,NDESCBIT>
<FSET ,THETA ,ACTORBIT>
<FSET ,THETA ,FEMALEBIT>
<FSET ,THETA ,NARTICLEBIT>
<PUTP ,THETA ,P?SDESC "Princess Theta">
<INCREMENT-SCORE 16 10 T>
<TELL
" the angle slowly transforms into a beautiful princess. Mitre, gushing tears
of happiness, cries, \"You have restored my beloved Theta to me!\" He reveals
a perfect " D ,EIGHTY-TWO-DEGREE-ANGLE ". \"I only brushed against it,\"
explains the King. \"Please accept it, along with my thanks.\" He reaches out
to shake " 'HANDS ,PERIOD-CR>)
(<AND <PRSI? ,PILE-OF-ANGLES>
<FSET? ,CREAM ,UNTEEDBIT>>
<JIGS-UP
" the angles return to their former forms: a golden chariot,
a velvet tapestry, various fruits, some handcuffs, a flock of
ducks ... and a huge hungry tiger.">)
(<PRSI? ,ME>
<TELL " your skin tingles a bit." CR>)
(T
<TELL T ,PRSI " seem">
<COND (<NOT <FSET? ,PRSI ,PLURALBIT>>
<TELL "s">)>
<TELL " unchanged. ">
<COND (<AND <PRSI? ,MITRE>
<FSET? ,CREAM ,UNTEEDBIT>>
<TELL
"(Like fighting a forest fire with a water pistol.)" CR>)
(T
<TELL "I guess ">
<COND (<FSET? ,PRSI ,PLURALBIT>
<TELL "they were">)
(T
<COND (<FSET? ,PRSI ,FEMALEBIT>
<TELL "she">)
(<FSET? ,PRSI ,ACTORBIT>
<TELL "he">)
(T
<TELL "it">)>
<TELL " was">)>
<TELL "n't very ">
<COND (<NOT <FSET? ,CREAM ,UNTEEDBIT>>
<TELL "t">)>
<TELL "angled." CR>)>)>)>>
<ROOM FORK-OF-SORTS
(IN ROOMS)
(DESC "Fork, Of Sorts")
(WEST PER PASS-FLYTRAP-F)
(EAST TO CLEARING)
(FLAGS RLANDBIT ONBIT)
(GLOBAL TREE VENUS)
(ACTION FORK-OF-SORTS-F)>
<ROUTINE FORK-OF-SORTS-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,HERE ,TOUCHBIT>>
<NOT <EQUAL? ,VERBOSITY 0>>>
<TELL
"A mighty tree rises before you in the center of the path. Suddenly and without
warning (as is the nature of the jungle) it dies. Within seconds, the tree is
consumed by Venusian hypertermites, which then move off in search of other
dead trees, leaving a massive hole in the ground." CR CR>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"This jungle path once split here, went around a mighty tree, and rejoined
off to the east. Now, it splits here, goes around a ">
<COND (,LEAVES-PLACED
<PRINTD ,LEAVES>)
(T
<TELL "mighty hole">)>
<TELL ", and rejoins off to the east.">)>>
<GLOBAL LEAVES-PLACED <>>
<OBJECT TREE-HOLE
(IN FORK-OF-SORTS)
(DESC "tree hole")
(SYNONYM HOLE)
(ADJECTIVE TREE LARGE)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT VEHBIT INBIT)
(CAPACITY 200)
(ACTION TREE-HOLE-F)>
<ROUTINE TREE-HOLE-F ()
<COND (<VERB? OPEN CLOSE>
<TELL ,HUH>)
(<AND <VERB? DISEMBARK>
<IN? ,PROTAGONIST ,TREE-HOLE>>
<TELL ,YOU-CANT "climb out. You're trapped." CR>)
(<AND <VERB? REACH-IN>
<IN? ,FLYTRAP ,TREE-HOLE>>
<TELL "The " 'FLYTRAP " pulls you in. ">
<FLYTRAP-DEATH>)
(<VERB? BOARD>
<COND (<FSET? ,TRELLIS ,MUNGBIT>
<TELL "The hole's covered." CR>)
(<ULTIMATELY-IN? ,TRELLIS>
<TELL ,TRELLIS-TOO-WIDE>)
(<IN? ,FLYTRAP ,TREE-HOLE>
<TELL "Hey! There's a big, hungry, angry " 'FLYTRAP>
<JIGS-UP " down here also!">)>)
(<VERB? MEASURE>
<TELL "The hole is about six feet across." CR>)
(<VERB? WALK-AROUND>
<COND (<IN? ,FLYTRAP ,HERE>
<TELL
"You circle the hole completely, with" T ,FLYTRAP " in hot pursuit." CR>)
(T
<WEE>)>)
(<AND <VERB? LOOK-INSIDE>
,LEAVES-PLACED>
<PERFORM ,V?BOARD ,TREE-HOLE>
<RTRUE>)
(<AND <VERB? PUT-ON>
<PRSO? ,LEAVES>
<FSET? ,TRELLIS ,MUNGBIT>>
<PERFORM-PRSA ,LEAVES ,TRELLIS>
<RTRUE>)
(<AND <VERB? EXAMINE>
<FSET? ,TRELLIS ,MUNGBIT>>
<DESCRIBE-TRELLIS-ON-HOLE>
<CRLF>)
(<AND <VERB? UNCOVER>
<FSET? ,TRELLIS ,MUNGBIT>>
<PERFORM ,V?MOVE ,TRELLIS>
<RTRUE>)
(<AND <VERB? HIDE>
<IN? ,FLYTRAP ,HERE>>
<PERFORM ,V?WALK-AROUND ,TREE-HOLE>
<RTRUE>)>>
<ROOM CLEARING
(IN ROOMS)
(DESC "Clearing")
(NW PER CLEARING-EXIT-F)
(NE PER CLEARING-EXIT-F)
(EAST PER CLEARING-EXIT-F)
(SOUTH PER CLEARING-EXIT-F)
(WEST TO FORK-OF-SORTS)
(FLAGS RLANDBIT ONBIT)
(GLOBAL TREE VENUS)
(ACTION CLEARING-F)>
<ROUTINE CLEARING-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a tiny anti-oasis of barrenness amidst the teeming Venusian jungle.
Winding paths enter the jungle in most directions.">)>>
<ROUTINE CLEARING-EXIT-F ()
<TELL
"You walk swiftly down the trail! It turns! It twists! It narrows! Vines grab
at your ankles and bird-sized insects close in for a kill! Suddenly" ,ELLIPSIS>
<COND (<PRSO? ,P?NE>
,FRONT-DOOR)
(<PRSO? ,P?NW>
,BACK-DOOR)
(T
<DESCRIBE-ROOM>
<COND (<IN? ,SIDEKICK ,HERE>
<NORMAL-SIDEKICK-FOLLOW>)>
<RFALSE>)>>
<OBJECT STAIN
(IN CLEARING)
(DESC "can of black stain")
(NO-T-DESC "can of black sain")
(SYNONYM CAN STAIN SAIN PAINT)
(ADJECTIVE BLACK)
(FLAGS TAKEBIT READBIT)
(ACTION STAIN-F)
(TEXT
"\"MarsCo Brand Black Hyperdimensional Transport Circle Stain.\"")>
<ROUTINE STAIN-F ()
<COND (<FSET? ,STAIN ,UNTEEDBIT>
<RFALSE>)
(<VERB? EXAMINE LOOK-INSIDE>
<EXAMINE-CREAM-AND-STAIN>)
(<AND <VERB? APPLY>
<GLOBAL-IN? ,HOLE ,HERE>>
<APPLY-STAIN ,HOLE>)
(<AND <VERB? EMPTY>
<PRSO? ,STAIN>>
<COND (<FSET? ,STAIN ,MUNGBIT>
<EXAMINE-CREAM-AND-STAIN>)
(<OR <NOT ,PRSI>
<PRSI? ,GROUND ,CANAL-OBJECT ,WATER ,TREE-HOLE>>
<FSET ,STAIN ,MUNGBIT>
<TELL "Done. What a waste of good stain!" CR>)
(T
<APPLY-STAIN ,PRSI>)>)
(<VERB? OPEN CLOSE>
<NO-LID>)
(<VERB? DRINK>
<TELL ,YECHH>)
(<AND <VERB? POUR>
<PRSI? ,GROUND ,CANAL-OBJECT ,WATER ,TREE-HOLE>>
<PERFORM ,V?EMPTY ,STAIN ,GROUND>
<RTRUE>)
(<AND <VERB? POUR PUT-ON RUB>
<PRSO? ,STAIN>
<NOUN-USED ,W?STAIN ,STAIN>>
<APPLY-STAIN ,PRSI>)>>
<ROUTINE APPLY-STAIN (OBJ)
<COND (<FSET? ,STAIN ,MUNGBIT>
<SETG PRSO ,STAIN>
<EXAMINE-CREAM-AND-STAIN>)
(<EQUAL? .OBJ ,HOLE>
<THIS-IS-IT ,HOLE>
<TELL "The circle is ">
<COND (<CIRCLE-ISNT-BLACK>
<SETG CIRCLE-BLACK T>
<FSET ,STAIN ,MUNGBIT>
<PUT ,P-ADJW 0 <>> ;"prevents YOU CAN'T SEE ANY... bug"
<PUT ,P-ADJW 1 <>> ;"since parser doesn't clears P-ADJW"
<PUTP ,HOLE ,P?SDESC "black circle">
<TELL "once again">)
(T
<TELL "already">)>
<TELL " black!" CR>)
(<EQUAL? .OBJ ,FLYTRAP>
<PERFORM ,V?TOUCH ,FLYTRAP>
<RTRUE>)
(T
<TELL
"You apply a tiny dab to" T .OBJ " but it doesn't stick." CR>)>>
<ROUTINE EXAMINE-CREAM-AND-STAIN ()
<TELL "The " D ,PRSO " is ">
<COND (<FSET? ,PRSO ,MUNGBIT>
<TELL "empty">)
(T
<TELL "full">)>
<COND (<VERB? EXAMINE>
<TELL ", and has some writing on it">)>
<TELL ,PERIOD-CR>>
<ROOM FRONT-DOOR
(IN ROOMS)
(DESC "Front Door")
(LDESC
"To the north: the entrance to a plasticoid house, the only type of structure
that lasts more than three minutes in the volatile Venusian biosphere. To the
south and east: paths into the jungle.")
(NORTH TO LOOKS-CAN-BE-DECEIVING IF FRONT-DOOR-OBJECT IS OPEN)
(IN TO LOOKS-CAN-BE-DECEIVING IF FRONT-DOOR-OBJECT IS OPEN)
(SOUTH TO CLEARING)
(EAST TO ROCKY-CLIFFTOP)
(FLAGS RLANDBIT ONBIT)
(GLOBAL FRONT-DOOR-OBJECT HOUSE TREE VENUS)>
<ROOM BACK-DOOR
(IN ROOMS)
(DESC "Back Door")
(LDESC
"You're near the rear entrance of a house, to the south.
Trails enter the jungle to the east and the west.")
(WEST TO CLEARING)
(EAST TO ROCKY-CLIFFTOP)
(SOUTH TO LOOKS-CAN-BE-DECEIVING IF BACK-DOOR-OBJECT IS OPEN) ;"imposs."
(IN TO LOOKS-CAN-BE-DECEIVING IF BACK-DOOR-OBJECT IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL BACK-DOOR-OBJECT HOUSE TREE VENUS)
(ACTION BACK-DOOR-F)>
<ROUTINE BACK-DOOR-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<QUEUE I-SALESMAN -1>)>>
<OBJECT SALESMAN
(IN BACK-DOOR)
(DESC "salesman")
(LDESC
"An extraordinary number of door-to-door salesmen are camped out here, having
been booted away from the front door, but still hopeful of making a sale.")
(SYNONYM SALESMAN MAN)
(ADJECTIVE SALES)
(FLAGS ACTORBIT CONTBIT OPENBIT)
(ACTION SALESMAN-F)>
<ROUTINE SALESMAN-F ()
<COND (<EQUAL? ,SALESMAN ,WINNER>
<QUEUE I-SALESMAN 2> ;"he shouldn't speak twice in one turn"
<COND (<OR <AND <VERB? WHAT>
<PRSO? ,LGOP>>
<AND <VERB? TELL-ABOUT>
<PRSO? ,ME>
<PRSI? ,LGOP>>>
<TELL
"\"I know the ones you mean. Made a fortune in interplanetary shoe
and briefcase peddling. They really know the territory.\"" CR>)
(T
<TELL
"\"Let's cut the gab and cut a deal instead!\"" CR>
<STOP>)>)
(<AND <VERB? GIVE>
<PRSI? ,SALESMAN>>
<COND (<PRSO? ,FLASHLIGHT>
<REMOVE ,FLASHLIGHT>
<MOVE ,ODD-MACHINE ,HERE>
<FCLEAR ,ODD-MACHINE ,TRYTAKEBIT>
<REMOVE ,SALESMAN>
<SETG FOLLOW-FLAG 8>
<QUEUE I-FOLLOW 2>
<INCREMENT-SCORE 3 7>
<EAGERLY-ACCEPTS>
<TELL
", mentioning that he knows a Plutonian plutocrat who'll trade his life fortune
for one, and drops" A ,ODD-MACHINE " at your feet. \"It's a TEE remover,\" he
explains. You ponder what it removes -- tea stains, hallway T-intersections --
even TV star Mr. T crosses your mind, until you recall that it's only 1936. But
before you have a chance to ask the salesman, he ">
<COND (<FSET? ,FLASHLIGHT ,ONBIT>
<TELL "points" T ,FLASHLIGHT " upwards">)
(T
<TELL "turns on" T ,FLASHLIGHT>)>
<TELL
" and a giant Venusian MegaMoth swoops down and carries him off. The
other salesmen scatter like frightened salesmen." CR>
<RFATAL>)
(T
<QUEUE I-SALESMAN 2>
<COND (<PRSO? ,TEN-MARSMID-COIN ,ONE-MARSMID-COIN>
<PERFORM ,V?BUY ,ODD-MACHINE>
<RTRUE>)
(T
<TELL <PICK-ONE ,SALESMAN-REFUSALS>>)>
<TELL " Offer me something else.\"" CR>)>)
(<OR <AND <VERB? SHOW>
<PRSO? ,FLASHLIGHT>>
<AND <VERB? ASK-ABOUT>
<PRSI? ,FLASHLIGHT>>>
<TELL "The salesman tries to look disinterested." CR>)
(<AND <VERB? FOLLOW>
<EQUAL? ,FOLLOW-FLAG 8>>
<TELL ,DONT-WANT-TO>)
(<VERB? BARTER-WITH>
<TELL "Just give him something!" CR>)
(<VERB? COUNT>
<TELL "Lots." CR>)>>
<GLOBAL SALESMAN-REFUSALS
<LTABLE
0
"\"No thanks, I've already got one."
"\"Stop insulting me. There's a glut of those on the market."
"\"That model went out of style before I was born!">>
<GLOBAL SALESMANISMS
<LTABLE
0
"\"I'll throw in a free two-week service contract.\""
"\"Barter-back guarantee!\""
"\"Never had a complaint in 37 years of selling these babies.\""
"\"Includes a three-day warranty!\"">>
<ROUTINE I-SALESMAN ()
<QUEUE I-SALESMAN -1>
<COND (<NOT <IN? ,SALESMAN ,HERE>>
<FCLEAR ,SALESMAN ,TOUCHBIT>
<DEQUEUE I-SALESMAN>
<RFALSE>)>
<TELL " ">
<COND (<FSET? ,SALESMAN ,TOUCHBIT>
<TELL <PICK-ONE ,SALESMANISMS> CR>)
(T
<FSET ,SALESMAN ,TOUCHBIT>
<FCLEAR ,ODD-MACHINE ,NDESCBIT>
<THIS-IS-IT ,SALESMAN>
<TELL "A salesman approaches you. \"You look like a ">
<COND (,MALE
<TELL "fella">)
(T
<TELL "doll">)>
<TELL
" who can spot a good deal. One of my machines could change your life! Let's
barter; offer me something as an even-up trade.\"" CR>)>>
<OBJECT ODD-MACHINE
(IN SALESMAN)
(DESC "odd machine")
(SYNONYM REMOVE MACHINE COMPAR T-REMOVER)
(ADJECTIVE YOUR ODD SMALL T TEE TEA TEE-REMOVER TEA-REMOVER)
(FLAGS VOWELBIT TAKEBIT TRYTAKEBIT CONTBIT SEARCHBIT NDESCBIT)
(CAPACITY 60)
(SIZE 8)
(GENERIC GENERIC-MACHINE-F)
(ACTION ODD-MACHINE-F)>
<ROUTINE ODD-MACHINE-F ("AUX" OBJ-IN-MACHINE)
<SET OBJ-IN-MACHINE <FIRST? ,ODD-MACHINE>>
<COND (<AND <VERB? BUY>
<IN? ,ODD-MACHINE ,SALESMAN>>
<QUEUE I-SALESMAN 2>
<TELL
"\"I wouldn't part with this baby for a hundred marsmids!\"" CR>)
(<AND <VERB? PUT>
<FSET? ,ODD-MACHINE ,OPENBIT>
<PRSI? ,ODD-MACHINE>>
<COND (<AND .OBJ-IN-MACHINE
<NOT <PRSO? .OBJ-IN-MACHINE>>>
<TELL ,ONLY-ONE-THING-IN-COMPARTMENT>)
(<PRSO? ,BABY>
<TELL
"The baby cries so ferociously, you reconsider." CR>)
(<FIRST? ,PRSO>
<TELL
,YOULL-HAVE-TO "empty" T ,PRSO " first. " ,ONLY-ONE-THING-IN-COMPARTMENT>)>)
(<VERB? EXAMINE>
<TELL "The " 'ODD-MACHINE " is off, and has a small, ">
<OPEN-CLOSED ,ODD-MACHINE>
<TELL " compartment">
<COND (<AND .OBJ-IN-MACHINE
<FSET? ,ODD-MACHINE ,OPENBIT>>
<TELL " containing" A .OBJ-IN-MACHINE>)>
<TELL ,PERIOD-CR>)
(<AND <VERB? TAKE OPEN ON>
<FSET? ,ODD-MACHINE ,TRYTAKEBIT>>
<QUEUE I-SALESMAN 2>
<TELL
"\"Hey!\" The salesman jumps back. \"No deal, no merchandise.\"" CR>)
(<VERB? BARTER-FOR>
<COND (<PRSI? ,ODD-MACHINE>
<PERFORM ,V?GIVE ,PRSO ,SALESMAN>
<RTRUE>)
(T
<PERFORM ,V?BARTER-WITH ,SALESMAN>
<RTRUE>)>)
(<VERB? OFF>
<TELL ,ALREADY-IS>)
(<VERB? ON>
<COND (<FSET? ,ODD-MACHINE ,OPENBIT>
<TELL ,NOTHING-HAPPENS>)
(T
<COND (<AND .OBJ-IN-MACHINE
<GETP .OBJ-IN-MACHINE ,P?NO-T-DESC>>
<COND (<EQUAL? .OBJ-IN-MACHINE ,TUBE ,TORCH>
<FSET .OBJ-IN-MACHINE ,VOWELBIT>)>
<COND (<EQUAL? .OBJ-IN-MACHINE ,TORCH>
<DEQUEUE I-TORCH>)>
<FCLEAR .OBJ-IN-MACHINE ,CONTBIT>
<FCLEAR .OBJ-IN-MACHINE ,SEARCHBIT>
<FCLEAR .OBJ-IN-MACHINE ,OPENBIT>
<FCLEAR .OBJ-IN-MACHINE ,READBIT>
<FCLEAR .OBJ-IN-MACHINE ,VEHBIT>
<FCLEAR .OBJ-IN-MACHINE ,WEARBIT>
<FCLEAR .OBJ-IN-MACHINE ,ONBIT>
<FCLEAR .OBJ-IN-MACHINE ,SURFACEBIT>
<FSET .OBJ-IN-MACHINE ,UNTEEDBIT>)
(<EQUAL? .OBJ-IN-MACHINE ,RABBIT>
<FSET ,RABBIT ,UNTEEDBIT>)>
<COND (<AND <EQUAL? .OBJ-IN-MACHINE ,CHOCOLATE>
<NOT <FSET? ,CHOCOLATE ,SMELLEDBIT>>>
;"there's no T in it's DESC yet"
<FCLEAR ,CHOCOLATE ,UNTEEDBIT>)>
<TELL
"Sparks! Explosions! \"Pockita pockita pockita FEEP!\"
exclaims the machine." CR>)>)
(<AND <VERB? OPEN>
<IN? ,RABBIT ,ODD-MACHINE>
<FSET? ,RABBIT ,UNTEEDBIT>>
<FSET ,ODD-MACHINE ,OPENBIT>
<REMOVE ,RABBIT>
<TELL
"A bearded rabbi wearing a prayer shawl leaps out of the machine, recites
a Torah blessing, and ">
<COND (<EQUAL? ,HERE ,CANAL ,IN-SPACE>
<TELL "swim">)
(T
<TELL "dashe">)>
<TELL "s off in search of a minyan." CR>)>>
<OBJECT BACK-DOOR-OBJECT
(IN LOCAL-GLOBALS)
(DESC "back door")
(SYNONYM DOOR)
(ADJECTIVE BACK REAR)
(FLAGS DOORBIT LOCKEDBIT)
(ACTION MAD-SCIENTIST-DOOR-F)>
<OBJECT FRONT-DOOR-OBJECT
(IN LOCAL-GLOBALS)
(DESC "front door")
(SYNONYM DOOR)
(ADJECTIVE FRONT)
(FLAGS DOORBIT LOCKEDBIT)
(ACTION MAD-SCIENTIST-DOOR-F)>
<ROUTINE MAD-SCIENTIST-DOOR-F ()
<COND (<AND <VERB? KNOCK>
<NOT <EQUAL? ,HERE ,LOOKS-CAN-BE-DECEIVING>>
<NOT <FSET? ,CAGE ,MUNGBIT>>>
<FSET ,PRSO ,OPENBIT>
<TELL
"The door is thrown open by a wild-eyed " 'MAD-SCIENTIST ". \"">
<COND (<FSET? ,LOOKS-CAN-BE-DECEIVING ,TOUCHBIT>
<TELL
"Ach! You haf returned! Ve can continue der experiment!">)
(T
<TELL
"Nein! Nein! Nein! I don't need any!\" Then, taking a closer look at you
through spectacles thick enough to stop gamma rays, he says, \"Oh! Not ein
salesman! In fact, just der type I need for mein experiment.">)>
<COND (<ULTIMATELY-IN? ,FLEXIBLE-HOLE>
<TELL " But leaf your ">
<COND (<IN? ,FLEXIBLE-HOLE ,TUBE>
<PRINTD ,TUBE>
<MOVE ,TUBE ,HERE>)
(T
<PRINTD ,FLEXIBLE-HOLE>
<MOVE ,FLEXIBLE-HOLE ,HERE>)>
<TELL
" outsite,\" he says, knocking it to the ground, \"I'm allergic.">)>
<TELL
"\" He grips your wrist with surprising strength and drags you inside." CR CR>
<MOVE ,MAD-SCIENTIST ,LOOKS-CAN-BE-DECEIVING>
<GOTO ,LOOKS-CAN-BE-DECEIVING>)>>
<ROOM LOOKS-CAN-BE-DECEIVING
(IN ROOMS)
(DESC "Looks Can Be Deceiving")
(SOUTH TO FRONT-DOOR IF FRONT-DOOR-OBJECT IS OPEN)
(NORTH TO BACK-DOOR IF BACK-DOOR-OBJECT IS OPEN)
(DOWN TO LABORATORY)
(FLAGS RLANDBIT ONBIT INDOORSBIT NARTICLEBIT)
(GLOBAL STAIRS FRONT-DOOR-OBJECT BACK-DOOR-OBJECT HOUSE VENUS)
(ACTION LOOKS-CAN-BE-DECEIVING-F)>
<ROUTINE LOOKS-CAN-BE-DECEIVING-F (RARG "AUX" (OPEN-DOOR <>))
<COND (<FSET? ,FRONT-DOOR-OBJECT ,OPENBIT>
<SET OPEN-DOOR ,FRONT-DOOR-OBJECT>)
(<FSET? ,BACK-DOOR-OBJECT ,OPENBIT>
<SET OPEN-DOOR ,BACK-DOOR-OBJECT>)>
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"From the innocent appearance of this quiet living area, you'd never guess
that all sorts of twisted, maniacal, perverted experiments are in progress
a short flight of stairs below. There are doors to the north">
<COND (<EQUAL? .OPEN-DOOR ,BACK-DOOR-OBJECT>
<TELL " (open)">)>
<TELL " and south">
<COND (<EQUAL? .OPEN-DOOR ,FRONT-DOOR-OBJECT>
<TELL " (open)">)>
<COND (<NOT .OPEN-DOOR>
<TELL ", both closed">)>
<TELL ".">)
(<AND <EQUAL? .RARG ,M-END>
.OPEN-DOOR>
<QUEUE I-MAD-SCIENTIST 2>
<FCLEAR .OPEN-DOOR ,OPENBIT>
<TELL
" You feel uneasy as" T ,MAD-SCIENTIST " locks the door behind you
and dissolves the key in a vat of acid." CR>)>>
<OBJECT MAD-SCIENTIST
(DESC "mad scientist")
(DESCFCN MAD-SCIENTIST-F)
(SYNONYM SCIENTIST)
(ADJECTIVE MAD)
(FLAGS ACTORBIT)
(ACTION MAD-SCIENTIST-F)>
<ROUTINE MAD-SCIENTIST-F ("OPTIONAL" (OARG <>))
<COND (.OARG
<COND (<EQUAL? ,IMPATIENCE-COUNTER 0>
<RFALSE>)
(<EQUAL? .OARG ,M-OBJDESC?>
<RTRUE>)>
<TELL " The wild-eyed " 'MAD-SCIENTIST " is "
<GET ,MAD-SCIENTIST-DESCS ,MAD-SCIENTIST-COUNTER>>)
(<EQUAL? ,MAD-SCIENTIST ,WINNER>
<COND (<OR <AND <VERB? WHAT>
<PRSO? ,LGOP>>
<AND <VERB? TELL-ABOUT>
<PRSO? ,ME>
<PRSI? ,LGOP>>>
<TELL
"\"Eh?\" yells" T ,MAD-SCIENTIST ", cupping his ear. \"Heather bodices
of no-doze? Vat in heck are you jabbering about?\"" CR>)
(T
<TELL
"The " 'MAD-SCIENTIST " ignores you, cackling with inner glee." CR>
<STOP>)>)
(<AND <VERB? FOLLOW>
<EQUAL? ,FOLLOW-FLAG 17>>
<DO-WALK ,P?NORTH>)>>
<GLOBAL MAD-SCIENTIST-DESCS
<TABLE
"waiting impatiently for you to descend."
"stalking around the room, rubbing his hands and cackling madly."
"stalking around the room, rubbing his hands and cackling madly."
"watching you intently and scrawling an occasional note.">>
<GLOBAL MAD-SCIENTIST-COUNTER 0>
<GLOBAL IMPATIENCE-COUNTER 0>
<ROUTINE I-MAD-SCIENTIST ()
<TELL " ">
<COND (<EQUAL? ,MAD-SCIENTIST-COUNTER 0>
<SETG IMPATIENCE-COUNTER <+ ,IMPATIENCE-COUNTER 1>>
<QUEUE I-MAD-SCIENTIST 2>
<COND (<EQUAL? ,IMPATIENCE-COUNTER 1>
<TELL
"\"Let us retire to der laboratory,\" suggests" TR ,MAD-SCIENTIST>)
(<EQUAL? ,IMPATIENCE-COUNTER 2>
<TELL
"\"Downstairs, please,\" says" T ,MAD-SCIENTIST ", impatiently." CR>)
(<EQUAL? ,IMPATIENCE-COUNTER 3>
<TELL
"The " 'MAD-SCIENTIST ", fidgeting himself into a frenzy,
motions toward the stairs." CR>)
(T
<TELL
"The " 'MAD-SCIENTIST " loses his patience and opens
the trapdoor, dumping you">
<AND-SIDEKICK ,LABORATORY>
<TELL " down a chute" ,ELLIPSIS>
<GOTO ,LABORATORY>
<LABORATORY-F ,M-END>
<RTRUE>)>)
(<EQUAL? ,MAD-SCIENTIST-COUNTER 1>
<MOVE ,PROTAGONIST ,FIRST-SLAB>
<QUEUE I-MAD-SCIENTIST 3>
<SETG MAD-SCIENTIST-COUNTER 2>
<SETG BODY-TIED-TO-SLAB T>
<TELL
"Again exhibiting extraordinary strength," T ,MAD-SCIENTIST
" straps you down on" T ,FIRST-SLAB>
<COND (<VISIBLE? ,SIDEKICK>
<MOVE ,SIDEKICK ,SECOND-SLAB>
<SETG SIDEKICKS-BODY-TIED-TO-SLAB T>
<TELL " and " D ,SIDEKICK " onto" T ,SECOND-SLAB>)>
<TELL ,PERIOD-CR>)
(<EQUAL? ,MAD-SCIENTIST-COUNTER 2>
<QUEUE I-MAD-SCIENTIST 6>
<SETG MAD-SCIENTIST-COUNTER 3>
<IDENTITY-TRANSFER>
<TELL
"The " 'MAD-SCIENTIST " flips" T ,POWER-SWITCH ", and you suddenly find
yourself within the cage. Oddly, you can also see yourself still strapped
to" T ,FIRST-SLAB ". As you swing across the cage to get a better look,
you realize that you're now inside the body of a gorilla." CR>)
(<EQUAL? ,MAD-SCIENTIST-COUNTER 3>
<MINE-THEORY>)>>
<ROOM LABORATORY
(IN ROOMS)
(DESC "Laboratory")
(UP PER LABORATORY-EXIT-F)
(NORTH PER LAB-DOOR-ENTER-F)
(FLAGS RLANDBIT ONBIT INDOORSBIT)
(GLOBAL HOLE STAIRS HOUSE VENUS)
(HOLE-DESTINATION VIZICOMM-BOOTH)
(ACTION LABORATORY-F)
(THINGS <PSEUDO (<> DOOR LAB-DOOR-F)
(<> STRAP STRAP-F)
(<> STRAPS STRAP-F)>)>
<ROUTINE LABORATORY-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<QUEUED? ,I-ION-DEATH>>
<FSET ,POWER-TRANSMITTER ,MUNGBIT>
<QUEUE I-ION-DEATH 1> ;"explode before ape transfer not after")
(<EQUAL? .RARG ,M-LOOK>
<TELL
"The scientist's madness is finally evident by his lab, filled with many
expressions of insane genius, such as the ">
<COND (<AND <FSET? ,MALE-GORILLA ,NDESCBIT>
<FSET? ,FEMALE-GORILLA ,NDESCBIT>>
<TELL "two caged gorillas, one male and one female">)
(T
<TELL "cage">)>
<TELL
", the two slabs for strapping down human victims, and" T ,POWER-SWITCH
". A closed door leads north; at the foot of the winding stone stairs
is" A ,HOLE ".">)
(<AND <EQUAL? .RARG ,M-END>
<IN? ,MAD-SCIENTIST ,LOOKS-CAN-BE-DECEIVING>>
<FCLEAR ,MALE-GORILLA ,NDESCBIT> ;"for sake of room desc"
<FCLEAR ,FEMALE-GORILLA ,NDESCBIT> ;"ditto"
<MOVE ,MAD-SCIENTIST ,HERE>
<QUEUE I-MAD-SCIENTIST 5>
<SETG MAD-SCIENTIST-COUNTER 1>
<TELL
" The " 'MAD-SCIENTIST " bounds down from the first floor, activating
a (guaranteed 100% effective) Vaporo-Zap Energy Barrier across the foot
of the stairs." CR>)>>
<ROUTINE LAB-DOOR-ENTER-F ()
<DO-FIRST "open the door">
<RFALSE>>
<ROUTINE LAB-DOOR-F ()
<COND (<VERB? OPEN CLOSE>
<PERFORM-PRSA ,BACK-DOOR-OBJECT> ;"very locked"
<RTRUE>)
(<VERB? KNOCK>
<PERFORM-PRSA ,WIDE-CELL-DOOR> ;"silence answers"
<RTRUE>)>>
<ROUTINE STRAP-F ()
<COND (<VERB? UNTIE OPEN>
<PERFORM ,V?UNTIE ,ME>
<RTRUE>)>>
<OBJECT POWER-SWITCH
(IN LABORATORY)
(DESC "huge red power switch")
(SYNONYM SWITCH)
(ADJECTIVE LARGE RED POWER)
(FLAGS NDESCBIT)
(ACTION POWER-SWITCH-F)>
<ROUTINE POWER-SWITCH-F ()
<COND (<AND <TOUCHING? ,POWER-SWITCH>
<NOT <IN? ,PROTAGONIST ,HERE>>>
<CANT-REACH ,POWER-SWITCH>)
(<AND <VERB? SET ON OFF THROW MOVE PUSH RAISE LOWER OPEN CLOSE>
<PRSO? ,POWER-SWITCH>>
<COND (<IN? ,MAD-SCIENTIST ,HERE>
<TELL "The " 'MAD-SCIENTIST " stops you." CR>)
(T
<IDENTITY-TRANSFER>
<TELL "Zap! You're back in ">
<COND (,GONE-APE
<TELL "the body of the ">
<COND (<NOT ,MALE>
<TELL "fe">)>
<TELL 'MALE-GORILLA ".">)
(T
<COND (<NOT <FSET? ,RUBBER-HOSE ,MUNGBIT>>
<FSET ,RUBBER-HOSE ,MUNGBIT>
<INCREMENT-SCORE 19 24 T>)>
<MOVE ,MALE-GORILLA ,CAGE>
<MOVE ,FEMALE-GORILLA ,CAGE>
<TELL
"your own body! The gorilla looks confused and slinks back into the
comfortingly familiar environment of the cage.">)>
<COND (<AND ,BODY-TIED-TO-SLAB
<NOT ,SIDEKICKS-BODY-TIED-TO-SLAB>
<VISIBLE? ,SIDEKICK>>
<SETG BODY-TIED-TO-SLAB <>>
<MOVE ,SIDEKICK ,HERE>
<TELL
" " D ,SIDEKICK " rushes over and unties you.">)>
<CRLF>)>)>>
<ROUTINE IDENTITY-TRANSFER ()
<OPEN-EYES-AND-REMOVE-HANDS>
<COND (,GONE-APE
<COND (,MALE
<ROB ,PROTAGONIST ,MALE-GORILLA>
<MOVE ,MALE-GORILLA <LOC ,PROTAGONIST>>
<FCLEAR ,MALE-GORILLA ,NDESCBIT>)
(T
<ROB ,PROTAGONIST ,FEMALE-GORILLA>
<MOVE ,FEMALE-GORILLA <LOC ,PROTAGONIST>>
<FCLEAR ,FEMALE-GORILLA ,NDESCBIT>)>
<COND (<VISIBLE? ,SIDEKICKS-BODY>
<MOVE ,SIDEKICK <LOC ,SIDEKICKS-BODY>>
<REMOVE ,SIDEKICKS-BODY>)>
<MOVE ,PROTAGONIST <LOC ,YOUR-BODY>>
<ROB ,YOUR-BODY ,PROTAGONIST>
<REMOVE ,YOUR-BODY>
<SETG GONE-APE <>>)
(T
<SETG GONE-APE T>
<MOVE ,YOUR-BODY <LOC ,PROTAGONIST>>
<ROB ,PROTAGONIST ,YOUR-BODY>
<COND (,MALE
<MOVE ,PROTAGONIST <LOC ,MALE-GORILLA>>
<FSET ,MALE-GORILLA ,NDESCBIT> ;"refer to it = you"
<ROB ,MALE-GORILLA ,PROTAGONIST>)
(T
<MOVE ,PROTAGONIST <LOC ,FEMALE-GORILLA>>
<FSET ,FEMALE-GORILLA ,NDESCBIT> ;"refer to it = you"
<ROB ,FEMALE-GORILLA ,PROTAGONIST>)>
<COND (<VISIBLE? ,SIDEKICK>
<MOVE ,SIDEKICKS-BODY <LOC ,SIDEKICK>>
<REMOVE ,SIDEKICK>)>)>>
<ROUTINE LABORATORY-EXIT-F ()
<JIGS-UP
"If you were a representative of the Vaporo-Zap Energy Barrier Company, you'd
be pleased to see that the firm's 100% effective guarantee had once again
proven to be a solid claim.">>
<OBJECT CAGE
(IN LABORATORY)
(DESC "cage")
(SYNONYM CAGE BAR BARS)
(CAPACITY 200)
(FLAGS NDESCBIT VEHBIT OPENBIT CONTBIT SEARCHBIT INBIT)
(ACTION CAGE-F)>
<ROUTINE CAGE-F ()
<COND (<VERB? EXAMINE>
<TELL "The bars ">
<COND (<FSET? ,CAGE ,MUNGBIT>
<TELL "have been" ,SPREAD-APART>)
(T
<TELL "seem sturdy">)>
<TELL ,PERIOD-CR>)
(<AND <VERB? ENTER BOARD WALK-TO DISEMBARK LEAVE EXIT>
<EQUAL? ,HERE ,LABORATORY>
<NOT <FSET? ,CAGE ,MUNGBIT>>>
<TELL "You don't fit between the bars." CR>)
(<OR <VERB? OPEN MUNG BEND>
<AND <VERB? MOVE>
<NOT <NOUN-USED ,W?CAGE ,CAGE>>>>
<COND (<FSET? ,CAGE ,MUNGBIT>
<TELL ,SENILITY-STRIKES>)
(<NOT ,GONE-APE>
<TELL
"This cage was built to hold an ape! Mere human strength is
nothing against these bars!" CR>)
(T
<TELL "Bellowing madly, you pull at the bars! ">
<COND (<EQUAL? ,SUGAR-RUSH ,GORILLA-ATE-CHOCOLATE>
<FSET ,CAGE ,MUNGBIT>
<TELL "Slowly, they" ,SPREAD-APART ".">
<COND (<IN? ,MAD-SCIENTIST ,HERE>
<TELL " The " 'MAD-SCIENTIST>
<JIGS-UP
" yells, \"Mein Gott! Mad gorilla on der loose!\" He pulls out a ray
gun and puts a bolt through your chest.">)
(T
<CRLF>)>)
(T
<TELL
"They almost give, but you haven't got quite enough strength." CR>)>)>)
(<AND <VERB? PUT>
<PRSI? ,CAGE>
<EQUAL? <LOC ,PROTAGONIST> ,FIRST-SLAB ,SECOND-SLAB>>
<CANT-REACH ,CAGE>)
(<VERB? REACH-IN>
<COND (<IN? ,PROTAGONIST ,CAGE>
<TELL ,LOOK-AROUND>)
(<IN? ,RUBBER-HOSE ,CAGE>
<CANT-REACH ,RUBBER-HOSE>)>)>>
<GLOBAL BODY-TIED-TO-SLAB <>>
<GLOBAL SIDEKICKS-BODY-TIED-TO-SLAB <>>
<GLOBAL GONE-APE <>>
<GLOBAL GORILLA-EXAMINED <>>
<OBJECT MALE-GORILLA
(IN CAGE)
(DESC "male gorilla")
(SYNONYM GORILLA APE MONKEY)
(ADJECTIVE MALE OTHER)
(FLAGS ACTORBIT NDESCBIT OPENBIT CONTBIT SEARCHBIT)
(GENERIC GENERIC-GORILLA-F)
(ACTION GORILLA-F)>
<OBJECT FEMALE-GORILLA
(IN CAGE)
(DESC "female gorilla")
(SYNONYM GORILLA APE MONKEY)
(ADJECTIVE FEMALE OTHER)
(FLAGS ACTORBIT FEMALEBIT NDESCBIT OPENBIT CONTBIT SEARCHBIT)
(GENERIC GENERIC-GORILLA-F)
(ACTION GORILLA-F)>
<ROUTINE GORILLA-F ()
<COND (<AND ,GONE-APE
,MALE
<PRSO? ,MALE-GORILLA>>
<PERFORM-PRSA ,ME ,PRSI>
<RTRUE>)
(<AND ,GONE-APE
,MALE
<PRSI? ,MALE-GORILLA>>
<PERFORM-PRSA ,PRSO ,ME>
<RTRUE>)
(<AND ,GONE-APE
<NOT ,MALE>
<PRSO? ,FEMALE-GORILLA>>
<PERFORM-PRSA ,ME ,PRSI>
<RTRUE>)
(<AND ,GONE-APE
<NOT ,MALE>
<PRSI? ,FEMALE-GORILLA>>
<PERFORM-PRSA ,PRSO ,ME>
<RTRUE>)
(<VERB? TELL>
<TELL "\"Ooo oo ee ee ee!\"" CR>
<STOP>)
(<AND <VERB? GIVE>
<PRSI? ,MALE-GORILLA ,FEMALE-GORILLA>>
<COND (<EQUAL? <LOC ,PROTAGONIST> ,FIRST-SLAB ,SECOND-SLAB>
<CANT-REACH ,PRSI>)
(T
<EAGERLY-ACCEPTS>
<TELL ,PERIOD-CR>)>)
(<VERB? EXAMINE>
<COND (,GONE-APE
<SETG GORILLA-EXAMINED T>
<NOT-BAD-LOOKING>)
(T
<TELL "An uglier beast cannot possibly exist.">)>
<COND (<FIRST? ,PRSO>
<TELL " ">
<RFALSE>)
(T
<CRLF>)>)
(<VERB? FUCK KISS TOUCH>
<COND (<NOT ,GONE-APE>
<TELL "What a repulsive, bestial idea!" CR>)
(T
<COND (<EQUAL? ,NAUGHTY-LEVEL 0>
<TELL
"Normally, we wouldn't allow this in TAME mode, but it's okay in this
case since you're only a gorilla. This sort of thing appears all
the time in National Geographic.">)
(T
<COND (<NOT ,GORILLA-EXAMINED>
<SETG GORILLA-EXAMINED T>
<NOT-BAD-LOOKING>
<TELL " ">)>
<TELL
"You begin nuzzling, and things quickly get hot and heavy.">
<COND (<EQUAL? ,NAUGHTY-LEVEL 2>
<TELL
" The " 'PRSO " screams, \"Eee oo oo ah!\" which translates roughly
as \"Oh, you animal!\"">)>)>
<COND (<IN? ,MAD-SCIENTIST ,HERE>
<TELL " ">
<MINE-THEORY T>)
(T
<CRLF>)>)>)>>
<ROUTINE GENERIC-GORILLA-F ()
<COND (<NOT ,GONE-APE>
<RFALSE>)
(,MALE
<RETURN ,FEMALE-GORILLA>)
(T
<RETURN ,MALE-GORILLA>)>>
<ROUTINE NOT-BAD-LOOKING ()
<TELL "Hey! The " 'PRSO " isn't bad-looking!">>
<ROUTINE MINE-THEORY ("OPTIONAL" (RIGHT <>))
<REMOVE ,MAD-SCIENTIST>
<DEQUEUE I-MAD-SCIENTIST>
<SETG FOLLOW-FLAG 17>
<QUEUE I-FOLLOW 2>
<TELL "\"Ach!\" yells" T ,MAD-SCIENTIST ", \"mein theory iss ">
<COND (.RIGHT
<TELL "correct">)
(T
<TELL "wronk">)>
<TELL "! Der sex drive uf a species resides in der b">
<COND (.RIGHT
<TELL "ody">)
(T
<TELL "rain">)>
<TELL ", not in der b">
<COND (.RIGHT
<TELL "rain">)
(T
<TELL "ody">)>
<TELL "!\" He dashes off." CR>
<COND (<VISIBLE? ,SIDEKICKS-BODY>
<TELL
" Through the briefly open door, you see two " 'FLYTRAP "s running madly
around the next room. One is chasing, while the other is frantically trying
to stay as far away as possible." CR>)>
<RTRUE>>
<OBJECT RUBBER-HOSE
(IN CAGE)
(DESC "rubber hose")
(SYNONYM HOSE)
(ADJECTIVE RUBBER)
(SIZE 3)
(FLAGS TAKEBIT)
(ACTION RUBBER-HOSE-F)>
<ROUTINE RUBBER-HOSE-F ()
<COND (<VERB? EXAMINE MEASURE>
<TELL "The hose is around six feet long." CR>)
(<VERB? LOOK-INSIDE>
<TELL ,ONLY-BLACKNESS>)>>
<OBJECT FIRST-SLAB
(IN LABORATORY)
(DESC "first slab")
(SYNONYM SLAB)
(ADJECTIVE FIRST)
(FLAGS NDESCBIT VEHBIT CONTBIT SURFACEBIT OPENBIT SEARCHBIT)
(GENERIC GENERIC-SLAB-F)
(CAPACITY 100)
(ACTION FIRST-SLAB-F)>
<ROUTINE FIRST-SLAB-F ()
<COND (<AND <VERB? DISEMBARK>
<NOT ,GONE-APE>
,BODY-TIED-TO-SLAB>
<TELL "You're strapped down." CR>)
(<AND <VERB? PUT-ON>
<PRSI? ,FIRST-SLAB>
<IN? ,PROTAGONIST ,CAGE>>
<CANT-REACH ,FIRST-SLAB>)>>
<OBJECT SECOND-SLAB
(IN LABORATORY)
(DESC "second slab")
(SYNONYM SLAB)
(ADJECTIVE SECOND)
(GENERIC GENERIC-SLAB-F)
(CAPACITY 100)
(FLAGS NDESCBIT VEHBIT CONTBIT SURFACEBIT OPENBIT SEARCHBIT)
(ACTION SECOND-SLAB-F)>
<ROUTINE SECOND-SLAB-F ()
<COND (<AND <VERB? PUT-ON>
<PRSI? ,SECOND-SLAB>
<IN? ,PROTAGONIST ,CAGE>>
<CANT-REACH ,SECOND-SLAB>)>>
<ROUTINE GENERIC-SLAB-F ()
<COND (<EQUAL? <LOC ,PROTAGONIST> ,FIRST-SLAB ,SECOND-SLAB>
<RETURN <LOC ,PROTAGONIST>>)
(T
<RFALSE>)>>
<OBJECT YOUR-BODY
(DESC "your body")
(SYNONYM BODY)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT CONTBIT ACTORBIT SEARCHBIT OPENBIT)
(ACTION YOUR-BODY-F)>
<ROUTINE YOUR-BODY-F ()
<COND (<VERB? TELL>
<PERFORM-PRSA ,MALE-GORILLA>
<RTRUE>)
(<VERB? EXAMINE>
<TELL "Your body">
<COND (<IN? ,YOUR-BODY ,FIRST-SLAB>
<TELL " on" T ,FIRST-SLAB>)>
<TELL
" is grunting, scratching itself with its foot, and looking
around the room for a banana." CR>)
(<AND <VERB? GIVE>
<PRSI? ,YOUR-BODY>>
<EAGERLY-ACCEPTS>
<TELL ,PERIOD-CR>)
(<AND <VERB? TAKE>
<PRSO? ,YOUR-BODY>>
<TELL "Carrying " 'YOUR-BODY " around">
<HO-HUM>)
(<AND <VERB? TIE>
<PRSO? ,FIRST-SLAB ,SECOND-SLAB>
<NOT ,BODY-TIED-TO-SLAB>>
<COND (<PRSO? ,SECOND-SLAB>
<TELL "[the first slab is closer]" CR>)>
<SETG BODY-TIED-TO-SLAB T>
<NOW-TIED ,FIRST-SLAB>)
(<VERB? UNTIE>
<COND (<IN? ,PROTAGONIST ,CAGE>
<CANT-REACH ,YOUR-BODY>)
(,GONE-APE
<COND (,BODY-TIED-TO-SLAB
<SETG BODY-TIED-TO-SLAB <>>
<TELL
"Your body leaps for a rafter and lands back on" T ,FIRST-SLAB " with a loud
\"whump,\" looking momentarily stunned." CR>)
(T
<TELL ,SENILITY-STRIKES>)>)
(,BODY-TIED-TO-SLAB
<YUKS>)
(T
<TELL "Your body isn't tied down!" CR>)>)>>
<OBJECT SIDEKICKS-BODY
(SDESC "")
(SYNONYM BODY TRENT TIFFAN TIFF)
(ADJECTIVE TRENT TIFFAN TIFF\'S)
(FLAGS NARTICLEBIT CONTBIT ACTORBIT SEARCHBIT OPENBIT)
(GENERIC GENERIC-SIDEKICK-F)
(ACTION SIDEKICKS-BODY-F)>
<ROUTINE SIDEKICKS-BODY-F ()
<COND (<VERB? EXAMINE>
<HIS-HER T>
<TELL
" eyes are darting around the room, as though following a fly." CR>)
(<VERB? TIE>
<COND (<AND <PRSO? ,SECOND-SLAB>
,SIDEKICKS-BODY-TIED-TO-SLAB>
<TELL D ,SIDEKICK " already is!" CR>)
(<AND <PRSO? ,SECOND-SLAB>
,GONE-APE>
<SETG SIDEKICKS-BODY-TIED-TO-SLAB T>
<NOW-TIED ,SECOND-SLAB>)
(T
<WASTES>)>)
(<VERB? UNTIE>
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CAGE ,FIRST-SLAB>
<CANT-REACH ,SIDEKICKS-BODY>)
(,GONE-APE
<COND (,SIDEKICKS-BODY-TIED-TO-SLAB
<SETG SIDEKICKS-BODY-TIED-TO-SLAB <>>
<TELL
"As you untie " D ,SIDEKICKS-BODY ", it attempts to wrap
its arms around you as though they were tentacles." CR>)
(T
<TELL ,SENILITY-STRIKES>)>)
(T
<TELL D ,SIDEKICKS-BODY " isn't tied down!" CR>)>)>>
<ROOM ROCKY-CLIFFTOP
(IN ROOMS)
(DESC "Rocky Clifftop")
(NW TO VIZICOMM-BOOTH)
(NORTH TO BACK-DOOR)
(WEST TO FRONT-DOOR)
(DOWN
"Stepping off the cliff would mean a fatal plunge to the jungle below.")
(EAST
"Stepping off the cliff would mean a fatal plunge to the jungle below.")
(SE
"Stepping off the cliff would mean a fatal plunge to the jungle below.")
(SOUTH
"Stepping off the cliff would mean a fatal plunge to the jungle below.")
(FLAGS RLANDBIT ONBIT)
(GLOBAL HOLE TREE BOOTH-OBJECT VENUS)
(HOLE-DESTINATION ROYAL-DOCKS)
(ACTION ROCKY-CLIFFTOP-F)
(THINGS <PSEUDO (ROCKY CLIFF CLIFF-OBJECT-F)>)>
<ROUTINE ROCKY-CLIFFTOP-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Even the most adaptable Venusian flora can't gain a foothold on this
outcropping, so the jungle (which can be entered to the north or west)
peters out here. To the southeast, your clifftop vantage offers a stunning
view of more lush jungle, stretching unbroken to the horizon.|
To the northwest, between the two paths into the jungle, is a vizicomm
booth. At the edge of the cliff is" A ,HOLE ".">)
(<AND <EQUAL? .RARG ,M-END>
,GONE-APE>
<JIGS-UP
" A tranquilizer dart pierces your rump and you spend your remaining years
in the gorilla cage of the Venusian Planetary Zoo.">)>>
<ROUTINE CLIFF-OBJECT-F ()
<COND (<VERB? LEAP-OFF>
<SETG PRSO <>>
<V-LEAP>)
(<VERB? EXAMINE>
<V-LOOK>)>>
<OBJECT BOOTH-OBJECT
(IN LOCAL-GLOBALS)
(DESC "booth")
(SYNONYM BOOTH)
(ADJECTIVE VIZICOMM SMALL)
(ACTION BOOTH-OBJECT-F)>
<ROUTINE BOOTH-OBJECT-F ()
<COND (<VERB? ENTER WALK-TO BOARD>
<COND (<EQUAL? ,HERE ,ROCKY-CLIFFTOP>
<DO-WALK ,P?NW>)
(<EQUAL? ,HERE ,VIZICOMM-BOOTH>
<TELL ,LOOK-AROUND>)>)
(<VERB? LEAVE EXIT DISEMBARK>
<COND (<EQUAL? ,HERE ,ROCKY-CLIFFTOP>
<TELL ,LOOK-AROUND>)
(T
<DO-WALK ,P?SE>)>)
(<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,VIZICOMM-BOOTH>>
<V-LOOK>)
(<VERB? SEARCH>
<TELL ,NOTHING-NEW>)
(<AND <VERB? LOOK-INSIDE>
<EQUAL? ,HERE ,ROCKY-CLIFFTOP>>
<TELL ,CANT-FROM-HERE>)>>
<ROOM VIZICOMM-BOOTH
(IN ROOMS)
(DESC "Vizicomm Booth")
(SE TO ROCKY-CLIFFTOP)
(OUT TO ROCKY-CLIFFTOP)
(FLAGS ONBIT RLANDBIT)
(GLOBAL SIGN BOOTH-OBJECT VENUS)
(ACTION VIZICOMM-BOOTH-F)
(THINGS <PSEUDO (<> DIAL DIAL-F)
(COIN SLOT COIN-SLOT-F)>)>
<ROUTINE VIZICOMM-BOOTH-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This small booth, which opens to the southeast, contains" ,VIZICOMM-DESC
" A red sign is posted over the vizicomm.">)
(<AND <EQUAL? .RARG ,M-END>
,GONE-APE
<VISIBLE? ,FLEXIBLE-HOLE>>
;"since trank dart doesn't usually get you until Clifftop"
<ROCKY-CLIFFTOP-F ,M-END>)>>
<OBJECT VIZICOMM
(IN VIZICOMM-BOOTH)
(DESC "vizicomm")
(SYNONYM VIZICOMM)
(ADJECTIVE PAY)
(FLAGS NDESCBIT)
(ACTION VIZICOMM-F)>
<ROUTINE VIZICOMM-F ()
<COND (<VERB? EXAMINE>
<TELL "It's" ,VIZICOMM-DESC CR>)
(<VERB? SET>
<TELL "The dial is stuck and won't turn." CR>)>>
<ROUTINE DIAL-F ()
<COND (<VERB? SET MOVE>
<PERFORM ,V?SET ,VIZICOMM>
<RTRUE>)
(<VERB? TAKE>
<TELL ,PART-OF-VIZICOMM>)>>
<ROUTINE COIN-SLOT-F ()
<COND (<VERB? TAKE>
<TELL ,PART-OF-VIZICOMM>)
(<VERB? LOOK-INSIDE>
<TELL ,ONLY-BLACKNESS>)
(<AND <VERB? PUT>
<PRSO? ,TEN-MARSMID-COIN ,ONE-MARSMID-COIN>>
<MOVE ,PRSO ,COIN-RETURN-KNOB>
<TELL "\"Clink.\"" CR>)>>
<OBJECT HANDSET
(IN VIZICOMM-BOOTH)
(DESC "handset")
(SYNONYM HANDSET)
(FLAGS NDESCBIT)
(ACTION HANDSET-F)>
<ROUTINE HANDSET-F ()
<COND (<VERB? PICK-UP LISTEN RAISE PICK-UP>
<TELL "There's no dial tone." CR>)
(<VERB? TAKE>
<TELL ,PART-OF-VIZICOMM>)>>
<OBJECT COIN-RETURN-KNOB
(IN VIZICOMM-BOOTH)
(DESC "coin return knob")
(SYNONYM KNOB)
(ADJECTIVE COIN RETURN)
(FLAGS NDESCBIT)
(ACTION COIN-RETURN-KNOB-F)>
<ROUTINE COIN-RETURN-KNOB-F ("AUX" (COIN <>))
<COND (<VERB? PUSH MOVE SET>
<COND (<SET COIN <FIRST? ,COIN-RETURN-KNOB>>
<MOVE .COIN ,COIN-RETURN-BOX>
<TELL "\"Clank.\"" CR>)
(T
<TELL ,NOTHING-HAPPENS>)>)
(<VERB? TAKE>
<TELL ,PART-OF-VIZICOMM>)>>
<OBJECT COIN-RETURN-BOX
(IN VIZICOMM-BOOTH)
(DESC "coin return box")
(SYNONYM BOX)
(ADJECTIVE COIN RETURN)
(FLAGS NDESCBIT CONTBIT)
(CAPACITY 1)
(ACTION COIN-RETURN-BOX-F)>
<ROUTINE COIN-RETURN-BOX-F ("AUX" (COIN <>))
<COND (<VERB? LOOK-INSIDE REACH-IN SEARCH OPEN>
<COND (<SET COIN <FIRST? ,COIN-RETURN-BOX>>
<MOVE .COIN ,HERE>
<THIS-IS-IT .COIN>
<TELL "A coin falls to the ground!" CR>)
(T
<TELL
"The box is empty. Upon letting go, it swings shut." CR>)>)>>
<OBJECT TEN-MARSMID-COIN
(IN COIN-RETURN-KNOB)
(DESC "coin")
(SYNONYM COIN MARSMID MONEY)
(ADJECTIVE TEN MARSMID)
(FLAGS TAKEBIT READBIT)
(GENERIC GENERIC-COIN-F)
(TEXT "The coin reads \"Ten Marsmids.\"")>
<OBJECT ONE-MARSMID-COIN
(DESC "coin")
(SYNONYM COIN MARSMID MONEY)
(ADJECTIVE ONE MARSMID)
(FLAGS TAKEBIT READBIT)
(GENERIC GENERIC-COIN-F)
(TEXT "The coin reads \"One Marsmid.\"")>
<ROUTINE GENERIC-COIN-F () ;"ambiguity can occur due to MOBY-FIND verbs"
,ONE-MARSMID-COIN>