spellbreaker/c1.zil

1920 lines
57 KiB
Plaintext

"C1 for
MAGE
(c) Copyright 1985 Infocom, Inc. All Rights Reserved."
<OBJECT BURIN
(IN PLAYER)
(DESC "magic burin")
(SYNONYM BURIN SCRIBE ENGRAVE)
(ADJECTIVE SHARP MAGIC)
(FLAGS TAKEBIT MAGICBIT TOUCHBIT TOOLBIT WEAPONBIT)
(ACTION BURIN-F)>
<ROUTINE BURIN-F ()
<COND (<VERB? EXAMINE>
<TELL
"This is a magical burin, used for inscribing objects with words or runes
of magical import. Such a burin also gives you the ability to write
spell scrolls." CR>)
(<VERB? WHAT>
<TELL
"A burin is an engraving and writing tool." CR>)>>
<ROOM DULL-ROOM
(IN ROOMS)
(DESC "Nondescript Room")
(OUT PER DULL-ROOM-EXIT)
(SOUTH PER DULL-ROOM-EXIT)
(ACTION DULL-ROOM-F)
(FLAGS RLANDBIT)>
<ROUTINE DULL-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a drab, nondescript room. The only exit leads south." CR>)
(<EQUAL? .RARG ,M-LEAVE>
<RECOVER-CUBE>)>>
<ROUTINE DULL-ROOM-EXIT ()
<COND (<EQUAL? ,DULL-ROOM-RETURN ,CASTLE>
<MAGIC-DOOR-EXIT>)
(ELSE ,DULL-ROOM-RETURN)>>
<GLOBAL DULL-ROOM-RETURN:OBJECT <>>
"EARTH"
<OBJECT EARTH-CUBE
(DESC "cube")
(SYNONYM CUBE CUBES)
(ADJECTIVE AQ ;C1 SMALL FEATURELESS WHITE)
(NAME 0)
(TEXT "moles")
(FLAGS INVISIBLE TAKEBIT)
(ACTION CUBE-F)
(DESCFCN CUBE-DESC)
(GENERIC GENERIC-CUBE-F)
(CUBE EARTH-ROOM)>
<ROOM EARTH-ROOM
(IN ROOMS)
(DESC "Packed Earth")
(NORTH PER MAGIC-BOX-EXIT)
(EAST TO HALL-OF-STONE)
(WEST TO CAVE-ENTRANCE)
(SOUTH TO CLIFF-MIDDLE)
(DOWN PER MIDAIR-EXIT)
(CUBE EARTH-CUBE)
(ACTION EARTH-ROOM-F)
(FLAGS RLANDBIT)
(GLOBAL GLOBAL-HOLE)
(THINGS
<PSEUDO (PACKED EARTH RANDOM-PSEUDO)
(<> MUD RANDOM-PSEUDO)
(<> SOD RANDOM-PSEUDO)
(LEATHER THONG RANDOM-PSEUDO)
(LEATHER THONGS PLURAL-PSEUDO)>)>
<ROUTINE EARTH-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a small room crudely constructed of packed earth, mud, and sod.
Crudely framed openings of wood tied with leather thongs lead off in each
of the four cardinal directions, and a muddy hole leads down." CR>)
(<EQUAL? .RARG ,M-LEAVE>
<RECOVER-CUBE>)>>
<ROOM HALL-OF-STONE
(IN ROOMS)
(DESC "Hall of Stone")
(NORTH TO SOUTH-SNAKE-ROOM)
(SOUTH TO RUINS-ROOM)
(ACTION HALL-OF-STONE-F)
(FLAGS RLANDBIT)
(THINGS
<PSEUDO (MOULDERING RUIN RUINS-PSEUDO)
(STONE BLOCKS RUINS-PSEUDO)
(DRESSED STONE RUINS-PSEUDO)>)>
<ROUTINE HALL-OF-STONE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a long hall built of crudely dressed stone. The blocks are as tall
as you and the ceiling invisible in the gloom above. Dirt trickles from gaps
in the walls and ceiling. The atmosphere is oppressive, and there is a dry,
stale smell all around. The corridor extends north and south from here." CR>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? SMELL> <NOT ,PRSO>>
<TELL
"It smells dry and stale." CR>)>)>>
<ROOM NORTH-SNAKE-ROOM
(IN ROOMS)
(DESC "North of Serpent")
(SOUTH PER SNAKE-ROOM-EXIT)
(NORTH TO TEMPLE-ROOM)
(EAST PER SNAKE-ROOM-EXIT)
(WEST PER SNAKE-ROOM-EXIT)
(ACTION SNAKE-ROOM-F)
(FLAGS RLANDBIT)
(GLOBAL SNAKE)
(THINGS <PSEUDO (SNAKE EYE SNAKE-EYE-PSEUDO)
(SERPENT EYE SNAKE-EYE-PSEUDO)
(SNAKE MOUTH RANDOM-PSEUDO)
(SERPENT MOUTH RANDOM-PSEUDO)
(SNAKE SCALES SNAKE-SCALES-PSEUDO)
(SERPENT SCALES SNAKE-SCALES-PSEUDO)>)>
<ROUTINE SNAKE-EYE-PSEUDO ()
<REDIRECT ,PSEUDO-OBJECT ,EYES>>
<ROUTINE SNAKE-SCALES-PSEUDO ()
<COND (<OR <VERB? EXAMINE>
<HOSTILE-VERB?>>
<HACK-SNAKE>)>>
<ROUTINE HACK-SNAKE ()
<TELL "The steel-like scales are ">
<COND (<VERB? RUB>
<TELL "cool to the touch">)
(ELSE
<TELL
"impervious to your puny strength">)>
<TELL ,PERIOD>>
<ROOM SOUTH-SNAKE-ROOM
(IN ROOMS)
(DESC "Smooth Room")
(NORTH PER SNAKE-ROOM-EXIT)
(SOUTH TO HALL-OF-STONE)
(EAST PER SNAKE-ROOM-EXIT)
(WEST PER SNAKE-ROOM-EXIT)
(ACTION SNAKE-ROOM-F)
(FLAGS RLANDBIT)
(GLOBAL SNAKE)
(THINGS <PSEUDO (SNAKE EYE SNAKE-EYE-PSEUDO)
(SERPENT EYE SNAKE-EYE-PSEUDO)
(SNAKE MOUTH RANDOM-PSEUDO)
(SERPENT MOUTH RANDOM-PSEUDO)
(SNAKE SCALES SNAKE-SCALES-PSEUDO)
(SERPENT SCALES SNAKE-SCALES-PSEUDO)>)>
<ROUTINE SNAKE-ROOM-EXIT ()
<COND (<EQUAL? ,SHRINK-FLAG ,SNAKE>
<COND (<EQUAL? ,P-WALK-DIR ,P?NORTH ,P?SOUTH>
<TELL
"The snake is pleasurably stretching its
mouth and rippling its scaly body in the unaccustomed space.
It barely hisses as you go by." CR CR>
<COND (<EQUAL? ,HERE ,SOUTH-SNAKE-ROOM>
,NORTH-SNAKE-ROOM)
(ELSE
,SOUTH-SNAKE-ROOM)>)
(ELSE
<TELL
"Avoiding the snake, you carefully head "
<COND (<EQUAL? ,P-WALK-DIR ,P?EAST> "east")
(ELSE "west")> ". The corridor is smooth
and circular. It eventually leads back to where you started." CR CR>
,HERE)>)
(<EQUAL? ,P-WALK-DIR ,P?NORTH ,P?SOUTH>
<TELL
"The serpent completely fills the passage." CR>
<RFALSE>)
(ELSE
<TELL
"The serpent fills the entire corridor. There is no space to
squeeze by." CR>
<RFALSE>)>>
<ROUTINE SNAKE-ROOM-F (RARG "AUX" N?)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Here a long north-south corridor meets an east-west cross corridor
whose walls are polished to almost mirror smoothness.
Just to your ">
<COND (<SET N? <EQUAL? ,HERE ,NORTH-SNAKE-ROOM>>
<TELL "south">)
(ELSE <TELL "north">)>
<COND (<EQUAL? ,SHRINK-FLAG ,SNAKE>
<TELL
" is a large snake whose head pokes out of one side of
the cross corridor and the tip of whose tail pokes out the other side.
You can see that ahead is more of the crudely built main hall, and beyond
that is a dark area.">)
(ELSE
<TELL
" is a huge scaly mass which fills the entire cross
corridor. Its thickness is more than three times your height and
its length is unguessable.">)>
<CRLF>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<NOT <FSET? ,SOUTH-SNAKE-ROOM ,TOUCHBIT>>
<QUEUE I-SNAKE 1>)>)>>
<OBJECT SNAKE
(IN LOCAL-GLOBALS)
(DESC "serpent")
(SYNONYM SERPENT SNAKE MASS CREATURE)
(ADJECTIVE HUGE LARGE SCALY MONSTER)
(ACTION SNAKE-F)
(SIZE 200)
(FLAGS NDESCBIT PERSON THE TAKEBIT TRYTAKEBIT VEHBIT)>
<ROUTINE SNAKE-F ()
<COND (<EQUAL? ,WINNER ,SNAKE>
<COND (<TIME-FROZEN?>
<IMMOBILE>
<RTRUE>)
(ELSE
<TELL
"\"Sssss...\" You can't understand the " 'SNAKE ,PERIOD>)>
<END-QUOTE>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,SNAKE ,SHRINK-FLAG>
<TELL
"The snake is no longer gargantuan. Its tail sticks
out one side of the corridor and its head the other, no longer filling
the corridor.">)
(ELSE
<TELL
"It is huge, filling the entire corridor it occupies.">
<COND (<NOT <TIME-FROZEN?>>
<TELL " It stares at you
balefully, hissing like a small steam engine. It appears completely
unconcerned that it has swallowed its own tail.">)>)>
<COND (<TIME-FROZEN?>
<TELL " ">
<IMMOBILE>
<RTRUE>)>
<CRLF>)
(<VERB? BOARD CLIMB-FOO CLIMB-UP CLIMB-OVER CLIMB-ON>
<TELL
"The scales are too slippery">
<COND (<NOT <TIME-FROZEN?>>
<TELL ", and the serpent's eye fixes you with
a stare that removes much of your interest in getting that close">)
(ELSE
<TELL ". ">
<IMMOBILE>
<RTRUE>)>
<TELL ,PERIOD>)
(<VERB? LISTEN>
<TELL
"It sounds like a leaky steam engine." CR>)
(<HOSTILE-VERB?>
<HACK-SNAKE>)
(<VERB? THROW-OFF>
<COND (<NOT <EQUAL? ,SHRINK-FLAG ,SNAKE>>
<MOVE ,PRSO ,HERE>
<TELL
CTHE ,PRSO " hits the snake and drops to the floor." CR>)
(ELSE
<PERFORM ,V?THROW ,PRSO>
<RTRUE>)>)
(<VERB? GIVE>
<UNINTERESTED ,SNAKE>)
(<VERB? RUB>
<HACK-SNAKE>)
(<VERB? TAKE>
<TELL
"The creature is taller than a house, and longer than the tallest tree
is tall." CR>)
(<VERB? FROTZ>
<TELL
"The snake glows dimly as the spell stretches to cover it, but then the
glow winks out." CR>)
(<VERB? LISKON>
<COND (<EQUAL? ,SHRINK-FLAG ,SNAKE>
<TELL ,NOTHING-HAPPENS>)
(<NOT <PRE-LISKON>>
<SETG SHRINK-FLAG ,SNAKE>
<QUEUE I-LISKON 15>
<TELL
"The serpent shrinks. You can see it thinning out, filling
less and less of the corridor. At first it doesn't seem to be growing
any shorter, but then you realize that this isn't true.
It has swallowed so much of its own tail that it makes up
the deficiency by disgorging more tail. Finally, just before the spell
stops, the tail tip slips out of the snake's mouth and almost disappears
down the western corridor." CR>)>)
(<VERB? SNAVIG>
<SETG AWAKE 5>
<QUEUE I-TIRED 5>
<TELL
"The spell strains to change you into a serpent, but you're just too
small. Finally, you snap back to your normal appearance, and you feel
very, very tired." CR>)
(<VERB? GIRGOL>
<COND (<EQUAL? ,SHRINK-FLAG ,SNAKE>
<TELL ,NOTHING-HAPPENS>)>)
(<VERB? YOMIN>
<TELL CTHE ,SNAKE " is ">
<COND (<EQUAL? ,SHRINK-FLAG ,SNAKE>
<TELL
"almost overcome by the sheer joy of being
able to writhe and stretch." CR>)
(ELSE
<TELL
"bored, constricted, and caged. It's in a surly mood, thinking of
its past. It was once a simple temple snake, well fed on sacrifices. It
was too well fed, for it grew great, and its pride grew as well. For
declaring itself the greatest of snakes, it was prisoned here, forced to
swallow its own tail in mimicry of the true master of serpents. That was an
age ago." CR>)>)
(<VERB? ESPNIS>
<TELL
"The snake yawns briefly, but the spell is too attenuated by the creature's
huge mass to do more." CR>)>>
<ROOM TEMPLE-ROOM
(IN ROOMS)
(DESC "Temple")
(SOUTH TO NORTH-SNAKE-ROOM)
(ACTION TEMPLE-ROOM-F)
(FLAGS RLANDBIT)
(THINGS
<PSEUDO (BLACK PILLAR RUINS-PSEUDO)
(BASALT PILLAR RUINS-PSEUDO)
(BROKEN PILLAR RUINS-PSEUDO)
(MOULDERING RUIN RUINS-PSEUDO)
(HUGE FRAGMENT RUINS-PSEUDO)
(<> RAFTER RUINS-PSEUDO)
(<> BATS PLURAL-PSEUDO)
(<> BAT RANDOM-PSEUDO)
(BAT GUANO RANDOM-PSEUDO)>)>
<ROUTINE TEMPLE-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a ruined temple to a forgotten god. Black basalt pillars
reach to the ceiling, but some are broken and lie in huge fragments on the
ground. The air is stale and filled with the odor of decay. Bats roost in
the rafters, the only remaining worshippers. Before the temple "
<COND (,IDOL-ASLEEP? "rests")(T "stands")> " a tall basalt
idol in the form of a huge rodent. Its fang-bedecked mouth is ">
<COND (,IDOL-YAWNING?
<TELL "open in an embarrassing yawn.">)
(,IDOL-ASLEEP?
<TELL "closed tightly.">)
(ELSE
<TELL "open slightly, exposing teeth and tongue.">)>
<CRLF>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? SMELL>
<EQUAL? ,PRSO <> ,GLOBAL-ROOM>>
<TELL
"It smells of decay, rot, and centuries-long accumulation of bat
guano." CR>)>)>>
<OBJECT IDOL
(IN TEMPLE-ROOM)
(DESC "rodent idol")
(SYNONYM IDOL GOD SCULPTURE STATUE)
(ADJECTIVE RODENT FORGOTTEN HUGE BASALT TALL)
(ACTION IDOL-F)
(FLAGS NDESCBIT ;SEARCHBIT VEHBIT TAKEBIT SURFACEBIT
THE TRYTAKEBIT CONTBIT OPENBIT)>
<GLOBAL IDOL-SLEEPED? <>> ;"HIT WITH SLEEP SPELL?"
<GLOBAL IDOL-YAWNING? <>> ;"YAWNING?"
<GLOBAL IDOL-ASLEEP? <>> ;"SOUND ASLEEP"
<ROUTINE IDOL-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-BEG>
<FSET ,MOUTH ,SEARCHBIT>
<COND (<OR <VERB? CLIMB-DOWN DISEMBARK>
<AND <VERB? WALK>
<EQUAL? ,P-WALK-DIR ,P?DOWN>>>
<MOVE ,PLAYER ,HERE>
<TELL
"You climb off the idol." CR>)
(<VERB? WALK>
<TELL
,YOU-HAVE-TO " climb down first." CR>)
(<AND <VERB? BOARD CLIMB-FOO CLIMB-ON CLIMB-UP THROUGH>
<EQUAL? ,PRSO ,IDOL>>
<TELL
"You are clinging to the idol already." CR>)
(<VERB? LEAP>
<MOVE ,PLAYER ,HERE>
<TELL
"You carelessly leap off the idol." CR>)
(<AND <VERB? TAKE>
<FSET? ,PRSO ,TAKEBIT>
<NOT-IN-VEHICLE?>>
<CANT-REACH-THAT>)
(<VERB? DROP>
<COND (<EQUAL? ,PRSO ,OPAL ,IDOL> <RFALSE>)
(<IDROP>
<MOVE ,PRSO ,HERE>
<TELL "Dropped." CR>)
(ELSE <RTRUE>)>)>)
(<NOT .RARG>
<FSET ,IDOL ,SEARCHBIT>
<COND (<VERB? EXAMINE>
<TELL
"The idol is carved of black basalt. It is about twenty feet tall and
represents a gigantic and ferocious rodent-like creature with sharp teeth
and one staring">
<COND (<AND <IN? ,OPAL ,IDOL>
<NOT ,OPAL-LOOSE?>>
<TELL " opalescent eye">)
(ELSE
<TELL ", empty eye socket">)>
<TELL ".">
<COND (<NOT <IN? ,PLAYER ,IDOL>>
<TELL
" The sculpture is rough enough to offer climbing holds.">)>
<COND (,IDOL-YAWNING?
<TELL
" Oddly, the idol is yawning, its mouth gaping open.">)
(,IDOL-ASLEEP?
<TELL
" The idol is sculpted as though sound asleep.">)>
<CRLF>)
(<AND <VERB? GIVE SEARCH TELL HELLO TAKE WAVE-AT>
<FSET? ,IDOL ,PERSON>>
<COND (<VERB? TELL>
<END-QUOTE>)>
<JIGS-UP ,IDOL-CRUSHES-YOU>)
(<VERB? TAKE>
<TELL
"The idol reaches all the way to the ceiling and is made of basalt. This
is beyond your strength." CR>)
(<HOSTILE-VERB?>
<COND (<FSET? ,IDOL ,PERSON>
<JIGS-UP ,IDOL-CRUSHES-YOU>)
(ELSE
<TELL ,WASTE-OF-TIME>)>)
(<VERB? LOOK-INSIDE>
<PERFORM ,PRSA ,MOUTH>
<RTRUE>)
(<VERB? KISS RUB>
<COND (<FSET? ,IDOL ,PERSON>
<JIGS-UP ,IDOL-CRUSHES-YOU>)
(ELSE
<TELL
"The idol is stonelike to the touch." CR>)>)
(<VERB? BOARD CLIMB-FOO CLIMB-ON CLIMB-UP>
<COND (<FSET? ,IDOL ,PERSON>
<JIGS-UP ,IDOL-CRUSHES-YOU>)
(ELSE
<MOVE ,PLAYER ,IDOL>
<COND (,IDOL-ASLEEP?
<TELL
"Okay, you are now on the sleeping idol." CR>)
(ELSE
<TELL
"You can find enough holds to climb all the way up to the head, where you
gaze warily at the idol's mouth." CR>)>)>)
(<VERB? MALYON>
<COND (<FSET? ,IDOL ,PERSON>
<TELL "It looks pretty animated to me." CR>)
(ELSE
<FSET ,MOUTH ,SEARCHBIT>
<TELL
"The idol quivers, comes to life,">
<COND (<ROB ,MOUTH <> ,AIR-CUBE>
<REMOVE ,AIR-CUBE>
<SETG LIT <LIT? ,HERE>>
<TELL " swallows,">)>
<COND (,IDOL-ASLEEP?
<TELL " gets to its feet">)>
<TELL " and ">
<COND (<IN? ,PLAYER ,IDOL>
<TELL
"notices you climbing on it (no doubt from
the itching). It grabs for you, and you try to escape. Its razor-sharp
claws snatch you up to its greedy mouth">
<COND (<IN? ,AIR-CUBE ,MOUTH>
<TELL
", where you can see the white
cube on its tongue as you are swallowed">)>
<TELL ".">
<JIGS-UP>)
(ELSE
<SETG IDOL-SLEEPED? <>>
<SETG IDOL-YAWNING? <>>
<SETG IDOL-ASLEEP? <>>
<QUEUE I-UNMALYON-IDOL 4>
<QUEUE I-IDOL 2>
<QUEUE I-FULL-YAWN 0>
<QUEUE I-IDOL-ASLEEP 0>
<FSET ,IDOL ,PERSON>
<TELL "begins ">
<TELL-IDOL-ACTION>
<TELL
" suspiciously (and hungrily) around. Fortunately it doesn't
notice you." CR>)>)>)
(<VERB? LISKON>
<COND (<FSET? ,IDOL ,PERSON>
<TELL
"While the idol appears to be made of \"malyoned\" basalt, it must actually
be made of something denser, as this spell has no effect on
it." CR>)>)
(<VERB? ESPNIS>
<TELL CTHE ,IDOL>
<COND (<FSET? ,IDOL ,PERSON>
<SETG IDOL-SLEEPED? T>
<QUEUE I-FULL-YAWN 2>
<QUEUE I-IDOL-ASLEEP 3>
<TELL
" suddenly looks very tired and begins to yawn. You can see the idol
fighting it but losing." CR>)
(ELSE
<TELL
" doesn't seem to be very wakeful to me." CR>)>)
(<VERB? YOMIN>
<COND (<FSET? ,IDOL ,PERSON>
<COND (<OR ,IDOL-SLEEPED?
,IDOL-YAWNING?
,IDOL-ASLEEP?>
<TELL
"You sense a great tiredness, as though these few exertions dissipated
a thousand years of strength." CR>)
(ELSE
<TELL
"You sense a raging anger at the abandonment of its temple, a desire for
the destruction of its former worshippers, and an incandescent hatred for
bats." CR>)>)>)
(<AND <VERB? SNAVIG>
<FSET? ,IDOL ,PERSON>>
<JIGS-UP
"You grow huge, fanged and angry. Then you turn into basalt. The
outcome is fatal.">)>)>>
<GLOBAL IDOL-CRUSHES-YOU
"The idol notices you! It crushes you to jelly, even though you aren't a bat.">
<OBJECT TEETH
(IN IDOL)
(DESC "fangs")
(SYNONYM TEETH FANGS FANG)
(ADJECTIVE IDOL\'S RAZOR SHARP)
(FLAGS NOABIT NDESCBIT)
(ACTION TEETH-F)>
<ROUTINE TEETH-F ()
<COND (<VERB? EXAMINE>
<TELL "They are razor sharp." CR>)
(<VERB? MUNG ATTACK>
<TELL "The teeth are stone hard." CR>)>>
<OBJECT MOUTH
(IN IDOL)
(DESC "mouth")
(SYNONYM MOUTH MAW)
(ADJECTIVE IDOL\'S GAPING)
(ACTION MOUTH-F)
(CONTFCN MOUTH-F)
(CAPACITY 10)
(FLAGS NDESCBIT ;SEARCHBIT OPENBIT CONTBIT)>
<ROUTINE MOUTH-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-CONTAINER>
<COND (<VERB? TAKE>
<COND (<NOT <IN? ,PLAYER ,IDOL>>
<TELL
,YOU-HAVE-TO " climb up to the mouth first." CR>)
(<FSET? ,IDOL ,PERSON>
<TELL
"The outcome would be fatal." CR>)
(,IDOL-ASLEEP?
<TELL
"The idol's mouth is shut tightly." CR>)
(<AND <EQUAL? ,PRSO ,AIR-CUBE>
<IN? ,AIR-CUBE ,MOUTH>>
<COND (,IDOL-YAWNING?
<COND (<EQUAL? <ITAKE> T>
<TELL ,TAKEN>)>
<RTRUE>)
(ELSE
<TELL
"You can see the cube, tantalizingly close, but your ">
<COND (<EQUAL? ,SHRINK-FLAG ,WINNER>
<TELL
"arm is too short to reach">)
(ELSE
<TELL
"hand is too big to fit between the razor-sharp teeth">)>
<TELL
". If only its mouth were open! Glancing at the size of the fangs, maybe
it's just as well." CR>)>)>)
(<VERB? MOVE PUSH>
<CANT-REACH-THAT>)>)
(<NOT .RARG>
<FSET ,MOUTH ,SEARCHBIT>
<COND (<VERB? EXAMINE LOOK-INSIDE>
<COND (<OR <IN? ,PLAYER ,IDOL>
,IDOL-ASLEEP?>
<TELL CTHE ,MOUTH " is ">
<COND (<NOT <FSET? ,MOUTH ,OPENBIT>>
<TELL "shut tight.">)
(,IDOL-YAWNING?
<TELL
"wide open in an almost parodic yawn. The tongue stretches
out of the mouth, and the fangs are far apart.">
<MOUTH-CONTENTS>)
(ELSE
<TELL
"slightly open. In the narrow space between the fangs you can
see a fat, pointed tongue.">
<MOUTH-CONTENTS>)>)
(ELSE
<TELL
,YOU-CANT-SEE "much from here.">)>
<CRLF>)
(<VERB? CLIMB-UP>
<PERFORM ,V?CLIMB-UP ,IDOL>
<RTRUE>)
(<VERB? OPEN CLOSE>
<TELL
"Not a chance." CR>)
(<VERB? REACH-IN>
<WONT-FIT>)
(<AND <VERB? PUT> <EQUAL? ,MOUTH ,PRSI>>
<COND (<AND <NOT ,IDOL-YAWNING?>
<OR <G? <GETP ,PRSO ,P?SIZE> 5>
<GETP ,PRSO ,P?NAME>>>
<WONT-FIT>)
(ELSE
<FCLEAR ,AIR-CUBE ,NDESCBIT>
<RFALSE>)>)
(<VERB? REZROV>
<TELL
"There's no hinge there; it's not a door!" CR>)>)>>
<ROUTINE WONT-FIT ()
<TELL "Your hand won't fit in." CR>>
<ROUTINE MOUTH-CONTENTS ("AUX" STR)
<SET STR " Sitting on the tongue">
<COND (<IN? ,AIR-CUBE ,MOUTH>
<TELL .STR " is " A ,AIR-CUBE ".">
<SET STR " Also in the mouth">)>
<CLEVER-CONTENTS ,MOUTH .STR ,AIR-CUBE>>
<OBJECT OPAL
(IN IDOL)
(DESC "opal eye")
(SYNONYM EYE)
(ADJECTIVE OPAL)
(ACTION OPAL-F)
(SIZE 10)
(FLAGS NDESCBIT TAKEBIT TRYTAKEBIT AN)>
<OBJECT OPAL-SHARD
(DESC "opal shard")
(SYNONYM EYE SHARD FRAGMENT)
(ADJECTIVE OPAL BROKEN)
(FLAGS TAKEBIT AN)>
<ROUTINE OPAL-F ()
<COND (<VERB? EXAMINE>
<COND (<IN? ,OPAL ,IDOL>
<TELL
"The eye glows opalescently in the light.">
<COND (<NOT <IN? ,PLAYER ,IDOL>>
<TELL
" It is near the top of the idol, nearly twenty feet up, but it still looks
large even at this distance.">)
(ELSE
<TELL
" The color may be attributed to the fact that the eye is actually
an opal of enormous size.">)>
<CRLF>)
(ELSE
<TELL
"This is the largest opal you have ever seen." CR>)>)
(<VERB? TAKE>
<COND (,OPAL-LOOSE? <RFALSE>)
(<NOT <IN? ,PLAYER ,IDOL>>
<CANT-REACH-THAT>)
(<IN? ,OPAL ,IDOL>
<TELL
"You scratch at the setting for a while without success." CR>)>)
(<AND <VERB? PRY>
<EQUAL? ,PRSO ,OPAL>
<IN? ,OPAL ,IDOL>>
<COND (<AND <NOT <IN? ,PLAYER ,IDOL>>
<NOT ,IDOL-ASLEEP?>>
<CANT-REACH-IT>)
(<EQUAL? ,PRSI ,KNIFE ,BURIN ,SHEARS>
<COND (<NOT <IN? ,PRSI ,WINNER>>
<NOT-HOLDING ,PRSI>)
(,OPAL-LOOSE?
<TELL ,IT-IS-ALREADY
"tottering, ready to fall, and trying to pry it again just
hastens the inevitable" ,PERIOD>)
(ELSE
<SETG OPAL-LOOSE? T>
<QUEUE I-OPAL-SMASHES 2>
<TELL
"The opal pops out of the eye socket. It is teetering on the edge of the
cruel and pointy nose of the idol, ready to fall." CR>)>)
(ELSE
<TELL
CTHE ,PRSI " doesn't appear equal to the task." CR>)>)
(<AND <HELD? ,OPAL>
<OR <VERB? THROW MUNG>
<AND <VERB? DROP>
<IN? ,WINNER ,IDOL>>>>
<REMOVE ,OPAL>
<MOVE ,OPAL-SHARD ,HERE>
<TELL "Broken." CR>)>>
<GLOBAL OPAL-LOOSE? <>>
<ROUTINE RUINS-PSEUDO ()
<COND (<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,PAST-RUINS-ROOM>
<TELL
"This place is abandoned and falling into ruin." CR>)
(ELSE
<TELL
"This place has been abandoned for centuries. It is a mouldering
ruin." CR>)>)>>
<OBJECT ZIPPER
(IN RUINS-ROOM)
(DESC "zipper")
(SYNONYM ZIPPER AABBCC ;"HOLE" POCKET POUCH)
(ADJECTIVE SILVER DIMLY LIT)
(ACTION ZIPPER-F)
(CONTFCN ZIPPER-F)
(GENERIC GENERIC-HOLE-F)
(FLAGS NDESCBIT VEHBIT TAKEBIT CONTBIT MAGICBIT)
(CAPACITY 1000)>
<GLOBAL ZIPPER-SCROLL? <>>
<ROUTINE ZIPPER-F ("OPTIONAL" (RARG <>) "AUX" OLIT ZLIT)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in a zipper. Clammy dark mist surrounds you. ">
<COND (<FSET? ,ZIPPER ,OPENBIT>
<TELL
"The zipper is open. ">
<CANT-SEE-OUTSIDE>)
(ELSE
<TELL-OPEN-CLOSED ,ZIPPER>)>)
(<EQUAL? .RARG ,M-CONTAINER>
<COND (<AND <VERB? TAKE PUT>
<NOT <IN? ,WINNER ,ZIPPER>>
<NOT <HELD? ,ZIPPER>>>
<DONT-HAVE-THAT>)
(<AND <VERB? READ EXAMINE>
<NOT <IN? ,WINNER ,ZIPPER>>>
<MAKE-OUT>)>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <NOT-IN-VEHICLE?>
<NOT <VERB? FIND WHAT WHERE WHO>>>
<TELL "That's not in here." CR>)
(<AND <VERB? LOOK-INSIDE> <EQUAL? ,PRSO ,ZIPPER>>
<PERFORM ,V?LOOK>
<RTRUE>)
(<VERB? BOARD REACH-IN>
<TELL ,YOU-ARE ,PERIOD>)
(<VERB? SIT>
<TELL
"There isn't a good place to sit here." CR>)
(<OR <VERB? EXIT>
<AND <VERB? WALK> <EQUAL? ,P-WALK-DIR ,P?OUT>>
<AND <VERB? THROUGH> <EQUAL? ,PRSO ,ZIPPER>>>
<PERFORM ,V?DISEMBARK>
<RTRUE>)
(<AND <VERB? OPEN REZROV>
<EQUAL? ,PRSO ,ZIPPER>
<NOT <FSET? ,ZIPPER ,OPENBIT>>>
<PUT <GETPT ,ZIPPER ,P?SYNONYM> 1 ,W?HOLE>
<FSET ,ZIPPER ,OPENBIT>
<TELL "Opened. ">
<CANT-SEE-OUTSIDE>)
(<AND <VERB? CLOSE>
<EQUAL? ,PRSO ,ZIPPER>
<FSET? ,ZIPPER ,OPENBIT>>
<PUT <GETPT ,ZIPPER ,P?SYNONYM> 1 ,W?ZIPPER>
<FCLEAR ,ZIPPER ,OPENBIT>
<TELL
,YOU-ARE-NOW "in a private little world of your own." CR>)
(<VERB? WALK>
<TELL
"There's nowhere to go in here." CR>)
(<OR <VERB? DISEMBARK>
<AND <VERB? DROP> <EQUAL? ,PRSO ,ZIPPER>>>
<COND (<FSET? ,ZIPPER ,OPENBIT>
<COND (<NOT <LOC ,ZIPPER>>
<EMERGE-AND-DROWN>)
(ELSE
<SETG LIT <LIT? ,HERE>>
<MOVE ,PLAYER <LOC ,ZIPPER>>
<MOVE ,ZIPPER ,PLAYER>
<TELL
"You get out of the hole." CR>
<COND (,OGRE-MURDEROUS?
<I-OGRE-KILLS-YOU>)>
<RTRUE>)>)
(ELSE
<TELL
,YOU-HAVE-TO " open the " 'ZIPPER " first." CR>)>)>)
(<NOT .RARG>
<SET OLIT ,LIT>
<COND (<VERB? EXAMINE>
<TELL
"This is a silver zipper about two feet long, with very fine teeth. ">
<TELL-OPEN-CLOSED ,ZIPPER>)
(<AND <VERB? OPEN REZROV>
<NOT <FSET? ,ZIPPER ,OPENBIT>>>
<PUT <GETPT ,ZIPPER ,P?SYNONYM> 1 ,W?HOLE>
<FSET ,ZIPPER ,OPENBIT>
<COND (<NOT ,LIT> <SETG LIT <LIT? ,HERE>>)>
<TELL
"Opening the zipper reveals a ">
<COND (<LIT? ,ZIPPER <>> <TELL "bright">)
(ELSE <TELL "dim">)>
<TELL "ly lit hole.">
<COND (<AND <NOT .OLIT> ,LIT>
<TELL " Enough rays escape to dimly light
the area.">)>
<CRLF>)
(<AND <VERB? CLOSE> <FSET? ,ZIPPER ,OPENBIT>>
<PUT <GETPT ,ZIPPER ,P?SYNONYM> 1 ,W?ZIPPER>
<FCLEAR ,ZIPPER ,OPENBIT>
<SETG LIT <LIT? ,HERE>>
<TELL
"The zipper now looks like an ordinary zipper.">
<COND (<AND .OLIT <NOT ,LIT>>
<TELL " " ,NOW-BLACK>)>
<CRLF>)
(<VERB? LOOK-INSIDE>
<COND (<FSET? ,ZIPPER ,OPENBIT>
<TELL "It's ">
<COND (<SET ZLIT <LIT? ,ZIPPER <>>>
<TELL "bright">)
(ELSE
<TELL "dark">)>
<TELL " inside, ">
<COND (<FIRST? ,ZIPPER>
<COND (.ZLIT <TELL "and">)
(ELSE <TELL "but">)>
<TELL " you can see ">
<PRINT-CONTENTS ,ZIPPER>)
(.ZLIT <TELL "and empty">)
(ELSE
<TELL "and you can't see anything">)>
<TELL ,PERIOD>)
(ELSE
<TELL-OPEN-CLOSED ,ZIPPER>)>)
(<VERB? REACH-IN>
<COND (<NOT <FSET? ,ZIPPER ,OPENBIT>>
<TELL-OPEN-CLOSED ,ZIPPER>)
(<NOT ,ZIPPER-SCROLL?>
<SETG ZIPPER-SCROLL? T>
<MOVE ,GIRGOL-SCROLL ,ZIPPER>
<THIS-IS-IT ,GIRGOL-SCROLL>
<TELL
"Odd, you can't really feel anything for a moment, but then, almost as
though something was thrust into your hand, there's something there. Oops,
it slipped away again." CR>)>)
(<VERB? BOARD>
<COND (<NOT <IN? ,ZIPPER ,PLAYER>>
<DONT-HAVE-THAT>)
(<FSET? ,ZIPPER ,OPENBIT>
<COND (<OR <EQUAL? ,HERE
,OCEAN-ROOM ,LOST-IN-OCEAN
,OCEAN-FLOOR>
<EQUAL? ,HERE ,IN-CHANNEL ,IN-PIPE
,IN-PIPE-2>
<EQUAL? ,HERE ,IN-SEWER ,RUINED-PIPE
,PAST-CABINET>
<EQUAL? ,HERE ,CABINET>
<AND <EQUAL? ,HERE ,OUBLIETTE>
<G? ,WATER-FLAG 0>>>
<IMPOSSIBLE-MANEUVER>
<RTRUE>)>
<COND (<NOT ,ZIPPER-SCROLL?>
<SETG ZIPPER-SCROLL? T>
<MOVE ,GIRGOL-SCROLL ,ZIPPER>)>
<MOVE ,ZIPPER ,HERE>
<MOVE ,PLAYER ,ZIPPER>
<SET ZLIT <LIT? ,ZIPPER <>>>
<SETG LIT T>
<TELL
"It's just big enough to fit in with the zipper fully open. You crawl into
a ">
<COND (.ZLIT <TELL "bright">)
(ELSE <TELL "dark">)>
<TELL
", strange place almost like a big sack. You can sort of stand up, but
there isn't much room to move around. ">
<CANT-SEE-OUTSIDE>
;<JIGS-UP
"You can just fit with the zipper fully open. You crawl into
a strange place almost like a big sack. You find that you are
in a sort of stasis, and can't move. Your mental processes move
slower and slower, and ultimately they stop.">)
(ELSE
<TELL-OPEN-CLOSED ,ZIPPER>)>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,ZIPPER>>
<COND (<IN? ,ZIPPER ,BOTTLE>
<CANT-REACH-THAT>)
(<AND <NOT ,ZIPPER-SCROLL?>
<FSET? ,PRSO ,ONBIT>>
<SETG ZIPPER-SCROLL? T>
<MOVE ,GIRGOL-SCROLL ,ZIPPER>
<RFALSE>)>)>)>>
<ROUTINE CANT-SEE-OUTSIDE ()
<TELL
,YOU-CANT-SEE "your outside surroundings, though. It's as though a mist
was in the way." CR>>
<ROOM RUINS-ROOM
(IN ROOMS)
(DESC "Ruins Room")
(NORTH TO HALL-OF-STONE)
(SOUTH "The ruins end here.")
(DOWN TO RUINED-PIPE IF SMALL-FLAG)
(ACTION RUINS-ROOM-F)
(FLAGS RLANDBIT)
(GLOBAL WATER)
(THINGS
<PSEUDO (MOULDERING RUIN RUINS-PSEUDO)
(CYCLOPEAN BLOCKS RUINS-PSEUDO)
(STONE BLOCKS RUINS-PSEUDO)
(CARVED STATUE RUINS-PSEUDO)
(UNIMAGINABLE CONSTRUCT RUINS-PSEUDO)
(BROKEN PILLAR RUINS-PSEUDO)
(FALLEN PILLAR RUINS-PSEUDO)
(COLLAPSED PORTICO RUINS-PSEUDO)>)>
<ROUTINE RUINS-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Here the main corridor opens into a vast underground space. Your light
can barely illuminate a fraction of it. All around are cyclopean blocks
of stone, crudely carved statues, and constructs of unimaginable
purpose. Nearby the portico of a building has collapsed, and a pillar
has smashed the pavement and exposed a small channel filled with swiftly
rushing water. Water stains indicate that at one time the water flooded
the entire area.">
<COND (<FSET? ,ZIPPER ,NDESCBIT>
<TELL
" Wedged against a pillar, as though by rushing water, is a zipper.">)>
<CRLF>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? PUT>
<EQUAL? ,PRSI ,WATER>>
<PERFORM ,PRSA ,PRSO ,RUINS-CHANNEL>
<RTRUE>)
(<AND <VERB? THROUGH BOARD>
<EQUAL? ,PRSO ,WATER>>
<PERFORM ,PRSA ,RUINS-CHANNEL>
<RTRUE>)>)>>
<OBJECT RUINS-CHANNEL
(IN RUINS-ROOM)
(DESC "channel")
(SYNONYM CHANNEL)
(ADJECTIVE CERAMIC)
(FLAGS NDESCBIT VEHBIT OPENBIT)
(ACTION CHANNEL-F)>
<OBJECT RUINS-INFLOW
(IN RUINS-ROOM)
(DESC "inflow pipe")
(SYNONYM PIPE PIPES)
(ADJECTIVE INFLOW RUINED INPUT)
(FLAGS NDESCBIT AN VEHBIT)
(ACTION INFLOW-F)>
<OBJECT RUINS-OUTFLOW
(IN RUINS-ROOM)
(DESC "outflow pipe")
(SYNONYM PIPE PIPES)
(ADJECTIVE OUTFLOW RUINED OUTPUT)
(FLAGS NDESCBIT AN VEHBIT)
(ACTION OUTFLOW-F)>
<GLOBAL ROCK-FLAG <>>
<ROOM CLIFF-TOP
(IN ROOMS)
(DESC "Cliff Top")
(DOWN TO CLIFF-MIDDLE)
(UP PER CLIFF-TOP-EXIT) ;"BOULDER-1"
(ACTION CLIFF-TOP-F)
(FLAGS RLANDBIT OUTSIDE ONBIT)
(GLOBAL GLOBAL-ROCKS GLOBAL-CLIFF HUT)
(THINGS <PSEUDO (<> MOUNTAIN MOUNTAIN-PSEUDO)>)>
<ROUTINE CLIFF-TOP-EXIT ("AUX" (H <>) DIR)
<COND (<EQUAL? ,HERE ,MOUNTAIN-TOP>
<SET H T>
<SET DIR "down">)
(ELSE
<SET DIR "up">)>
<COND (,ROCK-FLAG
<COND (.H ,BOULDER-3)(ELSE ,BOULDER-1)>)
(<TIME-FROZEN?>
<TELL
"Even frozen in place, the rocks are so jumbled that you can't climb "
.DIR " them. You would need full mountaineering equipment even to try." CR>
<RFALSE>)
(,ROCK-SLIDE-COUNT
<TELL
,I-DONT-THINK-THAT "you can climb " .DIR " an avalanche." CR>
<RFALSE>)
(ELSE
<TELL
"The pile of rocks looks so unsteady that attempting to climb over it
could set off an avalanche." CR>
<RFALSE>)>>
<ROUTINE CLIFF-TOP-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is the upper end of a narrow, winding path up a sheer cliff. From here
you can see that any further extension of the path was destroyed by a
rock slide at some relatively recent time. There are many rocks ">
<COND (,ROCK-FLAG
<TELL
"suspended in midair above you. Some are quite close.">)
(,ROCK-SLIDE-COUNT
<TELL
"tumbling towards you from above.">)
(ELSE
<TELL
"precariously
balanced above you. " ,IT-LOOKS-LIKE "the slightest disturbance could bring them
down on you.">)>
<COND (<NOT <FSET? ,MOUNTAIN-TOP ,TOUCHBIT>>
<TELL
" Frustratingly, you can see the remains of a small building just
beyond the dangerous area, but there is no way to get there from here.">)
(ELSE
<TELL
" The hermit's hut is above.">)>
<CRLF>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? WALK>
<NOT <EQUAL? ,P-WALK-DIR
,P?UP ,P?DOWN>>>
<TELL
"The only path leads up or down. There is only a sheer cliff elsewhere." CR>)
(<AND <VERB? LESOCH> <NOT ,PRSO>>
<PERFORM ,V?LESOCH ,GLOBAL-ROCKS>
<RTRUE>)>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<AND <EQUAL? ,ROCK-SLIDE-COUNT 0>
<NOT ,ROCK-FLAG>>
<SETG SLIDE-PROB 10>
<QUEUE I-AVALANCHE? -1>)>)>>
<ROUTINE STOP-AVALANCHE ()
<SETG TIME-STOPPED? ,HERE>
<SETG ROCK-FLAG T>
<QUEUE I-GIRGOL 12>
<TELL ,AT-FIRST>
<ROCKS-STOPPED>>
<ROUTINE ROCKS-STOPPED ()
<TELL "that the rocks are no
longer falling. Dust hangs suspended in the air. Rocks appear wired in place.
The mountainside that threatened to bury you floats serenely in midair." CR>>
<ROOM BOULDER-1
(IN ROOMS)
(DESC "Boulder")
(UP TO BOULDER-2)
(DOWN TO CLIFF-TOP)
(ACTION BOULDER-ROOM-F)
(GLOBAL GLOBAL-ROCKS)
(FLAGS RLANDBIT)>
<ROOM BOULDER-2
(IN ROOMS)
(DESC "Boulder")
(UP TO BOULDER-3)
(DOWN TO BOULDER-1)
(ACTION BOULDER-ROOM-F)
(GLOBAL GLOBAL-ROCKS)
(FLAGS RLANDBIT)>
<ROOM BOULDER-3
(IN ROOMS)
(DESC "Boulder")
(UP TO MOUNTAIN-TOP)
(DOWN TO BOULDER-2)
(ACTION BOULDER-ROOM-F)
(GLOBAL GLOBAL-ROCKS)
(FLAGS RLANDBIT)>
<ROUTINE BOULDER-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are clinging to a boulder that is floating in midair.
There are many other boulders around, also floating, and lots of dust
and dirt, also not moving. ">
<COND (<EQUAL? ,HERE ,BOULDER-1>
<TELL
"One particularly large boulder with good handholds is above you. Below
you is the cliff face.">)
(<EQUAL? ,HERE ,BOULDER-2>
<TELL
"A nice oblong boulder is above, and another large one is below you.">)
(<EQUAL? ,HERE ,BOULDER-3>
<TELL
"Below you is a long oblong boulder. Above you there are no more boulders,
but there is a continuation of the trail that you were on.">)>
<CRLF>)
(<EQUAL? .RARG ,M-BEG>
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<DO-WALK ,P?UP>)
(<VERB? CLIMB-DOWN>
<DO-WALK ,P?DOWN>)>)>>
<ROOM MOUNTAIN-TOP
(IN ROOMS)
(DESC "Mountain Top")
(IN PER HUT-ROOM-EXIT)
(WEST PER HUT-ROOM-EXIT)
(DOWN PER CLIFF-TOP-EXIT ;CLIFF-TOP)
(FLAGS RLANDBIT OUTSIDE ONBIT)
(ACTION MOUNTAIN-TOP-F)
(GLOBAL GLOBAL-ROCKS GLOBAL-CLIFF HUT)
(THINGS <PSEUDO (<> MOUNTAIN MOUNTAIN-PSEUDO)>)>
<ROUTINE MOUNTAIN-TOP-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is the top of the mountain. There is ">
<COND (,HERMIT-APPEASED?
<TELL "an imposing">)
(ELSE
<TELL "a crudely built">)>
<TELL " stone hut nearby
to the west." CR>)
(<EQUAL? .RARG ,M-BEG>
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<DO-WALK ,P?UP>)
(<VERB? CLIMB-DOWN>
<DO-WALK ,P?DOWN>)>)>>
<ROUTINE HUT-ROOM-EXIT ()
<COND (<EQUAL? ,HERE ,HUT-ROOM>
,MOUNTAIN-TOP)
(ELSE
,HUT-ROOM)>>
<ROOM HUT-ROOM
(IN ROOMS)
(DESC "Stone Hut")
(OUT PER HUT-ROOM-EXIT ;MOUNTAIN-TOP)
(EAST PER HUT-ROOM-EXIT ;MOUNTAIN-TOP)
(FLAGS RLANDBIT ONBIT)
(ACTION HUT-ROOM-F)
(GLOBAL HUT)
(THINGS
<PSEUDO (<> KEYSTONE KEYSTONE-PSEUDO)
(<> MOSS RANDOM-PSEUDO)
(<> MUD RANDOM-PSEUDO)
(OLD FUR RANDOM-PSEUDO)>)>
<ROUTINE KEYSTONE-PSEUDO ()
<REDIRECT ,PSEUDO-OBJECT ,LIFE-CUBE>>
<ROUTINE HUT-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<PERFORM ,V?EXAMINE ,HUT>
<TELL
"Squatting on the floor is a wild-haired, bearded hermit who is ">
<COND (,HERMIT-APPEASED?
<TELL "admiring his perfect hut">)
(T
<TELL "looking at you with ill-concealed dislike">)>
<TELL ,PERIOD>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? POINT>
<EQUAL? ,PRSO ,HUT ,HERMIT ,LIFE-CUBE>>
<ASK-HERMIT-ABOUT ,PRSO>)
(<AND <VERB? TAKE RUB WRITE MOVE>
<EQUAL? ,PRSO ,LIFE-CUBE>
<NOT ,HERMIT-APPEASED?>>
<TELL
"The hermit springs between you and the cube. \"Not so fast! That thing
holds up the whole hut. It's the keystone. Don't touch it.\"" CR>)
(<AND <VERB? MALYON>
<EQUAL? ,PRSO ,LIFE-CUBE>
<NOT ,HERMIT-APPEASED?>>
<FSET ,HUT ,RMUNGBIT>
<FSET ,HUT-ROOM ,RMUNGBIT>
<JIGS-UP
"The cube comes alive, wiggles free of the wall, and the hut collapses
on top of you.">)>)>>
<OBJECT HUT
(IN LOCAL-GLOBALS)
(DESC "stone hut")
(SYNONYM HUT BUILDING STONE ENTRANCE)
(ADJECTIVE STONE CRUDE SMALL)
(FLAGS NDESCBIT VEHBIT OPENBIT)
(ACTION HUT-F)>
<ROUTINE HUT-F ()
<COND (<VERB? EXAMINE>
<TELL "The hut is ">
<COND (<EQUAL? ,HERE ,CLIFF-TOP>
<TELL "barely visible." CR>
<RTRUE>)
(,HERMIT-APPEASED?
<TELL
"beautifully constructed out of carefully dressed granite blocks
and strong mortar.">)
(ELSE
<TELL "made of irregular stones">)>
<COND (<EQUAL? ,HERE ,HUT-ROOM>
<COND (,HERMIT-APPEASED?
<TELL
" The construction of the hut is somewhat at odds with the
squalor of its contents.">)
(ELSE
<TELL
". The walls are chinked with moss, mud, small stones,">
<COND (<AND <IN? ,LIFE-CUBE ,HUT-ROOM>
<FSET? ,LIFE-CUBE ,NDESCBIT>>
<TELL
" a " ,WHITE-CUBE ",">)>
<TELL
" and an occasional old fur.">)>
<TELL " There is an exit to the east." CR>)
(ELSE
<COND (<NOT ,HERMIT-APPEASED?>
<TELL
" much like those lying all around you.">)>
<TELL " There is an entrance to the west." CR>)>)
(<EQUAL? ,HERE ,CLIFF-TOP>
<TELL ,TOO-FAR>)
(<AND <VERB? LOOK-INSIDE>
<EQUAL? ,HERE ,MOUNTAIN-TOP>>
<TELL
,YOU-CANT-SEE "very much from out here. Why not go in?" CR>)
(<AND <VERB? REACH-IN>
<EQUAL? ,MOUNTAIN-TOP ,HERE>>
<TELL
"You reach in and hear a yell of surprise from inside." CR>)
(<VERB? THROUGH BOARD>
<COND (<EQUAL? ,HERE ,HUT-ROOM>
<TELL ,YOU-ARE>
<TELL ,PERIOD>)
(ELSE
<GOTO ,HUT-ROOM>)>)
(<VERB? DISEMBARK DROP>
<COND (<NOT <EQUAL? ,HERE ,HUT-ROOM>>
<TELL ,YOU-ARE>
<TELL ,PERIOD>)
(ELSE
<GOTO ,MOUNTAIN-TOP>)>)
(<VERB? CASKLY>
<COND (<NOT ,HERMIT-APPEASED?>
<SETG HERMIT-APPEASED? T>
<FCLEAR ,LIFE-CUBE ,NDESCBIT>
<TELL
"The hut begins to melt, the stones dripping down like wax and the dirt
spraying in all directions. ">
<COND (<EQUAL? ,HERE ,HUT-ROOM>
<TELL
"\"Now you've done it, you meddlesome mage!\"
screams the hermit.">)
(ELSE
<TELL "You hear a scream from inside the hut.">)>
<TELL
" But then the stones start flowing back into place, and
the dirt speeds into place between them, and all is changed. The hut looks
considerably different">
<COND (<EQUAL? ,HERE ,HUT-ROOM>
<TELL
", and the cube, no longer necessary, sits in lonely
splendor on the ground between you and the hermit">)>
<TELL ,PERIOD>)>)>>
<GLOBAL HERMIT-APPEASED? <>>
<OBJECT HERMIT
(IN HUT-ROOM)
(DESC "hermit")
(SYNONYM HERMIT MAN)
(ADJECTIVE OLD)
(FLAGS NDESCBIT PERSON THE)
(ACTION HERMIT-F)>
<ROUTINE HERMIT-F ()
<COND (<EQUAL? ,WINNER ,HERMIT>
<COND (<AND <VERB? TELL-ABOUT>
<EQUAL? ,PRSO ,ME>>
<RFALSE>)
(<VERB? TELL-ME-ABOUT>
<ASK-HERMIT-ABOUT ,PRSO>)
(ELSE
<TELL
"He's a taciturn old buzzard and doesn't respond." CR>
<END-QUOTE>)>)
(<VERB? EXAMINE>
<TELL
"The old man is clothed in goatskin rags. He has a long, tangled beard
and dirty matted hair." CR>)
(<VERB? SMELL>
<TELL
"His last bath may well have been before you were born." CR>)
(<VERB? SHOW>
<COND (<GETPT ,PRSO ,P?NAME>
<TELL
"The hermit remarks \"You've got one, too. What do you want with mine,
then?\"" CR>)
(<EQUAL? ,PRSO ,ZORKMID>
<MATERIALISM>)
(<EQUAL? ,PRSO ,BREAD ,FISH>
<TELL
"\"That looks pretty good. I eat mostly berries, moss, and goat meat.\"" CR>)
(ELSE
<UNINTERESTED ,HERMIT>)>)
(<VERB? GIVE>
<COND (<EQUAL? ,PRSO ,BREAD ,FISH>
<REMOVE ,PRSO>
<TELL
"The hermit devours the " 'PRSO " with gusto. He belches. \"That
was a nice change,\" he remarks." CR>)>)
(<AND <VERB? ASK-FOR>
<EQUAL? ,PRSO ,HERMIT>
<EQUAL? ,PRSI ,LIFE-CUBE>>
<COND (,HERMIT-APPEASED?
<TELL
"\"Sure, take it.\" He's distracted by his admiration for his newly
perfected dwelling." CR>)
(ELSE
<TELL
"\"Not on your life. It's holding up the whole hut. It's perfect
for that chink. You don't know how long it took me to find it.\"" CR>)>)
(<VERB? TRADE BUY>
<MATERIALISM>)
(<VERB? YOMIN>
<TELL
"The hermit is worried that you will rob him. He is very suspicious.
He's been up here on the mountain for so long that his brains are slightly
curdled." CR>)>>
<ROUTINE MATERIALISM ()
<TELL
"\"Materialism! That's another thing I was trying to get away from!\" The
hermit looks glum." CR>>
<ROUTINE ASK-HERMIT-ABOUT (OBJ)
<COND (<EQUAL? .OBJ ,GLOBAL-ROCKS>
<TELL
"\"I like avalanches. They keep people away. Usually.\"" CR>)
(<EQUAL? .OBJ ,ZORKMID>
<MATERIALISM>)
(<EQUAL? .OBJ ,FISH ,BREAD>
<TELL "He perks up at the mention of food." CR>)
(<EQUAL? .OBJ ,LIFE-CUBE ,HUT ,HERMIT>
<TELL
"\"I've been living up here for many years. Wanted to get
away from people. Too much noise, too much talk, too much jabber-jabber
all the time. I've been building this hut for years, too.
Couldn't find the right keystone. It would always collapse after a while,
so I never moved into it. I kept hoping to get it right some day;
no training in stonemasonry. One day there was a presence
on the mountain, like a cloud had come over. Then there was smoke,
orange smoke, I think. The next day I found that stone sitting on top
of a rock not five minutes' walk from here. It was perfect.\"" CR>)>>
<OBJECT GLOBAL-CLIFF
(IN LOCAL-GLOBALS)
(DESC "cliff")
(SYNONYM CLIFF TRAIL TRACK PATH)
(ADJECTIVE SHEER)
(FLAGS NDESCBIT)
(ACTION GLOBAL-CLIFF-F)>
<GLOBAL ROCKS-PRECARIOUS "The rocks look very precariously balanced">
<ROUTINE GLOBAL-CLIFF-F ()
<COND (<VERB? EXAMINE>
<TELL ,ROCKS-PRECARIOUS ,PERIOD>)
(<VERB? CLIMB-UP CLIMB-FOO FOLLOW>
<DO-WALK ,P?UP>)
(<VERB? CLIMB-DOWN>
<DO-WALK ,P?DOWN>)>>
<OBJECT GLOBAL-ROCKS
(IN LOCAL-GLOBALS)
(DESC "rock")
(SYNONYM ROCK ROCKS BOULDER AVALANCHE)
(ADJECTIVE JUMBLED SCREE PILE MOLTEN LARGE)
(FLAGS NDESCBIT)
(ACTION GLOBAL-ROCKS-F)>
<ROUTINE GLOBAL-ROCKS-F ()
<COND (<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,BOULDER-1 ,BOULDER-2 ,BOULDER-3>
<PERFORM ,V?LOOK>
<RTRUE>)
(<EQUAL? ,HERE
,VOLCANO-BASE ,VOLCANO-ROOM ,OUTCROPPING-ROOM>
<TELL
"The rocks look hot and are melted to all their neighbors." CR>)
(<OR <EQUAL? ,HERE
,CLIFF-TOP ,CLIFF-MIDDLE ,CLIFF-BOTTOM>
<EQUAL? ,HERE ,MOUNTAIN-TOP ,CAVE-ENTRANCE>>
<COND (<OR ,ROCK-FLAG <TIME-FROZEN?>>
<TELL "You can see ">
<ROCKS-STOPPED>)
(<QUEUED? I-AVALANCHE>
<ROCKS-TUMBLING>)
(ELSE
<TELL ,ROCKS-PRECARIOUS ,PERIOD>)>)>)
(<VERB? CLIMB-FOO CLIMB-UP CLIMB-ON CLIMB-OVER>
<DO-WALK ,P?UP>)
(<VERB? RUB MOVE PUSH LESOCH KICK MALYON>
<COND (<EQUAL? ,HERE ,VOLCANO-BASE
,VOLCANO-ROOM ,OUTCROPPING-ROOM>
<TELL-TOO-HOT>
<TELL ,PERIOD>
<RTRUE>)
(<OR <TIME-FROZEN?>
<NOT <EQUAL? ,HERE ,CLIFF-TOP ,MOUNTAIN-TOP>>>
<RFALSE>)
(<VERB? MALYON>
<TELL "You animate">)
(<VERB? LESOCH>
<TELL
"The wind whips up to a frenzy and touches">)
(ELSE
<TELL
"You gingerly touch">)>
<TELL " a rock, which tilts a little. Another rock slides into
the gap, triggering a larger one to fall. Suddenly, the entire mountainside
begins to tumble down." CR>
<DEQUEUE I-AVALANCHE?>
<QUEUE I-AVALANCHE -1>
<RTRUE>)
(<VERB? TAKE>
<COND (<AND <EQUAL? ,HERE ,CLIFF-TOP ,MOUNTAIN-TOP>
<NOT <TIME-FROZEN?>>>
<COND (<NOT <QUEUED? I-AVALANCHE>>
<TELL
"Taken, but you drop it immediately when you see that your intemperate
action has triggered a rock slide." CR>
<SETG ROCK-SLIDE-COUNT 0>
<DEQUEUE I-AVALANCHE?>
<QUEUE I-AVALANCHE -1>
<RTRUE>)>)
(<EQUAL? ,HERE ,VOLCANO-BASE
,VOLCANO-ROOM ,OUTCROPPING-ROOM>
<TELL-TOO-HOT>
<TELL " or solidly fixed to the
ground here." CR>)
(ELSE
<TELL
"None of the rocks look interesting enough to take." CR>)>)>>
<ROUTINE TELL-TOO-HOT ()
<TELL CTHE ,PRSO " is too hot to touch">>
<ROOM CLIFF-MIDDLE
(IN ROOMS)
(DESC "Cliff Middle")
(UP TO CLIFF-TOP)
(DOWN TO CLIFF-BOTTOM)
(ACTION CLIFF-MIDDLE-F)
(FLAGS RLANDBIT OUTSIDE ONBIT)
(GLOBAL GLOBAL-ROCKS GLOBAL-CLIFF)
(THINGS <PSEUDO (<> MOUNTAIN MOUNTAIN-PSEUDO)>)>
<ROUTINE CLIFF-MIDDLE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"A narrow ledge, barely wide enough to stand on, interrupts the cliff
here." CR>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? WALK>
<NOT <EQUAL? ,P-WALK-DIR
,P?UP ,P?DOWN>>>
<TELL
"The path leads up or down. There is a sheer cliff elsewhere." CR>)>)>>
<ROOM CLIFF-BOTTOM
(IN ROOMS)
(DESC "Cliff Bottom")
(UP TO CLIFF-MIDDLE)
(DOWN "You're at the bottom already.")
(WEST TO CAVE-ENTRANCE)
(EAST "There's no path that way.")
(SOUTH "There's no path that way.")
(ACTION CLIFF-BOTTOM-F)
(FLAGS RLANDBIT OUTSIDE ONBIT)
(GLOBAL GLOBAL-ROCKS GLOBAL-CLIFF)
(THINGS <PSEUDO (<> MOUNTAIN MOUNTAIN-PSEUDO)>)>
<ROUTINE CLIFF-BOTTOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is the bottom of a sheer cliff which towers above you. Jumbled rockfalls
are all around you. A goat track (at best) leads up, and a well-worn
trail heads west." CR>)>>
<OBJECT GLOBAL-CAVE
(IN LOCAL-GLOBALS)
(DESC "cave")
(SYNONYM CAVE CAVERN)
(ADJECTIVE DARK)
(FLAGS NDESCBIT)
(ACTION GLOBAL-CAVE-F)>
<ROUTINE GLOBAL-CAVE-F ()
<COND (<AND <VERB? EXAMINE> <NOT <EQUAL? ,HERE ,CAVE-ENTRANCE>>>
<PERFORM ,V?LOOK>
<RTRUE>)
(<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,CAVE-ENTRANCE>
<GOTO ,OGRE-CAVE>)
(ELSE
<TELL ,YOU-ARE ,PERIOD>)>)
(ELSE
<REDIRECT ,GLOBAL-CAVE ,GLOBAL-ROOM>)>>
<ROOM CAVE-ENTRANCE
(IN ROOMS)
(DESC "Cave Entrance")
(EAST TO CLIFF-BOTTOM)
(IN TO OGRE-CAVE)
(NORTH TO OGRE-CAVE)
(UP "There's no way up here.")
(ACTION CAVE-ENTRANCE-F)
(FLAGS RLANDBIT OUTSIDE ONBIT)
(GLOBAL GLOBAL-CLIFF GLOBAL-CAVE GLOBAL-ROCKS)
(THINGS
<PSEUDO (<> MOUNTAIN MOUNTAIN-PSEUDO)
(<> LITTER RANDOM-PSEUDO)
(LITTER BONES PLURAL-PSEUDO)
(OLD HIDES PLURAL-PSEUDO)
(<> BRUSH PLANTS-PSEUDO)>)>
<ROUTINE CAVE-ENTRANCE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"A well-worn trail terminates here where a cave enters the cliff-side to
the north. Outside the cave is a litter of bones, old hides and brush.
The smell that issues from the cave is mephitic. To the east is the
bottom of a sheer cliff." CR>)
(<EQUAL? .RARG ,M-ENTER>
<QUEUE I-OGRE -1>
<RFALSE>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? LISTEN> <NOT ,PRSO>>
<OGRE-NOISES>)
(<AND <VERB? SMELL> <NOT ,PRSO>>
<TELL
"It smells horrific. The sanitary habits of ogres are appalling." CR>)>)>>
<GLOBAL SNEEZY? <>>
<ROOM OGRE-CAVE
(IN ROOMS)
(DESC "Cave")
(OUT TO CAVE-ENTRANCE)
(SOUTH TO CAVE-ENTRANCE)
(DOWN PER OGRE-BEDROOM-EXIT)
(ACTION OGRE-CAVE-F)
(FLAGS RLANDBIT)
(GLOBAL GLOBAL-CAVE GLOBAL-ROCKS)
(THINGS <PSEUDO (LOOSE DIRT RANDOM-PSEUDO)
(HARD DIRT RANDOM-PSEUDO)>)>
<ROUTINE OGRE-CAVE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a natural fissure in the rock which was enlarged with crude skill
into a spacious and comfortable room, at least if you're fond of caves.
The floor is dirt, hard packed in some parts, loose in others.
A low passage leads down. ">
<OGRE-DESC>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<NOT <QUEUED? I-OGRE-KILLS-YOU>>
<QUEUE I-OGRE-KILLS-YOU 12>)>
<COND (<NOT ,LIT>
<JIGS-UP
"In the dark you have blundered into something large, smelly, and mean.
It is annoyed by your intrusion and pounds you to a pulp.">)
(<AND <EQUAL? ,OHERE ,OGRE-BEDROOM>
<NOT ,SNEEZY?>
<NOT <EQUAL? ,ESPNIS? ,OGRE>>
<NOT <TIME-FROZEN?>>>
<I-OGRE-KILLS-YOU T>)>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? LISTEN> <NOT ,PRSO>>
<PERFORM ,V?LISTEN ,OGRE>
<RTRUE>)
(<AND <VERB? SMELL> <NOT ,PRSO>>
<SMELL-OGRE-CAVE>)
(<OR <VERB? WAVE>
;<AND <VERB? DROP>
<EQUAL? ,PRSO ,CLUB>>>
<GIVE-TO-OGRE>)
(<AND <VERB? THROUGH> <EQUAL? ,PRSO ,CORRIDOR>>
<DO-WALK ,P?DOWN>)>)>>
<ROUTINE SMELL-OGRE-CAVE ()
<TELL
"It smells even worse inside than it did outside, as hard as that is to
credit." CR>>
<ROUTINE OGRE-BEDROOM-EXIT ()
<COND (<OR ,SNEEZY?
<TIME-FROZEN?>
<EQUAL? ,ESPNIS? ,OGRE>>
<TELL
"You saunter nonchalantly past the " <COND (,SNEEZY?
"convulsively sneezing")
(<TIME-FROZEN?>
"immobile")
(ELSE "sleeping")>
" ogre." CR CR>
,OGRE-BEDROOM)
(ELSE
<TELL
"The ogre moves quickly to bar your way">
;<COND (<IN? ,CLUB ,OGRE>
<TELL
", waving his club menacingly">)>
<COND (<EQUAL? ,SHRINK-FLAG ,OGRE>
<TELL
". He may be small, but he's still dangerous">)>
<TELL ,PERIOD>
<RFALSE>)>>
<ROOM OGRE-BEDROOM
(IN ROOMS)
(DESC "Ogre Lair")
(UP TO OGRE-CAVE)
(OUT TO OGRE-CAVE)
(ACTION OGRE-BEDROOM-F)
(FLAGS RLANDBIT)
(GLOBAL GLOBAL-CAVE)
(THINGS
<PSEUDO (FILTHY FUR RANDOM-PSEUDO)
(MOLDY FUR RANDOM-PSEUDO)
(FILTHY FURS PLURAL-PSEUDO)
(MOLDY FURS PLURAL-PSEUDO)
(CRUDE BED RANDOM-PSEUDO)>)>
<ROUTINE OGRE-BEDROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This small but cozy hole is the ogre's lair. Moldy, filthy furs piled
in one corner make a crude bed. There is a rocky crawl up to the main
part of the cave." CR>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<EQUAL? ,OHERE ,DULL-ROOM>
<I-OGRE-KILLS-YOU T>)>)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? LISTEN> <NOT ,PRSO>>
<OGRE-NOISES>)
(<AND <VERB? SMELL> <NOT ,PRSO>>
<SMELL-OGRE-CAVE>)
(<AND <VERB? THROUGH>
<EQUAL? ,PRSO ,CORRIDOR>>
<DO-WALK ,P?UP>)>)>>
<OBJECT MAGIC-BOX
(IN OGRE-BEDROOM)
(DESC "gold box")
(SYNONYM BOX LATCH LID SYMBOL)
(ADJECTIVE GOLD DECORATION)
(FLAGS TAKEBIT CONTBIT MAGICBIT SEARCHBIT)
(CAPACITY 10)
(ACTION MAGIC-BOX-F)>
<ROUTINE MAGIC-BOX-EXIT ("AUX" L)
<SET L <LOC ,MAGIC-BOX>>
<COND (<AND .L
<IN? .L ,ROOMS>
<NOT <EQUAL? .L ,EMPORIUM>>
<NOT <GETP .L ,P?CUBE>>
<EQUAL? <GETP ,HERE ,P?CUBE> ,MAGIC-BOX-CUBE>>
<COND (<EQUAL? .L ,CASTLE>
<MAGIC-DOOR-EXIT>)
(ELSE .L)>)
(ELSE
<TELL
"Oddly, although there appears to be an exit there, you can't seem to
force your way through it." CR>
<RFALSE>)>>
<GLOBAL MAGIC-BOX-CUBE <>>
<ROUTINE MAGIC-BOX-F ()
<COND (<VERB? EXAMINE>
<TELL
"The gold box is small, richly ornamented with allegorical figures of ">
<MAGIC-BOX-CREATURE>
<TELL " and cryptic symbols. It has
a small latch which ">
<COND (<FSET? ,MAGIC-BOX ,OPENBIT>
<TELL "could hold">)
(ELSE
<TELL "holds">)>
<TELL " closed the lid." CR>)
(<VERB? LOCK UNLOCK>
<TELL "There's no lock, only a latch." CR>)
(<AND <VERB? PUT> <EQUAL? ,PRSI ,MAGIC-BOX>>
<COND (<NOT <IN? ,MAGIC-BOX ,WINNER>>
<NOT-HOLDING ,PRSI>)
(<NOT <FSET? ,MAGIC-BOX ,OPENBIT>>
<TELL
,YOU-HAVE-TO " open the " 'PRSI " first." CR>)
(<FIRST? ,MAGIC-BOX>
<TELL
"There is already something in it." CR>)
(<NOT <GETPT ,PRSO ,P?NAME>>
<COND (<L? <GETP ,PRSO ,P?SIZE>
<GETP ,MAGIC-BOX ,P?CAPACITY>>
<TELL "Strangely, you can't fit it in." CR>)
(ELSE
<TELL ,DOESNT-FIT>)>)
(ELSE
<MOVE ,PRSO ,MAGIC-BOX>
<COND (<OR <EQUAL? ,PRSO ,MAGIC-BOX-CUBE>
<AND <EQUAL? ,MAGIC-BOX-CUBE ,TIME-CUBE>
<NOT <GETP ,PRSO ,P?CUBE>>>>
<TELL "Done." CR>)
(ELSE
<COND (<EQUAL? ,HERE ,SCALES-ROOM>
<USE-SPELL>)>
<SETG MAGIC-BOX-CUBE ,PRSO>
<TELL
"When you insert " THE ,PRSO " into the box, there is a brief burst of
light, and the decorations on the box change subtly. They now depict ">
<MAGIC-BOX-CREATURE>
<TELL ,PERIOD>)>)>)>>
<ROUTINE MAGIC-BOX-CREATURE ("AUX" STR)
<COND (<SET STR <GETP ,MAGIC-BOX-CUBE ,P?TEXT>>
<TELL .STR>)
(ELSE <TELL "turtles">)>>
<OBJECT OGRE
(IN OGRE-CAVE)
(DESC "ogre")
(SYNONYM OGRE)
(ADJECTIVE MOUNTAIN)
(FLAGS PERSON THE NDESCBIT BRIEFBIT CONTBIT OPENBIT)
(ACTION OGRE-F)
(DESCFCN OGRE-DESC)
(CONTFCN OGRE-F)>
<ROUTINE OGRE-DESC ("OPTIONAL" RARG OBJ)
<TELL "A " <COND (<EQUAL? ,SHRINK-FLAG ,OGRE>
"small but nasty")
(ELSE "large")> " ogre ">
<COND (<TIME-FROZEN?>
<TELL
"stands immobile in the passage, caught in mid-sneeze.">)
(<EQUAL? ,ESPNIS? ,OGRE>
<TELL
"snores noisily here.">)
(,SNEEZY?
<TELL
"rolls uncomfortably on the floor, sneezing loudly.">)
(ELSE
;<COND (<IN? ,CLUB ,OGRE>
<TELL "with a club ">)>
<TELL "bars the passage.">)>
<CRLF>>
<ROUTINE OGRE-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? ,WINNER ,OGRE>
<COND (<OR <TIME-FROZEN?>
<EQUAL? ,ESPNIS? ,OGRE>>
<TELL
"There is no reply." CR>)
(ELSE
<TELL
CTHE ,OGRE " grunts nastily at you." CR>)>
<END-QUOTE>)
;(<EQUAL? .RARG ,M-CONTAINER>
<COND (<AND <VERB? MALYON> <EQUAL? ,PRSO ,CLUB>>
<COND (<IMMOBILIZED?> <RTRUE>)
(ELSE
<TELL
"The club comes alive, writhing and kicking and trying to get away, but
the ogre grips it purposefully and glares at you until it quiets down." CR>)>)
(<AND <VERB? TAKE RUB>
<IN? ,PRSO ,OGRE>>
<TELL
"The ogre has " THE ,PRSO " gripped tight." CR>)>)
(ELSE
<COND (<VERB? EXAMINE>
<TELL
"This is a fairly typical mountain ogre. His carbuncles are a brilliant
purple, and his hair is matted down with something slick and
unpleasant-smelling. His eyes are watering and his nose is running,
which doesn't make him any more attractive. His whole body is covered by
dirty brown fur. He looks like a particularly ill-favored
bear.">
;<COND (<IN? ,CLUB ,OGRE>
<TELL
" He is carrying a large and well-used club.">)>
<COND (<TIME-FROZEN?>
<TELL
" He and all his surroundings are frozen in place.">)>
<COND (<EQUAL? ,SHRINK-FLAG ,OGRE>
<TELL
" He is currently six inches of concentrated ugliness.">)>
<CRLF>)
(<AND <VERB? GIVE SHOW WAVE-AT> <EQUAL? ,PRSI ,OGRE>>
<GIVE-TO-OGRE>)
(<VERB? LISTEN>
<TELL CTHE ,OGRE " sounds ">
<COND (<TIME-FROZEN?>
<TELL "very quiet." CR>)
(<EQUAL? ,ESPNIS? ,OGRE>
<TELL "like he is snoring." CR>)
(ELSE
<COND (<VISIBLE? ,WEED>
<COND (<FSET? ,WEED ,RMUNGBIT>
<TELL "extremely ">)
(ELSE
<TELL "somewhat ">)>)>
<TELL "congested and sneezy." CR>)>)
(<HOSTILE-VERB?>
<COND (<EQUAL? ,ESPNIS? ,OGRE>
<SETG ESPNIS? <>>
<DEQUEUE I-ESPNIS>
<TELL
"The ogre wakes at the first touch!" CR>)>
<COND (<TIME-FROZEN?>
<TELL
"There is no effect. It's like attacking a statue." CR>)
(,SNEEZY?
<TELL
CTHE ,OGRE "'s hide is thick, and your attack only tickles him." CR>)
(ELSE
<TELL
CTHE ,OGRE " contemptuously fends you off." CR>)>)
;(<AND <VERB? ESPNIS>
<NOT <EQUAL? ,ESPNIS? ,OGRE>>>
<OGRE-LOSES-CLUB>
<RFALSE>)
(<VERB? SMELL>
<TELL
"You would put your nasal cavity at great risk." CR>)
(<VERB? YOMIN>
<COND (<EQUAL? ,ESPNIS? ,PRSO>
<TELL
CTHE ,PRSO " is asleep." CR>)
(ELSE
<TELL
"You get the impression of discomfort and annoyance. This is apparently
not just for the usual ogreish reasons (general nastiness, bad temper,
and lice) but because the ogre is suffering from hay fever." CR>)>)
(<VERB? SNAVIG>
<SETG CHANGED? ,OGRE>
<QUEUE I-SNAVIG 12>
<TELL
"You become just as ugly, bellicose, and sneezy as the ogre.">
<COND (<AND <NOT <EQUAL? ,ESPNIS? ,OGRE>>
<NOT <TIME-FROZEN?>>>
<TELL
" The ogre is even less inclined to let you by.">)>
<CRLF>)>)>>
<ROUTINE GIVE-TO-OGRE ()
<COND (<OR <TIME-FROZEN?>
<EQUAL? ,ESPNIS? ,OGRE>>
<TELL
"He is in no position to respond." CR>)
(<EQUAL? ,PRSO ,WEED>
<TELL
"The ogre shrinks back and lets go an explosive sneeze">
;<COND (<IN? ,CLUB ,OGRE>
<TELL ", but his club is
still at the ready">)>
<TELL ,PERIOD>)
;(<EQUAL? ,PRSO ,CLUB>
<MOVE ,CLUB ,OGRE>
<FSET ,CLUB ,NDESCBIT>
<TELL
"He grabs it." CR>)
(ELSE
<UNINTERESTED ,OGRE>)>>
;<OBJECT CLUB
(IN OGRE)
(DESC "club")
(SYNONYM CLUB)
(SIZE 10)
(FLAGS WEAPONBIT TAKEBIT TRYTAKEBIT NDESCBIT)>