aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhistoricalsource <historicalsoftware@textfiles.com>2019-04-14 00:49:43 -0400
committerhistoricalsource <historicalsoftware@textfiles.com>2019-04-14 00:49:43 -0400
commit78ec79974cdc65838ee24aa8d710c0754345cfe8 (patch)
treea8675100f9109bd388a93ff048d3b1511e56bc3a
parent86b36fa0fd202b03cbed862f4ebd8d88f193fa9d (diff)
downloadbeyondzork-78ec79974cdc65838ee24aa8d710c0754345cfe8.tar.gz
beyondzork-78ec79974cdc65838ee24aa8d710c0754345cfe8.tar.bz2
beyondzork-78ec79974cdc65838ee24aa8d710c0754345cfe8.zip
Final Revision
-rw-r--r--cards.txt177
-rw-r--r--char.datbin0 -> 800 bytes
-rw-r--r--events.zap4861
-rw-r--r--misc.zap3720
-rw-r--r--monsters.zap1117
-rw-r--r--parser.zap2885
-rw-r--r--parser.zil2
-rw-r--r--people.zap1995
-rw-r--r--places.zap3850
-rw-r--r--places.zil2
-rw-r--r--rarities.zap1911
-rw-r--r--rmode.initbin0 -> 4999 bytes
-rw-r--r--things.zap11637
-rw-r--r--things.zil18
-rw-r--r--verbs.zap6085
-rw-r--r--vt220.mud204
-rw-r--r--z.chart25
-rw-r--r--z.errors24
-rw-r--r--z.lowcore2
-rw-r--r--z.record322
-rw-r--r--z.serial1
-rw-r--r--z.str630
-rw-r--r--z.zap51
-rw-r--r--z.zipbin261388 -> 261444 bytes
-rw-r--r--zcomp.tailor6
-rw-r--r--zdat.zap33873
-rw-r--r--zfreq.zap200
-rw-r--r--zpur.zap2449
-rw-r--r--zstr.zap931
29 files changed, 76975 insertions, 3 deletions
diff --git a/cards.txt b/cards.txt
new file mode 100644
index 0000000..a4a54de
--- /dev/null
+++ b/cards.txt
@@ -0,0 +1,177 @@
+LORE AND LEGENDS OF QUENDOR
+
+GRUE
+
+The grue is a sinister, lurking presence in the dark places of the
+earth. Its favorite diet is adventurers, but its insatiable appetite is
+tempered by its fear of light. No grue has ever been seen by the light
+of day; few have survived its fearsome jaws to tell the tale.
+
+DISCIPLINE CRAB
+
+Discipline crabs are small, moral crustaceans found in cellars, fallout
+shelters and other subterranean lairs. These brooding curmudgeons are
+deeply offended by the slightest intrusion; if cornered, they employ
+their razor-edged pincers with righteous efficiency.
+
+ELDRITCH VAPOR
+
+Eldritch vapors dwell in cemeteries, moors and other locales where fog
+will hide their evershifting forms. Gleeful and mischievous, they enjoy
+snatching away the possessions of those foolish enough to wander into
+their realm. Visitors without possessions are themselves snatched away.
+
+DORNBEAST
+
+Smart adventurers run the other way when they hear "Hurumph," the battle
+cry of the deadly dornbeast. Its 69 sensitive eyes can paralyze an
+unwary explorer with a single glare. Captured victims are plastered with
+round, sticky secretions that never come off.
+
+MONKEY GRINDER
+
+Avoid this nightmare at any cost! Spawn of a carnival necromancer, the
+monkey grinder can blast minds to jelly with its powerful Sense Organ.
+Deceptively eloquent in both manner and speech, these loathsome
+creatures actually possess little intelligence, and suffer an illiteracy
+rate of 103%.
+
+IMPLEMENTOR
+
+The Implementors are a race of minor deities who dwell on the Ethereal
+Plane of Atrii. Their ample free time is spent on costly luncheons where
+gossip and sweet nectars flow freely. Implementors do not discourage
+rumors that the world was created by them as a plaything.
+
+GIANT CORBIE
+
+Corbies are carrion birds with sharp eyesight and sharper beaks. Their
+color vision is so well developed, they can spot a yellow grotch in a
+hayfield from 200 bloits away. Corbies prefer the taste of dead, rotting
+flesh, but have been known to feast on live, running adventurers.
+
+CHRISTMAS TREE MONSTER
+
+Vast herds of these luminous vegetables roam freely amid the glacial
+valleys of the south. Residents fear the autumn migrations, in which the
+trees cheerfully trample everything in their path. Christmas tree
+monsters are repelled by caterpillars, but nobody can explain why.
+
+MINX
+
+Irresistably cuddly, the minx shares all the most ingratiating
+characteristics of kittens, koala bears and piglets. Minxes are highly
+prized for their ability to find and root out chocolate truffles from
+the ground, and will eagerly devour them if given the opportunity.
+
+UNICORN
+
+Most unicorns have fled to the Plane of TransInfinite Splendor, where
+they enjoy a carefree existence free from the cruelty of man. The
+unhappy few left behind are eagerly sought by zoos and private
+collectors. It is good luck to kiss a unicorn's horn; but woe to any
+fool who harms one.
+
+FROON
+
+Legends of this magical kingdom date back before the reign of Entharion
+the Wise (0-41 GUE). Said to lie somewhere beyond the clouds, Froon was
+the setting for a series of beloved children's books by L. Frank Fzort,
+and later became a successful movie musical starring Judy Garlic.
+
+HUNGUS
+
+Part sheep, part hippopotamus, the hungus builds its nest in jungle
+swamps and other hot, squishy places. Normally docile and eager to avoid
+conflict or activity of any kind, the hungus is fiercely clannish, and
+will instantly charge at anything that dares to threaten its kin.
+
+SPENSEWEED
+
+The healing virtues of this common roadside plant are well documented.
+Although it is safe to eat, spenseweed is most effective when applied
+directly to wounds as a salve. Avoid the cheap commercial preparations,
+which may contain artificial coloring and preservatives.
+
+CHOCOLATE TRUFFLE
+
+Chocolate truffles grow only between the roots of oak trees. Dark brown
+when fresh, they decompose rapidly once exposed to air. Truffles were a
+favorite of Lord Dimwit Flathead the Excessive (770-789 GUE), who
+ordered the excavation of entire forests to indulge his bottomless
+appetite.
+
+MOSS OF MAREILON
+
+First classified in 843 GUE by Thwack of Mareilon, this soft, pale
+fungus thrives in underground tunnels and public toilets. When squeezed,
+the moss releases an invisible cloud of spores which improves the
+dexterity of laboratory rat-ants. Its effect on other species is
+uncertain.
+
+COMPASS ROSE
+
+The stem of this rare annual always droops in the direction of the
+prevailing wind. Rumors that the compass rose can actually control the
+wind are hotly denied by the Guild of Meteorologists, who harvested the
+species to the brink of extinction in the Rose Riots of 811 GUE.
+
+MORGIA ROOT
+
+It is a rare enchanter who does not carry morgia root to gnaw on during
+a long journey. The mint-flavored juice improves stamina, slakes
+thirst and conceals bad breath. In domestic applications, morgia root is
+often baked into pies, and makes an excellent platypus stuffing.
+
+CRUEL PUPPET
+
+Few creatures are more despised than the cruel puppet. It attacks by
+twisting itself into unflattering caricatures of its opponent,
+accompanied by jeers, rude noises and shocking accusations. Staunch
+monarchs have been reduced to tears by these merciless shapeshifters.
+
+DUST BUNNY
+
+Dust bunnies burrow in obscure corners and under furniture, and defend
+their territory by multiplying. They can clog a passageway in seconds,
+filling the air with dark, suffocating particles. Static electricity and
+lemon-scented sprays are their only natural enemies.
+
+PHEEBOR
+
+Ruins of this ancient city are still visible at the confluence of the
+rivers Phee and Bor. The reason for its downfall (circa 400 BE) is
+unclear, but minstrels sing of a feud between Pheebor and its sister
+city Borphee over the naming of what is now called the Borphee River.
+
+RED HERRING
+
+These common fish patrol the dark recesses of freshwater pools and
+streams. But a handful of granola brings them racing to the surface, a
+fact known by every rural schoolboy. The old adage about red herrings
+being "good brain food" has no scientific basis.
+
+LUCKSUCKER
+
+Lucksuckers feed on good fortune. Part physical entity, part mental
+phenomenon, the sucker's appearance is based on the laws of probability,
+and may change without warning. Good luck charms provide only a
+temporary shield against attack. The best strategy is to run!
+
+UR-GRUE
+
+Ur-grues are thought to be the shades of fallen Implementors. Skilled in
+black sorcery, the ur-grue can envelop itself in a personal zone of
+darkness which neither lamp nor flame can penetrate. Sunlight is the
+only thing it fears. It is unwise even to speak of this utterly evil
+entity.
+
+THE COCONUT OF QUENDOR
+
+Though reluctant to dismiss the Coconut outright, most historians regard
+its historical existence as dubious at best. Orkan of Thriff has
+suggested that if all the "Shards of The One True Coconut" and "Vials of
+The Blessed Milk" were gathered in one place, they would form a stack
+nine bloits high.
+
+
diff --git a/char.dat b/char.dat
new file mode 100644
index 0000000..ad8adb8
--- /dev/null
+++ b/char.dat
Binary files differ
diff --git a/events.zap b/events.zap
new file mode 100644
index 0000000..a1f5d04
--- /dev/null
+++ b/events.zap
@@ -0,0 +1,4861 @@
+
+
+ .FUNCT I-LANTERN,V
+ CALL2 VISIBLE?,LANTERN >V
+ DLESS? 'LAMP-LIFE,1 \?CCL3
+ SET 'LAMP-LIFE,0
+ ICALL2 DEQUEUE,I-LANTERN
+ FCLEAR LANTERN,LIGHTED
+ ICALL REPLACE-ADJ?,LANTERN,W?LIGHTED,W?DARK
+ ZERO? V /FALSE
+ SET 'P-IT-OBJECT,LANTERN
+ PRINTI " The "
+ PRINTD LANTERN
+ PRINTI "'s light flickers and goes out."
+ CRLF
+ ICALL1 SAY-IF-HERE-LIT
+ RTRUE
+?CCL3: ZERO? V /FALSE
+ EQUAL? LAMP-LIFE,20 \?CCL9
+ SET 'P-IT-OBJECT,LANTERN
+ PRINTI " The light from the "
+ PRINTD LANTERN
+ PRINTR " is getting dimmer."
+?CCL9: EQUAL? LAMP-LIFE,10 \FALSE
+ SET 'P-IT-OBJECT,LANTERN
+ PRINTI " The "
+ PRINTD LANTERN
+ PRINTR "'s glow is fading rapidly."
+
+
+ .FUNCT I-CRAB,L,DIR,TBL,DEST,DAMAGE
+ LOC CRAB >L
+ EQUAL? L,HERE \?CND1
+ GETP CRAB,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINT TAB
+ PRINTI "Something falls to your feet with a "
+ ICALL2 ITALICIZE,STR?576
+ PRINT COMMA-AND
+ ZERO? LIT? \?CCL8
+ PRINTI "a shadow"
+ JUMP ?CND6
+?CCL8: ICALL2 THE-PRINT,CRAB
+?CND6: PRINT STR?577
+ PRINTI "darkness."
+ CRLF
+ ICALL2 KILL-MONSTER,CRAB
+ MOVE CROWN,HERE
+ SET 'P-IT-OBJECT,CROWN
+ RTRUE
+?CCL5: FSET? CRAB,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,CRAB
+ FSET? CRAB,SLEEPING /?CND3
+ PRINT TAB
+ ZERO? LIT? \?CND12
+ ICALL1 DARK-MOVES
+ RTRUE
+?CND12: EQUAL? HERE,THRONE-ROOM \?CND14
+ FSET? CRAB,TOUCHED /?CND14
+ FSET CRAB,TOUCHED
+ ICALL2 CTHE-PRINT,CRAB
+ PRINTI "'s antennae snap to alert as you enter. He rises from "
+ ICALL2 THE-PRINT,THRONE
+ PRINTI " and charges across "
+ ICALL2 THE-PRINT,FLOOR
+ PRINTR ", claws snapping with anticipation!"
+?CND14: ICALL2 WHIRLS,CRAB
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,CRAB
+ ZERO? STACK \TRUE
+ CALL2 MONSTER-STRIKES?,CRAB >DAMAGE
+ PRINT TAB
+ ZERO? DAMAGE /?CCL22
+ ZERO? LIT? \?CCL25
+ PRINTI "Something pinches you"
+ JUMP ?CND23
+?CCL25: ICALL2 CTHE-PRINT,CRAB
+ CALL2 PICK-NEXT,CRAB-ATTACKS
+ PRINT STACK
+?CND23: ICALL OUCH,CRAB,DAMAGE
+ RTRUE
+?CCL22: ZERO? LIT? \?CND20
+ ICALL1 DARK-MOVES
+ RTRUE
+?CND20: ICALL2 CTHE-PRINT,CRAB
+ CALL2 PICK-NEXT,CRAB-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,CRAB >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ ZERO? LIT? \?CCL31
+ PRINT YOU-HEAR
+ PRINTB W?SOMETHING
+ FSET? CRAB,SEEN \?CND32
+ PRINTI " else"
+?CND32: PRINTI " scuttle "
+ JUMP ?CND29
+?CCL31: FSET? CRAB,SEEN \?CCL36
+ PRINT XTHE
+ JUMP ?CND34
+?CCL36: PRINT XA
+?CND34: ICALL2 DPRINT,CRAB
+ PRINTI " scuttles "
+?CND29: FSET CRAB,SEEN
+ ICALL2 PASSAGE,DIR
+ RTRUE
+
+
+ .FUNCT PASSAGE,DIR
+ PRINTI "in from the "
+ PRINTB DIR
+ PRINTR " passage!"
+
+
+ .FUNCT I-RAT,L,DIR,TBL,DEST,DAMAGE
+ LOC RAT >L
+ EQUAL? L,HERE \?CND1
+ GETP RAT,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINT TAB
+ ZERO? LIT? \?CCL8
+ PRINT YOU-HEAR
+ PRINTB W?SOMETHING
+ PRINTI " retreat"
+ JUMP ?CND6
+?CCL8: PRINTI "Mortally wounded, "
+ ICALL2 THE-PRINT,RAT
+ PRINTI " retreats"
+?CND6: PRINTI " into the darkness."
+ CRLF
+ ICALL2 KILL-MONSTER,RAT
+ RTRUE
+?CCL5: FSET? RAT,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,RAT
+ FSET? RAT,SLEEPING /?CND3
+ PRINT TAB
+ ZERO? LIT? \?CND12
+ ICALL1 DARK-MOVES
+ RTRUE
+?CND12: ICALL2 WHIRLS,RAT
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,RAT
+ ZERO? STACK \TRUE
+ CALL2 MONSTER-STRIKES?,RAT >DAMAGE
+ PRINT TAB
+ ZERO? DAMAGE /?CCL18
+ ZERO? LIT? \?CCL21
+ PRINTI "Something bites you"
+ JUMP ?CND19
+?CCL21: ICALL2 CTHE-PRINT,RAT
+ CALL2 PICK-NEXT,RAT-ATTACKS
+ PRINT STACK
+?CND19: ICALL OUCH,RAT,DAMAGE
+ RTRUE
+?CCL18: ZERO? LIT? \?CND16
+ ICALL1 DARK-MOVES
+ RTRUE
+?CND16: ICALL2 CTHE-PRINT,RAT
+ CALL2 PICK-NEXT,RAT-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,RAT >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ ZERO? LIT? \?CCL27
+ PRINT YOU-HEAR
+ PRINTB W?SOMETHING
+ PRINTI " scurry "
+ JUMP ?CND25
+?CCL27: FSET? RAT,SEEN \?CCL30
+ PRINT XTHE
+ JUMP ?CND28
+?CCL30: PRINT XA
+?CND28: ICALL2 DPRINT,RAT
+ PRINTI " scurries "
+?CND25: FSET RAT,SEEN
+ ICALL2 PASSAGE,DIR
+ RTRUE
+
+
+ .FUNCT I-SNIPE,L,DIR,TBL,DEST,DAMAGE
+ LOC SNIPE >L
+ EQUAL? L,HERE \?CND1
+ GETP SNIPE,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINT TAB
+ PRINTI "Battered beyond endurance, "
+ ICALL2 THE-PRINT,SNIPE
+ PRINT STR?577
+ PRINTI "fog."
+ CRLF
+ ICALL2 KILL-MONSTER,SNIPE
+ RTRUE
+?CCL5: FSET? SNIPE,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,SNIPE
+ FSET? SNIPE,SLEEPING /?CND3
+ PRINT TAB
+ ICALL2 WHIRLS,SNIPE
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,SNIPE
+ ZERO? STACK \TRUE
+ CALL2 MONSTER-STRIKES?,SNIPE >DAMAGE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SNIPE
+ ZERO? DAMAGE /?CND11
+ CALL2 PICK-NEXT,SNIPE-HITS
+ PRINT STACK
+ ICALL OUCH,SNIPE,DAMAGE
+ RTRUE
+?CND11: CALL2 PICK-NEXT,SNIPE-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,SNIPE >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? SNIPE,SEEN \?CCL17
+ PRINT XTHE
+ JUMP ?CND15
+?CCL17: PRINT XA
+?CND15: FSET SNIPE,SEEN
+ ICALL2 DPRINT,SNIPE
+ PRINTI " streaks out of the mist!"
+ CRLF
+ ICALL2 TOPPLED?,SNIPE
+ RTRUE
+
+
+ .FUNCT I-VAPOR,L,DIR,DAMAGE
+ LOC VAPOR >L
+ EQUAL? L,HERE \?CND1
+ GETP VAPOR,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINT TAB
+ ICALL2 CTHE-PRINT,VAPOR
+ PRINT STR?578
+ PRINT PERIOD
+ ICALL2 NEXT-MONSTER,SNIPE
+ ICALL2 KILL-MONSTER,VAPOR
+ RTRUE
+?CCL5: FSET? VAPOR,SURPRISED \?CCL7
+ ICALL2 SEE-MONSTER,VAPOR
+ PRINT TAB
+ ICALL2 CTHE-PRINT,VAPOR
+ PRINTI " giggles when it sees you."
+ CRLF
+ ICALL2 TOPPLED?,VAPOR
+ RTRUE
+?CCL7: CALL2 TOPPLED?,VAPOR
+ ZERO? STACK \TRUE
+ ICALL2 NEXT-ENDURANCE?,VAPOR
+ RANDOM 100
+ LESS? 50,STACK /?CND9
+ CALL1 VAPOR-SNATCH?
+ ZERO? STACK \TRUE
+?CND9: CALL2 MONSTER-STRIKES?,VAPOR >DAMAGE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,VAPOR
+ ZERO? DAMAGE /?CND13
+ CALL2 PICK-NEXT,VAPOR-TICKLES
+ PRINT STACK
+ PRINTC PER
+ ZERO? STATIC \?CND15
+ PRINTI " """
+ CALL2 PICK-NEXT,VAPOR-SNEERS
+ PRINT STACK
+ PRINTI "!"""
+?CND15: CRLF
+ CALL MSPARK?,VAPOR,DAMAGE
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+?CND13: CALL2 PICK-NEXT,VAPOR-DOINGS
+ PRINT STACK
+ RANDOM 100
+ LESS? 50,STACK /?CND17
+ PRINT PERIOD
+ RTRUE
+?CND17: PRINTI ". """
+ CALL2 PICK-NEXT,VAPOR-SNEERS
+ PRINT STACK
+ PRINTR "!"""
+?CND1: CALL2 MOVE-MONSTER?,VAPOR >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? VAPOR,SEEN \?CCL23
+ PRINT XTHE
+ JUMP ?CND21
+?CCL23: PRINTI "Without warning, an "
+?CND21: FSET VAPOR,SEEN
+ ICALL2 DPRINT,VAPOR
+ PRINTI " coalesces out of the surrounding mist"
+ RANDOM 100
+ LESS? 50,STACK /?CND24
+ PRINT PERIOD
+ RTRUE
+?CND24: PRINTI ". """
+ CALL2 PICK-NEXT,VAPOR-SNEERS
+ PRINT STACK
+ PRINTI "!"""
+ CRLF
+ ICALL2 TOPPLED?,VAPOR
+ RTRUE
+
+
+ .FUNCT VAPOR-SNATCH?,ANY,OBJ,NXT,RM,LEN,X
+ GETB MOOR-ROOMS,0 >LEN
+ FIRST? PLAYER >OBJ \?CND1
+?PRG3: NEXT? OBJ >NXT /?BOGUS5
+?BOGUS5: FSET? OBJ,NODESC /?CND6
+ FSET? OBJ,WIELDED /?CTR8
+ FSET? OBJ,WORN \?CCL9
+?CTR8: ZERO? ANY \?CND6
+ PRINT TAB
+ ICALL2 CTHE-PRINT,VAPOR
+ PRINTI " tries to snatch "
+ ICALL2 SAY-YOUR,OBJ
+ PRINTI " from your grasp, "
+ RANDOM 100
+ LESS? 50,STACK /?CCL16
+ PRINTI "and nearly succeeds"
+ JUMP ?CND14
+?CCL16: PRINTI "but fails"
+?CND14: RANDOM 100
+ LESS? 50,STACK /?CND17
+ PRINT PERIOD
+ RTRUE
+?CND17: INC 'ANY
+?CND6: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG3
+?CND1: ZERO? ANY /?CND29
+ PRINT PERIOD
+ RTRUE
+?CCL9: FSET? OBJ,TAKEABLE \?CND6
+?PRG20: RANDOM LEN
+ GETB MOOR-ROOMS,STACK >RM
+ EQUAL? RM,HERE /?PRG20
+ FCLEAR OBJ,WORN
+ FCLEAR OBJ,WIELDED
+ MOVE OBJ,RM
+ MOVE VAPOR,RM
+ FSET VAPOR,SURPRISED
+ CALL FIND-IN?,HERE,MONSTER >LAST-MONSTER
+ SET 'LAST-MONSTER-DIR,FALSE-VALUE
+ SET 'P-IT-OBJECT,NOT-HERE-OBJECT
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ZERO? ANY /?CCL26
+ PRINTI ". Instead, it encircles "
+ JUMP ?CND24
+?CCL26: PRINT TAB
+ CALL2 PICK-NEXT,VAPOR-LAUGHS
+ PRINT STACK
+ PRINTI ", "
+ ICALL2 THE-PRINT,VAPOR
+ PRINTI " snatches "
+?CND24: ICALL2 SAY-YOUR,OBJ
+ PRINTR " and spirits it away!"
+?CND29: GET STATS,LUCK >X
+ LESS? X,2 /?PRG34
+ RANDOM 100
+ LESS? X,STACK \FALSE
+?PRG34: RANDOM LEN
+ GETB MOOR-ROOMS,STACK >RM
+ EQUAL? RM,HERE /?PRG34
+ FSET VAPOR,SURPRISED
+ PRINT TAB
+ CALL2 PICK-NEXT,VAPOR-LAUGHS
+ PRINT STACK
+ PRINTI ", "
+ ICALL2 THE-PRINT,VAPOR
+ PRINTI " grabs you by the ankles and lifts you high into the air!"
+ CRLF
+ ZERO? VERBOSITY /?CND38
+ CRLF
+?CND38: ICALL2 GOTO,RM
+ GET STATS,ENDURANCE >X
+ GRTR? X,5 \?CCL42
+ SET 'X,-5
+ JUMP ?CND40
+?CCL42: SUB X,1
+ SUB 0,STACK >X
+?CND40: ICALL2 UPDATE-STAT,X
+ PRINT TAB
+ PRINTR "You slowly recover your bearings."
+
+
+ .FUNCT I-SPIDER,L,DIR,TBL,DEST,DAMAGE
+ LOC SPIDER >L
+ EQUAL? L,HERE \?CND1
+ GETP SPIDER,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SPIDER
+ PRINT STR?579
+ PRINTI "its wounds oozing with vile ichors."
+ CRLF
+ ICALL2 KILL-MONSTER,SPIDER
+ RTRUE
+?CCL5: FSET? SPIDER,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,SPIDER
+ FSET? SPIDER,SLEEPING /?CND3
+ PRINT TAB
+ ICALL2 WHIRLS,SPIDER
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,SPIDER
+ ZERO? STACK \TRUE
+ CALL2 MONSTER-STRIKES?,SPIDER >DAMAGE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SPIDER
+ ZERO? DAMAGE /?CND11
+ CALL2 PICK-NEXT,SPIDER-HITS
+ PRINT STACK
+ ICALL OUCH,SPIDER,DAMAGE
+ RTRUE
+?CND11: CALL2 PICK-NEXT,SPIDER-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,SPIDER >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? SPIDER,SEEN \?CCL17
+ PRINT XTHE
+ JUMP ?CND15
+?CCL17: FSET SPIDER,SEEN
+ PRINT XA
+?CND15: ICALL2 DPRINT,SPIDER
+ PRINTI " crawls in from the "
+ PRINTB DIR
+ PRINTR " passage!"
+
+
+ .FUNCT I-SLUG,L,DIR,TBL,DEST,DAMAGE
+ LOC SLUG >L
+ EQUAL? L,HERE \?CND1
+ GETP SLUG,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SLUG
+ PRINT STR?579
+ PRINTI "oozing something wet."
+ CRLF
+ ICALL2 KILL-MONSTER,SLUG
+ RTRUE
+?CCL5: FSET? SLUG,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,SLUG
+ FSET? SLUG,SLEEPING /?CND3
+ PRINT TAB
+ ICALL2 WHIRLS,SLUG
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,SLUG
+ ZERO? STACK \TRUE
+ CALL2 MONSTER-STRIKES?,SLUG >DAMAGE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SLUG
+ ZERO? DAMAGE /?CND11
+ CALL2 PICK-NEXT,SLUG-HITS
+ PRINT STACK
+ ICALL OUCH,SLUG,DAMAGE
+ RTRUE
+?CND11: CALL2 PICK-NEXT,SLUG-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,SLUG >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? SLUG,SEEN \?CCL17
+ PRINT XTHE
+ JUMP ?CND15
+?CCL17: FSET SLUG,SEEN
+ PRINT XA
+?CND15: ICALL2 DPRINT,SLUG
+ PRINTI " oozes "
+ ICALL2 PASSAGE,DIR
+ RTRUE
+
+
+ .FUNCT I-WORM,L,DIR,TBL,DEST,DAMAGE
+ LOC WORM >L
+ EQUAL? L,HERE \?CND1
+ GETP WORM,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINTI " Hissing with humiliation, "
+ ICALL2 THE-PRINT,WORM
+ PRINTI " slithers away into the undergrowth."
+ CRLF
+ ICALL2 KILL-MONSTER,WORM
+ RTRUE
+?CCL5: FSET? WORM,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,WORM
+ FSET? WORM,SLEEPING /?CND3
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WORM
+ PRINTI " rears up as it sees you."
+ CRLF
+ ICALL2 TOPPLED?,WORM
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,WORM
+ ZERO? STACK \TRUE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WORM
+ IN? PLAYER,MAW \?CND11
+ PRINT STR?580
+ RANDOM 100
+ LESS? 50,STACK /?CND13
+ PRINTI ", sharpening its fangs"
+?CND13: PRINT PERIOD
+ RTRUE
+?CND11: CALL2 MONSTER-STRIKES?,WORM >DAMAGE
+ ZERO? DAMAGE /?CND15
+ CALL2 PICK-NEXT,WORM-HITS
+ PRINT STACK
+ ICALL OUCH,WORM,DAMAGE
+ RTRUE
+?CND15: CALL2 PICK-NEXT,WORM-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,WORM >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WORM
+ PRINT STR?581
+ PRINTB DIR
+ PRINTC 33
+ CRLF
+ ICALL2 TOPPLED?,WORM
+ RTRUE
+
+
+ .FUNCT I-CROC,DAMAGE
+ IN? CROC,HERE \?CND1
+ GETP CROC,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINT TAB
+ ICALL2 CTHE-PRINT,CROC
+ PRINTI " drags itself off into the bushes."
+ CRLF
+ ICALL2 KILL-MONSTER,CROC
+ RTRUE
+?CCL5: FSET? CROC,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,CROC
+ FSET? CROC,SLEEPING /?CND3
+ PRINT TAB
+ ICALL2 WHIRLS,CROC
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,CROC
+ ZERO? STACK \TRUE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,CROC
+ IN? PLAYER,MAW \?CND11
+ PRINT STR?580
+ ICALL1 CHOPS
+ RTRUE
+?CND11: CALL2 MONSTER-STRIKES?,CROC >DAMAGE
+ ZERO? DAMAGE /?CND13
+ CALL2 PICK-NEXT,JAW-HITS
+ PRINT STACK
+ ICALL OUCH,CROC,DAMAGE
+ RTRUE
+?CND13: CALL2 PICK-NEXT,JAW-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 CHARGING?,CROC
+ RSTACK
+
+
+ .FUNCT CHARGING?,OBJ,DIR
+ CALL2 MOVE-MONSTER?,OBJ >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? OBJ,SEEN \?CCL6
+ PRINT XTHE
+ JUMP ?CND4
+?CCL6: FSET OBJ,SEEN
+ PRINT XA
+?CND4: ICALL2 DPRINT,OBJ
+ PRINTI " charges in from the "
+ PRINTB DIR
+ PRINTC 33
+ CRLF
+ ICALL2 TOPPLED?,OBJ
+ RTRUE
+
+
+ .FUNCT CHOPS
+ RANDOM 100
+ LESS? 50,STACK /?CND1
+ PRINTI ", licking its chops"
+?CND1: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-HOUND,DAMAGE
+ IN? HOUND,HERE \?CND1
+ GETP HOUND,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINTI " Whining with pain, "
+ ICALL2 THE-PRINT,HOUND
+ PRINTI " limps away into the forest."
+ CRLF
+ ICALL2 KILL-MONSTER,HOUND
+ RTRUE
+?CCL5: FSET? HOUND,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,HOUND
+ FSET? HOUND,SLEEPING /?CND3
+ PRINT TAB
+ ICALL2 CTHE-PRINT,HOUND
+ PRINTI " bares its fangs when it sees you."
+ CRLF
+ ICALL2 TOPPLED?,HOUND
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,HOUND
+ ZERO? STACK \TRUE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,HOUND
+ IN? PLAYER,POOL \?CND11
+ PRINTI " prowls the edge of "
+ ICALL2 THE-PRINT,POOL
+ ICALL1 CHOPS
+ RTRUE
+?CND11: CALL2 MONSTER-STRIKES?,HOUND >DAMAGE
+ ZERO? DAMAGE /?CND13
+ CALL2 PICK-NEXT,JAW-HITS
+ PRINT STACK
+ ICALL OUCH,HOUND,DAMAGE
+ RTRUE
+?CND13: CALL2 PICK-NEXT,JAW-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 CHARGING?,HOUND
+ RSTACK
+
+
+ .FUNCT I-PUPP,L,PL,DIR,TBL,DEST,DAMAGE
+ LOC PUPP >L
+ EQUAL? L,HERE \?CND1
+ GETP PUPP,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINTI " With a furious snarl, "
+ ICALL2 THE-PRINT,PUPP
+ PRINT STR?577
+ PRINTI "forest."
+ CRLF
+ ICALL2 NEXT-MONSTER,HOUND
+ ICALL2 KILL-MONSTER,PUPP
+ RTRUE
+?CCL5: FSET? PUPP,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,PUPP
+ FSET? PUPP,SLEEPING /?CND3
+ PRINT TAB
+ ICALL2 CTHE-PRINT,PUPP
+ PRINTI " grins evilly when it sees you."
+ CRLF
+ ICALL2 TOPPLED?,PUPP
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,PUPP
+ ZERO? STACK \TRUE
+ ICALL2 NEXT-ENDURANCE?,PUPP
+ LOC PLAYER >PL
+ PRINT TAB
+ ICALL2 CTHE-PRINT,PUPP
+ EQUAL? PL,HERE /?CND11
+ CALL2 PICK-NEXT,PUPP-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND11: CALL2 MONSTER-STRIKES?,PUPP >DAMAGE
+ CALL2 PICK-NEXT,PUPP-HITS
+ PRINT STACK
+ ZERO? DAMAGE \?CND13
+ PRINTR ", but you manage to ignore it."
+?CND13: PRINT PERIOD
+ ICALL2 UPDATE-STAT,DAMAGE
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,PUPP >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? PUPP,SEEN \?CND17
+ ICALL2 CTHE-PRINT,PUPP
+ PRINTI " swings in from the "
+ PRINTB DIR
+ PRINT PERIOD
+ RTRUE
+?CND17: FSET PUPP,SEEN
+ SET 'LAST-MONSTER-DIR,P-WALK-DIR
+ ICALL2 PRINTCA,PUPP
+ PRINTI " drops out of the treetops!"
+ CRLF
+ ICALL2 TOPPLED?,PUPP
+ RTRUE
+
+
+ .FUNCT I-DEAD,DIR,DAMAGE
+ IN? DEAD,HERE \?CND1
+ GETP DEAD,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINTI " Wailing with self-pity, "
+ ICALL2 THE-PRINT,DEAD
+ PRINTI " fades out of existence."
+ CRLF
+ ICALL2 KILL-MONSTER,DEAD
+ RTRUE
+?CCL5: FSET? DEAD,SURPRISED \?CCL7
+ ICALL2 SEE-MONSTER,DEAD
+ ICALL2 WHIRLS,DEAD
+ RTRUE
+?CCL7: CALL2 TOPPLED?,DEAD
+ ZERO? STACK \TRUE
+ ICALL2 NEXT-ENDURANCE?,DEAD
+ CALL2 MONSTER-STRIKES?,DEAD >DAMAGE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,DEAD
+ ZERO? DAMAGE /?CND9
+ CALL2 PICK-NEXT,DEAD-HITS
+ PRINT STACK
+ ICALL OUCH,DEAD,DAMAGE
+ RTRUE
+?CND9: CALL2 PICK-NEXT,DEAD-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,DEAD >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? DEAD,SEEN \?CCL15
+ ICALL2 CTHE-PRINT,DEAD
+ PRINT STR?581
+ PRINTB DIR
+ JUMP ?CND13
+?CCL15: FSET DEAD,SEEN
+ PRINTI "With a fearful battle cry, "
+ ICALL2 PRINTA,DEAD
+ PRINTI " rises out of the ruins"
+?CND13: PRINTC 33
+ CRLF
+ ICALL2 TOPPLED?,DEAD
+ RTRUE
+
+
+ .FUNCT I-GHOUL,DIR,DAMAGE
+ IN? GHOUL,HERE \?CND1
+ GETP GHOUL,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ ICALL2 NEXT-MONSTER,DEAD
+ PRINT TAB
+ PRINTI "Howling with pain and rage, "
+ ICALL2 THE-PRINT,GHOUL
+ PRINTI " abandons his spade and"
+ PRINT STR?577
+ PRINTI "ruins."
+ CRLF
+ ICALL2 KILL-MONSTER,GHOUL
+ MOVE SPADE,HERE
+ SET 'P-IT-OBJECT,SPADE
+ RTRUE
+?CCL5: FSET? GHOUL,SURPRISED \?CND3
+ ICALL2 SEE-MONSTER,GHOUL
+ FSET? GHOUL,SLEEPING /?CND3
+ ICALL2 WHIRLS,GHOUL
+ RTRUE
+?CND3: CALL2 STILL-SLEEPING?,GHOUL
+ ZERO? STACK \TRUE
+ CALL2 MONSTER-STRIKES?,GHOUL >DAMAGE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GHOUL
+ ZERO? DAMAGE /?CND11
+ CALL2 PICK-NEXT,GHOUL-HITS
+ PRINT STACK
+ ICALL OUCH,GHOUL,DAMAGE
+ RTRUE
+?CND11: CALL2 PICK-NEXT,GHOUL-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL2 MOVE-MONSTER?,GHOUL >DIR
+ ZERO? DIR /FALSE
+ PRINT TAB
+ FSET? GHOUL,SEEN \?CCL17
+ ICALL2 CTHE-PRINT,GHOUL
+ PRINT STR?581
+ PRINTB DIR
+ JUMP ?CND15
+?CCL17: FSET GHOUL,SEEN
+ PRINTI "Without warning, "
+ ICALL2 PRINTA,GHOUL
+ PRINTI " leaps out of the rubble"
+?CND15: PRINTC 33
+ CRLF
+ ICALL2 TOPPLED?,GHOUL
+ RTRUE
+
+
+ .FUNCT I-ASUCKER
+ CALL MOVE-SUCKERS,ASUCKER,BSUCKER
+ RSTACK
+
+
+ .FUNCT I-BSUCKER
+ CALL MOVE-SUCKERS,BSUCKER,CSUCKER
+ RSTACK
+
+
+ .FUNCT I-CSUCKER
+ CALL2 MOVE-SUCKERS,CSUCKER
+ RSTACK
+
+
+ .FUNCT MOVE-SUCKERS,OBJ,NXT,DAMAGE,L,PL,DIR,TBL,DEST,X
+ LOC OBJ >L
+ EQUAL? L,HERE \?CND1
+ PRINT TAB
+ GETP OBJ,P?ENDURANCE
+ LESS? STACK,1 \?CCL5
+ PRINTI "Squealing with fear, "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI " retreats down the passageway."
+ CRLF
+ ZERO? NXT /?CND6
+ ICALL2 NEXT-MONSTER,NXT
+ ICALL2 NEXT-SUCKER,NXT
+?CND6: ICALL2 KILL-MONSTER,OBJ
+ RTRUE
+?CCL5: FSET? OBJ,SURPRISED \?CCL9
+ ICALL2 SEE-MONSTER,OBJ
+ ZERO? LIT? \?CND10
+ ICALL1 DARK-MOVES
+ RTRUE
+?CND10: ICALL2 CTHE-PRINT,OBJ
+ PRINTR " glances up as you appear."
+?CCL9: RANDOM 100
+ LESS? 20,STACK /?CND3
+ GETP OBJ,P?EMAX
+ PUTP OBJ,P?ENDURANCE,STACK
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ZERO? LIT? /?CND13
+ ICALL2 BLINK,OBJ
+ PRINTI " turns into "
+?CND13: ICALL2 NEXT-SUCKER,OBJ
+ ZERO? LIT? /?CND15
+ ICALL2 PRINTA,OBJ
+ PRINTR "!"
+?CND15: PRINT YOU-HEAR
+ PRINTR "a curious sound in the darkness."
+?CND3: GET STATS,LUCK >X
+ GRTR? X,9 \?CCL19
+ MUL 10,X
+ DIV STACK,100 >DAMAGE
+ JUMP ?CND17
+?CCL19: GRTR? X,1 \?CND17
+ SET 'DAMAGE,1
+?CND17: ICALL2 NEXT-ENDURANCE?,OBJ
+ GETP HERE,P?MIRROR-OBJ >X
+ EQUAL? X,FALSE-VALUE,NO-MIRROR /?CCL23
+ ZERO? LIT? /?CCL26
+ ICALL2 CTHE-PRINT,OBJ
+ GET SUCKER-SMASHES,THIS-SUCKER
+ PRINT STACK
+ PRINT PTAB
+ ICALL2 ITALICIZE,STR?582
+ PRINTC 33
+ CRLF
+ JUMP ?CND24
+?CCL26: PRINT YOU-HEAR
+ PRINTI "a flabby "
+ ICALL2 ITALICIZE,STR?583
+ PRINTI " in the darkness."
+ CRLF
+?CND24: ICALL2 DESTROY-MIRROR,X
+ CALL1 NOLUCK?
+ ZERO? STACK /TRUE
+ SUB 0,DAMAGE
+ ICALL UPDATE-STAT,STACK,LUCK,TRUE-VALUE
+ RTRUE
+?CCL23: ZERO? LIT? /?CND21
+ RANDOM 100
+ LESS? 67,STACK /?CND21
+ ICALL2 CTHE-PRINT,OBJ
+ GET SUCKER-HITS,THIS-SUCKER
+ CALL2 PICK-NEXT,STACK
+ PRINT STACK
+ PRINT PERIOD
+ CALL1 NOLUCK?
+ ZERO? STACK /TRUE
+ SUB 0,DAMAGE
+ ICALL UPDATE-STAT,STACK,LUCK,TRUE-VALUE
+ RTRUE
+?CND21: ZERO? LIT? /?CND33
+ ICALL2 CTHE-PRINT,OBJ
+ GET SUCKER-MISSES,THIS-SUCKER
+ CALL2 PICK-NEXT,STACK
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND33: PRINTI "Something "
+ CALL2 PICK-NEXT,SUCKER-STALKS
+ PRINT STACK
+ PRINTR " you in the darkness."
+?CND1: CALL2 MOVE-MONSTER?,OBJ >DIR
+ ZERO? DIR /?CND35
+ PRINT TAB
+ ZERO? LIT? \?CCL39
+ PRINT YOU-HEAR
+ PRINTB W?SOMETHING
+ PRINTR " stalk into the passage."
+?CCL39: FSET? OBJ,SEEN \?CCL41
+ PRINT XTHE
+ JUMP ?CND37
+?CCL41: FSET OBJ,SEEN
+ PRINT XA
+?CND37: ICALL2 DPRINT,OBJ
+ PRINTI " stalks in from the "
+ PRINTB DIR
+ PRINTR " passage."
+?CND35: LOC OBJ
+ GETP STACK,P?MIRROR-OBJ >X
+ EQUAL? X,FALSE-VALUE,NO-MIRROR /FALSE
+ PRINT TAB
+ PRINT YOU-HEAR
+ PRINTI "a distant patter of stalking feet, then a flabby "
+ ICALL2 ITALICIZE,STR?583
+ PRINT PERIOD
+ ICALL2 DESTROY-MIRROR,X
+ RTRUE
+
+
+ .FUNCT NEXT-SUCKER,OBJ,X
+?PRG1: CALL2 PICK-ONE,SUCKER-TYPES >X
+ EQUAL? X,THIS-SUCKER /?PRG1
+ SET 'THIS-SUCKER,X
+ GETPT OBJ,P?SYNONYM >X
+ GET SUCKER-SYNS-A,THIS-SUCKER
+ PUT X,0,STACK
+ GET SUCKER-SYNS-B,THIS-SUCKER
+ PUT X,1,STACK
+ GETPT OBJ,P?ADJECTIVE >X
+ GET SUCKER-ADJS,THIS-SUCKER
+ PUT X,0,STACK
+ RFALSE
+
+
+ .FUNCT I-AMULET
+ DLESS? 'AMULET-TIMER,1 \FALSE
+ CALL2 VISIBLE?,AMULET
+ ZERO? STACK /?CND3
+ ICALL1 STAR-FADES
+?CND3: ICALL1 STOP-AMULET
+ CALL2 WEARING-MAGIC?,AMULET
+ ZERO? STACK /FALSE
+ ICALL1 NORMAL-STRENGTH
+ RFALSE
+
+
+ .FUNCT STAR-FADES,ANGRY
+ PRINTI " The amulet's glowing star "
+ ZERO? ANGRY /?CND1
+ PRINTI "flares angrily, "
+?CND1: PRINTR "fades and disappears."
+
+
+ .FUNCT I-SALT
+ EQUAL? HERE,ON-WHARF \FALSE
+ FSET? SALT,SEEN \?CCL5
+ FCLEAR SALT,SEEN
+ RFALSE
+?CCL5: RANDOM 100
+ LESS? 75,STACK \FALSE
+ FSET SALT,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SALT
+ CALL2 PICK-NEXT,SALT-DABS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-BANDITS
+ EQUAL? HERE,IN-PUB \FALSE
+ FSET? BANDITS,SEEN \?CCL5
+ FCLEAR BANDITS,SEEN
+ RFALSE
+?CCL5: RANDOM 100
+ LESS? 50,STACK \FALSE
+ FSET BANDITS,SEEN
+ PRINT TAB
+ GRTR? GOSSIP,4 \?CND7
+ CALL2 PICK-NEXT,BANDIT-MUTTERS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND7: INC 'GOSSIP
+ EQUAL? GOSSIP,1 \?CCL11
+ PRINTR "One of the bandits leers at you. ""Har!"""
+?CCL11: EQUAL? GOSSIP,2 \?CCL13
+ PRINTR "You overhear the word ""helmet"" in a conversation nearby."
+?CCL13: EQUAL? GOSSIP,3 \?CND9
+ PRINTR "A bandit looks you up and down. ""Monster bait. Har!"""
+?CND9: PRINTR """... north of the River Phee,"" whispers a bandit."
+
+
+ .FUNCT I-COOK
+ EQUAL? HERE,IN-KITCHEN \FALSE
+ FSET? COOK,SEEN \?CCL5
+ FCLEAR COOK,SEEN
+ RFALSE
+?CCL5: RANDOM 100
+ LESS? 75,STACK \FALSE
+ FSET COOK,SEEN
+ ICALL2 SEE-CHARACTER,COOK
+ PRINT TAB
+ ICALL2 CTHE-PRINT,COOK
+ CALL2 PICK-NEXT,COOK-DOINGS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-ONION-OFFER
+ EQUAL? HERE,IN-KITCHEN \FALSE
+ FSET? COOK,SEEN \?CND1
+ FCLEAR COOK,SEEN
+ RFALSE
+?CND1: ICALL1 STOP-ONION-OFFER
+ PRINT TAB
+ ICALL2 CTHE-PRINT,COOK
+ PRINTI "'s scowl changes to a malicious grin. ""Listen, "
+ ICALL1 BOY-GIRL
+ PRINTI ","" he says. ""You look like somebody who knows a great vegetable when "
+ FSET? PLAYER,FEMALE \?CND5
+ PRINTC 115
+?CND5: PRINTI "he sees one. You want this here onion? Okay. There's an old bottle of wine lyin' around downstairs somewhere. Bring it up to me in one piece, and "
+ ICALL2 THE-PRINT,ONION
+ PRINTI "'s yours."" He"
+ PRINT GLANCES-AT
+ ICALL2 THE-PRINT,CELLAR-DOOR
+ PRINTR " and shudders. ""Simple."""
+
+
+ .FUNCT I-GONDOLA,RIDING
+ IN? WINNER,GONDOLA \?CND1
+ INC 'RIDING
+?CND1: IGRTR? 'GON,14 \?CCL5
+ SET 'GON,0
+ ICALL REPLACE-GLOBAL?,AT-DOCK,DGONDOLA,NULL
+ MOVE GONDOLA,AT-DOCK
+ FSET GONDOLA,OPENED
+ ZERO? RIDING /?CCL8
+ SET 'HERE,AT-DOCK
+ JUMP ?CND6
+?CCL8: EQUAL? HERE,AT-DOCK \FALSE
+ SET 'P-IT-OBJECT,GONDOLA
+?CND6: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTI " glides to a halt at "
+ ICALL2 THE-PRINT,DOCK
+ PRINT PTAB
+ PRINTI """All off,"" calls "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI " as the hatch swings open. "
+ PRINT STR?584
+ PRINTR ". Please exit the Skycar in an orderly manner."""
+?CCL5: EQUAL? GON,1 \?CCL12
+ EQUAL? HERE,AT-DOCK \FALSE
+ PRINT TAB
+ PRINTI "The last few "
+ PRINTD PASSENGERS
+ PRINTI " are shuffling out of "
+ ICALL2 THE-PRINT,GONDOLA
+ ZERO? RIDING /?CND15
+ PRINTI ". ""All off, please,"" repeats "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI ", meaning you"
+?CND15: PRINT PERIOD
+ RTRUE
+?CCL12: EQUAL? GON,2 \?CCL18
+ EQUAL? HERE,AT-DOCK \FALSE
+ PRINT TAB
+ ZERO? RIDING /?CND21
+ MOVE PLAYER,AT-DOCK
+ FSET GONDOLA,NODESC
+ SET 'P-WALK-DIR,FALSE-VALUE
+ PRINT STR?584
+ PRINTI ","" growls "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI ", pushing you out of "
+ ICALL2 THE-PRINT,GONDOLA
+ ICALL1 RELOOK
+?CND21: PRINTI "Eager "
+ PRINTD PASSENGERS
+ PRINTI " surge into the emptied "
+ PRINTD GONDOLA
+ PRINTI ". ""All aboard, please,"" announces "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTR " unnecessarily."
+?CCL18: EQUAL? GON,3 \?CCL24
+ FCLEAR GONDOLA,OPENED
+ ZERO? RIDING \?CND25
+ EQUAL? HERE,AT-DOCK \FALSE
+?CND25: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI """Stay clear of the door, please,"" calls "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI " as the last few "
+ PRINTD PASSENGERS
+ PRINTI " squeeze into "
+ ICALL2 THE-PRINT,GONDOLA
+ PRINT PERIOD
+ RTRUE
+?CCL24: EQUAL? GON,4 \?CCL29
+ MOVE GONDOLA,OVER-JUNGLE
+ ICALL REPLACE-GLOBAL?,AT-DOCK,NULL,DGONDOLA
+ ZERO? RIDING /?CCL32
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ SET 'HERE,OVER-JUNGLE
+ JUMP ?CND30
+?CCL32: EQUAL? HERE,AT-DOCK \FALSE
+ SET 'P-IT-OBJECT,DGONDOLA
+?CND30: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTI " slides away from the dock and glides west, high over "
+ ICALL2 THE-PRINT,JUNGLE
+ PRINT PTAB
+ PRINTI """Welcome to the Miznia Jungle Skyway."" drawls "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTR ", his voice heavy with boredom."
+?CCL29: EQUAL? GON,5 \?CCL36
+ ICALL REPLACE-GLOBAL?,AT-DOCK,DGONDOLA,NULL
+ ICALL REPLACE-GLOBAL?,NW-SUPPORT,NULL,DGONDOLA
+ ICALL REPLACE-GLOBAL?,NW-UNDER,NULL,DGONDOLA
+ ICALL REPLACE-GLOBAL?,OVER-JUNGLE,DOCK,SUPPORT
+ PUTP NW-UNDER,P?OVERHEAD,DGONDOLA
+ EQUAL? HERE,AT-DOCK \?CCL39
+ ICALL2 GONDOLA-GONE,W?WEST
+ RTRUE
+?CCL39: EQUAL? HERE,NW-SUPPORT,NW-UNDER \?CCL41
+ ICALL VIEWGLIDE,NW-UNDER,W?EAST
+ RTRUE
+?CCL41: ZERO? RIDING /FALSE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-IT-OBJECT,SUPPORT
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTI " glides over "
+ ICALL2 THE-PRINT,JUNGLE
+ PRINTI ", towards a tall "
+ PRINTD SUPPORT
+ PRINT PTAB
+ PRINTI """The jungles of Miznia are the spawning grounds of the deadly "
+ PRINTD WORM
+ PRINTI ","" drones "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI ". ""Often mistaken for a mossy boulder, the "
+ PRINTD WORM
+ PRINTR "'s fangs extend up to 32 inches during an attack.""
+ ""Oooh,"" murmurs the crowd."
+?CCL36: EQUAL? GON,6 \?CCL44
+ MOVE GONDOLA,NW-SUPPORT
+ EQUAL? HERE,NW-SUPPORT \?CCL47
+ ICALL1 GLIDING
+ JUMP ?CND45
+?CCL47: ZERO? RIDING /FALSE
+ ICALL2 GLIDE-PAST,NW-SUPPORT
+?CND45: PRINT TAB
+ PRINTI """The tower to your right is one of several erected to elevate the Skyway above the treetops,"" explains "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTR ". ""Before the Skyway opened in 882 GUE, an average of twenty Miznia Jungle Train passengers died of wormbite each year.""
+ The crowd giggles nervously."
+?CCL44: EQUAL? GON,7 \?CCL51
+ MOVE GONDOLA,OVER-JUNGLE
+ ZERO? RIDING /?CCL54
+ SET 'HERE,OVER-JUNGLE
+ JUMP ?CND52
+?CCL54: EQUAL? HERE,NW-SUPPORT \FALSE
+ SET 'P-IT-OBJECT,DGONDOLA
+?CND52: ICALL2 TURNS,W?SOUTH
+ ZERO? RIDING /TRUE
+ PRINT TAB
+ PRINTI """The jungle is a rich source of exciting stories,"" continues "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTR ", stifling a yawn. ""The most famous is the Legend of the Crocodile's Tear."""
+?CCL51: EQUAL? GON,8 \?CCL60
+ ICALL REPLACE-GLOBAL?,NW-SUPPORT,DGONDOLA,NULL
+ ICALL REPLACE-GLOBAL?,NW-UNDER,DGONDOLA,NULL
+ PUTP NW-UNDER,P?OVERHEAD,SUPPORT
+ ICALL REPLACE-GLOBAL?,SW-SUPPORT,NULL,DGONDOLA
+ ICALL REPLACE-GLOBAL?,SW-UNDER,NULL,DGONDOLA
+ PUTP SW-UNDER,P?OVERHEAD,DGONDOLA
+ EQUAL? HERE,NW-SUPPORT,NW-UNDER \?CCL63
+ SET 'P-IT-OBJECT,NOT-HERE-OBJECT
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTR " glides southward, and is soon out of sight."
+?CCL63: EQUAL? HERE,SW-SUPPORT,SW-UNDER \?CCL65
+ ICALL VIEWGLIDE,SW-UNDER,W?NORTH
+ RTRUE
+?CCL65: ZERO? RIDING /FALSE
+ ICALL1 JUNGLE-GLIDE
+ PRINT TAB
+ PRINTI """The Crocodile's Tear is a sapphire of extraordinary size and clarity. It was discovered by a slave working the granola mines of Antharia, who died bringing it to the surface."""
+ CRLF
+ PRINT TAB
+ PRINTI "Another "
+ PRINTD SUPPORT
+ PRINTR " is approaching."
+?CCL60: EQUAL? GON,9 \?CCL68
+ MOVE GONDOLA,SW-SUPPORT
+ EQUAL? HERE,SW-SUPPORT \?CCL71
+ ICALL1 GLIDING
+ JUMP ?CND69
+?CCL71: ZERO? RIDING /FALSE
+ ICALL2 GLIDE-PAST,SW-SUPPORT
+?CND69: PRINT TAB
+ PRINTR """After passing through many hands, including those of Thaddium Fzort"" (""Bless you,"" mutters a passenger), ""the jewel came into the possession of the evil sorceress Y'Syska, whose collection of gems and minerals is still without peer."""
+?CCL68: EQUAL? GON,10 \?CCL75
+ MOVE GONDOLA,OVER-JUNGLE
+ ZERO? RIDING /?CCL78
+ SET 'HERE,OVER-JUNGLE
+ JUMP ?CND76
+?CCL78: EQUAL? HERE,SW-SUPPORT \FALSE
+ SET 'P-IT-OBJECT,DGONDOLA
+?CND76: ICALL2 TURNS,W?EAST
+ ZERO? RIDING /TRUE
+ PRINT TAB
+ PRINTI """Flash photography is prohibited,"" growls "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTR " as a passenger snaps a picture of the hazy landscape."
+?CCL75: EQUAL? GON,11 \?CCL84
+ ICALL REPLACE-GLOBAL?,SW-SUPPORT,DGONDOLA,NULL
+ ICALL REPLACE-GLOBAL?,SW-UNDER,DGONDOLA,NULL
+ PUTP SW-UNDER,P?OVERHEAD,SUPPORT
+ ICALL REPLACE-GLOBAL?,SE-SUPPORT,NULL,DGONDOLA
+ ICALL REPLACE-GLOBAL?,SE-UNDER,NULL,DGONDOLA
+ PUTP SE-UNDER,P?OVERHEAD,DGONDOLA
+ EQUAL? HERE,SW-SUPPORT,SW-UNDER \?CCL87
+ ICALL2 GONDOLA-GONE,W?EAST
+ RTRUE
+?CCL87: EQUAL? HERE,SE-SUPPORT,SE-UNDER \?CCL89
+ ICALL VIEWGLIDE,SE-UNDER,W?WEST
+ RTRUE
+?CCL89: ZERO? RIDING /FALSE
+ ICALL1 JUNGLE-GLIDE
+ PRINT TAB
+ PRINTI """To protect the Crocodile's Tear from thieves, Y'Syska concealed it somewhere in the jungle below,"" concludes "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI " lamely. ""There it remains to this very day, guarded by bloodworms and whatever traps the sorceress laid to confound the unwary."""
+ CRLF
+ PRINT TAB
+ PRINTI "Another "
+ PRINTD SUPPORT
+ PRINTR " looms to the east."
+?CCL84: EQUAL? GON,12 \?CCL92
+ MOVE GONDOLA,SE-SUPPORT
+ EQUAL? HERE,SE-SUPPORT \?CCL95
+ ICALL1 GLIDING
+ JUMP ?CND93
+?CCL95: ZERO? RIDING /FALSE
+ ICALL2 GLIDE-PAST,SE-SUPPORT
+?CND93: PRINT TAB
+ PRINTI """Thirsty?"" asks "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI ". ""Stop by "
+ PRINT STR?585
+ PRINTR "tall, frosty Granola Float."" He smacks his lips dispiritedly. ""Mmm, so good."""
+?CCL92: EQUAL? GON,13 \?CCL99
+ MOVE GONDOLA,OVER-JUNGLE
+ ZERO? RIDING /?CCL102
+ SET 'HERE,OVER-JUNGLE
+ JUMP ?CND100
+?CCL102: EQUAL? HERE,SE-SUPPORT \FALSE
+?CND100: ICALL2 TURNS,W?NORTH
+ ZERO? RIDING /TRUE
+ PRINT TAB
+ PRINTI """Bloodworms are not the only inhabitants of the Miznia jungle,"" remarks "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTR ", pausing to stretch. ""Survivors have reported a wide variety of birds, reptiles and other unclassifiable dangers."""
+?CCL99: EQUAL? GON,14 \FALSE
+ ICALL REPLACE-GLOBAL?,SE-SUPPORT,DGONDOLA,NULL
+ ICALL REPLACE-GLOBAL?,OVER-JUNGLE,SUPPORT,DOCK
+ ICALL REPLACE-GLOBAL?,SE-UNDER,DGONDOLA,NULL
+ PUTP SW-UNDER,P?OVERHEAD,SUPPORT
+ ICALL REPLACE-GLOBAL?,AT-DOCK,NULL,DGONDOLA
+ EQUAL? HERE,SE-SUPPORT,SE-UNDER \?CCL110
+ ICALL2 GONDOLA-GONE,W?NORTH
+ RTRUE
+?CCL110: EQUAL? HERE,AT-DOCK \?CCL112
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 PRINTCA,GONDOLA
+ PRINT SIS
+ PRINT STR?586
+ RTRUE
+?CCL112: ZERO? RIDING /FALSE
+ ICALL1 JUNGLE-GLIDE
+ PRINT TAB
+ PRINTI """Be sure to visit "
+ PRINT STR?585
+ PRINTI "thrilling selection of one-of-a-kind gift ideas,"" urges "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINTI " as "
+ ICALL2 THE-PRINT,DOCK
+ PRINTR " appears to the north."
+
+
+ .FUNCT GONDOLA-GONE,WRD
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTI " disappears to the "
+ PRINTB WRD
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT TURNS,WRD
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTI " turns and glides "
+ PRINTB WRD
+ PRINTI ", away from "
+ ICALL2 THE-PRINT,SUPPORT
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT VIEWGLIDE,RM,WRD
+ SET 'P-IT-OBJECT,DGONDOLA
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 PRINTCA,GONDOLA
+ PRINTI " glides into view "
+ EQUAL? RM,HERE \?CND1
+ PRINTR "overhead."
+?CND1: PRINTI "from the "
+ PRINTB WRD
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT GLIDING
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTR " glides smoothly past, just a few feet away."
+
+
+ .FUNCT GLIDE-PAST,RM
+ SET 'HERE,RM
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTI " is gliding just a few feet from the top of "
+ ICALL2 THE-PRINT,SUPPORT
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT JUNGLE-GLIDE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-IT-OBJECT,SUPPORT
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GONDOLA
+ PRINTI " glides across "
+ ICALL2 THE-PRINT,JUNGLE
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-PHASE,L
+ FSET? PHASE,SEEN \?CCL3
+ FCLEAR PHASE,SEEN
+ RFALSE
+?CCL3: FSET? PHASE,NODESC \FALSE
+ CALL2 VISIBLE?,PHASE
+ ZERO? STACK /FALSE
+ FCLEAR PHASE,NODESC
+ SET 'P-IT-OBJECT,PHASE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ LOC PHASE >L
+ PRINT TAB
+ ICALL2 CTHE-PRINT,PHASE
+ EQUAL? L,PLAYER \?CCL10
+ PRINT SIN
+ PRINTD HANDS
+ PRINTC 115
+ JUMP ?CND8
+?CCL10: EQUAL? L,HERE \?CCL12
+ PRINT SON
+ FSET? HERE,INDOORS \?CCL15
+ ICALL2 THE-PRINT,FLOOR
+ JUMP ?CND8
+?CCL15: ICALL2 THE-PRINT,GROUND
+ JUMP ?CND8
+?CCL12: FSET? L,CONTAINER \?CCL17
+ PRINT SIN
+ ICALL2 THE-PRINT,L
+ JUMP ?CND8
+?CCL17: FSET? L,SURFACE \?CND8
+ PRINT SON
+ ICALL2 THE-PRINT,L
+?CND8: PRINTR " reappears at the edge of your vision."
+
+
+ .FUNCT I-OWOMAN
+ IN? OWOMAN,HERE \FALSE
+ FSET? OWOMAN,SEEN \?CCL5
+ FCLEAR OWOMAN,SEEN
+ RFALSE
+?CCL5: RANDOM 100
+ LESS? 50,STACK \FALSE
+ SET 'P-HER-OBJECT,OWOMAN
+ FSET OWOMAN,SEEN
+ PRINT TAB
+ PRINT CTHELADY
+ CALL2 PICK-NEXT,OWOMAN-MOVES
+ PRINT STACK
+ ICALL2 THE-PRINT,MCASE
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-MIRRORS,V,HEAR,L,OBJ,CNT,TIME,LEN
+ CALL1 GRUE-ROOM? >HEAR
+ GET MIRROR-LIST,0 >LEN
+ SET 'CNT,7
+?PRG1: GET MIRROR-LIST,LEN >OBJ
+ LOC OBJ >L
+ ZERO? L /?CCL5
+ GETP OBJ,P?SIZE >TIME
+ DLESS? 'TIME,1 \?CCL8
+ DEC 'CNT
+ EQUAL? L,HERE \?CCL11
+ INC 'V
+ PRINT TAB
+ ICALL2 SAY-MIRROR-POPS,OBJ
+ JUMP ?CND9
+?CCL11: ZERO? HEAR /?CND9
+ INC 'V
+ PRINT TAB
+ PRINTI "A distant "
+ ICALL2 ITALICIZE,STR?583
+ PRINTI " echoes down the passageway."
+ CRLF
+?CND9: ICALL2 DESTROY-MIRROR,OBJ
+ JUMP ?CND3
+?CCL8: PUTP OBJ,P?SIZE,TIME
+ EQUAL? L,HERE \?CND3
+ EQUAL? TIME,2,10,18 \?CND3
+ INC 'V
+ PRINT TAB
+ SET 'P-IT-OBJECT,OBJ
+ ICALL2 CTHE-PRINT,OBJ
+ EQUAL? TIME,2 \?CCL19
+ PRINTI " is flexing dangerously now"
+ PRINT STR?587
+ JUMP ?CND3
+?CCL19: EQUAL? TIME,10 \?CCL21
+ PRINTI " shimmers uncertainly for a moment."
+ CRLF
+ JUMP ?CND3
+?CCL21: PRINTI " billows slightly, then stabilizes."
+ CRLF
+ JUMP ?CND3
+?CCL5: DEC 'CNT
+?CND3: DLESS? 'LEN,1 \?PRG1
+ ZERO? CNT /?CCL25
+ RETURN V
+?CCL25: ICALL2 DEQUEUE,I-MIRRORS
+ RETURN V
+
+
+ .FUNCT SAY-MIRROR-POPS,OBJ
+ ICALL2 ITALICIZE,STR?582
+ PRINTI "! "
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTR " disappears in a silver spray."
+
+
+ .FUNCT DESTROY-MIRROR,OBJ,L
+ EQUAL? OBJ,FALSE-VALUE,NO-MIRROR /FALSE
+ LOC OBJ >L
+ PUTP OBJ,P?MIRROR-DIR,NO-MIRROR
+ PUTP OBJ,P?SIZE,0
+ REMOVE OBJ
+ EQUAL? L,HERE \?CND3
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+?CND3: GETP L,P?MIRROR-OBJ
+ EQUAL? STACK,OBJ \FALSE
+ PUTP L,P?MIRROR-OBJ,NO-MIRROR
+ ICALL1 REFLECTIONS
+ RFALSE
+
+
+ .FUNCT CREATE-MIRROR?,OBJ,DIR
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE OBJ,HERE
+ SET 'P-IT-OBJECT,OBJ
+ RANDOM 7
+ BOR STACK,1 >DIR
+ PUTP OBJ,P?MIRROR-DIR,DIR
+ PUTP OBJ,P?SIZE,MIRROR-LIFE
+ CALL2 QUEUED?,I-MIRRORS
+ ZERO? STACK \?CND1
+ ICALL2 QUEUE,I-MIRRORS
+?CND1: RETURN DIR
+
+
+ .FUNCT I-URGRUE,SEE
+ EQUAL? HERE,IN-LAIR \FALSE
+ ZERO? LIT? \?CCL4
+ CALL2 WEARING-MAGIC?,HELM
+ ZERO? STACK /?CND1
+?CCL4: INC 'SEE
+?CND1: FSET URGRUE,SEEN
+ PRINT TAB
+ FSET? URGRUE,SURPRISED \?CND7
+ FCLEAR URGRUE,SURPRISED
+ FSET? URGRUE,IDENTIFIED /?CND9
+ FSET URGRUE,IDENTIFIED
+ ZERO? SEE /?CCL13
+ PRINTI "As you glance around the chamber, "
+ ICALL2 THE-PRINT,URGRUE
+ PRINTI " yawns and stretches"
+ JUMP ?CND11
+?CCL13: PRINT YOU-HEAR
+ PRINT STR?588
+ PRINTI " yawn"
+?CND11: PRINTR ". ""At last we meet."""
+?CND9: PRINTC 34
+ CALL2 PICK-NEXT,URGRUE-GREETS
+ PRINT STACK
+ PRINTI ","" chuckles "
+ ZERO? SEE /?CCL16
+ ICALL2 THE-PRINT,URGRUE
+ JUMP ?CND14
+?CCL16: PRINT STR?588
+?CND14: LESS? URSCRIPT,2 \?CND17
+ PRINT PERIOD
+ RTRUE
+?CND17: PRINTR ". ""Now where were we? Ah, yes. We were deciding how best to destroy you."""
+?CND7: IGRTR? 'URSCRIPT,4 \?CCL21
+ ICALL1 TIMESTOP
+ RTRUE
+?CCL21: EQUAL? URSCRIPT,4 \?CCL23
+ PRINTI """I know!"" cries "
+ ICALL2 THE-PRINT,URGRUE
+ PRINTR " with delight. ""Girgol, the Time Stop spell! Love it. You'll make a hilarious statue."""
+?CCL23: EQUAL? URSCRIPT,3 \?CCL25
+ ICALL2 CTHE-PRINT,URGRUE
+ PRINTI " mutters thoughtfully to itself. ""Let's see, now. A spell. Cleesh? No; too silly. Espnis? Hmm. Better not; "
+ FSET? PLAYER,FEMALE \?CND26
+ PRINTC 115
+?CND26: PRINTR "he might snore."""
+?CCL25: EQUAL? URSCRIPT,2 \?CND19
+ PRINTI """An interesting question,"" continues "
+ ICALL2 THE-PRINT,URGRUE
+ PRINTI " conversationally, ""is "
+ ICALL2 ITALICIZE,STR?589
+ PRINTR " to destroy you. Not a trivial decision, no. I must select a spell that will enhance my image, a Magick worthy of my thoroughly evil reputation."""
+?CND19: ICALL2 CTHE-PRINT,URGRUE
+ PRINTR "'s chuckling subsides. ""I rarely get visitors,"" it admits in a wistful tone. ""A pity I have to destroy you."""
+
+
+ .FUNCT I-ARCH3
+ INC 'ARCHTIMER
+ PRINT TAB
+ EQUAL? ARCHTIMER,1 \?CCL3
+ ICALL2 CTHE-PRINT,ORATOR
+ PRINTI " stills "
+ ICALL2 THE-PRINT,PCROWD
+ PRINTI " with a wave of his hand.
+ ""Our fathers built this city at the Place Where the Great Waters Meet,"" he cries. ""The right to name the One River belongs to us!"""
+ CRLF
+ PRINT TAB
+ ICALL2 CTHE-PRINT,PCROWD
+ PRINTR " roars its approval."
+?CCL3: EQUAL? ARCHTIMER,2 \?CCL5
+ PRINTI """The infidels from the east control the One River's mouth,"" continues "
+ ICALL2 THE-PRINT,ORATOR
+ PRINTI ". ""But we, who dwell at the joining of the Rivers Phee and Bor, WE control the source!"" "
+ ICALL2 CTHE-PRINT,PCROWD
+ PRINTI " whistles. ""As the daughter takes the name of the father, so shall the One River be known by the place of its birth!"""
+ CRLF
+ PRINT TAB
+ PRINTC 34
+ ICALL2 ITALICIZE,STR?590
+ PRINTI "!"" roars "
+ ICALL2 THE-PRINT,PCROWD
+ PRINTR ". ""Hail the River Pheebor!"""
+?CCL5: EQUAL? ARCHTIMER,3 \?CND1
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ REMOVE ORATOR
+ SET 'QCONTEXT,FALSE-VALUE
+ SET 'QCONTEXT-ROOM,FALSE-VALUE
+ SET 'P-HIM-OBJECT,NOT-HERE-OBJECT
+ PRINTI """Phee-bor! Phee-bor!"" chants "
+ ICALL2 THE-PRINT,PCROWD
+ PRINT PTAB
+ PRINTI """We have no quarrel with the city to the east,"" claims "
+ ICALL2 THE-PRINT,ORATOR
+ PRINTI " (amid shouts to the contrary). ""But if they continue to slight our heritage with the wretched name "
+ ICALL2 ITALICIZE,STR?591
+ PRINTI """ (the crowd hisses), ""we shall smite them from the face of the land!"""
+ CRLF
+ PRINT TAB
+ ICALL2 CTHE-PRINT,PCROWD
+ PRINTI " goes wild, and carries "
+ ICALL2 THE-PRINT,ORATOR
+ PRINTR " away on its shoulders."
+?CND1: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 DEQUEUE,I-ARCH3
+ REMOVE PCROWD
+ SET 'P-THEM-OBJECT,NOT-HERE-OBJECT
+ ICALL2 CTHE-PRINT,PCROWD
+ PRINTR " disperses, and you're left alone."
+
+
+ .FUNCT I-ARCH4
+ INC 'ARCHTIMER
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ EQUAL? ARCHTIMER,1 \?CCL3
+ MOVE HORSE,HERE
+ ICALL2 SEE-CHARACTER,PRINCE
+ SET 'P-IT-OBJECT,HELM
+ PRINTR "A magnificent gray stallion appears amid the smoke. Its rider is a tall, proud man wearing a fabulous helmet."
+?CCL3: EQUAL? ARCHTIMER,2 \?CCL5
+ MOVE BHORSE,HERE
+ PRINTR "Another stallion, black as night, races out of the smoke. Its rider's armor gleams red in the firelight.
+ ""At last we meet, Prince Foo,"" snarls the newcomer.
+ The man on the gray stallion regards him coolly. ""Begone, thou eastern fop!"" he cries. ""Never shall the River Pheebor yield its sacred name!"""
+?CCL5: EQUAL? ARCHTIMER,3 \?CND1
+ SET 'QCONTEXT,FALSE-VALUE
+ SET 'QCONTEXT-ROOM,FALSE-VALUE
+ REMOVE BHORSE
+ FSET PRINCE,SLEEPING
+ MOVE PRINCE,HERE
+ MOVE HELM,TRENCH
+ PUTP PRINCE,P?ACTION,DEAD-PRINCE-F
+ ICALL REPLACE-SYN?,PRINCE,W?ZZZP,W?HEAD
+ ICALL REPLACE-SYN?,PRINCE,W?ZZZP,W?BODY
+ ICALL REPLACE-SYN?,PRINCE,W?ZZZP,W?CORPSE
+ ICALL REPLACE-ADJ?,PRINCE,W?ZZZP,W?DEAD
+ PRINTR "The black rider draws a gleaming sword from his scabbard and cuts off the prince's head, which rolls into the trench.
+ ""The reign of Pheebor is ended!"" cries the black knight, galloping off into the smoke. ""Foo is dead! The age of Borphee is begun!""
+ The gray stallion nudges the prince's body, and whinnies softly."
+?CND1: ICALL2 DEQUEUE,I-ARCH4
+ IN? HORSE,TRENCH /?CND7
+ PRINT XA
+ ICALL1 SLAY-HORSE
+ PRINT TAB
+?CND7: PRINTR "Cries of ""Foo is dead! The war is over!"" drift through the smoke. Tattered men race past; the cries grow faint; and soon all is still as death."
+
+
+ .FUNCT I-GLASS,V
+ CALL2 VISIBLE?,GLASS >V
+ INC 'GLASS-BOT
+ DLESS? 'GLASS-TOP,1 \?CCL3
+ ICALL2 DEQUEUE,I-GLASS
+ ZERO? V /FALSE
+ PRINT TAB
+ PRINTI "The last grains of sand fall through "
+ ICALL2 THE-PRINT,GLASS
+ PRINT PERIOD
+ ICALL1 ARCH-OFF
+ RTRUE
+?CCL3: ZERO? V /FALSE
+ EQUAL? GLASS-TOP,2,4 /FALSE
+ PRINT TAB
+ EQUAL? GLASS-TOP,1 \?CND9
+ PRINTI "The top half of "
+ ICALL2 THE-PRINT,GLASS
+ PRINTR " is almost empty."
+?CND9: PRINTI "Sand continues to trickle through "
+ ICALL2 THE-PRINT,GLASS
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-HUNTERS
+ EQUAL? HERE,IN-PASTURE \FALSE
+ IN? HUNTERS,IN-PASTURE /?CCL5
+ SET 'HSCRIPT,0
+ ICALL2 QUEUE,I-HUNT
+ MOVE HUNTERS,IN-PASTURE
+ FSET HUNTERS,SEEN
+ ICALL2 SEE-CHARACTER,HUNTERS
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINTR " A distant movement catches your eye. Peering between the oaks, you see men foraging at the pasture's edge. They look like hunters."
+?CCL5: FSET? HUNTERS,SEEN \?CCL7
+ FCLEAR HUNTERS,SEEN
+ RFALSE
+?CCL7: RANDOM 100
+ LESS? 50,STACK \FALSE
+ FSET HUNTERS,SEEN
+ PRINTI " The distant "
+ PRINTD HUNTERS
+ CALL2 PICK-NEXT,HUNTER-DOINGS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-HUNT
+ EQUAL? HERE,IN-PASTURE \FALSE
+ INC 'HSCRIPT
+ FSET HUNTERS,SEEN
+ PRINT TAB
+ EQUAL? HSCRIPT,1 \?CCL5
+ MOVE MINX,OAK
+ MOVE TRACKS,HERE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-HER-OBJECT,MINX
+ SET 'P-IT-OBJECT,MINX
+ PRINTI """Come back 'ere, you!"""
+ CRLF
+ PRINT TAB
+ ICALL2 ITALICIZE,STR?500
+ PRINTI "! A golden bundle of fur jumps out of the forest! It bounds across the snow in quick, desperate leaps, ducks behind the trunk of "
+ ICALL2 PRINTA,OAK
+ PRINT STR?592
+ PRINT TAB
+ PRINTI """I'll wring yer li'l neck,"" promises an angry voice."
+ CRLF
+ ZERO? DMODE \TRUE
+ ICALL2 RELOOK,TRUE-VALUE
+ RTRUE
+?CCL5: EQUAL? HSCRIPT,2 \?CCL9
+ PRINTR """I see yer dirty tracks, ye pest!"" The angry voice is getting much closer."
+?CCL9: EQUAL? HSCRIPT,3 \?CCL11
+ MOVE HUNTER,IN-PASTURE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 SEE-CHARACTER,HUNTER
+ PRINTI """Show yerself, ye flea-bit mop!"""
+ CRLF
+ PRINT TAB
+ PRINTI "A young man strides out of the woods, an angry scowl on his windburned face"
+ IN? TRACKS,HERE \?CND12
+ REMOVE TRACKS
+ PRINTI " as he follows the tracks in the snow."
+ CRLF
+ ICALL1 HUNTER-SEES-MINX
+ RTRUE
+?CND12: PRINTI "... and a nasty-looking whip in his hands"
+ PRINT PTAB
+ PRINTI """Yo, "
+ FSET? PLAYER,FEMALE \?CCL16
+ PRINTI "ma'am"
+ JUMP ?CND14
+?CCL16: PRINTI "sir"
+?CND14: PRINTI "!"" he cries, drawing closer. ""Lost a minx 'ereabouts! Came this way, if th' trail speaks truly.""
+ Something behind "
+ ICALL2 THE-PRINT,OAK
+ PRINTR " whimpers softly."
+?CCL11: EQUAL? HSCRIPT,4 \?CCL18
+ PRINTI "The lad surveys the pasture impatiently. ""Blasted crayture,"" he mutters with a practiced crack of the whip. ""One o' me best. 'Twould be a shame to lose 'er.""
+ The beast behind "
+ ICALL2 THE-PRINT,OAK
+ PRINTR " makes itself as small as possible."
+?CCL18: EQUAL? HSCRIPT,5 \FALSE
+ ICALL2 DEQUEUE,I-HUNT
+ SET 'HSCRIPT,0
+ REMOVE HUNTER
+ FCLEAR HUNTERS,SEEN
+ SET 'P-HIM-OBJECT,NOT-HERE-OBJECT
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE MINX,IN-PASTURE
+ FCLEAR MINX,TRYTAKE
+ FCLEAR MINX,NOALL
+ FSET MINX,TAKEABLE
+ ICALL2 QUEUE,I-MINX
+ ICALL2 SEE-CHARACTER,MINX
+ PRINTI """Hide from me, will ye, ye snufflin' she-devil!"" cries "
+ ICALL2 THE-PRINT,HUNTER
+ PRINTI " striding back into the forest. ""It's to the hounds I'll be throwin' yer bleedin' carcass!"" His curses soon "
+ PRINT STR?593
+ PRINT TAB
+ ICALL2 CTHE-PRINT,MINX
+ PRINTI " pokes its nose out from behind "
+ ICALL2 THE-PRINT,OAK
+ PRINTI ", sniffing fearfully. It peeks around "
+ ICALL2 THE-PRINT,GCORNER
+ PRINTI ", and its brown eyes lock with yours"
+ PRINT PTAB
+ PRINTR """Minx?"""
+
+
+ .FUNCT I-MINX,L,NL,PL,PLL,V,TBL,DIR,X,TYPE
+ LOC MINX >L
+ ZERO? L /?CCL2
+ FSET? MINX,LIVING /?CND1
+?CCL2: ICALL2 DEQUEUE,I-MINX
+ RFALSE
+?CND1: CALL2 VISIBLE?,MINX >V
+ FSET? MINX,SLEEPING \?CCL7
+ ZERO? V /FALSE
+ FSET? MINX,SEEN \?CCL12
+ FCLEAR MINX,SEEN
+ RFALSE
+?CCL12: RANDOM 100
+ LESS? 50,STACK \FALSE
+ ICALL1 MINXTAB
+ ICALL2 CTHE-PRINT,MINX
+ CALL2 PICK-NEXT,MINX-SLEEPS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL7: EQUAL? L,PLAYER \?CND5
+ ICALL1 MINXTAB
+ IN? TRUFFLE,L \?CND15
+ ICALL1 MINX-EATS-TRUFFLE
+ RTRUE
+?CND15: ICALL2 CTHE-PRINT,MINX
+ CALL2 BAD-MINX-PLACE?,HERE
+ ZERO? STACK /?CCL19
+ SET 'X,MINX-NERVES
+ RANDOM 100
+ LESS? 33,STACK /?CND20
+ SET 'X,MINX-RESTLESS
+?CND20: CALL2 PICK-NEXT,X
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL19: FSET? MINX,TOUCHED \?CCL23
+ FCLEAR MINX,TOUCHED
+ FSET MINX,TRYTAKE
+ CALL2 PICK-NEXT,MINX-SETTLES
+ PRINT STACK
+ PRINTR " in your arms."
+?CCL23: FSET? MINX,TRYTAKE \?CND17
+ FCLEAR MINX,TRYTAKE
+ CALL2 PICK-NEXT,MINX-RESTLESS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND17: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ PRINTC SP
+ RANDOM 100
+ LESS? 50,STACK /?CCL27
+ ICALL1 SAY-LEAP
+ PRINTI "s "
+ RANDOM 100
+ LESS? 50,STACK /?CCL30
+ PRINTI "out of your "
+ RANDOM 100
+ LESS? 50,STACK /?CCL33
+ PRINTI "arms "
+ JUMP ?CND25
+?CCL33: PRINTI "grasp "
+ JUMP ?CND25
+?CCL30: PRINTI "free "
+ JUMP ?CND25
+?CCL27: PRINTI "frees itself "
+ RANDOM 100
+ LESS? 50,STACK /?CND25
+ PRINTI "with a "
+ RANDOM 100
+ LESS? 50,STACK /?CND36
+ RANDOM 100
+ LESS? 50,STACK /?CCL40
+ PRINTI "sudden "
+ JUMP ?CND36
+?CCL40: PRINTI "quick "
+?CND36: ICALL1 SAY-LEAP
+ PRINTC SP
+?CND25: PRINTI "and "
+ ICALL2 FALLS,MINX
+ RTRUE
+?CND5: FCLEAR MINX,TOUCHED
+ FCLEAR MINX,TRYTAKE
+ LOC PLAYER >PL
+ EQUAL? L,PL \?CCL43
+ FSET? MINX,SEEN \?CCL46
+ FCLEAR MINX,SEEN
+ RFALSE
+?CCL46: IN? TRUFFLE,L /?CND44
+ RANDOM 100
+ LESS? 80,STACK \FALSE
+?CND44: ICALL1 MINXTAB
+ ZERO? LIT? \?CCL52
+ PRINTI "Something"
+ CALL2 PICK-NEXT,DARK-MINXES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL52: EQUAL? L,ARCH,ARCH4,ARCH12 \?CCL54
+ IN? TRUFFLE,TRENCH \?CCL54
+ FCLEAR MINX,SEEN
+ EQUAL? HERE,ARCH12 \?CND57
+ FSET? TRENCH,NODESC \?CND59
+ ICALL1 DIG-UP-TRENCH
+ RTRUE
+?CND59: ICALL1 MINX-EATS-TRUFFLE
+ RTRUE
+?CND57: SET 'X,ARCH-SNIFFS
+ EQUAL? HERE,ARCH4 /?CND61
+ RANDOM 100
+ LESS? 25,STACK /?CND61
+ SET 'X,MINX-DOINGS
+?CND61: ICALL2 CTHE-PRINT,MINX
+ CALL2 PICK-NEXT,X
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL54: IN? TRUFFLE,L \?CCL65
+ ICALL1 MINX-EATS-TRUFFLE
+ RTRUE
+?CCL65: LOC TRUFFLE
+ ZERO? STACK \?CND50
+ CALL2 DIG-UP-TRUFFLE?,L
+ ZERO? STACK \TRUE
+?CND50: ICALL2 CTHE-PRINT,MINX
+ CALL2 PICK-NEXT,MINX-DOINGS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL43: FSET? PL,VEHICLE \?CCL69
+ IN? PL,L \?CCL69
+ MOVE MINX,PL
+ ICALL1 MINXTAB
+ ZERO? LIT? \?CCL74
+ PRINTI "Something furry"
+ JUMP ?CND72
+?CCL74: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 CTHE-PRINT,MINX
+?CND72: PRINTI " joins you"
+ ICALL2 ON-IN,PL
+ PRINT PERIOD
+ RTRUE
+?CCL69: FSET? L,SURFACE /?CCL75
+ FSET? L,CONTAINER \?CND41
+?CCL75: LOC L >NL
+ CALL2 BAD-MINX-PLACE?,NL
+ ZERO? STACK \?CTR79
+ FSET? L,CONTAINER \?CCL80
+ FSET? L,OPENED /?CCL80
+?CTR79: CALL2 VISIBLE?,L
+ ZERO? STACK /?CCL87
+ ICALL1 MINXTAB
+ FSET? L,TRANSPARENT \?CCL90
+ ZERO? LIT? /?CCL90
+ ICALL2 CTHE-PRINT,MINX
+ JUMP ?CND88
+?CCL90: PRINTI "Something"
+?CND88: IN? TRUFFLE,L \?CCL95
+ BOR NEW-DBOX,3 >NEW-DBOX
+ REMOVE TRUFFLE
+ PRINTI " is eating "
+ PRINTB W?SOMETHING
+ JUMP ?CND93
+?CCL95: PRINTI " moves restlessly"
+?CND93: ICALL2 ON-IN,L
+ PRINT PERIOD
+ RTRUE
+?CCL87: IN? TRUFFLE,L \?CND85
+ REMOVE TRUFFLE
+?CND85: ZERO? NL \FALSE
+ REMOVE MINX
+ ICALL2 DEQUEUE,I-MINX
+ RFALSE
+?CCL80: ZERO? V \?CND78
+ MOVE MINX,NL
+ RFALSE
+?CND78: ICALL1 MINXTAB
+ ZERO? LIT? \?CCL102
+ PRINTI "Something"
+ JUMP ?CND100
+?CCL102: IN? TRUFFLE,L \?CCL104
+ ICALL1 MINX-EATS-TRUFFLE
+ RTRUE
+?CCL104: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 CTHE-PRINT,MINX
+?CND100: PRINTC SP
+ ICALL1 SAY-LEAP
+ PRINTC 115
+ ICALL2 OUT-OF-LOC,L
+ PRINT PERIOD
+ MOVE MINX,NL
+ RTRUE
+?CND41: LOC PL >PLL
+ SET 'DIR,P?NORTH
+?PRG105: GETP L,DIR >TBL
+ ZERO? TBL /?CND107
+ GET TBL,XTYPE
+ BAND STACK,65280 >TYPE
+ EQUAL? TYPE,CONNECT,SCONNECT,X-EXIT /?CCL110
+ EQUAL? TYPE,DCONNECT \?CND107
+ GET TBL,XDATA
+ FSET? STACK,OPENED \?CND107
+?CCL110: GET TBL,XROOM >NL
+ CALL2 BAD-MINX-PLACE?,NL
+ ZERO? STACK \?CND107
+ EQUAL? NL,PL,PLL \?CND107
+ MOVE MINX,NL
+ ICALL1 MINXTAB
+ ZERO? LIT? \?CCL120
+ PRINT YOU-HEAR
+ PRINTB W?SOMETHING
+ PRINTI " moving "
+ JUMP ?CND118
+?CCL120: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 CTHE-PRINT,MINX
+ PRINTI " appears "
+?CND118: EQUAL? NL,PL \?CND121
+ PRINTR "at your feet."
+?CND121: PRINTR "nearby."
+?CND107: DLESS? 'DIR,P?DOWN \?PRG105
+ RFALSE
+
+
+ .FUNCT MINXTAB
+ FSET MINX,SEEN
+ PRINT TAB
+ RFALSE
+
+
+ .FUNCT BAD-MINX-PLACE?,RM,X
+ ZERO? RM /TRUE
+ GETB NO-MINX,0 >X
+ INTBL? RM,NO-MINX+1,X,1 >X /TRUE
+ EQUAL? RM,IN-GARDEN \?CCL7
+ GRTR? PTIMER,1 /TRUE
+?CCL7: EQUAL? RM,SADDLE \FALSE
+ IN? SADDLE,DACT \FALSE
+ IN? DACT,IN-SKY /TRUE
+ RFALSE
+
+
+ .FUNCT DIG-UP-TRUFFLE?,L,X
+ LOC OAK
+ EQUAL? L,STACK \?CCL3
+ SET 'X,OAK
+ JUMP ?CND1
+?CCL3: LOC OAK2
+ EQUAL? L,STACK \?CCL5
+ SET 'X,OAK2
+ JUMP ?CND1
+?CCL5: LOC OAK3
+ EQUAL? L,STACK \FALSE
+ SET 'X,OAK3
+?CND1: FSET? X,TOUCHED /FALSE
+ ICALL2 OAK-FIND,X
+ ICALL2 CTHE-PRINT,MINX
+ PRINTI " snuffles inquisitively around the base of "
+ ICALL2 THE-PRINT,X
+ PRINTI ". She scratches around the roots, nosing aside leaves and dirt, and pulls up a "
+ ICALL2 DPRINT,TRUFFLE
+ PRINTI " with a triumphant mew. "
+ PRINT STR?594
+ RTRUE
+
+
+ .FUNCT DIG-UP-TRENCH
+ FCLEAR TRUFFLE,SEEN
+ REMOVE TRUFFLE
+ FCLEAR TRUFFLE,MUNGED
+ ICALL2 DEQUEUE,I-TRUFFLE
+ SET 'TRUFFLE-TIMER,0
+ MOVE TRENCH,HERE
+ FCLEAR TRENCH,NODESC
+ FSET TRENCH,OPENED
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL REPLACE-SYN?,TRENCH,W?ZZZP,W?MINXHOLE
+ ICALL REPLACE-ADJ?,TRENCH,W?ZZZP,W?MINX
+ ICALL2 CTHE-PRINT,MINX
+ IN? MINX,HERE /?CND1
+ MOVE MINX,HERE
+ PRINTI " leaves "
+ ICALL2 THE-PRINT,ARCH
+ PRINTI " and"
+?CND1: PRINTI " runs its nose over the loose earth, snuffling hungrily. Then it paws a deep hole in "
+ ICALL2 THE-PRINT,GROUND
+ PRINTI ", roots up a dirty truffle and swallows it whole"
+ PRINT PTAB
+ PRINT STR?594
+ ZERO? DMODE \TRUE
+ ICALL2 RELOOK,TRUE-VALUE
+ RTRUE
+
+
+ .FUNCT SAY-LEAP,X
+ RANDOM 100 >X
+ LESS? X,33 \?CCL3
+ PRINTB W?LEAP
+ RTRUE
+?CCL3: LESS? X,67 \?CND1
+ PRINTB W?BOUND
+ RTRUE
+?CND1: PRINTB W?JUMP
+ RTRUE
+
+
+ .FUNCT I-CORBIES,FEAR,SOUND,EMOTION,X
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK /FALSE
+ PRINT TAB
+ FSET CORBIES,SEEN
+ SET 'P-THEM-OBJECT,CORBIES
+ CALL2 PICK-NEXT,CORBIE-SOUNDS >SOUND
+ CALL2 PICK-NEXT,MAD-CORBIES >EMOTION
+ LOC SCARE3
+ EQUAL? STACK,HERE /?CCL4
+ ZERO? BADKEY /?CND3
+ LOC BADKEY
+ EQUAL? STACK,PLAYER,HERE \?CND3
+?CCL4: INC 'FEAR
+ CALL2 PICK-NEXT,FEAR-CORBIES >EMOTION
+?CND3: RANDOM 100 >X
+ LESS? X,33 \?CCL11
+ PRINTI "Corbies "
+ PRINT SOUND
+ PRINT WITH
+ PRINT EMOTION
+ PRINTR " overhead."
+?CCL11: LESS? X,67 \?CCL13
+ PRINTI "You can hear corbies "
+ JUMP ?CND9
+?CCL13: PRINTI "Corbies "
+ RANDOM 100 >X
+ ZERO? FEAR \?CTR15
+ LESS? X,33 \?CCL16
+?CTR15: PRINTI "circle "
+ RANDOM 100
+ LESS? 50,STACK /?CND9
+ ZERO? FEAR \?CCL23
+ PRINTI "low "
+ JUMP ?CND9
+?CCL23: PRINTI "high "
+ JUMP ?CND9
+?CCL16: LESS? X,67 \?CCL25
+ PRINTI "dive "
+ RANDOM 100
+ LESS? 50,STACK /?CCL28
+ PRINTI "down from "
+ JUMP ?CND9
+?CCL28: PRINTI "and swoop "
+ JUMP ?CND9
+?CCL25: PRINTI "swoop "
+ RANDOM 100
+ LESS? 50,STACK /?CND9
+ RANDOM 100
+ LESS? 50,STACK /?CCL33
+ PRINTI "low "
+ JUMP ?CND9
+?CCL33: PRINTI "down from "
+?CND9: PRINTI "overhead, "
+ PRINT SOUND
+ PRINTI "ing with "
+ PRINT EMOTION
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-COLOR,X
+ DLESS? 'GURDY-TIMER,1 \?CCL3
+ ICALL2 DEQUEUE,I-COLOR
+ SET 'GURDY-TIMER,0
+ FCLEAR ROSE-ROOM,SEEN
+ GETB PLAIN-ROOMS,0 >X
+?PRG4: GETB PLAIN-ROOMS,X
+ FCLEAR STACK,SEEN
+ DLESS? 'X,1 \?PRG4
+ EQUAL? HERE,GURDY-ROOM \?CND8
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'GURDY-ROOM,FALSE-VALUE
+ PRINT TAB
+ PRINTI "The colors in the "
+ ICALL1 ROOM-OR-LAND
+ PRINTR " fade back to normal."
+?CND8: SET 'GURDY-ROOM,FALSE-VALUE
+ RFALSE
+?CCL3: EQUAL? HERE,GURDY-ROOM \FALSE
+ EQUAL? GURDY-TIMER,1,3 /FALSE
+ PRINT TAB
+ PRINTI "The heightened colors in the "
+ ICALL1 ROOM-OR-LAND
+ PRINTR " are starting to fade."
+
+
+ .FUNCT TURN-GURDY,X
+ SET 'X,TURN-GURDY-RIGHT
+ EQUAL? LAST-CRANK-DIR,RIGHT /?CND1
+ EQUAL? LAST-CRANK-DIR,LEFT /?CCL3
+ RANDOM 100
+ LESS? 50,STACK /?CND1
+?CCL3: SET 'X,TURN-GURDY-LEFT
+?CND1: ICALL X
+ RFALSE
+
+
+ .FUNCT FIND-CHAR?,LEN,OBJ
+ GET CHARLIST,0 >LEN
+?PRG1: GET CHARLIST,LEN >OBJ
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CCL5
+ RETURN OBJ
+?CCL5: DLESS? 'LEN,1 \?PRG1
+ CALL FIND-IN?,HERE,MONSTER
+ RSTACK
+
+
+ .FUNCT TURN-GURDY-RIGHT,M,P,WHO
+ CALL1 FIND-CHAR? >WHO
+ ZERO? WHO /?CND1
+ FSET? WHO,MONSTER \?CCL4
+ FSET? WHO,SLEEPING /?CND1
+ INC 'M
+ JUMP ?CND1
+?CCL4: INC 'P
+?CND1: SET 'LAST-CRANK-DIR,RIGHT
+ CALL TURN-GURDY?,W?RIGHT,STR?595
+ ZERO? STACK \TRUE
+ PRINT TAB
+ ZERO? DPOINTER \?CCL11
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ SET 'GURDY-TIMER,RESET-GURDY
+ SET 'LIT?,TRUE-VALUE
+ PRINTI "A rainbow of dazzling spectra"
+ PRINT STR?596
+ PRINTI "! It swirls and blends with the "
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK \?CCL14
+ EQUAL? HERE,GURDY-ROOM \?CND15
+ PRINTI "already intense "
+?CND15: PRINTI "colors of the "
+ JUMP ?CND12
+?CCL14: FSET HERE,SEEN
+ PRINTI "colorless "
+?CND12: ICALL1 ROOM-OR-LAND
+ EQUAL? HERE,GURDY-ROOM \?CND17
+ PRINT PERIOD
+ RTRUE
+?CND17: SET 'GURDY-ROOM,HERE
+ ICALL2 QUEUE,I-COLOR
+ PRINTI ", creating rich, saturated hues that remind you of a postcard"
+ ZERO? M /?CND19
+ PRINT STR?597
+ ICALL2 THE-PRINT,WHO
+ PRINTI " seems unmoved by the display"
+?CND19: PRINT PERIOD
+ CALL2 HAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ EQUAL? WHO,OWOMAN,SALT \?CCL25
+ ICALL2 LOVELY,WHO
+ RTRUE
+?CCL25: ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " gapes at the display."
+?CCL11: EQUAL? DPOINTER,1 \?CCL28
+ PRINTI "Strains of soothing melody fill the air"
+ PRINT STR?598
+ PRINT STR?599
+ PRINTI "as the liquid chords swell to a glorious crescendo, then fade into silence"
+ ZERO? M /?CND29
+ PRINTI ". Even "
+ ICALL2 THE-PRINT,WHO
+ PRINTI " was not unmoved"
+?CND29: PRINT PERIOD
+ CALL2 VISIBLE?,DACT
+ ZERO? STACK /?CCL33
+ FSET DACT,SEEN
+ ZERO? DACT-SLEEP /?CND34
+ EQUAL? DACT-SLEEP,3 /TRUE
+ INC 'DACT-SLEEP
+ RTRUE
+?CND34: PRINT TAB
+ PRINTI "A tear trembles on "
+ ICALL2 THE-PRINT,DACT
+ PRINTI "'s beak. You watch as it"
+ ICALL2 DACT-TO-SLEEP,TRUE-VALUE
+ RTRUE
+?CCL33: CALL2 HAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ EQUAL? WHO,OWOMAN,MAYOR,CLERIC \?CCL41
+ ICALL2 LOVELY,WHO
+ RTRUE
+?CCL41: EQUAL? WHO,SALT \?CCL43
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Thought I heard music,"" remarks "
+ ICALL2 THE-PRINT,WHO
+ PRINT PERIOD
+ RTRUE
+?CCL43: ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " smiles at the sound."
+?CCL28: EQUAL? DPOINTER,2 \?CCL46
+ PRINTI "A tide of flavorful aromas"
+ PRINT STR?596
+ PRINT STR?598
+ PRINTI "breathe deeply as the scents of a dozen exotic delicacies drift past your nostrils, one by one"
+ ZERO? M /?CND47
+ ICALL2 NOW-HUNGRY,WHO
+?CND47: PRINT PERIOD
+ CALL2 HAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Ahhh,"" sighs "
+ ICALL2 THE-PRINT,WHO
+ PRINT PERIOD
+ RTRUE
+?CCL46: EQUAL? DPOINTER,3 \?CCL54
+ PRINTI "A mouthwatering cascade of flavor washes over your tongue"
+ PRINT STR?598
+ PRINT STR?599
+ PRINTI "to savor the taste of all your favorite dishes"
+ ZERO? M /?CND55
+ ICALL2 NOW-HUNGRY,WHO
+?CND55: PRINT PERIOD
+ CALL2 HAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Mmmmm,"" sighs "
+ ICALL2 THE-PRINT,WHO
+ PRINTI ", smacking "
+ FSET? WHO,FEMALE \?CCL63
+ PRINTI "her"
+ JUMP ?CND61
+?CCL63: PRINTI "his"
+?CND61: PRINTR " lips."
+?CCL54: EQUAL? DPOINTER,4 \?CND9
+ PRINTI "Invisible fingers of delight caress your skin! "
+ PRINT STR?598
+ PRINT STR?599
+ PRINTI "as a soothing, sensuous tingle spreads over every inch of your body"
+ ZERO? M /?CND65
+ PRINT PTAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTI " emits a brief moan of pleasure"
+?CND65: PRINT PERIOD
+ CALL2 HAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Mmmmm,"" moans "
+ ICALL2 THE-PRINT,WHO
+ PRINT PERIOD
+ RTRUE
+?CND9: ICALL2 RENEW-ALL-IN,INGURDY
+ PRINTI "A flood of joyful memory swells in your mind"
+ PRINT STR?598
+ PRINT STR?599
+ PRINTI "as old friends and forgotten secrets rise one by one from of the mists of time, then fade into obscurity"
+ ZERO? M /?CND71
+ ICALL2 LAST-MEAL,WHO
+?CND71: PRINT PERIOD
+ CALL2 HAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " smiles wistfully."
+
+
+ .FUNCT LOVELY,WHO
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Lovely,"" remarks "
+ ICALL2 THE-PRINT,WHO
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT LAST-MEAL,WHO
+ PRINT STR?597
+ ICALL2 THE-PRINT,WHO
+ PRINTI " seem"
+ FSET? WHO,PLURAL /?CND1
+ PRINTC 115
+?CND1: PRINTI " to remember only its last meal"
+ RTRUE
+
+
+ .FUNCT NOW-HUNGRY,WHO
+ PRINT STR?597
+ ICALL2 THE-PRINT,WHO
+ PRINTI " now looks hungrier than before"
+ RTRUE
+
+
+ .FUNCT HAPPY-CHAR?,WHO
+ EQUAL? WHO,MINX,UNICORN,BABY /?CTR2
+ EQUAL? WHO,MAMA,DACT \FALSE
+?CTR2: PRINT TAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " seemed to enjoy that."
+
+
+ .FUNCT UNHAPPY-CHAR?,WHO
+ EQUAL? WHO,MINX,UNICORN,BABY /?CTR2
+ EQUAL? WHO,MAMA,DACT \FALSE
+?CTR2: PRINT TAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " gives you a hurt look."
+
+
+ .FUNCT TURN-GURDY-LEFT,M,P,WHO
+ CALL1 FIND-CHAR? >WHO
+ ZERO? WHO /?CND1
+ FSET? WHO,MONSTER \?CCL4
+ FSET? WHO,SLEEPING /?CND1
+ INC 'M
+ JUMP ?CND1
+?CCL4: INC 'P
+?CND1: SET 'LAST-CRANK-DIR,LEFT
+ CALL TURN-GURDY?,W?LEFT,STR?600
+ ZERO? STACK \TRUE
+ PRINT TAB
+ ZERO? DPOINTER \?CCL11
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ZERO? GURDY-TIMER /?CND12
+ SET 'GURDY-TIMER,0
+ ICALL2 DEQUEUE,I-COLOR
+?CND12: PRINT XTHE
+ EQUAL? HERE,GURDY-ROOM \?CCL16
+ PRINTI "colors in the "
+ ICALL1 ROOM-OR-LAND
+ PRINTI " around you fade back to "
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK /?CCL19
+ SET 'OLD-HERE,FALSE-VALUE
+ SET 'P-WALK-DIR,FALSE-VALUE
+ FCLEAR HERE,SEEN
+ PRINTB W?GRAY
+ JUMP ?CND14
+?CCL19: PRINTI "normal"
+ JUMP ?CND14
+?CCL16: CALL1 PLAIN-ROOM?
+ ZERO? STACK /?CCL22
+ PRINTI "grayness"
+ JUMP ?CND20
+?CCL22: PRINTI "color"
+?CND20: PRINTI " of the "
+ ICALL1 ROOM-OR-LAND
+ PRINTI " around you becomes pasty and dull"
+?CND14: SET 'GURDY-ROOM,FALSE-VALUE
+ ZERO? M /?CND23
+ PRINTI ", an effect "
+ ICALL2 THE-PRINT,WHO
+ PRINTI " seem"
+ FSET? WHO,PLURAL /?CND25
+ PRINTC 115
+?CND25: PRINTI " not to mind in the least"
+?CND23: PRINT PERIOD
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " glances around, puzzled."
+?CCL11: EQUAL? DPOINTER,1 \?CCL30
+ PRINTI "A dreadful cacophony of random noise"
+ PRINT STR?596
+ PRINTI "! You cover your ears and wince until the onslaught fades to a welcome silence"
+ ZERO? M /?CND31
+ ICALL2 ANNOY-WHO,WHO
+?CND31: PRINT PERIOD
+ CALL2 UNHAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Ouch,"" comments "
+ ICALL2 THE-PRINT,WHO
+ PRINT STR?601
+ RTRUE
+?CCL30: EQUAL? DPOINTER,2 \?CCL38
+ PRINTI "A nauseating cloud of foul, reeking stenches"
+ PRINT STR?596
+ PRINTI "! You cover your nose and try not to gag as the air clears all too slowly"
+ ZERO? M /?CND39
+ PRINTI ", noting that "
+ ICALL2 THE-PRINT,WHO
+ PRINTI " seem"
+ FSET? WHO,PLURAL /?CND41
+ PRINTC 115
+?CND41: PRINTI " to have enjoyed the disgusting onslaught"
+?CND39: PRINT PERIOD
+ CALL2 UNHAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Put that away,"" coughs "
+ ICALL2 THE-PRINT,WHO
+ PRINT STR?601
+ RTRUE
+?CCL38: EQUAL? DPOINTER,3 \?CCL48
+ PRINTI "The unspeakable flavor of dead, rotting filth coats your tongue! You spit and cough uncontrollably until your mouth absorbs the dreadful taste"
+ ZERO? M /?CND49
+ ICALL2 ANNOY-WHO,WHO
+?CND49: PRINT PERIOD
+ CALL2 UNHAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Enough,"" gags "
+ ICALL2 THE-PRINT,WHO
+ PRINT STR?601
+ RTRUE
+?CCL48: EQUAL? DPOINTER,4 \?CND9
+ PRINTI "Your skin erupts in a dozen places with a painful, burning itch! No scratching can relieve the suffering you endure until the invisible rash subsides"
+ ZERO? M /?CND56
+ ICALL2 ANNOY-WHO,WHO
+?CND56: PRINT PERIOD
+ CALL2 UNHAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ PRINTI """Thanks,"" mutters "
+ ICALL2 THE-PRINT,WHO
+ PRINT STR?601
+ RTRUE
+?CND9: ICALL2 MUNG-ALL-IN,INGURDY
+ PRINTI "A black tide of memory swells in your mind! You blush with shame as thoughtless deeds and filthy little secrets emerge from the dark reaches of your past to taunt you"
+ ZERO? M /?CND62
+ ICALL2 LAST-MEAL,WHO
+?CND62: PRINT PERIOD
+ CALL2 UNHAPPY-CHAR?,WHO
+ ZERO? STACK \TRUE
+ ZERO? P /TRUE
+ FSET WHO,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " gives you a bitter glare."
+
+
+ .FUNCT ANNOY-WHO,WHO
+ PRINT STR?597
+ ICALL2 THE-PRINT,WHO
+ PRINTI " now look"
+ FSET? WHO,PLURAL /?CND1
+ PRINTC 115
+?CND1: PRINTI " more annoyed than ever"
+ RFALSE
+
+
+ .FUNCT TURN-GURDY?,WRD,STR
+ CALL2 NO-MAGIC-HERE?,GURDY
+ ZERO? STACK \TRUE
+ PRINTI "You turn the crank on "
+ ICALL2 THE-PRINT,GURDY
+ PRINTI " to the "
+ PRINTB WRD
+ PRINTI ", and watch as "
+ FSET? GURDY,OPENED \?CND3
+ PRINTI "wraiths of soft "
+ PRINT STR
+ PRINTR " light escape from the open box, dispersing with no effect."
+?CND3: PRINTI "a soft "
+ PRINT STR
+ PRINTI " glow brightens the rim of the closed lid."
+ CRLF
+ RFALSE
+
+
+ .FUNCT ROOM-OR-LAND
+ FSET? HERE,INDOORS \?CND1
+ PRINTD GLOBAL-ROOM
+ RTRUE
+?CND1: PRINTB W?LANDSCAPE
+ RTRUE
+
+
+ .FUNCT REGAIN-SENSES
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ ICALL1 CARRIAGE-RETURNS
+ PRINTI "You slowly come to your senses."
+ CRLF
+ ZERO? VERBOSITY /FALSE
+ CRLF
+ RFALSE
+
+
+ .FUNCT I-STORM
+ DLESS? 'STORM-TIMER,1 \?CCL3
+ REMOVE TWISTER
+ SET 'STORM-TIMER,0
+ ICALL2 DEQUEUE,I-STORM
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PUTP IN-FARM,P?SDESC,0
+ FSET IN-FARM,SEEN
+ PRINT TAB
+ ICALL2 ITALICIZE,STR?602
+ PRINTI "! "
+ ICALL2 CTHE-PRINT,FARMHOUSE
+ PRINTI " strikes "
+ ICALL2 THE-PRINT,GROUND
+ PRINTI " with a sickening thud. You're thrown across the room, hit "
+ PRINTD HEAD
+ PRINTR " and...
+
+
+
+
+
+A ray of sunlight opens your eyes."
+?CCL3: EQUAL? STORM-TIMER,2 \?CCL5
+ PRINT TAB
+ ICALL2 CTHE-PRINT,FLOOR
+ PRINTR " lurches crazily underfoot."
+?CCL5: EQUAL? STORM-TIMER,1 \FALSE
+ PRINTI " The entire "
+ PRINTD FARMHOUSE
+ PRINTI " shudders as "
+ ICALL2 THE-PRINT,TWISTER
+ PRINTR " loosens its grip. It feels as if you're starting to fall!"
+
+
+ .FUNCT I-TWISTER,X
+ FSET CORBIES,SEEN
+ PRINT TAB
+ DLESS? 'STORM-TIMER,1 \?CCL3
+ ICALL2 DEQUEUE,I-TWISTER
+ ICALL2 DEQUEUE,I-CORBIES
+ PRINTI "The wind "
+ EQUAL? HERE,IN-FARM \?CND4
+ PRINT STR?603
+?CND4: PRINTI "rises to a deafening shriek, and blowing dust turns the day to night"
+ PRINT PTAB
+ ICALL2 ITALICIZE,STR?604
+ PRINTI "! The "
+ EQUAL? HERE,FARM-ROOM \?CND6
+ PRINTD TWISTER
+ PRINTI " rips a clapboard off "
+ ICALL2 THE-PRINT,FARMHOUSE
+ PRINTI ", blows it across the yard and drives it deep into your chest"
+ ICALL1 JIGS-UP
+ RTRUE
+?CND6: FSET FARMHOUSE,SEEN
+ SET 'STORM-TIMER,INIT-STORM-TIMER
+ ICALL2 QUEUE,I-STORM
+ PUTP IN-FARM,P?SDESC,DESCRIBE-IN-FARM
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PUTP IN-FARM,P?FNUM,0
+ ICALL NEW-EXIT?,IN-FARM,P?NORTH,1409,IN-FROON,FARM-DOOR
+ ICALL NEW-EXIT?,IN-FARM,P?OUT,1409,IN-FROON,FARM-DOOR
+ FSET? FARM-DOOR,OPENED \?CND8
+ FCLEAR FARM-DOOR,OPENED
+ PRINTD FARM-DOOR
+ PRINTI " slams shut as the "
+?CND8: PRINTD FARMHOUSE
+ PRINTI " jerks violently upward, throwing you to your knees. You feel a strange whirling sensation as "
+ ICALL2 THE-PRINT,FLOOR
+ PRINTI " begins to dip and sway like the deck of a boat. A glance out "
+ ICALL2 THE-PRINT,FARM-WINDOW
+ PRINTI " confirms what your popping ears already know: "
+ ICALL2 CTHE-PRINT,FARMHOUSE
+ PRINTI " is soaring high above the Fields of Frotzen, caught in the vortex of a mighty "
+ PRINTD TWISTER
+ PRINTC 33
+ CRLF
+ ICALL2 REFRESH-MAP,FALSE-VALUE
+ RTRUE
+?CCL3: EQUAL? STORM-TIMER,1 \?CCL11
+ PRINTI "The wind "
+ EQUAL? HERE,IN-FARM \?CND12
+ PRINT STR?603
+?CND12: PRINTI "grows from a rumble to a roar as the churning vortex whirls closer."
+ CRLF
+ EQUAL? HERE,IN-FARM /TRUE
+ FSET? FARM-DOOR,OPENED /?CND14
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ FSET FARM-DOOR,OPENED
+ PRINT TAB
+ ICALL2 ITALICIZE,STR?605
+ PRINTI "! "
+ ICALL2 CTHE-PRINT,FARM-DOOR
+ PRINTI " blows open in the gale."
+ CRLF
+?CND14: CALL2 VISIBLE?,MINX
+ ZERO? STACK /TRUE
+ MOVE MINX,IN-FARM
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,MINX
+ PRINTI " races for the safety of "
+ ICALL2 THE-PRINT,FARM
+ PRINT PERIOD
+ RTRUE
+?CCL11: EQUAL? STORM-TIMER,2 \?CCL21
+ MOVE TWISTER,HERE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINTI "An ominous rumble "
+ SET 'X,W?SOUTHEAST
+ EQUAL? HERE,IN-FARM \?CND22
+ FSET TWISTER,NODESC
+ SET 'X,W?WINDOW
+ PRINT STR?603
+?CND22: PRINTI "draws your eyes to the "
+ PRINTB X
+ PRINTI ", where a dark, boiling thundercloud is racing across the fields"
+ PRINT PTAB
+ ICALL1 KERBLAM
+ PRINTR "Lightning heralds the approach of a deadly funnel!"
+?CCL21: EQUAL? STORM-TIMER,3 \?CCL25
+ PRINTI "The sky "
+ EQUAL? HERE,IN-FARM \?CND26
+ PRINTI "outside "
+?CND26: PRINTI "is becoming very dark."
+ CRLF
+ CALL2 VISIBLE?,MINX
+ ZERO? STACK /TRUE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,MINX
+ PRINTR " sniffs the air and whimpers."
+?CCL25: PRINTR "The air feels unusually still and expectant."
+
+
+ .FUNCT I-FROON
+ EQUAL? HERE,IN-FARM \?CND1
+ GRTR? FSCRIPT,2 \FALSE
+ FSET? FCROWD,SEEN \?CND5
+ FCLEAR FCROWD,SEEN
+ RFALSE
+?CND5: FSET FCROWD,SEEN
+ PRINT TAB
+ PRINTR "The cheers outside show no sign of stopping."
+?CND1: PRINT TAB
+ IGRTR? 'FSCRIPT,11 \?CCL9
+ PRINTI "As you stand contemplating the natural beauty of the "
+ PRINTD FROON
+ PRINTI "ian landscape, another "
+ PRINTD FARMHOUSE
+ PRINTI " falls out of the sky and lands on "
+ PRINTD HEAD
+ ICALL1 JIGS-UP
+ RTRUE
+?CCL9: EQUAL? FSCRIPT,11 \?CCL11
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PUTP IN-FROON,P?HEAR,0
+ REMOVE MAYOR
+ SET 'P-HIM-OBJECT,NOT-HERE-OBJECT
+ REMOVE LADY
+ SET 'P-HER-OBJECT,NOT-HERE-OBJECT
+ REMOVE FCROWD
+ SET 'P-THEM-OBJECT,NOT-HERE-OBJECT
+ PRINTI "With a peremptory sniff, "
+ ICALL2 THE-PRINT,MAYOR
+ PRINTI " snaps "
+ ICALL2 THE-PRINT,JBOX
+ PRINTI " shut"
+ PRINT PTAB
+ PRINTI """Very well,"" he sighs. ""I'm sure there are plenty of other heroes who would be more than happy to accept our humble gifts and everlasting adulation.""
+ Grumbling with indignation, he and the other folk sullenly retreat into "
+ ICALL2 THE-PRINT,FBEDS
+ PRINTR ". In moments, you are completely alone."
+?CCL11: EQUAL? FSCRIPT,10 \?CCL13
+ PRINTI """The day is getting long,"" notes "
+ ICALL2 THE-PRINT,MAYOR
+ PRINTI " with obvious irritation. ""Please choose one of the keys. "
+ ICALL2 ITALICIZE,STR?606
+ PRINT PERQ
+ RTRUE
+?CCL13: EQUAL? FSCRIPT,9 \?CCL15
+ ICALL2 CTHE-PRINT,MAYOR
+ PRINTI " taps his foot impatiently. """
+ PRINT CYOUR
+ ICALL1 HONORED-ONE
+ PRINTR " will be so kind as to select a key?"""
+?CCL15: EQUAL? FSCRIPT,8 \?CCL17
+ PRINTI """Choose any key you like,"" prompts "
+ ICALL2 THE-PRINT,MAYOR
+ PRINTR " helpfully."
+?CCL17: EQUAL? FSCRIPT,7 \?CCL19
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ FSET JBOX,OPENED
+ ICALL2 CTHE-PRINT,MAYOR
+ PRINTI " opens "
+ ICALL2 THE-PRINT,JBOX
+ PRINTI " with a grand flourish.
+ ""Behold!"" he cries. ""Herein lie the Keys to the Kingdom of "
+ PRINTD FROON
+ PRINTI ". This gift is the greatest honor my people can bestow. Humbly, and with eternal gratitude, do we offer one to you."""
+ CRLF
+ PRINT TAB
+ ICALL2 CTHE-PRINT,FCROWD
+ PRINTR " redoubles its cheering."
+?CCL19: EQUAL? FSCRIPT,6 \?CCL21
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE JBOX,MAYOR
+ PRINTI """Such a mighty deed commands many thanks,"" continues "
+ ICALL2 THE-PRINT,MAYOR
+ PRINTI ". ""Bring me the Cask!""
+ ""The Cask! "
+ ICALL2 CTHE-PRINT,MAYOR
+ PRINTI " sends for the Cask!"" whispers "
+ ICALL2 THE-PRINT,FCROWD
+ PRINTI " as a servant disappears into "
+ ICALL2 THE-PRINT,FBEDS
+ PRINTI ". Moments later he returns bearing a small "
+ PRINTD JBOX
+ PRINTI ", which is delivered to "
+ ICALL2 THE-PRINT,MAYOR
+ PRINT PERIOD
+ RTRUE
+?CCL21: EQUAL? FSCRIPT,5 \?CCL23
+ PRINTI """For over three hundred years, my people have suffered in the shadow of the Heeled One,"" explains "
+ ICALL2 THE-PRINT,MAYOR
+ PRINTI ", glancing hatefully at "
+ ICALL2 THE-PRINT,BOOT
+ PRINTI ". ""At long last, his evil-smelling reign is at an end!""
+ ""Huzzah!"" cries "
+ ICALL2 THE-PRINT,FCROWD
+ PRINTI ", dancing gleefully around "
+ ICALL2 THE-PRINT,FARMHOUSE
+ PRINTR ". ""Huzzah! The Boot is licked!"""
+?CCL23: EQUAL? FSCRIPT,4 \?CCL25
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE MAYOR,IN-FROON
+ ICALL2 SEE-CHARACTER,MAYOR
+ FSET FCROWD,NODESC
+ PUTP IN-FROON,P?HEAR,MAYOR
+ PRINTI "An important-looking man, tinier than all the rest, emerges from "
+ ICALL2 THE-PRINT,FCROWD
+ PRINT PTAB
+ PRINTI """Greetings, brave "
+ ICALL1 SAY-SORC
+ PRINTI ","" he mumbles, grovelling at your feet. ""I am Grope, Mayor of the City of "
+ PRINTD FROON
+ PRINTI ". On behalf of us all, I welcome you!""
+ ""Welcome! Welcome to the "
+ ICALL1 SAY-SORC
+ PRINTI "!"" echoes "
+ ICALL2 THE-PRINT,FCROWD
+ PRINTR " joyfully."
+?CCL25: EQUAL? FSCRIPT,3 \?CCL27
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE FCROWD,IN-FROON
+ SET 'P-THEM-OBJECT,FCROWD
+ PUTP IN-FROON,P?HEAR,FCROWD
+ FSET LADY,NODESC
+ PRINTI """The Heeled One is fallen! Come see! Come see!""
+ More and more of the little folk emerge from "
+ ICALL2 THE-PRINT,FBEDS
+ PRINTR ", staring first at the crushed boot, then at you. Soon you're completely surrounded by joyous little faces."
+?CCL27: EQUAL? FSCRIPT,2 \FALSE
+ ICALL2 CTHE-PRINT,LADY
+ PRINTI " tiptoes over to "
+ ICALL2 THE-PRINT,BOOT
+ PRINTR " and gawks at it, awestruck. She gingerly reaches out to tickle the lifeless sole. Nothing happens. A broad grin spreads across her childlike face.
+ ""It's dead,"" she squeaks, turning to look at you. ""You killed it."""
+
+
+ .FUNCT SAY-SORC
+ PRINTI "sorcere"
+ FSET? PLAYER,FEMALE \?CND1
+ PRINTI "ss"
+ RTRUE
+?CND1: PRINTC 114
+ RTRUE
+
+
+ .FUNCT I-SHILL
+ FSET? SHILL,NODESC \?CCL3
+ FCLEAR SHILL,NODESC
+ RFALSE
+?CCL3: IGRTR? 'SHILL-TIMER,5 \?CCL5
+ ICALL2 DEQUEUE,I-SHILL
+ SET 'SHILL-TIMER,0
+ ICALL2 VANISH,SHILL
+ EQUAL? HERE,ON-WHARF \FALSE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SHILL
+ PRINTR " slowly floats out of sight."
+?CCL5: EQUAL? HERE,ON-WHARF \FALSE
+ EQUAL? SHILL-TIMER,4 \?CCL11
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SHILL
+ PRINTR " is beginning to float away."
+?CCL11: EQUAL? SHILL-TIMER,1 \FALSE
+ PRINT TAB
+ ICALL1 SEE-SHILL
+ RTRUE
+
+
+ .FUNCT SEE-SHILL
+ FSET SHILL,SEEN
+ SET 'SHILL-TIMER,1
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-IT-OBJECT,SHILL
+ MOVE SHILL,COVE
+ PRINTI "A movement draws your eye to the water, where "
+ ICALL2 PRINTA,SHILL
+ PRINTR " is bobbing on the waves."
+
+
+ .FUNCT I-DACT,V,X
+ CALL2 VISIBLE?,DACT >V
+ ZERO? DACT-SLEEP /?CND1
+ DEC 'DACT-SLEEP
+ EQUAL? DACT-SLEEP,3 /FALSE
+ ZERO? V /?CND3
+ PRINT TAB
+?CND3: ZERO? DACT-SLEEP \?CCL9
+ ICALL1 WAKE-DACT
+ RTRUE
+?CCL9: ZERO? V /FALSE
+ ICALL2 CTHE-PRINT,DACT
+ EQUAL? DACT-SLEEP,1 \?CND11
+ PRINTR " snorts restlessly. It looks as if it's about to wake up."
+?CND11: PRINTR " caws softly in its dreams."
+?CND1: ZERO? V /FALSE
+ FSET? DACT,SEEN \?CCL17
+ FCLEAR DACT,SEEN
+ RFALSE
+?CCL17: RANDOM 100
+ LESS? 50,STACK \FALSE
+ FSET DACT,SEEN
+ SET 'X,HAPPY-DACT
+ EQUAL? HERE,IN-SKY \?CCL21
+ SET 'X,FLYING-DACT
+ JUMP ?CND19
+?CCL21: FSET? DACT,MUNGED \?CND19
+ SET 'X,SICK-DACT
+?CND19: PRINT TAB
+ ICALL2 CTHE-PRINT,DACT
+ CALL2 PICK-NEXT,X
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT WAKE-DACT
+ ICALL REPLACE-ADJ?,DACT,W?SLEEPING,W?AWAKE
+ FCLEAR DACT,SLEEPING
+ FSET DACT,SEEN
+ SET 'DACT-SLEEP,0
+ CALL2 VISIBLE?,DACT
+ ZERO? STACK /TRUE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ICALL2 CTHE-PRINT,DACT
+ PRINTI " shakes its head, blinks its eyes and yawns stupidly."
+ CRLF
+ FSET? DACT,MUNGED \TRUE
+ IN? SADDLE,DACT \TRUE
+ MOVE SADDLE,HERE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,SADDLE
+ PRINT SON
+ ICALL2 THE-PRINT,DACT
+ PRINTI "'s back aggravates his wound. So he shakes it off with a violent twist"
+ IN? PLAYER,SADDLE \?CND7
+ MOVE PLAYER,HERE
+ PRINTI ", which sends you sprawling to "
+ ICALL2 THE-PRINT,GROUND
+ ICALL1 RELOOK
+ RTRUE
+?CND7: PRINT PERIOD
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ RTRUE
+
+
+ .FUNCT I-GRINDER-APPEARS
+ EQUAL? HERE,AT-GATE \FALSE
+ DLESS? 'GRTIMER,1 \?CCL5
+ SET 'GRTIMER,0
+ ICALL2 DEQUEUE,I-GRINDER-APPEARS
+ MOVE GRINDER,AT-GATE
+ ICALL1 SEE-GRINDER
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "Blue planes of energy form in the space around you. Their patterns of intersection whirl around a vortex of laughter, growing in power and malevolence.."
+ PRINT PERIOD
+ ZERO? DMODE /?CCL7
+ EQUAL? PRIOR,SHOWING-INV,SHOWING-STATS \TRUE
+?CCL7: ICALL2 RELOOK,TRUE-VALUE
+ RTRUE
+?CCL5: EQUAL? GRTIMER,1 \?CCL11
+ PRINT TAB
+ PRINTR "The invisible voice chuckles again, and the tension in the air rises."
+?CCL11: EQUAL? GRTIMER,2 \FALSE
+ PRINT TAB
+ PRINTI "A burst of hollow laughter echoes up and down the street. You turn, but see no one"
+ PRINT PTAB
+ PRINTR "There's a faint, electrical tension in the air."
+
+
+ .FUNCT SEE-GRINDER
+ ICALL2 SEE-CHARACTER,GRINDER
+ ICALL2 QUEUE,I-GRINDER
+ SET 'LAST-MONSTER,GRINDER
+ SET 'LAST-MONSTER-DIR,FALSE-VALUE
+ FSET GRINDER,SEEN
+ RFALSE
+
+
+ .FUNCT I-GRINDER
+ EQUAL? HERE,AT-GATE \FALSE
+ INC 'GRTIMER
+ PRINT TAB
+ GETP GRINDER,P?ENDURANCE
+ LESS? STACK,1 \?CND3
+ ICALL1 EXIT-GRINDER
+ ICALL2 CTHE-PRINT,GURDY
+ PRINTI " falls from "
+ ICALL2 THE-PRINT,GRINDER
+ PRINTR "'s dying grasp. Moments later, his body dissolves in a puff of steam."
+?CND3: ICALL2 NEXT-ENDURANCE?,GRINDER
+ EQUAL? GRTIMER,1 \?CCL7
+ ICALL2 CTHE-PRINT,GRINDER
+ PRINTI " looks you up and down. ""Peasants,"" he sniffs, adjusting a knob on his "
+ PRINTD GURDY
+ PRINTI ". ""Like unto sheep.""
+ He turns the crank of "
+ ICALL2 THE-PRINT,GURDY
+ PRINTI ", and the air is filled with the combined stench of five herds of sheep, accompanied by a cacophany of hateful bleating."
+ CRLF
+ JUMP ?CND5
+?CCL7: EQUAL? GRTIMER,2 \?CCL9
+ FCLEAR NYMPH,LIVING
+ PRINTI "Ignoring you for the moment, "
+ ICALL2 THE-PRINT,GRINDER
+ PRINTI " strides across to "
+ ICALL2 THE-PRINT,GUILD-HALL
+ PRINTI "'s entrance.
+ A warning nymph appears beside his "
+ ICALL1 NYMPH-SAYS
+ PRINTI "... Oomph!"" This last exclamation is "
+ ICALL2 THE-PRINT,NYMPH
+ PRINTI "'s last; for, quick as a wink, "
+ ICALL2 THE-PRINT,GRINDER
+ PRINTR " snatches it out of the air and crushes it in his fist. ""Miserable pests."""
+?CCL9: EQUAL? GRTIMER,3 \?CCL11
+ ICALL2 CTHE-PRINT,GRINDER
+ PRINTI " turns around. ""Still here?"" he cries, adjusting his "
+ PRINTD GURDY
+ PRINT PTAB
+ PRINTI "He turns the crank again, and a wall of imaginary flame springs up around you. You wail as your skin burns with synthetic agony."
+ CRLF
+ JUMP ?CND5
+?CCL11: EQUAL? GRTIMER,4 \?CND5
+ PRINTI """Guess I'll just have to finish you off."""
+ CRLF
+ PRINT TAB
+?CND5: GRTR? GRTIMER,3 \?CND13
+ ICALL2 CTHE-PRINT,GRINDER
+ PRINTI " turns the crank, and "
+ CALL2 PICK-NEXT,TORTURES
+ PRINT STACK
+ PRINT PERIOD
+?CND13: ZERO? AUTO /?CND15
+ ICALL1 BMODE-ON
+?CND15: GETP GRINDER,P?STRENGTH
+ RANDOM STACK
+ SUB 0,STACK
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+
+
+ .FUNCT I-DORN,X,L,DIR,TBL,DEST,DAMAGE
+ LOC DORN >L
+ EQUAL? L,HERE \?CCL3
+ FSET DORN,SEEN
+ PRINT TAB
+ GETP DORN,P?ENDURANCE
+ LESS? STACK,1 \?CCL6
+ PRINTI "Howling with pain, "
+ ICALL2 THE-PRINT,DORN
+ PRINTI " beats a hasty retreat."
+ CRLF
+ ICALL2 KILL-MONSTER,DORN
+ RTRUE
+?CCL6: FSET? DORN,MUNGED \?CCL8
+ ICALL2 CTHE-PRINT,DORN
+ DLESS? 'DORN-TIMER,1 \?CCL11
+ SET 'DORN-TIMER,0
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ FCLEAR DORN,MUNGED
+ PRINTR " sniffs away the last of its tears."
+?CCL11: EQUAL? DORN-TIMER,1 \?CCL13
+ PRINTR " blows its nose noisily. It looks as if it's recovering."
+?CCL13: EQUAL? DORN-TIMER,2 \?CND9
+ PRINTR " flails around the room, its eyes streaming. ""Hurumph!"" it bawls."
+?CND9: PRINTR " almost crashes into you in its blind frenzy. ""Hurumph!"" it cries, its face soaked with tears."
+?CCL8: FSET? DORN,SURPRISED \?CND4
+ ICALL2 SEE-MONSTER,DORN
+ ICALL2 CTHE-PRINT,DORN
+ PRINTR " begins turning its 69 eyes in your direction."
+?CND4: ICALL2 NEXT-ENDURANCE?,DORN
+ CALL2 MONSTER-STRIKES?,DORN >DAMAGE
+ ICALL2 CTHE-PRINT,DORN
+ ZERO? DAMAGE /?CND16
+ CALL2 PICK-NEXT,DORN-HITS
+ PRINT STACK
+ PRINTI ", and you feel strength drain from your body."
+ CRLF
+ ICALL UPDATE-STAT,DAMAGE,STRENGTH
+ RTRUE
+?CND16: CALL2 PICK-NEXT,DORN-MISSES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL3: FSET? DORN,MUNGED \?CCL19
+ DLESS? 'DORN-TIMER,1 \FALSE
+ SET 'DORN-TIMER,0
+ FCLEAR DORN,MUNGED
+ RFALSE
+?CCL19: INTBL? HERE,DORN-ROOMS+1,5,1 >X /?CND1
+ REMOVE DORN
+ FCLEAR DORN,SLEEPING
+ FCLEAR DORN,MUNGED
+ FSET DORN,SURPRISED
+ SET 'DORN-TIMER,0
+ FSET DORN,NODESC
+ ICALL2 DEQUEUE,I-DORN
+ RFALSE
+?CND1: CALL MOVE-MONSTER?,DORN,TRUE-VALUE >DIR
+ ZERO? DIR /FALSE
+ FSET DORN,SEEN
+ PRINT TAB
+ RANDOM 100
+ LESS? 50,STACK /?CND25
+ PRINTI """Hurumph!"" "
+?CND25: ICALL2 CTHE-PRINT,DORN
+ EQUAL? DIR,W?UP,W?DOWN \?CND27
+ PRINTI " clambers "
+ PRINTB DIR
+ PRINTR " the steps."
+?CND27: PRINT STR?581
+ PRINTB DIR
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-ONION,V
+ CALL2 VISIBLE?,ONION >V
+ DLESS? 'ONION-TIMER,1 \?CCL3
+ SET 'ONION-TIMER,0
+ ICALL2 DEQUEUE,I-ONION
+ ZERO? DORN-TIMER /?CND4
+ SET 'DORN-TIMER,1
+?CND4: ZERO? V /FALSE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,ONION
+ PRINTR "'s sting diminishes enough to dry your eyes."
+?CCL3: ZERO? V /FALSE
+ PRINT TAB
+ IN? DORN,HERE \?CND9
+ FSET? DORN,MUNGED /?CND9
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ FSET DORN,MUNGED
+ SET 'DORN-TIMER,4
+ FSET DORN,SEEN
+ ICALL2 CTHE-PRINT,DORN
+ PRINTI "'s multiple eyes turn red and watery under the pungent influence of "
+ ICALL2 THE-PRINT,ONION
+ PRINTI ". ""Hurumph!"" it wails, utterly helpless"
+ PRINT PTAB
+?CND9: EQUAL? ONION-TIMER,1 \?CCL15
+ ICALL2 CTHE-PRINT,ONION
+ PRINTR " seems to be losing its potency."
+?CCL15: EQUAL? ONION-TIMER,2 \?CND13
+ PRINTI "You rub your swollen eyes to lessen "
+ ICALL2 THE-PRINT,ONION
+ PRINTR "'s pungent sting."
+?CND13: PRINTI "Your eyes become red and itchy as "
+ ICALL2 THE-PRINT,ONION
+ PRINTI "'s potent miasma"
+ PRINT STR?596
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-MOSS
+ FSET? THIS-MOSS,SEEN \?CCL3
+ FCLEAR THIS-MOSS,SEEN
+ SET 'MOSS-TIMER,6
+ RFALSE
+?CCL3: DLESS? 'MOSS-TIMER,1 \?CCL5
+ PRINT TAB
+ ICALL1 DO-MOSS
+ RTRUE
+?CCL5: EQUAL? MOSS-TIMER,2,4 /FALSE
+ PRINT TAB
+ EQUAL? MOSS-TIMER,1 \?CCL9
+ PRINTI "Those itchy fingers are becoming quite a nuisance"
+ GRTR? MOSSES,1 \?CND10
+ PRINTI " again"
+?CND10: PRINT PERIOD
+ RTRUE
+?CCL9: EQUAL? MOSS-TIMER,3 \?CCL13
+ PRINTR "You give your fingers a satisfying scratch."
+?CCL13: EQUAL? MOSS-TIMER,5 \FALSE
+ ICALL REPLACE-SYN?,HANDS,W?ZZZP,W?ITCH
+ ICALL REPLACE-ADJ?,HANDS,W?ZZZP,W?ITCHY
+ PRINTR "You idly scratch an itchy finger."
+
+
+ .FUNCT DO-MOSS,X
+ SET 'THIS-MOSS,FALSE-VALUE
+ SET 'MOSS-TIMER,0
+ ICALL2 DEQUEUE,I-MOSS
+ FSET HANDS,MUNGED
+ ICALL REPLACE-ADJ?,HANDS,W?ITCHY,W?LONG
+ ICALL REPLACE-ADJ?,HANDS,W?ZZZP,W?SLENDER
+ ZERO? LIT? /?CCL3
+ CALL1 LIGHT-SOURCE? >X
+ PRINTI "Damn that itch! You hold your bothersome hand up to "
+ ZERO? X /?CCL6
+ ICALL2 THE-PRINT,X
+ JUMP ?CND4
+?CCL6: PRINTI "the light"
+?CND4: GRTR? MOSSES,1 \?CCL9
+ PRINTI " and flex your fingers again, noting their improved agility"
+ JUMP ?CND1
+?CCL9: PRINTI "... and gasp with shock!"
+ CRLF
+ PRINT TAB
+ PRINTI "Your fingers, once fat and stubby, are now long and slender as a pianist's. You flex the new digits one at a time; they respond with unfamiliar agility. Fact is, your whole body feels tighter and more coordinated than ever"
+ JUMP ?CND1
+?CCL3: PRINTI "Your fingers tingle oddly, and the itch disappears"
+?CND1: PRINT PERIOD
+ ICALL UPDATE-STAT,8,DEXTERITY,TRUE-VALUE
+ RTRUE
+
+
+ .FUNCT I-UNICORN
+ EQUAL? HERE,IN-STABLE \FALSE
+ FSET? STALL,OPENED \?CCL5
+ PRINT TAB
+ ICALL2 CTHE-PRINT,UNICORN
+ PRINTI " wastes no time edging her way out of "
+ ICALL2 THE-PRINT,STALL
+ IN? CHEST,HERE \?CND6
+ PRINT PERIOD
+ ICALL1 UNICORN-OPENS-CHEST
+ RTRUE
+?CND6: PRINTI ". She "
+ ICALL1 BYE-UNICORN
+ RTRUE
+?CCL5: FSET? UNICORN,SEEN \?CCL9
+ FCLEAR UNICORN,SEEN
+ RFALSE
+?CCL9: RANDOM 100
+ LESS? 50,STACK \FALSE
+ FSET UNICORN,SEEN
+ SET 'P-HER-OBJECT,UNICORN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,UNICORN
+ PRINTR " whinnies sadly."
+
+
+ .FUNCT I-BABY
+ EQUAL? HERE,JUN0 \FALSE
+ FSET? BABY,SEEN \?CCL5
+ FCLEAR BABY,SEEN
+ RFALSE
+?CCL5: RANDOM 100
+ LESS? 50,STACK \FALSE
+ FSET BABY,SEEN
+ SET 'P-HIM-OBJECT,BABY
+ PRINT TAB
+ ICALL2 CTHE-PRINT,BABY
+ PRINTI " bellows helplessly"
+ CALL2 VISIBLE?,MAMA
+ ZERO? STACK /?CND7
+ FSET MAMA,SEEN
+ RANDOM 100
+ LESS? 50,STACK /?CND7
+ SET 'P-HER-OBJECT,MAMA
+ PRINTI ", and its mother responds"
+?CND7: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-MAMA,DAMAGE,TBL,LEN,X,L,NL,PL,PLL,DIR
+ LOC MAMA >L
+ LOC PLAYER >PL
+ CALL2 VISIBLE?,MAMA
+ ZERO? STACK /?CND1
+ FSET? MAMA,MONSTER /?CND3
+ FSET? MAMA,SEEN \?CCL7
+ FCLEAR MAMA,SEEN
+ RFALSE
+?CCL7: FSET? MAMA,MONSTER /?CND5
+ RANDOM 100
+ LESS? 50,STACK \FALSE
+?CND5: SET 'P-HER-OBJECT,MAMA
+ FSET MAMA,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,MAMA
+ PRINTI " bellows"
+ CALL2 VISIBLE?,BABY
+ ZERO? STACK /?CND10
+ FSET BABY,SEEN
+ PRINTI " impotently"
+ RANDOM 100
+ LESS? 50,STACK /?CND10
+ SET 'P-HIM-OBJECT,BABY
+ PRINTI ", and her baby responds"
+?CND10: PRINT PERIOD
+ RTRUE
+?CND3: SET 'P-HER-OBJECT,MAMA
+ FSET MAMA,SEEN
+ GETP MAMA,P?ENDURANCE
+ LESS? STACK,1 \?CND14
+ PRINTI " Bellowing with defeat, "
+ ICALL2 THE-PRINT,MAMA
+ PRINTI " limps away into the jungle."
+ CRLF
+ ICALL2 KILL-MONSTER,MAMA
+ RTRUE
+?CND14: CALL2 STILL-SLEEPING?,MAMA
+ ZERO? STACK \TRUE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,MAMA
+ EQUAL? L,PL \?CCL20
+ EQUAL? L,MAW \?CND21
+ CALL2 PICK-NEXT,MAMA-CLIMBS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND21: CALL2 MONSTER-STRIKES?,MAMA >X
+ PRINTI " charges you"
+ ZERO? X /?CND23
+ ZERO? STATIC \?CCL27
+ PRINTI ". Ooof!"
+ CRLF
+ JUMP ?CND25
+?CCL27: PRINT PERIOD
+?CND25: CALL MSPARK?,MAMA,X
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+?CND23: PRINTR ", missing by a hair."
+?CCL20: EQUAL? PL,MAW \?CND18
+ MOVE MAMA,MAW
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINTI " clambers onto the bottom of "
+ ICALL2 THE-PRINT,PL
+ PRINTR ", snorting with rage!"
+?CND18: PRINTI " circles "
+ ICALL2 THE-PRINT,PL
+ PRINTR ", snorting angrily."
+?CND1: FSET? MAMA,MONSTER \FALSE
+ GETP MAMA,P?LAST-LOC >NL
+ ZERO? NL /?CND31
+ MOVE MAMA,NL
+ EQUAL? NL,HERE \?CND31
+ SET 'P-HER-OBJECT,MAMA
+ PUTP MAMA,P?LAST-LOC,FALSE-VALUE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,MAMA
+ PRINTR " storms into view!"
+?CND31: CALL2 WEARING-MAGIC?,CLOAK
+ ZERO? STACK \?CND35
+ LOC PL >PLL
+ SET 'DIR,P?NORTH
+?PRG37: GETP L,DIR >TBL
+ ZERO? TBL /?CND39
+ GET TBL,XTYPE
+ BAND STACK,65280
+ EQUAL? STACK,CONNECT,SCONNECT \?CND39
+ GET TBL,XROOM >X
+ EQUAL? X,AT-FALLS /?CND39
+ EQUAL? X,PL,PLL \?CND39
+ PUTP MAMA,P?LAST-LOC,X
+ RFALSE
+?CND39: DLESS? 'DIR,P?NW \?PRG37
+?CND35: PUTP MAMA,P?LAST-LOC,0
+ RFALSE
+
+
+ .FUNCT I-IMPS
+ EQUAL? HERE,APLANE \FALSE
+ EQUAL? ABOVE,OPLAIN \FALSE
+ FSET IMPS,SEEN
+ SET 'P-THEM-OBJECT,IMPS
+ PRINT TAB
+ DLESS? 'IMPSAY,1 \?CCL7
+ ICALL2 DEQUEUE,I-IMPS
+ SET 'IMPSAY,3
+ ICALL2 QUEUE,I-IMPS-TAKE
+ MOVE COCO,APLANE
+ SET 'P-IT-OBJECT,COCO
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINTI """Catch!"" cries the "
+ PRINT STR?607
+ PRINTI ", lobbing "
+ ICALL2 THE-PRINT,COCO
+ PRINTI " high into the air"
+ PRINT PTAB
+ PRINTI """Got it."" A loud-mouthed Implementor jumps out of his seat, steps backwards to grab the falling "
+ PRINTD COCO
+ PRINTI "... and plows directly into you"
+ PRINT PTAB
+ ICALL2 ITALICIZE,STR?608
+ PRINTI ". "
+ ICALL2 CTHE-PRINT,COCO
+ PRINTR " skitters across the plane."
+?CCL7: EQUAL? IMPSAY,3 \?CCL9
+ PRINTR "One of the Implementors notices your arrival. ""Company,"" he remarks with his mouth full.
+ A few of the others glance down at you."
+?CCL9: EQUAL? IMPSAY,2 \?CCL11
+ PRINT XA
+ PRINT STR?609
+ PRINTI " pitches "
+ ICALL2 THE-PRINT,COCO
+ PRINTI " across the table. ""Isn't this the feeb who "
+ FSET? BOTTLE,SEEN \?CCL14
+ PRINTI "opened that mailbox"
+ JUMP ?CND12
+?CCL14: GETB LAST-BAD,0
+ ZERO? STACK /?CCL16
+ PRINTI "used the word '"
+ ICALL2 PRINT-TABLE,LAST-BAD
+ PRINTC 39
+ JUMP ?CND12
+?CCL16: PRINTI "bought that stupid onion"
+?CND12: PRINTI " a few moves ago?"" he mutters, apparently referring to you"
+ FSET? IMPS,MUNGED \?CND17
+ PRINTR ". ""Gimme another thunderbolt."""
+?CND17: PRINT PTAB
+ PRINTI """That's "
+ FSET? PLAYER,FEMALE \?CCL21
+ PRINTB W?HER
+ JUMP ?CND19
+?CCL21: PRINTB W?HIM
+?CND19: PRINTR ","" agrees one of the others."
+?CCL11: EQUAL? IMPSAY,1 \FALSE
+ PRINTI "A "
+ PRINT STR?607
+ PRINTI " catches "
+ ICALL2 THE-PRINT,COCO
+ PRINTR " and glares down at you with silent contempt."
+
+
+ .FUNCT I-IMPS-TAKE,X
+ EQUAL? HERE,APLANE \FALSE
+ EQUAL? ABOVE,OPLAIN \FALSE
+ FSET IMPS,SEEN
+ SET 'P-THEM-OBJECT,IMPS
+ PRINT TAB
+ SET 'P-IT-OBJECT,COCO
+ DLESS? 'IMPSAY,1 \?CCL7
+ PRINTI "The loud-mouthed Implementor growls something obscene, shoves you out of the way and reaches down to retrieve "
+ ICALL2 THE-PRINT,COCO
+ PRINT PTAB
+ ICALL2 URGRUE-GETS-COCO,TRUE-VALUE
+ RTRUE
+?CCL7: EQUAL? IMPSAY,1 \?CCL9
+ PRINTI """Pick up that "
+ PRINTD COCO
+ PRINTI ","" growls the Implementor, ""or I'll "
+ GET STATS,INTELLIGENCE
+ LESS? STACK,READING-IQ /?CCL12
+ ICALL2 ITALICIZE,STR?541
+ JUMP ?CND10
+?CCL12: ZERO? VT220 \?CCL14
+ PRINTI "(something unintelligible)"
+ JUMP ?CND10
+?CCL14: FONT F-NEWFONT >X
+ PRINTB W?REMOVE
+ FONT F-DEFAULT >X
+?CND10: PRINTI " you."""
+ CRLF
+ PRINT TAB
+ PRINTR "The other Implementors are enjoying this exchange."
+?CCL9: EQUAL? IMPSAY,2 \FALSE
+ PRINTI "The Implementor who ran into you rises to his feet, livid with rage. ""Pick up that "
+ PRINTD COCO
+ PRINTR ","" he demands."
+
+
+ .FUNCT I-IMPQUEST
+ EQUAL? HERE,APLANE \FALSE
+ EQUAL? ABOVE,OPLAIN \FALSE
+ DLESS? 'IMPSAY,1 \?CCL7
+ SET 'IMPSAY,3
+ ICALL2 DEQUEUE,I-IMPQUEST
+ ICALL2 QUEUE,I-IMPGIVE
+ MOVE GOBLET,IMPS
+ SET 'P-IT-OBJECT,GOBLET
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ FSET IMPS,SEEN
+ PRINTI " A "
+ PRINT STR?610
+ PRINTR " empties his goblet of nectar with a gulp. ""Here,"" he says, holding it out for you. ""Carry this. It'll keep the thunderbolts off your back."""
+?CCL7: EQUAL? IMPSAY,1 \?CCL9
+ FSET IMPS,SEEN
+ PRINTI " ""So,"" sighs another Implementor, toying with his sunglasses. ""The Coconut is gone. Stolen. Any volunteers to get it back?""
+ One by one, the Implementors turn to look at you.
+ ""I'd say it's unanimous,"" smiles the "
+ PRINT STR?607
+ PRINT PERIOD
+ RTRUE
+?CCL9: EQUAL? IMPSAY,2 \FALSE
+ FSET IMPS,SEEN
+ PRINTI " ""This is awkward,"" remarks a loudmouthed Implementor. ""No telling what the ur-grue might do with the Coconut. He could crumble the foundations of reality. Plunge the world into a thousand years of darkness. We might even have to buy our own lunch!"" The other Implementors gasp. ""And it's all "
+ HLIGHT H-ITALIC
+ FSET? PLAYER,FEMALE \?CCL14
+ PRINTI "her"
+ JUMP ?CND12
+?CCL14: PRINTI "his"
+?CND12: HLIGHT H-NORMAL
+ PRINTR " fault,"" he adds, pointing at you with a drumstick."
+
+
+ .FUNCT I-IMPGIVE
+ EQUAL? HERE,APLANE \FALSE
+ EQUAL? ABOVE,OPLAIN \FALSE
+ FSET IMPS,SEEN
+ SET 'P-IT-OBJECT,GOBLET
+ PRINT TAB
+ DLESS? 'IMPSAY,1 \?CCL7
+ MOVE GOBLET,ON-PIKE
+ FSET GOBLET,NODESC
+ FSET GOBLET,TOUCHED
+ PRINTI """I don't think "
+ FSET? PLAYER,FEMALE \?CND8
+ PRINTC 115
+?CND8: PRINTI "he's going to accept "
+ ICALL2 THE-PRINT,GOBLET
+ PRINTI ","" sighs the "
+ PRINT STR?610
+ PRINT PTAB
+ PRINTI """Of course "
+ FSET? PLAYER,FEMALE \?CND10
+ PRINTC 115
+?CND10: PRINTI "he will,"" smiles the "
+ PRINT STR?609
+ PRINTI ", forcing it into your hands. ""See?"""
+ CRLF
+ ICALL1 ATRII-KICK
+ RTRUE
+?CCL7: EQUAL? IMPSAY,1 \?CCL13
+ PRINTI """I really must insist that you take this goblet,"" repeats the "
+ PRINT STR?610
+ PRINT PERIOD
+ RTRUE
+?CCL13: EQUAL? IMPSAY,2 \FALSE
+ PRINTI """Here. Take this,"" urges the "
+ PRINT STR?610
+ PRINTI ", holding out the "
+ PRINT STR?611
+ RTRUE
+
+
+ .FUNCT I-BFLY,FREE,V,L,LEN
+ FSET? BFLY,LIVING \FALSE
+ LOC BFLY >L
+ ZERO? L /?CND3
+ CALL2 VISIBLE?,BFLY >V
+ IN? L,ROOMS /?CND3
+ EQUAL? L,ARCH \?CCL7
+ EQUAL? ATIME,PRESENT \?CND3
+?CCL7: FSET? L,SURFACE /?CCL10
+ FSET? L,VEHICLE /?CCL10
+ FSET? L,LIVING /?CCL10
+ FSET? L,CONTAINER \?CND3
+ FSET? L,OPENED \?CND3
+?CCL10: INC 'FREE
+?CND3: EQUAL? L,GOBLET \?CCL19
+ ZERO? V /FALSE
+ FSET? BFLY,SEEN \?CCL24
+ FCLEAR BFLY,SEEN
+ RFALSE
+?CCL24: RANDOM 100
+ LESS? 75,STACK \FALSE
+ FSET BFLY,SEEN
+ FSET BFLY,IDENTIFIED
+ PRINT TAB
+ ICALL2 CTHE-PRINT,BFLY
+ CALL2 PICK-NEXT,BFLY-EATINGS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL19: ZERO? V /?CND17
+ FSET? BFLY,SEEN \?CCL29
+ FCLEAR BFLY,SEEN
+ RFALSE
+?CCL29: RANDOM 100
+ LESS? 75,STACK \FALSE
+ FSET BFLY,SEEN
+ FSET BFLY,IDENTIFIED
+ PRINT TAB
+ EQUAL? L,HERE /?CND31
+ ZERO? FREE /?CND31
+ MOVE BFLY,HERE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ICALL2 CTHE-PRINT,BFLY
+ PRINTI " flutters"
+ ICALL2 OUT-OF-LOC,L
+ PRINT PERIOD
+ RTRUE
+?CND31: CALL2 VISIBLE?,GOBLET
+ ZERO? STACK /?CND34
+ LOC GOBLET >L
+ ICALL2 CTHE-PRINT,BFLY
+ LOC PLAYER
+ EQUAL? L,PLAYER,HERE,STACK /?CCL37
+ FSET? L,SURFACE \?CND36
+?CCL37: MOVE BFLY,GOBLET
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ PRINTI " alights on the rim of "
+ ICALL2 THE-PRINT,GOBLET
+ PRINT PERIOD
+ RTRUE
+?CND36: CALL2 PICK-NEXT,BFLY-HOVERS
+ PRINT STACK
+ ICALL2 THE-PRINT,L
+ PRINT PERIOD
+ RTRUE
+?CND34: LOC ARCH
+ EQUAL? HERE,STACK /?CND40
+ RANDOM 100
+ LESS? 66,STACK /?CND40
+ ICALL2 CTHE-PRINT,BFLY
+ CALL2 PICK-NEXT,BFLY-DOINGS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND40: CALL2 NEXT-BFLY-ROOM?,HERE
+ RSTACK
+?CND17: ZERO? L /FALSE
+ IN? L,ROOMS /?CCL47
+ ZERO? FREE /FALSE
+ LOC L
+ MOVE BFLY,STACK
+ RFALSE
+?CCL47: RANDOM 100
+ LESS? 66,STACK \FALSE
+ CALL2 NEXT-BFLY-ROOM?,L
+ RSTACK
+
+
+ .FUNCT NEXT-BFLY-ROOM?,L,DIR,CNT,TBL,TYPE,X,RM
+ IN? L,ROOMS \FALSE
+ SET 'CNT,1
+ SET 'DIR,I-NORTH
+?PRG3: GETB PDIR-LIST,DIR
+ GETP L,STACK >TBL
+ ZERO? TBL /?CND5
+ GET TBL,XTYPE >X
+ BAND X,65280 >TYPE
+ EQUAL? TYPE,CONNECT,SCONNECT,X-EXIT /?CCL8
+ EQUAL? TYPE,DCONNECT \?PRD11
+ GET TBL,XDATA
+ FSET? STACK,OPENED /?CCL8
+?PRD11: EQUAL? TYPE,FCONNECT \?CND5
+ BAND X,127
+ ZERO? STACK /?CND5
+?CCL8: GET TBL,XROOM >RM
+ EQUAL? RM,L,ON-BRIDGE,IN-FROON /?CND5
+ LOC ARCH
+ EQUAL? RM,APLANE,IN-SPLENDOR,STACK /?CND5
+ CALL2 PLAIN-ROOM?,RM
+ ZERO? STACK \?CCL19
+ FSET? BFLY,IDENTIFIED \?CND5
+?CCL19: FSET? RM,INDOORS \?CCL22
+ FSET? L,INDOORS \?CND5
+?CCL22: EQUAL? RM,HERE \?CCL26
+ CALL2 WEARING-MAGIC?,CLOAK
+ ZERO? STACK \?CCL26
+ SET 'CNT,2
+ PUT GOOD-DIRS,2,DIR
+ JUMP ?REP4
+?CCL26: INC 'CNT
+ PUT GOOD-DIRS,CNT,DIR
+?CND5: IGRTR? 'DIR,I-NW \?PRG3
+?REP4: EQUAL? CNT,1 /FALSE
+ EQUAL? CNT,2 \?CCL35
+ GET GOOD-DIRS,2 >DIR
+ JUMP ?CND31
+?CCL35: PUT GOOD-DIRS,0,CNT
+ PUT GOOD-DIRS,1,0
+ CALL2 PICK-ONE,GOOD-DIRS >DIR
+?CND31: GETB PDIR-LIST,DIR
+ GETP L,STACK
+ GET STACK,XROOM >RM
+ EQUAL? L,HERE \?CCL38
+ MOVE BFLY,RM
+ ICALL2 BFLY-FLIES,DIR
+ RTRUE
+?CCL38: EQUAL? RM,HERE \FALSE
+ ICALL2 BFLY-ARRIVES,DIR
+ RTRUE
+
+
+ .FUNCT BFLY-FLIES,DIR
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 CTHE-PRINT,BFLY
+ PRINTI " flutters away"
+ ASSIGNED? 'DIR \?CND1
+ PRINTI " to the "
+ GET DIR-NAMES,DIR
+ PRINTB STACK
+?CND1: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT BFLY-ARRIVES,DIR
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-IT-OBJECT,BFLY
+ MOVE BFLY,HERE
+ FSET BFLY,SEEN
+ FSET BFLY,IDENTIFIED
+ PRINT TAB
+ FSET? BFLY,TOUCHED \?CCL3
+ PRINT XTHE
+ JUMP ?CND1
+?CCL3: FSET BFLY,TOUCHED
+ PRINT XA
+?CND1: ICALL2 DPRINT,BFLY
+ PRINTI " flutters into view"
+ ASSIGNED? 'DIR \?CND4
+ ADD DIR,4 >DIR
+ GRTR? DIR,I-NW \?CND6
+ SUB DIR,8 >DIR
+?CND6: PRINTI " from the "
+ GET DIR-NAMES,DIR
+ PRINTB STACK
+?CND4: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-PILLAR,L
+ LOC BFLY >L
+ ZERO? L /FALSE
+ FSET? BFLY,LIVING \FALSE
+ CALL2 VISIBLE?,BFLY
+ ZERO? STACK /?CCL7
+ FSET? BFLY,SEEN \?CCL10
+ FCLEAR BFLY,SEEN
+ RFALSE
+?CCL10: IN? L,ROOMS \?CCL12
+ ICALL2 VANISH,BFLY
+ ICALL2 DEQUEUE,I-PILLAR
+ PRINT TAB
+ ICALL2 CTHE-PRINT,BFLY
+ PRINTR " seems to have crawled out of sight."
+?CCL12: RANDOM 100
+ LESS? 90,STACK \FALSE
+ FSET BFLY,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,BFLY
+ RANDOM 100
+ LESS? 50,STACK /?CCL16
+ CALL2 PICK-NEXT,PILLAR-DOINGS
+ PRINT STACK
+ JUMP ?CND14
+?CCL16: CALL2 PICK-NEXT,PILLAR-MOVES
+ PRINT STACK
+ EQUAL? L,PLAYER \?CCL19
+ SET 'L,HANDS
+ JUMP ?CND17
+?CCL19: EQUAL? L,HERE \?CND17
+ FSET? HERE,INDOORS \?CCL22
+ SET 'L,FLOOR
+ JUMP ?CND17
+?CCL22: SET 'L,GROUND
+?CND17: ICALL2 THE-PRINT,L
+?CND14: PRINT PERIOD
+ RTRUE
+?CCL7: IN? L,ROOMS \FALSE
+ RANDOM 100
+ LESS? 33,STACK /FALSE
+ REMOVE BFLY
+ ICALL2 DEQUEUE,I-PILLAR
+ RFALSE
+
+
+ .FUNCT I-CLERIC,X
+ EQUAL? HERE,IN-CHAPEL \FALSE
+ FSET? CLERIC,SEEN \?CND1
+ FCLEAR CLERIC,SEEN
+ RFALSE
+?CND1: PRINT TAB
+ IGRTR? 'CLERIC-SCRIPT,INIT-CLERIC-SCRIPT \?CCL7
+ SET 'CLERIC-SCRIPT,0
+ ICALL2 CTHE-PRINT,CLERIC
+ PRINTI " lifts his eyes as you walk in"
+ FSET? CONGREG,SEEN /?CND8
+ FSET CONGREG,SEEN
+ PRINTI ". ""Art thou the Savior?"" he cries, and the entire "
+ PRINTD CONGREG
+ PRINTI " turns to stare at you"
+ PRINT PTAB
+ PRINTI """Naw,"" sneers an unseen voice. ""Just some "
+ SET 'X,W?GUY
+ FSET? PLAYER,FEMALE \?CND10
+ SET 'X,W?DAME
+?CND10: PRINTB X
+ CALL2 SEE-ANYTHING-IN?,PLAYER
+ ZERO? STACK /?CND12
+ PRINT WITH
+ FIRST? PLAYER /?BOGUS14
+?BOGUS14: ICALL2 PRINTA,STACK
+?CND12: PRINT PERQ
+ PRINT TAB
+ PRINTI """Oh,"" mumbles "
+ ICALL2 THE-PRINT,CLERIC
+ PRINTI " with a sigh of resignation. ""Have a seat, good "
+ SET 'X,W?SIR
+ FSET? PLAYER,FEMALE \?CND15
+ SET 'X,W?MISS
+?CND15: PRINTB X
+ PRINTR ", and join us in our hour of need."""
+?CND8: PRINTR ", and bows his head in sorrow."
+?CCL7: EQUAL? CLERIC-SCRIPT,1 \?CCL18
+ PRINTC QUOTATION
+ CALL2 PICK-NEXT,CLERIC-WOES
+ PRINT STACK
+ PRINTC EXCLAM
+ ICALL1 CLERIC-WHINES
+ PRINTI "Behold! The wrath of the Trees is almost upon us. When the Glyph of Warding is melted, the village will be lost!"""
+ CRLF
+ ICALL1 CROWD-AGREES
+ RTRUE
+?CCL18: EQUAL? CLERIC-SCRIPT,2 \?CCL20
+ PRINTI """Who can stop the marching Trees?"
+ ICALL1 CLERIC-WHINES
+ PRINTI "Orkan's Glyphs are all that keep the monsters at bay. But Orkan answers not our summons; only one Glyph remains, and that is writ in snow!"""
+ CRLF
+ ICALL1 CROWD-AGREES
+ RTRUE
+?CCL20: EQUAL? CLERIC-SCRIPT,3 \?CCL22
+ PRINTI """The southern mountains are their nest,"
+ ICALL1 CLERIC-WHINES
+ PRINTR "They march relentlessly, choking the valley with their foul gifts and blasphemous songs. They know the wizard's Glyph is melting, and with it fades our only hope!"""
+?CCL22: EQUAL? CLERIC-SCRIPT,INIT-CLERIC-SCRIPT \FALSE
+ SET 'CLERIC-SCRIPT,0
+ PRINTI """Where is the Savior of whom our legends speak?"
+ ICALL1 CLERIC-WHINES
+ PRINTI "Anything "
+ FSET? PLAYER,FEMALE \?CND25
+ PRINTC 115
+?CND25: PRINTI "he asks will be "
+ FSET? PLAYER,FEMALE \?CCL29
+ PRINTI "her"
+ JUMP ?CND27
+?CCL29: PRINTI "his"
+?CND27: PRINTI " reward, if only "
+ FSET? PLAYER,FEMALE \?CND30
+ PRINTC 115
+?CND30: PRINTI "he fulfills the ancient prophecy, and drives the plague of Tree-daemons from our doorstep!"""
+ CRLF
+ ICALL1 CROWD-AGREES
+ RTRUE
+
+
+ .FUNCT CLERIC-WHINES,X
+ ICALL2 WHIMPERS,CLERIC
+ RANDOM 100
+ LESS? 50,STACK /?CND1
+ PRINTI ", "
+ RANDOM 100 >X
+ LESS? X,33 \?CCL5
+ PRINTI "beating his breast"
+ JUMP ?CND3
+?CCL5: LESS? X,67 \?CCL7
+ PRINTI "wringing his hands"
+ JUMP ?CND3
+?CCL7: PRINTI "covering his face"
+?CND3: RANDOM 100
+ LESS? 50,STACK /?CND1
+ RANDOM 100
+ LESS? 50,STACK /?CCL12
+ PRINTI " in supplication"
+ JUMP ?CND1
+?CCL12: PRINTI " hopelessly"
+?CND1: PRINTI ". """
+ RFALSE
+
+
+ .FUNCT CROWD-AGREES
+ RANDOM 100
+ LESS? 33,STACK /FALSE
+ PRINT TAB
+ PRINTC QUOTATION
+ CALL2 PICK-NEXT,CLERIC-WOES
+ PRINT STACK
+ PRINTC EXCLAM
+ ICALL2 WHIMPERS,CONGREG
+ PRINT PERIOD
+ RFALSE
+
+
+ .FUNCT WHIMPERS,OBJ,X
+ PRINTI """ "
+ RANDOM 100 >X
+ LESS? X,33 \?CCL3
+ PRINTI "mourn"
+ JUMP ?CND1
+?CCL3: LESS? X,67 \?CCL5
+ PRINTI "whine"
+ JUMP ?CND1
+?CCL5: PRINTI "whimper"
+?CND1: PRINTI "s "
+ ICALL2 THE-PRINT,OBJ
+ RFALSE
+
+
+ .FUNCT I-THRIFF-WIN
+ CALL2 VISIBLE?,CLERIC
+ ZERO? STACK /FALSE
+ FSET? CLERIC,SEEN \?CND1
+ FCLEAR CLERIC,SEEN
+ RFALSE
+?CND1: INC 'CLERIC-SCRIPT
+ PRINT TAB
+ EQUAL? CLERIC-SCRIPT,1 \?CCL7
+ PRINTI """Congratulations, honored "
+ ICALL1 SAY-SORC
+ PRINTI ","" booms "
+ ICALL2 THE-PRINT,CLERIC
+ PRINTR " over the crowd's cheers. ""Truly, thou art the Savior foretold in our eldest legends. Would that Orkan were here to witness this day."""
+?CCL7: EQUAL? CLERIC-SCRIPT,2 \?CCL9
+ PRINTI """What reward wouldst thou claim of us?"" asks "
+ ICALL2 THE-PRINT,CLERIC
+ PRINTI ", carefully holding "
+ PRINT STR?612
+ PRINTR "Ask for anything, and it shall be yours!"""
+?CCL9: EQUAL? CLERIC-SCRIPT,3 \?CCL11
+ PRINTI """Anything we possess is yours for the asking,"" repeats "
+ ICALL2 THE-PRINT,CLERIC
+ PRINT PERIOD
+ RTRUE
+?CCL11: EQUAL? CLERIC-SCRIPT,4 \?CND5
+ ICALL2 CTHE-PRINT,CLERIC
+ PRINTI " adjusts "
+ PRINT STR?612
+ PRINTI "Perchance we have nothing to tempt such a mighty "
+ ICALL1 SAY-SORC
+ PRINTR ","" he remarks hopefully."
+?CND5: ICALL1 EXIT-CLERIC
+ ICALL2 CTHE-PRINT,CONGREG
+ PRINTI " is beginning to wander away"
+ PRINT PTAB
+ PRINTI """Your reticence betrays your humility, honored one,"" says the Cardinal, bowing his head. ""No doubt you have forsworn earthly gifts in lieu of some greater reward in the afterlife. In that case, farewell!""
+ Clutching "
+ ICALL2 THE-PRINT,RELIQUARY
+ PRINTI ", "
+ ICALL2 THE-PRINT,CLERIC
+ PRINT STR?501
+ PRINTR "crowd. In moments, the place is deserted."
+
+
+ .FUNCT EXIT-CLERIC
+ ICALL2 DEQUEUE,I-THRIFF-WIN
+ REMOVE CLERIC
+ SET 'P-HIM-OBJECT,NOT-HERE-OBJECT
+ REMOVE CONGREG
+ SET 'P-THEM-OBJECT,NOT-HERE-OBJECT
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ RFALSE
+
+
+ .FUNCT I-TRUFFLE,V
+ LOC TRUFFLE
+ ZERO? STACK \?CCL3
+ SET 'TRUFFLE-TIMER,0
+ ICALL2 DEQUEUE,I-TRUFFLE
+ RFALSE
+?CCL3: EQUAL? HERE,APLANE,IN-SPLENDOR /FALSE
+ CALL2 VISIBLE?,TRUFFLE >V
+ EQUAL? HERE,APLANE,IN-SPLENDOR /FALSE
+ DLESS? 'TRUFFLE-TIMER,1 \?CCL9
+ SET 'TRUFFLE-TIMER,0
+ ICALL2 DEQUEUE,I-TRUFFLE
+ ICALL2 VANISH,TRUFFLE
+ ZERO? V /FALSE
+ PRINT TAB
+ PRINTI "All that's left of "
+ ICALL2 THE-PRINT,TRUFFLE
+ PRINTR " is a yummy memory."
+?CCL9: ZERO? V /FALSE
+ EQUAL? TRUFFLE-TIMER,10 \?CCL15
+ PRINT TAB
+ ICALL2 CTHE-PRINT,TRUFFLE
+ PRINTI " looks terribly soft"
+ PRINT STR?587
+ RTRUE
+?CCL15: EQUAL? TRUFFLE-TIMER,30 \FALSE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,TRUFFLE
+ PRINTR " looks as if it's beginning to soften."
+
+
+ .FUNCT I-QUEEN,X
+ EQUAL? HERE,IN-GARDEN \FALSE
+ INC 'PTIMER
+ EQUAL? PTIMER,1 /FALSE
+ EQUAL? PTIMER,2 \?CCL7
+ PRINT TAB
+ PRINTR "Voices can be heard somewhere in the distance."
+?CCL7: EQUAL? PTIMER,3 \?CCL9
+ PRINT TAB
+ PRINTR "One of the unseen voices laughs harshly."
+?CCL9: EQUAL? PTIMER,4 \?CCL11
+ FCLEAR QUEEN,NODESC
+ PRINT TAB
+ PRINT YOU-HEAR
+ PRINTR "a chorus of unpleasant giggles. ""I'll be in my garden,"" calls one of the voices."
+?CCL11: EQUAL? PTIMER,5 \?CCL13
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "A whirlpool of twinkling light forms in "
+ ICALL2 THE-PRINT,GARDEN
+ PRINTI ". Something is beginning to materialize!"
+ CRLF
+ IN? DACT,HERE \?CND14
+ FSET? DACT,LIVING \?CND14
+ FSET? DACT,SLEEPING /?CND14
+ FSET DACT,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,DACT
+ PRINTI " beats its wings restlessly."
+ CRLF
+?CND14: CALL2 VISIBLE?,MINX
+ ZERO? STACK /TRUE
+ FSET? MINX,LIVING \TRUE
+ FSET? MINX,SLEEPING /TRUE
+ FSET MINX,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,MINX
+ PRINTI " whimpers fearfully as "
+ ICALL2 THE-PRINT,GARDEN
+ PRINTI " brightens"
+ IN? MINX,BUSH /?CND24
+ LOC MINX >X
+ MOVE MINX,BUSH
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ PRINTI ". Before you can stop her, she "
+ EQUAL? X,IN-GARDEN /?CND26
+ PRINTI "leaps away from "
+ EQUAL? X,PLAYER \?CCL30
+ PRINTI "your grasp"
+ JUMP ?CND28
+?CCL30: ICALL2 THE-PRINT,X
+?CND28: PRINTI ", "
+?CND26: PRINTI "streaks across the lawn and disappears behind "
+ ICALL2 THE-PRINT,BUSH
+?CND24: PRINT PERIOD
+ RTRUE
+?CCL13: EQUAL? PTIMER,6 \?CCL32
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE QUEEN,HERE
+ ICALL2 SEE-CHARACTER,QUEEN
+ PRINT TAB
+ PRINTI "The twinkling whirl resolves into a furry creature. Her face is turned away at the moment, but there's a flat tail sticking out from under her long, red gown."
+ CRLF
+ ICALL2 TOPPLED?,QUEEN
+ RTRUE
+?CCL32: EQUAL? PTIMER,7 \?CCL34
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PUTP QUEEN,P?SDESC,0
+ PRINT TAB
+ PRINTI "The furry creature turns around, revealing her dark, beady eyes and fleshy bill. She's a platypus!"
+ CRLF
+ IN? DACT,HERE /?CCL36
+ IN? PLAYER,BUSH /TRUE
+?CCL36: ICALL1 QUEEN-SEES-YOU
+ RTRUE
+?CCL34: EQUAL? PTIMER,8 \?CCL40
+ MOVE JAR,QUEEN
+ FSET BROG,CONTAINER
+ FSET BROG,OPENABLE
+ FSET BROG,OPENED
+ ICALL REPLACE-SYN?,BROG,W?ZZZP,W?COMPARTMENT
+ ICALL REPLACE-ADJ?,BROG,W?ZZZP,W?SECRET
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ ICALL2 CTHE-PRINT,QUEEN
+ PRINTI " steps over to "
+ ICALL2 THE-PRINT,BROG
+ PRINTI ", glancing around to be sure she is alone. Then she opens a secret compartment and pulls out "
+ ICALL2 PRINTA,JAR
+ PRINT PERIOD
+ RTRUE
+?CCL40: EQUAL? PTIMER,9 \?CCL42
+ ICALL2 CREATE-MIRROR?,MIRROR0
+ PRINT TAB
+ ICALL2 CTHE-PRINT,QUEEN
+ PRINTR " opens the jar, takes out a circlet and blows a silver bubble. You watch as the bubble flattens into a round mirror, rotating slowly on its edge."
+?CCL42: EQUAL? PTIMER,10 \?CCL44
+ PRINT TAB
+ ICALL2 CTHE-PRINT,QUEEN
+ PRINTR " stops the spinning mirror and turns it until it faces her. Gazing into it she whispers,
+
+ ""Mirror, mirror in the air,
+ Who in Quendor is most fair?"""
+?CCL44: EQUAL? PTIMER,11 \?CCL46
+ PRINTI " The floating mirror shimmers, and a hollow voice says,
+
+ ""Your Highness once was fair, 'tis true.
+ But Morning-Star is "
+ ICALL2 ITALICIZE,STR?613
+ PRINTR "!"""
+?CCL46: EQUAL? PTIMER,12 \FALSE
+ FCLEAR BROG,OPENED
+ MOVE JAR,BROG
+ ICALL2 DESTROY-MIRROR,MIRROR0
+ ICALL2 DEQUEUE,I-MIRRORS
+ REMOVE QUEEN
+ ICALL2 DEQUEUE,I-QUEEN
+ SET 'PTIMER,0
+ SET 'P-HER-OBJECT,NOT-HERE-OBJECT
+ PRINTI " ""Liar!"" cries "
+ ICALL2 THE-PRINT,QUEEN
+ PRINTI ", bursting the mirror with an angry swipe. She stows "
+ ICALL2 THE-PRINT,JAR
+ PRINTI " back in "
+ ICALL2 THE-PRINT,BROG
+ PRINTR ", blows a silver whistle and dissolves in a whirlpool of color."
+
+
+ .FUNCT I-DUST,INDENT,V
+ CALL2 VISIBLE?,DUST >V
+ ASSIGNED? 'INDENT /?CND1
+ FSET? DUST,SEEN \?CCL4
+ FCLEAR DUST,SEEN
+ RFALSE
+?CCL4: PRINT TAB
+?CND1: FSET DUST,SEEN
+ EQUAL? BUNNIES,1 \?CCL7
+ SET 'P-THEM-OBJECT,DUST
+ PUTP DUST,P?SDESC,0
+ FSET DUST,PLURAL
+ ZERO? V /?CND5
+ PRINTI "With an ominous "
+ HLIGHT H-ITALIC
+ PRINTI "poof"
+ HLIGHT H-NORMAL
+ PRINTI ", the dust bunny divides itself in two."
+ CRLF
+ JUMP ?CND5
+?CCL7: ZERO? V /?CND5
+ HLIGHT H-ITALIC
+ PRINTI "Poof"
+ HLIGHT H-NORMAL
+ PRINTI ". "
+ ICALL2 CTHE-PRINT,DUST
+ CALL2 PICK-NEXT,BUNNY-SPLITS
+ PRINT STACK
+ PRINT PERIOD
+?CND5: ICALL1 MORE-BUNNIES
+ RETURN V
+
+
+ .FUNCT MORE-BUNNIES,X
+ GRTR? BUNNIES,BMAX /TRUE
+ EQUAL? BUNNIES,BMAX \?CCL5
+ INC 'BUNNIES
+ JUMP ?CND1
+?CCL5: SET 'X,BUNNIES
+ ADD OBUNNIES,BUNNIES >BUNNIES
+ SET 'OBUNNIES,X
+?CND1: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ RFALSE
+
+
+ .FUNCT I-MARE-SEES
+ ICALL2 DEQUEUE,I-MARE-SEES
+ EQUAL? HERE,IN-SPLENDOR \FALSE
+ PRINT TAB
+ ICALL2 UNICORNS-FLEE,STR?614
+ RTRUE
+
+
+ .FUNCT I-ARREST,INDENT,RM,OBJ,NXT
+ ICALL2 DEQUEUE,I-ARREST
+ EQUAL? HERE,IN-SPLENDOR \FALSE
+ ASSIGNED? 'INDENT /?CCL5
+ PRINT TAB
+ PRINT XTHE
+ JUMP ?CND3
+?CCL5: PRINTI "As you step across the glade, the "
+?CND3: PRINTI "stillness is broken by the rumble of approaching hooves. Before you can think or move, you find yourself enclosed by a dozen sharp horns, each backed by a unicorn in full military regalia.
+ A magnificent stallion regards you with calm authority. ""You"
+ FSET? HERD,SEEN \?CCL8
+ PRINTI "r fate is sealed"
+ JUMP ?CND6
+?CCL8: PRINTI " will find no welcome here"
+?CND6: PRINTI ", earth-dweller,"" whispers a stern voice in your mind. """
+ FSET? HERD,SEEN \?CND9
+ PRINTI "The injustice that drove us to this Plane is now yours. Forever."""
+ CRLF
+ PRINT TAB
+ PRINTI "A painful metal bit is forced into your mouth, and a wagonload of overweight, aristocratic unicorns is attached. The rest of your life is spent hauling this laughing burden in a small circle, with infrequent stops for dirty water and oats"
+ ICALL1 JIGS-UP
+ RTRUE
+?CND9: FSET HERD,SEEN
+ PRINTI "Our children must never know the pain we suffered at the hands of Men. Return to your people now, and describe the fate awaiting any who dares to violate our solitude again."""
+ CRLF
+ PRINT TAB
+ PRINTI "A lifetime of humiliating drudgery passes before your eyes. You cry out with pain and heartache as you haul wagons full of overweight aristocrats, standing silent and powerless as cruel taskmasters whip you over and over again..."
+ ICALL1 CARRIAGE-RETURNS
+ ICALL1 SAFE-VEHICLE-EXIT
+ CALL2 META-LOC,CHEST >RM
+ FIRST? IN-SPLENDOR >OBJ \?CND11
+?PRG13: NEXT? OBJ >NXT /?BOGUS15
+?BOGUS15: EQUAL? OBJ,WINNER /?CND16
+ FSET? OBJ,TAKEABLE \?CND16
+ MOVE OBJ,RM
+?CND16: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG13
+?CND11: SET 'P-WALK-DIR,FALSE-VALUE
+ ICALL2 GOTO,RM
+ RTRUE
+
+
+ .FUNCT I-STRANGLE,X
+ GET STATS,ENDURANCE >X
+ PRINT TAB
+ LESS? CHOKE,X \?CND1
+ CALL2 PICK-NEXT,STRANGLES
+ PRINT STACK
+ DIV X,CHOKE
+ LESS? STACK,2 \?CND3
+ PRINTI ". Your endurance won't last much longer"
+?CND3: PRINTC 33
+ CRLF
+ SUB 0,CHOKE
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+?CND1: SUB 0,X
+ ICALL2 UPDATE-STAT,STACK
+ PRINTI "The choking fingers drain your endurance to its limit. As your consciousness sinks into oblivion, you feel "
+ ICALL2 THE-PRINT,SKELETON
+ PRINTI " draping "
+ PRINTB W?SOMETHING
+ PRINTI " around your neck"
+ ICALL1 JIGS-UP
+ RTRUE
+
+
+ .FUNCT NOLUCK?,CNT,LEN,OBJ
+ GET LUCKY-OBJECTS,0 >LEN
+?PRG1: GET LUCKY-OBJECTS,LEN >OBJ
+ IN? OBJ,PLAYER \?CND3
+ FSET? OBJ,NEUTRALIZED /?CND3
+ GETP OBJ,P?DNUM >CNT
+ DLESS? 'CNT,1 \?CND7
+ ICALL2 VANISH,OBJ
+ PRINT TAB
+ ICALL2 ITALICIZE,STR?615
+ PRINTI "! "
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " is consumed in a silent flash of green."
+ CRLF
+ RFALSE
+?CND7: PUTP OBJ,P?DNUM,CNT
+ PRINT TAB
+ PRINT CYOUR
+ ICALL2 DPRINT,OBJ
+ PRINTI " flickers green"
+ EQUAL? CNT,1 \?CND9
+ PRINTI " again, less brightly than before"
+?CND9: PRINT PERIOD
+ RFALSE
+?CND3: DLESS? 'LEN,1 \?PRG1
+ RTRUE
+
+
+ .FUNCT I-GRUE,SEE,L,DIR,TBL,DEST,DAMAGE,X
+ ZERO? LIT? \FALSE
+ EQUAL? HERE,IN-LAIR /FALSE
+ CALL1 GRUE-ROOM?
+ ZERO? STACK /FALSE
+ CALL2 WEARING-MAGIC?,HELM >SEE
+ IN? GRUE,HERE \?CCL9
+ GETP GRUE,P?ENDURANCE
+ LESS? STACK,1 \?CND10
+ IGRTR? 'GRUE-KILLS,2 \?CND12
+ ICALL2 DEQUEUE,I-GRUE
+?CND12: PRINT TAB
+ ZERO? SEE /?CCL16
+ ICALL2 CTHE-PRINT,GRUE
+ PRINTI " retreats"
+ JUMP ?CND14
+?CCL16: PRINT YOU-HEAR
+ PRINTB W?SOMETHING
+ PRINTI " retreat"
+?CND14: PRINTI " into the darkness."
+ CRLF
+ GETP GRUE,P?VALUE
+ ICALL UPDATE-STAT,STACK,EXPERIENCE,TRUE-VALUE
+ ICALL2 EXUENT-MONSTER,GRUE
+ GETP GRUE,P?EMAX
+ PUTP GRUE,P?ENDURANCE,STACK
+ RTRUE
+?CND10: ICALL2 NEXT-ENDURANCE?,GRUE
+ PRINT TAB
+ ZERO? SEE /?CCL19
+ ICALL2 CTHE-PRINT,GRUE
+ JUMP ?CND17
+?CCL19: PRINTI "Something"
+?CND17: PRINTI " strikes out at you"
+ CALL2 MONSTER-STRIKES?,GRUE >DAMAGE
+ ZERO? DAMAGE \?CCL22
+ PRINTR ", but misses."
+?CCL22: ZERO? STATIC \?CCL24
+ PRINTI ". Ouch!"
+ CRLF
+ JUMP ?CND20
+?CCL24: PRINT PERIOD
+?CND20: CALL MSPARK?,GRUE,DAMAGE
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+?CCL9: FSET? GRUE,SURPRISED \?CND7
+ FCLEAR GRUE,SURPRISED
+ RFALSE
+?CND7: MOVE GRUE,HERE
+ ICALL2 SEE-MONSTER,GRUE
+ ZERO? SEE /?CND26
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+?CND26: PRINT TAB
+ ZERO? SEE /?CCL30
+ PRINTI "A presence"
+ JUMP ?CND28
+?CCL30: PRINTI "Something"
+?CND28: PRINTR " lurks into the passage."
+
+
+ .FUNCT I-WIGHT,DAMAGE
+ EQUAL? HERE,ON-TRAIL \FALSE
+ GETP WIGHT,P?ENDURANCE
+ LESS? STACK,1 \?CCL6
+ PRINT TAB
+ FSET? WIGHT,SLEEPING /?CND7
+ PRINTI "Battered and confused, "
+ ICALL2 THE-PRINT,WIGHT
+ PRINTI " backs over the edge of the cliff, shrieks and tumbles out of sight."
+ CRLF
+?CND7: ICALL2 KILL-MONSTER,WIGHT
+ MOVE DIAMOND,ON-TRAIL
+ SET 'P-IT-OBJECT,DIAMOND
+ PRINT TAB
+ PRINTI "Something lands at your feet with a "
+ ICALL2 ITALICIZE,STR?616
+ PRINT PERIOD
+ RTRUE
+?CCL6: FSET? WIGHT,SURPRISED \?CND4
+ ICALL2 SEE-MONSTER,WIGHT
+ FSET? WIGHT,SLEEPING /?CND4
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WIGHT
+ PRINTI " whirls to face you."
+ CRLF
+ ICALL2 TOPPLED?,WIGHT
+ RTRUE
+?CND4: CALL2 STILL-SLEEPING?,WIGHT
+ ZERO? STACK \TRUE
+ ICALL2 NEXT-ENDURANCE?,WIGHT
+ CALL2 MONSTER-STRIKES?,WIGHT >DAMAGE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,WIGHT
+ ZERO? DAMAGE /?CND14
+ PRINTI " claws at you viciously."
+ ZERO? STATIC \?CND16
+ PRINTI " Ouch!"
+?CND16: CRLF
+ CALL MSPARK?,WIGHT,DAMAGE
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+?CND14: PRINTR " strikes out at you, but misses."
+
+
+ .FUNCT I-LAVA
+ DLESS? 'LAVA-TIMER,1 \?CCL3
+ EQUAL? HERE,FOREST-EDGE,ON-TRAIL,ON-PEAK /?CCL5
+ EQUAL? HERE,IN-CABIN \?CND4
+?CCL5: ICALL1 CASCADE
+ RTRUE
+?CND4: REMOVE PLUME
+ SET 'LAVA-TIMER,0
+ ICALL2 DEQUEUE,I-LAVA
+ MOVE MAGMA-GLOW,IN-THRIFF
+ SET 'MAGMA-TIMER,4
+ ICALL2 QUEUE,I-MAGMA
+ ICALL2 EMPTY-ROOM,FOREST-EDGE
+ PUTP FOREST-EDGE,P?SDESC,0
+ EQUAL? HERE,IN-THRIFF \FALSE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTR "A violent tremor wracks the earth and sends you sprawling. You bravely cover your eyes to await the tide of magma that will sweep you and Thriff into oblivion...
+
+
+
+
+
+
+The silence gets the better of your curiosity."
+?CCL3: EQUAL? LAVA-TIMER,1 \?CCL11
+ EQUAL? HERE,ON-TRAIL,ON-PEAK,IN-CABIN \?CND12
+ ICALL1 CASCADE
+ RTRUE
+?CND12: REMOVE MAILBOX
+ PUTP ON-TRAIL,P?SOUTH,0
+ PUTP ON-TRAIL,P?IN,0
+ ICALL REPLACE-GLOBAL?,ON-TRAIL,CABIN,NULL
+ IN? WIGHT,ON-TRAIL \?CND14
+ REMOVE WIGHT
+ ICALL2 DEQUEUE,I-WIGHT
+?CND14: ICALL2 EMPTY-ROOM,ON-TRAIL
+ EQUAL? HERE,FOREST-EDGE,IN-THRIFF \FALSE
+ PRINT TAB
+ ICALL2 CTHE-PRINT,GROUND
+ PRINTI " trembles with seismic distress"
+ EQUAL? HERE,IN-THRIFF \?CND18
+ PRINT PERIOD
+ RTRUE
+?CND18: PRINTR " as a deadly torrent of lava sweeps down the western slope, only seconds away!"
+?CCL11: EQUAL? LAVA-TIMER,2 \FALSE
+ EQUAL? HERE,ON-PEAK \?CND22
+ ICALL1 CASCADE
+ RTRUE
+?CND22: ICALL2 EMPTY-ROOM,ON-PEAK
+ EQUAL? HERE,ON-TRAIL,FOREST-EDGE,IN-THRIFF /?CND24
+ EQUAL? HERE,IN-CABIN \FALSE
+?CND24: PRINT TAB
+ PRINTI "Powerful shock waves rock the mountainside"
+ EQUAL? HERE,IN-CABIN \?CCL30
+ PRINTR ", and the entire cabin shudders."
+?CCL30: EQUAL? HERE,IN-THRIFF,FOREST-EDGE \?CND28
+ PRINT PERIOD
+ RTRUE
+?CND28: PRINTR " as a red-hot wall of liquid rock roars down the trail, only seconds behind you!"
+
+
+ .FUNCT CASCADE,STR
+ ASSIGNED? 'STR \?CCL3
+ PRINTI "As you "
+ PRINT STR
+ PRINTI " the lava, a cascade of it "
+ JUMP ?CND1
+?CCL3: PRINT TAB
+ PRINTI "A cascade of lava "
+?CND1: EQUAL? HERE,IN-CABIN \?CCL6
+ PRINTI "buries "
+ ICALL2 THE-PRINT,CABIN
+ JUMP ?CND4
+?CCL6: EQUAL? HERE,ON-PEAK /?CND7
+ PRINTI "roars down the mountainside and "
+?CND7: PRINTI "knocks you off your feet, burying you"
+?CND4: PRINTI " instantly under tons of molten rock"
+ CALL2 WEARING-MAGIC?,RING
+ ZERO? STACK /?CND9
+ PRINTI "! Your magic ring miraculously shields you from the volcanic heat, but not from the inconvenience of having nothing to breathe"
+?CND9: ICALL1 JIGS-UP
+ RTRUE
+
+
+ .FUNCT EMPTY-ROOM,RM,OBJ,NXT
+ FIRST? RM >OBJ \?CND1
+?PRG3: NEXT? OBJ >NXT /?BOGUS5
+?BOGUS5: FSET? OBJ,TAKEABLE \?CND6
+ REMOVE OBJ
+?CND6: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG3
+?CND1: ICALL REPLACE-GLOBAL?,RM,SNOW,LAVA
+ ICALL REPLACE-GLOBAL?,RM,GLYPH,NULL
+ RFALSE
+
+
+ .FUNCT I-MAGMA,TBL,X
+ GETPT MAGMA-GLOW,P?ADJECTIVE >TBL
+ DLESS? 'MAGMA-TIMER,1 \?CCL3
+ SET 'MAGMA-TIMER,0
+ ICALL2 DEQUEUE,I-MAGMA
+ REMOVE MAGMA-GLOW
+ ICALL REPLACE-SYN?,LAVA,W?ZZZP,W?CRUST
+ EQUAL? HERE,IN-THRIFF,FOREST-EDGE,ON-TRAIL /?CCL5
+ EQUAL? HERE,ON-PEAK \?CND4
+?CCL5: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "The red glow "
+ EQUAL? HERE,IN-THRIFF \?CCL10
+ PRINTI "from the south slowly fades from view"
+ JUMP ?CND8
+?CCL10: PRINTI "of the lava fades, leaving a hard crust underfoot"
+?CND8: PRINT PERIOD
+?CND4: CALL GLOBAL-IN?,FOREST-EDGE,GLYPH
+ ZERO? STACK /?CND11
+ SET 'THRIFF-WON,TRUE-VALUE
+ ICALL2 DEQUEUE,I-CLERIC
+ FSET CLERIC,LIVING
+ SET 'CLERIC-SCRIPT,0
+ FCLEAR CLERIC,SEEN
+ ICALL2 QUEUE,I-THRIFF-WIN
+ ICALL2 QUEUE,I-UNHAPPY-XTREES
+ FSET XTREES,SEEN
+ MOVE RELIQUARY,CLERIC
+ EQUAL? HERE,IN-CHAPEL \?CND13
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "A messenger nymph appears above "
+ ICALL2 THE-PRINT,ALTAR
+ PRINTI ". ""Hooray!"" she cries. """
+ ICALL2 PRINT-TABLE,CHARNAME
+ PRINTI " outfoxed "
+ ICALL2 THE-PRINT,XTREES
+ PRINTR "!"""
+?CND13: FCLEAR CLERIC,NODESC
+ SET 'X,FOREST-EDGE
+ EQUAL? HERE,IN-THRIFF \?CND15
+ SET 'X,HERE
+?CND15: MOVE CLERIC,X
+ MOVE CONGREG,X
+ EQUAL? HERE,X \?CND11
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "A cheering crowd"
+ EQUAL? HERE,IN-THRIFF \?CCL21
+ PRINTI " streams out of "
+ ICALL2 THE-PRINT,CHAPEL
+ JUMP ?CND19
+?CCL21: PRINT STR?617
+ PRINTI "village"
+?CND19: PRINTI ", led by "
+ ICALL2 THE-PRINT,CLERIC
+ PRINT PERIOD
+ RTRUE
+?CND11: EQUAL? HERE,FOREST-EDGE \TRUE
+ ICALL1 SAY-XTREES
+ PRINTI " test the edges of the clearing with their roots"
+ FSET? BFLY,MUNGED \?CND24
+ FSET? BFLY,LIVING \?CND24
+ IN? BFLY,PLAYER /?CCL25
+ IN? BFLY,HERE \?CND24
+?CCL25: PRINTR ", but still appear reluctant to approach you."
+?CND24: PRINTI ". Finding no Glyphs of Warding or other inconveniences, they elect to "
+ ICALL2 XTREES-EAT-YOU,TRUE-VALUE
+ RTRUE
+?CCL3: EQUAL? MAGMA-TIMER,1 \?CCL32
+ PUT TBL,0,W?RED
+ EQUAL? HERE,IN-THRIFF \?CCL35
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "The southern "
+ PRINT STR?618
+ RTRUE
+?CCL35: EQUAL? HERE,FOREST-EDGE,ON-TRAIL,ON-PEAK \FALSE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "The lava's "
+ PRINT STR?618
+ EQUAL? HERE,FOREST-EDGE \TRUE
+ ICALL1 SAY-XTREES
+ PRINTR " shuffle a bit closer to the clearing's edge."
+?CCL32: EQUAL? MAGMA-TIMER,2 \FALSE
+ PUT TBL,0,W?ORANGE
+ EQUAL? HERE,IN-THRIFF \?CCL43
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTR "You watch as the southern glow fades from yellow to orange."
+?CCL43: EQUAL? HERE,FOREST-EDGE,ON-TRAIL,ON-PEAK \FALSE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT TAB
+ PRINTI "The lava's glow fades from yellow to orange as it cools."
+ CRLF
+ EQUAL? HERE,FOREST-EDGE \TRUE
+ ICALL1 SAY-XTREES
+ PRINTR " are keeping well away from the clearing's edge."
+
+
+ .FUNCT SAY-XTREES
+ FSET XTREES,SEEN
+ PRINT TAB
+ ICALL2 CTHE-PRINT,XTREES
+ RTRUE
+
+
+ .FUNCT I-XTREES,X,C
+ CALL GLOBAL-IN?,FOREST-EDGE,GLYPH
+ ZERO? STACK /?CCL3
+ EQUAL? HERE,FOREST-EDGE \FALSE
+ FSET? XTREES,SEEN \?CCL8
+ FCLEAR XTREES,SEEN
+ RFALSE
+?CCL8: RANDOM 100
+ LESS? 50,STACK \FALSE
+ ICALL1 SAY-XTREES
+ RANDOM 100
+ LESS? 50,STACK /?CND10
+ CALL2 PICK-NEXT,CAROLS >X
+ CALL2 PICK-NEXT,HOW-SINGS
+ PRINT STACK
+ PRINT X
+ PRINT PERQ
+ RTRUE
+?CND10: CALL2 PICK-NEXT,XTREE-DOINGS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL3: ZERO? MAGMA-TIMER \FALSE
+ EQUAL? HERE,FOREST-EDGE,IN-THRIFF \?CCL15
+ FSET? BFLY,MUNGED \?CCL15
+ FSET? BFLY,LIVING \?CCL15
+ IN? BFLY,PLAYER /?CTR14
+ IN? BFLY,HERE \?CCL15
+?CTR14: ICALL1 SAY-XTREES
+ PRINTI " shuffle nervously at the edge of the "
+ CALL GLOBAL-IN?,SNOW,HERE
+ ZERO? STACK /?CCL24
+ PRINTB W?CLEARING
+ JUMP ?CND22
+?CCL24: PRINTB W?LAVA
+?CND22: PRINTI ". They"
+ PRINT STR?619
+ RTRUE
+?CCL15: FSET? FOREST-EDGE,MUNGED /?CCL26
+ EQUAL? HERE,FOREST-EDGE \?CND27
+ ICALL1 XTREES-EAT-YOU
+ RTRUE
+?CND27: FSET FOREST-EDGE,MUNGED
+ ICALL NEW-EXIT?,ON-TRAIL,P?EAST,FCONNECT,XTREES-BLOCK
+ ICALL NEW-EXIT?,ON-TRAIL,P?DOWN,FCONNECT,XTREES-BLOCK
+ ICALL NEW-EXIT?,IN-THRIFF,P?SOUTH,FCONNECT,XTREES-BLOCK
+ ICALL NEW-EXIT?,IN-THRIFF,P?UP,FCONNECT,XTREES-BLOCK
+ ICALL REPLACE-GLOBAL?,ON-TRAIL,NULL,XTREES
+ ICALL REPLACE-GLOBAL?,IN-THRIFF,NULL,XTREES
+ EQUAL? HERE,IN-THRIFF,IN-CHAPEL,ON-TRAIL \FALSE
+ ICALL1 XTREES-APPEAR
+ RTRUE
+?CCL26: FSET? IN-THRIFF,MUNGED /FALSE
+ EQUAL? HERE,IN-THRIFF,IN-CHAPEL \?CND33
+ ICALL1 XTREES-EAT-YOU
+ RTRUE
+?CND33: FSET IN-THRIFF,MUNGED
+ ICALL NEW-EXIT?,IN-PASTURE,P?SE,FCONNECT,XTREES-BLOCK
+ ICALL NEW-EXIT?,AT-FALLS,P?SW,FCONNECT,XTREES-BLOCK
+ ICALL REPLACE-GLOBAL?,IN-PASTURE,NULL,XTREES
+ ICALL REPLACE-GLOBAL?,AT-FALLS,NULL,XTREES
+ EQUAL? HERE,IN-PASTURE,AT-FALLS \FALSE
+ ICALL1 XTREES-APPEAR
+ RTRUE
+
+
+ .FUNCT XTREES-BLOCK
+ IN? BFLY,PLAYER \?CND1
+ FSET? BFLY,MUNGED \?CND1
+ ICALL2 CTHE-PRINT,XTREES
+ PRINTI " fidget nervously as you approach, but refuse to stand aside."
+ CRLF
+ RFALSE
+?CND1: PRINT STR?620
+ PRINTD XTREES
+ PRINT PERIOD
+ RFALSE
+
+
+ .FUNCT XTREES-EAT-YOU,X
+ ASSIGNED? 'X /?CND1
+ ICALL1 SAY-XTREES
+?CND1: PRINTI " continue their delayed migration into Thriff, cheerfully trampling everything in their path. This includes you"
+ ICALL1 JIGS-UP
+ RTRUE
+
+
+ .FUNCT XTREES-APPEAR,X
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-THEM-OBJECT,XTREES
+ PRINT TAB
+ EQUAL? HERE,IN-CHAPEL \?CND1
+ PRINT YOU-HEAR
+ PRINTC 97
+ PRINT STR?621
+ PRINTR "outside."
+?CND1: PRINTC 65
+ PRINT STR?621
+ PRINTI "draws your attention to the "
+ SET 'X,W?SOUTH
+ EQUAL? HERE,IN-PASTURE \?CCL5
+ SET 'X,W?SOUTHEAST
+ JUMP ?CND3
+?CCL5: EQUAL? HERE,AT-FALLS \?CCL7
+ SET 'X,W?SOUTHWEST
+ JUMP ?CND3
+?CCL7: EQUAL? HERE,ON-TRAIL \?CND3
+ SET 'X,W?EAST
+?CND3: PRINTB X
+ PRINTI ", where a solid wall of "
+ PRINTD XTREES
+ PRINTR " has completely choked the trail."
+
+
+ .FUNCT I-UNHAPPY-XTREES
+ EQUAL? HERE,FOREST-EDGE \FALSE
+ FSET? XTREES,SEEN \?CCL5
+ FCLEAR XTREES,SEEN
+ RFALSE
+?CCL5: RANDOM 100
+ LESS? 50,STACK \FALSE
+ ICALL1 SAY-XTREES
+ CALL2 PICK-NEXT,SAD-TREES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT I-HOUSEFALL
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK /FALSE
+ FSET? FARM,NODESC \?CND1
+ FCLEAR FARM,NODESC
+ RFALSE
+?CND1: ICALL2 DEQUEUE,I-HOUSEFALL
+ FCLEAR FARMHOUSE,NODESC
+ ZERO? FARM-ROOM /?CND5
+ ICALL1 DROP-FARM
+?CND5: FSET CORBIES,SEEN
+ PRINTI " A movement overhead catches your eye"
+ PRINT PTAB
+ PRINTI "Oh, my. A small farmhouse is falling out of the clouds! You "
+ EQUAL? HERE,FARM-ROOM \?CND7
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-IT-OBJECT,FARMHOUSE
+ PRINTI "dive out of the way just in time to avoid "
+ ICALL1 LUMBER
+ PRINT PERIOD
+ RTRUE
+?CND7: PRINTI "watch it spin as it tumbles earthward, and hear "
+ ICALL1 LUMBER
+ PRINTR " somewhere nearby."
+
+
+ .FUNCT LUMBER
+ PRINT LTHE
+ ICALL2 ITALICIZE,STR?622
+ PRINTI " of splintering lumber"
+ RFALSE
+
+
+ .FUNCT DROP-FARM
+ FCLEAR FARM,NODESC
+ MOVE FARM,FARM-ROOM
+ PUTP FARM-ROOM,P?SDESC,DESCRIBE-FARM-ROOM
+ ICALL REPLACE-GLOBAL?,FARM-ROOM,NULL,FARM-DOOR
+ ICALL REPLACE-GLOBAL?,FARM-ROOM,NULL,FARM-WINDOW
+ ICALL NEW-EXIT?,IN-FARM,P?NORTH,1409,FARM-ROOM,FARM-DOOR
+ ICALL NEW-EXIT?,IN-FARM,P?OUT,1409,FARM-ROOM,FARM-DOOR
+ ICALL NEW-EXIT?,FARM-ROOM,P?SOUTH,1409,IN-FARM,FARM-DOOR
+ ICALL NEW-EXIT?,FARM-ROOM,P?IN,1409,IN-FARM,FARM-DOOR
+ RFALSE
+
+
+ .FUNCT I-IQ
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ PRINT TAB
+ PRINTI "Your forehead tingles oddly for a moment."
+ CRLF
+ ICALL UPDATE-STAT,20,INTELLIGENCE,TRUE-VALUE
+ RTRUE
+
+
+ .FUNCT I-HEAL,STAT,MAX,OLD
+ PRINT TAB
+ PRINTI "Your body is flooded with an indescribable sense of well-being."
+ CRLF
+?PRG1: GET STATS,STAT >OLD
+ GET MAXSTATS,STAT >MAX
+ GRTR? MAX,OLD \?CCL5
+ SUB MAX,OLD
+ ICALL UPDATE-STAT,STACK,STAT
+ JUMP ?CND3
+?CCL5: EQUAL? MAX,OLD \?CND3
+ ICALL UPDATE-STAT,5,STAT,TRUE-VALUE
+?CND3: IGRTR? 'STAT,STRENGTH \?PRG1
+ ICALL1 BMODE-OFF
+ RTRUE
+
+
+ .FUNCT I-MIGHT,MAX,OLD
+ PRINT TAB
+ PRINTI "You feel a surge of tension in your arms and shoulders."
+ CRLF
+ GET STATS,STRENGTH >OLD
+ GET MAXSTATS,STRENGTH >MAX
+ GRTR? MAX,OLD \?CCL3
+ SUB MAX,OLD
+ ICALL UPDATE-STAT,STACK,STRENGTH
+ RTRUE
+?CCL3: EQUAL? MAX,OLD \TRUE
+ ICALL UPDATE-STAT,16,STRENGTH,TRUE-VALUE
+ RTRUE
+
+
+ .FUNCT I-FORGET,ANY,OBJ,LEN
+ FCLEAR GLYPH,SEEN
+ FIRST? ROOMS >OBJ \?CND1
+?PRG3: FCLEAR OBJ,VIEWED
+ NEXT? OBJ >OBJ /?PRG3
+?CND1: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ GET MAGIC-ITEMS,0 >LEN
+?PRG7: GET MAGIC-ITEMS,LEN >OBJ
+ FSET? OBJ,IDENTIFIED \?CND9
+ INC 'ANY
+ FCLEAR OBJ,IDENTIFIED
+ FCLEAR OBJ,PROPER
+?CND9: DLESS? 'LEN,1 \?PRG7
+ PRINT TAB
+ PRINTR "An uneasy feeling creeps into your soul."
+
+
+ .FUNCT I-DEATH
+ PRINT TAB
+ PRINTI "A sickening bile rises in your throat, and sweat breaks out on your forehead as your pulse races out of control. Moments later, you experience the combined effects of coronary arrest, catastrophic respiratory collapse and rickets"
+ ICALL1 JIGS-UP
+ RTRUE
+
+
+ .FUNCT I-CAKE
+ IN? CAKE,IN-GURTH \FALSE
+ REMOVE CAKE
+ EQUAL? HERE,IN-GURTH \FALSE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-IT-OBJECT,NOT-HERE-OBJECT
+ PRINT TAB
+ PRINTI "An alley cat races between your legs, snatches "
+ ICALL2 THE-PRINT,CAKE
+ PRINTI " and"
+ PRINT STR?501
+ PRINTR "crowd."
+
+
+ .FUNCT I-QUAKE
+ PRINT TAB
+ IGRTR? 'QUAKE-TIMER,4 \?CCL3
+ ICALL1 ENDING
+ RTRUE
+?CCL3: EQUAL? QUAKE-TIMER,4 \?CCL5
+ ICALL2 CTHE-PRINT,GROUND
+ PRINTR " heaves sharply to the right, and bits of broken rock shower down on your head. One more like that..."
+?CCL5: EQUAL? QUAKE-TIMER,3 \?CCL7
+ PRINTR "The rumble grows to a roar as a mighty earthquake rocks the caverns to their very roots."
+?CCL7: EQUAL? QUAKE-TIMER,2 \?CCL9
+ PRINTR "Another tremor wracks the earth, and a deep, ominous rumble begins to swell around you."
+?CCL9: ICALL2 CTHE-PRINT,GROUND
+ PRINTR " underfoot trembles for a moment."
+
+ .ENDI
diff --git a/misc.zap b/misc.zap
new file mode 100644
index 0000000..3345778
--- /dev/null
+++ b/misc.zap
@@ -0,0 +1,3720 @@
+
+
+ .FUNCT GO
+START::
+
+?FCN: SET 'HERE,HILLTOP
+ MOVE PLAYER,HERE
+ SET 'WINNER,PLAYER
+ SET 'LIT?,TRUE-VALUE
+ ICALL1 INITVARS
+ ICALL1 STARTUP
+ ICALL1 SETUP-CHARACTER
+ RANDOM 8
+ SUB STACK,1 >WINDIR
+ ICALL2 QUEUE,I-BREEZE
+ ICALL1 V-REFRESH
+ CRLF
+ ICALL1 V-LOOK
+ ICALL1 DO-MAIN-LOOP
+ JUMP ?FCN
+
+
+ .FUNCT DO-MAIN-LOOP,X
+?PRG1: CALL1 MAIN-LOOP >X
+ JUMP ?PRG1
+
+
+ .FUNCT MAIN-LOOP,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,X
+ SET 'CNT,0
+ SET 'OBJ,FALSE-VALUE
+ SET 'PTBL,TRUE-VALUE
+ EQUAL? HERE,QCONTEXT-ROOM /?CND1
+ SET 'QCONTEXT,FALSE-VALUE
+ SET 'QCONTEXT-ROOM,FALSE-VALUE
+?CND1: CALL1 PARSER >P-WON
+ ZERO? P-WON /?CCL5
+ GET P-PRSI,P-MATCHLEN >ICNT
+ GET P-PRSO,P-MATCHLEN >OCNT
+ ZERO? P-IT-OBJECT /?CND6
+ CALL2 ACCESSIBLE?,P-IT-OBJECT
+ ZERO? STACK /?CND6
+ SET 'TMP,FALSE-VALUE
+?PRG10: IGRTR? 'CNT,ICNT /?REP11
+ GET P-PRSI,CNT
+ EQUAL? STACK,IT \?PRG10
+ PUT P-PRSI,CNT,P-IT-OBJECT
+ SET 'TMP,TRUE-VALUE
+?REP11: ZERO? TMP \?CND16
+ SET 'CNT,0
+?PRG18: IGRTR? 'CNT,OCNT /?CND16
+ GET P-PRSO,CNT
+ EQUAL? STACK,IT \?PRG18
+ PUT P-PRSO,CNT,P-IT-OBJECT
+?CND16: SET 'CNT,0
+?CND6: SET 'NUM,1
+ ZERO? OCNT \?CCL26
+ SET 'NUM,0
+ JUMP ?CND24
+?CCL26: GRTR? OCNT,1 \?CCL28
+ SET 'TBL,P-PRSO
+ SET 'OBJ,FALSE-VALUE
+ ZERO? ICNT /?CND29
+ GET P-PRSI,1 >OBJ
+?CND29: SET 'NUM,OCNT
+ JUMP ?CND24
+?CCL28: GRTR? ICNT,1 \?CND24
+ SET 'PTBL,FALSE-VALUE
+ SET 'TBL,P-PRSI
+ GET P-PRSO,1 >OBJ
+ SET 'NUM,ICNT
+?CND24: ZERO? OBJ \?CND32
+ EQUAL? ICNT,1 \?CND32
+ GET P-PRSI,1 >OBJ
+?CND32: EQUAL? PRSA,V?WALK \?CCL38
+ CALL PERFORM,PRSA,PRSO >V
+ JUMP ?CND36
+?CCL38: ZERO? NUM \?CCL40
+ GETB P-SYNTAX,P-SBITS
+ BAND STACK,P-SONUMS
+ ZERO? STACK \?CCL43
+ CALL2 PERFORM,PRSA >V
+ SET 'PRSO,FALSE-VALUE
+ JUMP ?CND36
+?CCL43: ZERO? LIT? \?CCL45
+ ICALL1 PCLEAR
+ ICALL1 TOO-DARK
+ JUMP ?CND36
+?CCL45: ICALL1 PCLEAR
+ PRINTI "[There isn't anything to "
+ GET P-ITBL,P-VERBN >TMP
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL48
+ PRINTI "talk to"
+ JUMP ?CND46
+?CCL48: ZERO? P-MERGED \?CTR49
+ ZERO? P-OFLAG /?CCL50
+?CTR49: GET TMP,0
+ PRINTB STACK
+ JUMP ?CND46
+?CCL50: GETB TMP,3 >X
+ GETB TMP,2
+ ICALL WORD-PRINT,STACK,X
+?CND46: PRINTI ".]"
+ CRLF
+ SET 'V,FALSE-VALUE
+ JUMP ?CND36
+?CCL40: SET 'X,0
+ SET 'P-MULT?,FALSE-VALUE
+ GRTR? NUM,1 \?CND53
+ SET 'P-MULT?,TRUE-VALUE
+?CND53: SET 'TMP,FALSE-VALUE
+?PRG55: IGRTR? 'CNT,NUM \?CND57
+ GRTR? X,0 \?CCL61
+ PRINTI "[The "
+ EQUAL? X,NUM /?CND62
+ PRINTI "other "
+?CND62: PRINTI "object"
+ EQUAL? X,1 /?CND64
+ PRINTC 115
+?CND64: PRINTI " that you mentioned "
+ EQUAL? X,1 /?CCL68
+ PRINTI "are"
+ JUMP ?CND66
+?CCL68: PRINTI "is"
+?CND66: PRINTI "n't here.]"
+ CRLF
+ JUMP ?CND36
+?CCL61: ZERO? TMP \?CND36
+ ICALL1 REFERRING
+ JUMP ?CND36
+?CND57: ZERO? PTBL /?CCL72
+ GET P-PRSO,CNT >OBJ1
+ JUMP ?CND70
+?CCL72: GET P-PRSI,CNT >OBJ1
+?CND70: GRTR? NUM,1 /?CCL74
+ GET P-ITBL,P-NC1
+ GET STACK,0
+ EQUAL? STACK,W?ALL,W?EVERYTHING \?CND73
+?CCL74: EQUAL? OBJ1,NOT-HERE-OBJECT \?CCL79
+ INC 'X
+ JUMP ?PRG55
+?CCL79: EQUAL? P-GETFLAGS,P-ALL \?CCL81
+ CALL DONT-ALL?,OBJ1,OBJ
+ ZERO? STACK \?PRG55
+?CCL81: CALL2 ACCESSIBLE?,OBJ1
+ ZERO? STACK /?PRG55
+ EQUAL? OBJ1,PLAYER /?PRG55
+ EQUAL? OBJ1,IT \?CCL89
+ FSET? P-IT-OBJECT,NOARTICLE /?CND90
+ PRINT XTHE
+?CND90: ICALL2 DPRINT,P-IT-OBJECT
+ JUMP ?CND87
+?CCL89: FSET? OBJ1,NOARTICLE /?CND92
+ PRINT XTHE
+?CND92: ICALL2 DPRINT,OBJ1
+?CND87: PRINTI ": "
+?CND73: SET 'TMP,TRUE-VALUE
+ SET 'PRSO,OBJ1
+ SET 'PRSI,OBJ
+ ZERO? PTBL \?CND94
+ SET 'PRSO,OBJ
+ SET 'PRSI,OBJ1
+?CND94: SET 'PSEUDO-PRSO?,FALSE-VALUE
+ EQUAL? PRSO,PSEUDO-OBJECT \?CND96
+ SET 'PSEUDO-PRSO?,TRUE-VALUE
+?CND96: CALL PERFORM,PRSA,PRSO,PRSI >V
+ EQUAL? V,M-FATAL \?PRG55
+?CND36: EQUAL? V,M-FATAL \?CND3
+ SET 'P-CONT,FALSE-VALUE
+ JUMP ?CND3
+?CCL5: SET 'P-CONT,FALSE-VALUE
+?CND3: ZERO? P-WON /?CND102
+ EQUAL? V,M-FATAL /?CND102
+ INTBL? PRSA,GAME-VERBS,NGVERBS >X /?CND102
+ CALL1 CLOCKER >V
+?CND102: SET 'PRSA,FALSE-VALUE
+ SET 'PRSO,FALSE-VALUE
+ SET 'PRSI,FALSE-VALUE
+ RFALSE
+
+
+ .FUNCT DONT-ALL?,O,I,L,X
+ LOC O >L
+ ZERO? L /TRUE
+ EQUAL? O,I /TRUE
+ EQUAL? PRSA,V?TAKE \?CCL7
+ EQUAL? L,WINNER /TRUE
+ ZERO? LIT? \?CCL12
+ IN? L,WINNER \TRUE
+?CCL12: FSET? O,NOALL /TRUE
+ FSET? O,TAKEABLE /?CCL18
+ FSET? O,TRYTAKE \TRUE
+?CCL18: FSET? L,CONTAINER \?CCL22
+ FSET? L,OPENED \TRUE
+?CCL22: ZERO? I /?CCL26
+ EQUAL? L,I \TRUE
+ CALL2 SEE-INSIDE?,I
+ ZERO? STACK /TRUE
+ RFALSE
+?CCL26: LOC PLAYER
+ EQUAL? L,STACK /FALSE
+ FSET? L,TAKEABLE /TRUE
+ CALL2 SEE-INSIDE?,L
+ ZERO? STACK /TRUE
+ RFALSE
+?CCL7: INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ FSET? O,WORN /TRUE
+ FSET? O,WIELDED /TRUE
+ EQUAL? L,WINNER /FALSE
+ RTRUE
+
+
+ .FUNCT DEQUEUE,RTN
+ CALL2 QUEUED?,RTN >RTN
+ ZERO? RTN /FALSE
+ COPYT RTN,0,C-INTLEN
+ RFALSE
+
+
+ .FUNCT QUEUED?,RTN,TBL,LEN
+ ADD C-TABLE,C-INTS >TBL
+ SUB C-TABLE+100,TBL
+ DIV STACK,C-INTLEN >LEN
+ LESS? LEN,1 /FALSE
+ INTBL? RTN,TBL,LEN,132 >RTN \FALSE
+ GET RTN,C-TICK
+ ZERO? STACK /FALSE
+ RETURN RTN
+
+
+ .FUNCT QUEUE,RTN,TICK,C,E,INT
+ ASSIGNED? 'TICK /?CND1
+ SET 'TICK,-1
+?CND1: SET 'E,C-TABLE+100
+ ADD C-TABLE,C-INTS >C
+?PRG3: EQUAL? C,E \?CCL7
+ ZERO? INT /?CCL10
+ SET 'C,INT
+ JUMP ?CND8
+?CCL10: LESS? C-INTS,C-INTLEN /TRUE
+ SUB C-INTS,C-INTLEN >C-INTS
+ ADD C-TABLE,C-INTS >INT
+?CND8: PUT INT,C-RTN,RTN
+ JUMP ?REP4
+?CCL7: GET C,C-RTN
+ EQUAL? STACK,RTN \?CCL14
+ SET 'INT,C
+?REP4: GRTR? INT,CLOCK-HAND \?CND16
+ ADD TICK,3
+ SUB 0,STACK >TICK
+?CND16: PUT INT,C-TICK,TICK
+ RETURN INT
+?CCL14: GET C,C-RTN
+ ZERO? STACK \?CND5
+ SET 'INT,C
+?CND5: ADD C,C-INTLEN >C
+ JUMP ?PRG3
+
+
+ .FUNCT CLOCKER,FLG,Q?,E,TICK,RTN,X,OSTAT,NSTAT,MAX,DELTA
+ ZERO? CLOCK-WAIT? /?CND1
+ SET 'CLOCK-WAIT?,FALSE-VALUE
+ RFALSE
+?CND1: ADD C-TABLE,C-INTS >CLOCK-HAND
+ SET 'E,C-TABLE+100
+?PRG3: EQUAL? CLOCK-HAND,E \?CCL7
+ INC 'MOVES
+ CALL1 REFRESH-STATS?
+ ZERO? STACK /?REP4
+ SET 'FLG,TRUE-VALUE
+ RETURN FLG
+?CCL7: GET CLOCK-HAND,C-RTN
+ ZERO? STACK /?CND5
+ GET CLOCK-HAND,C-TICK >TICK
+ LESS? TICK,-1 \?CCL13
+ SUB 0,TICK
+ SUB STACK,3
+ PUT CLOCK-HAND,C-TICK,STACK
+ SET 'Q?,CLOCK-HAND
+ JUMP ?CND5
+?CCL13: ZERO? TICK /?CND5
+ GRTR? TICK,0 \?CND15
+ DEC 'TICK
+ PUT CLOCK-HAND,C-TICK,TICK
+?CND15: ZERO? TICK /?CND17
+ SET 'Q?,CLOCK-HAND
+?CND17: GRTR? TICK,0 /?CND5
+ GET CLOCK-HAND,C-RTN >RTN
+ ZERO? TICK \?CND21
+ COPYT CLOCK-HAND,0,C-INTLEN
+?CND21: CALL RTN >X
+ ZERO? X /?CND23
+ SET 'FLG,TRUE-VALUE
+?CND23: ZERO? Q? \?CND5
+ GET CLOCK-HAND,C-RTN
+ ZERO? STACK /?CND5
+ SET 'Q?,TRUE-VALUE
+?CND5: ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
+ ZERO? Q? \?PRG3
+ ADD C-INTS,C-INTLEN >C-INTS
+ JUMP ?PRG3
+?REP4: RETURN FLG
+
+
+ .FUNCT REFRESH-STATS?,CNT,ANY,STAT,OSTAT,NSTAT,DELTA,MAX,RATE
+ SET 'RATE,NORMAL-RATE
+ IN? SCABBARD,PLAYER \?CND1
+ FSET? SCABBARD,WORN \?CND1
+ FSET? SCABBARD,NEUTRALIZED /?CND1
+ SET 'RATE,BLESSED-RATE
+?CND1: SET 'STAT,ENDURANCE
+?PRG6: GET STATS,STAT >OSTAT
+ GET MAXSTATS,STAT >MAX
+ EQUAL? STAT,INTELLIGENCE \?CCL9
+ CALL2 WEARING-MAGIC?,HELM
+ ZERO? STACK \?CND8
+?CCL9: EQUAL? NO-REFRESH,STAT \?CCL13
+ SET 'NO-REFRESH,-1
+ JUMP ?CND8
+?CCL13: EQUAL? OSTAT,MAX /?CND8
+ MUL RATE,MAX
+ DIV STACK,100 >DELTA
+ LESS? DELTA,1 \?CND15
+ SET 'DELTA,1
+?CND15: GRTR? OSTAT,MAX \?CCL19
+ SUB OSTAT,DELTA >NSTAT
+ LESS? NSTAT,MAX \?CND17
+ SET 'NSTAT,MAX
+ JUMP ?CND17
+?CCL19: ADD OSTAT,DELTA >NSTAT
+ GRTR? NSTAT,MAX \?CND17
+ SET 'NSTAT,MAX
+?CND17: PUT STATS,STAT,NSTAT
+ ZERO? DMODE /?CND24
+ EQUAL? IN-DBOX,SHOWING-STATS /?CCL26
+ ZERO? BMODE /?CND24
+ ZERO? STAT \?CND24
+?CCL26: ICALL2 SHOW-STAT,STAT
+?CND24: INC 'ANY
+ EQUAL? NSTAT,MAX \?CND8
+ INC 'CNT
+ PUTB NEW-STATS,CNT,STAT
+?CND8: IGRTR? 'STAT,LUCK \?PRG6
+ ZERO? ANY /FALSE
+ ZERO? DMODE \?CCL39
+ ICALL1 UPPER-SLINE
+ JUMP ?CND35
+?CCL39: ZERO? VT220 \?CND35
+ ICALL1 APPLE-STATS
+?CND35: ZERO? CNT /FALSE
+ ZERO? SAY-STAT /FALSE
+ EQUAL? HOST,MACINTOSH /?CND45
+ HLIGHT H-BOLD
+?CND45: PRINT TAB
+ PRINTI "[Your "
+ SET 'ANY,CNT
+?PRG47: GETB NEW-STATS,ANY
+ GET STAT-NAMES,STACK
+ PRINT STACK
+ DLESS? 'ANY,1 /?REP48
+ EQUAL? ANY,1 \?CCL53
+ PRINT AND
+ JUMP ?PRG47
+?CCL53: PRINTI ", "
+ JUMP ?PRG47
+?REP48: PRINTC SP
+ GRTR? CNT,1 \?CCL56
+ PRINTB W?ARE
+ JUMP ?CND54
+?CCL56: PRINTB W?IS
+?CND54: PRINTI " back to normal.]"
+ CRLF
+ HLIGHT H-NORMAL
+ SOUND S-BEEP
+ ZERO? AUTO /TRUE
+ GETB NEW-STATS,1
+ ZERO? STACK \TRUE
+ ICALL1 BMODE-OFF
+ RTRUE
+
+
+ .FUNCT INITVARS,X
+ GETB 0,30 >HOST
+ GETB 0,1
+ BAND STACK,1 >COLORS?
+ GET 0,8
+ BAND STACK,8 >GRAPHICS?
+ SET 'BAR-RES,8
+ EQUAL? HOST,MACINTOSH \?CND1
+ PUTB TCHARS,FIRST-MAC-ARROW,MAC-UP-ARROW
+ PUTB TCHARS,27,MAC-DOWN-ARROW
+ SET 'BAR-RES,6
+?CND1: HLIGHT H-MONO
+ GETB 0,38 >CWIDTH
+ GETB 0,39 >CHEIGHT
+ FONT F-NEWFONT >X
+ FONT F-DEFAULT >X
+ HLIGHT H-NORMAL
+ GET 0,17 >X
+ DIV X,CWIDTH >WIDTH
+ GRTR? WIDTH,80 \?CND3
+ SET 'WIDTH,80
+?CND3: GET 0,18 >X
+ DIV X,CHEIGHT >HEIGHT
+ SUB WIDTH,20 >DWIDTH
+ SET 'BOXWIDTH,DWIDTH
+ EQUAL? HOST,APPLE-2C \?CND5
+ DEC 'BOXWIDTH
+?CND5: SUB WIDTH,MWIDTH
+ SUB STACK,1 >MOUSEDGE
+ DIV STATMAX,BAR-RES
+ ADD STACK,1 >SWIDTH
+ ADD LABEL-WIDTH,SWIDTH
+ ADD STACK,5 >BARWIDTH
+ SET 'CAN-UNDO,0
+ SET 'STAT-ROUTINE,RAWBAR
+ SET 'VT220,TRUE-VALUE
+ SET 'MAX-DHEIGHT,NORMAL-DHEIGHT
+ SET 'DHEIGHT,MAX-DHEIGHT
+ SET 'MAP-ROUTINE,CLOSE-MAP
+ ZERO? VT100 \?CCL8
+ EQUAL? HOST,APPLE-2E,APPLE-2C /?CCL8
+ ZERO? GRAPHICS? \FALSE
+ EQUAL? HOST,IBM \FALSE
+?CCL8: ICALL1 SETUP-APPLE-MODE
+ RFALSE
+
+
+ .FUNCT SETUP-APPLE-MODE
+ SET 'VT220,FALSE-VALUE
+ SET 'GRAPHICS?,FALSE-VALUE
+ SET 'STAT-ROUTINE,BAR-NUMBER
+ SET 'MAX-DHEIGHT,8
+ SET 'MAP-ROUTINE,FAR-MAP
+ SET 'DHEIGHT,MAX-DHEIGHT
+ RFALSE
+
+
+ .FUNCT CENTER,Y,X
+ SUB WIDTH,X
+ DIV STACK,2
+ ICALL DO-CURSET,Y,STACK
+ RFALSE
+
+
+ .FUNCT DO-CURSET,Y,X
+ EQUAL? 1,CWIDTH,CHEIGHT /?CND1
+ DEC 'X
+ MUL X,CWIDTH >X
+ INC 'X
+ DEC 'Y
+ MUL Y,CHEIGHT >Y
+ INC 'Y
+?CND1: CURSET Y,X
+ RFALSE
+
+
+ .FUNCT TO-TOP-WINDOW,X
+ FONT F-DEFAULT >X
+ SCREEN S-WINDOW
+ BUFOUT FALSE-VALUE
+ HLIGHT H-NORMAL
+ HLIGHT H-MONO
+ COLOR GCOLOR,BGND
+ RFALSE
+
+
+ .FUNCT TO-BOTTOM-WINDOW,X
+ FONT F-DEFAULT >X
+ SCREEN S-TEXT
+ BUFOUT TRUE-VALUE
+ HLIGHT H-NORMAL
+ COLOR FORE,BGND
+ RFALSE
+
+
+ .FUNCT V-REFRESH,REDGE,X
+ GET 0,8 >X
+ BAND X,65531
+ PUT 0,8,STACK
+ SET 'OLD-HERE,FALSE-VALUE
+ SET 'P-WALK-DIR,FALSE-VALUE
+ COLOR FORE,BGND
+ CLEAR -1
+ ZERO? DMODE \?CND1
+ SPLIT 2
+ ICALL1 TO-BOTTOM-WINDOW
+ RTRUE
+?CND1: SET 'NEW-DBOX,IN-DBOX
+ SPLIT 12
+ ZERO? VT220 \?CND3
+ ICALL1 APPLE-STATS
+ EQUAL? HOST,APPLE-2C \?CCL7
+ ICALL1 2C-BOX
+ RTRUE
+?CCL7: EQUAL? HOST,IBM \TRUE
+ ICALL1 IBM-BOX
+ RTRUE
+?CND3: ICALL1 TO-TOP-WINDOW
+ FONT F-NEWFONT >X
+ SUB WIDTH,MWIDTH
+ SUB STACK,1 >REDGE
+ ICALL DO-CURSET,2,1
+ PRINTC TLC
+ SET 'X,REDGE
+?PRG9: PRINTC TOP
+ DLESS? 'X,3 \?PRG9
+ PRINTC TRC
+ ICALL DO-CURSET,12,1
+ PRINTC BLC
+ SET 'X,REDGE
+?PRG13: PRINTC BOT
+ DLESS? 'X,3 \?PRG13
+ PRINTC BRC
+ SET 'X,3
+?PRG17: ICALL DO-CURSET,X,1
+ PRINTC RSID
+ ICALL DO-CURSET,X,REDGE
+ PRINTC LSID
+ IGRTR? 'X,11 \?PRG17
+ SET 'DHEIGHT,MAX-DHEIGHT
+ ICALL1 TO-BOTTOM-WINDOW
+ EQUAL? PRIOR,SHOWING-STATS \?CCL23
+ ICALL1 SHOW-RANK
+ ICALL1 DISPLAY-STATS
+ RTRUE
+?CCL23: ZERO? BMODE /TRUE
+ ICALL1 BATTLE-MODE-ON
+ RTRUE
+
+
+ .FUNCT IBM-BOX,REDGE,X
+ ICALL1 TO-TOP-WINDOW
+ FONT F-NEWFONT >X
+ SUB WIDTH,MWIDTH
+ SUB STACK,1 >REDGE
+ CURSET 3,1
+ PRINTC IBM-TLC
+ SET 'X,REDGE
+?PRG1: PRINTC IBM-HORZ
+ DLESS? 'X,3 \?PRG1
+ PRINTC IBM-TRC
+ ICALL DO-CURSET,12,1
+ PRINTC IBM-BLC
+ SET 'X,REDGE
+?PRG5: PRINTC IBM-HORZ
+ DLESS? 'X,3 \?PRG5
+ PRINTC IBM-BRC
+ SET 'X,4
+?PRG9: ICALL DO-CURSET,X,1
+ PRINTC IBM-VERT
+ ICALL DO-CURSET,X,REDGE
+ PRINTC IBM-VERT
+ IGRTR? 'X,11 \?PRG9
+ ICALL1 TO-BOTTOM-WINDOW
+ RTRUE
+
+
+ .FUNCT 2C-BOX,CNT,X
+ ICALL1 TO-TOP-WINDOW
+ FONT F-NEWFONT >X
+ SUB WIDTH,MWIDTH
+ SUB STACK,2 >X
+ SET 'CNT,2
+ CURSET 12,2
+?PRG1: PRINTC APPLE-HORZ
+ IGRTR? 'CNT,X \?PRG1
+ SET 'X,1
+?PRG5: CURSET X,1
+ PRINTC APPLE-RIGHT
+ CURSET X,CNT
+ PRINTC APPLE-LEFT
+ IGRTR? 'X,11 \?PRG5
+ ICALL1 TO-BOTTOM-WINDOW
+ RTRUE
+
+
+ .FUNCT DISPLAY-PLACE,DIR,LEN,X,DEST,END
+ GETB ROOMS-MAPPED,0 >LEN
+ ZERO? LEN /?CND1
+ ZERO? OLD-HERE /?CND1
+ INTBL? OLD-HERE,ROOMS-MAPPED+1,LEN,1 >DEST \?CND1
+ ADD ROOMS-MAPPED,LEN >END
+ LESS? DEST,END \?CND5
+ SUB END,DEST
+ SUB 0,STACK >X
+ ADD DEST,1
+ COPYT STACK,DEST,X
+?CND5: SUB LEN,1
+ PUTB ROOMS-MAPPED,0,STACK
+?CND1: ICALL1 SETUP-SLINE
+ ICALL1 SAY-HERE
+ ICALL1 CENTER-SLINE
+ ICALL1 SHOW-SLINE
+ EQUAL? P-WALK-DIR,FALSE-VALUE,P?UP,P?DOWN /?CTR8
+ EQUAL? P-WALK-DIR,P?IN,P?OUT \?PRG12
+?CTR8: ICALL1 NEW-MAP
+ JUMP ?CND7
+?PRG12: GETB PDIR-LIST,DIR
+ EQUAL? P-WALK-DIR,STACK \?CND14
+ ADD DIR,4 >X
+ GRTR? X,I-NW \?CND16
+ SUB X,8 >X
+?CND16: GETB PDIR-LIST,X
+ GETP HERE,STACK >LEN
+ ZERO? LEN \?CND18
+ ICALL1 NEW-MAP
+ JUMP ?CND7
+?CND18: GET LEN,XTYPE
+ BAND STACK,127 >LEN
+ INC 'LEN
+ GET YOFFS,DIR >X
+ EQUAL? MAP-ROUTINE,CLOSE-MAP \?CND20
+ ADD X,X >X
+?CND20: MUL X,LEN >X
+ ADD MAPY,X >MAPY
+ GET XOFFS,DIR >X
+ EQUAL? MAP-ROUTINE,CLOSE-MAP \?CND22
+ ADD X,X >X
+?CND22: MUL X,LEN >X
+ ADD MAPX,X >MAPX
+ LESS? MAPY,1 /?CCL25
+ GRTR? MAPY,9 /?CCL25
+ LESS? MAPX,1 /?CCL25
+ GRTR? MAPX,15 \?CND24
+?CCL25: ICALL1 NEW-MAP
+ JUMP ?CND7
+?CND24: ICALL1 DRAW-MAP
+ JUMP ?CND7
+?CND14: IGRTR? 'DIR,I-NW \?PRG12
+?CND7: ICALL1 SHOW-MAP
+ ZERO? DMODE /?CND32
+ EQUAL? PRIOR,0,SHOWING-ROOM \?CND32
+ SET 'DBOX-TOP,0
+ ICALL1 UPDATE-ROOMDESC
+?CND32: SET 'OLD-HERE,HERE
+ RTRUE
+
+
+ .FUNCT REFRESH-MAP,NEW
+ ASSIGNED? 'NEW /?CND1
+ SET 'NEW,TRUE-VALUE
+?CND1: ZERO? DMODE \?CND3
+ ICALL1 LOWER-SLINE
+ RFALSE
+?CND3: SET 'SAME-COORDS,NEW
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL1 NEW-MAP
+ ICALL1 SHOW-MAP
+ RFALSE
+
+
+ .FUNCT SHOW-MAP,X
+ ICALL1 TO-TOP-WINDOW
+ ZERO? VT220 /?CND1
+ FONT F-NEWFONT >X
+?CND1: SUB WIDTH,MWIDTH
+ ICALL DO-CURSET,1,STACK
+ PRINTT MAP,MWIDTH,MHEIGHT
+ ICALL1 TO-BOTTOM-WINDOW
+ RFALSE
+
+
+ .FUNCT SHOW-RANK,RIGHT-EDGE,LEN,X
+ ASSIGNED? 'RIGHT-EDGE /?CND1
+ SET 'RIGHT-EDGE,DWIDTH
+?CND1: ICALL1 SETUP-SLINE
+ PRINTC SP
+ ICALL2 PRINT-TABLE,CHARNAME
+ DIROUT D-TABLE-OFF
+ GET AUX-TABLE,0 >LEN
+ ADD AUX-TABLE,2
+ COPYT STACK,SLINE,LEN
+ PUT AUX-TABLE,0,0
+ DIROUT D-TABLE-ON,AUX-TABLE
+ ICALL1 ANNOUNCE-RANK
+ PRINTC SP
+ DIROUT D-TABLE-OFF
+ GET AUX-TABLE,0 >LEN
+ SUB RIGHT-EDGE,LEN
+ ADD SLINE,STACK >X
+ ADD AUX-TABLE,2
+ COPYT STACK,X,LEN
+ ICALL SHOW-SLINE,1,RIGHT-EDGE
+ RTRUE
+
+
+ .FUNCT ANNOUNCE-RANK,LEVEL,STAT
+ GET STATS,EXPERIENCE >STAT
+ PRINTI "Level "
+?PRG1: GET THRESHOLDS,LEVEL
+ LESS? STAT,STACK /?REP2
+ IGRTR? 'LEVEL,MAX-LEVEL \?PRG1
+ SET 'LEVEL,0
+ PUT STATS,EXPERIENCE,0
+ IGRTR? 'RANK,2 \?REP2
+ SET 'RANK,2
+?REP2: PRINTN LEVEL
+ PRINTC SP
+ FSET? PLAYER,FEMALE \?CCL11
+ PRINTI "Fem"
+ JUMP ?CND9
+?CCL11: PRINTC 77
+?CND9: PRINTI "ale "
+ GET RANK-NAMES,RANK
+ PRINT STACK
+ RETURN LEVEL
+
+
+ .FUNCT SETUP-SLINE
+ PUTB SLINE,0,SP
+ COPYT SLINE,SLINE+1,-81
+ PUT AUX-TABLE,0,0
+ DIROUT D-TABLE-ON,AUX-TABLE
+ RFALSE
+
+
+ .FUNCT CENTER-SLINE,X,LEN
+ DIROUT D-TABLE-OFF
+ GET AUX-TABLE,0 >LEN
+ SUB DWIDTH,LEN
+ DIV STACK,2
+ ADD SLINE,STACK >X
+ ADD AUX-TABLE,2
+ COPYT STACK,X,LEN
+ RFALSE
+
+
+ .FUNCT SHOW-SLINE,Y,RIGHT-EDGE,X
+ ASSIGNED? 'Y /?CND1
+ SET 'Y,1
+?CND1: ASSIGNED? 'RIGHT-EDGE /?CND3
+ SET 'RIGHT-EDGE,DWIDTH
+?CND3: ICALL1 TO-TOP-WINDOW
+ ICALL DO-CURSET,Y,1
+ EQUAL? RIGHT-EDGE,WIDTH /?CND5
+ ZERO? VT220 /?CCL8
+ FONT F-NEWFONT >X
+ PRINTC 58
+ FONT F-DEFAULT >X
+ JUMP ?CND5
+?CCL8: EQUAL? HOST,APPLE-2C \?CCL10
+ FONT F-NEWFONT >X
+ PRINTC APPLE-RIGHT
+ FONT F-DEFAULT >X
+ JUMP ?CND5
+?CCL10: PRINTC SP
+?CND5: HLIGHT H-INVERSE
+ PRINTT SLINE,RIGHT-EDGE
+ HLIGHT H-NORMAL
+ HLIGHT H-MONO
+ EQUAL? RIGHT-EDGE,WIDTH /?CND11
+ ZERO? VT220 /?CCL14
+ FONT F-NEWFONT >X
+ PRINTC 57
+ FONT F-DEFAULT >X
+ JUMP ?CND11
+?CCL14: EQUAL? HOST,APPLE-2C \?CCL16
+ FONT F-NEWFONT >X
+ PRINTC APPLE-LEFT
+ FONT F-DEFAULT >X
+ JUMP ?CND11
+?CCL16: PRINTC SP
+?CND11: ICALL1 TO-BOTTOM-WINDOW
+ RFALSE
+
+
+ .FUNCT SAY-HERE,X
+ EQUAL? HERE,DEATH /?CND1
+ ZERO? LIT? \?CND1
+ PRINTI "Darkness"
+ RTRUE
+?CND1: ICALL2 DPRINT,HERE
+ LOC PLAYER >X
+ FSET? X,VEHICLE \TRUE
+ PRINTC COMMA
+ EQUAL? X,SADDLE \?CND6
+ IN? SADDLE,DACT \?CND6
+ PRINT SON
+ ICALL2 PRINTA,DACT
+ RTRUE
+?CND6: ICALL2 ON-IN,X
+ RTRUE
+
+
+ .FUNCT PRINT-SPACES,N
+?PRG1: DLESS? 'N,0 /TRUE
+ PRINTC SP
+ JUMP ?PRG1
+
+
+ .FUNCT NEW-MAP,TBL,X
+ ZERO? SAME-COORDS /?CCL3
+ SET 'SAME-COORDS,FALSE-VALUE
+ JUMP ?CND1
+?CCL3: SET 'MAPX,CENTERX
+ SET 'MAPY,CENTERY
+ GETPT HERE,P?COORDS >TBL
+ ZERO? TBL /?CND1
+ GETB TBL,0 >X
+ ZERO? X /?CND6
+ SET 'MAPX,X
+?CND6: GETB TBL,1 >X
+ ZERO? X /?CND1
+ SET 'MAPY,X
+?CND1: ICALL1 DRAW-MAP
+ RTRUE
+
+
+ .FUNCT DRAW-MAP
+ COPYT ROOMS-MAPPED,0,ROOMS-MAPPED-LENGTH
+ PUTB MAP,0,SP
+ COPYT MAP,MAP+1,-186
+ ICALL MAP-ROUTINE,HERE,MAPY,MAPX
+ RFALSE
+
+
+ .FUNCT CLOSE-MAP,RM,Y,X,DIR,TBL,CHAR,TYPE,LEN,DEST,NY,NX,YOFF,XOFF,CTBL
+ GETB ROOMS-MAPPED,0 >LEN
+ ZERO? LEN /?CCL2
+ INTBL? RM,ROOMS-MAPPED+1,LEN,1 >CHAR /?CND1
+?CCL2: IGRTR? 'LEN,45 /TRUE
+ PUTB ROOMS-MAPPED,LEN,RM
+ PUTB ROOMS-MAPPED,0,LEN
+?CND1: GRTR? Y,-1 \?CND7
+ LESS? Y,MHEIGHT \?CND7
+ GRTR? X,-1 \?CND7
+ LESS? X,MWIDTH \?CND7
+ ZERO? VT220 /?CCL15
+ CALL2 SMART-CHAR?,RM >CHAR
+ JUMP ?CND13
+?CCL15: CALL2 DUMB-CHAR?,RM >CHAR
+?CND13: MUL Y,MWIDTH
+ ADD MAP,STACK
+ PUTB STACK,X,CHAR
+?CND7: FSET RM,MAPPED
+ SET 'DIR,-1
+?PRG16: IGRTR? 'DIR,I-NW \?CND18
+ FCLEAR RM,MAPPED
+ RTRUE
+?CND18: SET 'LEN,0
+ SET 'DEST,FALSE-VALUE
+ SET 'TYPE,FALSE-VALUE
+ SET 'CTBL,XCHARS
+ GETB PDIR-LIST,DIR
+ GETP RM,STACK >TBL
+ ZERO? TBL /?CND20
+ GET TBL,XTYPE >TYPE
+ BAND TYPE,255 >LEN
+ BAND TYPE,65280 >TYPE
+?CND20: ZERO? TBL /?CTR23
+ EQUAL? TYPE,NO-EXIT,SORRY-EXIT /?CTR23
+ BTST LEN,MARKBIT /?CCL24
+?CTR23: SET 'CTBL,NXCHARS
+ JUMP ?CND22
+?CCL24: EQUAL? TYPE,FCONNECT \?CCL29
+ SET 'DEST,-1
+ BAND LEN,127 >LEN
+ ZERO? LEN \?CND22
+ SET 'CTBL,NXCHARS
+ JUMP ?CND22
+?CCL29: GET TBL,XROOM >DEST
+ ZERO? DEST /FALSE
+ IN? DEST,ROOMS \FALSE
+ EQUAL? TYPE,SHADOW-EXIT /?CCL37
+ EQUAL? TYPE,DCONNECT \?CND22
+ GET TBL,XDATA
+ FSET? STACK,OPENED /?CND22
+?CCL37: SET 'CTBL,NXCHARS
+?CND22: BAND LEN,127 >LEN
+ GET YOFFS,DIR >YOFF
+ GET XOFFS,DIR >XOFF
+ ADD Y,YOFF >NY
+ ADD X,XOFF >NX
+ LESS? NY,0 /?PRG16
+ GRTR? NY,10 /?PRG16
+ LESS? NX,0 /?PRG16
+ GRTR? NX,16 /?PRG16
+ GETB CTBL,DIR >CHAR
+ ZERO? VT220 \?CCL50
+ GETB SHITCHARS,DIR >CHAR
+ EQUAL? CTBL,NXCHARS \?CND48
+ SET 'CHAR,SP
+ JUMP ?CND48
+?CCL50: EQUAL? HERE,RM \?CND48
+ ADD CHAR,17 >CHAR
+?CND48: MUL NY,MWIDTH
+ ADD MAP,STACK
+ PUTB STACK,NX,CHAR
+ ZERO? TBL /?PRG16
+ ZERO? TYPE /?PRG16
+ ZERO? DEST /?PRG16
+ LESS? Y,0 /?PRG16
+ GRTR? Y,10 /?PRG16
+ LESS? X,0 /?PRG16
+ GRTR? X,16 /?PRG16
+ BAND LEN,254
+ ADD LEN,STACK >LEN
+ GETB MCHARS,DIR >CHAR
+ EQUAL? TYPE,X-EXIT \?CCL65
+ BTST DIR,1 \?CCL68
+ SET 'CHAR,XCROSS
+ ZERO? VT220 \?PRG78
+ SET 'CHAR,88
+ JUMP ?PRG78
+?CCL68: SET 'CHAR,HVCROSS
+ ZERO? VT220 \?PRG78
+ SET 'CHAR,43
+ JUMP ?PRG78
+?CCL65: EQUAL? CTBL,NXCHARS \?CCL74
+ SET 'CHAR,SOLID
+ ZERO? VT220 \?PRG78
+ SET 'CHAR,SP
+ JUMP ?PRG78
+?CCL74: ZERO? VT220 \?PRG78
+ GETB SHITCHARS,DIR >CHAR
+?PRG78: ADD NY,YOFF >NY
+ ADD NX,XOFF >NX
+ LESS? NY,0 /?REP79
+ GRTR? NY,10 /?REP79
+ LESS? NX,0 /?REP79
+ GRTR? NX,16 /?REP79
+ MUL NY,MWIDTH
+ ADD MAP,STACK
+ PUTB STACK,NX,CHAR
+ DLESS? 'LEN,1 \?PRG78
+?REP79: EQUAL? DEST,-1 /?PRG16
+ FSET? DEST,MAPPED /?PRG16
+ GETB ROOMS-MAPPED,0
+ INTBL? DEST,ROOMS-MAPPED+1,STACK,1 >CHAR /?PRG16
+ FSET? DEST,VIEWED \?PRG16
+ ADD YOFF,YOFF
+ ADD NY,STACK >NY
+ ADD XOFF,XOFF
+ ADD NX,STACK >NX
+ LESS? NY,-1 /?PRG16
+ GRTR? NY,MHEIGHT /?PRG16
+ LESS? NX,-1 /?PRG16
+ GRTR? NX,MWIDTH /?PRG16
+ ICALL CLOSE-MAP,DEST,NY,NX
+ JUMP ?PRG16
+
+
+ .FUNCT DUMB-CHAR?,RM,CHAR
+ SET 'CHAR,42
+ EQUAL? HERE,RM \?CCL3
+ SET 'CHAR,64
+ RETURN CHAR
+?CCL3: CALL2 IS-LIT?,RM
+ ZERO? STACK \?CND1
+ SET 'CHAR,63
+?CND1: RETURN CHAR
+
+
+ .FUNCT SMART-CHAR?,RM,CHAR,TBL
+ SET 'CHAR,SOLID
+ EQUAL? HERE,RM \?CND1
+ SET 'CHAR,ISOLID
+?CND1: CALL2 IS-LIT?,RM
+ ZERO? STACK \?CND3
+ SET 'CHAR,QMARK
+ EQUAL? HERE,RM \?CND3
+ SET 'CHAR,IQMARK
+?CND3: GETP RM,P?UP >TBL
+ ZERO? TBL /?CND7
+ CALL CHECK-EXIT?,RM,TBL
+ ZERO? STACK /?CND7
+ SET 'CHAR,UARROW
+ EQUAL? HERE,RM \?CND7
+ SET 'CHAR,IUARROW
+?CND7: GETP RM,P?DOWN >TBL
+ ZERO? TBL /?CND13
+ CALL CHECK-EXIT?,RM,TBL
+ ZERO? STACK /?CND13
+ EQUAL? CHAR,UARROW \?CCL19
+ RETURN UDARROW
+?CCL19: EQUAL? CHAR,IUARROW \?CCL21
+ RETURN IUDARROW
+?CCL21: EQUAL? HERE,RM /?CCL22
+ RETURN DARROW
+?CCL22: RETURN IDARROW
+?CND13: RETURN CHAR
+
+
+ .FUNCT CHECK-EXIT?,RM,TBL,EXIT-WORD,ROOM,XDIR,XTBL,TYPE,LEN
+ GET TBL,XTYPE >EXIT-WORD
+ GET TBL,XROOM >ROOM
+ SET 'XDIR,P?NW
+?PRG1: GETP RM,XDIR >XTBL
+ ZERO? TBL /?CND3
+ GET XTBL,XTYPE
+ EQUAL? STACK,EXIT-WORD \?CND3
+ GET XTBL,XROOM
+ EQUAL? STACK,ROOM /FALSE
+?CND3: IGRTR? 'XDIR,P?NORTH \?PRG1
+ BAND EXIT-WORD,65280 >TYPE
+ BAND EXIT-WORD,127 >LEN
+ EQUAL? TYPE,NO-EXIT,SORRY-EXIT /FALSE
+ BTST EXIT-WORD,MARKBIT \FALSE
+ EQUAL? TYPE,CONNECT,SCONNECT,X-EXIT /TRUE
+ EQUAL? TYPE,DCONNECT \?CCL18
+ GET TBL,XDATA
+ FSET? STACK,OPENED /TRUE
+?CCL18: EQUAL? TYPE,FCONNECT \FALSE
+ ZERO? LEN /FALSE
+ RTRUE
+
+
+ .FUNCT FAR-MAP,RM,Y,X,DIR,TBL,CHAR,TYPE,LEN,DEST,NY,NX,YOFF,XOFF
+ GETB ROOMS-MAPPED,0 >LEN
+ ZERO? LEN /?CCL2
+ INTBL? RM,ROOMS-MAPPED+1,LEN,1 >CHAR /?CND1
+?CCL2: IGRTR? 'LEN,45 /TRUE
+ PUTB ROOMS-MAPPED,LEN,RM
+ PUTB ROOMS-MAPPED,0,LEN
+?CND1: GRTR? Y,-1 \?CND7
+ LESS? Y,MHEIGHT \?CND7
+ GRTR? X,-1 \?CND7
+ LESS? X,MWIDTH \?CND7
+ ZERO? VT220 \?CCL15
+ CALL2 DUMB-CHAR?,RM >CHAR
+ JUMP ?CND13
+?CCL15: SET 'CHAR,SMBOX
+ EQUAL? HERE,RM \?CND13
+ SET 'CHAR,ISOLID
+?CND13: MUL Y,MWIDTH
+ ADD MAP,STACK
+ PUTB STACK,X,CHAR
+?CND7: FSET RM,MAPPED
+ SET 'DIR,-1
+?PRG18: IGRTR? 'DIR,I-NW \?CND20
+ FCLEAR RM,MAPPED
+ RTRUE
+?CND20: SET 'LEN,0
+ SET 'DEST,FALSE-VALUE
+ SET 'TYPE,FALSE-VALUE
+ GETB PDIR-LIST,DIR
+ GETP RM,STACK >TBL
+ ZERO? TBL /?PRG18
+ GET TBL,XTYPE >TYPE
+ BAND TYPE,255 >LEN
+ BAND TYPE,65280 >TYPE
+ ZERO? TYPE /FALSE
+ EQUAL? TYPE,NO-EXIT,SORRY-EXIT /?PRG18
+ BTST LEN,MARKBIT \?PRG18
+ EQUAL? TYPE,FCONNECT \?CCL32
+ SET 'DEST,-1
+ JUMP ?CND24
+?CCL32: GET TBL,XROOM >DEST
+ ZERO? DEST /FALSE
+ IN? DEST,ROOMS \FALSE
+?CND24: ZERO? DEST /?PRG18
+ LESS? Y,0 /?PRG18
+ GRTR? Y,10 /?PRG18
+ LESS? X,0 /?PRG18
+ GRTR? X,16 /?PRG18
+ BAND LEN,127 >LEN
+ GET YOFFS,DIR >YOFF
+ GET XOFFS,DIR >XOFF
+ GETB MCHARS,DIR >CHAR
+ EQUAL? TYPE,X-EXIT \?CCL46
+ BTST DIR,1 \?CCL49
+ SET 'CHAR,XCROSS
+ ZERO? VT220 \?CND44
+ SET 'CHAR,88
+ JUMP ?CND44
+?CCL49: SET 'CHAR,HVCROSS
+ ZERO? VT220 \?CND44
+ SET 'CHAR,43
+ JUMP ?CND44
+?CCL46: EQUAL? TYPE,SHADOW-EXIT /?CTR54
+ EQUAL? TYPE,DCONNECT \?CCL55
+ GET TBL,XDATA
+ FSET? STACK,OPENED /?CCL55
+?CTR54: SET 'CHAR,SOLID
+ ZERO? VT220 \?CND44
+ SET 'CHAR,SP
+ JUMP ?CND44
+?CCL55: ZERO? VT220 \?CND44
+ GETB SHITCHARS,DIR >CHAR
+?CND44: SET 'NY,Y
+ SET 'NX,X
+?PRG63: ADD NY,YOFF >NY
+ ADD NX,XOFF >NX
+ LESS? NY,0 /?REP64
+ GRTR? NY,10 /?REP64
+ LESS? NX,0 /?REP64
+ GRTR? NX,16 /?REP64
+ MUL NY,MWIDTH
+ ADD MAP,STACK
+ PUTB STACK,NX,CHAR
+ DLESS? 'LEN,1 \?PRG63
+?REP64: EQUAL? DEST,-1 /?PRG18
+ FSET? DEST,MAPPED /?PRG18
+ GETB ROOMS-MAPPED,0
+ INTBL? DEST,ROOMS-MAPPED+1,STACK,1 >CHAR /?PRG18
+ FSET? DEST,VIEWED \?PRG18
+ ADD NY,YOFF >NY
+ ADD NX,XOFF >NX
+ LESS? NY,-1 /?PRG18
+ GRTR? NY,MHEIGHT /?PRG18
+ LESS? NX,-1 /?PRG18
+ GRTR? NX,MWIDTH /?PRG18
+ ICALL FAR-MAP,DEST,NY,NX
+ JUMP ?PRG18
+
+
+ .FUNCT RELOOK,NOP
+ ZERO? NOP \?CND1
+ PRINT PERIOD
+?CND1: ZERO? VERBOSITY /?CND3
+ CRLF
+?CND3: ICALL1 V-LOOK
+ RFALSE
+
+
+ .FUNCT V-LOOK,V
+ ASSIGNED? 'V /?CND1
+ SET 'V,TRUE-VALUE
+?CND1: EQUAL? HOST,MACINTOSH /?CND3
+ HLIGHT H-BOLD
+?CND3: ICALL1 SAY-HERE
+ CRLF
+ HLIGHT H-NORMAL
+ ZERO? LIT? /?CND5
+ ICALL1 MARK-EXITS
+?CND5: ZERO? DMODE /?CCL8
+ EQUAL? PRIOR,SHOWING-STATS,SHOWING-INV \?CND7
+?CCL8: ICALL2 DESCRIBE-HERE,V
+ ZERO? DMODE \?CND11
+ ICALL1 UPPER-SLINE
+ ICALL1 LOWER-SLINE
+ SET 'OLD-HERE,HERE
+ RTRUE
+?CND11: ICALL1 DISPLAY-PLACE
+ RTRUE
+?CND7: ICALL1 DISPLAY-PLACE
+ GET 0,8
+ BTST STACK,1 \TRUE
+ DIROUT D-SCREEN-OFF
+ ICALL2 DESCRIBE-HERE,V
+ DIROUT D-SCREEN-ON
+ RTRUE
+
+
+ .FUNCT MARK-EXITS,DIR,TBL,WRD,TYPE,LEN
+ SET 'DIR,P?NORTH
+?PRG1: GETP HERE,DIR >TBL
+ ZERO? TBL /?CND3
+ GET TBL,XTYPE >WRD
+ BAND WRD,65280 >TYPE
+ BAND WRD,127 >LEN
+ BTST WRD,MARKBIT /?CND3
+ EQUAL? TYPE,CONNECT,SCONNECT,X-EXIT /?CCL7
+ EQUAL? TYPE,FCONNECT \?PRD10
+ ZERO? LEN \?CCL7
+?PRD10: EQUAL? TYPE,DCONNECT \?CND3
+ GET TBL,XDATA
+ FSET? STACK,OPENED \?CND3
+?CCL7: ADD WRD,MARKBIT
+ PUT TBL,XTYPE,STACK
+?CND3: DLESS? 'DIR,P?DOWN \?PRG1
+ RFALSE
+
+
+ .FUNCT UPDATE-ROOMDESC
+ SET 'IN-DBOX,SHOWING-ROOM
+ ICALL1 SETUP-DBOX
+ ICALL1 DESCRIBE-HERE
+ ICALL1 JUSTIFY-DBOX
+ ICALL1 DISPLAY-DBOX
+ RFALSE
+
+
+ .FUNCT DESCRIBE-HERE,V,INDENT,X
+ ZERO? DMODE /?CCL2
+ EQUAL? PRIOR,SHOWING-INV,SHOWING-STATS \?CND1
+?CCL2: INC 'INDENT
+?CND1: EQUAL? HERE,DEATH \?CCL7
+ ZERO? INDENT /?CND8
+ PRINT TAB
+?CND8: PRINTI "You are de"
+ FSET? DEATH,MUNGED \?CND10
+ PRINTR "feated."
+?CND10: PRINTR "ad."
+?CCL7: ZERO? LIT? \?CND5
+ FSET HERE,TOUCHED
+ FSET HERE,VIEWED
+ ZERO? INDENT /?CND13
+ PRINT TAB
+?CND13: CALL2 WEARING-MAGIC?,HELM
+ ZERO? STACK /?CND15
+ IN? URGRUE,HERE \?CCL19
+ SET 'P-IT-OBJECT,URGRUE
+ SET 'LAST-MONSTER,URGRUE
+ PRINTR "You sense the presence of an obscure shadow in the darkness."
+?CCL19: IN? GRUE,HERE \?CND15
+ FSET GRUE,SEEN
+ SET 'P-IT-OBJECT,GRUE
+ SET 'LAST-MONSTER,GRUE
+ CALL2 PICK-NEXT,GRUE-SIGHTS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CND15: PRINTI "It's completely dark"
+ FSET? GRUE,SEEN \?CCL22
+ RANDOM 100
+ LESS? 50,STACK /?CND21
+?CCL22: FSET GRUE,SEEN
+ PRINTI ". You are likely to be eaten by a grue"
+?CND21: PRINT PERIOD
+ RTRUE
+?CND5: FCLEAR GRUE,SEEN
+ GETP HERE,P?ACTION >X
+ ZERO? X /?CND25
+ ZERO? V \?CCL28
+ ZERO? INDENT /?CCL28
+ EQUAL? VERBOSITY,2 /?CCL28
+ EQUAL? VERBOSITY,1 \?CND25
+ FSET? HERE,TOUCHED /?CND25
+?CCL28: ZERO? INDENT /?CND35
+ PRINT TAB
+?CND35: ICALL X,M-LOOK
+?CND25: FSET HERE,TOUCHED
+ FSET HERE,VIEWED
+ ZERO? V \?CCL38
+ ZERO? VERBOSITY \?CCL38
+ ZERO? INDENT \TRUE
+?CCL38: ICALL1 DESCRIBE-OBJECTS
+ RTRUE
+
+
+ .FUNCT UPPER-SLINE
+ ICALL1 SETUP-SLINE
+ PRINTC SP
+ ICALL2 PRINT-TABLE,CHARNAME
+ ICALL1 NEXTLINE
+ ICALL1 TEXT-STATS
+ ICALL2 PRINTLINE,1
+ RTRUE
+
+
+ .FUNCT TEXT-STATS,STAT,X
+?PRG1: GET STSTR,STAT
+ PRINT STACK
+ PRINTC 58
+ GET STATS,STAT >X
+ LESS? X,10 \?CND3
+ PRINTC 48
+?CND3: PRINTN X
+ PRINTC SP
+ IGRTR? 'STAT,6 \?PRG1
+ RFALSE
+
+
+ .FUNCT NEXTLINE,LEN
+ DIROUT D-TABLE-OFF
+ GET AUX-TABLE,0 >LEN
+ ADD AUX-TABLE,2
+ COPYT STACK,SLINE,LEN
+ DIROUT D-TABLE-ON,AUX-TABLE
+ PUT AUX-TABLE,0,0
+ RFALSE
+
+
+ .FUNCT PRINTLINE,LINE,LEN,X
+ DIROUT D-TABLE-OFF
+ GET AUX-TABLE,0 >LEN
+ SUB WIDTH,LEN
+ ADD SLINE,STACK >X
+ ADD AUX-TABLE,2
+ COPYT STACK,X,LEN
+ ICALL1 TO-TOP-WINDOW
+ ICALL DO-CURSET,LINE,1
+ HLIGHT H-INVERSE
+ PRINTT SLINE,WIDTH
+ ICALL1 TO-BOTTOM-WINDOW
+ RFALSE
+
+
+ .FUNCT LOWER-SLINE,ANY,PTR,DIR,TBL,TYPE,X
+ ICALL1 SETUP-SLINE
+ PRINTC SP
+ ICALL1 SAY-HERE
+ ICALL1 NEXTLINE
+ PRINTI "Exits:"
+ ZERO? LIT? \?CCL3
+ PRINTI " None visible"
+ JUMP ?CND1
+?CCL3: COPYT GOOD-DIRS,0,32
+ SET 'DIR,I-NORTH
+?PRG4: GETB PDIR-LIST,DIR
+ GETP HERE,STACK >TBL
+ ZERO? TBL /?CND6
+ GET TBL,XTYPE >TYPE
+ BAND TYPE,65280 >X
+ EQUAL? X,CONNECT,SCONNECT,X-EXIT /?CCL9
+ EQUAL? X,FCONNECT \?PRD12
+ BAND TYPE,127
+ ZERO? STACK \?CCL9
+?PRD12: EQUAL? X,DCONNECT \?CND6
+ GET TBL,XDATA
+ FSET? STACK,OPENED \?CND6
+?CCL9: MUL DIR,4
+ ADD GOOD-DIRS,STACK
+ COPYT TBL,STACK,-4
+ INC 'ANY
+ PRINTC SP
+ GET XLIST-NAMES,DIR
+ PRINT STACK
+?CND6: IGRTR? 'DIR,I-NW \?PRG4
+ ADD GOOD-DIRS,2 >PTR
+?PRG19: GETB PDIR-LIST,DIR
+ GETP HERE,STACK >TBL
+ ZERO? TBL /?CND21
+ GET TBL,XTYPE >TYPE
+ BAND TYPE,65280 >X
+ EQUAL? X,CONNECT,SCONNECT,X-EXIT /?CCL24
+ EQUAL? X,FCONNECT \?PRD27
+ BAND TYPE,127
+ ZERO? STACK \?CCL24
+?PRD27: EQUAL? X,DCONNECT \?CND21
+ GET TBL,XDATA
+ FSET? STACK,OPENED \?CND21
+?CCL24: INTBL? TYPE,GOOD-DIRS,8,132 >X \?CCL33
+ GET TBL,XROOM
+ INTBL? STACK,PTR,8,132 >X /?CND21
+?CCL33: INC 'ANY
+ PRINTC SP
+ GET XLIST-NAMES,DIR
+ PRINT STACK
+?CND21: IGRTR? 'DIR,11 \?PRG19
+ ZERO? ANY \?CND1
+ PRINTI " None"
+?CND1: PRINTC SP
+ ICALL2 PRINTLINE,2
+ RTRUE
+
+
+ .FUNCT SETUP-DBOX
+ SET 'DBOX-LINES,0
+ PUTB DBOX,0,SP
+ COPYT DBOX,DBOX+1,-1551
+ PUT DBOX,0,0
+ DIROUT D-TABLE-ON,DBOX
+ RFALSE
+
+
+ .FUNCT JUSTIFY-DBOX,MORE,LINE,BASE,LEN,PTR,CHAR,X,SOURCE,DEST,END,XLEN
+ DIROUT D-TABLE-OFF
+ GET DBOX,0 >LEN
+ SET 'LINE,DBOX-LINES
+ SET 'BASE,DBOX+2
+ MUL LINE,BOXWIDTH
+ ADD BASE,STACK >BASE
+ SUB BOXWIDTH,1 >END
+?PRG1: ADD DBOX+2,LEN
+ GRTR? BASE,STACK /?REP2
+ INTBL? EOL,BASE,END,1 >PTR \?CCL7
+ SUB PTR,BASE >PTR
+ SET 'X,PTR
+?PRG8: INC 'X
+ GETB BASE,X >CHAR
+ EQUAL? CHAR,EOL /?REP9
+ GRTR? CHAR,31 \?PRG8
+?REP9: ADD BASE,X >SOURCE
+ ADD BASE,BOXWIDTH >DEST
+ EQUAL? SOURCE,DEST /?CND5
+ MUL LINE,BOXWIDTH
+ ADD STACK,X
+ SUB LEN,STACK >XLEN
+ COPYT SOURCE,DEST,XLEN
+?PRG16: PUTB BASE,PTR,SP
+ IGRTR? 'PTR,END /?CND5
+ INC 'LEN
+ JUMP ?PRG16
+?CCL7: SET 'PTR,BOXWIDTH
+?PRG20: DLESS? 'PTR,0 /?CND5
+ GETB BASE,PTR >CHAR
+ EQUAL? CHAR,SP \?PRG20
+ EQUAL? PTR,END /?PRG20
+ ADD BASE,PTR >SOURCE
+ INC 'SOURCE
+ ADD BASE,BOXWIDTH >DEST
+ EQUAL? SOURCE,DEST /?CND5
+ MUL LINE,BOXWIDTH >XLEN
+ ADD XLEN,PTR
+ SUB LEN,STACK >XLEN
+ COPYT SOURCE,DEST,XLEN
+?PRG30: IGRTR? 'PTR,END /?CND5
+ INC 'LEN
+ PUTB BASE,PTR,SP
+ JUMP ?PRG30
+?CND5: ADD BASE,BOXWIDTH >BASE
+ IGRTR? 'LINE,24 \?PRG1
+?REP2: SET 'DBOX-LINES,LINE
+ RTRUE
+
+
+ .FUNCT DISPLAY-DBOX,MORE,TLC,BASE,LINES
+ SET 'NEW-DBOX,0
+ SUB 12,MAX-DHEIGHT >TLC
+ SET 'BASE,DBOX+2
+ ZERO? DBOX-TOP /?CND1
+ MUL DBOX-TOP,BOXWIDTH
+ ADD BASE,STACK >BASE
+?CND1: SET 'LINES,DHEIGHT
+ BTST IN-DBOX,SHOWING-STATS \?CCL5
+ SET 'LINES,MAX-DHEIGHT
+ JUMP ?CND3
+?CCL5: SUB DBOX-LINES,DBOX-TOP
+ GRTR? STACK,DHEIGHT \?CND3
+ INC 'MORE
+ DEC 'LINES
+?CND3: ICALL1 TO-TOP-WINDOW
+ COLOR FORE,BGND
+ ICALL DO-CURSET,TLC,2
+ EQUAL? HOST,APPLE-2C \?CCL9
+ PRINTC SP
+ JUMP ?CND7
+?CCL9: ZERO? VT220 \?CND7
+ EQUAL? HOST,IBM /?CND7
+ HLIGHT H-INVERSE
+?CND7: PRINTT BASE,BOXWIDTH,LINES
+ ZERO? DBOX-TOP /?CND13
+ ICALL SAY-MORE,TLC,TRUE-VALUE
+?CND13: ZERO? MORE /?CND15
+ SUB 11,MAX-DHEIGHT
+ ADD DHEIGHT,STACK
+ ICALL2 SAY-MORE,STACK
+?CND15: ICALL1 TO-BOTTOM-WINDOW
+ RTRUE
+
+
+ .FUNCT SAY-MORE,Y,UP,X
+ COLOR GCOLOR,BGND
+ ICALL DO-CURSET,Y,2
+ EQUAL? HOST,APPLE-2C \?CND1
+ PRINTC SP
+?CND1: PRINTI "[MORE]"
+ EQUAL? HOST,MACINTOSH \?CCL5
+ SUB BOXWIDTH,30
+ ICALL2 PRINT-SPACES,STACK
+ PRINTI "[Press "
+ ZERO? UP /?CCL8
+ PRINTC 92
+ JUMP ?CND6
+?CCL8: PRINTC 47
+?CND6: PRINTI " or "
+ FONT F-NEWFONT >X
+ ZERO? UP /?CCL11
+ PRINTC 92
+ JUMP ?CND9
+?CCL11: PRINTC 93
+?CND9: FONT F-DEFAULT >X
+ JUMP ?CND3
+?CCL5: ZERO? VT220 \?CTR12
+ EQUAL? HOST,APPLE-2C,IBM \?CCL13
+?CTR12: SUB BOXWIDTH,25
+ ICALL2 PRINT-SPACES,STACK
+ PRINTI "[Press "
+ FONT F-NEWFONT >X
+ ZERO? VT220 /?CCL18
+ SET 'X,93
+ ZERO? UP /?CND16
+ DEC 'X
+ JUMP ?CND16
+?CCL18: EQUAL? HOST,APPLE-2C \?CCL22
+ SET 'X,74
+ ZERO? UP /?CND16
+ INC 'X
+ JUMP ?CND16
+?CCL22: SET 'X,25
+ ZERO? UP /?CND16
+ DEC 'X
+?CND16: PRINTC X
+ FONT F-DEFAULT >X
+ JUMP ?CND3
+?CCL13: SUB BOXWIDTH,34
+ ICALL2 PRINT-SPACES,STACK
+ ZERO? UP /?CND27
+ PRINTI " "
+?CND27: PRINTI "[Press "
+ ZERO? UP /?CCL31
+ PRINTI "UP"
+ JUMP ?CND29
+?CCL31: PRINTI "DOWN"
+?CND29: PRINTI " arrow"
+?CND3: PRINTI " to scroll]"
+ RFALSE
+
+
+ .FUNCT DESCRIBE-OBJECTS,TWO?,IT?,ANY?,CR,B,1ST?,OBJ,NXT,STR,X
+ ZERO? LIT? \?CCL3
+ ICALL1 TOO-DARK
+ RTRUE
+?CCL3: FIRST? HERE >OBJ \TRUE
+ LOC WINNER >OBJ
+ EQUAL? OBJ,HERE /?CND5
+ FSET? OBJ,VEHICLE \?CND5
+ IN? OBJ,HERE \?CND5
+ MOVE OBJ,DUMMY-OBJECT
+ CALL2 SEE-ANYTHING-IN?,OBJ
+ ZERO? STACK /?CND5
+ PRINT TAB
+ PRINT YOU-SEE
+ ICALL2 CONTENTS,OBJ
+ ICALL2 ON-IN,OBJ
+ PRINT PERIOD
+?CND5: FIRST? HERE >OBJ \?CND12
+?PRG14: NEXT? OBJ >NXT /?BOGUS16
+?BOGUS16: FSET? OBJ,NODESC /?CCL18
+ EQUAL? OBJ,WINNER \?CND17
+?CCL18: MOVE OBJ,DUMMY-OBJECT
+?CND17: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG14
+?CND12: FIRST? HERE >OBJ \?CND23
+?PRG25: NEXT? OBJ >NXT /?BOGUS27
+?BOGUS27: GETP OBJ,P?DESCFCN >STR
+ ZERO? STR /?CND28
+ SET 'DESCING,OBJ
+ PRINT TAB
+ ICALL STR,M-OBJDESC
+ CRLF
+ ICALL2 THIS-IS-IT,OBJ
+ MOVE OBJ,DUMMY-OBJECT
+?CND28: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG25
+?CND23: SET '1ST?,1
+ FIRST? HERE >OBJ /?PRG33
+?PRG33: ZERO? OBJ \?CND35
+ ZERO? 1ST? \?REP34
+ ZERO? IT? /?CND37
+ ZERO? TWO? \?CND37
+ ICALL2 THIS-IS-IT,OBJ
+?CND37: PRINTI " here."
+ INC 'ANY?
+?REP34: FIRST? X-OBJECT >OBJ \?CND69
+?PRG71: INC 'ANY?
+ PRINTC SP
+ EQUAL? OBJ,GURDY \?CCL75
+ PRINTI "Within"
+ JUMP ?CND73
+?CND35: NEXT? OBJ >NXT /?BOGUS43
+?BOGUS43: ZERO? 1ST? /?CCL46
+ DEC '1ST?
+ PRINT TAB
+ ZERO? NXT /?CCL49
+ PRINT YOU-SEE
+ JUMP ?CND44
+?CCL49: FSET? OBJ,PLURAL \?CCL51
+ PRINTI "There are "
+ JUMP ?CND44
+?CCL51: PRINTI "There's "
+ JUMP ?CND44
+?CCL46: ZERO? NXT /?CCL54
+ PRINTI ", "
+ JUMP ?CND44
+?CCL54: PRINT AND
+?CND44: SET 'DESCING,OBJ
+ ICALL2 PRINTA,OBJ
+ EQUAL? OBJ,GOBLET \?CND55
+ IN? BFLY,OBJ \?CND55
+ FSET? BFLY,LIVING \?CND55
+ INC 'B
+ PRINT WITH
+ ICALL2 PRINTA,BFLY
+ PRINT STR?493
+ REMOVE BFLY
+?CND55: CALL2 SEE-INSIDE?,OBJ
+ ZERO? STACK /?CND60
+ CALL2 SEE-ANYTHING-IN?,OBJ
+ ZERO? STACK /?CND60
+ MOVE OBJ,X-OBJECT
+?CND60: ZERO? IT? \?CCL66
+ ZERO? TWO? \?CCL66
+ SET 'IT?,OBJ
+ JUMP ?CND64
+?CCL66: SET 'TWO?,TRUE-VALUE
+ SET 'IT?,FALSE-VALUE
+?CND64: SET 'OBJ,NXT
+ JUMP ?PRG33
+?CCL75: EQUAL? OBJ,ARCH \?CCL77
+ PRINTI "Under"
+ JUMP ?CND73
+?CCL77: FSET? OBJ,SURFACE \?CCL79
+ PRINTI "On"
+ JUMP ?CND73
+?CCL79: PRINTI "Inside"
+?CND73: PRINTC SP
+ ICALL2 THE-PRINT,OBJ
+ PRINTI " you see "
+ ICALL2 CONTENTS,OBJ
+ PRINTC PER
+ NEXT? OBJ >OBJ /?PRG71
+?CND69: ZERO? B /?CND82
+ MOVE BFLY,GOBLET
+?CND82: ZERO? ANY? /?CND84
+ CRLF
+?CND84: SET 'DESCING,FALSE-VALUE
+ ICALL MOVE-ALL,X-OBJECT,HERE
+ ICALL MOVE-ALL,DUMMY-OBJECT,HERE
+ RTRUE
+
+
+ .FUNCT SEE-ANYTHING-IN?,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: FIRST? OBJ >OBJ \FALSE
+?PRG5: FSET? OBJ,NODESC /?CND7
+ EQUAL? OBJ,WINNER \TRUE
+?CND7: NEXT? OBJ >OBJ /?PRG5
+ RFALSE
+
+
+ .FUNCT SEE-INSIDE?,OBJ
+ ZERO? OBJ /FALSE
+ EQUAL? OBJ,WINNER,PLAYER /TRUE
+ FSET? OBJ,VEHICLE /TRUE
+ FSET? OBJ,SURFACE /TRUE
+ FSET? OBJ,PERSON /TRUE
+ FSET? OBJ,LIVING /TRUE
+ FSET? OBJ,CONTAINER \FALSE
+ FSET? OBJ,OPENED /TRUE
+ FSET? OBJ,TRANSPARENT /TRUE
+ RFALSE
+
+
+ .FUNCT ACCESSIBLE?,OBJ,L
+ EQUAL? OBJ,FALSE-VALUE,NOT-HERE-OBJECT /FALSE
+ EQUAL? OBJ,PSEUDO-OBJECT \?CND1
+ EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
+ RFALSE
+?CND1: CALL2 META-LOC,OBJ >L
+ EQUAL? L,GLOBAL-OBJECTS /TRUE
+ LOC WINNER
+ EQUAL? L,WINNER,HERE,STACK \FALSE
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT META-LOC,OBJ
+?PRG1: ZERO? OBJ /FALSE
+ IN? OBJ,GLOBAL-OBJECTS \?CCL7
+ RETURN GLOBAL-OBJECTS
+?CCL7: IN? OBJ,ROOMS \?CND3
+ RETURN OBJ
+?CND3: LOC OBJ >OBJ
+ JUMP ?PRG1
+
+
+ .FUNCT VISIBLE?,OBJ,L
+ EQUAL? OBJ,FALSE-VALUE,NOT-HERE-OBJECT /FALSE
+ EQUAL? OBJ,PSEUDO-OBJECT \?CCL5
+ EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
+ RFALSE
+?CCL5: LOC WINNER
+ EQUAL? OBJ,STACK /TRUE
+ LOC OBJ >L
+ EQUAL? L,FALSE-VALUE,GLOBAL-OBJECTS /FALSE
+ LOC WINNER
+ EQUAL? L,WINNER,STACK,HERE /TRUE
+ EQUAL? L,LOCAL-GLOBALS \?CCL15
+ CALL GLOBAL-IN?,HERE,OBJ
+ ZERO? STACK \TRUE
+?CCL15: CALL2 SEE-INSIDE?,L
+ ZERO? STACK /FALSE
+ CALL2 VISIBLE?,L
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT DPRINT,O,X
+ GETP O,P?SDESC >X
+ ZERO? X /?CCL3
+ ICALL X,O
+ RTRUE
+?CCL3: FSET? O,NOARTICLE \?CND1
+ GETP O,P?NAME-TABLE >X
+ ZERO? X /?CND1
+ ICALL2 PRINT-TABLE,X
+ RTRUE
+?CND1: PRINTD O
+ RTRUE
+
+
+ .FUNCT THE-PRINT,O,X
+ ASSIGNED? 'O /?CND1
+ SET 'O,PRSO
+?CND1: FSET? O,NOARTICLE /?CND3
+ PRINT LTHE
+?CND3: ICALL2 DPRINT,O
+ RTRUE
+
+
+ .FUNCT CTHE-PRINT,O,X
+ ASSIGNED? 'O /?CND1
+ SET 'O,PRSO
+?CND1: FSET? O,PROPER /?CND3
+ PRINT XTHE
+?CND3: ICALL2 DPRINT,O
+ RTRUE
+
+
+ .FUNCT THEI-PRINT,X
+ FSET? PRSI,NOARTICLE /?CND1
+ PRINT LTHE
+?CND1: ICALL2 DPRINT,PRSI
+ RTRUE
+
+
+ .FUNCT CTHEI-PRINT,X
+ FSET? PRSI,PROPER /?CND1
+ PRINT XTHE
+?CND1: ICALL2 DPRINT,PRSI
+ RTRUE
+
+
+ .FUNCT PRINTA,O,X
+ ASSIGNED? 'O /?CND1
+ SET 'O,PRSO
+?CND1: FSET? O,NOARTICLE /?CND3
+ FSET? O,PROPER /?CTR5
+ FSET? O,PLURAL \?CCL6
+ FSET? O,PERSON \?CCL6
+?CTR5: PRINT LTHE
+ JUMP ?CND3
+?CCL6: FSET? O,VOWEL \?CCL12
+ PRINTI "an "
+ JUMP ?CND3
+?CCL12: PRINTI "a "
+?CND3: ICALL2 DPRINT,O
+ RTRUE
+
+
+ .FUNCT PRINTCA,O,X
+ ASSIGNED? 'O /?CND1
+ SET 'O,PRSO
+?CND1: FSET? O,NOARTICLE /?CND3
+ FSET? O,PROPER /?CTR5
+ FSET? O,PLURAL \?CCL6
+ FSET? O,PERSON \?CCL6
+?CTR5: PRINT XTHE
+ JUMP ?CND3
+?CCL6: FSET? O,VOWEL \?CCL12
+ PRINTI "An "
+ JUMP ?CND3
+?CCL12: PRINT XA
+?CND3: ICALL2 DPRINT,O
+ RTRUE
+
+
+ .FUNCT DESCRIBE-LANTERN,OBJ
+ FSET? OBJ,MUNGED \?CCL3
+ PRINTB W?BROKEN
+ PRINTC SP
+ JUMP ?CND1
+?CCL3: FSET? OBJ,LIGHTED \?CCL5
+ PRINTB W?LIGHTED
+ PRINTC SP
+ JUMP ?CND1
+?CCL5: FSET? OBJ,MAPPED /?CND1
+ PRINTB W?RUSTY
+ PRINTC SP
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-SHILL,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: FSET? OBJ,TOUCHED \?CND5
+ PRINTD OBJ
+ RTRUE
+?CND5: PRINTI "piece of "
+ PRINTB W?DRIFTWOOD
+ RTRUE
+
+
+ .FUNCT DESCRIBE-SWORD,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-AXE,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DAGGER,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: FSET? OBJ,MUNGED \?CND5
+ PRINTB W?RUSTY
+ PRINTC SP
+?CND5: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-AMULET,OBJ
+ FSET? AMULET,IDENTIFIED \?CND1
+ PRINTI "Amulet of "
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-PHASE,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: EQUAL? HERE,APLANE \?CND5
+ PRINTD OBJ
+ RTRUE
+?CND5: PRINTD SHAPE
+ RTRUE
+
+
+ .FUNCT DESCRIBE-JUNGLE-WAND,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINTI " lies in a clump of grass."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-MOOR-WAND,CONTEXT
+ PRINTI "The end of "
+ ICALL2 PRINTA,DESCING
+ PRINTI " sticks out of the mud."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-FOREST-WAND,CONTEXT
+ PRINTI "Somebody has left "
+ ICALL2 PRINTA,DESCING
+ PRINTI " lying across the path."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-CELLAR-WAND,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINTI " lies in a shadowy corner."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-TOWER-WAND,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINT STR?494
+ PRINTI "a corner."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-HALL-WAND,CONTEXT
+ PRINTI "The tip of "
+ ICALL2 PRINTA,DESCING
+ PRINT STR?495
+ PRINTI "rubble."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-TELE-WAND,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Sayonara"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-SLEEP-WAND,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Anesthesia"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-IO-WAND,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Eversion"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-LEV-WAND,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Levitation"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-BLAST-WAND,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Annihilation"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DISPEL-WAND,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "Dispel "
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-HELM,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "Pheehelm"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-HORSE,OBJ
+ FSET? HORSE,LIVING \?CCL3
+ PRINTB W?GRAY
+ JUMP ?CND1
+?CCL3: PRINTB W?DEAD
+?CND1: PRINTC SP
+ PRINTD HORSE
+ RTRUE
+
+
+ .FUNCT DESCRIBE-TRENCH,OBJ
+ EQUAL? HERE,ARCH12 \?CND1
+ PRINTI "minxhole"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-KEYS,OBJ,WORD
+ GETPT OBJ,P?ADJECTIVE
+ GET STACK,0 >WORD
+ CALL1 SEE-COLOR?
+ ZERO? STACK \?CND1
+ SET 'WORD,W?GRAY
+?CND1: PRINTB WORD
+ PRINTC SP
+ PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-ARROW,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-CLOAK,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Stealth"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-PARASOL,OBJ
+ FSET? OBJ,MUNGED \?CCL3
+ PRINTB W?BROKEN
+ JUMP ?CND1
+?CCL3: FSET? OBJ,OPENED \?CCL5
+ PRINTB W?OPEN
+ JUMP ?CND1
+?CCL5: PRINTB W?CLOSED
+?CND1: PRINTC SP
+ PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-WHISTLE,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Summoning"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-BFLY,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: FSET? OBJ,LIVING /?CND5
+ PRINTI "dead "
+?CND5: FSET? OBJ,MUNGED \?CND7
+ PRINT STR?496
+ RTRUE
+?CND7: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-GOBLET,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "Chalice of "
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-RING,OBJ
+ PRINTD OBJ
+ FSET? OBJ,IDENTIFIED \TRUE
+ PRINTI " of Shielding"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-SPADE,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-SCABBARD,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "Sheath of Grueslayer"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DIAMOND,OBJ
+ PRINTB W?SNOWFLAKE
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DO-PARTAY,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "scroll of Mischief"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-BLESS-WEAPON,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "scroll of Honing"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-BLESS-ARMOR,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "scroll of Protection"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DO-FILFRE,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "scroll of Fireworks"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DO-GOTO,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "scroll of Recall"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-TOWER-SCROLL,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINT STR?494
+ PRINTI "shadow."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-FOREST-SCROLL,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINT STR?497
+ PRINTI "the underbrush."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-PLAIN-SCROLL,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINTI " is blowing against a clump of grass."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-MOOR-SCROLL,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINTI " lies trodden in the mud."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-JUNGLE-SCROLL,CONTEXT
+ PRINTI "The undergrowth nearly conceals "
+ ICALL2 PRINTA,DESCING
+ PRINTC PER
+ RTRUE
+
+
+ .FUNCT DESCRIBE-RENEWAL,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "scroll of Renewal"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT RENEWAL-DESC,CONTEXT
+ ICALL2 PRINTCA,RENEWAL
+ PRINTI " lies trampled in the dust."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-PALIMP,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "scroll of Gating"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-STONE,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "Scrystone of "
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-WALL,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ EQUAL? OBJ,NWALL \?CCL5
+ PRINTI "Nor"
+ JUMP ?CND3
+?CCL5: PRINTI "Sou"
+?CND3: PRINTI "th Wall of "
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-IQ-POTION,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "potion of Enlightenment"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-HEALING-POTION,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "potion of Healing"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DEATH-POTION,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "potion of Death"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-MIGHT-POTION,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "potion of Might"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-FORGET-POTION,OBJ
+ FSET? OBJ,IDENTIFIED \?CND1
+ PRINTI "potion of Forgetfulness"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT DESCRIBE-MOOR-POTION,CONTEXT
+ PRINTI "Some luckless fool has left "
+ ICALL2 PRINTA,DESCING
+ PRINTI " in the mud."
+ RTRUE
+
+
+ .FUNCT DESCRIBE-RUINS-POTION,CONTEXT
+ PRINTI "Someone else must have been here recently. There's "
+ ICALL2 PRINTA,DESCING
+ PRINT STR?498
+ RTRUE
+
+
+ .FUNCT KERBLAM
+ ICALL2 ITALICIZE,STR?499
+ PRINTI "! "
+ RFALSE
+
+
+ .FUNCT WHOOSH
+ ICALL2 ITALICIZE,STR?500
+ PRINTI "! "
+ RFALSE
+
+
+ .FUNCT ITALICIZE,STR,PTR,LEN,CHAR
+ SET 'PTR,2
+ PUT AUX-TABLE,0,0
+ DIROUT D-TABLE-ON,AUX-TABLE
+ PRINT STR
+ DIROUT D-TABLE-OFF
+ GET AUX-TABLE,0 >LEN
+ INC 'LEN
+ LESS? LEN,2 /TRUE
+ GETB 0,1
+ BTST STACK,8 \?PRG17
+ HLIGHT H-ITALIC
+?PRG5: GETB AUX-TABLE,PTR >CHAR
+ EQUAL? HOST,ATARI-ST /?CCL9
+ EQUAL? CHAR,SP,PER,44 /?CTR8
+ EQUAL? CHAR,EXCLAM,63,59 /?CTR8
+ EQUAL? CHAR,58 \?CCL9
+?CTR8: HLIGHT H-NORMAL
+ PRINTC CHAR
+ HLIGHT H-ITALIC
+ JUMP ?CND7
+?CCL9: PRINTC CHAR
+?CND7: EQUAL? PTR,LEN /?REP6
+ INC 'PTR
+ JUMP ?PRG5
+?REP6: HLIGHT H-NORMAL
+ RTRUE
+?PRG17: GETB AUX-TABLE,PTR >CHAR
+ GRTR? CHAR,96 \?CND19
+ LESS? CHAR,123 \?CND19
+ SUB CHAR,SP >CHAR
+?CND19: PRINTC CHAR
+ EQUAL? PTR,LEN /TRUE
+ INC 'PTR
+ JUMP ?PRG17
+
+
+ .FUNCT NOUN-USED?,WORD1,WORD2,WORD3,O,I,OOF,IOF
+ ZERO? WORD1 /FALSE
+ INTBL? PRSA,R-VERBS,NR-VERBS >O \?CCL5
+ GET P-NAMW,1 >O
+ GET P-OFW,1 >OOF
+ GET P-NAMW,0 >I
+ GET P-OFW,0 >IOF
+ JUMP ?CND1
+?CCL5: GET P-NAMW,0 >O
+ GET P-OFW,0 >OOF
+ GET P-NAMW,1 >I
+ GET P-OFW,1 >IOF
+?CND1: ZERO? NOW-PRSI? \?PRD10
+ EQUAL? WORD1,O,OOF /?CTR7
+?PRD10: ZERO? PRSI /?CCL8
+ ZERO? NOW-PRSI? /?CCL8
+ EQUAL? WORD1,I,IOF \?CCL8
+?CTR7: RETURN WORD1
+?CCL8: ZERO? WORD2 /FALSE
+ ZERO? NOW-PRSI? \?PRD21
+ EQUAL? WORD2,O,OOF /?CTR18
+?PRD21: ZERO? PRSI /?CCL19
+ ZERO? NOW-PRSI? /?CCL19
+ EQUAL? WORD2,I,IOF \?CCL19
+?CTR18: RETURN WORD2
+?CCL19: ZERO? WORD3 /FALSE
+ ZERO? NOW-PRSI? \?PRD32
+ EQUAL? WORD3,O,OOF /?CTR29
+?PRD32: ZERO? PRSI /FALSE
+ ZERO? NOW-PRSI? /FALSE
+ EQUAL? WORD3,I,IOF \FALSE
+?CTR29: RETURN WORD3
+
+
+ .FUNCT ADJ-USED?,WORD1,WORD2,WORD3,O,I
+ ZERO? WORD1 /FALSE
+ INTBL? PRSA,R-VERBS,NR-VERBS >O \?CCL5
+ GET P-ADJW,1 >O
+ GET P-ADJW,0 >I
+ JUMP ?CND1
+?CCL5: GET P-ADJW,0 >O
+ GET P-ADJW,1 >I
+?CND1: ZERO? NOW-PRSI? \?PRD10
+ EQUAL? WORD1,O /?CTR7
+?PRD10: ZERO? PRSI /?CCL8
+ ZERO? NOW-PRSI? /?CCL8
+ EQUAL? WORD1,I \?CCL8
+?CTR7: RETURN WORD1
+?CCL8: ZERO? WORD2 /FALSE
+ ZERO? NOW-PRSI? \?PRD21
+ EQUAL? WORD2,O /?CTR18
+?PRD21: ZERO? PRSI /?CCL19
+ ZERO? NOW-PRSI? /?CCL19
+ EQUAL? WORD2,I \?CCL19
+?CTR18: RETURN WORD2
+?CCL19: ZERO? WORD3 /FALSE
+ ZERO? NOW-PRSI? \?PRD32
+ EQUAL? WORD3,O /?CTR29
+?PRD32: ZERO? PRSI /FALSE
+ ZERO? NOW-PRSI? /FALSE
+ EQUAL? WORD3,I \FALSE
+?CTR29: RETURN WORD3
+
+
+ .FUNCT REPLACE-ADJ?,OBJ,OLD,NEW,TBL,LEN
+ GETPT OBJ,P?ADJECTIVE >TBL
+ ZERO? TBL /FALSE
+ PTSIZE TBL
+ DIV STACK,2 >LEN
+?PRG3: DLESS? 'LEN,0 /FALSE
+ GET TBL,LEN
+ EQUAL? STACK,OLD \?PRG3
+ PUT TBL,LEN,NEW
+ RTRUE
+
+
+ .FUNCT REPLACE-SYN?,OBJ,OLD,NEW,TBL,LEN
+ GETPT OBJ,P?SYNONYM >TBL
+ ZERO? TBL /FALSE
+ PTSIZE TBL
+ DIV STACK,2 >LEN
+?PRG3: DLESS? 'LEN,0 /FALSE
+ GET TBL,LEN
+ EQUAL? STACK,OLD \?PRG3
+ PUT TBL,LEN,NEW
+ RTRUE
+
+
+ .FUNCT REPLACE-GLOBAL?,OBJ,OLD,NEW,TBL,LEN
+ GETPT OBJ,P?GLOBAL >TBL
+ ZERO? TBL /FALSE
+ PTSIZE TBL
+ DIV STACK,2 >LEN
+?PRG3: DLESS? 'LEN,0 /FALSE
+ GET TBL,LEN
+ EQUAL? STACK,OLD \?PRG3
+ PUT TBL,LEN,NEW
+ RTRUE
+
+
+ .FUNCT DISPLAY-STATS
+ SET 'BMODE,FALSE-VALUE
+ SET 'DHEIGHT,MAX-DHEIGHT
+ SET 'DBOX-TOP,0
+ SET 'DBOX-LINES,0
+ SET 'IN-DBOX,SHOWING-STATS
+ PUTB DBOX,0,SP
+ COPYT DBOX,DBOX+1,-1551
+ ICALL1 DISPLAY-DBOX
+ SUB 13,MAX-DHEIGHT
+ ICALL2 STATBARS,STACK
+ RFALSE
+
+
+ .FUNCT STATBARS,Y,X,N,STAT
+ ZERO? X \?CND1
+ SUB DWIDTH,BARWIDTH
+ DIV STACK,2
+ ADD STACK,1 >X
+?CND1: ASSIGNED? 'N /?CND3
+ SET 'N,ARMOR-CLASS
+?CND3: SET 'BARY,Y
+ SET 'BARX,X
+ ICALL1 TO-TOP-WINDOW
+ COLOR FORE,BGND
+ ICALL DO-CURSET,BARY,BARX
+ ADD N,1
+ PRINTT BAR-LABELS,LABEL-WIDTH,STACK
+?PRG5: GET STATS,STAT
+ ICALL STAT-ROUTINE,STAT,STACK
+ IGRTR? 'STAT,N \?PRG5
+ ICALL1 TO-BOTTOM-WINDOW
+ RFALSE
+
+
+ .FUNCT SHOW-STAT,STAT
+ ICALL1 TO-TOP-WINDOW
+ GET STATS,STAT
+ ICALL STAT-ROUTINE,STAT,STACK
+ ICALL1 TO-BOTTOM-WINDOW
+ RFALSE
+
+
+ .FUNCT BAR-NUMBER,STAT,VAL,Y
+ HLIGHT H-NORMAL
+ ADD STAT,BARY >Y
+ ADD BARX,13
+ CURSET Y,STACK
+ LESS? VAL,10 \?CCL3
+ PRINTI " "
+ JUMP ?CND1
+?CCL3: LESS? VAL,100 \?CND1
+ PRINTC SP
+?CND1: PRINTN VAL
+ RFALSE
+
+
+ .FUNCT RAWBAR,STAT,VAL,PTR,X,Y,Z
+ PUTB SLINE,0,BASE-CHAR
+ SUB 0,SWIDTH >X
+ COPYT SLINE,SLINE+1,X
+ ADD BASE-CHAR,BAR-RES >X
+ DIV VAL,BAR-RES >Y
+ SUB SWIDTH,1 >Z
+ SET 'PTR,1
+?PRG1: GRTR? PTR,Y /?REP2
+ PUTB SLINE,PTR,X
+ IGRTR? 'PTR,Z \?PRG1
+?REP2: MOD VAL,BAR-RES
+ ADD BASE-CHAR,STACK
+ PUTB SLINE,PTR,STACK
+ PUTB SLINE,0,LCAP
+ ADD SWIDTH,1
+ PUTB SLINE,STACK,RCAP
+ ADD STAT,BARY >Y
+ ADD BARX,LABEL-WIDTH >X
+ ICALL DO-CURSET,Y,X
+ FONT F-NEWFONT >Z
+ COLOR GCOLOR,BGND
+ ADD SWIDTH,2 >Z
+ PRINTT SLINE,Z
+ ADD Z,X
+ ICALL DO-CURSET,Y,STACK
+ FONT F-DEFAULT >Z
+ COLOR FORE,BGND
+ LESS? VAL,10 \?CND7
+ PRINTC SP
+?CND7: PRINTN VAL
+ PRINTC 37
+ RFALSE
+
+
+ .FUNCT APPLE-STATS,CNT,X
+ ICALL1 SETUP-SLINE
+?PRG1: GET STSTR,CNT
+ PRINT STACK
+ PRINTC 58
+ GET STATS,CNT >X
+ LESS? X,10 \?CND3
+ PRINTC 48
+?CND3: PRINTN X
+ IGRTR? 'CNT,6 /?REP2
+ PRINTC SP
+ GRTR? DWIDTH,46 \?PRG1
+ PRINTC SP
+ JUMP ?PRG1
+?REP2: ICALL1 CENTER-SLINE
+ ICALL2 SHOW-SLINE,2
+ RTRUE
+
+
+ .FUNCT UPDATE-STAT,DELTA,STAT,UPDATE-MAX,NEWRANK,NSTAT,OSTAT,MAX,OMAX,NLVL,OLVL,X
+ ASSIGNED? 'STAT /?CND1
+ SET 'STAT,ENDURANCE
+?CND1: ZERO? DELTA /FALSE
+ GET STATS,STAT >OSTAT
+ ADD OSTAT,DELTA >NSTAT
+ LESS? NSTAT,0 \?CCL7
+ SET 'NSTAT,0
+ JUMP ?CND5
+?CCL7: EQUAL? STAT,EXPERIENCE /?CND5
+ GRTR? NSTAT,STATMAX \?CND5
+ SET 'NSTAT,STATMAX
+?CND5: EQUAL? OSTAT,NSTAT /FALSE
+ PUT STATS,STAT,NSTAT
+ GET MAXSTATS,STAT >OMAX
+ ZERO? UPDATE-MAX /?CND12
+ EQUAL? STAT,EXPERIENCE /?CND12
+ EQUAL? NSTAT,OMAX /?CND12
+ ADD DELTA,OMAX >MAX
+ LESS? MAX,0 \?CCL18
+ SET 'MAX,0
+ JUMP ?CND16
+?CCL18: GRTR? MAX,STATMAX \?CND16
+ SET 'MAX,STATMAX
+?CND16: PUT MAXSTATS,STAT,MAX
+?CND12: EQUAL? NSTAT,OMAX /?CND20
+ SET 'NO-REFRESH,STAT
+?CND20: EQUAL? STAT,EXPERIENCE \?CND22
+ CALL2 GET-LEVEL?,NSTAT >NLVL
+ CALL2 GET-LEVEL?,OSTAT >OLVL
+ GRTR? NLVL,OLVL /?CCL25
+ ZERO? NLVL \?CND22
+ EQUAL? OLVL,MAX-LEVEL \?CND22
+?CCL25: ICALL1 UPGRADE-RANK
+ INC 'NEWRANK
+?CND22: ZERO? SAY-STAT /?CND30
+ EQUAL? HOST,MACINTOSH /?CND32
+ HLIGHT H-BOLD
+?CND32: PRINT TAB
+ PRINTI "[Your "
+ GET STAT-NAMES,STAT
+ PRINT STACK
+ SET 'X,S-BEEP
+ EQUAL? NSTAT,OMAX \?CCL36
+ PRINTI " is back to normal"
+ JUMP ?CND34
+?CCL36: PRINTI " just went "
+ LESS? DELTA,0 \?CCL39
+ SET 'X,S-BOOP
+ PRINTB W?DOWN
+ JUMP ?CND34
+?CCL39: PRINTB W?UP
+?CND34: ZERO? NEWRANK /?CND40
+ PRINTI ". You have achieved the rank of "
+ ICALL1 ANNOUNCE-RANK
+?CND40: PRINTI ".]"
+ CRLF
+ HLIGHT H-NORMAL
+ SOUND X
+?CND30: ZERO? DMODE \?CCL44
+ ICALL1 UPPER-SLINE
+ JUMP ?CND42
+?CCL44: ZERO? VT220 \?CCL46
+ ICALL1 APPLE-STATS
+ JUMP ?CND42
+?CCL46: EQUAL? IN-DBOX,SHOWING-STATS \?CCL48
+ ZERO? NEWRANK /?CCL51
+ ICALL1 SHOW-RANK
+ ICALL1 TO-TOP-WINDOW
+ SET 'STAT,ENDURANCE
+?PRG52: GET STATS,STAT
+ ICALL STAT-ROUTINE,STAT,STACK
+ IGRTR? 'STAT,ARMOR-CLASS \?PRG52
+ ICALL1 TO-BOTTOM-WINDOW
+ RTRUE
+?CCL51: EQUAL? STAT,EXPERIENCE /TRUE
+ ICALL2 SHOW-STAT,STAT
+ JUMP ?CND42
+?CCL48: ZERO? BMODE /?CND42
+ ZERO? NEWRANK \?CCL58
+ ZERO? STAT \?CND42
+?CCL58: ICALL2 SHOW-STAT,ENDURANCE
+?CND42: ZERO? NSTAT \TRUE
+ EQUAL? STAT,ENDURANCE,STRENGTH \TRUE
+ PRINT TAB
+ PRINTI "Your last ounce of "
+ GET STAT-NAMES,STAT
+ PRINT STACK
+ PRINTI " gives out"
+ ICALL1 JIGS-UP
+ RTRUE
+
+
+ .FUNCT GET-LEVEL?,VAL,LVL
+?PRG1: GET THRESHOLDS,LVL
+ LESS? VAL,STACK \?CCL5
+ RETURN LVL
+?CCL5: IGRTR? 'LVL,MAX-LEVEL \?PRG1
+ RFALSE
+
+
+ .FUNCT UPGRADE-RANK,TBL,O,N
+ SET 'TBL,STATS
+?PRG1: GET TBL,ENDURANCE >O
+ SUB STATMAX,O
+ DIV STACK,10 >N
+ LESS? N,1 \?CND3
+ SET 'N,1
+?CND3: ADD O,N >N
+ GRTR? N,STATMAX \?CCL7
+ SET 'N,STATMAX
+ JUMP ?CND5
+?CCL7: LESS? N,1 \?CND5
+ SET 'N,1
+?CND5: PUT TBL,ENDURANCE,N
+ EQUAL? TBL,MAXSTATS /FALSE
+ SET 'TBL,MAXSTATS
+ JUMP ?PRG1
+
+
+ .FUNCT PRINT-TABLE,TBL,PTR,LEN
+ SET 'PTR,1
+ GETB TBL,0 >LEN
+ ZERO? LEN /FALSE
+?PRG3: GETB TBL,PTR
+ PRINTC STACK
+ IGRTR? 'PTR,LEN \?PRG3
+ RFALSE
+
+
+ .FUNCT WATER-VANISH
+ ICALL1 VANISH
+ ICALL1 CTHE-PRINT
+ PRINT STR?501
+ PRINTR "water."
+
+
+ .FUNCT VANISH,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ REMOVE OBJ
+ SET 'P-IT-OBJECT,NOT-HERE-OBJECT
+ RFALSE
+
+
+ .FUNCT LIGHT-SOURCE?,OBJ,LEN
+ FSET? HERE,INDOORS /?CND1
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK \?CND1
+ RETURN SUN
+?CND1: GET LIGHT-SOURCES,0 >LEN
+?PRG4: GET LIGHT-SOURCES,LEN >OBJ
+ FSET? OBJ,LIGHTED \?CND6
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CND6
+ RETURN OBJ
+?CND6: DLESS? 'LEN,1 \?PRG4
+ CALL FIND-IN?,WINNER,LIGHTED >OBJ
+ ZERO? OBJ /?CCL13
+ RETURN OBJ
+?CCL13: LOC WINNER
+ CALL FIND-IN?,STACK,LIGHTED >OBJ
+ RETURN OBJ
+
+
+ .FUNCT NEW-EXIT?,OBJ,DIR,TYPE,ROOM,DATA,PTR,X,TBL,BYTES
+ GETP OBJ,DIR >TBL
+ ZERO? TBL \?CND1
+ SET 'BYTES,4
+ ASSIGNED? 'DATA \?CND3
+ SET 'BYTES,6
+?CND3: SET 'PTR,STORAGE
+ ADD STORAGE,BYTES >X
+ GRTR? X,STORAGE-SPACE \?CND5
+ ICALL2 SAY-ERROR,STR?502
+ RFALSE
+?CND5: SET 'STORAGE,X
+ ADD FREE-STORAGE,PTR >TBL
+ PUTP OBJ,DIR,TBL
+?CND1: PUT TBL,XTYPE,TYPE
+ ASSIGNED? 'ROOM \?CND7
+ PUT TBL,XROOM,ROOM
+?CND7: ASSIGNED? 'DATA \TRUE
+ PUT TBL,XDATA,DATA
+ RTRUE
+
+
+ .FUNCT JUMPING-OFF?
+ EQUAL? PRSA,V?LEAP /TRUE
+ EQUAL? PRSA,V?DIVE \?CCL5
+ EQUAL? P-PRSA-WORD,V?DIVE /TRUE
+?CCL5: EQUAL? PRSA,V?CLIMB-DOWN \FALSE
+ EQUAL? P-PRSA-WORD,W?JUMP,W?LEAP,W?HURDLE /TRUE
+ EQUAL? P-PRSA-WORD,W?VAULT,W?BOUND /TRUE
+ RFALSE
+
+
+ .FUNCT DONT-HAVE-WAND?,OBJ,W
+ IN? W,PLAYER /?CCL3
+ ICALL2 MUST-HOLD,W
+ PRINTR " to direct its power."
+?CCL3: EQUAL? OBJ,W \?CCL5
+ PRINT CANT
+ PRINTB P-PRSA-WORD
+ PRINTC SP
+ ICALL2 THE-PRINT,W
+ PRINTR " at itself."
+?CCL5: CALL2 NO-MAGIC-HERE?,W
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT MUST-HOLD,OBJ
+ PRINTI "You must be holding "
+ ICALL2 THE-PRINT,OBJ
+ RTRUE
+
+
+ .FUNCT CANT-REACH-WHILE-IN?,OBJ1,OBJ2,X
+ EQUAL? OBJ1,FALSE-VALUE,OBJ2 /FALSE
+ CALL GLOBAL-IN?,HERE,OBJ1
+ ZERO? STACK \FALSE
+ IN? OBJ1,HERE \FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X /?CTR6
+ EQUAL? PRSA,V?THRUST \FALSE
+ EQUAL? OBJ1,PRSO,LAST-MONSTER \FALSE
+?CTR6: ICALL2 CANT-REACH,OBJ1
+ PRINTI " while you're "
+ EQUAL? OBJ2,ARCH \?CCL16
+ PRINTB W?UNDER
+ JUMP ?CND14
+?CCL16: EQUAL? OBJ2,DACT \?CCL18
+ PRINTB W?ON
+ JUMP ?CND14
+?CCL18: EQUAL? OBJ2,BUSH \?CCL20
+ PRINTB W?BEHIND
+ JUMP ?CND14
+?CCL20: PRINTB W?IN
+?CND14: PRINTC SP
+ ICALL2 THE-PRINT,OBJ2
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT CANT-REACH,OBJ
+ PRINT CANT
+ PRINTI "quite reach "
+ ICALL2 THE-PRINT,OBJ
+ RFALSE
+
+
+ .FUNCT NO-MAGIC-HERE?,OBJ
+ IN? PLAYER,ARCH /?CND1
+ EQUAL? ATIME,PRESENT \?CND1
+ EQUAL? HERE,IN-CABIN,IN-FROON,IN-GARDEN /?CND1
+ CALL1 GRUE-ROOM?
+ ZERO? STACK \?CND1
+ EQUAL? OBJ,GURDY /?CCL6
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK \?CND1
+?CCL6: EQUAL? HERE,IN-SKY \?CCL9
+ EQUAL? ABOVE,OCAVES /?CND1
+?CCL9: EQUAL? OBJ,PALIMP /FALSE
+ EQUAL? HERE,APLANE,IN-SPLENDOR \FALSE
+?CND1: ICALL2 SPUTTERS,OBJ
+ ICALL1 INFLUENCE
+ RTRUE
+
+
+ .FUNCT SPUTTERS,OBJ
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " sputters ineffectually. "
+ RTRUE
+
+
+ .FUNCT INFLUENCE
+ PRINTR "A nearby influence must be blocking its Magick."
+
+
+ .FUNCT SEE-COLOR?
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK /TRUE
+ FSET? HERE,SEEN /TRUE
+ RFALSE
+
+
+ .FUNCT GRUE-ROOM?,X
+ GETB GRUE-ROOMS,0 >X
+ INTBL? HERE,GRUE-ROOMS+1,X,1 >X /TRUE
+ RFALSE
+
+
+ .FUNCT PLAIN-ROOM?,RM,X
+ ASSIGNED? 'RM /?CND1
+ SET 'RM,HERE
+?CND1: EQUAL? RM,IN-FARM,ROSE-ROOM /TRUE
+ GETB PLAIN-ROOMS,0 >X
+ INTBL? RM,PLAIN-ROOMS+1,X,1 >X /TRUE
+ RFALSE
+
+
+ .FUNCT GROUND-WORD
+ FSET? HERE,INDOORS \?CND1
+ PRINTB W?FLOOR
+ RFALSE
+?CND1: PRINTB W?GROUND
+ RFALSE
+
+
+ .FUNCT VIEW-MONSTER,CONTEXT,X
+ FSET? DESCING,SLEEPING \?CCL3
+ ICALL2 CTHE-PRINT,DESCING
+ PRINTI " lies stunned upon the "
+ ICALL1 GROUND-WORD
+ PRINTC PER
+ RTRUE
+?CCL3: FSET? DESCING,SURPRISED \?CND1
+ GETP DESCING,P?EXIT-STR >X
+ FSET? DESCING,SEEN /?CCL6
+ ZERO? X \?CND5
+?CCL6: ICALL2 CTHE-PRINT,DESCING
+ PRINTI " is waiting for you."
+ RTRUE
+?CND5: FSET DESCING,SEEN
+ ICALL2 PRINTCA,DESCING
+ PRINT SIS
+ PRINT X
+ PRINTC PER
+ RTRUE
+?CND1: RANDOM 100 >X
+ LESS? X,33 \?CCL11
+ ICALL2 PRINTCA,DESCING
+ PRINTI " is attacking you"
+ JUMP ?CND9
+?CCL11: LESS? X,67 \?CCL13
+ PRINTI "You're being attacked by "
+ ICALL2 PRINTA,DESCING
+ JUMP ?CND9
+?CCL13: PRINTI "You're under attack by "
+ ICALL2 PRINTA,DESCING
+?CND9: PRINTC 33
+ RTRUE
+
+
+ .FUNCT DARK-MOVES
+ CALL2 PICK-NEXT,DARK-MOVINGS
+ PRINT STACK
+ PRINTI " in the darkness"
+ RANDOM 100
+ LESS? 50,STACK /?CND1
+ PRINTI " nearby"
+?CND1: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT OUCH,OBJ,DAMAGE
+ ZERO? STATIC \?CND1
+ RANDOM 100
+ LESS? 25,STACK /?CND1
+ PRINTI ". "
+ CALL2 PICK-NEXT,OUCHES
+ PRINT STACK
+?CND1: PRINTC 33
+ CRLF
+ CALL MSPARK?,OBJ,DAMAGE
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+
+
+ .FUNCT STILL-SLEEPING?,OBJ
+ FSET? OBJ,SLEEPING \?CND1
+ SET 'LAST-MONSTER-DIR,-1
+ SET 'ATTACK-MODE,NORMAL-ATTACK
+ PRINT TAB
+ FSET? OBJ,NEUTRALIZED \?CCL5
+ FCLEAR OBJ,NEUTRALIZED
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " blinks its eyes, yawns and staggers with groggy impotence"
+ JUMP ?CND3
+?CCL5: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ FCLEAR OBJ,SLEEPING
+ ICALL REPLACE-ADJ?,OBJ,W?STUNNED,W?AWAKE
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " shakes itself out of its stupor"
+?CND3: PRINT PERIOD
+ ICALL2 TOPPLED?,OBJ
+ RTRUE
+?CND1: ICALL2 NEXT-ENDURANCE?,OBJ
+ RFALSE
+
+
+ .FUNCT NEXT-ENDURANCE?,OBJ,X,MAX,CHANGE
+ GETP OBJ,P?ENDURANCE >X
+ FSET? OBJ,STRICKEN \?CND1
+ FCLEAR OBJ,STRICKEN
+ RETURN X
+?CND1: GETP OBJ,P?EMAX >MAX
+ GRTR? MAX,X /?CCL4
+ RETURN X
+?CCL4: MUL 2,MAX
+ DIV STACK,100 >CHANGE
+ LESS? CHANGE,1 \?CND5
+ SET 'CHANGE,1
+?CND5: ADD X,CHANGE >X
+ GRTR? X,MAX \?CND7
+ SET 'X,MAX
+?CND7: PUTP OBJ,P?ENDURANCE,X
+ RETURN X
+
+
+ .FUNCT WHIRLS,OBJ
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " whirls to face you!"
+ CRLF
+ ICALL2 TOPPLED?,SNIPE
+ RTRUE
+
+
+ .FUNCT TOPPLED?,OBJ
+ FSET? DACT,MUNGED /FALSE
+ IN? PLAYER,SADDLE \?CCL5
+ IN? SADDLE,DACT \?CCL5
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ LOC DACT
+ MOVE PLAYER,STACK
+ ICALL EXIT-DACT,OBJ,STR?503,STR?504
+ RTRUE
+?CCL5: CALL2 VISIBLE?,DACT
+ ZERO? STACK /FALSE
+ ICALL EXIT-DACT,OBJ,STR?505,STR?506
+ RTRUE
+
+
+ .FUNCT EXIT-DACT,OBJ,STR1,STR2
+ FCLEAR DACT,NODESC
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ REMOVE DACT
+ PRINT TAB
+ ICALL2 CTHE-PRINT,DACT
+ FSET? DACT,SLEEPING \?CND1
+ FCLEAR DACT,SLEEPING
+ PRINTI " shakes himself awake,"
+?CND1: PRINTI " takes one good look at "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI " and decides that he doesn't want to "
+ PRINT STR1
+ PRINTI " anymore. Before you can think or move, you find yourself "
+ PRINT STR2
+ PRINTR ", with a cowardly shadow soaring out of sight overhead."
+
+
+ .FUNCT SEE-MONSTER,OBJ
+ SET 'LAST-MONSTER,OBJ
+ FCLEAR OBJ,SURPRISED
+ RFALSE
+
+
+ .FUNCT MONSTER-STRIKES?,OBJ,DAMAGE,STR,CHANCE,X
+ ICALL2 SEE-MONSTER,OBJ
+ GETP OBJ,P?STRENGTH >STR
+ LESS? STR,1 /FALSE
+ FSET OBJ,STRICKEN
+ SET 'CHANCE,12
+ EQUAL? ATTACK-MODE,PARRYING /?CND3
+ GETP OBJ,P?DEXTERITY >CHANCE
+ ZERO? ATTACK-MODE \?CND5
+ DIV CHANCE,2 >CHANCE
+?CND5: MUL CHANCE,45
+ DIV STACK,100 >CHANCE
+ ADD CHANCE,MIN-HIT-PROB >CHANCE
+ GRTR? CHANCE,MAX-HIT-PROB \?CND3
+ SET 'CHANCE,MAX-HIT-PROB
+?CND3: SET 'ATTACK-MODE,NORMAL-ATTACK
+ RANDOM 100
+ LESS? CHANCE,STACK /FALSE
+ GET STATS,ARMOR-CLASS
+ SUB STATMAX,STACK >DAMAGE
+ MUL DAMAGE,STR
+ ADD STACK,99
+ DIV STACK,100 >DAMAGE
+ LESS? DAMAGE,2 \?CCL14
+ SET 'DAMAGE,1
+ JUMP ?CND12
+?CCL14: RANDOM DAMAGE >DAMAGE
+?CND12: ZERO? AUTO /?CND15
+ ICALL1 BMODE-ON
+?CND15: SUB 0,DAMAGE
+ RSTACK
+
+
+ .FUNCT MOVE-MONSTER?,OBJ,UD,L,RLIST,RLEN,CNT,DIR,TBL,DEST,X,BRIGHT,FEAR
+ FSET? OBJ,SLEEPING \?CND1
+ FCLEAR OBJ,SLEEPING
+ FCLEAR OBJ,STRICKEN
+ FCLEAR OBJ,NEUTRALIZED
+ RFALSE
+?CND1: FSET OBJ,SURPRISED
+ ICALL2 NEXT-ENDURANCE?,OBJ
+ LOC OBJ >L
+ LOC SCARE3 >FEAR
+ GETP OBJ,P?HABITAT >RLIST
+ GETB RLIST,0 >RLEN
+ INC 'RLIST
+ SET 'CNT,1
+ SET 'DIR,P?NORTH
+?PRG3: GETP L,DIR >TBL
+ ZERO? TBL /?CND5
+ GET TBL,XTYPE
+ BAND STACK,65280
+ EQUAL? STACK,CONNECT,SCONNECT,X-EXIT \?CND5
+ GET TBL,XROOM >DEST
+ INTBL? DEST,RLIST,RLEN,1 >X \?CND5
+ EQUAL? OBJ,GRUE \?CCL9
+ CALL2 IS-LIT?,DEST
+ ZERO? STACK \?CND5
+?CCL9: ZERO? LAST-MONSTER \?CND14
+ CALL2 WEARING-MAGIC?,CLOAK
+ ZERO? STACK \?CND14
+ EQUAL? DEST,HERE \?CND14
+ EQUAL? DEST,FEAR /?CND14
+ SET 'CNT,2
+ PUT GOOD-DIRS,2,DIR
+ JUMP ?REP4
+?CND14: EQUAL? DEST,FEAR /?CND5
+ INC 'CNT
+ PUT GOOD-DIRS,CNT,DIR
+?CND5: DLESS? 'DIR,P?NW \?PRG3
+?REP4: ZERO? UD /?CND24
+ SET 'DIR,P?UP
+?PRG26: GETP L,DIR >TBL
+ ZERO? TBL /?CND28
+ GET TBL,XTYPE
+ BAND STACK,65280
+ EQUAL? STACK,CONNECT,SCONNECT \?CND28
+ GET TBL,XROOM >DEST
+ INTBL? DEST,RLIST,RLEN,1 >X \?CND28
+ ZERO? LAST-MONSTER \?CND33
+ CALL2 WEARING-MAGIC?,CLOAK
+ ZERO? STACK \?CND33
+ EQUAL? DEST,HERE \?CND33
+ SET 'CNT,2
+ PUT GOOD-DIRS,2,DIR
+?CND24: EQUAL? CNT,1 /FALSE
+ EQUAL? CNT,2 \?CCL43
+ GET GOOD-DIRS,2 >DIR
+ GETP L,DIR
+ GET STACK,XROOM >DEST
+ JUMP ?CND39
+?CND33: INC 'CNT
+ PUT GOOD-DIRS,CNT,DIR
+?CND28: EQUAL? DIR,P?DOWN /?CND24
+ SET 'DIR,P?DOWN
+ JUMP ?PRG26
+?CCL43: GETP OBJ,P?LAST-LOC >X
+ PUT GOOD-DIRS,0,CNT
+ PUT GOOD-DIRS,1,0
+?PRG44: CALL2 PICK-ONE,GOOD-DIRS >DIR
+ GETP L,DIR
+ GET STACK,XROOM >DEST
+ EQUAL? DEST,X /?PRG44
+?CND39: ZERO? LAST-MONSTER /?CND48
+ EQUAL? DEST,HERE /FALSE
+?CND48: MOVE OBJ,DEST
+ PUTP OBJ,P?LAST-LOC,DEST
+ EQUAL? DEST,HERE \FALSE
+ ZERO? LIT? /?CND51
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+?CND51: EQUAL? DIR,P?UP,P?DOWN /?CND55
+ ADD DIR,4 >DIR
+ GRTR? DIR,P?NORTH \?CND57
+ SUB DIR,8 >DIR
+?CND57: SET 'LAST-MONSTER-DIR,DIR
+?CND55: ICALL2 THIS-IS-IT,OBJ
+ SET 'LAST-MONSTER,OBJ
+ FCLEAR OBJ,SURPRISED
+ EQUAL? DIR,P?UP \?CCL61
+ SET 'LAST-MONSTER-DIR,P?DOWN
+ RETURN W?UP
+?CCL61: EQUAL? DIR,P?DOWN \?CND59
+ SET 'LAST-MONSTER-DIR,P?UP
+ RETURN W?DOWN
+?CND59: SUB DIR,P?NORTH
+ SUB 0,STACK
+ GET DIR-NAMES,STACK
+ RSTACK
+
+
+ .FUNCT NEXT-MONSTER,OBJ,RLIST,LEN,CNT,X,RM
+ ZERO? OBJ /FALSE
+ GETP OBJ,P?HABITAT >RLIST
+ GETB RLIST,0 >LEN
+ SET 'X,LEN
+ SET 'CNT,1
+?PRG3: GETB RLIST,X >RM
+ EQUAL? RM,HERE /?CND5
+ EQUAL? OBJ,GRUE \?CCL7
+ FSET? RM,LIGHTED /?CND5
+?CCL7: FSET? RM,TOUCHED /?CND5
+ INC 'CNT
+ PUT AUX-TABLE,CNT,RM
+?CND5: DLESS? 'X,1 \?PRG3
+ EQUAL? CNT,1 \?CCL15
+?PRG16: RANDOM LEN
+ GETB RLIST,STACK >RM
+ EQUAL? RM,HERE /?PRG16
+ EQUAL? OBJ,GRUE \?CND13
+ FSET? RM,LIGHTED /?PRG16
+ JUMP ?CND13
+?CCL15: EQUAL? CNT,2 \?CCL25
+ GET AUX-TABLE,2 >RM
+ JUMP ?CND13
+?CCL25: PUT AUX-TABLE,0,CNT
+ PUT AUX-TABLE,1,0
+ CALL2 PICK-ONE,AUX-TABLE >RM
+?CND13: MOVE OBJ,RM
+ FSET OBJ,SURPRISED
+ PUTP OBJ,P?LAST-LOC,RM
+ GETP OBJ,P?LIFE
+ ICALL2 QUEUE,STACK
+ RFALSE
+
+
+ .FUNCT V-SHIT
+ ICALL PERFORM,V?HIT,PRSI,PRSO
+ RTRUE
+
+
+ .FUNCT PRE-HIT,OBJ,X
+ CALL1 DARKFIGHT?
+ ZERO? STACK \TRUE
+ ZERO? PRSI \FALSE
+ SET 'PRSI,HANDS
+ FIRST? WINNER >OBJ \?CND5
+?PRG7: FSET? OBJ,WIELDED \?CCL11
+ SET 'PRSI,OBJ
+ JUMP ?CND5
+?CCL11: FSET? OBJ,WEAPON \?CND9
+ SET 'PRSI,OBJ
+?CND9: NEXT? OBJ >OBJ /?PRG7
+?CND5: EQUAL? PRSI,HANDS /FALSE
+ PRINTI "[with "
+ ICALL1 THEI-PRINT
+ PRINT BRACKET
+ RFALSE
+
+
+ .FUNCT V-PUNCH
+ ICALL PERFORM,V?HIT,PRSO,HANDS
+ RTRUE
+
+
+ .FUNCT V-HIT,MODE
+ SET 'MODE,NORMAL-ATTACK
+ EQUAL? P-PRSA-WORD,W?THRUST \?CND1
+ SET 'MODE,THRUSTING
+?CND1: ICALL2 HIT-MONSTER,MODE
+ RTRUE
+
+
+ .FUNCT V-THRUST
+ CALL2 PRACTICE?,W?THRUST
+ ZERO? STACK \TRUE
+ ICALL2 HIT-MONSTER,THRUSTING
+ RTRUE
+
+
+ .FUNCT DARKFIGHT?
+ ZERO? LIT? \FALSE
+ EQUAL? PRSO,GRUE,URGRUE \?CND4
+ CALL2 WEARING-MAGIC?,HELM
+ ZERO? STACK \FALSE
+?CND4: ICALL1 TOO-DARK
+ RTRUE
+
+
+ .FUNCT PRACTICE?,WRD
+ ZERO? PRSO \?CND1
+ ZERO? LAST-MONSTER \?CND3
+ PRINTI "You practice "
+ PRINTB WRD
+ PRINTI "ing "
+ ZERO? LIT? \?CND5
+ PRINTI "in the dark "
+?CND5: PRINTR "for a few moments."
+?CND3: SET 'PRSO,LAST-MONSTER
+?CND1: CALL1 DARKFIGHT?
+ RSTACK
+
+
+ .FUNCT V-PARRY
+ CALL2 PRACTICE?,W?PARRY
+ ZERO? STACK \TRUE
+ FSET? PRSO,LIVING \?CCL4
+ FSET? PRSO,MONSTER \?CCL4
+ FSET? PRSO,SLEEPING \?CND3
+?CCL4: ICALL1 CTHE-PRINT
+ PRINTI " isn't attacking you"
+ PRINT AT-MOMENT
+ RTRUE
+?CND3: SET 'ATTACK-MODE,PARRYING
+ SET 'LAST-MONSTER-DIR,FALSE-VALUE
+ IN? PLAYER,MAW \?CND8
+ IN? PRSO,MAW /?CND8
+ ICALL1 CTHE-PRINT
+ PRINTR " can't seem to reach you."
+?CND8: PRINTI "You leap away from "
+ ICALL1 THE-PRINT
+ PRINTR "'s attack."
+
+
+ .FUNCT HARMLESS,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ICALL2 CTHE-PRINT,OBJ
+ PRINTI " obviously means you no harm; "
+ GET STATS,COMPASSION
+ LESS? STACK,15 \?CCL5
+ PRINTI "even your meager compassion is enough to stay "
+ JUMP ?CND3
+?CCL5: PRINTI "compassion stays "
+?CND3: PRINTD HANDS
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT HIT-MONSTER,MODE,STR,DAM,L,MEND,PCENT,MIN,X
+ ASSIGNED? 'MODE /?CND1
+ SET 'MODE,NORMAL-ATTACK
+?CND1: CALL1 DARKFIGHT?
+ ZERO? STACK \TRUE
+ FSET? PRSO,LIVING /?CCL7
+ PRINTI "Attacking "
+ ICALL1 THE-PRINT
+ EQUAL? PRSI,FALSE-VALUE,HANDS /?CND8
+ PRINT WITH
+ ICALL2 PRINTA,PRSI
+?CND8: ICALL1 WONT-HELP
+ RTRUE
+?CCL7: FSET? PRSO,MONSTER /?CND3
+ ICALL1 HARMLESS
+ RTRUE
+?CND3: SET 'ATTACK-MODE,MODE
+ ZERO? PRSI \?CND11
+ CALL1 PRE-HIT
+ ZERO? STACK \TRUE
+?CND11: LOC PLAYER >L
+ IN? PRSO,L /?CCL17
+ PRINT CANT
+ PRINTI "quite reach "
+ ICALL1 THE-PRINT
+ PRINT AT-MOMENT
+ RTRUE
+?CCL17: EQUAL? PRSO,CORBIES \?CCL19
+ ICALL1 CORBIES-STAY-AWAY
+ RTRUE
+?CCL19: EQUAL? PRSO,URGRUE \?CCL21
+ ICALL1 HOPELESS
+ RTRUE
+?CCL21: EQUAL? PRSO,DUST \?CCL23
+ ICALL1 HIT-BUNNIES
+ RTRUE
+?CCL23: EQUAL? PRSO,SHAPE \?CCL25
+ ICALL2 TOUCH-SHAPE-WITH,PRSI
+ RTRUE
+?CCL25: EQUAL? PRSI,PHASE \?CCL27
+ EQUAL? HERE,APLANE /?CCL27
+ ICALL1 PHASE-WHOOSH
+ RTRUE
+?CCL27: EQUAL? PRSO,ASUCKER,BSUCKER,CSUCKER \?CCL31
+ ICALL TOUCH-SUCKER-WITH,PRSO,PRSI
+ RTRUE
+?CCL31: EQUAL? PRSO,DEAD \?CND15
+ ICALL2 TOUCH-DEAD-WITH,PRSI
+ RTRUE
+?CND15: GET STATS,LUCK >L
+ GET STATS,STRENGTH >STR
+ SET 'NO-REFRESH,ENDURANCE
+ SET 'PCENT,MAX-HIT-PROB
+ FSET? PRSO,SLEEPING /?CND33
+ GET STATS,DEXTERITY >PCENT
+ LESS? PCENT,MAX-HIT-PROB \?CND33
+ LESS? PCENT,MIN-HIT-PROB \?CND37
+ SET 'PCENT,MIN-HIT-PROB
+?CND37: SUB MAX-HIT-PROB,PCENT
+ MUL L,STACK
+ DIV STACK,100 >X
+ LESS? X,1 /?CND33
+ ADD PCENT,X >PCENT
+?CND33: EQUAL? MODE,THRUSTING \?CCL43
+ SET 'PCENT,MAX-HIT-PROB
+ JUMP ?CND41
+?CCL43: GRTR? PCENT,MAX-HIT-PROB \?CCL45
+ SET 'PCENT,MAX-HIT-PROB
+ JUMP ?CND41
+?CCL45: LESS? PCENT,MIN-HIT-PROB \?CND41
+ SET 'PCENT,MIN-HIT-PROB
+?CND41: RANDOM 100
+ LESS? PCENT,STACK /?CND47
+ CALL SPARK-TO?,PRSI,PRSO
+ ZERO? STACK /?CND49
+ PRINT TAB
+?CND49: GETP PRSO,P?ENDURANCE >MEND
+ LESS? MEND,1 /FALSE
+ GRTR? STR,1 \?CND53
+ RANDOM STR >DAM
+?CND53: GET STATS,LUCK
+ MUL STACK,DAM
+ DIV STACK,100 >X
+ LESS? X,1 \?CND55
+ SET 'X,1
+?CND55: ADD DAM,X >DAM
+ GRTR? DAM,STR \?CND57
+ SET 'DAM,STR
+?CND57: DIV DAM,5 >MIN
+ GETP PRSI,P?EFFECT
+ MUL STACK,DAM
+ ADD STACK,99
+ DIV STACK,100 >DAM
+ LESS? DAM,MIN \?CCL61
+ SET 'DAM,MIN
+ JUMP ?CND59
+?CCL61: FSET? PRSI,WIELDED /?CND59
+ DIV DAM,2 >DAM
+ LESS? DAM,MIN \?CND59
+ SET 'DAM,MIN
+?CND59: FSET PRSO,STRICKEN
+ LESS? DAM,MEND \?CND65
+ MUL DAM,100
+ DIV STACK,MEND >PCENT
+ SUB MEND,DAM >MEND
+ PUTP PRSO,P?ENDURANCE,MEND
+ ICALL2 YOUR-OBJ,PRSI
+ PRINTC SP
+ ZERO? LIT? \?CND67
+ PRINTR "strikes a blow."
+?CND67: ICALL2 HOW-BAD,PCENT
+ PRINTI "ly wounds "
+ ICALL1 THE-PRINT
+ LESS? PCENT,20 \?CND69
+ ICALL1 TOO-BAD
+?CND69: PRINT PERIOD
+ RTRUE
+?CND65: PUTP PRSO,P?ENDURANCE,0
+ PUTP PRSO,P?STRENGTH,0
+ PRINTI "You deal "
+ ZERO? LIT? /?CND71
+ ICALL1 THE-PRINT
+ PRINTC SP
+?CND71: PRINTI "a decisive blow"
+ EQUAL? PRSI,FALSE-VALUE,HANDS /?CND73
+ PRINT WITH
+ ICALL1 THEI-PRINT
+?CND73: PRINTR "!"
+?CND47: PRINT CYOU
+ EQUAL? PRSI,FEET \?CCL77
+ PRINTB W?KICK
+ JUMP ?CND75
+?CCL77: EQUAL? PRSI,HANDS /?CTR78
+ RANDOM 100
+ LESS? 50,STACK /?CCL79
+?CTR78: PRINTB W?SWING
+ JUMP ?CND75
+?CCL79: PRINTB W?STRIKE
+?CND75: ZERO? LIT? \?CND82
+ PRINTR " at the darkness, with no effect."
+?CND82: PRINTI " at "
+ ICALL1 THE-PRINT
+ EQUAL? PRSI,FALSE-VALUE,HANDS,FEET /?CND84
+ PRINT WITH
+ ICALL1 THEI-PRINT
+?CND84: PRINTI ", "
+ CALL2 PICK-NEXT,MISSES
+ PRINT STACK
+ ICALL1 TOO-BAD
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT TOO-BAD
+ EQUAL? PRSI,HANDS,FEET /FALSE
+ FSET? PRSI,WEAPON \FALSE
+ FSET? PRSI,WIELDED /FALSE
+ PRINTI ". Too bad you're not wielding "
+ ICALL1 THEI-PRINT
+ RFALSE
+
+
+ .FUNCT MONSTER-THROW
+ LOC PRSI
+ MOVE PRSO,STACK
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ICALL2 YOUR-OBJ,PRSO
+ PRINTI " just misses "
+ ICALL1 THEI-PRINT
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT KILL-MONSTER,OBJ,X
+ ICALL2 EXUENT-MONSTER,OBJ
+ FCLEAR OBJ,LIVING
+ PUTP OBJ,P?STRENGTH,0
+ PUTP OBJ,P?DEXTERITY,0
+ PUTP OBJ,P?ENDURANCE,0
+ GETP OBJ,P?LIFE >X
+ ZERO? X /?CND1
+ ICALL2 DEQUEUE,X
+ PUTP OBJ,P?LIFE,0
+?CND1: GETP OBJ,P?VALUE >X
+ ZERO? X /FALSE
+ PUTP OBJ,P?VALUE,0
+ ICALL UPDATE-STAT,X,EXPERIENCE
+ RFALSE
+
+
+ .FUNCT EXUENT-MONSTER,OBJ
+ ICALL2 VANISH,OBJ
+ FSET OBJ,SURPRISED
+ FCLEAR OBJ,STRICKEN
+ SET 'ATTACK-MODE,NORMAL-ATTACK
+ SET 'QCONTEXT,NOT-HERE-OBJECT
+ SET 'QCONTEXT-ROOM,FALSE-VALUE
+ CALL FIND-IN?,HERE,MONSTER >LAST-MONSTER
+ SET 'LAST-MONSTER-DIR,FALSE-VALUE
+ RFALSE
+
+
+ .FUNCT DIAGNOSE-MONSTER,OBJ,MAX,MEND
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: GETP OBJ,P?EMAX >MAX
+ GETP OBJ,P?ENDURANCE >MEND
+ FSET? OBJ,FEMALE \?CCL5
+ PRINTI "She"
+ JUMP ?CND3
+?CCL5: PRINTI "He"
+?CND3: PRINTI " appears to be "
+ FSET? OBJ,SLEEPING \?CND6
+ PRINTB W?STUNNED
+ PRINTI ", "
+ EQUAL? MEND,MAX \?CCL10
+ PRINTB W?BUT
+ JUMP ?CND8
+?CCL10: PRINTB W?AND
+?CND8: PRINTI ", "
+?CND6: EQUAL? MAX,MEND \?CND11
+ PRINTI "in excellent condition"
+ EQUAL? OBJ,DORN \?CND13
+ FSET? OBJ,MUNGED \?CND13
+ PRINTI " otherwise"
+?CND13: PRINT PERIOD
+ RTRUE
+?CND11: MUL MEND,100
+ DIV STACK,MAX
+ ICALL2 HOW-BAD,STACK
+ PRINTR "ly wounded."
+
+
+ .FUNCT HOW-BAD,PCENT
+ LESS? PCENT,20 \?CCL3
+ PRINTI "dangerous"
+ RTRUE
+?CCL3: LESS? PCENT,40 \?CCL5
+ PRINTI "grave"
+ RTRUE
+?CCL5: LESS? PCENT,60 \?CCL7
+ PRINTI "serious"
+ RTRUE
+?CCL7: LESS? PCENT,80 \?CCL9
+ PRINTI "noticeab"
+ RTRUE
+?CCL9: PRINTI "slight"
+ RTRUE
+
+
+ .FUNCT WATER?,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSI
+?CND1: EQUAL? OBJ,GREAT-SEA,COVE,BROOK /TRUE
+ EQUAL? OBJ,WATERFALL,RIVER /TRUE
+ RFALSE
+
+
+ .FUNCT MAGICWORD?,WRD,LEN,OBJ,X
+ ZERO? TELEWORD /?CCL3
+ EQUAL? TELEWORD,P-PRSA-WORD,WRD \?CCL3
+ ICALL1 SAY-TELEWORD
+ RTRUE
+?CCL3: EQUAL? W?LIGHTNING,P-PRSA-WORD,WRD \?CCL7
+ LOC RIDDLE
+ EQUAL? HERE,STACK \?CCL7
+ ICALL1 OPEN-CLIFF
+ RTRUE
+?CCL7: EQUAL? W?YOUTH,P-PRSA-WORD,WRD \?CCL11
+ LOC BOULDER
+ EQUAL? HERE,STACK \?CCL11
+ LOC POOL
+ ZERO? STACK \?CCL11
+ ICALL1 OPEN-POOL
+ RTRUE
+?CCL11: ZERO? AMULET-WORD /?CCL16
+ EQUAL? AMULET-WORD,P-PRSA-WORD,WRD \?CCL16
+ ICALL1 SAY-AMULET-WORD
+ RTRUE
+?CCL16: ZERO? WALL-WORD /?CCL20
+ EQUAL? WALL-WORD,P-PRSA-WORD,WRD \?CCL20
+ ICALL1 SAY-WALL-WORD
+ RTRUE
+?CCL20: ZERO? GOBLET-WORD /?CND1
+ EQUAL? GOBLET-WORD,P-PRSA-WORD,WRD \?CND1
+ CALL1 SAY-GOBLET-WORD?
+ ZERO? STACK \TRUE
+?CND1: GET ALL-SCROLLS,0 >LEN
+?PRG27: GET ALL-SCROLLS,LEN >OBJ
+ EQUAL? OBJ,PRSO /?CCL30
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CND29
+?CCL30: GETPT OBJ,P?SYNONYM
+ GET STACK,1 >X
+ EQUAL? X,W?ZZZP /?CND29
+ EQUAL? X,WRD,P-PRSA-WORD \?CND29
+ GETP OBJ,P?EFFECT
+ CALL STACK,OBJ >X
+ RTRUE
+?CND29: DLESS? 'LEN,1 \?PRG27
+ RFALSE
+
+
+ .FUNCT DESCRIBE-MONSTERS,OBJ
+ FSET? OBJ,LIVING /?CCL3
+ PRINTI "dead "
+ JUMP ?CND1
+?CCL3: FSET? OBJ,SLEEPING \?CND1
+ PRINTI "stunned "
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT LAST-ROOM-IN?,TBL,LAST,LEN,RM
+ ASSIGNED? 'LAST /?CND1
+ SET 'LAST,1
+?CND1: FSET? HERE,TOUCHED /FALSE
+ GETB TBL,0 >LEN
+?PRG5: GETB TBL,LEN >RM
+ EQUAL? HERE,RM /?CND7
+ FSET? RM,TOUCHED \FALSE
+?CND7: DLESS? 'LEN,LAST \?PRG5
+ RTRUE
+
+
+ .FUNCT I-BREEZE
+ FSET? BREEZE,SEEN \?CCL3
+ FCLEAR BREEZE,SEEN
+ RFALSE
+?CCL3: RANDOM 100
+ LESS? 7,STACK /FALSE
+ CALL1 NEXT-WINDIR?
+ CALL2 NEW-WINDIR?,STACK
+ RSTACK
+
+
+ .FUNCT NEXT-WINDIR?,X
+?PRG1: RANDOM 8 >X
+ DEC 'X
+ EQUAL? X,WINDIR /?PRG1
+ EQUAL? HERE,IN-SKY /?CCL6
+ RETURN X
+?CCL6: EQUAL? ABOVE,OXROADS \?CCL8
+ EQUAL? X,I-NE,I-NORTH,I-EAST /?PRG1
+?CCL8: EQUAL? ABOVE,OTHRIFF /?PRD13
+ RETURN X
+?PRD13: EQUAL? X,I-SE,I-SOUTH,I-EAST /?PRG1
+ RETURN X
+
+
+ .FUNCT NEW-WINDIR?,X
+ ASSIGNED? 'X \?CND1
+ SET 'WINDIR,X
+?CND1: FSET BREEZE,SEEN
+ FSET? HERE,INDOORS /FALSE
+ EQUAL? HERE,APLANE,IN-SPLENDOR,IN-FROON /FALSE
+ EQUAL? HERE,IN-GARDEN /FALSE
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK \FALSE
+ INTBL? HERE,ARCH-ROOMS,MAX-ATIME,1 >X /FALSE
+ PRINT TAB
+ CALL2 PICK-NEXT,WIND-ALERTS
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT FIND-IN?,OBJ,BIT
+ FIRST? OBJ >OBJ /?PRG3
+ RETURN OBJ
+?PRG3: FSET? OBJ,BIT /?REP4
+ NEXT? OBJ >OBJ /?PRG3
+?REP4: RETURN OBJ
+
+
+ .FUNCT ON-IN,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: PRINTC SP
+ EQUAL? OBJ,BUSH \?CCL5
+ PRINTB W?BEHIND
+ JUMP ?CND3
+?CCL5: EQUAL? OBJ,ARCH \?CCL7
+ PRINTB W?UNDER
+ JUMP ?CND3
+?CCL7: FSET? OBJ,CONTAINER /?CTR8
+ FSET? OBJ,PLACE \?CCL9
+?CTR8: PRINTB W?IN
+ JUMP ?CND3
+?CCL9: PRINTB W?ON
+?CND3: PRINTC SP
+ ICALL2 THE-PRINT,OBJ
+ RTRUE
+
+
+ .FUNCT SHOP-DOOR,OBJ
+ PRINTI "glass "
+ PRINTD BCASE
+ PRINTI " near the "
+ FSET? OBJ,OPENED \?CND1
+ PRINTI "open "
+?CND1: PRINTD OBJ
+ RFALSE
+
+
+ .FUNCT LOOK-ON-CASE,OBJ
+ CALL2 SEE-ANYTHING-IN?,OBJ
+ ZERO? STACK /?CND1
+ PRINTI ". On the case you see "
+ ICALL2 CONTENTS,OBJ
+?CND1: PRINTI ". Another exit is partly concealed by "
+ ICALL2 PRINTA,CURTAIN
+ PRINT PERIOD
+ RFALSE
+
+
+ .FUNCT DESCRIBE-CAVES,OBJ
+ PRINTI "Underground"
+ RTRUE
+
+
+ .FUNCT IGNORANT,WHO,OBJ
+ ICALL2 CTHE-PRINT,WHO
+ PRINTI " shrugs. ""Don't know nothin' special about "
+ ICALL2 PRONOUN,OBJ
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT PRONOUN,OBJ,IT
+ FSET? OBJ,PLURAL \?CCL3
+ PRINTB W?THEM
+ RTRUE
+?CCL3: FSET? OBJ,FEMALE \?CCL5
+ PRINTB W?HER
+ RTRUE
+?CCL5: FSET? OBJ,PERSON \?CCL7
+ PRINTB W?HIM
+ RTRUE
+?CCL7: ASSIGNED? 'IT \?CCL9
+ PRINTB W?IT
+ RTRUE
+?CCL9: PRINTB W?THAT
+ RTRUE
+
+
+ .FUNCT DESCRIBE-WEAPONS,CONTEXT
+ ICALL2 PRINTCA,DESCING
+ PRINT STR?507
+ RTRUE
+
+
+ .FUNCT SAY-YOUR,OBJ
+ FSET? OBJ,NOARTICLE /?CND1
+ PRINTI "your "
+?CND1: ICALL2 DPRINT,OBJ
+ RFALSE
+
+
+ .FUNCT YOUR-OBJ,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSI
+?CND1: EQUAL? OBJ,FEET /?CTR4
+ EQUAL? PRSA,V?KICK \?CCL5
+?CTR4: PRINTI "Your foot"
+ RFALSE
+?CCL5: EQUAL? OBJ,FALSE-VALUE,HANDS,ME \?CND3
+ PRINTI "Your fist"
+ RFALSE
+?CND3: FSET? OBJ,NOARTICLE /?CND9
+ PRINT CYOUR
+?CND9: ICALL2 DPRINT,OBJ
+ RFALSE
+
+
+ .FUNCT CARRIAGE-RETURNS,NUM
+ SET 'NUM,HEIGHT
+ ZERO? DMODE /?PRG3
+ SUB NUM,12 >NUM
+?PRG3: CRLF
+ DLESS? 'NUM,1 \?PRG3
+ RFALSE
+
+
+ .FUNCT PEERING-BEHIND
+ PRINTI "Peering behind "
+ ICALL1 THE-PRINT
+ PRINT LYOU-SEE
+ ICALL1 CONTENTS
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT FROBOZZ,STR
+ PRINTI "Frobozz Magic "
+ PRINT STR
+ PRINTI " Company"
+ RTRUE
+
+
+ .FUNCT DO-INPUT,CHR
+ INPUT 1 >CHR
+ EQUAL? CHR,MAC-UP-ARROW,MAC-DOWN-ARROW \?CCL3
+ EQUAL? CHR,MAC-UP-ARROW \?CCL6
+ RETURN UP-ARROW
+?CCL6: RETURN DOWN-ARROW
+?CCL3: RETURN CHR
+
+ .ENDI
diff --git a/monsters.zap b/monsters.zap
new file mode 100644
index 0000000..b254fdc
--- /dev/null
+++ b/monsters.zap
@@ -0,0 +1,1117 @@
+
+
+ .FUNCT CRAB-F,CONTEXT,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-CONT \FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL2 CTHE-PRINT,CRAB
+ PRINTR " snaps at your fingers. Yow!"
+?CCL3: EQUAL? PRSA,V?HIT,V?MUNG /?CCL9
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL9
+ ICALL1 SHY-CRAB
+ RTRUE
+?CCL9: ZERO? NOW-PRSI? /?CCL13
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL16
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL16: EQUAL? PRSA,V?PUT-ON,V?EMPTY-INTO \FALSE
+ ICALL1 PRSO-SLIDES-OFF-PRSI
+ RTRUE
+?CCL13: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL19
+ ICALL1 CTHE-PRINT
+ PRINTI " adjusts the crown on its head, and glares at you defiantly. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+?CCL19: EQUAL? PRSA,V?WHAT,V?WHO \FALSE
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+
+
+ .FUNCT SHY-CRAB
+ ICALL2 CTHE-PRINT,CRAB
+ PRINTR " sidesteps out of your reach."
+
+
+ .FUNCT RAT-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTI " glares back at you, snarling. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT DESCRIBE-HEAP,OBJ
+ PRINTI "heap of bones"
+ RTRUE
+
+
+ .FUNCT SKELETON-F,CONTEXT
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 PRINTCA,SKELETON
+ ZERO? CHOKE /?CCL6
+ PRINTI " is clutching your throat."
+ JUMP ?CND4
+?CCL6: PRINT STR?507
+ FSET? AMULET,TOUCHED /?CND7
+ FSET AMULET,NODESC
+?CND7: CALL2 SEE-ANYTHING-IN?,SKELETON
+ ZERO? STACK /?CND9
+ PRINTI " On it you see "
+ ICALL2 CONTENTS,SKELETON
+ PRINTC PER
+?CND9: FCLEAR AMULET,NODESC
+?CND4: FSET? AMULET,TOUCHED /TRUE
+ PRINTI " An amulet dangles from its neck."
+ RTRUE
+?CCL3: CALL2 STRANGLE?,SKELETON
+ ZERO? STACK /?CCL14
+ RETURN 2
+?CCL14: ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?TAKE,V?KICK,V?HIT /?CTR19
+ EQUAL? PRSA,V?SHAKE,V?MOVE,V?PUSH /?CTR19
+ EQUAL? PRSA,V?PULL,V?ADJUST \?CCL20
+?CTR19: FSET? PRSO,MUNGED \?CND24
+ ICALL1 WASTE-OF-TIME
+ RTRUE
+?CND24: BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ FSET PRSO,MUNGED
+ FSET PRSO,SEEN
+ PUTP PRSO,P?SDESC,DESCRIBE-HEAP
+ FSET AMULET,TOUCHED
+ ICALL REPLACE-SYN?,PRSO,W?BODY,W?PILE
+ ICALL REPLACE-SYN?,PRSO,W?CORPSE,W?HEAP
+ ICALL REPLACE-SYN?,PRSO,W?NECK,W?ZZZP
+ ICALL REPLACE-ADJ?,PRSO,W?SKELETON,W?ZZZP
+ PRINTI "With a sigh of exhaustion, "
+ ICALL1 THE-PRINT
+ ZERO? CHOKE /?CND26
+ SET 'CHOKE,0
+ ICALL2 DEQUEUE,I-STRANGLE
+ PRINTI " releases its strangle hold and"
+?CND26: PRINTI " crumbles into a useless "
+ ICALL2 DPRINT,PRSO
+ PRINT PERIOD
+ GETP SKELETON,P?VALUE
+ ICALL UPDATE-STAT,STACK,EXPERIENCE
+ RTRUE
+?CCL20: EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?SEARCH /?CTR28
+ EQUAL? PRSA,V?LOOK-UNDER,V?DIG,V?DIG-UNDER \?CCL29
+?CTR28: PRINTI "You find "
+ FSET? AMULET,TOUCHED /?CND32
+ FSET AMULET,NODESC
+?CND32: ICALL1 CONTENTS
+ FCLEAR AMULET,NODESC
+ PRINT PERIOD
+ RTRUE
+?CCL29: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \FALSE
+ FSET? PRSO,MUNGED /FALSE
+ PRINTI "It grins at you horribly. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT SNIPE-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTI "'s beak is almost a foot long, and sharp as a needle. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT VAPOR-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL9
+ ICALL1 PCLEAR
+ ICALL1 CTHE-PRINT
+ PRINTI " murmurs vaguely in response."
+ CRLF
+ RETURN 2
+?CCL9: EQUAL? PRSA,V?EXAMINE \?CCL13
+ ICALL1 DIAGNOSE-MONSTER
+ FSET? PRSO,TOUCHED /TRUE
+ FSET PRSO,TOUCHED
+ PRINT TAB
+ ICALL1 REFER-TO-PACKAGE
+ RTRUE
+?CCL13: EQUAL? PRSA,V?WHAT,V?WHO \FALSE
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+
+
+ .FUNCT SPIDER-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTI " looks alarmingly well-fed. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT SLUG-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER,V?PUT-ON /?CCL7
+ EQUAL? PRSA,V?PUT,V?TOUCH-TO \FALSE
+?CCL7: ICALL2 TOUCH-SLUG-WITH,PRSO
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTI " is about as long as you are tall. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT TOUCH-SLUG-WITH,OBJ
+ ICALL2 ITALICIZE,STR?664
+ PRINTI "! "
+ EQUAL? OBJ,CUBE /?CND1
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ MOVE OBJ,HERE
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " slips off "
+ ICALL2 THE-PRINT,SLUG
+ PRINTR "'s oozing body with no effect."
+?CND1: REMOVE CUBE
+ ICALL2 VANISH,SLUG
+ ICALL2 CTHE-PRINT,SLUG
+ PRINTI " emits a shriek of agony as "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI " slides across its body. You leap out of its path of retreat, and listen as its repulsive squeals "
+ PRINT STR?593
+ ICALL2 KILL-MONSTER,SLUG
+ RTRUE
+
+
+ .FUNCT DESCRIBE-DUST,OBJ
+ PRINTI "dust bunny"
+ RTRUE
+
+
+ .FUNCT DUST-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ LESS? BUNNIES,5 \?CCL6
+ PRINT XA
+ EQUAL? BUNNIES,1 \?CCL9
+ PRINTI "dust bunny is "
+ JUMP ?CND7
+?CCL9: EQUAL? BUNNIES,2 \?CCL12
+ PRINTI "pair"
+ JUMP ?CND10
+?CCL12: PRINTI "trio"
+?CND10: PRINTI " of "
+ PRINTD DUST
+ PRINTI " are "
+?CND7: PRINTI "lurking in "
+ ICALL2 THE-PRINT,GCORNER
+ PRINTC PER
+ RTRUE
+?CCL6: EQUAL? BUNNIES,8 \?CCL14
+ PRINTI "Eight"
+ JUMP ?CND4
+?CCL14: EQUAL? BUNNIES,13 \?CCL16
+ PRINTI "Thirteen"
+ JUMP ?CND4
+?CCL16: GRTR? BUNNIES,BMAX \?CCL18
+ PRINTI "Countless"
+ JUMP ?CND4
+?CCL18: GRTR? BUNNIES,999 \?CCL20
+ DIV BUNNIES,1000
+ PRINTN STACK
+ PRINTC COMMA
+ MOD BUNNIES,1000
+ PRINTN STACK
+ JUMP ?CND4
+?CCL20: PRINTN BUNNIES
+?CND4: PRINTC SP
+ PRINTD DUST
+ PRINTI " hover in the air."
+ RTRUE
+?CCL3: ZERO? CONTEXT \FALSE
+ FSET? DUST,TOUCHED /?CND1
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CND1
+ ICALL1 START-DUST
+?CND1: ZERO? NOW-PRSI? /?CCL27
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ MOVE PRSO,HERE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ICALL1 CTHEI-PRINT
+ PRINTI " easily avoid "
+ ICALL1 THE-PRINT
+ PRINT PERIOD
+ RTRUE
+?CCL27: EQUAL? PRSA,V?HIT,V?MUNG,V?CUT /?CTR30
+ EQUAL? PRSA,V?TOUCH,V?KICK,V?TAKE /?CTR30
+ EQUAL? PRSA,V?SHAKE \?CCL31
+?CTR30: ICALL1 HIT-BUNNIES
+ RTRUE
+?CCL31: EQUAL? PRSA,V?EXAMINE,V?COUNT \FALSE
+ FCLEAR PRSO,SEEN
+ EQUAL? BUNNIES,1 \?CCL39
+ ICALL1 ONLY-ONE
+ RTRUE
+?CCL39: GRTR? BUNNIES,BMAX \?CND37
+ ICALL1 CTHE-PRINT
+ PRINTR " number in the countless thousands."
+?CND37: PRINTI "A quick count turns up "
+ GRTR? BUNNIES,999 \?CCL43
+ DIV BUNNIES,1000
+ PRINTN STACK
+ PRINTC COMMA
+ MOD BUNNIES,1000
+ PRINTN STACK
+ JUMP ?CND41
+?CCL43: PRINTN BUNNIES
+?CND41: PRINTC SP
+ PRINTD PRSO
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT HIT-BUNNIES
+ ICALL1 WHOOSH
+ ZERO? PRSI \?CND1
+ SET 'PRSI,HANDS
+?CND1: ICALL1 YOUR-OBJ
+ PRINTI " swipes through "
+ ICALL1 THE-PRINT
+ PRINT PTAB
+ CALL SPARK-TO?,PRSI,PRSO
+ ZERO? STACK \TRUE
+ ICALL2 I-DUST,FALSE-VALUE
+ RFALSE
+
+
+ .FUNCT START-DUST
+ FSET DUST,TOUCHED
+ FCLEAR DUST,SEEN
+ ICALL2 QUEUE,I-DUST
+ RFALSE
+
+
+ .FUNCT DORN-F,CONTEXT
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 PRINTCA,DORN
+ PRINT SIS
+ FSET? DORN,MUNGED \?CCL6
+ PRINTI "thrashing about, bawling helplessly."
+ RTRUE
+?CCL6: FSET? DORN,SURPRISED \?CND4
+ PRINTI "waiting for you."
+ RTRUE
+?CND4: PRINTI "sweeping its gaze around the room."
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-WINNER \?CCL9
+ FSET DORN,SEEN
+ PRINTI """Hurumph."""
+ CRLF
+ RETURN 2
+?CCL9: ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL15
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL15: EQUAL? PRSA,V?TELL \?CCL19
+ ICALL2 SEE-CHARACTER,PRSO
+ FSET? PRSO,MUNGED \?CCL22
+ ICALL2 CTHE-PRINT,DORN
+ PRINTI " is too busy bawling to respond."
+ CRLF
+ RETURN 2
+?CCL22: ZERO? P-CONT /?CND20
+ SET 'WINNER,PRSO
+ RTRUE
+?CND20: ICALL1 CTHE-PRINT
+ PRINTI " ""Hurumphs"" expectantly."
+ CRLF
+ RETURN 2
+?CCL19: EQUAL? PRSA,V?EXAMINE \?CCL29
+ FSET? PRSO,MUNGED \?CND30
+ ICALL1 CTHE-PRINT
+ PRINTI " is bawling like a baby. "
+?CND30: ICALL1 DIAGNOSE-MONSTER
+ FSET? PRSO,TOUCHED /TRUE
+ FSET PRSO,TOUCHED
+ PRINT TAB
+ ICALL1 REFER-TO-PACKAGE
+ RTRUE
+?CCL29: EQUAL? PRSA,V?WHAT,V?WHO \FALSE
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+
+
+ .FUNCT DESCRIBE-WORM,OBJ
+ PRINTI "mossy rock"
+ RTRUE
+
+
+ .FUNCT WORM-F,CONTEXT,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-OBJDESC \FALSE
+ FSET? WORM,MONSTER /?CND6
+ PRINTI "The underbrush almost conceals "
+ ICALL2 PRINTA,WORM
+ PRINTC PER
+ RTRUE
+?CND6: ICALL1 VIEW-MONSTER
+ RTRUE
+?CCL3: FSET? WORM,MONSTER /?CND1
+ EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND,V?SEARCH /?CCL9
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CND1
+?CCL9: ICALL2 START-WORM,STR?666
+ RTRUE
+?CND1: ZERO? NOW-PRSI? /?CCL14
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL14: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ FSET? PRSO,MONSTER \?CND19
+ PRINTI " no longer looks like a mossy rock. It's equipped with three-foot fangs, and seems eager to plunge one or both of them into your chest. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+?CND19: ICALL1 HELMLOOK
+ RTRUE
+
+
+ .FUNCT HELMLOOK
+ CALL2 WEARING-MAGIC?,HELM
+ ZERO? STACK /?CND1
+ PRINTR " looks vaguely suspicious."
+?CND1: PRINT STR?667
+ RTRUE
+
+
+ .FUNCT START-WORM,STR,X
+ FSET WORM,MONSTER
+ FCLEAR WORM,SLEEPING
+ FSET WORM,NOALL
+ FCLEAR WORM,SURFACE
+ ICALL REPLACE-SYN?,WORM,W?ROCK,W?MONSTER
+ ICALL REPLACE-SYN?,WORM,W?STONE,W?ZZZP
+ ICALL REPLACE-ADJ?,WORM,W?MOSSY,W?ZZZP
+ ICALL REPLACE-ADJ?,WORM,W?MOSS,W?ZZZP
+ ICALL2 QUEUE,I-WORM
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'LAST-MONSTER,WORM
+ SET 'LAST-MONSTER-DIR,P-WALK-DIR
+ SET 'P-IT-OBJECT,WORM
+ PUTP WORM,P?SDESC,DESCRIBE-MONSTERS
+ PRINTI "As you "
+ PRINT STR
+ PRINTI " the rock, a three-foot set of fangs leaps "
+ PRINT STR?668
+ RTRUE
+
+
+ .FUNCT CROC-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTI " looks hungry. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT HOUND-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTI " is deciding how best to eat you. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT PUPP-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL9
+ ICALL1 CTHE-PRINT
+ PRINTI " twists its face to look just like you. Eeek! "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+?CCL9: EQUAL? PRSA,V?LAUGH \FALSE
+ EQUAL? P-PRSA-WORD,W?INSULT,W?OFFEND \FALSE
+ GETP PRSO,P?EMAX >X
+ GETP PRSO,P?ENDURANCE
+ LESS? STACK,X \?CCL16
+ PUTP PRSO,P?ENDURANCE,X
+ JUMP ?CND14
+?CCL16: LESS? X,32762 \?CND14
+ ADD X,5 >X
+ PUTP PRSO,P?EMAX,X
+ PUTP PRSO,P?ENDURANCE,X
+?CND14: PRINTI "You instantly regret your words, for "
+ ICALL1 THE-PRINT
+ PRINTI " grins with renewed vitality. It apparently "
+ ICALL2 ITALICIZE,STR?672
+ PRINTR " off insults like that!"
+
+
+ .FUNCT DEAD-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER,V?TOUCH-TO \FALSE
+ ICALL2 TOUCH-DEAD-WITH,PRSO
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE \?CCL9
+ ICALL1 CTHE-PRINT
+ PRINTI " shimmers like a wave of heat. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+?CCL9: EQUAL? PRSA,V?HIT,V?MUNG,V?CUT /?CTR10
+ EQUAL? PRSA,V?RIP,V?CUT,V?OPEN /?CTR10
+ EQUAL? PRSA,V?OPEN-WITH,V?KICK,V?STOUCH-TO \?CCL11
+?CTR10: ICALL2 TOUCH-DEAD-WITH,PRSI
+ RTRUE
+?CCL11: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL2 TOUCH-DEAD-WITH,HANDS
+ RTRUE
+
+
+ .FUNCT TOUCH-DEAD-WITH,OBJ
+ EQUAL? OBJ,VIAL /?CND1
+ ICALL PASSES-THROUGH,OBJ,DEAD
+ RTRUE
+?CND1: ICALL2 VANISH,VIAL
+ PRINT YOU-HEAR
+ PRINTI "a sharp "
+ ICALL2 ITALICIZE,STR?674
+ PRINTI " as "
+ ICALL2 THE-PRINT,VIAL
+ PRINTI " shatters, splashing your target with a shower of droplets that burst into fire on contact! The blasphemous creature opens its jaws in a silent scream as a purifying flame engulfs its ghostly form.
+ Moments later, the last few cinders scatter in the breeze."
+ CRLF
+ ICALL2 KILL-MONSTER,DEAD
+ RTRUE
+
+
+ .FUNCT GHOUL-F,CONTEXT,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-CONT \FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ PRINTI "Laughing insanely, "
+ ICALL2 THE-PRINT,GHOUL
+ PRINTR " dodges out of reach."
+?CCL3: ZERO? NOW-PRSI? /?CCL9
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL9: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTI " glares back at you. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+
+
+ .FUNCT CORBIES-F,FEAR,X
+ ZERO? BADKEY /?CND1
+ LOC BADKEY
+ EQUAL? STACK,PLAYER,HERE \?CND1
+ INC 'FEAR
+?CND1: ZERO? NOW-PRSI? /?CCL7
+ EQUAL? PRSA,V?THROW,V?THROW-OVER,V?GIVE /?CTR9
+ EQUAL? PRSA,V?FEED,V?SHOW \?CCL10
+?CTR9: FSET PRSI,SEEN
+ EQUAL? PRSA,V?SHOW /?CND13
+ MOVE PRSO,HERE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+?CND13: ICALL1 CTHEI-PRINT
+ EQUAL? PRSO,BADKEY \?CND15
+ PRINTR " screech with fear!"
+?CND15: PRINTI " snatch "
+ ICALL1 THE-PRINT
+ PRINTI " out of the air, aim carefully and drop it"
+ RANDOM 100
+ LESS? 50,STACK /?CND17
+ PRINTI " on your skull. Ouch!"
+ CRLF
+ GETP PRSO,P?SIZE
+ SUB 0,STACK
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+?CND17: PRINTR ", narrowly missing your skull."
+?CCL10: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL1 CORBIES-STAY-AWAY
+ RTRUE
+?CCL7: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL21
+ ICALL2 CTHE-PRINT,CORBIES
+ PRINTI " shriek back obscenities."
+ CRLF
+ RETURN 2
+?CCL21: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL25
+ PRINTI "The flock of "
+ PRINTD PRSO
+ PRINTI " soars overhead in "
+ ZERO? FEAR /?CCL28
+ PRINTI "high, frightened "
+ JUMP ?CND26
+?CCL28: PRINTI "low, menacing "
+?CND26: PRINTI "circles."
+ CRLF
+ FSET? PRSO,IDENTIFIED /TRUE
+ FSET PRSO,IDENTIFIED
+ PRINT TAB
+ ICALL1 REFER-TO-PACKAGE
+ RTRUE
+?CCL25: EQUAL? PRSA,V?WHAT,V?WHO \?CCL32
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+?CCL32: ZERO? FEAR \?CND5
+ EQUAL? PRSA,V?HIT,V?MUNG,V?CUT /?CCL36
+ EQUAL? PRSA,V?KICK \?CND5
+?CCL36: FCLEAR CORBIES,SEEN
+ ICALL1 CTHE-PRINT
+ PRINTR " flutter out of your reach."
+?CND5: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL1 CORBIES-STAY-AWAY
+ RTRUE
+
+
+ .FUNCT CORBIES-STAY-AWAY
+ ICALL2 CTHE-PRINT,CORBIES
+ ZERO? BADKEY /?CND1
+ LOC BADKEY
+ EQUAL? STACK,PLAYER,HERE \?CND1
+ FSET CORBIES,SEEN
+ PRINT STR?619
+ RTRUE
+?CND1: FCLEAR CORBIES,SEEN
+ PRINTR " easily swoop out of reach."
+
+
+ .FUNCT GRINDER-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ SET 'P-HIM-OBJECT,GRINDER
+ ICALL2 PRINTCA,GRINDER
+ PRINT SIS
+ FSET? GRINDER,SURPRISED \?CND4
+ PRINTI "loafing nearby."
+ RTRUE
+?CND4: PRINTI "attacking you with his "
+ PRINTD GURDY
+ PRINTC 33
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-CONT \?CCL7
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL2 CTHE-PRINT,GRINDER
+ PRINTI " slaps your hand away."
+ RANDOM 100
+ LESS? 50,STACK /?CND10
+ PRINTR " ""Touchy, touchy."""
+?CND10: CRLF
+ RTRUE
+?CCL7: ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL15
+ EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL18
+ ICALL2 GIVE-TO-GRINDER,PRSO
+ RTRUE
+?CCL18: EQUAL? PRSA,V?SHOW \FALSE
+ ICALL2 SHOW-TO-GRINDER,PRSO
+ RTRUE
+?CCL15: EQUAL? PRSA,V?HELLO,V?WAVE-AT \?CCL21
+ FSET GRINDER,SEEN
+ PRINTR """Hello, victim."""
+?CCL21: EQUAL? PRSA,V?GOODBYE \?CCL23
+ PRINTR """Heh heh heh."""
+?CCL23: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL25
+ ICALL2 PERPLEXED,GRINDER
+ PRINTI "You babble of "
+ ZERO? PRSI /?CCL28
+ FSET? PRSI,LIVING /?CTR27
+ FSET? PRSI,MONSTER \?CCL28
+?CTR27: PRINTI "be"
+ JUMP ?CND26
+?CCL28: PRINTI "th"
+?CND26: PRINTI "ings of no significance to me!"""
+ CRLF
+ RETURN 2
+?CCL25: EQUAL? PRSA,V?EXAMINE \?CCL36
+ ICALL1 DIAGNOSE-MONSTER
+ FSET? PRSO,TOUCHED /TRUE
+ FSET PRSO,TOUCHED
+ PRINT TAB
+ ICALL1 REFER-TO-PACKAGE
+ RTRUE
+?CCL36: EQUAL? PRSA,V?HIT,V?MUNG \?CCL40
+ ICALL1 CTHE-PRINT
+ PRINTI " easily avoids "
+ EQUAL? PRSI,FALSE-VALUE,HANDS,FEET /?CCL42
+ FSET? PRSI,NOARTICLE /?CND41
+?CCL42: PRINTI "your "
+?CND41: EQUAL? PRSA,V?KICK /?CTR46
+ EQUAL? PRSI,FEET \?CCL47
+?CTR46: PRINTB W?FOOT
+ JUMP ?CND45
+?CCL47: EQUAL? PRSI,FALSE-VALUE,HANDS \?CCL51
+ PRINTB W?BLOW
+ JUMP ?CND45
+?CCL51: ICALL2 DPRINT,PRSI
+?CND45: PRINT PERIOD
+ RTRUE
+?CCL40: EQUAL? PRSA,V?WHAT,V?WHO \FALSE
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+
+
+ .FUNCT SOME,OBJ
+ FSET? OBJ,PLURAL \?CND1
+ PRINTI "some"
+ RTRUE
+?CND1: PRINTI "one"
+ RTRUE
+
+
+ .FUNCT GIVE-TO-GRINDER,OBJ
+ FSET GRINDER,SEEN
+ CALL GIVING-LOOT?,OBJ,GRINDER
+ ZERO? STACK \TRUE
+ EQUAL? OBJ,CHEST \?CND1
+ ICALL1 GRINDERS-BANE
+ RTRUE
+?CND1: PRINTI """If I wanted "
+ ICALL2 PRINTA,OBJ
+ PRINTI ", I'd steal "
+ ICALL2 SOME,OBJ
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT SHOW-TO-GRINDER,OBJ
+ FSET GRINDER,SEEN
+ EQUAL? OBJ,CHEST \?CND1
+ ICALL2 GRINDERS-BANE,TRUE-VALUE
+ RTRUE
+?CND1: ICALL2 CTHE-PRINT,GRINDER
+ PRINT GLANCES-AT
+ ICALL2 THE-PRINT,OBJ
+ PRINTR " and yawns conspicuously."
+
+
+ .FUNCT EXIT-GRINDER
+ MOVE GURDY,HERE
+ SET 'GRTIMER,0
+ ICALL2 KILL-MONSTER,GRINDER
+ SET 'P-IT-OBJECT,GURDY
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ RFALSE
+
+
+ .FUNCT GRINDERS-BANE,TAKIT,L
+ LOC CHEST >L
+ MOVE CHEST,AT-GATE
+ PRINTI """A treasure chest!"" crows "
+ ICALL2 THE-PRINT,GRINDER
+ PRINTI ", snatching it "
+ EQUAL? L,PLAYER \?CCL3
+ PRINTI "rudely away from you"
+ JUMP ?CND1
+?CCL3: ICALL2 OUT-OF-LOC,L
+?CND1: PRINTI ". ""I just "
+ ICALL2 ITALICIZE,STR?676
+ PRINTI " surprises.""
+ You wince as he taps on the outside of the chest, shakes it, then turns it upside down. Nothing happens. Then he places it on the ground, stares without comprehension at the brass plate, and cracks his knuckles"
+ PRINT PTAB
+ ICALL2 DESCRIBE-GATE,GRINDER
+ ICALL1 EXIT-GRINDER
+ RTRUE
+
+
+ .FUNCT DESCRIBE-URGRUE,OBJ
+ ZERO? LIT? \?CCL2
+ CALL2 WEARING-MAGIC?,HELM
+ ZERO? STACK /?CND1
+?CCL2: PRINTD OBJ
+ RTRUE
+?CND1: PRINTI "voice"
+ RTRUE
+
+
+ .FUNCT URGRUE-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ CALL NOUN-USED?,W?URGRUE,W?UR-GRUE
+ ZERO? STACK /?CCL5
+ ICALL1 PCLEAR
+ PRINTI "It is unwise to speak of such things."
+ CRLF
+ ICALL UPDATE-STAT,-1,LUCK,TRUE-VALUE
+ RETURN 2
+?CCL5: ZERO? NOW-PRSI? /?CCL9
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X \?CCL12
+ ICALL1 HOPELESS
+ RTRUE
+?CCL12: EQUAL? PRSA,V?GIVE,V?SHOW,V?FEED \FALSE
+ ICALL1 NO-INTS
+ RTRUE
+?CCL9: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL15
+ ICALL1 NO-INTS
+ RTRUE
+?CCL15: EQUAL? PRSA,V?HIT,V?MUNG,V?CUT \?CCL17
+ ICALL1 HOPELESS
+ RTRUE
+?CCL17: EQUAL? PRSA,V?EXAMINE,V?WHAT,V?WHO \FALSE
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+
+
+ .FUNCT HOPELESS
+ PRINTR "A feeling of utter hopelessness stays your hand."
+
+
+ .FUNCT NO-INTS
+ ICALL1 PCLEAR
+ PRINTI """Please don't interrupt my monologue,"" scolds the "
+ ZERO? LIT? \?CCL2
+ CALL2 WEARING-MAGIC?,HELM
+ ZERO? STACK /?CND1
+?CCL2: PRINTD URGRUE
+ PRINT PERIOD
+ RTRUE
+?CND1: PRINTR "voice in the darkness."
+
+
+ .FUNCT XTREES-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL8
+ ICALL1 V-THROW
+ EQUAL? PRSO,BFLY \TRUE
+ IN? PRSO,HERE \TRUE
+ PRINT TAB
+ ICALL1 SHOW-XTREES-BFLY?
+ RTRUE
+?CCL8: EQUAL? PRSA,V?SHOW,V?GIVE,V?GET-FOR \?CCL14
+ EQUAL? PRSO,BFLY \?CND15
+ ICALL1 SHOW-XTREES-BFLY?
+ RTRUE
+?CND15: ICALL2 CTHE-PRINT,XTREES
+ PRINTI " show no interest in "
+ ICALL1 THE-PRINT
+ PRINT PERIOD
+ RTRUE
+?CCL14: INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ ICALL1 CTHEI-PRINT
+ PRINTR " edge away from you."
+?CCL5: EQUAL? PRSA,V?WAVE-AT,V?HELLO /?CTR18
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL19
+?CTR18: ICALL1 PCLEAR
+ ICALL2 CTHE-PRINT,XTREES
+ PRINTI " are too busy singing"
+ PRINT STR?657
+ RETURN 2
+?CCL19: EQUAL? PRSA,V?EXAMINE \?CCL25
+ ICALL1 REFER-TO-PACKAGE
+ RTRUE
+?CCL25: EQUAL? PRSA,V?LISTEN \?CCL27
+ PRINTR "Still singing."
+?CCL27: EQUAL? PRSA,V?SMELL \?CCL29
+ PRINTI "The scent of pine"
+ PRINT STR?596
+ PRINT PERIOD
+ RTRUE
+?CCL29: EQUAL? PRSA,V?HIT,V?MUNG,V?KICK \?CCL31
+ PRINTR "Sure. And even if you hit one tree, what about the thousands of others?"
+?CCL31: EQUAL? PRSA,V?COUNT \?CCL33
+ PRINTI "A quick count reveals 69,105 "
+ PRINTD PRSO
+ PRINT PERIOD
+ RTRUE
+?CCL33: EQUAL? PRSA,V?WHAT,V?WHO \?CCL35
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+?CCL35: EQUAL? PRSA,V?LAMP-OFF \FALSE
+ ICALL1 HOW?
+ RTRUE
+
+
+ .FUNCT SHOW-XTREES-BFLY?,INDENT
+ FSET? BFLY,MUNGED \?CTR2
+ CALL2 VISIBLE?,BFLY
+ ZERO? STACK \?CCL3
+?CTR2: FSET XTREES,SEEN
+ ZERO? INDENT /?CND6
+ PRINT TAB
+?CND6: ICALL2 CTHE-PRINT,XTREES
+ PRINTR " murmur with vague concern."
+?CCL3: FSET? BFLY,LIVING /?CND1
+ FSET XTREES,SEEN
+ ZERO? INDENT /?CND9
+ PRINT TAB
+?CND9: ICALL2 CTHE-PRINT,XTREES
+ PRINTI " hesitate for a moment when they spot "
+ ICALL2 THE-PRINT,BFLY
+ PRINTR ". But as it isn't moving, they soon resume their song."
+?CND1: ZERO? INDENT /?CND11
+ PRINT TAB
+?CND11: FSET XTREES,SEEN
+ ICALL2 CTHE-PRINT,XTREES
+ FSET? XTREES,NEUTRALIZED \?CND13
+ PRINTR " seem to have gotten over their initial shock. Their carolling proceeds with renewed joy and determination."
+?CND13: FSET XTREES,NEUTRALIZED
+ PRINTI " stop dead in their tracks when they spot "
+ ICALL2 THE-PRINT,BFLY
+ PRINTI ". Youngsters take root behind their mothers, and the leaders sing an emergency verse of """
+ CALL2 PICK-NEXT,CAROLS
+ PRINT STACK
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT GRUE-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL5: EQUAL? PRSA,V?WHAT,V?WHO \?CCL9
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+?CCL9: IN? GRUE,HERE /FALSE
+ EQUAL? PRSA,V?FIND,V?WHERE \?CCL15
+ PRINTI "There's probably one"
+ PRINT STR?677
+ RTRUE
+?CCL15: EQUAL? PRSA,V?LISTEN \FALSE
+ PRINTI "Grues make no sound, but are always"
+ PRINT STR?677
+ RTRUE
+
+
+ .FUNCT ASUCKER-F,CONTEXT
+ CALL2 HANDLE-SUCKERS?,ASUCKER
+ RSTACK
+
+
+ .FUNCT BSUCKER-F,CONTEXT
+ CALL2 HANDLE-SUCKERS?,BSUCKER
+ RSTACK
+
+
+ .FUNCT CSUCKER-F,CONTEXT
+ CALL2 HANDLE-SUCKERS?,CSUCKER
+ RSTACK
+
+
+ .FUNCT DESCRIBE-SUCKERS,OBJ
+ GET SUCKER-NAMES,THIS-SUCKER
+ PRINT STACK
+ RTRUE
+
+
+ .FUNCT HANDLE-SUCKERS?,OBJ,X
+ CALL2 NOUN-USED?,W?INTNUM
+ ZERO? STACK /?CCL3
+ EQUAL? P-NUMBER,13 /?CCL3
+ PRINT CANT
+ PRINTI "see that number here."
+ CRLF
+ RETURN 2
+?CCL3: ZERO? NOW-PRSI? /?CCL9
+ EQUAL? PRSA,V?SHOW \?CCL12
+ ICALL1 CTHEI-PRINT
+ PRINTI " seems "
+ EQUAL? PRSO,RFOOT,CLOVER,SHOE /?CND13
+ PRINTI "indifferent to "
+ ICALL2 SAY-YOUR,PRSO
+ PRINT PERIOD
+ RTRUE
+?CND13: PRINTR "to hesitate for a moment."
+?CCL12: EQUAL? PRSA,V?THROW,V?THROW-OVER,V?TOUCH-TO \FALSE
+ ICALL TOUCH-SUCKER-WITH,OBJ,PRSO
+ RTRUE
+?CCL9: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL17
+ ICALL1 CTHE-PRINT
+ PRINTR " returns your stare."
+?CCL17: EQUAL? PRSA,V?HIT,V?MUNG,V?CUT /?CTR18
+ EQUAL? PRSA,V?RIP,V?CUT,V?OPEN /?CTR18
+ EQUAL? PRSA,V?OPEN-WITH,V?KICK,V?STOUCH-TO \?CCL19
+?CTR18: ICALL TOUCH-SUCKER-WITH,OBJ,PRSI
+ RTRUE
+?CCL19: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL24
+ ICALL TOUCH-SUCKER-WITH,OBJ,HANDS
+ RTRUE
+?CCL24: EQUAL? PRSA,V?WHAT,V?WHO \FALSE
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+
+
+ .FUNCT TOUCH-SUCKER-WITH,SUCKER,OBJ
+ EQUAL? OBJ,RFOOT,CLOVER,SHOE /?CND1
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CND3
+ MOVE OBJ,HERE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+?CND3: ICALL PASSES-THROUGH,OBJ,SUCKER
+ RTRUE
+?CND1: ICALL2 VANISH,OBJ
+ ICALL1 KERBLAM
+ ICALL2 CTHE-PRINT,OBJ
+ ICALL2 BLAST-SUCKER,SUCKER
+ RTRUE
+
+
+ .FUNCT BLAST-SUCKER,OBJ
+ PUTP OBJ,P?ENDURANCE,0
+ PRINTR " explodes in a shower of green sparks!"
+
+
+ .FUNCT DESCRIBE-WIGHT,OBJ
+ PRINTB W?SNOWDRIFT
+ RTRUE
+
+
+ .FUNCT START-WIGHT,X
+ FSET WIGHT,MONSTER
+ FSET WIGHT,LIVING
+ FCLEAR WIGHT,SURFACE
+ FCLEAR WIGHT,CONTAINER
+ FCLEAR WIGHT,OPENED
+ ICALL REPLACE-SYN?,WIGHT,W?DRIFT,W?MONSTER
+ ICALL REPLACE-SYN?,WIGHT,W?SNOWDRIFT,W?WIGHT
+ ICALL2 QUEUE,I-WIGHT
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'LAST-MONSTER,WIGHT
+ SET 'LAST-MONSTER-DIR,P?SOUTH
+ SET 'P-IT-OBJECT,WIGHT
+ ICALL2 AS-YOU-APPROACH,WIGHT
+ PUTP WIGHT,P?SDESC,0
+ PRINTI "a pair of bloodstained claws swipes "
+ PRINT STR?668
+ RTRUE
+
+
+ .FUNCT WIGHT-F,CONTEXT,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-OBJDESC \FALSE
+ FSET? WIGHT,MONSTER /?CND6
+ ICALL2 PRINTCA,WIGHT
+ PRINTI " is blocking the uphill trail."
+ RTRUE
+?CND6: ICALL1 VIEW-MONSTER
+ RTRUE
+?CCL3: FSET? WIGHT,MONSTER /?CND1
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CND1
+ ICALL1 START-WIGHT
+ RTRUE
+?CND1: ZERO? NOW-PRSI? /?CCL12
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 MONSTER-THROW
+ RTRUE
+?CCL12: EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ FSET? PRSO,MONSTER \?CND17
+ PRINTI " is equipped with long, sharp teeth and claws, stained with the blood of its last encounter. "
+ ICALL1 DIAGNOSE-MONSTER
+ RTRUE
+?CND17: ICALL1 HELMLOOK
+ RTRUE
+
+
+ .FUNCT SHAPE-F,CONTEXT,TBL,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-OBJDESC \FALSE
+ SET 'X,P?NW
+?PRG6: GETP HERE,X >TBL
+ ZERO? TBL /?CND8
+ GET TBL,XDATA
+ EQUAL? STACK,OPLAIN /?REP7
+?CND8: IGRTR? 'X,P?NORTH \?PRG6
+ RTRUE
+?REP7: ICALL2 PRINTCA,SHAPE
+ PRINTI " is stretched across the "
+ SUB X,P?NORTH
+ SUB 0,STACK
+ GET DIR-NAMES,STACK
+ PRINTB STACK
+ PRINTI " plane."
+ RTRUE
+?CCL3: ZERO? NOW-PRSI? /?CCL14
+ EQUAL? PRSA,V?TOUCH-TO \?CCL17
+ ICALL2 TOUCH-SHAPE-WITH,PRSO
+ RTRUE
+?CCL17: INTBL? PRSA,PUTVERBS,NUMPUTS >X \?CCL19
+ EQUAL? PRSO,PHASE \?CND20
+ ICALL1 CTHEI-PRINT
+ PRINTI " flexes away from "
+ ICALL1 THE-PRINT
+ PRINT PERIOD
+ RTRUE
+?CND20: ICALL1 PRSO-SLIDES-OFF-PRSI
+ RTRUE
+?CCL19: EQUAL? PRSA,V?LOOK-THRU \FALSE
+ ICALL1 DISTORTED
+ RTRUE
+?CCL14: INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X \?CCL24
+ ICALL1 CTHE-PRINT
+ PRINTR " flexes backwards and sideways, thwarting your best efforts."
+?CCL24: EQUAL? PRSA,V?HIT,V?MUNG,V?CUT /?CTR25
+ EQUAL? PRSA,V?RIP,V?CUT,V?OPEN /?CTR25
+ EQUAL? PRSA,V?OPEN-WITH,V?KICK,V?STOUCH-TO \?CCL26
+?CTR25: ICALL2 TOUCH-SHAPE-WITH,PRSI
+ RTRUE
+?CCL26: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL31
+ ICALL2 TOUCH-SHAPE-WITH,HANDS
+ RTRUE
+?CCL31: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL33
+ PRINTI "Looking directly at "
+ ICALL1 THE-PRINT
+ PRINTR " makes your head ache."
+?CCL33: EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND \FALSE
+ ICALL1 DISTORTED
+ RTRUE
+
+
+ .FUNCT DISTORTED
+ PRINTI "The space beyond "
+ ICALL2 THE-PRINT,SHAPE
+ PRINTR " appears hopelessly distorted."
+
+
+ .FUNCT TOUCH-SHAPE-WITH,OBJ
+ EQUAL? OBJ,PHASE /?CCL3
+ ICALL PASSES-THROUGH,OBJ,SHAPE
+ RTRUE
+?CCL3: IN? OBJ,PLAYER /?CND1
+ ICALL YOUD-HAVE-TO,STR?680,OBJ
+ RTRUE
+?CND1: ICALL2 VANISH,SHAPE
+ FCLEAR SHAPE,LIVING
+ SET 'LAST-MONSTER,FALSE-VALUE
+ SET 'LAST-MONSTER-DIR,FALSE-VALUE
+ ICALL1 HUMS
+ PRINTI "slashes effortlessly through "
+ ICALL2 THE-PRINT,SHAPE
+ PRINTI ". The torn edges recoil in agony, twist inside out and vanish in a toroid of collapsing geometry, leaving you with a clear path and a headache."
+ CRLF
+ GETP SHAPE,P?VALUE
+ ICALL UPDATE-STAT,STACK,EXPERIENCE
+ RTRUE
+
+ .ENDI
diff --git a/parser.zap b/parser.zap
new file mode 100644
index 0000000..3467f45
--- /dev/null
+++ b/parser.zap
@@ -0,0 +1,2885 @@
+
+
+ .FUNCT PARSER,PTR,VAL,VERB,OF-FLAG,LEN,DIR,NW,LW,OWINNER,OMERGED,WRD,X,?TMP2,?TMP1
+ SET 'PTR,P-LEXSTART
+?PRG1: ZERO? P-OFLAG \?CND3
+ COPYT P-ITBL,P-OTBL,P-ITBLLEN
+?CND3: COPYT P-ITBL,0,P-ITBLLEN
+ SET 'P-NAM,FALSE-VALUE
+ SET 'P-ADJ,FALSE-VALUE
+ SET 'P-XNAM,FALSE-VALUE
+ SET 'P-XADJ,FALSE-VALUE
+ SET 'P-DIR-WORD,FALSE-VALUE
+ SET 'P-PNAM,FALSE-VALUE
+ SET 'P-PADJN,FALSE-VALUE
+ ZERO? P-OFLAG \?CND5
+ SET 'P-ACT,FALSE-VALUE
+ SET 'P-QWORD,FALSE-VALUE
+ SET 'P-LASTADJ,FALSE-VALUE
+ PUT P-NAMW,0,FALSE-VALUE
+ PUT P-NAMW,1,FALSE-VALUE
+ PUT P-ADJW,0,FALSE-VALUE
+ PUT P-ADJW,1,FALSE-VALUE
+ PUT P-OFW,0,FALSE-VALUE
+ PUT P-OFW,1,FALSE-VALUE
+?CND5: SET 'OMERGED,P-MERGED
+ SET 'P-MERGED,FALSE-VALUE
+ SET 'P-END-ON-PREP,FALSE-VALUE
+ PUT P-PRSO,P-MATCHLEN,0
+ PUT P-PRSI,P-MATCHLEN,0
+ PUT P-BUTS,P-MATCHLEN,0
+ SET 'OWINNER,WINNER
+ ZERO? QUOTE-FLAG \?CND7
+ EQUAL? WINNER,PLAYER /?CND7
+ SET 'WINNER,PLAYER
+ LOC WINNER
+ FSET? STACK,VEHICLE /?CND11
+ LOC WINNER >HERE
+?CND11: CALL1 IS-LIT? >LIT?
+?CND7: ZERO? RESERVE-PTR /?CCL15
+ SET 'PTR,RESERVE-PTR
+ COPYT RESERVE-LEXV,P-LEXV,P-LEXV-LENGTH
+ COPYT RESERVE-INBUF,P-INBUF,P-INBUF-LENGTH
+ ZERO? VERBOSITY /?CND16
+ EQUAL? PLAYER,WINNER \?CND16
+ CRLF
+?CND16: SET 'RESERVE-PTR,FALSE-VALUE
+ SET 'P-CONT,FALSE-VALUE
+ JUMP ?CND13
+?CCL15: ZERO? P-CONT /?CCL21
+ SET 'PTR,P-CONT
+ SET 'P-CONT,FALSE-VALUE
+ ZERO? VERBOSITY /?CND13
+ EQUAL? PLAYER,WINNER \?CND13
+ CRLF
+ JUMP ?CND13
+?CCL21: SET 'WINNER,PLAYER
+ SET 'QUOTE-FLAG,FALSE-VALUE
+ LOC WINNER
+ FSET? STACK,VEHICLE /?CND26
+ LOC WINNER >HERE
+?CND26: CALL1 IS-LIT? >LIT?
+ GET 0,8
+ BTST STACK,4 \?CND28
+ ICALL1 V-REFRESH
+?CND28: EQUAL? HERE,OLD-HERE /?CND30
+ ZERO? DMODE /?CTR32
+ EQUAL? IN-DBOX,SHOWING-STATS /?CTR32
+ EQUAL? PRIOR,SHOWING-INV,SHOWING-STATS \?CCL33
+?CTR32: ICALL1 V-LOOK
+ JUMP ?CND30
+?CCL33: ICALL1 DISPLAY-PLACE
+?CND30: ZERO? DMODE /?CND37
+ ZERO? AUTO /?CND37
+ ZERO? NEW-DBOX /?CND37
+ EQUAL? IN-DBOX,SHOWING-ROOM \?CCL42
+ EQUAL? PRIOR,0,SHOWING-ROOM \?CCL42
+ BTST NEW-DBOX,SHOWING-ROOM \?CND37
+ SET 'X,P-IT-OBJECT
+ ICALL1 UPDATE-ROOMDESC
+ ICALL2 THIS-IS-IT,X
+ JUMP ?CND37
+?CCL42: EQUAL? IN-DBOX,SHOWING-INV \?CCL48
+ EQUAL? PRIOR,0,SHOWING-INV \?CCL48
+ BTST NEW-DBOX,SHOWING-INV \?CND37
+ SET 'X,P-IT-OBJECT
+ ICALL1 UPDATE-INVENTORY
+ ICALL2 THIS-IS-IT,X
+ JUMP ?CND37
+?CCL48: EQUAL? IN-DBOX,SHOWING-STATS \?CND37
+ EQUAL? PRIOR,0,SHOWING-STATS \?CND37
+ BTST NEW-DBOX,SHOWING-STATS \?CND37
+ SET 'X,ENDURANCE
+ ICALL1 TO-TOP-WINDOW
+?PRG58: GET STATS,X
+ ICALL STAT-ROUTINE,X,STACK
+ IGRTR? 'X,LUCK \?PRG58
+ ICALL1 TO-BOTTOM-WINDOW
+?CND37: ZERO? VERBOSITY /?CND62
+ CRLF
+?CND62: PRINTC 62
+ ICALL1 READ-LEXV
+?CND13: GETB P-LEXV,P-LEXWORDS >P-LEN
+ GET P-LEXV,PTR
+ EQUAL? STACK,W?QUOTE \?CND64
+ ADD PTR,P-LEXELEN >PTR
+ DEC 'P-LEN
+?CND64: GET P-LEXV,PTR
+ EQUAL? STACK,W?THEN,W?PLEASE,W?SO \?CND66
+ ADD PTR,P-LEXELEN >PTR
+ DEC 'P-LEN
+?CND66: LESS? 1,P-LEN \?CND68
+ GET P-LEXV,PTR
+ EQUAL? STACK,W?GO \?CND68
+ ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK >NW
+ ZERO? NW /?CND68
+ CALL WT?,NW,64
+ ZERO? STACK /?CND68
+ ADD PTR,P-LEXELEN >PTR
+ DEC 'P-LEN
+?CND68: ZERO? P-LEN \?CND74
+ PRINTI "[What?]"
+ CRLF
+ RFALSE
+?CND74: GET P-LEXV,PTR >WRD
+ EQUAL? WRD,W?UNDO \?CND76
+ ICALL1 V-UNDO
+ RFALSE
+?CND76: ISAVE >CAN-UNDO
+ EQUAL? CAN-UNDO,2 \?REP2
+ ICALL1 V-REFRESH
+ ICALL2 COMPLETED,STR?508
+ ZERO? DMODE /?CCL81
+ EQUAL? PRIOR,0,SHOWING-ROOM /?PRG1
+?CCL81: CRLF
+ JUMP ?PRG1
+?REP2: EQUAL? WRD,W?OOPS \?CCL86
+ ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK
+ EQUAL? STACK,W?PERIOD,W?COMMA \?CND87
+ ADD PTR,P-LEXELEN >PTR
+ DEC 'P-LEN
+?CND87: GRTR? P-LEN,1 /?CCL91
+ PRINTC 91
+ PRINT CANT
+ PRINTI "use OOPS that way.]"
+ CRLF
+ RFALSE
+?CCL91: GET OOPS-TABLE,O-PTR
+ ZERO? STACK /?CCL93
+ GRTR? P-LEN,2 \?CND94
+ ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK
+ EQUAL? STACK,W?QUOTE \?CND96
+ PRINTI "[Sorry. "
+ PRINT CANT
+ PRINTI "correct mistakes in quoted text.]"
+ CRLF
+ RFALSE
+?CND96: PRINTI "[NOTE: Only the first word after OOPS is used.]"
+ CRLF
+ PRINT TAB
+?CND94: GET OOPS-TABLE,O-PTR >?TMP1
+ ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK
+ PUT AGAIN-LEXV,?TMP1,STACK
+ SET 'WINNER,OWINNER
+ MUL PTR,P-LEXELEN
+ ADD STACK,6
+ GETB P-LEXV,STACK >?TMP2
+ MUL PTR,P-LEXELEN
+ ADD STACK,7
+ GETB P-LEXV,STACK >?TMP1
+ GET OOPS-TABLE,O-PTR
+ MUL STACK,P-LEXELEN
+ ADD STACK,3
+ ICALL INBUF-ADD,?TMP2,?TMP1,STACK
+ COPYT AGAIN-LEXV,P-LEXV,P-LEXV-LENGTH
+ GETB P-LEXV,P-LEXWORDS >P-LEN
+ GET OOPS-TABLE,O-START >PTR
+ COPYT OOPS-INBUF,P-INBUF,P-INBUF-LENGTH
+ JUMP ?CND84
+?CCL93: PUT OOPS-TABLE,O-END,FALSE-VALUE
+ PRINTI "[There was no word to replace in that sentence.]"
+ CRLF
+ RFALSE
+?CCL86: EQUAL? WRD,W?AGAIN,W?G /?CND98
+ SET 'P-QWORD,FALSE-VALUE
+ SET 'P-NUMBER,-1
+?CND98: PUT OOPS-TABLE,O-END,FALSE-VALUE
+?CND84: GET P-LEXV,PTR
+ EQUAL? STACK,W?AGAIN,W?G \?CCL102
+ ZERO? P-OFLAG \?CTR104
+ ZERO? P-WON /?CTR104
+ GETB OOPS-INBUF,1
+ ZERO? STACK \?CCL105
+?CTR104: PRINTC 91
+ PRINT CANT
+ PRINTI "use AGAIN that way.]"
+ CRLF
+ RFALSE
+?CCL105: GRTR? P-LEN,1 \?CCL110
+ ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK
+ EQUAL? STACK,W?PERIOD,W?COMMA,W?THEN /?CTR112
+ ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK
+ EQUAL? STACK,W?AND \?CCL113
+?CTR112: ADD PTR,4 >PTR
+ GETB P-LEXV,P-LEXWORDS
+ SUB STACK,2
+ PUTB P-LEXV,P-LEXWORDS,STACK
+ JUMP ?CND103
+?CCL113: ICALL1 DONT-UNDERSTAND
+ RFALSE
+?CCL110: ADD PTR,P-LEXELEN >PTR
+ GETB P-LEXV,P-LEXWORDS
+ SUB STACK,1
+ PUTB P-LEXV,P-LEXWORDS,STACK
+?CND103: GETB P-LEXV,P-LEXWORDS
+ GRTR? STACK,0 \?CCL118
+ COPYT P-LEXV,RESERVE-LEXV,P-LEXV-LENGTH
+ COPYT P-INBUF,RESERVE-INBUF,P-INBUF-LENGTH
+ SET 'RESERVE-PTR,PTR
+ JUMP ?CND116
+?CCL118: SET 'RESERVE-PTR,FALSE-VALUE
+?CND116: SET 'WINNER,OWINNER
+ SET 'P-MERGED,OMERGED
+ COPYT OOPS-INBUF,P-INBUF,P-INBUF-LENGTH
+ COPYT AGAIN-LEXV,P-LEXV,P-LEXV-LENGTH
+ SET 'DIR,AGAIN-DIR
+ COPYT P-OTBL,P-ITBL,P-ITBLLEN
+ JUMP ?CND100
+?CCL102: SET 'P-NUMBER,-1
+ COPYT P-LEXV,AGAIN-LEXV,P-LEXV-LENGTH
+ COPYT P-INBUF,OOPS-INBUF,P-INBUF-LENGTH
+ PUT OOPS-TABLE,O-START,PTR
+ MUL 4,P-LEN
+ PUT OOPS-TABLE,O-LENGTH,STACK
+ GETB P-LEXV,P-LEXWORDS
+ MUL P-LEXELEN,STACK
+ ADD PTR,STACK
+ MUL 2,STACK >LEN
+ SUB LEN,1
+ GETB P-LEXV,STACK >?TMP1
+ SUB LEN,2
+ GETB P-LEXV,STACK
+ ADD ?TMP1,STACK
+ PUT OOPS-TABLE,O-END,STACK
+ SET 'RESERVE-PTR,FALSE-VALUE
+ SET 'LEN,P-LEN
+ SET 'P-DIR,FALSE-VALUE
+ SET 'P-NCN,0
+ SET 'P-GETFLAGS,0
+ PUT P-ITBL,P-VERBN,0
+?PRG119: DLESS? 'P-LEN,0 \?CND121
+ SET 'QUOTE-FLAG,FALSE-VALUE
+ JUMP ?CND100
+?CND121: GET P-LEXV,PTR >WRD
+ CALL2 BUZZER-WORD?,WRD
+ ZERO? STACK \FALSE
+ ZERO? WRD \?CTR126
+ CALL QUOTED-WORD?,PTR,VERB >WRD
+ ZERO? WRD \?CTR126
+ CALL2 NUMBER?,PTR >WRD
+ ZERO? WRD /?CCL127
+?CTR126: ZERO? P-LEN \?CCL133
+ SET 'NW,0
+ JUMP ?CND131
+?CCL133: ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK >NW
+?CND131: EQUAL? WRD,W?TO \?CCL136
+ EQUAL? VERB,ACT?TELL,ACT?ASK \?CCL136
+ PUT P-ITBL,P-VERB,ACT?TELL
+ SET 'WRD,W?QUOTE
+ JUMP ?CND134
+?CCL136: EQUAL? WRD,W?THEN \?CCL140
+ GRTR? P-LEN,0 \?CCL140
+ ZERO? VERB \?CCL140
+ ZERO? QUOTE-FLAG \?CCL140
+ PUT P-ITBL,P-VERB,ACT?TELL
+ PUT P-ITBL,P-VERBN,0
+ SET 'WRD,W?QUOTE
+ JUMP ?CND134
+?CCL140: EQUAL? WRD,W?PERIOD \?CND134
+ EQUAL? LW,W?MR,W?MRS \?CND134
+ DEC 'P-NCN
+ ICALL CHANGE-LEXV,PTR,LW,TRUE-VALUE
+ SET 'WRD,LW
+ SET 'LW,0
+?CND134: EQUAL? WRD,W?THEN,W?PERIOD,W?QUOTE \?CCL150
+ EQUAL? WRD,W?QUOTE \?CND151
+ GET P-LEXV,PTR
+ EQUAL? STACK,W?QUOTE \?CCL155
+ EQUAL? VERB,ACT?TELL,ACT?SAY \?CTR154
+ EQUAL? WINNER,PLAYER /?CCL155
+?CTR154: CALL QUOTED-PHRASE?,PTR,VERB
+ ZERO? STACK /FALSE
+ ADD PTR,P-LEXELEN >PTR
+ JUMP ?PRG119
+?CCL155: ZERO? QUOTE-FLAG /?CCL164
+ SET 'QUOTE-FLAG,FALSE-VALUE
+ JUMP ?CND151
+?CCL164: SET 'QUOTE-FLAG,TRUE-VALUE
+?CND151: ZERO? P-LEN /?PEN165
+ ADD PTR,P-LEXELEN >P-CONT
+?PEN165: PUTB P-LEXV,P-LEXWORDS,P-LEN
+ JUMP ?CND100
+?CCL150: CALL WT?,WRD,16,3 >VAL
+ ZERO? VAL /?CCL168
+ EQUAL? VERB,FALSE-VALUE,ACT?WALK,ACT?GO \?CCL168
+ EQUAL? LEN,1 /?CTR167
+ EQUAL? LEN,2 \?PRD174
+ EQUAL? VERB,ACT?WALK,ACT?GO /?CTR167
+?PRD174: EQUAL? NW,W?THEN,W?PERIOD,W?QUOTE \?PRD177
+ GRTR? LEN,1 /?CTR167
+?PRD177: ZERO? QUOTE-FLAG /?PRD180
+ EQUAL? LEN,2 \?PRD180
+ EQUAL? NW,W?QUOTE /?CTR167
+?PRD180: GRTR? LEN,2 \?CCL168
+ EQUAL? NW,W?COMMA,W?AND \?CCL168
+?CTR167: SET 'DIR,VAL
+ SET 'P-DIR-WORD,WRD
+ EQUAL? NW,W?COMMA,W?AND \?CND186
+ ADD PTR,P-LEXELEN
+ ICALL CHANGE-LEXV,STACK,W?THEN
+?CND186: GRTR? LEN,2 /?CND123
+ SET 'QUOTE-FLAG,FALSE-VALUE
+ JUMP ?CND100
+?CCL168: CALL WT?,WRD,64,1 >VAL
+ ZERO? VAL /?CCL191
+ ZERO? VERB \?CCL191
+ SET 'P-PRSA-WORD,WRD
+ SET 'VERB,VAL
+ PUT P-ITBL,P-VERB,VAL
+ PUT P-ITBL,P-VERBN,P-VTBL
+ PUT P-VTBL,0,WRD
+ MUL PTR,2
+ ADD STACK,2 >X
+ GETB P-LEXV,X
+ PUTB P-VTBL,2,STACK
+ ADD X,1
+ GETB P-LEXV,STACK
+ PUTB P-VTBL,3,STACK
+ JUMP ?CND123
+?CCL191: CALL WT?,WRD,8,0 >VAL
+ ZERO? VAL \?CTR194
+ EQUAL? WRD,W?ALL,W?EVERYTHING /?CTR194
+ EQUAL? WRD,W?BOTH,W?A /?CTR194
+ CALL WT?,WRD,32
+ ZERO? STACK \?CTR194
+ CALL WT?,WRD,128
+ ZERO? STACK /?CCL195
+?CTR194: GRTR? P-LEN,1 \?CCL203
+ EQUAL? NW,W?OF \?CCL203
+ EQUAL? VERB,ACT?TAKE /?CCL203
+ ZERO? VAL \?CCL203
+ EQUAL? WRD,W?A /?CCL203
+ EQUAL? WRD,W?ALL,W?BOTH,W?EVERYTHING /?CCL203
+ PUT P-OFW,P-NCN,WRD
+ SET 'OF-FLAG,TRUE-VALUE
+ JUMP ?CND123
+?CCL203: ZERO? VAL /?CCL211
+ ZERO? P-LEN /?CTR210
+ EQUAL? NW,W?THEN,W?PERIOD \?CCL211
+?CTR210: SET 'P-END-ON-PREP,TRUE-VALUE
+ LESS? P-NCN,2 \?CND123
+ PUT P-ITBL,P-PREP1,VAL
+ PUT P-ITBL,P-PREP1N,WRD
+ JUMP ?CND123
+?CCL211: EQUAL? P-NCN,2 \?CCL219
+ PRINTI "[There are too many nouns in that sentence.]"
+ CRLF
+ RFALSE
+?CCL219: INC 'P-NCN
+ SET 'P-ACT,VERB
+ CALL CLAUSE,PTR,VAL,WRD >PTR
+ ZERO? PTR /FALSE
+ LESS? PTR,0 \?CND123
+ SET 'QUOTE-FLAG,FALSE-VALUE
+?CND100: PUT OOPS-TABLE,O-PTR,FALSE-VALUE
+ ZERO? DIR /?CND236
+ SET 'PRSA,V?WALK
+ SET 'P-WALK-DIR,DIR
+ SET 'AGAIN-DIR,DIR
+ SET 'PRSO,DIR
+ SET 'P-OFLAG,FALSE-VALUE
+ RTRUE
+?CCL195: EQUAL? WRD,W?OF \?CCL225
+ ZERO? OF-FLAG /?CTR227
+ EQUAL? NW,W?PERIOD,W?THEN \?CCL228
+?CTR227: ICALL2 CANT-USE,PTR
+ RFALSE
+?CCL228: SET 'OF-FLAG,FALSE-VALUE
+?CND123: SET 'LW,WRD
+ ADD PTR,P-LEXELEN >PTR
+ JUMP ?PRG119
+?CCL225: CALL WT?,WRD,4
+ ZERO? STACK \?CND123
+ EQUAL? VERB,ACT?TELL \?CCL233
+ CALL WT?,WRD,64
+ ZERO? STACK /?CCL233
+ ICALL1 WAY-TO-TALK
+ RFALSE
+?CCL233: ICALL2 CANT-USE,PTR
+ RFALSE
+?CCL127: ICALL2 UNKNOWN-WORD,PTR
+ RFALSE
+?CND236: SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'AGAIN-DIR,FALSE-VALUE
+ ZERO? P-OFLAG /?CND238
+ CALL1 ORPHAN-MERGE
+ ZERO? STACK /?CND238
+ SET 'WINNER,OWINNER
+?CND238: CALL1 SYNTAX-CHECK
+ ZERO? STACK /FALSE
+ CALL1 SNARF-OBJECTS
+ ZERO? STACK /FALSE
+ CALL1 MANY-CHECK
+ ZERO? STACK /FALSE
+ GETB P-SYNTAX,P-SLOC1
+ CALL ITAKE-CHECK,P-PRSO,STACK
+ ZERO? STACK /FALSE
+ GETB P-SYNTAX,P-SLOC2
+ CALL ITAKE-CHECK,P-PRSI,STACK
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT PCLEAR
+ SET 'P-CONT,FALSE-VALUE
+ SET 'QUOTE-FLAG,FALSE-VALUE
+ RFALSE
+
+
+ .FUNCT CHANGE-LEXV,PTR,WRD,PTRS?,X,Y,Z
+ ASSIGNED? 'PTRS? \?CND1
+ SUB PTR,P-LEXELEN
+ MUL 2,STACK
+ ADD 2,STACK >X
+ GETB P-LEXV,X >Y
+ MUL 2,PTR
+ ADD 2,STACK >Z
+ PUTB P-LEXV,Z,Y
+ PUTB AGAIN-LEXV,Z,Y
+ ADD 1,X
+ GETB P-LEXV,STACK >Y
+ MUL 2,PTR
+ ADD 3,STACK >Z
+ PUTB P-LEXV,Z,Y
+ PUTB AGAIN-LEXV,Z,Y
+?CND1: PUT P-LEXV,PTR,WRD
+ PUT AGAIN-LEXV,PTR,WRD
+ RTRUE
+
+
+ .FUNCT WT?,PTR,BIT,B1,OFFS,TYP
+ ASSIGNED? 'B1 /?CND1
+ SET 'B1,5
+?CND1: SET 'OFFS,P-P1OFF
+ GETB PTR,P-PSOFF >TYP
+ BTST TYP,BIT \FALSE
+ GRTR? B1,4 /TRUE
+ BAND TYP,P-P1BITS >TYP
+ EQUAL? TYP,B1 /?CND7
+ INC 'OFFS
+?CND7: GETB PTR,OFFS
+ RSTACK
+
+
+ .FUNCT CLAUSE,PTR,VAL,WRD,FIRST??,ANDFLG,LW,OFF,NUM,NW,?TMP1
+ SET 'FIRST??,TRUE-VALUE
+ SUB P-NCN,1
+ MUL STACK,2 >OFF
+ ZERO? VAL /?CCL3
+ ADD P-PREP1,OFF >NUM
+ PUT P-ITBL,NUM,VAL
+ ADD NUM,1
+ PUT P-ITBL,STACK,WRD
+ ADD PTR,P-LEXELEN >PTR
+ JUMP ?CND1
+?CCL3: INC 'P-LEN
+?CND1: ZERO? P-LEN \?CND4
+ DEC 'P-NCN
+ RETURN -1
+?CND4: ADD P-NC1,OFF >NUM
+ MUL PTR,2
+ ADD P-LEXV,STACK
+ PUT P-ITBL,NUM,STACK
+ GET P-LEXV,PTR
+ EQUAL? STACK,W?THE,W?A,W?AN /?CCL7
+ GET P-LEXV,PTR
+ EQUAL? STACK,W?$BUZZ \?PRG10
+?CCL7: GET P-ITBL,NUM
+ ADD STACK,4
+ PUT P-ITBL,NUM,STACK
+?PRG10: DLESS? 'P-LEN,0 \?CND12
+ ADD NUM,1 >?TMP1
+ MUL PTR,2
+ ADD P-LEXV,STACK
+ PUT P-ITBL,?TMP1,STACK
+ RETURN -1
+?CND12: GET P-LEXV,PTR >WRD
+ CALL2 BUZZER-WORD?,WRD
+ ZERO? STACK \FALSE
+ ZERO? WRD \?CTR17
+ CALL2 QUOTED-WORD?,PTR >WRD
+ ZERO? WRD \?CTR17
+ CALL2 NUMBER?,PTR >WRD
+ ZERO? WRD /?CCL18
+?CTR17: ZERO? P-LEN \?CCL24
+ SET 'NW,0
+ JUMP ?CND22
+?CCL24: ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK >NW
+ ZERO? NW \?CND22
+ ADD PTR,P-LEXELEN
+ CALL2 NUMBER?,STACK >NW
+?CND22: EQUAL? WRD,W?QUOTE \?CCL29
+ EQUAL? P-ACT,ACT?TELL,ACT?SAY,ACT?NAME /?CCL29
+ CALL QUOTED-PHRASE?,PTR,P-ACT
+ ZERO? STACK /FALSE
+ ADD PTR,P-LEXELEN >PTR
+ JUMP ?PRG10
+?CCL29: EQUAL? WRD,W?PERIOD \?CCL36
+ EQUAL? LW,W?MR,W?MRS \?CCL36
+ SET 'LW,0
+ JUMP ?CND14
+?CCL36: EQUAL? WRD,W?AND,W?COMMA \?CCL40
+ SET 'ANDFLG,TRUE-VALUE
+ JUMP ?CND14
+?CCL40: EQUAL? WRD,W?ALL,W?BOTH,W?EVERYTHING \?CCL42
+ EQUAL? NW,W?OF \?CND14
+ DEC 'P-LEN
+ ADD PTR,P-LEXELEN >PTR
+ JUMP ?CND14
+?CCL42: EQUAL? WRD,W?THEN,W?PERIOD /?CTR45
+ CALL WT?,WRD,8
+ ZERO? STACK /?CCL46
+ GET P-ITBL,P-VERB
+ ZERO? STACK /?CCL46
+ ZERO? FIRST?? \?CCL46
+?CTR45: INC 'P-LEN
+ ADD NUM,1 >?TMP1
+ MUL PTR,2
+ ADD P-LEXV,STACK
+ PUT P-ITBL,?TMP1,STACK
+ SUB PTR,P-LEXELEN
+ RSTACK
+?CCL46: ZERO? ANDFLG /?CCL53
+ GET P-ITBL,P-VERBN
+ ZERO? STACK /?CTR52
+ CALL2 VERB-DIR-ONLY?,WRD
+ ZERO? STACK /?CCL53
+?CTR52: SUB PTR,4 >PTR
+ ADD PTR,2
+ ICALL CHANGE-LEXV,STACK,W?THEN
+ ADD P-LEN,2 >P-LEN
+ JUMP ?CND14
+?CCL53: CALL WT?,WRD,128
+ ZERO? STACK /?CCL59
+ GRTR? P-LEN,0 \?CCL62
+ EQUAL? NW,W?OF \?CCL62
+ EQUAL? WRD,W?ALL,W?EVERYTHING /?CCL62
+ SUB P-NCN,1
+ PUT P-OFW,STACK,WRD
+ JUMP ?CND14
+?CCL62: CALL WT?,WRD,32
+ ZERO? STACK /?CCL66
+ ZERO? NW /?CCL66
+ CALL WT?,NW,128
+ ZERO? STACK \?CND14
+?CCL66: ZERO? ANDFLG \?CCL71
+ EQUAL? NW,W?BUT,W?EXCEPT /?CCL71
+ EQUAL? NW,W?AND,W?COMMA /?CCL71
+ ADD NUM,1 >?TMP1
+ ADD PTR,2
+ MUL STACK,2
+ ADD P-LEXV,STACK
+ PUT P-ITBL,?TMP1,STACK
+ RETURN PTR
+?CCL71: SET 'ANDFLG,FALSE-VALUE
+ JUMP ?CND14
+?CCL59: CALL WT?,WRD,32
+ ZERO? STACK \?CND14
+ CALL WT?,WRD,4
+ ZERO? STACK \?CND14
+ ZERO? ANDFLG /?CCL78
+ GET P-ITBL,P-VERB
+ ZERO? STACK \?CCL78
+ SUB PTR,4 >PTR
+ ADD PTR,2
+ ICALL CHANGE-LEXV,STACK,W?THEN
+ ADD P-LEN,2 >P-LEN
+?CND14: SET 'LW,WRD
+ SET 'FIRST??,FALSE-VALUE
+ ADD PTR,P-LEXELEN >PTR
+ JUMP ?PRG10
+?CCL78: CALL WT?,WRD,8
+ ZERO? STACK \?CND14
+ ICALL2 CANT-USE,PTR
+ RFALSE
+?CCL18: ICALL2 UNKNOWN-WORD,PTR
+ RFALSE
+
+
+ .FUNCT SPOKEN-TO,WHO
+ EQUAL? WHO,QCONTEXT \?CCL2
+ EQUAL? HERE,QCONTEXT-ROOM /TRUE
+?CCL2: ICALL2 SEE-CHARACTER,WHO
+ PRINTI "[spoken to "
+ ICALL2 THE-PRINT,WHO
+ PRINT BRACKET
+ RTRUE
+
+
+ .FUNCT ANYONE-HERE?,OBJ
+ CALL1 QCONTEXT-GOOD? >OBJ
+ ZERO? OBJ /?PRD4
+ RETURN OBJ
+?PRD4: FIRST? HERE >OBJ /?PRG5
+ RETURN OBJ
+?PRG5: FSET? OBJ,PERSON \?CCL9
+ EQUAL? OBJ,PLAYER,WINNER /?CCL9
+ FSET? OBJ,PLURAL /?CCL9
+ RETURN OBJ
+?CCL9: NEXT? OBJ >OBJ /?PRG5
+ RETURN OBJ
+
+
+ .FUNCT SEE-CHARACTER,OBJ
+ FSET? OBJ,FEMALE \?CCL3
+ SET 'P-HER-OBJECT,OBJ
+ JUMP ?CND1
+?CCL3: SET 'P-HIM-OBJECT,OBJ
+?CND1: SET 'QCONTEXT,OBJ
+ LOC OBJ >QCONTEXT-ROOM
+ RFALSE
+
+
+ .FUNCT QCONTEXT-GOOD?
+ ZERO? QCONTEXT /FALSE
+ FSET? QCONTEXT,PERSON \FALSE
+ EQUAL? HERE,QCONTEXT-ROOM \FALSE
+ CALL2 VISIBLE?,QCONTEXT
+ ZERO? STACK /FALSE
+ RETURN QCONTEXT
+
+
+ .FUNCT THIS-IS-IT,OBJ
+ ZERO? OBJ /FALSE
+ EQUAL? OBJ,PLAYER,ME,INTNUM /FALSE
+ EQUAL? OBJ,INTDIR,LEFT,RIGHT /FALSE
+ FSET? OBJ,FEMALE \?CCL8
+ SET 'P-HER-OBJECT,OBJ
+ RFALSE
+?CCL8: FSET? OBJ,PERSON \?CCL10
+ SET 'P-HIM-OBJECT,OBJ
+ RFALSE
+?CCL10: FSET? OBJ,PLURAL \?CCL12
+ SET 'P-THEM-OBJECT,OBJ
+ RFALSE
+?CCL12: SET 'P-IT-OBJECT,OBJ
+ RFALSE
+
+
+ .FUNCT FAKE-ORPHAN,TMP,X
+ ICALL ORPHAN,P-SYNTAX,FALSE-VALUE
+ ICALL1 BE-SPECIFIC
+ GET P-OTBL,P-VERBN >TMP
+ ZERO? TMP \?CCL3
+ PRINTB W?TELL
+ JUMP ?CND1
+?CCL3: GETB P-VTBL,2
+ ZERO? STACK \?CCL5
+ GET TMP,0
+ PRINTB STACK
+ JUMP ?CND1
+?CCL5: GETB TMP,2 >X
+ GETB TMP,3
+ ICALL WORD-PRINT,X,STACK
+ PUTB P-VTBL,2,0
+?CND1: SET 'P-OFLAG,TRUE-VALUE
+ SET 'P-WON,FALSE-VALUE
+ PRINTR "?]"
+
+
+ .FUNCT PERFORM,A,O,I,V,WHO,OA,OO,OI,ONP,X
+ EQUAL? WINNER,PLAYER /?CND1
+ FSET? WINNER,PERSON /?CND1
+ ICALL2 NOT-LIKELY,WINNER
+ PRINT STR?509
+ ICALL1 PCLEAR
+ RETURN 2
+?CND1: SET 'OA,PRSA
+ SET 'OO,PRSO
+ SET 'OI,PRSI
+ SET 'ONP,NOW-PRSI?
+ CALL1 ANYONE-HERE? >WHO
+ SET 'PRSA,A
+ EQUAL? WINNER,PLAYER /?CCL9
+ INTBL? PRSA,GAME-VERBS,NGVERBS >X \?CCL9
+ PRINTC 91
+ PRINT CANT
+ PRINTI "tell characters to do that.]"
+ CRLF
+ RETURN 2
+?CCL9: ZERO? LIT? \?CCL15
+ INTBL? PRSA,SEEVERBS,NSVERBS >X \?CCL15
+ ICALL1 TOO-DARK
+ RETURN 2
+?CCL15: EQUAL? A,V?WALK /?CND7
+ EQUAL? WINNER,PLAYER \?CCL23
+ EQUAL? PRSA,V?WHO,V?WHAT,V?WHERE \?CCL23
+ ZERO? WHO /?CCL23
+ SET 'WINNER,WHO
+ ICALL2 SPOKEN-TO,WHO
+ JUMP ?CND21
+?CCL23: EQUAL? WINNER,PLAYER \?CND21
+ EQUAL? O,ME \?CND21
+ EQUAL? PRSA,V?TELL,V?TELL-ABOUT,V?ASK-ABOUT /?CCL27
+ EQUAL? PRSA,V?ASK-FOR,V?QUESTION,V?REPLY /?CCL27
+ EQUAL? PRSA,V?THANK,V?YELL,V?HELLO /?CCL27
+ EQUAL? PRSA,V?GOODBYE,V?SAY,V?ALARM \?CND21
+?CCL27: ZERO? WHO \?CND35
+ ICALL1 TALK-TO-SELF
+ RETURN 2
+?CND35: SET 'WINNER,WHO
+ ICALL2 SPOKEN-TO,WHO
+?CND21: EQUAL? YOU,I,O \?CND39
+ EQUAL? WINNER,PLAYER \?CCL43
+ ZERO? WHO \?CCL46
+ ICALL1 TALK-TO-SELF
+ RETURN 2
+?CCL46: SET 'WINNER,WHO
+ ICALL2 SPOKEN-TO,WHO
+ JUMP ?CND41
+?CCL43: ICALL2 SEE-CHARACTER,WINNER
+ SET 'WHO,WINNER
+?CND41: EQUAL? I,YOU \?CND49
+ SET 'I,WHO
+?CND49: EQUAL? O,YOU \?CND39
+ SET 'O,WHO
+?CND39: EQUAL? IT,I,O \?CND53
+ CALL2 ACCESSIBLE?,P-IT-OBJECT
+ ZERO? STACK \?CND53
+ ZERO? I \?CCL59
+ ICALL1 FAKE-ORPHAN
+ RETURN 2
+?CCL59: ICALL2 CANT-SEE-ANY,P-IT-OBJECT
+ RETURN 2
+?CND53: EQUAL? THEM,I,O \?CND62
+ CALL2 VISIBLE?,P-THEM-OBJECT
+ ZERO? STACK /?CCL66
+ EQUAL? THEM,O \?CND67
+ SET 'O,P-THEM-OBJECT
+?CND67: EQUAL? THEM,I \?CND62
+ SET 'I,P-THEM-OBJECT
+?CND62: EQUAL? HER,I,O \?CND76
+ CALL2 VISIBLE?,P-HER-OBJECT
+ ZERO? STACK /?CCL80
+ EQUAL? P-HER-OBJECT,WINNER \?CND81
+ CALL2 NO-OTHER?,TRUE-VALUE
+ ZERO? STACK /?CND81
+ RETURN 2
+?CCL66: ZERO? I \?CCL73
+ ICALL1 FAKE-ORPHAN
+ RETURN 2
+?CCL73: ICALL2 CANT-SEE-ANY,P-THEM-OBJECT
+ RETURN 2
+?CND81: EQUAL? HER,O \?CND87
+ SET 'O,P-HER-OBJECT
+?CND87: EQUAL? HER,I \?CND76
+ SET 'I,P-HER-OBJECT
+?CND76: EQUAL? HIM,I,O \?CND96
+ CALL2 VISIBLE?,P-HIM-OBJECT
+ ZERO? STACK /?CCL100
+ EQUAL? P-HIM-OBJECT,WINNER \?CND101
+ CALL1 NO-OTHER?
+ ZERO? STACK /?CND101
+ RETURN 2
+?CCL80: ZERO? I \?CCL93
+ ICALL1 FAKE-ORPHAN
+ RETURN 2
+?CCL93: ICALL2 CANT-SEE-ANY,P-HER-OBJECT
+ RETURN 2
+?CND101: EQUAL? HIM,O \?CND107
+ SET 'O,P-HIM-OBJECT
+?CND107: EQUAL? HIM,I \?CND96
+ SET 'I,P-HIM-OBJECT
+?CND96: EQUAL? O,IT \?CND116
+ SET 'O,P-IT-OBJECT
+?CND116: EQUAL? I,IT \?CND7
+ SET 'I,P-IT-OBJECT
+?CND7: SET 'PRSI,I
+ SET 'PRSO,O
+ SET 'V,FALSE-VALUE
+ EQUAL? A,V?WALK /?CND120
+ EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?CND120
+ CALL NOT-HERE-OBJECT-F >V
+ ZERO? V /?CND120
+ SET 'P-WON,FALSE-VALUE
+?CND120: EQUAL? A,V?WALK /?CND126
+ ICALL2 THIS-IS-IT,PRSI
+ ICALL2 THIS-IS-IT,PRSO
+?CND126: SET 'O,PRSO
+ SET 'I,PRSI
+ ZERO? V \?CND128
+ GETP WINNER,P?ACTION
+ CALL STACK,M-WINNER >V
+?CND128: ZERO? V \?CND130
+ LOC WINNER
+ GETP STACK,P?ACTION
+ CALL STACK,M-BEG >V
+?CND130: ZERO? V \?CND132
+ GET PREACTIONS,A
+ CALL STACK >V
+?CND132: ZERO? V \?CND134
+ EQUAL? A,V?TELL-ABOUT,V?ASK-ABOUT,V?ASK-FOR /?CND134
+ SET 'NOW-PRSI?,TRUE-VALUE
+ ZERO? I /?CND137
+ EQUAL? A,V?WALK /?CND137
+ LOC I
+ ZERO? STACK /?CND137
+ LOC I
+ GETP STACK,P?CONTFCN >V
+ ZERO? V /?CND137
+ CALL V,M-CONT >V
+?CND137: SET 'NOW-PRSI?,FALSE-VALUE
+ ZERO? V \?CND144
+ ZERO? O /?CND144
+ EQUAL? A,V?WALK /?CND144
+ LOC O
+ ZERO? STACK /?CND144
+ LOC O
+ GETP STACK,P?CONTFCN >V
+ ZERO? V /?CND144
+ CALL V,M-CONT >V
+?CND144: SET 'NOW-PRSI?,TRUE-VALUE
+ ZERO? V \?CND134
+ ZERO? I /?CND134
+ GETP I,P?ACTION
+ CALL STACK >V
+?CND134: SET 'NOW-PRSI?,FALSE-VALUE
+ ZERO? V \?CND155
+ ZERO? O /?CND155
+ EQUAL? A,V?WALK /?CND155
+ GETP O,P?ACTION
+ CALL STACK >V
+?CND155: ZERO? V \?CND159
+ GET ACTIONS,A
+ CALL STACK >V
+?CND159: EQUAL? V,M-FATAL /?CND161
+ LOC WINNER
+ GETP STACK,P?ACTION
+ ICALL STACK,M-END
+?CND161: SET 'PRSA,OA
+ SET 'PRSO,OO
+ SET 'PRSI,OI
+ SET 'NOW-PRSI?,ONP
+ RETURN V
+?CCL100: ZERO? I \?CCL113
+ ICALL1 FAKE-ORPHAN
+ RETURN 2
+?CCL113: ICALL2 CANT-SEE-ANY,P-HIM-OBJECT
+ RETURN 2
+
+
+ .FUNCT NO-OTHER?,FEMALE?,OBJ
+ FIRST? HERE >OBJ \?CND1
+?PRG3: EQUAL? OBJ,WINNER /?CND5
+ FSET? OBJ,PERSON \?CND5
+ ZERO? FEMALE? /?CCL10
+ FSET? OBJ,FEMALE /?CND1
+ JUMP ?CND5
+?CCL10: FSET? OBJ,FEMALE \?CND1
+?CND5: NEXT? OBJ >OBJ /?PRG3
+?CND1: ZERO? OBJ \FALSE
+ ICALL2 PERPLEXED,WINNER
+ PRINTR "Who are you talking about?"""
+
+
+ .FUNCT BUZZER-WORD?,WORD,TBL,LEN,X
+ GET Q-BUZZES,0 >LEN
+ INTBL? WORD,Q-BUZZES+2,LEN >TBL \?CND1
+ ICALL TO-DO-THING-USE,STR?510,STR?511
+ RTRUE
+?CND1: GET N-BUZZES,0 >LEN
+ INTBL? WORD,N-BUZZES+2,LEN >TBL \?CND3
+ ICALL1 NYMPH-APPEARS
+ PRINT DONT
+ PRINTI "need to use that "
+ PRINTD INTNUM
+ ICALL1 TO-COMPLETE
+ RTRUE
+?CND3: GET SWEAR-WORDS,0 >LEN
+ INTBL? WORD,SWEAR-WORDS+2,LEN >TBL \?CND5
+ GET STATS,INTELLIGENCE >WORD
+ LESS? WORD,1 \?CND7
+ PRINTR "Such language betrays your low intelligence."
+?CND7: PRINTI "You suddenly feel less intelligent."
+ CRLF
+ ICALL UPDATE-STAT,-1,INTELLIGENCE,TRUE-VALUE
+ RTRUE
+?CND5: CALL1 SEE-COLOR?
+ ZERO? STACK \?CND9
+ GET COLOR-WORDS,0 >LEN
+ INTBL? WORD,COLOR-WORDS+2,LEN >TBL \?CND9
+ PRINT DONT
+ PRINTI "see the color "
+ PRINTB WORD
+ PRINTR " here; or any other colors, for that matter."
+?CND9: GET MAGIC-WORDS,0 >LEN
+?PRG13: GET MAGIC-WORDS,LEN >TBL
+ GET TBL,0
+ EQUAL? WORD,STACK \?CND15
+ GET TBL,2
+ ZERO? STACK \?CND15
+ PRINTI "[This story won't recognize the word """
+ PRINTB WORD
+ PRINTR ".""]"
+?CND15: DLESS? 'LEN,2 \?PRG13
+ EQUAL? WORD,W?QUIETLY,W?SLOWLY,W?CAREFULLY /?CCL22
+ EQUAL? WORD,W?CLOSELY,W?QUICKLY,W?RAPIDLY \?CND21
+?CCL22: ICALL1 NYMPH-APPEARS
+ PRINTI "Adverbs (such as """
+ PRINTB WORD
+ PRINTI """) aren't needed"
+ ICALL1 TO-COMPLETE
+ RTRUE
+?CND21: EQUAL? WORD,W?XYZZY,W?PLUGH,W?PLOVER /?CCL26
+ EQUAL? WORD,W?YOHO,W?ULYSSES,W?ODYSSEUS \FALSE
+?CCL26: PRINT STR?512
+ CRLF
+ RTRUE
+
+
+ .FUNCT VERB-DIR-ONLY?,WRD
+ CALL WT?,WRD,128
+ ZERO? STACK \FALSE
+ CALL WT?,WRD,32
+ ZERO? STACK \FALSE
+ CALL WT?,WRD,16
+ ZERO? STACK \TRUE
+ CALL WT?,WRD,64
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT INBUF-ADD,LEN,BEG,SLOT,DBEG,CTR,TMP,?TMP1
+ GET OOPS-TABLE,O-END >TMP
+ ZERO? TMP /?CCL3
+ SET 'DBEG,TMP
+ JUMP ?CND1
+?CCL3: GET OOPS-TABLE,O-LENGTH >TMP
+ GETB AGAIN-LEXV,TMP >?TMP1
+ ADD TMP,1
+ GETB AGAIN-LEXV,STACK
+ ADD ?TMP1,STACK >DBEG
+?CND1: ADD DBEG,LEN
+ PUT OOPS-TABLE,O-END,STACK
+?PRG4: ADD DBEG,CTR >?TMP1
+ ADD BEG,CTR
+ GETB P-INBUF,STACK
+ PUTB OOPS-INBUF,?TMP1,STACK
+ INC 'CTR
+ EQUAL? CTR,LEN \?PRG4
+ PUTB AGAIN-LEXV,SLOT,DBEG
+ SUB SLOT,1
+ PUTB AGAIN-LEXV,STACK,LEN
+ RTRUE
+
+
+ .FUNCT NUMBER?,PTR,SUM,TIM,EXC,CNT,BPTR,CHR,CCTR,TMP,NW,?TMP1
+ ADD PTR,PTR
+ ADD P-LEXV,STACK >TMP
+ GETB TMP,3 >BPTR
+ GETB TMP,2 >CNT
+ GRTR? CNT,3 \?PRG3
+ SET 'CNT,3
+?PRG3: DLESS? 'CNT,0 /?REP4
+ GETB P-INBUF,BPTR >CHR
+ EQUAL? CHR,58 \?CCL9
+ ZERO? EXC \FALSE
+ SET 'TIM,SUM
+ SET 'SUM,0
+ JUMP ?CND7
+?CCL9: EQUAL? CHR,45 \?CCL13
+ ZERO? TIM \FALSE
+ SET 'EXC,SUM
+ SET 'SUM,0
+ JUMP ?CND7
+?CCL13: GRTR? SUM,9999 /FALSE
+ GRTR? CHR,47 \FALSE
+ LESS? CHR,58 \FALSE
+ MUL SUM,10 >?TMP1
+ SUB CHR,48
+ ADD ?TMP1,STACK >SUM
+?CND7: INC 'BPTR
+ JUMP ?PRG3
+?REP4: ICALL CHANGE-LEXV,PTR,W?INTNUM
+ ADD PTR,P-LEXELEN
+ GET P-LEXV,STACK >NW
+ GRTR? SUM,9999 /FALSE
+ ZERO? EXC /?CCL26
+ SET 'P-EXCHANGE,EXC
+ JUMP ?CND22
+?CCL26: ZERO? TIM /?CCL28
+ SET 'P-EXCHANGE,0
+ GRTR? TIM,23 /FALSE
+ GRTR? TIM,19 /?CND29
+ GRTR? TIM,12 /FALSE
+ GRTR? TIM,7 /?CND29
+ ADD 12,TIM >TIM
+?CND29: MUL TIM,60
+ ADD SUM,STACK >SUM
+ JUMP ?CND22
+?CCL28: SET 'P-EXCHANGE,0
+?CND22: SET 'P-NUMBER,SUM
+ RETURN W?INTNUM
+
+
+ .FUNCT ORPHAN-MERGE,WHICH,ADJ,TEMP,VERB,BEG,END,WRD,X
+ SET 'WHICH,1
+ SET 'P-OFLAG,FALSE-VALUE
+ GET P-ITBL,P-VERBN
+ GET STACK,0 >WRD
+ GET P-OTBL,P-VERB >X
+ CALL WT?,WRD,64,1
+ EQUAL? STACK,X /?CTR2
+ CALL WT?,WRD,32
+ ZERO? STACK /?CCL3
+?CTR2: SET 'ADJ,TRUE-VALUE
+ JUMP ?CND1
+?CCL3: CALL WT?,WRD,128,0
+ ZERO? STACK /?CND1
+ ZERO? P-NCN \?CND1
+ PUT P-ITBL,P-VERB,0
+ PUT P-ITBL,P-VERBN,0
+ ADD P-LEXV,2
+ PUT P-ITBL,P-NC1,STACK
+ ADD P-LEXV,6
+ PUT P-ITBL,P-NC1L,STACK
+ SET 'P-NCN,1
+?CND1: GET P-ITBL,P-VERB >VERB
+ ZERO? VERB /?CCL11
+ ZERO? ADJ \?CCL11
+ GET P-OTBL,P-VERB
+ EQUAL? VERB,STACK \FALSE
+?CCL11: EQUAL? P-NCN,2 /FALSE
+ GET P-OTBL,P-NC1
+ EQUAL? STACK,1 \?CCL18
+ GET P-ITBL,P-PREP1 >TEMP
+ ZERO? TEMP /?CTR20
+ GET P-OTBL,P-PREP1
+ EQUAL? TEMP,STACK \FALSE
+?CTR20: ZERO? ADJ /?CCL26
+ ADD P-LEXV,2
+ PUT P-OTBL,P-NC1,STACK
+ GET P-ITBL,P-NC1L
+ ZERO? STACK \?CND27
+ ADD P-LEXV,6
+ PUT P-ITBL,P-NC1L,STACK
+?CND27: ZERO? P-NCN \?CND24
+ SET 'P-NCN,1
+ JUMP ?CND24
+?CCL26: GET P-ITBL,P-NC1
+ PUT P-OTBL,P-NC1,STACK
+?CND24: GET P-ITBL,P-NC1L
+ PUT P-OTBL,P-NC1L,STACK
+ JUMP ?CND9
+?CCL18: GET P-OTBL,P-NC2
+ EQUAL? STACK,1 \?CCL32
+ SET 'WHICH,2
+ GET P-ITBL,P-PREP1 >TEMP
+ ZERO? TEMP /?CTR34
+ GET P-OTBL,P-PREP2
+ EQUAL? TEMP,STACK \FALSE
+?CTR34: ZERO? ADJ /?CND38
+ ADD P-LEXV,2
+ PUT P-ITBL,P-NC1,STACK
+ GET P-ITBL,P-NC1L
+ ZERO? STACK \?CND38
+ ADD P-LEXV,6
+ PUT P-ITBL,P-NC1L,STACK
+?CND38: GET P-ITBL,P-NC1
+ PUT P-OTBL,P-NC2,STACK
+ GET P-ITBL,P-NC1L
+ PUT P-OTBL,P-NC2L,STACK
+ SET 'P-NCN,2
+ JUMP ?CND9
+?CCL32: ZERO? P-ACLAUSE /?CND9
+ EQUAL? P-NCN,1 /?CCL45
+ ZERO? ADJ \?CCL45
+ SET 'P-ACLAUSE,FALSE-VALUE
+ RFALSE
+?CCL45: EQUAL? P-ACLAUSE,P-NC1 /?CND48
+ SET 'WHICH,2
+?CND48: GET P-ITBL,P-NC1 >BEG
+ ZERO? ADJ /?CND50
+ ADD P-LEXV,2 >BEG
+ SET 'ADJ,FALSE-VALUE
+?CND50: GET P-ITBL,P-NC1L >END
+?PRG52: GET BEG,0 >WRD
+ EQUAL? BEG,END \?CCL56
+ ZERO? ADJ /?CCL59
+ ICALL2 CLAUSE-WIN,ADJ
+ JUMP ?CND9
+?CCL59: SET 'P-ACLAUSE,FALSE-VALUE
+ RFALSE
+?CCL56: EQUAL? WRD,W?ALL,W?EVERYTHING,W?ONE /?CTR60
+ EQUAL? WRD,W?BOTH /?CTR60
+ GETB WRD,P-PSOFF
+ BTST STACK,32 \?CCL61
+ ZERO? ADJ \?CCL61
+?CTR60: SET 'ADJ,WRD
+ JUMP ?CND54
+?CCL61: EQUAL? WRD,W?ONE \?CCL68
+ ICALL2 CLAUSE-WIN,ADJ
+ JUMP ?CND9
+?CCL68: GETB WRD,P-PSOFF
+ BTST STACK,128 \?CND54
+ ADD BEG,P-WORDLEN
+ EQUAL? STACK,END \?CND54
+ EQUAL? WRD,P-ANAM \?CCL74
+ ICALL2 CLAUSE-WIN,ADJ
+ JUMP ?CND9
+?CCL74: ICALL1 CLAUSE-WIN
+?CND9: GET P-OVTBL,0
+ PUT P-VTBL,0,STACK
+ GETB P-OVTBL,2
+ PUTB P-VTBL,2,STACK
+ GETB P-OVTBL,3
+ PUTB P-VTBL,3,STACK
+ PUT P-OTBL,P-VERBN,P-VTBL
+ PUTB P-VTBL,2,0
+ COPYT P-OTBL,P-ITBL,P-ITBLLEN
+ SET 'P-MERGED,WHICH
+ RTRUE
+?CND54: ADD BEG,P-WORDLEN >BEG
+ ZERO? END \?PRG52
+ SET 'END,BEG
+ SET 'P-NCN,1
+ SUB BEG,4
+ PUT P-ITBL,P-NC1,STACK
+ PUT P-ITBL,P-NC1L,BEG
+ JUMP ?PRG52
+
+
+ .FUNCT CLAUSE-WIN,ADJ,X
+ ZERO? ADJ /?CCL3
+ SET 'P-LASTADJ,ADJ
+ GET P-OTBL,P-VERB
+ PUT P-ITBL,P-VERB,STACK
+ JUMP ?CND1
+?CCL3: SET 'ADJ,TRUE-VALUE
+?CND1: SET 'X,P-OCL2
+ EQUAL? P-ACLAUSE,P-NC1 \?CND4
+ SET 'X,P-OCL1
+?CND4: ADD P-ACLAUSE,1
+ ICALL CLAUSE-COPY,P-OTBL,P-OTBL,P-ACLAUSE,STACK,X,ADJ
+ GET P-OTBL,P-NC2
+ ZERO? STACK /?CND6
+ SET 'P-NCN,2
+?CND6: SET 'P-ACLAUSE,FALSE-VALUE
+ RTRUE
+
+
+ .FUNCT WORD-PRINT,CNT,BUF
+ GRTR? BUF,1 \FALSE
+?PRG3: DLESS? 'CNT,0 /FALSE
+ GETB P-INBUF,BUF
+ PRINTC STACK
+ INC 'BUF
+ JUMP ?PRG3
+
+
+ .FUNCT UNKNOWN-WORD,PTR,CNT,MSG,LEN,OFFSET,CHAR
+ PUT OOPS-TABLE,O-PTR,PTR
+ CALL2 PICK-NEXT,UNKNOWN-MSGS >MSG
+ PRINTC 91
+ GET MSG,0
+ PRINT STACK
+ MUL PTR,2
+ ADD P-LEXV,STACK >OFFSET
+ GETB OFFSET,2 >LEN
+ GETB OFFSET,3 >OFFSET
+ GRTR? OFFSET,1 \?CND1
+?PRG3: DLESS? 'LEN,0 /?CND1
+ GETB P-INBUF,OFFSET >CHAR
+ PRINTC CHAR
+ INC 'OFFSET
+ LESS? CNT,12 \?PRG3
+ INC 'CNT
+ PUTB LAST-BAD,CNT,CHAR
+ JUMP ?PRG3
+?CND1: PUTB LAST-BAD,0,CNT
+ SET 'QUOTE-FLAG,FALSE-VALUE
+ SET 'P-OFLAG,FALSE-VALUE
+ GET MSG,1
+ PRINT STACK
+ PRINTR "]"
+
+
+ .FUNCT SYNTAX-CHECK,DRIVE1,DRIVE2,SYN,LEN,NUM,OBJ,PREP,VERB,X,Y,?TMP1
+ GET P-ITBL,P-VERB >VERB
+ ZERO? VERB \?CND1
+ ICALL2 NOT-IN-SENTENCE,STR?513
+ RFALSE
+?CND1: SUB 255,VERB
+ GET VERBS,STACK >SYN
+ GETB SYN,0 >LEN
+ INC 'SYN
+?PRG3: GETB SYN,P-SBITS
+ BAND STACK,P-SONUMS >NUM
+ GET P-ITBL,P-PREP1 >PREP
+ GETB SYN,P-SPREP1 >X
+ GRTR? P-NCN,NUM /?CND5
+ LESS? NUM,1 /?CCL8
+ ZERO? P-NCN \?CCL8
+ EQUAL? PREP,0,X \?CCL8
+ SET 'DRIVE1,SYN
+ JUMP ?CND5
+?CCL8: GET P-ITBL,P-PREP1
+ EQUAL? X,STACK \?CND5
+ EQUAL? NUM,2 \?CCL15
+ EQUAL? P-NCN,1 \?CCL15
+ SET 'DRIVE2,SYN
+?CND5: DLESS? 'LEN,1 \?CND19
+ ZERO? DRIVE1 \?REP4
+ ZERO? DRIVE2 \?REP4
+ ICALL1 DONT-UNDERSTAND
+ RFALSE
+?CCL15: GETB SYN,P-SPREP2 >?TMP1
+ GET P-ITBL,P-PREP2
+ EQUAL? ?TMP1,STACK \?CND5
+ SET 'P-SYNTAX,SYN
+ GETB SYN,P-SACTION >PRSA
+ RTRUE
+?CND19: ADD SYN,P-SYNLEN >SYN
+ JUMP ?PRG3
+?REP4: ZERO? DRIVE1 /?CND25
+ GETB DRIVE1,P-SFWIM1 >X
+ GETB DRIVE1,P-SLOC1 >Y
+ GETB DRIVE1,P-SPREP1
+ CALL GWIM,X,Y,STACK >OBJ
+ ZERO? OBJ /?CND25
+ PUT P-PRSO,P-MATCHLEN,1
+ PUT P-PRSO,1,OBJ
+ SET 'P-SYNTAX,DRIVE1
+ GETB DRIVE1,P-SACTION >PRSA
+ RTRUE
+?CND25: ZERO? DRIVE2 /?CCL31
+ GETB DRIVE2,P-SFWIM2 >X
+ GETB DRIVE2,P-SLOC2 >Y
+ GETB DRIVE2,P-SPREP2
+ CALL GWIM,X,Y,STACK >OBJ
+ ZERO? OBJ /?CND29
+ PUT P-PRSI,P-MATCHLEN,1
+ PUT P-PRSI,1,OBJ
+ SET 'P-SYNTAX,DRIVE2
+ GETB DRIVE2,P-SACTION >PRSA
+ RTRUE
+?CCL31: EQUAL? VERB,ACT?FIND \?CND29
+ ICALL1 DO-IT-YOURSELF
+ RFALSE
+?CND29: EQUAL? WINNER,PLAYER \?CCL37
+ ICALL ORPHAN,DRIVE1,DRIVE2
+ PRINTI "[Wh"
+ JUMP ?CND35
+?CCL37: PRINTI "[Your command wasn't complete. Next time, type wh"
+?CND35: EQUAL? VERB,ACT?WALK,ACT?GO \?CCL40
+ PRINTI "ere"
+ JUMP ?CND38
+?CCL40: ZERO? DRIVE1 /?PRD44
+ GETB DRIVE1,P-SFWIM1
+ EQUAL? STACK,PERSON /?CTR41
+?PRD44: ZERO? DRIVE2 /?CCL42
+ GETB DRIVE2,P-SFWIM2
+ EQUAL? STACK,PERSON \?CCL42
+?CTR41: PRINTI "om"
+ JUMP ?CND38
+?CCL42: PRINTI "at"
+?CND38: EQUAL? WINNER,PLAYER \?CCL51
+ PRINTI " do you want"
+ JUMP ?CND49
+?CCL51: PRINTI " you want "
+ ICALL2 THE-PRINT,WINNER
+?CND49: PRINT STO
+ ICALL1 VERB-PRINT
+ ZERO? DRIVE2 /?CND52
+ ICALL CLAUSE-PRINT,P-NC1,P-NC1L
+?CND52: SET 'P-END-ON-PREP,FALSE-VALUE
+ ZERO? DRIVE1 /?CCL56
+ GETB DRIVE1,P-SPREP1
+ JUMP ?CND54
+?CCL56: GETB DRIVE2,P-SPREP2
+?CND54: ICALL2 PREP-PRINT,STACK
+ EQUAL? WINNER,PLAYER \?CCL59
+ SET 'P-OFLAG,TRUE-VALUE
+ PRINTI "?]"
+ CRLF
+ RFALSE
+?CCL59: SET 'P-OFLAG,FALSE-VALUE
+ PRINTI ".]"
+ CRLF
+ RFALSE
+
+
+ .FUNCT VERB-PRINT,TMP,X
+ GET P-ITBL,P-VERBN >TMP
+ ZERO? TMP \?CCL3
+ PRINTB W?TELL
+ RTRUE
+?CCL3: GETB P-VTBL,2
+ ZERO? STACK \?CCL5
+ GET TMP,0
+ PRINTB STACK
+ RTRUE
+?CCL5: GETB TMP,2 >X
+ GETB TMP,3
+ ICALL WORD-PRINT,X,STACK
+ PUTB P-VTBL,2,0
+ RTRUE
+
+
+ .FUNCT ORPHAN,D1,D2
+ ZERO? P-MERGED \?CND1
+ PUT P-OCL1,P-MATCHLEN,0
+ PUT P-OCL2,P-MATCHLEN,0
+?CND1: GET P-VTBL,0
+ PUT P-OVTBL,0,STACK
+ GETB P-VTBL,2
+ PUTB P-OVTBL,2,STACK
+ GETB P-VTBL,3
+ PUTB P-OVTBL,3,STACK
+ COPYT P-ITBL,P-OTBL,P-ITBLLEN
+ EQUAL? P-NCN,2 \?CND3
+ ICALL CLAUSE-COPY,P-ITBL,P-OTBL,P-NC2,P-NC2L,P-OCL2
+?CND3: LESS? P-NCN,1 /?CND5
+ ICALL CLAUSE-COPY,P-ITBL,P-OTBL,P-NC1,P-NC1L,P-OCL1
+?CND5: ZERO? D1 /?CCL9
+ GETB D1,P-SPREP1
+ PUT P-OTBL,P-PREP1,STACK
+ PUT P-OTBL,P-NC1,1
+ RTRUE
+?CCL9: ZERO? D2 /TRUE
+ GETB D2,P-SPREP2
+ PUT P-OTBL,P-PREP2,STACK
+ PUT P-OTBL,P-NC2,1
+ RTRUE
+
+
+ .FUNCT CLAUSE-PRINT,BPTR,EPTR,THE?,X
+ ASSIGNED? 'THE? /?CND1
+ SET 'THE?,TRUE-VALUE
+?CND1: GET P-ITBL,BPTR >X
+ GET P-ITBL,EPTR
+ ICALL BUFFER-PRINT,X,STACK,THE?
+ RFALSE
+
+
+ .FUNCT BUFFER-PRINT,BEG,END,CP,NOSP,WRD,FIRST??,PN,LEN
+ SET 'FIRST??,TRUE-VALUE
+?PRG1: EQUAL? BEG,END /TRUE
+ GET BEG,0 >WRD
+ EQUAL? WRD,W?$BUZZ /?CND5
+ EQUAL? WRD,W?COMMA \?CCL8
+ PRINTI ", "
+ JUMP ?CND5
+?CCL8: ZERO? NOSP /?CCL10
+ SET 'NOSP,FALSE-VALUE
+ JUMP ?CND5
+?CCL10: PRINTC SP
+?CND5: EQUAL? WRD,W?HIM \?PRD14
+ CALL2 VISIBLE?,P-HIM-OBJECT
+ ZERO? STACK /?CCL12
+?PRD14: EQUAL? WRD,W?HER \?PRD17
+ CALL2 VISIBLE?,P-HER-OBJECT
+ ZERO? STACK /?CCL12
+?PRD17: EQUAL? WRD,W?THEM \?CND11
+ CALL2 VISIBLE?,P-THEM-OBJECT
+ ZERO? STACK \?CND11
+?CCL12: SET 'PN,TRUE-VALUE
+?CND11: GET CAPS,0 >LEN
+ EQUAL? WRD,W?PERIOD,W?COMMA,W?$BUZZ /?CTR23
+ CALL WT?,WRD,4
+ ZERO? STACK \?PRD28
+ CALL WT?,WRD,8
+ ZERO? STACK /?CCL24
+?PRD28: CALL WT?,WRD,32
+ ZERO? STACK \?CCL24
+ CALL WT?,WRD,128
+ ZERO? STACK \?CCL24
+?CTR23: SET 'NOSP,TRUE-VALUE
+ JUMP ?CND22
+?CCL24: EQUAL? WRD,W?ME \?CCL33
+ ICALL2 PRINT-TABLE,CHARNAME
+ SET 'PN,TRUE-VALUE
+ JUMP ?CND22
+?CCL33: INTBL? WRD,CAPS+2,LEN >LEN \?CCL35
+ ICALL2 CAPITALIZE,BEG
+ SET 'PN,TRUE-VALUE
+ JUMP ?CND22
+?CCL35: GETB BEG,3 >LEN
+ ZERO? FIRST?? /?CND36
+ ZERO? PN \?CND36
+ ZERO? CP /?CND36
+ PRINT LTHE
+?CND36: ZERO? P-OFLAG \?CTR42
+ ZERO? P-MERGED /?CCL43
+?CTR42: PRINTB WRD
+ JUMP ?CND41
+?CCL43: EQUAL? WRD,W?IT \?CCL47
+ CALL2 VISIBLE?,P-IT-OBJECT
+ ZERO? STACK /?CCL47
+ ICALL2 DPRINT,P-IT-OBJECT
+ JUMP ?CND41
+?CCL47: EQUAL? WRD,W?HER \?CCL51
+ ZERO? PN \?CCL51
+ ICALL2 DPRINT,P-HER-OBJECT
+ JUMP ?CND41
+?CCL51: EQUAL? WRD,W?THEM \?CCL55
+ ZERO? PN \?CCL55
+ ICALL2 DPRINT,P-THEM-OBJECT
+ JUMP ?CND41
+?CCL55: EQUAL? WRD,W?HIM \?CCL59
+ ZERO? PN \?CCL59
+ ICALL2 DPRINT,P-HIM-OBJECT
+ JUMP ?CND41
+?CCL59: GETB BEG,2
+ ICALL WORD-PRINT,STACK,LEN
+?CND41: SET 'FIRST??,FALSE-VALUE
+?CND22: ADD BEG,P-WORDLEN >BEG
+ JUMP ?PRG1
+
+
+ .FUNCT ADD-CAP?,WRD,X
+ GET CAPS,0 >X
+ INTBL? -1,CAPS+2,X >X \FALSE
+ PUT X,0,WRD
+ RTRUE
+
+
+ .FUNCT CAPITALIZE,PTR,?TMP1
+ ZERO? P-OFLAG \?CTR2
+ ZERO? P-MERGED /?CCL3
+?CTR2: GET PTR,0
+ PRINTB STACK
+ RTRUE
+?CCL3: GETB PTR,3
+ GETB P-INBUF,STACK
+ SUB STACK,SP
+ PRINTC STACK
+ GETB PTR,2
+ SUB STACK,1 >?TMP1
+ GETB PTR,3
+ ADD STACK,1
+ CALL WORD-PRINT,?TMP1,STACK
+ RSTACK
+
+
+ .FUNCT PREP-PRINT,PREP,SP?,WRD
+ ASSIGNED? 'SP? /?CND1
+ SET 'SP?,TRUE-VALUE
+?CND1: ZERO? PREP /FALSE
+ ZERO? P-END-ON-PREP \FALSE
+ ZERO? SP? /?CND8
+ PRINTC SP
+?CND8: CALL2 PREP-FIND,PREP >WRD
+ PRINTB WRD
+ GET P-ITBL,P-VERBN
+ GET STACK,0
+ EQUAL? W?SIT,STACK \?CND10
+ EQUAL? W?DOWN,WRD \?CND10
+ PRINTI " on"
+?CND10: GET P-ITBL,P-VERBN
+ GET STACK,0
+ EQUAL? W?GET,STACK \TRUE
+ EQUAL? W?OUT,WRD \TRUE
+ PRINTI " of"
+ RTRUE
+
+
+ .FUNCT CLAUSE-COPY,SRC,DEST,BB,EE,OCL,INSRT,BEG,END,OBEG,CNT,B,E
+ GET SRC,BB >BEG
+ GET SRC,EE >END
+ GET OCL,P-MATCHLEN >OBEG
+?PRG1: EQUAL? BEG,END /?REP2
+ ZERO? INSRT /?CCL7
+ GET BEG,0
+ EQUAL? P-ANAM,STACK \?CCL7
+ EQUAL? INSRT,TRUE-VALUE \?CCL12
+ GET P-ITBL,P-NC1 >B
+ GET P-ITBL,P-NC1L >E
+?PRG13: EQUAL? B,E /?CND5
+ GET B,0
+ ICALL CLAUSE-ADD,STACK,OCL
+ ADD B,P-WORDLEN >B
+ JUMP ?PRG13
+?CCL12: GET OCL,1
+ EQUAL? INSRT,STACK /?CND17
+ ICALL CLAUSE-ADD,INSRT,OCL
+?CND17: ICALL CLAUSE-ADD,P-ANAM,OCL
+ JUMP ?CND5
+?CCL7: GET BEG,0
+ ICALL CLAUSE-ADD,STACK,OCL
+?CND5: ADD BEG,P-WORDLEN >BEG
+ JUMP ?PRG1
+?REP2: GET OCL,P-MATCHLEN
+ SUB STACK,OBEG >CNT
+ GRTR? OBEG,0 \?CND19
+ ZERO? CNT /?CND19
+ PUT OCL,P-MATCHLEN,0
+ INC 'OBEG
+?PRG23: GET OCL,OBEG
+ ICALL CLAUSE-ADD,STACK,OCL
+ SUB CNT,2 >CNT
+ ZERO? CNT /?REP24
+ ADD OBEG,2 >OBEG
+ JUMP ?PRG23
+?REP24: SET 'OBEG,0
+?CND19: MUL OBEG,P-LEXELEN
+ ADD STACK,2
+ ADD OCL,STACK
+ PUT DEST,BB,STACK
+ GET OCL,P-MATCHLEN
+ MUL STACK,P-LEXELEN
+ ADD STACK,2
+ ADD OCL,STACK
+ PUT DEST,EE,STACK
+ RTRUE
+
+
+ .FUNCT CLAUSE-ADD,WRD,TBL,PTR
+ GET TBL,P-MATCHLEN >PTR
+ INC 'PTR
+ PUT TBL,PTR,WRD
+ INC 'PTR
+ PUT TBL,PTR,0
+ PUT TBL,P-MATCHLEN,PTR
+ RFALSE
+
+
+ .FUNCT PREP-FIND,PREP,CNT,SIZE
+ GET PREPOSITIONS,0
+ MUL STACK,2 >SIZE
+?PRG1: IGRTR? 'CNT,SIZE /FALSE
+ GET PREPOSITIONS,CNT
+ EQUAL? STACK,PREP \?PRG1
+ SUB CNT,1
+ GET PREPOSITIONS,STACK
+ RSTACK
+
+
+ .FUNCT GWIM,GBIT,LBIT,PREP,OBJ
+ EQUAL? GBIT,LOCATION \?CCL3
+ RETURN ROOMS
+?CCL3: EQUAL? P-IT-OBJECT,FALSE-VALUE,NOT-HERE-OBJECT /?CCL5
+ FSET? P-IT-OBJECT,GBIT \?CCL5
+ EQUAL? GBIT,TAKEABLE \?CCL9
+ IN? P-IT-OBJECT,PLAYER /?CND1
+?CCL9: SET 'OBJ,P-IT-OBJECT
+ JUMP ?CND1
+?CCL5: EQUAL? P-HIM-OBJECT,FALSE-VALUE,NOT-HERE-OBJECT /?CCL13
+ FSET? P-HIM-OBJECT,GBIT \?CCL13
+ SET 'OBJ,P-HIM-OBJECT
+ JUMP ?CND1
+?CCL13: EQUAL? P-HER-OBJECT,FALSE-VALUE,NOT-HERE-OBJECT /?CCL17
+ FSET? P-HER-OBJECT,GBIT \?CCL17
+ SET 'OBJ,P-HER-OBJECT
+ JUMP ?CND1
+?CCL17: EQUAL? P-THEM-OBJECT,FALSE-VALUE,NOT-HERE-OBJECT /?CND1
+ FSET? P-THEM-OBJECT,GBIT \?CND1
+ SET 'OBJ,P-THEM-OBJECT
+?CND1: ZERO? OBJ /?CND23
+ PRINTC 91
+ ICALL2 THE-PRINT,OBJ
+ PRINT BRACKET
+ RETURN OBJ
+?CND23: SET 'P-GWIMBIT,GBIT
+ SET 'P-SLOCBITS,LBIT
+ PUT P-MERGE,P-MATCHLEN,0
+ CALL GET-OBJECT,P-MERGE,FALSE-VALUE
+ ZERO? STACK /?CCL27
+ SET 'P-GWIMBIT,0
+ GET P-MERGE,P-MATCHLEN
+ EQUAL? STACK,1 \FALSE
+ GET P-MERGE,1 >OBJ
+ EQUAL? WINNER,PLAYER /?PRD33
+ RETURN OBJ
+?PRD33: EQUAL? OBJ,HANDS /?CND30
+ PRINTC 91
+ CALL PREP-PRINT,PREP,FALSE-VALUE
+ ZERO? STACK /?CND34
+ PRINTC SP
+?CND34: ICALL2 THE-PRINT,OBJ
+ PRINT BRACKET
+?CND30: RETURN OBJ
+?CCL27: EQUAL? GBIT,WIELDED \?CCL37
+ SET 'P-GWIMBIT,0
+ RETURN HANDS
+?CCL37: SET 'P-GWIMBIT,0
+ RFALSE
+
+
+ .FUNCT SNARF-OBJECTS,PTR
+ GET P-ITBL,P-NC1 >PTR
+ ZERO? PTR /?CND1
+ SET 'P-PHR,0
+ GETB P-SYNTAX,P-SLOC1 >P-SLOCBITS
+ GET P-ITBL,P-NC1L
+ CALL SNARFEM,PTR,STACK,P-PRSO
+ ZERO? STACK /FALSE
+ GET P-BUTS,P-MATCHLEN
+ ZERO? STACK /?CND1
+ CALL2 BUT-MERGE,P-PRSO >P-PRSO
+?CND1: GET P-ITBL,P-NC2 >PTR
+ ZERO? PTR /TRUE
+ SET 'P-PHR,1
+ GETB P-SYNTAX,P-SLOC2 >P-SLOCBITS
+ GET P-ITBL,P-NC2L
+ CALL SNARFEM,PTR,STACK,P-PRSI
+ ZERO? STACK /FALSE
+ GET P-BUTS,P-MATCHLEN
+ ZERO? STACK /TRUE
+ GET P-PRSI,P-MATCHLEN
+ EQUAL? STACK,1 \?CND13
+ CALL2 BUT-MERGE,P-PRSO >P-PRSO
+ RTRUE
+?CND13: CALL2 BUT-MERGE,P-PRSI >P-PRSI
+ RTRUE
+
+
+ .FUNCT BUT-MERGE,TBL,LEN,BUTLEN,CNT,MATCHES,OBJ,NTBL,X
+ SET 'CNT,1
+ GET TBL,P-MATCHLEN >LEN
+ PUT P-MERGE,P-MATCHLEN,0
+?PRG1: DLESS? 'LEN,0 /?REP2
+ GET TBL,CNT >OBJ
+ ADD P-BUTS,2 >X
+ GET P-BUTS,0
+ INTBL? OBJ,X,STACK >X /?CND5
+ INC 'MATCHES
+ PUT P-MERGE,MATCHES,OBJ
+?CND5: INC 'CNT
+ JUMP ?PRG1
+?REP2: PUT P-MERGE,P-MATCHLEN,MATCHES
+ SET 'NTBL,P-MERGE
+ SET 'P-MERGE,TBL
+ RETURN NTBL
+
+
+ .FUNCT SNARFEM,PTR,EPTR,TBL,BUT,LEN,WV,WRD,NW,WAS-ALL?,ONEOBJ
+ SET 'P-AND,FALSE-VALUE
+ EQUAL? P-GETFLAGS,P-ALL \?CND1
+ SET 'WAS-ALL?,TRUE-VALUE
+?CND1: SET 'P-GETFLAGS,0
+ PUT P-BUTS,P-MATCHLEN,0
+ PUT TBL,P-MATCHLEN,0
+ GET PTR,0 >WRD
+?PRG3: EQUAL? PTR,EPTR \?CCL7
+ ZERO? BUT /?PRD10
+ PUSH BUT
+ JUMP ?PEN8
+?PRD10: PUSH TBL
+?PEN8: CALL2 GET-OBJECT,STACK >WV
+ ZERO? WAS-ALL? /?CND11
+ SET 'P-GETFLAGS,P-ALL
+?CND11: RETURN WV
+?CCL7: ADD PTR,P-WORDLEN
+ EQUAL? EPTR,STACK \?CCL15
+ SET 'NW,0
+ JUMP ?CND13
+?CCL15: GET PTR,P-LEXELEN >NW
+?CND13: EQUAL? WRD,W?ALL,W?BOTH,W?EVERYTHING \?CCL18
+ SET 'P-GETFLAGS,P-ALL
+ EQUAL? NW,W?OF \?CND5
+ ADD PTR,P-WORDLEN >PTR
+ JUMP ?CND5
+?CCL18: EQUAL? WRD,W?BUT,W?EXCEPT \?CCL22
+ ZERO? BUT /?PRD27
+ PUSH BUT
+ JUMP ?PEN25
+?PRD27: PUSH TBL
+?PEN25: CALL2 GET-OBJECT,STACK
+ ZERO? STACK /FALSE
+ SET 'BUT,P-BUTS
+ PUT BUT,P-MATCHLEN,0
+ JUMP ?CND5
+?CCL22: CALL2 BUZZER-WORD?,WRD
+ ZERO? STACK \FALSE
+ EQUAL? WRD,W?A \?CCL31
+ ZERO? P-ADJ \?CCL34
+ SET 'P-GETFLAGS,P-ONE
+ EQUAL? NW,W?OF \?CND5
+ ADD PTR,P-WORDLEN >PTR
+ JUMP ?CND5
+?CCL34: SET 'P-NAM,ONEOBJ
+ ZERO? BUT /?PRD41
+ PUSH BUT
+ JUMP ?PEN39
+?PRD41: PUSH TBL
+?PEN39: CALL2 GET-OBJECT,STACK
+ ZERO? STACK /FALSE
+ ZERO? NW \?CND5
+ RTRUE
+?CCL31: EQUAL? WRD,W?AND,W?COMMA \?CCL45
+ EQUAL? NW,W?AND,W?COMMA /?CCL45
+ SET 'P-AND,TRUE-VALUE
+ ZERO? BUT /?PRD52
+ PUSH BUT
+ JUMP ?PEN50
+?PRD52: PUSH TBL
+?PEN50: CALL2 GET-OBJECT,STACK
+ ZERO? STACK \?CND5
+ RFALSE
+?CCL45: CALL WT?,WRD,4
+ ZERO? STACK \?CND5
+ EQUAL? WRD,W?AND,W?COMMA /?CND5
+ EQUAL? WRD,W?OF \?CCL56
+ ZERO? P-GETFLAGS \?CND5
+ SET 'P-GETFLAGS,P-INHIBIT
+ JUMP ?CND5
+?CCL56: CALL WT?,WRD,32
+ ZERO? STACK /?CCL60
+ ZERO? P-ADJ \?CCL60
+ EQUAL? NW,W?OF /?CCL60
+ SET 'P-ADJ,WRD
+ JUMP ?CND5
+?CCL60: CALL WT?,WRD,128
+ ZERO? STACK /?CND5
+ SET 'P-NAM,WRD
+ SET 'ONEOBJ,WRD
+?CND5: EQUAL? PTR,EPTR /?PRG3
+ ADD PTR,P-WORDLEN >PTR
+ SET 'WRD,NW
+ JUMP ?PRG3
+
+
+ .FUNCT GET-OBJECT,TBL,VRB,GCHECK,OLEN,BTS,LEN,XBITS,TLEN,OBJ,ADJ,X,XTBL,TTBL,TOBJ
+ ASSIGNED? 'VRB /?CND1
+ SET 'VRB,TRUE-VALUE
+?CND1: SET 'XBITS,P-SLOCBITS
+ GET TBL,P-MATCHLEN >TLEN
+ BTST P-GETFLAGS,P-INHIBIT /TRUE
+ SET 'ADJ,P-ADJ
+ ZERO? P-NAM \?CND5
+ ZERO? P-ADJ /?CND5
+ CALL WT?,P-ADJ,128
+ ZERO? STACK /?CCL11
+ SET 'P-NAM,P-ADJ
+ SET 'P-ADJ,FALSE-VALUE
+?CND5: ZERO? P-NAM \?CND13
+ ZERO? P-ADJ \?CND13
+ EQUAL? P-GETFLAGS,P-ALL /?CND13
+ ZERO? P-GWIMBIT \?CND13
+ ZERO? VRB /FALSE
+ ICALL2 NOT-IN-SENTENCE,STR?514
+ RFALSE
+?CCL11: CALL WT?,P-ADJ,16,3 >BTS
+ ZERO? BTS /?CND5
+ SET 'P-ADJ,FALSE-VALUE
+ PUT TBL,P-MATCHLEN,1
+ PUT TBL,1,INTDIR
+ SET 'P-DIRECTION,BTS
+ RTRUE
+?CND13: EQUAL? P-GETFLAGS,P-ALL \?CCL22
+ ZERO? P-SLOCBITS \?CND21
+?CCL22: SET 'P-SLOCBITS,-1
+?CND21: SET 'P-TABLE,TBL
+?PRG25: ZERO? GCHECK /?CCL29
+ ICALL2 GLOBAL-CHECK,TBL
+ JUMP ?CND27
+?CCL29: ICALL DO-SL,HERE,SOG,SIR
+ ICALL DO-SL,WINNER,SH,SC
+?CND27: GET TBL,P-MATCHLEN
+ SUB STACK,TLEN >LEN
+ BTST P-GETFLAGS,P-ALL /?CND30
+ ZERO? LEN /?CCL33
+ BTST P-GETFLAGS,P-ONE \?CCL33
+ GRTR? LEN,1 \?CND36
+ RANDOM LEN
+ GET TBL,STACK
+ PUT TBL,1,STACK
+ PRINTI "[How about "
+ GET TBL,1
+ ICALL2 THE-PRINT,STACK
+ PRINTI "?]"
+ CRLF
+?CND36: PUT TBL,P-MATCHLEN,1
+?CND30: ADD TLEN,1
+ GET TBL,STACK >X
+ ZERO? P-ADJ /?CND87
+ ZERO? P-NAM \?CND87
+ ZERO? X /?CND87
+ PRINTC 91
+ ICALL2 THE-PRINT,X
+ PRINT BRACKET
+?CND87: SET 'P-SLOCBITS,XBITS
+ PUT P-NAMW,P-PHR,P-NAM
+ PUT P-ADJW,P-PHR,P-ADJ
+ SET 'P-NAM,FALSE-VALUE
+ SET 'P-ADJ,FALSE-VALUE
+ RTRUE
+?CCL33: GRTR? LEN,1 /?CTR38
+ ZERO? LEN \?CCL39
+ EQUAL? P-SLOCBITS,-1 /?CCL39
+?CTR38: EQUAL? P-SLOCBITS,-1 \?CCL46
+ SET 'P-SLOCBITS,XBITS
+ SET 'OLEN,LEN
+ GET TBL,P-MATCHLEN
+ SUB STACK,LEN
+ PUT TBL,P-MATCHLEN,STACK
+ JUMP ?PRG25
+?CCL46: PUT P-NAMW,P-PHR,P-NAM
+ PUT P-ADJW,P-PHR,P-ADJ
+ ZERO? LEN \?CND47
+ SET 'LEN,OLEN
+?CND47: ZERO? P-NAM /?CND49
+ ADD TLEN,1
+ GET TBL,STACK >OBJ
+ ZERO? OBJ /?CND49
+ MUL TLEN,2
+ ADD TBL,STACK >TTBL
+ GET TTBL,0 >TOBJ
+ PUT TTBL,0,LEN
+ GETP OBJ,P?GENERIC
+ CALL STACK,TTBL >OBJ
+ PUT TTBL,0,TOBJ
+ ZERO? OBJ /?CND49
+ EQUAL? OBJ,NOT-HERE-OBJECT /FALSE
+ ADD TLEN,1 >X
+ PUT TBL,X,OBJ
+ PUT TBL,P-MATCHLEN,X
+ SET 'P-NAM,FALSE-VALUE
+ SET 'P-ADJ,FALSE-VALUE
+ RTRUE
+?CND49: ZERO? VRB /?CCL59
+ EQUAL? WINNER,PLAYER /?CCL59
+ ICALL1 DONT-UNDERSTAND
+ RFALSE
+?CCL59: ZERO? VRB /?CCL63
+ ZERO? P-NAM /?CCL63
+ SET 'XTBL,P-OCL2
+ EQUAL? TBL,P-PRSO \?CND66
+ SET 'XTBL,P-OCL1
+?CND66: EQUAL? PRSA,V?NAME \?CCL70
+ ICALL1 MORE-SPECIFIC
+ JUMP ?CND57
+?CCL70: GET XTBL,0
+ GRTR? STACK,22 \?CCL72
+ PUT XTBL,0,0
+ ICALL1 NYMPH-APPEARS
+ PRINTI "Parser overflow! Please try something else"
+ PRINT STR?515
+ JUMP ?CND57
+?CCL72: ICALL WHICH-PRINT,TLEN,LEN,TBL
+ SET 'P-ACLAUSE,P-NC2
+ EQUAL? TBL,P-PRSO \?CND73
+ SET 'P-ACLAUSE,P-NC1
+?CND73: SET 'P-ANAM,P-NAM
+ ICALL ORPHAN,FALSE-VALUE,FALSE-VALUE
+ SET 'P-OFLAG,TRUE-VALUE
+ JUMP ?CND57
+?CCL63: ZERO? VRB /?CND57
+ ICALL2 NOT-IN-SENTENCE,STR?514
+?CND57: SET 'P-NAM,FALSE-VALUE
+ SET 'P-ADJ,FALSE-VALUE
+ RFALSE
+?CCL39: ZERO? P-OFLAG \FALSE
+ ZERO? LEN \?CCL79
+ ZERO? GCHECK /?CCL79
+ PUT P-NAMW,P-PHR,P-NAM
+ PUT P-ADJW,P-PHR,P-ADJ
+ ZERO? VRB /?CND82
+ SET 'P-SLOCBITS,XBITS
+ ICALL OBJ-FOUND,NOT-HERE-OBJECT,TBL
+ SET 'P-XNAM,P-NAM
+ SET 'P-NAM,FALSE-VALUE
+ SET 'P-XADJ,P-ADJ
+ SET 'P-ADJ,FALSE-VALUE
+ ZERO? LIT? \TRUE
+ ICALL1 TOO-DARK
+ RTRUE
+?CND82: SET 'P-NAM,FALSE-VALUE
+ SET 'P-ADJ,FALSE-VALUE
+ RFALSE
+?CCL79: ZERO? LEN \?CND30
+ SET 'GCHECK,TRUE-VALUE
+ JUMP ?PRG25
+
+
+ .FUNCT MOBY-FIND,TBL,OBJ,LEN,NAM,ADJ,X
+ SET 'OBJ,1
+ SET 'NAM,P-NAM
+ SET 'ADJ,P-ADJ
+ SET 'P-NAM,P-XNAM
+ SET 'P-ADJ,P-XADJ
+ PUT TBL,P-MATCHLEN,0
+?PRG1: IN? OBJ,ROOMS /?CND3
+ CALL2 THIS-IT?,OBJ
+ ZERO? STACK /?CND3
+ ICALL OBJ-FOUND,OBJ,TBL
+?CND3: IGRTR? 'OBJ,LAST-OBJECT \?PRG1
+ GET TBL,P-MATCHLEN >LEN
+ EQUAL? LEN,1 \?CND9
+ GET TBL,1 >P-MOBY-FOUND
+?CND9: SET 'P-NAM,NAM
+ SET 'P-ADJ,ADJ
+ RETURN LEN
+
+
+ .FUNCT WHICH-PRINT,TLEN,LEN,TBL,OBJ,RLEN
+ SET 'RLEN,LEN
+ PRINTI "[Which"
+ ZERO? P-OFLAG \?CTR2
+ ZERO? P-MERGED \?CTR2
+ ZERO? P-AND /?CCL3
+?CTR2: PRINTC SP
+ ZERO? P-LASTADJ /?CND7
+ PRINTB P-LASTADJ
+ PRINTC SP
+?CND7: PRINTB P-NAM
+ JUMP ?CND1
+?CCL3: EQUAL? TBL,P-PRSO \?CCL10
+ ICALL CLAUSE-PRINT,P-NC1,P-NC1L,FALSE-VALUE
+ JUMP ?CND1
+?CCL10: ICALL CLAUSE-PRINT,P-NC2,P-NC2L,FALSE-VALUE
+?CND1: PRINTI " do you mean,"
+ SET 'WHICH-PRINTING,TRUE-VALUE
+?PRG11: INC 'TLEN
+ GET TBL,TLEN >OBJ
+ PRINTC SP
+ ICALL2 THE-PRINT,OBJ
+ EQUAL? LEN,2 \?CCL15
+ EQUAL? RLEN,2 /?CND16
+ PRINTC 44
+?CND16: PRINTI " or"
+ JUMP ?CND13
+?CCL15: GRTR? LEN,2 \?CND13
+ PRINTC 44
+?CND13: DLESS? 'LEN,1 \?PRG11
+ SET 'WHICH-PRINTING,FALSE-VALUE
+ PRINTR "?]"
+
+
+ .FUNCT DESCRIBE-PSEUDO-OBJECT,OBJ
+ ZERO? P-PNAM /?CND1
+ EQUAL? HERE,LAST-PSEUDO-LOC \?CND1
+ PRINTB P-PNAM
+ RTRUE
+?CND1: PRINTD PSEUDO-OBJECT
+ RTRUE
+
+
+ .FUNCT GLOBAL-CHECK,TBL,LEN,RMG,RMGL,CNT,OBJ,OBITS,X
+ GET TBL,P-MATCHLEN >LEN
+ SET 'OBITS,P-SLOCBITS
+ GETPT HERE,P?GLOBAL >RMG
+ ZERO? RMG /?CND1
+ PTSIZE RMG
+ DIV STACK,2
+ SUB STACK,1 >RMGL
+?PRG3: GET RMG,CNT >OBJ
+ FIRST? OBJ >X \?CND5
+ ICALL SEARCH-LIST,OBJ,TBL,P-SRCALL
+?CND5: CALL2 THIS-IT?,OBJ
+ ZERO? STACK /?CND7
+ ICALL OBJ-FOUND,OBJ,TBL
+?CND7: IGRTR? 'CNT,RMGL \?PRG3
+?CND1: GETP HERE,P?THINGS >RMG
+ ZERO? RMG /?CND11
+ GET RMG,0 >RMGL
+ SET 'CNT,0
+?PRG13: ADD CNT,1
+ GET RMG,STACK
+ EQUAL? P-NAM,STACK \?CND15
+ ZERO? P-ADJ /?CCL16
+ ADD CNT,2
+ GET RMG,STACK
+ EQUAL? P-ADJ,STACK \?CND15
+?CCL16: SET 'P-PNAM,P-NAM
+ ZERO? P-ADJ /?CCL23
+ SET 'P-PADJN,P-ADJ
+ JUMP ?CND21
+?CCL23: SET 'P-PADJN,FALSE-VALUE
+?CND21: SET 'LAST-PSEUDO-LOC,HERE
+ FCLEAR PSEUDO-OBJECT,NOARTICLE
+ ADD CNT,3
+ GET RMG,STACK
+ PUTP PSEUDO-OBJECT,P?ACTION,STACK
+ ICALL OBJ-FOUND,PSEUDO-OBJECT,TBL
+ JUMP ?CND11
+?CND15: ADD CNT,3 >CNT
+ LESS? CNT,RMGL /?PRG13
+?CND11: GET TBL,P-MATCHLEN
+ EQUAL? STACK,LEN \FALSE
+ SET 'P-SLOCBITS,-1
+ SET 'P-TABLE,TBL
+ ICALL DO-SL,GLOBAL-OBJECTS,1,1
+ SET 'P-SLOCBITS,OBITS
+ RETURN P-SLOCBITS
+
+
+ .FUNCT DO-SL,OBJ,BIT1,BIT2
+ ADD BIT1,BIT2
+ BTST P-SLOCBITS,STACK \?CCL3
+ CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCALL
+ RSTACK
+?CCL3: BTST P-SLOCBITS,BIT1 \?CCL6
+ CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCTOP
+ RSTACK
+?CCL6: BTST P-SLOCBITS,BIT2 \TRUE
+ CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCBOT
+ RSTACK
+
+
+ .FUNCT SEARCH-LIST,OBJ,TBL,LVL,X
+ FIRST? OBJ >OBJ \FALSE
+?PRG3: EQUAL? LVL,P-SRCBOT /?CND5
+ CALL2 THIS-IT?,OBJ
+ ZERO? STACK /?CND5
+ ICALL OBJ-FOUND,OBJ,TBL
+?CND5: EQUAL? OBJ,WINNER,LOCAL-GLOBALS,GLOBAL-OBJECTS /?CND9
+ FIRST? OBJ >X \?CND9
+ CALL2 SEE-INSIDE?,OBJ
+ ZERO? STACK /?CND9
+ SET 'X,P-SRCTOP
+ FSET? OBJ,SURFACE \?CND14
+ SET 'X,P-SRCALL
+?CND14: ICALL SEARCH-LIST,OBJ,TBL,X
+?CND9: NEXT? OBJ >OBJ /?PRG3
+ RFALSE
+
+
+ .FUNCT THIS-IT?,OBJ,TBL,LEN
+ ZERO? P-NAM /?CCL3
+ GETPT OBJ,P?SYNONYM >TBL
+ ZERO? TBL /FALSE
+ PTSIZE TBL
+ DIV STACK,2 >LEN
+ ZERO? LEN /FALSE
+ INTBL? P-NAM,TBL,LEN >LEN \FALSE
+?CCL3: ZERO? P-ADJ /?CCL10
+ GETPT OBJ,P?ADJECTIVE >TBL
+ ZERO? TBL /FALSE
+ PTSIZE TBL
+ DIV STACK,2 >LEN
+ ZERO? LEN /FALSE
+ INTBL? P-ADJ,TBL,LEN >LEN \FALSE
+?CCL10: ZERO? P-GWIMBIT /TRUE
+ FSET? OBJ,P-GWIMBIT /TRUE
+ RFALSE
+
+
+ .FUNCT OBJ-FOUND,OBJ,TBL,PTR
+ GET TBL,P-MATCHLEN >PTR
+ INC 'PTR
+ PUT TBL,PTR,OBJ
+ PUT TBL,P-MATCHLEN,PTR
+ RFALSE
+
+
+ .FUNCT ITAKE-CHECK,TBL,BITS,PTR,LEN,OBJ,L,GOT-IT,TOOK-IT
+ SET 'PTR,1
+ GET TBL,P-MATCHLEN >LEN
+ ZERO? LEN /TRUE
+ BTST BITS,SHAVE /?PRG7
+ BTST BITS,STAKE \TRUE
+?PRG7: GET TBL,PTR >OBJ
+ EQUAL? OBJ,IT \?CCL11
+ CALL2 ACCESSIBLE?,P-IT-OBJECT
+ ZERO? STACK \?CND12
+ ICALL1 MORE-SPECIFIC
+ RFALSE
+?CND12: SET 'OBJ,P-IT-OBJECT
+ JUMP ?CND9
+?CCL11: EQUAL? OBJ,THEM \?CCL15
+ CALL2 ACCESSIBLE?,P-THEM-OBJECT
+ ZERO? STACK \?CND16
+ ICALL1 MORE-SPECIFIC
+ RFALSE
+?CND16: SET 'OBJ,P-THEM-OBJECT
+ JUMP ?CND9
+?CCL15: EQUAL? OBJ,HER \?CCL19
+ CALL2 ACCESSIBLE?,P-HER-OBJECT
+ ZERO? STACK \?CND20
+ ICALL1 MORE-SPECIFIC
+ RFALSE
+?CND20: SET 'OBJ,P-HER-OBJECT
+ JUMP ?CND9
+?CCL19: EQUAL? OBJ,HIM \?CND9
+ CALL2 ACCESSIBLE?,P-HIM-OBJECT
+ ZERO? STACK \?CND23
+ ICALL1 MORE-SPECIFIC
+ RFALSE
+?CND23: SET 'OBJ,P-HIM-OBJECT
+?CND9: EQUAL? OBJ,WINNER,HANDS,FEET /?CND25
+ EQUAL? OBJ,ME,YOU,ROOMS /?CND25
+ EQUAL? OBJ,INTDIR,RIGHT,LEFT /?CND25
+ EQUAL? OBJ,MONEY /?CND25
+ CALL2 HELD?,OBJ
+ ZERO? STACK \?CND25
+ SET 'PRSO,OBJ
+ LOC OBJ >L
+ SET 'GOT-IT,0
+ SET 'TOOK-IT,0
+ ZERO? L /?CND32
+ FSET? OBJ,TRYTAKE \?CCL35
+ FSET? OBJ,TAKEABLE /?CCL35
+ BTST BITS,SHAVE \?CND32
+ IN? L,WINNER \?CND32
+ INC 'GOT-IT
+ JUMP ?CND32
+?CCL35: ZERO? P-MULT? \?CCL43
+ IN? L,WINNER \?CCL43
+ CALL2 ITAKE,FALSE-VALUE
+ ZERO? STACK /?CCL43
+ INC 'GOT-IT
+ INC 'TOOK-IT
+ JUMP ?CND32
+?CCL43: EQUAL? L,WINNER \?CND32
+ BTST BITS,SHAVE \?CND32
+ INC 'GOT-IT
+?CND32: ZERO? GOT-IT \?CCL52
+ BTST BITS,SHAVE \?CCL52
+ ICALL1 WINNER-NOT-HOLDING
+ EQUAL? LEN,PTR \?CCL57
+ ZERO? P-MULT? /?CCL57
+ PRINTI "all of those things"
+ JUMP ?CND55
+?CCL57: EQUAL? OBJ,NOT-HERE-OBJECT \?CCL61
+ ICALL2 THIS-IS-IT,OBJ
+ ICALL2 DPRINT,OBJ
+ JUMP ?CND55
+?CCL61: ICALL2 THIS-IS-IT,OBJ
+ FSET? OBJ,PLURAL \?CCL64
+ PRINTI "any "
+ JUMP ?CND62
+?CCL64: FSET? OBJ,NOARTICLE /?CND62
+ FSET? OBJ,PROPER \?CCL68
+ PRINT LTHE
+ JUMP ?CND62
+?CCL68: FSET? OBJ,VOWEL \?CCL70
+ PRINTI "an "
+ JUMP ?CND62
+?CCL70: PRINTI "a "
+?CND62: ICALL2 DPRINT,OBJ
+?CND55: PRINT PERIOD
+ RFALSE
+?CCL52: ZERO? GOT-IT /?CND25
+ ZERO? TOOK-IT /?CND25
+ EQUAL? WINNER,PLAYER \?CND25
+ ICALL2 TAKING-OBJ-FIRST,OBJ
+?CND25: IGRTR? 'PTR,LEN \?PRG7
+ RTRUE
+
+
+ .FUNCT HELD?,OBJ,L
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ZERO? OBJ /FALSE
+ FSET? OBJ,TAKEABLE /?CND3
+ FSET? OBJ,TRYTAKE \FALSE
+?CND3: LOC OBJ >L
+ EQUAL? L,FALSE-VALUE,ROOMS,GLOBAL-OBJECTS /FALSE
+ EQUAL? L,WINNER /TRUE
+ CALL2 HELD?,L
+ RSTACK
+
+
+ .FUNCT TAKING-OBJ-FIRST,OBJ,L
+ LOC OBJ >L
+ PRINTI "[taking "
+ ICALL2 THE-PRINT,OBJ
+ LOC WINNER
+ EQUAL? L,HERE,STACK,FALSE-VALUE /?CND1
+ ICALL2 OUT-OF-LOC,L
+?CND1: PRINTI " first"
+ PRINT BRACKET
+ ICALL SPARK?,FALSE-VALUE,OBJ
+ RFALSE
+
+
+ .FUNCT MANY-CHECK,LOSS,TMP,?TMP1
+ GET P-PRSO,P-MATCHLEN
+ GRTR? STACK,1 \?CCL3
+ GETB P-SYNTAX,P-SLOC1
+ BTST STACK,SMANY /?CCL3
+ SET 'LOSS,1
+ JUMP ?CND1
+?CCL3: GET P-PRSI,P-MATCHLEN
+ GRTR? STACK,1 \?CND1
+ GETB P-SYNTAX,P-SLOC2
+ BTST STACK,SMANY /?CND1
+ SET 'LOSS,2
+?CND1: ZERO? LOSS /TRUE
+ PRINTC 91
+ PRINT CANT
+ PRINTI "refer to more than one object at a time with """
+ GET P-ITBL,P-VERBN >TMP
+ ZERO? TMP \?CCL14
+ PRINTB W?TELL
+ JUMP ?CND12
+?CCL14: ZERO? P-OFLAG \?CTR15
+ ZERO? P-MERGED /?CCL16
+?CTR15: GET TMP,0
+ PRINTB STACK
+ JUMP ?CND12
+?CCL16: GETB TMP,2 >?TMP1
+ GETB TMP,3
+ ICALL WORD-PRINT,?TMP1,STACK
+?CND12: PRINTI ".""]"
+ CRLF
+ RFALSE
+
+
+ .FUNCT SAY-IF-HERE-LIT
+ CALL1 IS-LIT? >LIT?
+ ZERO? LIT? \TRUE
+ SET 'P-CONT,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ SET 'P-WALK-DIR,FALSE-VALUE
+ ICALL2 RELOOK,TRUE-VALUE
+ RTRUE
+
+
+ .FUNCT LIGHT-ROOM-WITH,SOURCE
+ FSET SOURCE,LIGHTED
+ ICALL REPLACE-ADJ?,SOURCE,W?DARK,W?LIGHTED
+ ZERO? LIT? \FALSE
+ CALL2 VISIBLE?,SOURCE
+ ZERO? STACK /FALSE
+ SET 'LIT?,TRUE-VALUE
+ SET 'P-CONT,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ CRLF
+ ICALL1 V-LOOK
+ RTRUE
+
+
+ .FUNCT IS-LIT?,RM,RMBIT,LIT,OHERE
+ ASSIGNED? 'RM /?CND1
+ SET 'RM,HERE
+?CND1: ASSIGNED? 'RMBIT /?CND3
+ SET 'RMBIT,TRUE-VALUE
+?CND3: ZERO? ALWAYS-LIT? /?CND5
+ EQUAL? WINNER,PLAYER /TRUE
+?CND5: SET 'P-GWIMBIT,LIGHTED
+ SET 'OHERE,HERE
+ SET 'HERE,RM
+ ZERO? RMBIT /?CCL11
+ FSET? RM,LIGHTED \?CCL11
+ INC 'LIT
+ JUMP ?CND9
+?CCL11: PUT P-MERGE,P-MATCHLEN,0
+ SET 'P-TABLE,P-MERGE
+ SET 'P-SLOCBITS,-1
+ EQUAL? OHERE,RM \?CND14
+ ICALL DO-SL,WINNER,1,1
+ EQUAL? WINNER,PLAYER /?CND14
+ IN? PLAYER,RM \?CND14
+ ICALL DO-SL,PLAYER,1,1
+?CND14: ICALL DO-SL,RM,1,1
+ GET P-TABLE,P-MATCHLEN
+ GRTR? STACK,0 \?CND9
+ INC 'LIT
+?CND9: SET 'HERE,OHERE
+ SET 'P-GWIMBIT,0
+ RETURN LIT
+
+
+ .FUNCT DONT-HAVE?,OBJ,L,O
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: LOC OBJ >L
+ ZERO? L /?CND3
+ EQUAL? L,WINNER /FALSE
+ IN? L,PLAYER \?CND3
+ EQUAL? WINNER,PLAYER \?CND3
+ SET 'O,PRSO
+ SET 'PRSO,OBJ
+ CALL2 ITAKE,FALSE-VALUE
+ ZERO? STACK /?CND10
+ PRINTI "[taking "
+ ICALL1 THE-PRINT
+ ICALL2 OUT-OF-LOC,L
+ PRINTI " first"
+ PRINT BRACKET
+ ICALL2 SPARK?,FALSE-VALUE
+ SET 'PRSO,O
+ ICALL2 THIS-IS-IT,PRSO
+ RFALSE
+?CND10: SET 'PRSO,O
+ ICALL TAKE-FIRST,OBJ,L
+ RTRUE
+?CND3: ICALL1 WINNER-NOT-HOLDING
+ ZERO? OBJ /?CCL14
+ FSET? OBJ,PLURAL \?CND15
+ PRINTI "any "
+?CND15: ICALL2 THE-PRINT,OBJ
+ JUMP ?CND12
+?CCL14: ICALL2 DPRINT,NOT-HERE-OBJECT
+?CND12: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT TAKE-FIRST,OBJ1,OBJ2
+ PRINTI "You'd have to take "
+ ICALL2 THE-PRINT,OBJ1
+ ICALL2 OUT-OF-LOC,OBJ2
+ PRINT SFIRST
+ RTRUE
+
+
+ .FUNCT OUT-OF-LOC,L
+ PRINTC SP
+ EQUAL? L,HERE \?CND1
+ PRINTI "off the "
+ ICALL1 GROUND-WORD
+ RTRUE
+?CND1: EQUAL? L,PLAYER \?CCL5
+ PRINTI "away from you"
+ RTRUE
+?CCL5: FSET? L,LIVING \?CCL7
+ PRINTI "away from"
+ JUMP ?CND3
+?CCL7: EQUAL? L,ARCH \?CCL9
+ PRINTI "out from under"
+ JUMP ?CND3
+?CCL9: FSET? L,CONTAINER \?CCL11
+ PRINTI "out of"
+ JUMP ?CND3
+?CCL11: FSET? L,SURFACE \?CCL13
+ PRINTB W?OFF
+ JUMP ?CND3
+?CCL13: PRINTB W?FROM
+?CND3: PRINTC SP
+ ICALL2 THE-PRINT,L
+ RTRUE
+
+
+ .FUNCT SAY-WHERE,L
+ EQUAL? L,PLAYER \?CCL3
+ PRINTI "in "
+ PRINTD HANDS
+ PRINTC 115
+ RTRUE
+?CCL3: EQUAL? L,HERE \?CCL5
+ PRINTI "in front of you"
+ RTRUE
+?CCL5: EQUAL? L,MCASE,BCASE,WCASE \?CCL7
+ PRINTB W?IN
+ JUMP ?CND1
+?CCL7: FSET? L,SURFACE \?CCL9
+ PRINTB W?ON
+ JUMP ?CND1
+?CCL9: FSET? L,CONTAINER \?CCL11
+ PRINTB W?IN
+ JUMP ?CND1
+?CCL11: PRINTB W?WITH
+?CND1: PRINTC SP
+ ICALL2 THE-PRINT,L
+ RTRUE
+
+
+ .FUNCT WINNER-NOT-HOLDING
+ EQUAL? WINNER,PLAYER \?CND1
+ PRINTI "You're not holding "
+ RTRUE
+?CND1: ICALL2 CTHE-PRINT,WINNER
+ PRINTI " do"
+ FSET? WINNER,PLURAL /?CND3
+ PRINTI "es"
+?CND3: PRINTI "n't have "
+ RTRUE
+
+
+ .FUNCT NOT-HERE-OBJECT-F,PRSO?,TBL,OBJ,LEN
+ SET 'PRSO?,TRUE-VALUE
+ EQUAL? PRSO,NOT-HERE-OBJECT \?CCL3
+ EQUAL? PRSI,NOT-HERE-OBJECT \?CCL3
+ PRINTR "Those things aren't here."
+?CCL3: EQUAL? PRSO,NOT-HERE-OBJECT \?CCL7
+ SET 'TBL,P-PRSO
+ JUMP ?CND1
+?CCL7: SET 'TBL,P-PRSI
+ SET 'PRSO?,FALSE-VALUE
+?CND1: ZERO? PRSO? /?CCL10
+ EQUAL? PRSA,V?FIND,V?WHO,V?WHAT /?CCL12
+ EQUAL? PRSA,V?WHERE,V?BUY,V?WAIT-FOR \?CND8
+?CCL12: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
+ ZERO? OBJ /FALSE
+ EQUAL? OBJ,NOT-HERE-OBJECT /?CND8
+ RETURN 2
+?CCL10: EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT,V?ASK-FOR \?CND8
+ CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
+ ZERO? OBJ /FALSE
+ EQUAL? OBJ,NOT-HERE-OBJECT /?CND8
+ RETURN 2
+?CND8: PRINT CANT
+ EQUAL? PRSA,V?LISTEN \?CCL33
+ PRINTB W?HEAR
+ JUMP ?CND31
+?CCL33: EQUAL? PRSA,V?SMELL \?CCL35
+ PRINTB W?SMELL
+ JUMP ?CND31
+?CCL35: PRINTB W?SEE
+?CND31: GET CAPS,0 >LEN
+ INTBL? P-XNAM,CAPS+2,LEN >LEN /?CND36
+ PRINTI " any"
+?CND36: ICALL2 NOT-HERE-PRINT,PRSO?
+ PRINTI " here."
+ CRLF
+ ICALL1 PCLEAR
+ RETURN 2
+
+
+ .FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ
+ CALL2 MOBY-FIND,TBL >M-F
+ EQUAL? M-F,1 \?CCL3
+ ZERO? PRSO? /?CND4
+ SET 'PRSO,P-MOBY-FOUND
+ RFALSE
+?CND4: SET 'PRSI,P-MOBY-FOUND
+ RFALSE
+?CCL3: GRTR? M-F,1 \?CCL7
+ GET TBL,1 >OBJ
+ ZERO? OBJ /?CCL7
+ GETP OBJ,P?GENERIC
+ CALL STACK,TBL >OBJ
+ ZERO? OBJ /?CCL7
+ EQUAL? OBJ,FALSE-VALUE,NOT-HERE-OBJECT /TRUE
+ ZERO? PRSO? /?CND11
+ SET 'PRSO,OBJ
+ RFALSE
+?CND11: SET 'PRSI,OBJ
+ RFALSE
+?CCL7: EQUAL? PRSA,V?ASK-ABOUT,V?TELL-ABOUT,V?ASK-FOR /FALSE
+ EQUAL? PRSA,V?WHO,V?WHAT,V?WHERE /FALSE
+ EQUAL? PRSA,V?FIND,V?FOLLOW,V?TELL /FALSE
+ ZERO? PRSO? /?CTR20
+ RETURN NOT-HERE-OBJECT
+?CTR20: PRINTI "You wouldn't find any"
+ ICALL2 NOT-HERE-PRINT,PRSO?
+ PRINTR " there."
+
+
+ .FUNCT NOT-HERE-PRINT,PRSO?,X
+ ZERO? P-OFLAG \?CTR2
+ ZERO? P-MERGED /?CCL3
+?CTR2: ZERO? P-XADJ /?CND6
+ PRINTC SP
+ PRINTB P-XADJ
+?CND6: ZERO? P-XNAM /FALSE
+ PRINTC SP
+ PRINTB P-XNAM
+ RFALSE
+?CCL3: ZERO? PRSO? /?CCL11
+ GET P-ITBL,P-NC1 >X
+ GET P-ITBL,P-NC1L
+ ICALL BUFFER-PRINT,X,STACK,FALSE-VALUE
+ RFALSE
+?CCL11: GET P-ITBL,P-NC2 >X
+ GET P-ITBL,P-NC2L
+ ICALL BUFFER-PRINT,X,STACK,FALSE-VALUE
+ RFALSE
+
+
+ .FUNCT CONTENTS,THING,SAY-OR,OBJ,NXT,1ST?,IT?,TWO?
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: SET '1ST?,TRUE-VALUE
+ FIRST? THING >OBJ \?CND3
+?PRG5: NEXT? OBJ >NXT /?BOGUS7
+?BOGUS7: EQUAL? OBJ,WINNER /?CCL9
+ FSET? OBJ,NODESC \?CND8
+?CCL9: MOVE OBJ,C-OBJECT
+?CND8: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG5
+?CND3: FIRST? THING >OBJ /?BOGUS14
+?BOGUS14: ZERO? OBJ \?PRG18
+ PRINTI "nothing "
+ CALL2 PICK-NEXT,YAWNS
+ PRINT STACK
+ JUMP ?CND15
+?PRG18: ZERO? OBJ /?CCL22
+ NEXT? OBJ >NXT /?BOGUS23
+?BOGUS23: ZERO? 1ST? /?CCL26
+ SET '1ST?,FALSE-VALUE
+ JUMP ?CND24
+?CCL26: ZERO? NXT /?CCL29
+ PRINTI ", "
+ JUMP ?CND24
+?CCL29: ZERO? SAY-OR /?CCL31
+ PRINTI " or "
+ JUMP ?CND24
+?CCL31: PRINT AND
+?CND24: SET 'DESCING,OBJ
+ ICALL2 PRINTA,OBJ
+ EQUAL? OBJ,GOBLET \?CND32
+ IN? BFLY,OBJ \?CND32
+ FSET? BFLY,LIVING \?CND32
+ PRINT WITH
+ ICALL2 PRINTA,BFLY
+ PRINT STR?493
+?CND32: EQUAL? THING,WINNER \?CND37
+ FSET? OBJ,WIELDED \?CND37
+ PRINTI " (wielded)"
+?CND37: ZERO? IT? \?CCL43
+ ZERO? TWO? \?CCL43
+ SET 'IT?,OBJ
+ JUMP ?CND41
+?CCL43: SET 'TWO?,TRUE-VALUE
+ SET 'IT?,FALSE-VALUE
+?CND41: SET 'OBJ,NXT
+ JUMP ?PRG18
+?CCL22: ZERO? IT? /?CND15
+ ZERO? TWO? \?CND15
+ ICALL2 THIS-IS-IT,IT?
+?CND15: SET 'DESCING,FALSE-VALUE
+ ICALL MOVE-ALL,C-OBJECT,THING
+ RTRUE
+
+
+ .FUNCT MOVE-ALL,FROM,TO,EXCEPT,OBJ,NXT
+ FIRST? FROM >OBJ \FALSE
+?PRG3: NEXT? OBJ >NXT /?BOGUS5
+?BOGUS5: ASSIGNED? 'EXCEPT \?CCL7
+ FSET? OBJ,EXCEPT /?CND6
+?CCL7: MOVE OBJ,TO
+?CND6: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG3
+ RTRUE
+
+
+ .FUNCT GLOBAL-IN?,SOURCE,OBJ1,OBJ2,OBJ3,LEN,X
+ GETPT SOURCE,P?GLOBAL >SOURCE
+ ZERO? SOURCE /FALSE
+ PTSIZE SOURCE
+ DIV STACK,2 >LEN
+ INTBL? OBJ1,SOURCE,LEN >X /TRUE
+ ASSIGNED? 'OBJ2 \FALSE
+ INTBL? OBJ2,SOURCE,LEN >X /TRUE
+ ASSIGNED? 'OBJ3 \FALSE
+ INTBL? OBJ3,SOURCE,LEN >X /TRUE
+ RFALSE
+
+
+ .FUNCT READ-LEXV,KEY,TBL,LEN,ILEN,X,Y,CNT,PTR,DEST,OFFSET,PAGE-SIZE,LAST-PAGE
+ SUB DHEIGHT,2 >PAGE-SIZE
+ SUB MAX-HEIGHT,DHEIGHT >LAST-PAGE
+ COPYT P-INBUF,0,P-INBUF-LENGTH
+ PUTB P-INBUF,0,80
+ COPYT P-LEXV,0,P-LEXV-LENGTH
+ PUTB P-LEXV,0,LEXMAX
+?PRG1: COLOR INCOLOR,BGND
+ READ P-INBUF,0 >KEY
+ EQUAL? KEY,EOL,LF \?CND3
+ ICALL1 DO-LEX
+ RFALSE
+?CND3: SET 'TBL,FALSE-VALUE
+ GETB P-INBUF,1 >ILEN
+ ADD ILEN,2
+ ADD P-INBUF,STACK >DEST
+ SET 'OFFSET,0
+ GRTR? KEY,PAD0 \?CCL7
+ LESS? KEY,155 \?CCL7
+ CALL2 KEYPAD,KEY >TBL
+ ZERO? TBL \?CND5
+ SOUND S-BOOP
+ JUMP ?PRG1
+?CCL7: ZERO? DMODE /?CND5
+ EQUAL? KEY,CLICK1,CLICK2 \?CCL14
+ GET 0,27
+ GET STACK,2 >Y
+ GET 0,27
+ GET STACK,1 >X
+ GRTR? CWIDTH,1 \?CND15
+ DEC 'X
+ DIV X,CWIDTH >X
+ INC 'X
+?CND15: GRTR? CHEIGHT,1 \?CND17
+ DEC 'Y
+ DIV Y,CHEIGHT >Y
+ INC 'Y
+?CND17: GRTR? Y,12 /?PRG1
+ LESS? X,MOUSEDGE /?PRG1
+ CALL CLICKED,KEY,Y,X >TBL
+ ZERO? TBL \?CND5
+ SOUND S-BOOP
+ JUMP ?PRG1
+?CCL14: EQUAL? KEY,UP-ARROW,MAC-UP-ARROW \?CCL26
+ ZERO? DBOX-TOP \?CND27
+ SOUND 2
+ JUMP ?PRG1
+?CND27: SUB DBOX-TOP,PAGE-SIZE >DBOX-TOP
+ LESS? DBOX-TOP,0 \?CND29
+ SET 'DBOX-TOP,0
+?CND29: ICALL1 DISPLAY-DBOX
+ JUMP ?PRG1
+?CCL26: EQUAL? KEY,DOWN-ARROW,MAC-DOWN-ARROW \?CND5
+ SUB DBOX-LINES,DHEIGHT >X
+ BTST IN-DBOX,SHOWING-STATS /?CCL33
+ GRTR? DBOX-TOP,X /?CCL33
+ SUB LAST-PAGE,1
+ GRTR? DBOX-TOP,STACK \?CND32
+?CCL33: SOUND 2
+ JUMP ?PRG1
+?CND32: INC 'X
+ ADD DBOX-TOP,PAGE-SIZE >DBOX-TOP
+ GRTR? DBOX-TOP,X \?CCL39
+ SET 'DBOX-TOP,X
+ JUMP ?CND37
+?CCL39: GRTR? DBOX-TOP,LAST-PAGE \?CND37
+ SET 'DBOX-TOP,LAST-PAGE
+?CND37: ICALL1 DISPLAY-DBOX
+ JUMP ?PRG1
+?CND5: GRTR? KEY,132 \?CND41
+ LESS? KEY,143 \?CND41
+ SUB KEY,F1
+ GET SOFT-KEYS,STACK >TBL
+?CND41: ZERO? TBL /?PRG1
+ GETB TBL,1 >LEN
+ ZERO? LEN \?CCL49
+ SOUND S-BOOP
+ JUMP ?PRG1
+?CCL49: ZERO? ILEN /?CND47
+ SUB 76,ILEN
+ GRTR? LEN,STACK \?CCL52
+ SOUND S-BOOP
+ JUMP ?PRG1
+?CCL52: SUB DEST,1
+ GETB STACK,0
+ EQUAL? STACK,SP /?CND47
+ PUTB DEST,0,SP
+ INC 'DEST
+ INC 'OFFSET
+ BUFOUT FALSE-VALUE
+ PRINTC SP
+?CND47: BUFOUT FALSE-VALUE
+ ICALL SHOW-TABLE,TBL,LEN
+ ADD TBL,2 >TBL
+ SET 'PTR,0
+ SUB LEN,1 >CNT
+?PRG54: GETB TBL,PTR >X
+ EQUAL? X,EOL,LF /?CCL57
+ EQUAL? X,124,33 \?CND56
+?CCL57: BUFOUT TRUE-VALUE
+ PUTB DEST,PTR,0
+ ADD PTR,ILEN
+ ADD STACK,OFFSET >LEN
+ PUTB P-INBUF,1,LEN
+ ICALL1 DO-LEX
+ RFALSE
+?CND56: PUTB DEST,PTR,X
+ IGRTR? 'PTR,CNT \?PRG54
+ PRINTC SP
+ BUFOUT TRUE-VALUE
+ PUTB DEST,PTR,SP
+ INC 'OFFSET
+ ADD LEN,ILEN
+ ADD STACK,OFFSET >LEN
+ PUTB P-INBUF,1,LEN
+ JUMP ?PRG1
+
+
+ .FUNCT DO-LEX
+ LEX P-INBUF,P-LEXV
+ LEX P-INBUF,P-LEXV,VOCAB2,1
+ COLOR FORE,BGND
+ RFALSE
+
+
+ .FUNCT SHOW-TABLE,TBL,LEN,PTR,CHAR
+ SET 'PTR,2
+ INC 'LEN
+?PRG1: GETB TBL,PTR >CHAR
+ EQUAL? CHAR,EOL,LF /?CTR4
+ EQUAL? CHAR,124,33 \?CCL5
+?CTR4: CRLF
+ RFALSE
+?CCL5: GRTR? CHAR,96 \?CND3
+ LESS? CHAR,123 \?CND3
+ SUB CHAR,SP >CHAR
+?CND3: PRINTC CHAR
+ IGRTR? 'PTR,LEN \?PRG1
+ RFALSE
+
+
+ .FUNCT CLICKED,CLK,Y,X,NX,NY,DIR,TMP,MX,MY
+ SUB X,MOUSEDGE
+ SUB STACK,1 >X
+ DEC 'Y
+ EQUAL? Y,MAPY \?CCL3
+ EQUAL? X,MAPX \?CCL3
+ MUL MAPY,MWIDTH
+ ADD MAP,STACK
+ GETB STACK,MAPX >DIR
+ EQUAL? DIR,IUARROW,UARROW \?CCL8
+ SET 'DIR,I-U
+ JUMP ?CND1
+?CCL8: EQUAL? DIR,IDARROW,DARROW \FALSE
+ SET 'DIR,I-D
+ JUMP ?CND1
+?CCL3: SUB X,MAPX >NX
+ SUB Y,MAPY >NY
+ LESS? NY,0 \?CCL13
+ SUB 0,NY >MY
+ JUMP ?CND11
+?CCL13: SET 'MY,NY
+?CND11: LESS? NX,0 \?CCL16
+ SUB 0,NX >MX
+ JUMP ?CND14
+?CCL16: SET 'MX,NX
+?CND14: ZERO? MX \?CCL19
+ ZERO? MY \?CCL19
+ SET 'DIR,AMB
+ JUMP ?CND1
+?CCL19: MUL 3,MX
+ GRTR? STACK,MY /?CCL23
+ GRTR? NY,0 \?CCL26
+ SET 'DIR,I-SOUTH
+ JUMP ?CND1
+?CCL26: SET 'DIR,I-NORTH
+ JUMP ?CND1
+?CCL23: MUL 2,MY
+ GRTR? STACK,MX /?CCL28
+ GRTR? NX,0 \?CCL31
+ SET 'DIR,I-EAST
+ JUMP ?CND1
+?CCL31: SET 'DIR,I-WEST
+ JUMP ?CND1
+?CCL28: GRTR? NX,0 \?CCL33
+ GRTR? NY,0 \?CCL36
+ SET 'DIR,I-SE
+ JUMP ?CND1
+?CCL36: SET 'DIR,I-NE
+ JUMP ?CND1
+?CCL33: GRTR? NY,0 \?CCL38
+ SET 'DIR,I-SW
+ JUMP ?CND1
+?CCL38: SET 'DIR,I-NW
+?CND1: EQUAL? DIR,AMB /FALSE
+ GET DIR-NAMES,DIR
+ ICALL2 TABLE-WALK,STACK
+ RETURN AUX-TABLE
+
+
+ .FUNCT TABLE-WALK,WRD
+ PUT AUX-TABLE,0,0
+ DIROUT D-TABLE-ON,AUX-TABLE
+ EQUAL? WRD,W?AROUND \?CND1
+ PRINTI "walk "
+?CND1: PRINTB WRD
+ CRLF
+ DIROUT D-TABLE-OFF
+ GET AUX-TABLE,0
+ PUTB AUX-TABLE,1,STACK
+ RFALSE
+
+
+ .FUNCT KEYPAD,KEY,TBL,WRD
+ SUB KEY,PAD1
+ GET PAD-NAMES,STACK >WRD
+ EQUAL? KEY,PAD5 \?CND1
+ GETP HERE,P?UP >TBL
+ ZERO? TBL /?CND3
+ CALL CHECK-EXIT?,HERE,TBL
+ ZERO? STACK /?CND3
+ SET 'WRD,W?UP
+?CND3: GETP HERE,P?DOWN >TBL
+ ZERO? TBL /?CND1
+ CALL CHECK-EXIT?,HERE,TBL
+ ZERO? STACK /?CND1
+ EQUAL? WRD,W?UP \?CCL11
+ SET 'WRD,W?AROUND
+ JUMP ?CND1
+?CCL11: SET 'WRD,W?DOWN
+?CND1: ICALL2 TABLE-WALK,WRD
+ RETURN AUX-TABLE
+
+
+ .FUNCT PICK-ONE,TBL,L,CNT,RND,X,RTBL
+ GET TBL,0 >L
+ GET TBL,1 >CNT
+ DEC 'L
+ ADD TBL,2 >TBL
+ MUL CNT,2
+ ADD TBL,STACK >RTBL
+ SUB L,CNT
+ RANDOM STACK >RND
+ GET RTBL,RND >X
+ GET RTBL,1
+ PUT RTBL,RND,STACK
+ PUT RTBL,1,X
+ INC 'CNT
+ EQUAL? CNT,L \?CND1
+ SET 'CNT,0
+?CND1: PUT TBL,0,CNT
+ RETURN X
+
+
+ .FUNCT PICK-NEXT,TBL,CNT,STR
+ GET TBL,1 >CNT
+ GET TBL,CNT >STR
+ GET TBL,0
+ IGRTR? 'CNT,STACK \?CND1
+ SET 'CNT,2
+?CND1: PUT TBL,1,CNT
+ RETURN STR
+
+
+ .FUNCT QUOTED-WORD?,PTR,VERB,NAMING,WRD
+ ZERO? VERB /?CND1
+ ZERO? P-QWORD \?CND1
+ ZERO? NAMING /?CND1
+ EQUAL? VERB,ACT?NAME \?CND1
+ SET 'P-QWORD,PTR
+ SET 'WRD,W?PPPZ
+?CND1: ICALL CHANGE-LEXV,PTR,WRD
+ RETURN WRD
+
+
+ .FUNCT QUOTED-PHRASE?,PTR,VERB,1ST?,LEN,WRD,BPTR
+ SET '1ST?,TRUE-VALUE
+ ICALL CHANGE-LEXV,PTR,W?$BUZZ
+ SUB P-LEN,1 >LEN
+ ADD PTR,P-LEXELEN >PTR
+ MUL PTR,2
+ ADD P-LEXV,STACK >BPTR
+?PRG1: LESS? LEN,0 \?CND3
+ ICALL1 PCLEAR
+ PRINTI "[You forgot a second quote.]"
+ CRLF
+ RFALSE
+?CND3: GET P-LEXV,PTR >WRD
+ EQUAL? WRD,W?QUOTE \?CCL7
+ ICALL CHANGE-LEXV,PTR,W?$BUZZ
+ RTRUE
+?CCL7: ZERO? 1ST? /?CCL9
+ ZERO? WRD /?CCL12
+ EQUAL? VERB,ACT?SAY /?CND5
+ EQUAL? VERB,ACT?NAME \?CND5
+ ICALL2 HOLLOW-VOICE,STR?516
+ RFALSE
+?CCL12: CALL QUOTED-WORD?,PTR,VERB,TRUE-VALUE
+ ZERO? STACK /?CCL17
+ SET '1ST?,FALSE-VALUE
+ JUMP ?CND5
+?CCL17: PRINT CANT
+ PRINTI "see any "
+ GETB BPTR,2 >LEN
+ GETB BPTR,3
+ ICALL WORD-PRINT,LEN,STACK
+ PRINTI " here."
+ CRLF
+ RFALSE
+?CCL9: ICALL CHANGE-LEXV,PTR,W?$BUZZ
+?CND5: ADD PTR,P-LEXELEN >PTR
+ DEC 'LEN
+ JUMP ?PRG1
+
+
+ .FUNCT ITS-CLOSED,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ICALL2 THIS-IS-IT,OBJ
+ ICALL2 CTHE-PRINT,OBJ
+ ICALL2 IS-ARE,OBJ
+ PRINTB W?CLOSED
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT REMOVE-ALL,THING,OBJ,NXT
+ FIRST? THING >OBJ \FALSE
+?PRG3: NEXT? OBJ >NXT /?BOGUS5
+?BOGUS5: REMOVE OBJ
+ SET 'OBJ,NXT
+ ZERO? OBJ \?PRG3
+ RFALSE
+
+ .ENDI
diff --git a/parser.zil b/parser.zil
index f3a6f0a..23b9c01 100644
--- a/parser.zil
+++ b/parser.zil
@@ -3371,7 +3371,7 @@ OOPS-INBUF, leaving the appropriate pointers in AGAIN-LEXV."
<TELL ,CANT "see any ">
<SET LEN <GETB .BPTR 2>>
<WORD-PRINT .LEN <GETB .BPTR 3>>
- <TELL " here. [2]" CR>
+ <TELL " here." ;" [2]" CR>
<RFALSE>)>)
(T
<CHANGE-LEXV .PTR ,W?$BUZZ>)>
diff --git a/people.zap b/people.zap
new file mode 100644
index 0000000..5f0fe96
--- /dev/null
+++ b/people.zap
@@ -0,0 +1,1995 @@
+
+
+ .FUNCT SALT-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 PRINTCA,SALT
+ PRINTI " is seated before "
+ ICALL2 PRINTA,EASEL
+ PRINTI ", dabbing color onto "
+ ICALL2 PRINTA,CANVAS
+ CALL2 SEE-ANYTHING-IN?,SALT
+ ZERO? STACK /?CND4
+ PRINTI ". He's holding "
+ ICALL2 CONTENTS,SALT
+?CND4: PRINTC PER
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-WINNER \?CCL7
+ EQUAL? PRSA,V?HELLO \?CCL10
+ EQUAL? PRSO,ROOMS,SALT \?CCL10
+ ICALL1 GREET-SAILOR
+ RETURN 2
+?CCL10: EQUAL? PRSA,V?TELL-ABOUT,V?SSHOW \?CCL16
+ EQUAL? PRSO,ME \?CCL16
+ ICALL2 ASK-SALT-ABOUT,PRSI
+ RETURN 2
+?CCL16: EQUAL? PRSA,V?EXAMINE,V?WHAT,V?WHO /?CTR21
+ EQUAL? PRSA,V?WHERE /?CTR21
+ EQUAL? PRSA,V?SHOW \?CCL22
+ EQUAL? PRSI,ME \?CCL22
+?CTR21: ICALL2 ASK-SALT-ABOUT,PRSO
+ RETURN 2
+?CCL22: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL31
+ EQUAL? PRSI,ME \?CCL31
+ ICALL2 ASK-SALT-FOR,PRSO
+ RETURN 2
+?CCL31: EQUAL? PRSA,V?SGIVE,V?SGET-FOR \?CND8
+ EQUAL? PRSO,ME \?CND8
+ ICALL2 ASK-SALT-FOR,PRSI
+ RETURN 2
+?CND8: ICALL1 DEAF-SALT
+ RETURN 2
+?CCL7: ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL46
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL49
+ ICALL2 HARMLESS,PRSI
+ RTRUE
+?CCL49: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL51
+ ICALL2 GIVE-TO-SALT,PRSO
+ RTRUE
+?CCL51: EQUAL? PRSA,V?SHOW \FALSE
+ ICALL DO-GLANCE,SALT,PRSO
+ RTRUE
+?CCL46: EQUAL? PRSA,V?TELL /FALSE
+ EQUAL? PRSA,V?EXAMINE \?CCL56
+ ICALL1 CTHE-PRINT
+ PRINTR "'s ice-blue eyes glance up from his work."
+?CCL56: EQUAL? PRSA,V?YELL \?CCL58
+ ICALL1 NOT-DEAF
+ RTRUE
+?CCL58: EQUAL? PRSA,V?ASK-FOR \?CCL60
+ ICALL2 ASK-SALT-FOR,PRSI
+ RTRUE
+?CCL60: EQUAL? PRSA,V?ASK-ABOUT \?CCL62
+ ICALL2 ASK-SALT-ABOUT,PRSI
+ RTRUE
+?CCL62: EQUAL? PRSA,V?TELL-ABOUT \?CCL64
+ ICALL DO-GLANCE,SALT,PRSI
+ RTRUE
+?CCL64: EQUAL? PRSA,V?HELLO,V?GOODBYE,V?WAVE-AT \?CCL66
+ ICALL1 GREET-SAILOR
+ RTRUE
+?CCL66: INTBL? PRSA,HURTVERBS,NHVERBS >X \FALSE
+ ICALL1 HARMLESS
+ RTRUE
+
+
+ .FUNCT NOT-DEAF
+ FSET SALT,SEEN
+ ICALL2 CTHE-PRINT,SALT
+ PRINTR " cringes. ""I'm not deaf, y'know!"""
+
+
+ .FUNCT DEAF-SALT,X
+ FSET SALT,SEEN
+ RANDOM 100 >X
+ LESS? X,33 \?CCL3
+ ICALL2 CTHE-PRINT,SALT
+ PRINTR " doesn't look up from his work. Perhaps he didn't hear you."
+?CCL3: LESS? X,67 \?CND1
+ ICALL2 CTHE-PRINT,SALT
+ PRINTR " cocks his head. ""Eh? Didn't catch that."""
+?CND1: PRINTI """Stop whispering, "
+ ICALL1 BOY-GIRL
+ PRINTR "! Can't hear a word you're sayin'."""
+
+
+ .FUNCT BOY-GIRL
+ FSET? PLAYER,FEMALE \?CND1
+ PRINTB W?GIRL
+ RTRUE
+?CND1: PRINTB W?BOY
+ RTRUE
+
+
+ .FUNCT GREET-SAILOR
+ FSET SALT,SEEN
+ RANDOM 100
+ LESS? 33,STACK /?CND1
+ ICALL1 DEAF-SALT
+ RTRUE
+?CND1: ICALL2 CTHE-PRINT,SALT
+ FSET? SALT,TOUCHED \?CND3
+ PRINTR " shrugs. ""Okay. Hello, again."""
+?CND3: FSET SALT,TOUCHED
+ EQUAL? P-PRSA-WORD,W?HELLO \?CCL7
+ CALL2 NOUN-USED?,W?SAILOR
+ ZERO? STACK /?CCL7
+ PRINTI " chuckles softly and nods. ""Thought I 'membered you. "
+ JUMP ?CND5
+?CCL7: PRINTI " nods. """
+?CND5: PRINTI "Hello, "
+ ICALL1 BOY-GIRL
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT ASK-SALT-ABOUT,OBJ,TBL,LEN,X
+ FSET SALT,SEEN
+ RANDOM 100
+ LESS? 33,STACK /?CND1
+ ICALL1 DEAF-SALT
+ RTRUE
+?CND1: CALL2 VISIBLE?,OBJ
+ ZERO? STACK \?CCL5
+ ICALL2 PERPLEXED,SALT
+ PRINTI "Not sure"
+ ICALL2 WHO-WHAT,OBJ
+ PRINTI "you're talkin' 'bout, "
+ ICALL1 BOY-GIRL
+ PRINT PERQ
+ RTRUE
+?CCL5: EQUAL? OBJ,SALT \?CCL7
+ PRINTR """Been retired, ah, goin' on five years."""
+?CCL7: EQUAL? OBJ,SHILL \?CCL9
+ PRINTR """Lucky ye saw it a-floatin' there."""
+?CCL9: EQUAL? OBJ,EASEL,CANVAS \?CCL11
+ PRINTR """Like it? Reminds me o' the good old days."""
+?CCL11: RANDOM 100
+ LESS? 75,STACK /?CND3
+ ICALL1 DEAF-SALT
+ RTRUE
+?CND3: ICALL IGNORANT,SALT,OBJ
+ RTRUE
+
+
+ .FUNCT ASK-SALT-FOR,OBJ,X,L
+ FSET SALT,SEEN
+ RANDOM 100
+ LESS? 33,STACK /?CCL3
+ ICALL1 DEAF-SALT
+ RTRUE
+?CCL3: EQUAL? OBJ,EASEL,CANVAS \?CND1
+ PRINTR """Sorry. Not for sale."""
+?CND1: ICALL AINT-GOT,SALT,OBJ
+ RTRUE
+
+
+ .FUNCT AINT-GOT,WHO,OBJ
+ PRINTI """Don't have "
+ ICALL2 PRINTA,OBJ
+ PRINT STR?623
+ ICALL2 THE-PRINT,WHO
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT GIVE-TO-SALT,OBJ
+ FSET SALT,SEEN
+ CALL GIVING-LOOT?,OBJ,SALT
+ ZERO? STACK \TRUE
+ ICALL2 NO-THANKS,SALT
+ RTRUE
+
+
+ .FUNCT NO-THANKS,WHO
+ ICALL2 CTHE-PRINT,WHO
+ PRINTR " shakes his head. ""No, thanks."""
+
+
+ .FUNCT DO-GLANCE,WHO,OBJ
+ FSET WHO,SEEN
+ ICALL2 CTHE-PRINT,WHO
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CCL3
+ PRINT GLANCES-AT
+ ICALL2 THE-PRINT,OBJ
+ JUMP ?CND1
+?CCL3: PRINT STR?624
+?CND1: PRINT STR?625
+ RTRUE
+
+
+ .FUNCT COOK-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ PRINTI "A skinny old cook is bustling around the kitchen."
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-WINNER \?CCL5
+ EQUAL? PRSA,V?TELL-ABOUT,V?SSHOW \?CCL8
+ EQUAL? PRSO,ME \?CCL8
+ ICALL2 ASK-COOK-ABOUT,PRSI
+ RETURN 2
+?CCL8: EQUAL? PRSA,V?EXAMINE,V?WHAT,V?WHO /?CTR13
+ EQUAL? PRSA,V?WHERE /?CTR13
+ EQUAL? PRSA,V?SHOW \?CCL14
+ EQUAL? PRSI,ME \?CCL14
+?CTR13: ICALL2 ASK-COOK-ABOUT,PRSO
+ RETURN 2
+?CCL14: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL23
+ EQUAL? PRSI,ME \?CCL23
+ ICALL2 ASK-COOK-FOR,PRSO
+ RETURN 2
+?CCL23: EQUAL? PRSA,V?SGIVE,V?SGET-FOR \?CND6
+ EQUAL? PRSO,ME \?CND6
+ ICALL2 ASK-COOK-FOR,PRSI
+ RETURN 2
+?CND6: ICALL2 CTHE-PRINT,COOK
+ PRINTI " scowls. ""Don't bother me now, I'm busy!"""
+ CRLF
+ RETURN 2
+?CCL5: ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL38
+ FSET? PRSI,NODESC \?CCL41
+ ICALL1 CANT-FROM-HERE
+ RTRUE
+?CCL41: EQUAL? PRSA,V?BUY-FROM \?CCL43
+ ICALL2 ASK-COOK-FOR,PRSO
+ RTRUE
+?CCL43: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL45
+ ICALL2 GIVE-TO-COOK,PRSO
+ RTRUE
+?CCL45: EQUAL? PRSA,V?SHOW \FALSE
+ ICALL2 SHOW-TO-COOK,PRSO
+ RTRUE
+?CCL38: FSET? PRSO,NODESC \?CCL48
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \?CND49
+ ICALL1 PCLEAR
+ PRINTI "He"
+ PRINT STR?626
+ RETURN 2
+?CND49: ICALL1 CANT-FROM-HERE
+ RTRUE
+?CCL48: EQUAL? PRSA,V?ASK-FOR \?CCL54
+ ICALL2 ASK-COOK-FOR,PRSI
+ RTRUE
+?CCL54: EQUAL? PRSA,V?ASK-ABOUT \?CCL56
+ ICALL2 ASK-COOK-ABOUT,PRSI
+ RTRUE
+?CCL56: EQUAL? PRSA,V?TELL-ABOUT \FALSE
+ ICALL2 SHOW-TO-COOK,PRSI
+ RTRUE
+
+
+ .FUNCT ASK-COOK-ABOUT,OBJ,TBL,LEN,X
+ ICALL2 SEE-CHARACTER,COOK
+ FSET COOK,SEEN
+ EQUAL? OBJ,BOTTLE \?CCL3
+ FSET? ONION,SEEN \?CCL6
+ PRINTR """Got it put away, nice and safe. Thanks again."""
+?CCL6: FSET? BOTTLE,IDENTIFIED \?CCL8
+ PRINTI """This here onion's yours if you "
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CND9
+ PRINTR "hand it over."""
+?CND9: PRINTR "get it for me."""
+?CCL8: FSET? ONION,TOUCHED \?CND4
+ FCLEAR COOK,SEEN
+ PRINTI """Ahem."""
+ CRLF
+ ICALL1 I-ONION-OFFER
+ RTRUE
+?CND4: ICALL DO-GLANCE,COOK,CELLAR-DOOR
+ RTRUE
+?CCL3: EQUAL? OBJ,COOK \?CCL13
+ PRINTR """Grote Clutchcake's the name."""
+?CCL13: EQUAL? OBJ,CELLAR,CELLAR-DOOR \?CCL15
+ PRINTR """Used t'be a wine cellar. Can't go down no more; too dangerous."""
+?CCL15: CALL2 VISIBLE?,OBJ
+ ZERO? STACK \?CCL17
+ ICALL2 PERPLEXED,COOK
+ PRINTI "Don't know"
+ ICALL2 WHO-WHAT,OBJ
+ PRINTR "you're talkin' 'bout."""
+?CCL17: EQUAL? OBJ,ONION \?CND1
+ ICALL1 COOK-MENTIONS-ONION
+ RTRUE
+?CND1: ICALL2 CTHE-PRINT,COOK
+ PRINTI " shrugs impatiently. ""Can't say anythin' 'bout "
+ ICALL2 PRONOUN,OBJ
+ PRINTR " you wouldn't know already."""
+
+
+ .FUNCT ASK-COOK-FOR,OBJ,X,L
+ ICALL2 SEE-CHARACTER,COOK
+ LOC OBJ >L
+ FSET COOK,SEEN
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CND1
+ EQUAL? OBJ,ONION \?CND1
+ FSET? OBJ,SEEN \?CCL6
+ PRINTR """It's yours. Roll it outa here."""
+?CCL6: FSET? BOTTLE,IDENTIFIED \?CND4
+ PRINTI """Yours for "
+ ICALL2 THE-PRINT,BOTTLE
+ FSET? BOTTLE,TOUCHED /?CND8
+ PRINTI " downstairs"
+?CND8: PRINT PERQ
+ RTRUE
+?CND4: ICALL1 COOK-MENTIONS-ONION
+ RTRUE
+?CND1: ICALL AINT-GOT,COOK,OBJ
+ RTRUE
+
+
+ .FUNCT COOK-MENTIONS-ONION
+ FSET? ONION,TOUCHED /?CND1
+ FSET ONION,TOUCHED
+ FSET COOK,SEEN
+ ICALL2 DEQUEUE,I-COOK
+ ICALL2 QUEUE,I-ONION-OFFER
+ ICALL2 CTHE-PRINT,COOK
+ PRINTI " gives "
+ ICALL2 THE-PRINT,ONION
+ PRINTI " an affectionate kick. "
+?CND1: PRINTR """Nice, eh? Won second place at the Borphee County Fair."""
+
+
+ .FUNCT STOP-ONION-OFFER
+ FSET BOTTLE,IDENTIFIED
+ ICALL2 DEQUEUE,I-ONION-OFFER
+ CALL2 QUEUED?,I-COOK
+ ZERO? STACK \?CND1
+ ICALL2 QUEUE,I-COOK
+?CND1: FSET COOK,SEEN
+ RFALSE
+
+
+ .FUNCT GIVE-TO-COOK,OBJ
+ ICALL2 SEE-CHARACTER,COOK
+ FSET COOK,SEEN
+ CALL GIVING-LOOT?,OBJ,COOK
+ ZERO? STACK \TRUE
+ ICALL2 CTHE-PRINT,COOK
+ EQUAL? OBJ,BOTTLE \?CND3
+ ICALL2 VANISH,OBJ
+ FSET ONION,SEEN
+ PRINTI "'s eyes grow large as he takes "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI ". ""Been after this thing for years,"" he cries, turning it over and over in his hands before stowing it quickly out of sight. "
+ FSET? BOTTLE,IDENTIFIED /?CND5
+ PRINTI """I owe you a big favor, "
+ ICALL1 BOY-GIRL
+ PRINTI ". A "
+ ICALL2 ITALICIZE,STR?627
+ PRINTI " big favor. Big as this here onion."" "
+?CND5: ICALL1 STOP-ONION-OFFER
+ PRINTI "Your eyes follow his to "
+ ICALL2 THE-PRINT,ONION
+ PRINTR " near the exit. ""All yours,"" he says, patting it affectionately."
+?CND3: PRINTI " refuses "
+ ICALL2 THE-PRINT,OBJ
+ PRINTR " with a shake of his head. ""No, thanks."""
+
+
+ .FUNCT COOK-SEES-BOTTLE
+ ICALL1 STOP-ONION-OFFER
+ FSET BOTTLE,MUNGED
+ PRINTI """The bottle!"" gasps "
+ ICALL2 THE-PRINT,COOK
+ PRINTI " when he sees it"
+ IN? BOTTLE,PLAYER \?CND1
+ PRINTI " in your hands"
+?CND1: PRINT STR?628
+ RTRUE
+
+
+ .FUNCT SHOW-TO-COOK,OBJ
+ ICALL2 SEE-CHARACTER,COOK
+ FSET COOK,SEEN
+ EQUAL? OBJ,BOTTLE \?CND1
+ FSET? OBJ,IDENTIFIED /?CND3
+ ICALL1 COOK-SEES-BOTTLE
+ RTRUE
+?CND3: ICALL1 STOP-ONION-OFFER
+ PRINTI """That's the one!"" he gasps"
+ PRINT STR?628
+ RTRUE
+?CND1: PRINTI """How interesting,"" yawns "
+ ICALL2 THE-PRINT,COOK
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CND5
+ PRINTI ", glancing at "
+ ICALL2 THE-PRINT,OBJ
+?CND5: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT BANDITS-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?POINT-AT,V?TOUCH-TO,V?FIRE-AT \?CCL8
+ PRINTR "There are too many of them here."
+?CCL8: EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL10
+ ICALL1 SUICIDE
+ RTRUE
+?CCL10: EQUAL? PRSA,V?GIVE,V?SHOW,V?GET-FOR /?CCL11
+ EQUAL? PRSA,V?FEED \FALSE
+?CCL11: ICALL1 HEEDLESS
+ RTRUE
+?CCL5: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL15
+ ICALL1 HEEDLESS
+ RETURN 2
+?CCL15: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL19
+ ICALL2 NOSEY,STR?629
+ RTRUE
+?CCL19: EQUAL? PRSA,V?LISTEN \?CCL21
+ ICALL2 NOSEY,STR?630
+ RTRUE
+?CCL21: INTBL? PRSA,HURTVERBS,NHVERBS >X \FALSE
+ ICALL1 SUICIDE
+ RTRUE
+
+
+ .FUNCT NOSEY,STR
+ FSET PRSO,SEEN
+ PRINTI """Who're you "
+ PRINT STR
+ PRINTR "?"" demands a very large bandit. You wisely decide to turn your attention elsewhere."
+
+
+ .FUNCT SUICIDE
+ PRINTI "Suicide. Monsters are one thing; an armed "
+ PRINTD BANDITS
+ PRINTR " is quite another."
+
+
+ .FUNCT HEEDLESS
+ ICALL1 PCLEAR
+ PRINTR "The bandits glare at your interruption. ""Scram."""
+
+
+ .FUNCT OWOMAN-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 PRINTCA,OWOMAN
+ PRINT SIS
+ CALL2 PICK-NEXT,OWOMAN-EYES
+ PRINT STACK
+ PRINTC PER
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-WINNER \?CCL5
+ EQUAL? PRSA,V?TELL-ABOUT,V?SSHOW \?CCL8
+ EQUAL? PRSO,ME \?CCL8
+ ICALL2 ASK-OWOMAN-ABOUT,PRSI
+ RETURN 2
+?CCL8: EQUAL? PRSA,V?EXAMINE,V?REQUEST,V?WHAT /?CTR13
+ EQUAL? PRSA,V?WHO,V?WHERE /?CTR13
+ EQUAL? PRSA,V?SHOW \?CCL14
+ EQUAL? PRSI,ME \?CCL14
+?CTR13: ICALL2 ASK-OWOMAN-ABOUT,PRSO
+ RETURN 2
+?CCL14: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL23
+ EQUAL? PRSI,ME \?CCL23
+ ICALL2 ASK-OWOMAN-FOR,PRSO
+ RETURN 2
+?CCL23: EQUAL? PRSA,V?SGIVE,V?SGET-FOR \?CCL29
+ EQUAL? PRSO,ME \?CCL29
+ ICALL2 ASK-OWOMAN-FOR,PRSI
+ RETURN 2
+?CCL29: EQUAL? PRSA,V?SELL-TO \?CCL35
+ EQUAL? PRSI,ME \?CCL35
+ ICALL BUY-X-WITH-Y,PRSO,MONEY
+ RTRUE
+?CCL35: EQUAL? PRSA,V?SSELL-TO \?CCL39
+ EQUAL? PRSO,ME \?CCL39
+ ICALL BUY-X-WITH-Y,PRSI,MONEY
+ RTRUE
+?CCL39: EQUAL? PRSA,V?HELLO,V?GOODBYE \?CND6
+ EQUAL? PRSO,ROOMS,OWOMAN \?CND6
+ ICALL1 GREET-OWOMAN
+ RETURN 2
+?CND6: PRINTI """I'm not used to being ordered about,"" observes "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTI " coldly."
+ CRLF
+ RETURN 2
+?CCL5: ZERO? CONTEXT \FALSE
+ CALL2 NOUN-USED?,W?Y'GAEL
+ ZERO? STACK /?CND1
+ FSET? OWOMAN,MUNGED /?CND1
+ FSET OWOMAN,MUNGED
+ PRINT CTHELADY
+ PRINT STR?631
+ PRINTI " as you speak her Name."
+ CRLF
+ RETURN 2
+?CND1: ZERO? NOW-PRSI? /?CCL58
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL61
+ ICALL2 HARMLESS,PRSI
+ RTRUE
+?CCL61: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL63
+ ICALL2 GIVE-TO-OWOMAN,PRSO
+ RTRUE
+?CCL63: EQUAL? PRSA,V?SHOW \?CCL65
+ ICALL2 ASK-OWOMAN-ABOUT,PRSO
+ RTRUE
+?CCL65: EQUAL? PRSA,V?SELL-TO \FALSE
+ ICALL2 TRADE-FOR-LOOT,PRSO
+ RTRUE
+?CCL58: EQUAL? PRSA,V?EXAMINE \?CCL68
+ GETP PRSO,P?LAST-LOC >X
+ CALL2 VISIBLE?,X
+ ZERO? STACK \?CND69
+ ZERO? X /?CND69
+ PRINTI "That's odd. She looks just like the woman you met in "
+ ICALL2 THE-PRINT,X
+ PRINT PERIOD
+ RTRUE
+?CND69: ICALL1 CTHE-PRINT
+ PRINTR " regards you with equal interest."
+?CCL68: EQUAL? PRSA,V?ASK-FOR \?CCL73
+ ICALL2 ASK-OWOMAN-FOR,PRSI
+ RTRUE
+?CCL73: EQUAL? PRSA,V?ASK-ABOUT \?CCL75
+ ICALL2 ASK-OWOMAN-ABOUT,PRSI
+ RTRUE
+?CCL75: EQUAL? PRSA,V?TELL-ABOUT \?CCL77
+ IN? PRSI,PLAYER \?CND78
+ ICALL2 GIVE-TO-OWOMAN,PRSI
+ RTRUE
+?CND78: ICALL2 ASK-OWOMAN-ABOUT,PRSI
+ RTRUE
+?CCL77: EQUAL? PRSA,V?HELLO,V?WAVE-AT,V?GOODBYE \?CCL81
+ ICALL1 GREET-OWOMAN
+ RTRUE
+?CCL81: INTBL? PRSA,HURTVERBS,NHVERBS >X \FALSE
+ ICALL1 HARMLESS
+ RTRUE
+
+
+ .FUNCT GREET-OWOMAN
+ FSET OWOMAN,SEEN
+ PRINT CTHELADY
+ PRINTR " nods graciously."
+
+
+ .FUNCT ASK-OWOMAN-ABOUT,OBJ,TBL,LEN,X
+ ICALL2 SEE-CHARACTER,OWOMAN
+ EQUAL? OBJ,MONEY,INTNUM \?CCL3
+ PRINTR """My favorite subject."""
+?CCL3: CALL WHAT-TALK?,OWOMAN,OBJ
+ ZERO? STACK \TRUE
+ EQUAL? OBJ,KEY1,KEY2,KEY3 \?CCL7
+ PRINTR """How tawdry."""
+?CCL7: EQUAL? OBJ,PARASOL \?CCL9
+ PRINT CTHELADY
+ PRINT STR?631
+ PRINT STR?625
+ RTRUE
+?CCL9: EQUAL? OBJ,BOUTIQUE,WEAPON-SHOP,MSHOPPE /?CTR10
+ EQUAL? OBJ,BCASE,MCASE,WCASE \?CCL11
+?CTR10: PRINTR """Best selection in the Southlands."""
+?CCL11: EQUAL? OBJ,CURTAIN,OWOMAN,ME \?CCL15
+ PRINT CTHELADY
+ PRINTI " smiles wryly"
+ PRINT STR?625
+ RTRUE
+?CCL15: EQUAL? HERE,IN-BOUTIQUE \?CCL17
+ CALL2 BOUTIQUE-KNOWLEDGE?,OBJ
+ ZERO? STACK \TRUE
+?CCL17: EQUAL? HERE,IN-WEAPON \?CCL21
+ CALL2 WEAPON-KNOWLEDGE?,OBJ
+ ZERO? STACK \TRUE
+?CCL21: EQUAL? HERE,IN-MAGICK \?CND1
+ CALL2 MAGICK-KNOWLEDGE?,OBJ
+ ZERO? STACK \TRUE
+?CND1: GET OWOMAN-TABLE,0 >LEN
+?PRG27: GET OWOMAN-TABLE,LEN >TBL
+ GET TBL,0 >X
+ EQUAL? X,OBJ \?CCL31
+ PRINTC 34
+ GET TBL,1
+ PRINT STACK
+ GETP HERE,P?THIS-CASE
+ ICALL REVEAL-VALUE,X,STACK
+ RTRUE
+?CCL31: DLESS? 'LEN,1 \?PRG27
+ EQUAL? HERE,IN-MAGICK /?CND33
+ GET MAGIC-ITEMS,0 >X
+ ZERO? X /?CND33
+ INTBL? OBJ,MAGIC-ITEMS+2,X >X \?CND33
+ ICALL ASK-IN,OBJ,STR?644
+ RTRUE
+?CND33: EQUAL? HERE,IN-WEAPON /?CND38
+ GET WEAPON-ITEMS,0 >X
+ ZERO? X /?CND38
+ INTBL? OBJ,WEAPON-ITEMS+2,X >X \?CND38
+ ICALL ASK-IN,OBJ,STR?645
+ RTRUE
+?CND38: EQUAL? HERE,IN-BOUTIQUE /?CND43
+ GET ARMOR-ITEMS,0 >X
+ ZERO? X /?CND43
+ INTBL? OBJ,ARMOR-ITEMS+2,X >X \?CND43
+ ICALL ASK-IN,OBJ,STR?646
+ RTRUE
+?CND43: PRINTI """I'm afraid I can't tell you very much about "
+ ICALL2 PRONOUN,OBJ
+ PRINTI ","" apologizes "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT ASK-IN,OBJ,STR
+ PRINT CTHELADY
+ PRINT GLANCES-AT
+ ICALL2 THE-PRINT,OBJ
+ PRINTI ". ""Can't tell you much about this here,"" she mutters. ""Bet the "
+ PRINT STR
+ PRINTR " would know something, though."""
+
+
+ .FUNCT BOUTIQUE-KNOWLEDGE?,OBJ
+ EQUAL? OBJ,PACK \?CCL3
+ PRINTI """Perfect for those long adventures"
+ JUMP ?CND1
+?CCL3: EQUAL? OBJ,CLOAK \?CCL5
+ PRINTI """A fine example of elvish tailoring. 'Tis said a potent virtue is woven into the cloth"
+ JUMP ?CND1
+?CCL5: EQUAL? OBJ,TUNIC \?CCL7
+ PRINTI """Oh, that. Last week's fashion, I'm afraid"
+ JUMP ?CND1
+?CCL7: EQUAL? OBJ,SCALE \?CCL9
+ PRINTI """Good basic protection. Not too bulky, not too expensive"
+ JUMP ?CND1
+?CCL9: EQUAL? OBJ,CHAIN \?CCL11
+ PRINTI """An effective design, if not particularly comfortable"
+ JUMP ?CND1
+?CCL11: EQUAL? OBJ,PLATE \?CCL13
+ PRINTI """The last word in protection,"" states "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTI " flatly. ""That stuff'll turn aside anything short of a grue's fangs"
+?CND1: ICALL REVEAL-VALUE,OBJ,BCASE
+ RTRUE
+?CCL13: EQUAL? OBJ,HELM,SCABBARD \FALSE
+ ICALL2 SECRET-VIRTUE,OBJ
+ RTRUE
+
+
+ .FUNCT WEAPON-KNOWLEDGE?,OBJ
+ EQUAL? OBJ,ARROW \?CCL3
+ PRINTI """A primitive design; high drag coefficient"
+ JUMP ?CND1
+?CCL3: EQUAL? OBJ,DAGGER \?CCL5
+ PRINTI """Suitable for cleaning fish, I suppose"
+ JUMP ?CND1
+?CCL5: EQUAL? OBJ,SWORD \?CCL7
+ PRINTI """Of ancient elvish workmanship, if I'm not mistaken"
+ JUMP ?CND1
+?CCL7: EQUAL? OBJ,SHILL \?CCL9
+ PRINTI """Many an orc's skull bears the mark of this "
+ PRINTD SHILL
+ JUMP ?CND1
+?CCL9: EQUAL? OBJ,AXE \?CCL11
+ PRINTI """A real skull-cleaver, that one"
+?CND1: ICALL REVEAL-VALUE,OBJ,WCASE
+ RTRUE
+?CCL11: EQUAL? OBJ,PHASE,SCABBARD,HELM \FALSE
+ ICALL2 SECRET-VIRTUE,OBJ
+ RTRUE
+
+
+ .FUNCT MAGICK-KNOWLEDGE?,OBJ,VAL,ACT,FX
+ SET 'IDING,OBJ
+ GETP OBJ,P?ACTION >ACT
+ GETP OBJ,P?EFFECT >FX
+ EQUAL? ACT,SLEEP-WAND-F \?CCL3
+ ICALL1 DO-ID
+ PRINTI "Aim this at a creature and watch it stagger"
+ JUMP ?CND1
+?CCL3: EQUAL? ACT,BLAST-WAND-F \?CCL5
+ ICALL1 DO-ID
+ PRINTI "Instant death, with few exceptions"
+ JUMP ?CND1
+?CCL5: EQUAL? ACT,TELE-WAND-F \?CCL7
+ ICALL1 DO-ID
+ PRINTI "Teleports trouble out of your way"
+ JUMP ?CND1
+?CCL7: EQUAL? ACT,IO-WAND-F \?CCL9
+ ICALL1 DO-ID
+ PRINTI "Makes things turn inside-out"
+ JUMP ?CND1
+?CCL9: EQUAL? ACT,LEV-WAND-F \?CCL11
+ ICALL1 DO-ID
+ PRINTI "Floats 'most anything that isn't nailed down"
+ JUMP ?CND1
+?CCL11: EQUAL? ACT,DISPEL-WAND-F \?CCL13
+ PRINT CTHELADY
+ PRINTI " scowls. "
+ ICALL1 DO-ID
+ PRINTI "Neutralizes the effects of Magick"
+ JUMP ?CND1
+?CCL13: EQUAL? ACT,HEALING-POTION-F \?CCL15
+ ICALL1 DO-ID
+ PRINTI "Just the thing in the heat of battle"
+ JUMP ?CND1
+?CCL15: EQUAL? ACT,FORGET-POTION-F \?CCL17
+ ICALL1 DO-ID
+ PRINTI "Hmm,"" mutters "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTI ". ""Tried one of those once; can't recall what it does. Oh, well"
+ JUMP ?CND1
+?CCL17: EQUAL? ACT,DEATH-POTION-F \?CCL19
+ ICALL1 DO-ID
+ PRINTI "Don't understand why they mix these things"
+ JUMP ?CND1
+?CCL19: EQUAL? ACT,MIGHT-POTION-F /?CTR20
+ EQUAL? OBJ,ROOT \?CCL21
+?CTR20: ICALL1 DO-ID
+ PRINTI "That'll put hair on your chest"
+ FSET? PLAYER,FEMALE \?CND1
+ PRINTI "."" "
+ PRINT CTHELADY
+ PRINTI " blushes. ""Well, you know what I mean"
+ JUMP ?CND1
+?CCL21: EQUAL? ACT,IQ-POTION-F \?CCL27
+ ICALL1 DO-ID
+ PRINTI "Four years faster than GUE Tech, and a lot cheaper"
+ JUMP ?CND1
+?CCL27: EQUAL? FX,DO-PARTAY \?CCL29
+ ICALL1 DO-ID
+ PRINTI "Big fun at parties"
+ JUMP ?CND1
+?CCL29: EQUAL? FX,DO-FILFRE \?CCL31
+ ICALL1 DO-ID
+ PRINTI "Essential reading"
+ JUMP ?CND1
+?CCL31: EQUAL? FX,DO-GOTO \?CCL33
+ ICALL1 DO-ID
+ PRINTI "Just the thing for emergencies"
+ JUMP ?CND1
+?CCL33: EQUAL? FX,DO-BLESS-ARMOR \?CCL35
+ ICALL1 DO-ID
+ PRINTI "Bestows a rich blessing upon your armor"
+ JUMP ?CND1
+?CCL35: EQUAL? FX,DO-BLESS-WEAPON \?CCL37
+ ICALL1 DO-ID
+ PRINTI "Adds a touch of enchantment to any weapon"
+ JUMP ?CND1
+?CCL37: EQUAL? FX,DO-RENEWAL \?CCL39
+ ICALL1 DO-ID
+ PRINTI "How refreshing"
+ JUMP ?CND1
+?CCL39: EQUAL? FX,DO-GATE \?CCL41
+ ICALL1 DO-ID
+ PRINTI "Not as robust as Dimension Door, but serviceable"
+ JUMP ?CND1
+?CCL41: EQUAL? OBJ,CAKE \?CCL43
+ PRINT CTHELADY
+ PRINTI " grimaces. ""Bleah. My aunt used to make those. Good for your brain, but not much else"
+ JUMP ?CND1
+?CCL43: EQUAL? OBJ,CLOAK \?CCL45
+ ICALL1 DO-ID
+ PRINTI "Elvish, if the weave speaks true"
+ JUMP ?CND1
+?CCL45: EQUAL? OBJ,RING \?CCL47
+ PRINT CTHELADY
+ PRINTI " smirks. "
+ ICALL1 DO-ID
+ PRINTI "Same as the Coal-Walkers of Egreth use"
+ JUMP ?CND1
+?CCL47: EQUAL? OBJ,HELM \?CCL49
+ ICALL1 DO-ID
+ FSET OBJ,PROPER
+ PRINTI "A potent relic of the past 'Tis said the wearer commands the wisdom of kings, and can see the unseeable."" She shudders visibly. ""Some things are better left unseen"
+ JUMP ?CND1
+?CCL49: EQUAL? OBJ,GOBLET \?CCL51
+ ZERO? GOBLET-WORD \?CND52
+ ICALL1 SETUP-GOBLET
+?CND52: PRINT CTHELADY
+ PRINTI " turns pale, and lowers her voice to a barely audible whisper. ""The "
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ PRINTI ","" she hisses"
+ FSET? OBJ,NEUTRALIZED /?CND54
+ PRINTI ", and thunder rumbles outside"
+?CND54: PRINTI ". ""Beware! for its Name incurs the wrath of the Implementors"
+ JUMP ?CND1
+?CCL51: EQUAL? OBJ,UHEMI,LHEMI \?CCL57
+ PRINTI """Hmm,"" mutters "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTI ". ""Some great potential lies within"
+ JUMP ?CND1
+?CCL57: EQUAL? OBJ,STONE \?CCL59
+ FSET? STONE,NAMED /?CND60
+ ICALL1 SETUP-STONE
+?CND60: PRINTI """Ah! The "
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ PRINTI "! Visions of things yet to be lie within its depths, for those with enough wit to see them"
+ JUMP ?CND1
+?CCL59: EQUAL? OBJ,RFOOT,CLOVER,SHOE \?CCL63
+ PRINTI """A charm to ward off ill luck"
+ JUMP ?CND1
+?CCL63: EQUAL? OBJ,SCABBARD \?CCL65
+ FSET OBJ,IDENTIFIED
+ PRINT CTHELADY
+ PRINTI "'s voice lowers to a respectful whisper. ""Behold "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI ", Blade of Entharion,"" she says. ""Though the Blade is long lost, the scabbard retains much virtue; for "
+ FSET? PLAYER,FEMALE \?CND66
+ PRINTC 115
+?CND66: PRINTI "he who wears it is blessed with wondrous powers of recuperation"
+ JUMP ?CND1
+?CCL65: EQUAL? OBJ,VIAL \?CCL69
+ PRINTI """Holy water,"" explains "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTI " after a brief glance. ""Standard issue against vampires, wraiths, anything dead that moves"
+ JUMP ?CND1
+?CCL69: EQUAL? OBJ,GLASS \?CCL71
+ PRINTI """A relic of ancient Pheebor,"" explains "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTI ". ""Its purpose is lost in Time. Perhaps it is part of some greater Magick"
+ JUMP ?CND1
+?CCL71: EQUAL? OBJ,ROSE \?CCL73
+ PRINTI """A compass rose! Just the thing for an ill wind"
+ JUMP ?CND1
+?CCL73: EQUAL? OBJ,GURDY \?CCL75
+ PRINTI """A versatile instrument. Dangerous in the wrong hands"
+ JUMP ?CND1
+?CCL75: EQUAL? OBJ,WHISTLE \?CCL77
+ ICALL1 DO-ID
+ PRINTI "Wrought by a platypus, like most nowadays"
+ JUMP ?CND1
+?CCL77: EQUAL? OBJ,PHASE \?CCL79
+ PRINTI """Little more than a curiosity, at least on this Plane of existence"
+ JUMP ?CND1
+?CCL79: EQUAL? OBJ,CHEST \?CCL81
+ PRINT CTHELADY
+ PRINTI " studies "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI " closely. ""Careful with this,"" she warns. ""The plaque on the lid is well worth reading"
+ JUMP ?CND1
+?CCL81: EQUAL? OBJ,AMULET \?CCL83
+ PRINTI """A useful bit of Magick, this. "
+ ZERO? AMULET-STARS \?CCL86
+ PRINTI "Too bad it's all used up"
+ JUMP ?CND1
+?CCL86: PRINTI "Still got some life in it, too"
+ JUMP ?CND1
+?CCL83: EQUAL? OBJ,SPENSE,SPENSE2 \?CCL88
+ PRINTI """Spenseweed, of course. A wholesome treat"
+ JUMP ?CND1
+?CCL88: EQUAL? OBJ,BURIN \?CCL90
+ PRINTI """Diamond-tipped, I see. Top of the line"
+ JUMP ?CND1
+?CCL90: EQUAL? OBJ,JAR,CIRCLET \FALSE
+ PRINTI """A vain bit of Magick; yet not without its uses"
+?CND1: FSET? OBJ,NEUTRALIZED \?CND93
+ PRINT STR?597
+ PRINTI "its Magick"
+ PRINT STR?647
+?CND93: ICALL REVEAL-VALUE,OBJ,MCASE
+ RTRUE
+
+
+ .FUNCT REVEAL-VALUE,OBJ,CASE,VAL,X
+ GETP OBJ,P?VALUE >VAL
+ PRINTC PER
+ ZERO? VAL \?CND1
+ PRINTR """"
+?CND1: PRINTC SP
+ SET 'X,OFFERS
+ IN? OBJ,CASE /?CND3
+ SET 'X,USED-OFFERS
+?CND3: CALL2 PICK-NEXT,X
+ PRINT STACK
+ PRINTN VAL
+ PRINTI " zorkmid"
+ EQUAL? VAL,1 /?CND5
+ PRINTC 115
+?CND5: PRINT PERQ
+ RTRUE
+
+
+ .FUNCT SECRET-VIRTUE,OBJ
+ PRINT CTHELADY
+ PRINTI " scrutinizes "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI " with care. ""Hmm,"" she mutters. ""There may be a virtue in this "
+ PRINTD OBJ
+ PRINTI " beyond its simple face value. Perhaps you should bring it to the "
+ PRINT STR?644
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT DO-ID
+ FSET? IDING,IDENTIFIED /?CND1
+ FSET IDING,IDENTIFIED
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+?CND1: PRINTC 34
+ CALL2 PICK-NEXT,AH-YESSES
+ PRINT STACK
+ ICALL2 DPRINT,IDING
+ PRINTI ". "
+ RFALSE
+
+
+ .FUNCT ASK-OWOMAN-FOR,OBJ,X,L
+ ICALL2 SEE-CHARACTER,OWOMAN
+ LOC OBJ >L
+ EQUAL? L,OWOMAN /?CND1
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CND3
+ PRINTI """I see "
+ FSET? OBJ,PLURAL \?CCL7
+ PRINTB W?SOME
+ JUMP ?CND5
+?CCL7: PRINTB W?ONE
+?CND5: PRINTI " there "
+ ICALL2 SAY-WHERE,L
+ PRINTI ","" smiles "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINT PERIOD
+ RTRUE
+?CND3: PRINTI """I'm afraid I don't have "
+ ICALL2 PRINTA,OBJ
+ PRINT PERQ
+ RTRUE
+?CND1: ICALL2 NOT-SO-FAST,OWOMAN
+ RTRUE
+
+
+ .FUNCT NOT-SO-FAST,OBJ
+ PRINTI """Not so fast!"" laughs "
+ ICALL2 THE-PRINT,OBJ
+ PRINTR ", drawing away from you."
+
+
+ .FUNCT GIVE-TO-OWOMAN,OBJ,X
+ ICALL2 SEE-CHARACTER,OWOMAN
+ CALL GIVING-LOOT?,OBJ,OWOMAN
+ ZERO? STACK \TRUE
+ GET MAGIC-ITEMS,0 >X
+ INTBL? OBJ,MAGIC-ITEMS+2,X >X \?CND3
+ EQUAL? HERE,IN-MAGICK /?CND5
+ ICALL CANT-USE-HERE,OBJ,STR?644
+ RTRUE
+?CND5: ICALL2 TRADE-FOR-LOOT,OBJ
+ RTRUE
+?CND3: GET ARMOR-ITEMS,0 >X
+ INTBL? OBJ,ARMOR-ITEMS+2,X >X \?CND7
+ EQUAL? HERE,IN-BOUTIQUE /?CND9
+ ICALL CANT-USE-HERE,OBJ,STR?646
+ RTRUE
+?CND9: ICALL2 TRADE-FOR-LOOT,OBJ
+ RTRUE
+?CND7: GET WEAPON-ITEMS,0 >X
+ INTBL? OBJ,WEAPON-ITEMS+2,X >X \?CND11
+ EQUAL? HERE,IN-WEAPON /?CND13
+ ICALL CANT-USE-HERE,OBJ,STR?645
+ RTRUE
+?CND13: ICALL2 TRADE-FOR-LOOT,OBJ
+ RTRUE
+?CND11: ICALL2 TRADE-FOR-LOOT,OBJ
+ RTRUE
+
+
+ .FUNCT CANT-USE-HERE,OBJ,STR
+ PRINT CTHELADY
+ PRINT GLANCES-AT
+ ICALL2 THE-PRINT,OBJ
+ PRINTI ". ""Can't use this here,"" she mutters. ""Maybe the "
+ PRINT STR
+ PRINTR " would be interested."""
+
+
+ .FUNCT ORATOR-F,CONTEXT
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 PRINTCA,ORATOR
+ PRINTI " stands nearby, addressing the crowd."
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-WINNER /FALSE
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE \FALSE
+ ICALL1 CTHE-PRINT
+ PRINTR " looks and acts very important."
+
+
+ .FUNCT DESCRIBE-PRINCE,OBJ
+ FSET? OBJ,SLEEPING \?CND1
+ PRINTI "dead "
+?CND1: PRINTD PRINCE
+ RTRUE
+
+
+ .FUNCT PRINCE-F,CONTEXT,OBJ,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-CONT \FALSE
+ SET 'OBJ,PRSO
+ ZERO? NOW-PRSI? /?CND6
+ SET 'OBJ,PRSI
+?CND6: ZERO? OBJ /FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ PRINT CANT
+ PRINTI "reach "
+ ICALL2 THE-PRINT,OBJ
+ PRINT AT-MOMENT
+ RTRUE
+?CCL3: ZERO? NOW-PRSI? /?CCL12
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 BATTLE-MISS
+ RTRUE
+?CCL12: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL16
+ ICALL1 CONTEMPT
+ RETURN 2
+?CCL16: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL20
+ PRINTI "He's wearing "
+ ICALL2 PRINTA,HELM
+ PRINT PERIOD
+ RTRUE
+?CCL20: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL1 ZING
+ RTRUE
+
+
+ .FUNCT CONTEMPT
+ ICALL1 PCLEAR
+ ICALL1 CTHE-PRINT
+ PRINTR " silences you with a gesture of contempt."
+
+
+ .FUNCT DEAD-PRINCE-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ CALL2 NOUN-USED?,W?HEAD
+ ZERO? STACK /?CND1
+ IN? HORSE,TRENCH /?CND5
+ ICALL1 SAY-SLAY
+ RETURN 2
+?CND5: PRINT CANT
+ PRINTI "see it anymore."
+ CRLF
+ RETURN 2
+?CND1: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL13
+ PRINTR "Ick! He's all bloody."
+?CCL13: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL17
+ ICALL1 NOT-LIKELY
+ PRINT STR?509
+ RTRUE
+?CCL17: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?SEARCH \FALSE
+ PRINTR "His head is missing. Yuk."
+
+
+ .FUNCT SAY-SLAY,X
+ PRINTI "As you "
+ INTBL? PRSA,SEEVERBS,NSVERBS >X \?CCL3
+ PRINTI "peer into "
+ JUMP ?CND1
+?CCL3: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL5
+ PRINTI "reach towards "
+ JUMP ?CND1
+?CCL5: PRINTI "approach "
+?CND1: ICALL2 THE-PRINT,TRENCH
+ PRINTI ", a "
+ ICALL1 SLAY-HORSE
+ RTRUE
+
+
+ .FUNCT KNIGHT-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+ ICALL1 BATTLE-MISS
+ RTRUE
+?CCL5: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL9
+ ICALL1 CONTEMPT
+ RETURN 2
+?CCL9: EQUAL? PRSA,V?EXAMINE \?CCL13
+ PRINTR "His regal bearing does not disguise his youth."
+?CCL13: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL1 ZING
+ RTRUE
+
+
+ .FUNCT HUNTERS-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ PRINTI "Hunters are foraging under the distant trees."
+ RTRUE
+?CCL3: ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL7
+ EQUAL? PRSA,V?SHOW,V?GIVE,V?FEED \FALSE
+ ICALL1 DISTANT-HUNTERS
+ RTRUE
+?CCL7: EQUAL? PRSA,V?YELL,V?WAVE-AT \?CCL11
+ PRINTI "A few of the distant "
+ PRINTD PRSO
+ PRINTR " glance up at you, then return to work."
+?CCL11: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL13
+ ICALL1 PCLEAR
+ ICALL1 DISTANT-HUNTERS
+ RETURN 2
+?CCL13: EQUAL? PRSA,V?EXAMINE \?CCL17
+ ICALL1 CTHE-PRINT
+ PRINTR " trudge slowly among the oaks, peering at the ground."
+?CCL17: EQUAL? PRSA,V?WALK-TO,V?FOLLOW \?CCL19
+ ICALL1 CTHE-PRINT
+ PRINTI " are running around in every "
+ PRINTD INTDIR
+ PRINT PERIOD
+ RTRUE
+?CCL19: EQUAL? PRSA,V?LISTEN,V?SMELL /?CTR20
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+?CTR20: ICALL1 CANT-FROM-HERE
+ RTRUE
+
+
+ .FUNCT DISTANT-HUNTERS
+ PRINTI "None of "
+ ICALL2 THE-PRINT,HUNTERS
+ PRINTR " respond. They're too far away to hear you."
+
+
+ .FUNCT GENERIC-HUNTERS-F,TBL,LEN
+ RETURN HUNTER
+
+
+ .FUNCT HUNTER-F,CONTEXT,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-OBJDESC \?CCL6
+ ICALL2 PRINTCA,HUNTER
+ PRINTI " is standing nearby."
+ RTRUE
+?CCL6: EQUAL? CONTEXT,M-CONT \FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL1 HANDS-OFF-HUNTER
+ RTRUE
+?CCL3: ZERO? NOW-PRSI? /?CCL11
+ EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL14
+ ICALL2 GIVE-TO-HUNTER,PRSO
+ RTRUE
+?CCL14: EQUAL? PRSA,V?SHOW \FALSE
+ ICALL2 SHOW-TO-HUNTER,PRSO
+ RTRUE
+?CCL11: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL17
+ ICALL1 PCLEAR
+ ICALL2 CTHE-PRINT,HUNTER
+ PRINTI " frowns. ""Wha' say ye? Ye got a funny way o' talkin', "
+ FSET? PLAYER,FEMALE \?CND18
+ PRINTI "ma'am."""
+ CRLF
+ RETURN 2
+?CND18: PRINTI "mister."""
+ CRLF
+ RETURN 2
+?CCL17: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL25
+ ICALL1 CTHE-PRINT
+ PRINTR " is a lad of twelve or thirteen years, dressed in peasant garb. A burlap sack is slung over his narrow shoulders."
+?CCL25: EQUAL? PRSA,V?KISS,V?RAPE,V?TOUCH \FALSE
+ ICALL1 HANDS-OFF-HUNTER
+ RTRUE
+
+
+ .FUNCT GIVE-TO-HUNTER,OBJ
+ CALL GIVING-LOOT?,OBJ,HUNTER
+ ZERO? STACK \TRUE
+ PRINTI """No, thanks,"" says "
+ ICALL2 THE-PRINT,HUNTER
+ PRINTR ", shaking his head."""
+
+
+ .FUNCT SHOW-TO-HUNTER,OBJ
+ ICALL2 CTHE-PRINT,HUNTER
+ PRINT GLANCES-AT
+ ICALL2 THE-PRINT,OBJ
+ EQUAL? OBJ,MINX \?CND1
+ PRINT PERIOD
+ ICALL1 HUNTER-SEES-MINX
+ RTRUE
+?CND1: PRINT STR?625
+ RTRUE
+
+
+ .FUNCT HANDS-OFF-HUNTER
+ PRINTI """Keep to yerself, "
+ ICALL1 MAAM-OR-MISTER
+ PRINTI "!"" cries "
+ ICALL2 THE-PRINT,HUNTER
+ PRINTR ", drawing quickly away."
+
+
+ .FUNCT MAAM-OR-MISTER
+ FSET? PLAYER,FEMALE \?CND1
+ PRINTI "ma'am"
+ RTRUE
+?CND1: PRINTI "mister"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-MINX,OBJ
+ FSET? OBJ,NAMED \?CND1
+ GETP OBJ,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ ZERO? INV-PRINTING? /TRUE
+ PRINT STHE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT MINX-F,CONTEXT,X
+ SET 'P-IT-OBJECT,MINX
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ FSET MINX,SEEN
+ ICALL2 PRINTCA,MINX
+ CALL2 SEE-ANYTHING-IN?,MINX
+ ZERO? STACK /?CND4
+ PRINT WITH
+ ICALL2 CONTENTS,MINX
+ PRINTI " in its mouth"
+?CND4: PRINTI " is playing at your feet."
+ RTRUE
+?CCL3: ZERO? CONTEXT \FALSE
+ IN? MINX,OAK \?CCL9
+ ZERO? HSCRIPT /?CCL9
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL9
+ PRINTI "The thing behind "
+ ICALL2 THE-PRINT,OAK
+ PRINTR " shrinks out of reach."
+?CCL9: ZERO? NOW-PRSI? /?CCL14
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL17
+ ICALL2 HARMLESS,PRSI
+ RTRUE
+?CCL17: EQUAL? PRSA,V?SHOW \?CCL19
+ ICALL1 SHOW-TO-MINX
+ RTRUE
+?CCL19: EQUAL? PRSA,V?GIVE,V?FEED \FALSE
+ ICALL1 GIVE-TO-MINX
+ RTRUE
+?CCL14: EQUAL? PRSA,V?EXAMINE,V?WHAT,V?WHO \?CCL22
+ ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+?CCL22: EQUAL? PRSA,V?TELL,V?ASK-ABOUT,V?ASK-FOR /?CTR25
+ EQUAL? PRSA,V?TELL-ABOUT \?CCL26
+?CTR25: ICALL1 PCLEAR
+ ICALL1 CTHE-PRINT
+ RANDOM 100
+ LESS? 50,STACK /?CCL31
+ PRINTI " looks at you incomprehendingly"
+ JUMP ?CND29
+?CCL31: PRINTI " gives you a blank look"
+?CND29: PRINTI ". ""Minx?"""
+ CRLF
+ RETURN 2
+?CCL26: EQUAL? PRSA,V?TOUCH \?CCL35
+ FSET MINX,SEEN
+ ICALL1 CTHE-PRINT
+ RANDOM 100
+ LESS? 50,STACK /?CCL38
+ PRINTI " purrs"
+ JUMP ?CND36
+?CCL38: PRINTI " thumps her tail"
+?CND36: PRINTR " with pleasure. ""Minx."""
+?CCL35: INTBL? PRSA,HURTVERBS,NHVERBS >X \FALSE
+ ICALL1 HARMLESS
+ RTRUE
+
+
+ .FUNCT GIVE-TO-MINX,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: FSET MINX,SEEN
+ EQUAL? OBJ,TRUFFLE \?CND3
+ ICALL1 MINX-EATS-TRUFFLE
+ RTRUE
+?CND3: ICALL2 WRINKLES,OBJ
+ RTRUE
+
+
+ .FUNCT WRINKLES,OBJ
+ ICALL2 CTHE-PRINT,MINX
+ PRINTI " sniffs "
+ ICALL2 THE-PRINT,OBJ
+ PRINTR " and wrinkles her nose."
+
+
+ .FUNCT SHOW-TO-MINX,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: FSET MINX,SEEN
+ EQUAL? OBJ,TRUFFLE \?CND3
+ ICALL2 CTHE-PRINT,MINX
+ PRINTR " eagerly thumps her tail. ""Minx!"""
+?CND3: ICALL2 WRINKLES,OBJ
+ RTRUE
+
+
+ .FUNCT MINX-EATS-TRUFFLE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ REMOVE TRUFFLE
+ FSET MINX,SEEN
+ SET 'P-IT-OBJECT,MINX
+ SET 'P-HER-OBJECT,MINX
+ ICALL2 CTHE-PRINT,MINX
+ FSET? TRUFFLE,SEEN /?CND1
+ FSET TRUFFLE,SEEN
+ PRINTI " looks up at you as she sniffs the "
+ PRINTB W?TRUFFLE
+ PRINTI ". ""Minx?"" she mews, thumping her tail imploringly. When you don't object, she"
+?CND1: PRINTR " pops the delicacy into her mouth, licks her paws clean and purrs with contentment."
+
+
+ .FUNCT KILL-MINX
+ FCLEAR MINX,LIVING
+ ICALL2 DEQUEUE,I-MINX
+ PUTP MINX,P?ACTION,DEAD-MINX-F
+ ICALL REPLACE-ADJ?,MINX,W?AWAKE,W?DEAD
+ ICALL REPLACE-ADJ?,MINX,W?SLEEPING,W?DEAD
+ RFALSE
+
+
+ .FUNCT DEAD-MINX-F,CONTEXT,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-OBJDESC \FALSE
+ ICALL2 PRINTCA,MINX
+ PRINTI " lies nearby."
+ RTRUE
+?CCL3: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL9
+ ICALL2 CTHE-PRINT,MINX
+ PRINT STR?626
+ RETURN 2
+?CCL9: EQUAL? PRSA,V?EXAMINE \?CCL13
+ ICALL2 CTHE-PRINT,MINX
+ PRINTR " is still as death."
+?CCL13: INTBL? PRSA,HURTVERBS,NHVERBS >X \FALSE
+ PRINTR "You're lucky your compassion didn't go down."
+
+
+ .FUNCT MAYOR-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 CTHE-PRINT,MAYOR
+ PRINTI " of "
+ PRINTD FROON
+ PRINT SIS
+ FIRST? MAYOR >X \?CCL6
+ PRINTI "standing next to you, holding "
+ ICALL2 CONTENTS,MAYOR
+ JUMP ?CND4
+?CCL6: PRINTI "grovelling at your feet"
+?CND4: PRINTI ". A joyous "
+ PRINTD FCROWD
+ PRINTI " is gathered around him."
+ RTRUE
+?CCL3: CALL2 INSULTED?,MAYOR
+ ZERO? STACK /?CCL8
+ RETURN 2
+?CCL8: EQUAL? CONTEXT,M-WINNER \?CCL12
+ EQUAL? PRSA,V?HELLO \?CCL15
+ EQUAL? PRSO,ROOMS,MAYOR \?CCL15
+ ICALL1 GREET-MAYOR
+ RTRUE
+?CCL15: EQUAL? PRSA,V?GOODBYE \?CCL19
+ EQUAL? PRSO,ROOMS,MAYOR \?CCL19
+ ICALL1 BYE-MAYOR
+ RTRUE
+?CCL19: EQUAL? PRSA,V?TELL-ABOUT,V?SSHOW \?CCL23
+ EQUAL? PRSO,ME \?CCL23
+ ICALL2 ASK-MAYOR-ABOUT,PRSI
+ RETURN 2
+?CCL23: EQUAL? PRSA,V?EXAMINE,V?WHAT,V?WHO /?CTR28
+ EQUAL? PRSA,V?WHERE /?CTR28
+ EQUAL? PRSA,V?SHOW \?CCL29
+ EQUAL? PRSI,ME \?CCL29
+?CTR28: ICALL2 ASK-MAYOR-ABOUT,PRSO
+ RETURN 2
+?CCL29: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL38
+ EQUAL? PRSI,ME \?CCL38
+ ICALL2 ASK-MAYOR-FOR,PRSO
+ RETURN 2
+?CCL38: EQUAL? PRSA,V?SGIVE,V?SGET-FOR \?CND13
+ EQUAL? PRSO,ME \?CND13
+ ICALL2 ASK-MAYOR-FOR,PRSI
+ RETURN 2
+?CND13: ICALL2 CTHE-PRINT,MAYOR
+ PRINTI " sighs."
+ CRLF
+ RETURN 2
+?CCL12: ZERO? NOW-PRSI? /?CCL51
+ EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL54
+ ICALL2 GIVE-TO-MAYOR,PRSO
+ RTRUE
+?CCL54: EQUAL? PRSA,V?SHOW \FALSE
+ ICALL2 SHOW-TO-MAYOR,PRSO
+ RTRUE
+?CCL51: EQUAL? PRSA,V?HELLO,V?WAVE-AT \?CCL57
+ ICALL1 GREET-MAYOR
+ RTRUE
+?CCL57: EQUAL? PRSA,V?GOODBYE \?CCL59
+ ICALL1 BYE-MAYOR
+ RTRUE
+?CCL59: EQUAL? PRSA,V?ASK-FOR \?CCL61
+ ICALL2 ASK-MAYOR-FOR,PRSI
+ RTRUE
+?CCL61: EQUAL? PRSA,V?ASK-ABOUT \?CCL63
+ ICALL2 ASK-MAYOR-ABOUT,PRSI
+ RTRUE
+?CCL63: EQUAL? PRSA,V?TELL-ABOUT \FALSE
+ ICALL2 SHOW-TO-MAYOR,PRSI
+ RTRUE
+
+
+ .FUNCT BYE-MAYOR
+ PRINTI """Wait! Don't go yet,"" pleads "
+ ICALL2 THE-PRINT,MAYOR
+ PRINTR ", holding you back."
+
+
+ .FUNCT GREET-MAYOR
+ PRINTR """Greetings, O noble one."""
+
+
+ .FUNCT ASK-MAYOR-ABOUT,OBJ,TBL,LEN,X
+ ICALL2 SEE-CHARACTER,MAYOR
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK \?CND1
+ ICALL2 PERPLEXED,MAYOR
+ PRINTI "I'm uncertain as to"
+ ICALL2 WHO-WHAT,OBJ
+ PRINTR "you are referring."""
+?CND1: GET MAYOR-TABLE,0 >LEN
+?PRG3: GET MAYOR-TABLE,LEN >TBL
+ GET TBL,0 >X
+ GET TBL,0
+ EQUAL? STACK,OBJ \?CCL7
+ PRINTC 34
+ GET TBL,1
+ PRINT STACK
+ PRINT PERQ
+ RTRUE
+?CCL7: DLESS? 'LEN,1 \?PRG3
+ ICALL2 CTHE-PRINT,MAYOR
+ PRINTI " looks at "
+ ICALL2 THE-PRINT,GROUND
+ PRINTI " sheepishly"
+ ICALL1 ALAS
+ PRINTI "I possess but little knowledge of "
+ ICALL2 PRONOUN,OBJ
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT ALAS
+ PRINTI ". ""Alas, "
+ ICALL1 HONORED-ONE
+ PRINTI ". "
+ RTRUE
+
+
+ .FUNCT ASK-MAYOR-FOR,OBJ,X,L
+ LOC OBJ >L
+ EQUAL? L,MAYOR /?CCL3
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK /?CND4
+ PRINTI """I notice "
+ FSET? OBJ,PLURAL \?CCL8
+ PRINTB W?SOME
+ JUMP ?CND6
+?CCL8: PRINTB W?ONE
+?CND6: PRINTI " there "
+ ICALL2 SAY-WHERE,L
+ PRINTI ","" remarks "
+ ICALL2 THE-PRINT,MAYOR
+ PRINT PERIOD
+ RTRUE
+?CND4: ICALL1 MAYOR-SORRY
+ PRINTR "have none to offer at the moment."""
+?CCL3: EQUAL? OBJ,KEY1,KEY2,KEY3 \?CND1
+ ICALL2 AWARD-KEY,OBJ
+ RTRUE
+?CND1: ICALL1 MAYOR-SORRY
+ PRINTI "cannot give you "
+ ICALL2 PRONOUN,OBJ
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT MAYOR-SORRY
+ PRINTI """My apologies, "
+ ICALL1 HONORED-ONE
+ PRINTI ","" mumbles "
+ ICALL2 THE-PRINT,MAYOR
+ RANDOM 100
+ LESS? 50,STACK /?CND1
+ PRINTI ", hanging his head"
+?CND1: PRINTI ". ""I "
+ RTRUE
+
+
+ .FUNCT GIVE-TO-MAYOR,OBJ
+ CALL GIVING-LOOT?,OBJ,MAYOR
+ ZERO? STACK \TRUE
+ ICALL2 NO-THANKS,MAYOR
+ RTRUE
+
+
+ .FUNCT HONORED-ONE
+ PRINTI "Honored "
+ FSET? PLAYER,FEMALE \?CND1
+ PRINTI "Ma'am"
+ RTRUE
+?CND1: PRINTI "Sir"
+ RTRUE
+
+
+ .FUNCT SHOW-TO-MAYOR,OBJ
+ ICALL2 CTHE-PRINT,MAYOR
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK \?CND1
+ PRINTR " looks confused. ""What do you mean?"""
+?CND1: PRINT GLANCES-AT
+ ICALL2 THE-PRINT,OBJ
+ PRINTR ", but shows only polite interest."
+
+
+ .FUNCT LADY-F,CONTEXT
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 PRINTCA,LADY
+ PRINTI " is standing near "
+ ICALL2 THE-PRINT,FARMHOUSE
+ PRINTC PER
+ RTRUE
+?CCL3: IN? FCROWD,HERE \?CCL5
+ ICALL2 CTHE-PRINT,LADY
+ PRINTI " is lost in "
+ ICALL2 THE-PRINT,FCROWD
+ PRINT PERIOD
+ RETURN 2
+?CCL5: CALL2 INSULTED?,LADY
+ ZERO? STACK /?CCL9
+ RETURN 2
+?CCL9: EQUAL? CONTEXT,M-WINNER \?CCL13
+ EQUAL? PRSA,V?HELLO \?CND14
+ EQUAL? PRSO,ROOMS,LADY \?CND14
+ ICALL1 GREET-LADY
+ RETURN 2
+?CND14: ICALL1 SHY-LADY
+ RETURN 2
+?CCL13: ZERO? NOW-PRSI? /?CCL23
+ EQUAL? PRSA,V?GIVE,V?GET-FOR,V?SHOW \FALSE
+ ICALL2 SHOW-TO-LADY,PRSO
+ RTRUE
+?CCL23: EQUAL? PRSA,V?TELL /FALSE
+ EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?CCL29
+ ICALL1 SHY-LADY
+ RTRUE
+?CCL29: EQUAL? PRSA,V?TELL-ABOUT \?CCL31
+ ICALL2 SHOW-TO-LADY,PRSI
+ RTRUE
+?CCL31: EQUAL? PRSA,V?HELLO,V?WAVE-AT \?CCL33
+ ICALL1 GREET-LADY
+ RTRUE
+?CCL33: EQUAL? PRSA,V?EXAMINE \FALSE
+ PRINTR "Her bright, colorful garb blends in with the flowers."
+
+
+ .FUNCT SHOW-TO-LADY,OBJ
+ CALL2 VISIBLE?,OBJ
+ ZERO? STACK \?CND1
+ ICALL1 SHY-LADY
+ RTRUE
+?CND1: ICALL2 CTHE-PRINT,LADY
+ PRINT GLANCES-AT
+ ICALL2 THE-PRINT,OBJ
+ PRINTR ", blushes, and says nothing."
+
+
+ .FUNCT SHY-LADY
+ ICALL2 CTHE-PRINT,LADY
+ PRINTR " blushes. She's too shy to respond."
+
+
+ .FUNCT GREET-LADY
+ ICALL2 CTHE-PRINT,LADY
+ PRINTR " nods at you shyly."
+
+
+ .FUNCT FCROWD-F,CONTEXT
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ PRINTI "A joyous "
+ PRINTD FCROWD
+ PRINTI " of little people is standing all around you."
+ RTRUE
+?CCL3: CALL2 INSULTED?,FCROWD
+ ZERO? STACK /?CCL5
+ RETURN 2
+?CCL5: EQUAL? CONTEXT,M-WINNER \?CCL9
+ EQUAL? PRSA,V?HELLO \?CND10
+ EQUAL? PRSO,ROOMS,FCROWD \?CND10
+ ICALL1 CROWD-GREET
+ RETURN 2
+?CND10: ICALL1 LOUD-CROWD
+ RETURN 2
+?CCL9: ZERO? NOW-PRSI? /?CCL19
+ EQUAL? PRSA,V?GIVE,V?GET-FOR,V?SHOW \FALSE
+ PRINTI "No one in "
+ ICALL1 THEI-PRINT
+ PRINTR " shows any interest."
+?CCL19: EQUAL? PRSA,V?TELL /FALSE
+ EQUAL? PRSA,V?HELLO,V?WAVE-AT \?CCL25
+ ICALL1 CROWD-GREET
+ RTRUE
+?CCL25: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT,V?TELL-ABOUT \FALSE
+ ICALL1 LOUD-CROWD
+ RTRUE
+
+
+ .FUNCT CROWD-GREET
+ ICALL2 CTHE-PRINT,FCROWD
+ PRINTR " waves and cheers."
+
+
+ .FUNCT LOUD-CROWD
+ ICALL2 CTHE-PRINT,FCROWD
+ PRINTR " is cheering too loudly to hear you."
+
+
+ .FUNCT INSULTED?,OBJ
+ CALL NOUN-USED?,W?MUNCHKIN,W?MUNCHKINS
+ ZERO? STACK \?CCL2
+ CALL2 ADJ-USED?,W?MUNCHKIN
+ ZERO? STACK /FALSE
+?CCL2: ICALL2 CTHE-PRINT,OBJ
+ PRINTI " covers "
+ ICALL2 HAND-PRONOUN,OBJ
+ PRINTI " ears with "
+ ICALL2 HAND-PRONOUN,OBJ
+ PRINTI " hands. ""Don't call "
+ EQUAL? OBJ,FCROWD \?CCL7
+ PRINTB W?US
+ JUMP ?CND5
+?CCL7: PRINTB W?ME
+?CND5: PRINTR " that!"""
+
+
+ .FUNCT HAND-PRONOUN,OBJ
+ EQUAL? OBJ,FCROWD \?CCL3
+ PRINTI "their"
+ RTRUE
+?CCL3: EQUAL? OBJ,MAYOR \?CND1
+ PRINTI "his"
+ RTRUE
+?CND1: PRINTI "her"
+ RTRUE
+
+
+ .FUNCT GENERIC-MUNCHKIN-F,TBL,LEN
+ ASSIGNED? 'LEN /?CND1
+ GET TBL,0 >LEN
+?CND1: IN? MAYOR,HERE /?CCL4
+ RETURN FCROWD
+?CCL4: RETURN MAYOR
+
+
+ .FUNCT IMPS-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ PRINTI "A group of Implementors is seated around a food-laden table"
+ IN? COCO,IMPS \?CCL6
+ PRINTI ", playing catch with a coconut."
+ RTRUE
+?CCL6: IN? GOBLET,IMPS \?CND4
+ PRINTI ". One of them is holding out a "
+ PRINT STR?611
+ RTRUE
+?CND4: PRINTI ", glaring at you angrily."
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-CONT \?CCL9
+ EQUAL? GOBLET,PRSO,PRSI /FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL2 CTHE-PRINT,IMPS
+ PRINTR " won't let you near."
+?CCL9: ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL19
+ ICALL1 PCLEAR
+ PRINTI """I think I just heard something insignificant,"" remarks an Implementor"
+ PRINT PTAB
+ PRINTI """How dull,"" replies another, stifling a yawn."
+ CRLF
+ RETURN 2
+?CCL19: EQUAL? PRSA,V?EXAMINE,V?WHAT,V?WHO /?CTR22
+ EQUAL? PRSA,V?WHERE \FALSE
+?CTR22: ICALL1 REFER-TO-PACKAGE
+ RETURN 2
+
+
+ .FUNCT CONGREG-F,CONTEXT
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE \FALSE
+ PRINTR "Their heads are bowed in fervent prayer."
+
+
+ .FUNCT CLERIC-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 CTHE-PRINT,CLERIC
+ PRINTI " is here, surrounded by a grateful crowd of villagers. He's holding "
+ ICALL2 CONTENTS,CLERIC
+ PRINTC PER
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-CONT \?CCL5
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL2 NOT-SO-FAST,CLERIC
+ RTRUE
+?CCL5: EQUAL? CONTEXT,M-WINNER \?CCL9
+ EQUAL? PRSA,V?HELLO \?CCL12
+ EQUAL? PRSO,ROOMS,CLERIC \?CCL12
+ ICALL1 GREET-CLERIC
+ RETURN 2
+?CCL12: EQUAL? PRSA,V?TELL-ABOUT,V?SSHOW \?CCL18
+ EQUAL? PRSO,ME \?CCL18
+ ICALL2 ASK-CLERIC-ABOUT,PRSI
+ RETURN 2
+?CCL18: EQUAL? PRSA,V?EXAMINE,V?WHAT,V?WHO /?CTR23
+ EQUAL? PRSA,V?WHERE /?CTR23
+ EQUAL? PRSA,V?SHOW \?CCL24
+ EQUAL? PRSI,ME \?CCL24
+?CTR23: ICALL2 ASK-CLERIC-ABOUT,PRSO
+ RETURN 2
+?CCL24: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL33
+ EQUAL? PRSI,ME \?CCL33
+ ICALL2 ASK-CLERIC-FOR,PRSO
+ RETURN 2
+?CCL33: EQUAL? PRSA,V?SGIVE,V?SGET-FOR \?CND10
+ EQUAL? PRSO,ME \?CND10
+ ICALL2 ASK-CLERIC-FOR,PRSI
+ RETURN 2
+?CND10: PRINTI """Your accent is strange. I don't understand."""
+ CRLF
+ RETURN 2
+?CCL9: ZERO? NOW-PRSI? /?CCL46
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL49
+ ICALL2 HARMLESS,PRSI
+ RTRUE
+?CCL49: EQUAL? PRSA,V?GIVE,V?GET-FOR \?CCL51
+ ICALL2 GIVE-TO-CLERIC,PRSO
+ RTRUE
+?CCL51: EQUAL? PRSA,V?SHOW \FALSE
+ ICALL DO-GLANCE,CLERIC,PRSO
+ RTRUE
+?CCL46: EQUAL? PRSA,V?TELL \?CCL54
+ ZERO? P-CONT \FALSE
+ ICALL1 NO-RESPONSE
+ RTRUE
+?CCL54: EQUAL? PRSA,V?EXAMINE \?CCL58
+ PRINTI "He"
+ CALL1 SEE-ANYTHING-IN?
+ ZERO? STACK /?CND59
+ PRINTI "'s holding "
+ ICALL1 CONTENTS
+ PRINTI ", and"
+?CND59: PRINTR " looks as if he hasn't slept for days."
+?CCL58: EQUAL? PRSA,V?ASK-FOR \?CCL62
+ ICALL2 ASK-CLERIC-FOR,PRSI
+ RTRUE
+?CCL62: EQUAL? PRSA,V?ASK-ABOUT \?CCL64
+ ICALL2 ASK-CLERIC-ABOUT,PRSI
+ RTRUE
+?CCL64: EQUAL? PRSA,V?TELL-ABOUT \?CCL66
+ ICALL DO-GLANCE,CLERIC,PRSI
+ RTRUE
+?CCL66: EQUAL? PRSA,V?HELLO,V?WAVE-AT \?CCL68
+ ICALL1 GREET-CLERIC
+ RTRUE
+?CCL68: INTBL? PRSA,HURTVERBS,NHVERBS >X \FALSE
+ ICALL1 HARMLESS
+ RTRUE
+
+
+ .FUNCT GREET-CLERIC
+ ICALL2 CTHE-PRINT,CLERIC
+ PRINTR " bows deeply."
+
+
+ .FUNCT ASK-CLERIC-ABOUT,OBJ,TBL,LEN,X
+ CALL WHAT-TALK?,CLERIC,OBJ
+ ZERO? STACK \TRUE
+ GET CLERIC-TABLE,0 >LEN
+?PRG3: GET CLERIC-TABLE,LEN >TBL
+ GET TBL,0 >X
+ GET TBL,0
+ EQUAL? STACK,OBJ \?CCL7
+ PRINTC 34
+ GET TBL,1
+ PRINT STACK
+ PRINT PERQ
+ RTRUE
+?CCL7: DLESS? 'LEN,1 \?PRG3
+ ICALL2 CTHE-PRINT,CLERIC
+ PRINTI " shrugs. ""I claim little knowledge of "
+ ICALL2 PRONOUN,OBJ
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT ASK-CLERIC-FOR,OBJ
+ FSET CLERIC,SEEN
+ EQUAL? OBJ,RELIQUARY \?CND1
+ IN? OBJ,CLERIC \?CND1
+ ICALL1 GET-RELIQUARY
+ RTRUE
+?CND1: ICALL2 CTHE-PRINT,CLERIC
+ PRINTR " searches the pockets of his robes. ""Alas. I have none to offer."""
+
+
+ .FUNCT GET-RELIQUARY
+ ICALL1 EXIT-CLERIC
+ MOVE RELIQUARY,PLAYER
+ ICALL2 CTHE-PRINT,CLERIC
+ PRINTI " grudgingly surrenders "
+ ICALL2 THE-PRINT,RELIQUARY
+ PRINTI " and"
+ PRINT STR?501
+ PRINTR "crowd, which soon wanders away."
+
+
+ .FUNCT GIVE-TO-CLERIC,OBJ
+ FSET CLERIC,SEEN
+ CALL GIVING-LOOT?,OBJ,CLERIC
+ ZERO? STACK \TRUE
+ ICALL2 NO-THANKS,CLERIC
+ RTRUE
+
+
+ .FUNCT MISSING-F,OBJ
+ SET 'OBJ,PRSO
+ ZERO? PRSI /?CND1
+ ZERO? NOW-PRSI? /?CND1
+ SET 'OBJ,PRSI
+?CND1: ICALL1 PCLEAR
+ PRINTI "Alas. "
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " isn't here"
+ PRINT AT-MOMENT
+ RETURN 2
+
+
+ .FUNCT DESCRIBE-QUEEN,OBJ
+ PRINTI "furry "
+ PRINTB W?CREATURE
+ RTRUE
+
+
+ .FUNCT QUEEN-F,CONTEXT,X
+ EQUAL? CONTEXT,M-OBJDESC \?CCL3
+ ICALL2 PRINTCA,QUEEN
+ PRINTI " is preening herself nearby"
+ CALL2 SEE-ANYTHING-IN?,QUEEN
+ ZERO? STACK /?CND4
+ PRINTI ". She's clutching "
+ ICALL2 CONTENTS,QUEEN
+ PRINTI " in her paw"
+?CND4: PRINTC PER
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-CONT \?CCL7
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL1 QUEEN-SEES-YOU
+ RTRUE
+?CCL7: ZERO? CONTEXT \FALSE
+ CALL NOUN-USED?,W?PLATYPUS,W?ALEXIS
+ ZERO? STACK /?CND1
+ GETP QUEEN,P?SDESC
+ ZERO? STACK /?CND1
+ FSET? QUEEN,IDENTIFIED /?CND1
+ FSET QUEEN,IDENTIFIED
+ PRINTI "[Good guess."
+ PRINT BRACKET
+?CND1: ZERO? NOW-PRSI? /?CCL18
+ EQUAL? PRSA,V?GIVE,V?SHOW,V?FEED \FALSE
+ ICALL1 APPROACH-QUEEN
+ RTRUE
+?CCL18: EQUAL? PRSA,V?HIT,V?MUNG,V?WALK-TO /?CTR21
+ EQUAL? PRSA,V?WAVE-AT,V?FOLLOW,V?RAPE /?CTR21
+ EQUAL? PRSA,V?UNDRESS \?CCL22
+?CTR21: ICALL1 QUEEN-SEES-YOU
+ RTRUE
+?CCL22: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL27
+ ICALL2 APPROACH-QUEEN,STR?656
+ RETURN 2
+?CCL27: EQUAL? PRSA,V?EXAMINE \FALSE
+ PRINTI "Her red gown is a bit too snug"
+ CALL1 SEE-ANYTHING-IN?
+ ZERO? STACK /?CND32
+ PRINTI ". She's holding "
+ ICALL1 CONTENTS
+ PRINTI " in one of her paws"
+?CND32: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT APPROACH-QUEEN,STR
+ FSET? QUEEN,TOUCHED /?CND1
+ FSET QUEEN,TOUCHED
+ FSET QUEEN,SEEN
+ ICALL2 CTHE-PRINT,QUEEN
+ PRINTR " glances around her garden, listening intently. Anxious moments pass; then, hearing nothing further, she turns her back with a shrug."
+?CND1: ICALL2 QUEEN-SEES-YOU,STR
+ RTRUE
+
+
+ .FUNCT QUEEN-SEES-YOU,STR
+ ICALL2 CTHE-PRINT,QUEEN
+ PRINTI " wheels around "
+ ZERO? STR /?CCL3
+ PRINT STR
+ JUMP ?CND1
+?CCL3: PRINTI "as you step into view"
+?CND1: PRINTI ". ""A spy!"" she cries, blowing a shrill note on her whistle.
+ Before you can think or move, twenty-seven heavily armed platypus guards materialize around you. After suffering exquisite torture at the skilled hands of the Queen, you're led away to twenty years of backbreaking labor in the granola mines of Antharia"
+ ICALL1 JIGS-UP
+ RTRUE
+
+
+ .FUNCT CONDUCTOR-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL8
+ PRINTR "Passengers block your target."
+?CCL8: EQUAL? PRSA,V?GIVE,V?SHOW,V?FEED \FALSE
+ ICALL1 CONDUCTOR-BUSY
+ RTRUE
+?CCL5: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL11
+ ICALL1 PCLEAR
+ ICALL1 CONDUCTOR-BUSY
+ RETURN 2
+?CCL11: EQUAL? PRSA,V?EXAMINE \?CCL15
+ PRINTR "His face is sallow with boredom."
+?CCL15: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ PRINTI "A crowd of "
+ PRINTD PASSENGERS
+ PRINTR " bars your approach."
+
+
+ .FUNCT CONDUCTOR-BUSY
+ ICALL2 CTHE-PRINT,CONDUCTOR
+ PRINTI " is too busy "
+ EQUAL? HERE,AT-DOCK \?CCL3
+ PRINTI "herding "
+ PRINTD PASSENGERS
+ JUMP ?CND1
+?CCL3: PRINTI "with his monologue"
+?CND1: PRINT STR?657
+ RTRUE
+
+
+ .FUNCT PASSENGERS-F,CONTEXT,X
+ ZERO? CONTEXT \FALSE
+ ZERO? NOW-PRSI? /?CCL5
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL8
+ PRINTR "You might hurt somebody."
+?CCL8: EQUAL? PRSA,V?GIVE,V?SHOW,V?FEED \FALSE
+ ICALL1 PASSENGERS-BUSY
+ RTRUE
+?CCL5: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL11
+ ICALL1 PCLEAR
+ ICALL1 PASSENGERS-BUSY
+ RETURN 2
+?CCL11: EQUAL? PRSA,V?EXAMINE \?CCL15
+ PRINTR "A suspicious passenger returns your stare."
+?CCL15: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ PRINTI "Suspicious "
+ PRINTD PASSENGERS
+ PRINTR " edge away from your approach."
+
+
+ .FUNCT PASSENGERS-BUSY
+ ICALL2 CTHE-PRINT,PASSENGERS
+ PRINTI " are too busy "
+ EQUAL? HERE,AT-DOCK \?CCL3
+ PRINTI "crowding around "
+ ICALL2 THE-PRINT,GONDOLA
+ JUMP ?CND1
+?CCL3: PRINTI "gawking at the scenery"
+?CND1: PRINT STR?657
+ RTRUE
+
+ .ENDI
diff --git a/places.zap b/places.zap
new file mode 100644
index 0000000..e59332a
--- /dev/null
+++ b/places.zap
@@ -0,0 +1,3850 @@
+
+
+ .FUNCT GET-OWOMAN-AND-CURTAIN
+ FSET CURTAIN,NODESC
+ IN? CURTAIN,HERE /?CND1
+ MOVE CURTAIN,HERE
+?CND1: PUTP OWOMAN,P?LAST-LOC,HERE
+ IN? OWOMAN,HERE /?CND3
+ MOVE OWOMAN,HERE
+?CND3: ICALL2 REMOVE-ALL,OWOMAN
+ ICALL2 SEE-CHARACTER,OWOMAN
+ RFALSE
+
+
+ .FUNCT GET-DACT?
+ FSET? DACT,TOUCHED /FALSE
+ FSET? HERE,TOUCHED /FALSE
+ CALL LAST-ROOM-IN?,MOOR-ROOMS,2
+ ZERO? STACK /FALSE
+ FSET DACT,TOUCHED
+ MOVE DACT,HERE
+ ICALL2 QUEUE,I-DACT
+ RTRUE
+
+
+ .FUNCT HILLTOP-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "The horizon is lost in the glare of morning upon the Great Sea. You shield your eyes to sweep the shore below, where a village lies nestled beside a quiet cove."
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ SET 'P-IT-OBJECT,OAK2
+ RFALSE
+?CCL5: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?DOWN \FALSE
+ SET 'P-WALK-DIR,P?EAST
+ RFALSE
+
+
+ .FUNCT COVESIDE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "Gulls circle the far end of a wharf extending east across the cove. The street is dotted with shanties bleached by years of sun and salt."
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?UP \FALSE
+ SET 'P-WALK-DIR,P?WEST
+ RFALSE
+
+
+ .FUNCT OUTSIDE-PUB-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "Harsh laughter and mouthwatering aromas waft "
+ FSET? PUB-DOOR,OPENED \?CCL6
+ PRINTI "through the open "
+ JUMP ?CND4
+?CCL6: PRINTI "out from under the "
+?CND4: PRINTI "door of a shanty on the street's west side. "
+ ICALL1 DESCRIBE-PUB-SIGN
+ RTRUE
+
+
+ .FUNCT DESCRIBE-PUB-SIGN,X
+ PRINTI "The words ""Ye Rusty Lantern, A Publick House"" appear in fading script above "
+ FIRST? PUB-SIGN >X \?CCL3
+ ICALL2 THIS-IS-IT,X
+ EQUAL? X,LANTERN \?CCL6
+ PRINTI "a real "
+ ICALL2 DPRINT,X
+ JUMP ?CND4
+?CCL6: ICALL2 PRINTA,X
+?CND4: PRINTI ", dangling from a "
+ JUMP ?CND1
+?CCL3: SET 'P-IT-OBJECT,PUB-SIGN
+ PRINTI "an empty "
+?CND1: PRINTR "hook."
+
+
+ .FUNCT N-MOOR-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A gray scrim of mist lies across the southern moors, obscuring the path only a few steps away. The outskirts of a village"
+ PRINT STR?683
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ EQUAL? P-WALK-DIR,P?NORTH \FALSE
+ ZERO? AUTO /FALSE
+ ICALL1 BMODE-OFF
+ RFALSE
+
+
+ .FUNCT IN-GAS-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "Your feet make wet, sucking noises as you trudge across patches of rotting vegetable matter. An unwholesome miasma of gasses is making your head swim."
+ CRLF
+ ICALL1 MENTION-MOOR-EXIT
+ RTRUE
+
+
+ .FUNCT MOOR2-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Silent, unblinking eyes peer down at you from the fog-shrouded trees."
+ CRLF
+ ICALL1 MENTION-MOOR-EXIT
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 GET-DACT?
+ RFALSE
+
+
+ .FUNCT MOOR3-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Spooky fingers of mist swirl around your feet. It's hard to see more than a few yards in any "
+ PRINTD INTDIR
+ PRINT PERIOD
+ ICALL1 MENTION-MOOR-EXIT
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 GET-DACT?
+ RFALSE
+
+
+ .FUNCT MOOR4-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A cacophony of peeps, hoots and croaks sets your nerves on edge."
+ CRLF
+ ICALL1 MENTION-MOOR-EXIT
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 GET-DACT?
+ RFALSE
+
+
+ .FUNCT MOOR5-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Narrow paths wander off between pools of black, fetid mud. The damp chill in the air is making you shiver."
+ CRLF
+ ICALL1 MENTION-MOOR-EXIT
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 GET-DACT?
+ RFALSE
+
+
+ .FUNCT MOOR6-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Gray wraiths of mist linger among the reeds, filling your nostrils with the odor of things long dead."
+ CRLF
+ ICALL1 MENTION-MOOR-EXIT
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 GET-DACT?
+ RFALSE
+
+
+ .FUNCT MENTION-MOOR-EXIT,WRD,TBL
+ GETP HERE,P?SW >TBL
+ ZERO? TBL /?CCL3
+ GET TBL,XROOM
+ EQUAL? STACK,SW-MOOR \?CCL3
+ SET 'WRD,W?SOUTHWEST
+ JUMP ?CND1
+?CCL3: GETP HERE,P?NORTH >TBL
+ ZERO? TBL /?CND1
+ GET TBL,XROOM
+ EQUAL? STACK,N-MOOR \?CND1
+ SET 'WRD,W?NORTH
+?CND1: ZERO? WRD /FALSE
+ PRINT TAB
+ PRINTI "The mist thins out a bit to the "
+ PRINTB WRD
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT SW-MOOR-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "Circling gulls and a forest of masts disclose a seaport not far to the west. The view to the northeast is obscured by a blanket of mist."
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ EQUAL? P-WALK-DIR,P?SW \FALSE
+ ZERO? AUTO /FALSE
+ ICALL1 BMODE-OFF
+ RFALSE
+
+
+ .FUNCT IN-PORT-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "Mizniaport is a magnet for the wealthy yipples of Borphee, who browse the colorful shops in search of next year's fashions"
+ PRINT PTAB
+ PRINTR "An especially swank boutique stands just north of here. Beside it, a path marked ""Private Way"" bends northeast."
+
+
+ .FUNCT IN-YARD-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "This shady nook obviously belongs to some well-to-do yipple. The arborvitaes are lush and neatly trimmed, with twin beds of flowers leading up to a little red "
+ PRINTD STABLE
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT STABLE-IN
+ ICALL PERFORM,V?ENTER,STALL
+ RFALSE
+
+
+ .FUNCT EXIT-STABLE
+ IN? PLAYER,STALL /?CCL2
+ RETURN IN-YARD
+?CCL2: ICALL PERFORM,V?EXIT,STALL
+ RFALSE
+
+
+ .FUNCT IN-STABLE-F,CONTEXT,U,ANY,X
+ IN? UNICORN,STALL \?CND1
+ INC 'U
+?CND1: EQUAL? CONTEXT,M-LOOK \?CCL5
+ FSET? STALL,MUNGED \?CCL8
+ PRINTI "The splintered ruins of "
+ ICALL2 THE-PRINT,STALL
+ PRINTI " look out of place in this otherwise"
+ JUMP ?CND6
+?CCL8: PRINTI "Not a straw is out of place in this"
+?CND6: PRINTI " immaculate "
+ PRINTD STABLE
+ IN? PLAYER,STALL \?CND9
+ PRINT PERIOD
+ RTRUE
+?CND9: CALL2 SEE-ANYTHING-IN?,STALL >ANY
+ FSET? STALL,MUNGED \?CND11
+ ZERO? ANY /?CND13
+ PRINTI ". "
+ PRINT STR?530
+ ICALL2 CONTENTS,STALL
+ SET 'P-IT-OBJECT,STALL
+?CND13: PRINT PERIOD
+ RTRUE
+?CND11: PRINTI ". The one"
+ ICALL2 OPEN-CLOSED,STALL
+ PRINT SIS
+ ZERO? U /?CCL17
+ PRINTI "occupied by a snow-white "
+ PRINTD UNICORN
+ PRINTI ", who gazes at you mournfully from between the slats"
+ ZERO? ANY /?CND15
+ PRINTI ". You can also "
+ JUMP ?CND15
+?CCL17: PRINTI "unoccupied"
+ ZERO? ANY /?CND15
+ PRINTI "; you can "
+?CND15: ZERO? ANY /?CND22
+ PRINTI "see "
+ ICALL2 CONTENTS,STALL
+ PRINTI " inside"
+ SET 'P-IT-OBJECT,STALL
+?CND22: PRINT PERIOD
+ RTRUE
+?CCL5: EQUAL? CONTEXT,M-ENTERING \?CCL25
+ ZERO? U /FALSE
+ ICALL2 SEE-CHARACTER,UNICORN
+ FSET UNICORN,SEEN
+ ICALL2 QUEUE,I-UNICORN
+ RFALSE
+?CCL25: EQUAL? CONTEXT,M-EXIT \FALSE
+ ZERO? U /FALSE
+ ICALL2 DEQUEUE,I-UNICORN
+ ICALL2 CTHE-PRINT,UNICORN
+ PRINTR " whinnies pitifully as you leave."
+
+
+ .FUNCT IN-BOUTIQUE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The sheer, flowing fabrics and gossamer pastels in this little shop create an atmosphere of taste and calm conducive to reckless spending.
+ A "
+ ICALL2 SHOP-DOOR,BOUTIQUE-DOOR
+ PRINTI " offers the latest in travel fashions"
+ ICALL2 LOOK-ON-CASE,ON-BCASE
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ ICALL1 GET-OWOMAN-AND-CURTAIN
+ ICALL2 QUEUE,I-OWOMAN
+ RFALSE
+?CCL5: EQUAL? CONTEXT,M-EXIT \FALSE
+ ICALL2 DEQUEUE,I-OWOMAN
+ IN? OWOMAN,IN-BOUTIQUE \FALSE
+ PRINTI """See you later,"" calls "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTR " as you leave."
+
+
+ .FUNCT IN-PUB-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Loud voices and clattering dishes make this smarmy dive sound busier than it really is. Your eyes sting from the greasy smoke drifting in from "
+ ICALL2 THE-PRINT,KITCHEN
+ PRINT PTAB
+ ICALL2 PRINTCA,BANDITS
+ PRINTI " is hogging the fireplace."
+ CRLF
+ FIRST? PUBWALL >X \TRUE
+ SET 'P-IT-OBJECT,X
+ PRINT TAB
+ ICALL2 PRINTCA,X
+ PRINTR " is imbedded in the wall."
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL7
+ ICALL2 QUEUE,I-BANDITS
+ RFALSE
+?CCL7: EQUAL? CONTEXT,M-ENTERED \?CCL9
+ SET 'P-THEM-OBJECT,BANDITS
+ RFALSE
+?CCL9: EQUAL? CONTEXT,M-EXIT \FALSE
+ ZERO? P-WALK-DIR /?CND12
+ FSET? DAGGER,NODESC \?CND12
+ FCLEAR DAGGER,NODESC
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE DAGGER,PUBWALL
+ SET 'P-IT-OBJECT,DAGGER
+ FSET BANDITS,SEEN
+ PRINTI "You edge towards the "
+ EQUAL? P-WALK-DIR,P?WEST,P?IN \?CCL17
+ PRINTD KITCHEN
+ JUMP ?CND15
+?CCL17: PRINTB W?EXIT
+?CND15: PRINT PTAB
+ ICALL2 ITALICIZE,STR?604
+ PRINTI "! A dagger streaks past your ear, imbedding itself deep into the wall.
+ ""Har!"" chortles a bandit."
+ CRLF
+ RETURN 2
+?CND12: ICALL2 DEQUEUE,I-BANDITS
+ RFALSE
+
+
+ .FUNCT IN-KITCHEN-F,CONTEXT,D,L
+ FSET? CELLAR-DOOR,OPENED \?CND1
+ INC 'D
+?CND1: EQUAL? CONTEXT,M-LOOK \?CCL5
+ PRINTI "Coils of greasy steam rise from a cauldron bubbling over a roaring hearth. "
+ ICALL2 CTHE-PRINT,CEILING
+ PRINTI " is hung with crusty pots and strips of old meat"
+ PRINT PTAB
+ PRINTC 65
+ FSET? CELLAR-DOOR,MUNGED \?CCL8
+ PRINTI " gaping hole"
+ JUMP ?CND6
+?CCL8: ZERO? D /?CCL10
+ PRINTI "n open door"
+ JUMP ?CND6
+?CCL10: PRINTI " closed door"
+?CND6: PRINT SIN
+ ICALL2 THE-PRINT,GCORNER
+ ZERO? D /?CND11
+ PRINTR " reveals a stair leading downward."
+?CND11: PRINTR " bears the legend, ""Keepeth Out."""
+?CCL5: EQUAL? CONTEXT,M-ENTERING \?CCL14
+ IN? COOK,IN-KITCHEN /?CND15
+ MOVE COOK,IN-KITCHEN
+?CND15: FCLEAR COOK,NODESC
+ ICALL2 SEE-CHARACTER,COOK
+ FSET COOK,SEEN
+ ICALL2 QUEUE,I-COOK
+ RFALSE
+?CCL14: EQUAL? CONTEXT,M-ENTERED \?CCL18
+ FSET? BOTTLE,MUNGED /FALSE
+ IN? BOTTLE,PLAYER \FALSE
+ PRINT TAB
+ ICALL1 COOK-SEES-BOTTLE
+ RTRUE
+?CCL18: EQUAL? CONTEXT,M-EXIT \FALSE
+ ZERO? P-WALK-DIR /?CCL27
+ FSET? ONION,TOUCHED \?CCL27
+ FSET? BOTTLE,IDENTIFIED /?CCL27
+ FCLEAR COOK,SEEN
+ PRINTI """Wait a second."""
+ CRLF
+ ICALL1 I-ONION-OFFER
+ RETURN 2
+?CCL27: EQUAL? P-WALK-DIR,P?DOWN,P?IN \?CCL34
+ ZERO? D \?CCL37
+ ICALL2 ITS-CLOSED,CELLAR-DOOR
+ RETURN 2
+?CCL37: FSET? CELLAR-DOOR,TOUCHED /?CND35
+ FSET CELLAR-DOOR,TOUCHED
+ CALL1 SETUP-CELLAR?
+ ZERO? STACK /FALSE
+?CND35: ICALL2 DEQUEUE,I-COOK
+ PRINTI "You clump down "
+ ICALL2 THE-PRINT,CELLAR-STAIR
+ PRINT PERIOD
+ RTRUE
+?CCL34: EQUAL? P-WALK-DIR,P?EAST,P?OUT \FALSE
+ SET 'P-WALK-DIR,P?EAST
+ ICALL2 DEQUEUE,I-COOK
+ RFALSE
+
+
+ .FUNCT ON-WHARF-DOWN
+ FSET SALT,SEEN
+ PRINTI """Careful!"" warns "
+ ICALL2 THE-PRINT,SALT
+ PRINTI ", holding you back. ""Water's mighty cool this time o' year."""
+ CRLF
+ RFALSE
+
+
+ .FUNCT ON-WHARF-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINT STR?686
+ PRINTI " Far below, you "
+ PRINT STR?687
+ FIRST? COVE \?CND4
+ PRINT PTAB
+ PRINT YOU-SEE
+ ICALL2 CONTENTS,COVE
+ PRINTI " bobbing on the waves"
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL7
+ FSET? SHILL,BUOYANT /?CND8
+ FSET SHILL,BUOYANT
+ ICALL2 QUEUE,I-SHILL
+?CND8: FSET SALT,SEEN
+ ICALL2 QUEUE,I-SALT
+ ICALL2 SEE-CHARACTER,SALT
+ RFALSE
+?CCL7: EQUAL? CONTEXT,M-EXIT \FALSE
+ FSET? SHILL,SEEN /?CND12
+ ICALL1 SEE-SHILL
+ RETURN 2
+?CND12: ICALL2 DEQUEUE,I-SALT
+ ZERO? P-WALK-DIR /FALSE
+ PRINTR """See y'later,"" chuckles the salt as you walk away."
+
+
+ .FUNCT LOCK-CELLAR-DOOR
+ FSET CELLAR-DOOR,LOCKED
+ PRINT YOU-HEAR
+ PRINT LTHE
+ ICALL2 ITALICIZE,STR?522
+ PRINTR " of a substantial lock."
+
+
+ .FUNCT AT-BOTTOM-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "You're standing at the bottom of a short, rickety stairway, ankle-deep in refuse. "
+ FSET? CELLAR-DOOR,OPENED \?CND4
+ PRINTI "Light streams down through a"
+ FSET? CELLAR-DOOR,MUNGED \?CCL8
+ PRINTI " gaping hole"
+ JUMP ?CND6
+?CCL8: PRINTI "n open door"
+?CND6: PRINTR " overhead."
+?CND4: PRINTR "The door overhead is closed."
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL10
+ IN? COOK,AT-BOTTOM /?CND11
+ MOVE COOK,AT-BOTTOM
+ FSET COOK,NODESC
+?CND11: SET 'P-IT-OBJECT,CELLAR-DOOR
+ RFALSE
+?CCL10: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?UP \FALSE
+ FSET? CELLAR-DOOR,MUNGED \?CCL19
+ ZERO? AUTO /?CND20
+ ICALL1 BMODE-OFF
+?CND20: ICALL2 YOU-CLIMB-UP,TRUE-VALUE
+ RTRUE
+?CCL19: FSET? CELLAR-DOOR,LOCKED \?CCL23
+ SET 'P-IT-OBJECT,CELLAR-DOOR
+ ICALL2 CTHE-PRINT,P-IT-OBJECT
+ PRINTI " is locked."
+ CRLF
+ RETURN 2
+?CCL23: FSET? CELLAR-DOOR,OPENED \FALSE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-IT-OBJECT,CELLAR-DOOR
+ FCLEAR CELLAR-DOOR,OPENED
+ FCLEAR AT-BOTTOM,LIGHTED
+ ICALL2 ITALICIZE,STR?605
+ PRINTI "! An unseen hand slams "
+ ICALL2 THE-PRINT,CELLAR-DOOR
+ PRINTI " in your face."
+ CRLF
+ ICALL1 SAY-IF-HERE-LIT
+ PRINT TAB
+ ICALL1 LOCK-CELLAR-DOOR
+ RETURN 2
+
+
+ .FUNCT WC1-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "Smashed bottles litter the floor, and the air reeks of sour wine."
+
+
+ .FUNCT SKEL-ROOM-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "Precarious stacks of barrels loom in the shadows on every side."
+?CCL3: EQUAL? CONTEXT,M-BEG \FALSE
+ ZERO? CHOKE /FALSE
+ EQUAL? PRSA,V?SAVE,V?UNDO \?CCL10
+ ICALL2 MUMBLAGE,SKELETON
+ RTRUE
+?CCL10: EQUAL? PRSA,V?WAIT,V?LOOK /FALSE
+ INTBL? PRSA,GAME-VERBS,NGVERBS >X /FALSE
+ SET 'X,P-PRSA-WORD
+ EQUAL? PRSA,V?WALK,V?WALK-TO \?CCL16
+ SET 'X,W?MOVE
+ JUMP ?CND14
+?CCL16: INTBL? PRSA,TALKVERBS,NTVERBS >X \?CCL18
+ SET 'X,W?SPEAK
+ JUMP ?CND14
+?CCL18: INTBL? PRSA,SEEVERBS,NSVERBS >X \?CCL20
+ SET 'X,W?SEE
+ JUMP ?CND14
+?CCL20: EQUAL? SKELETON,PRSO,PRSI /FALSE
+?CND14: PRINTI "It's not easy to "
+ ZERO? X \?CCL24
+ PRINTI "do that"
+ JUMP ?CND22
+?CCL24: PRINTB X
+?CND22: PRINTI " while you're being strangled to death."
+ CRLF
+ RETURN 2
+
+
+ .FUNCT MOSS-ROOM-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ CALL1 LIGHT-SOURCE? >X
+ ZERO? X \?CCL6
+ PRINTI "The dim light"
+ JUMP ?CND4
+?CCL6: ICALL2 CTHE-PRINT,X
+ PRINTI "'s glow"
+?CND4: PRINTR " reveals a gray patch of moss on the wall."
+
+
+ .FUNCT UPSTACK,BAD
+ ZERO? LIT? \?CND1
+ ICALL1 TOO-DARK
+ RFALSE
+?CND1: PRINTI "You teeter "
+ GET STATS,DEXTERITY
+ LESS? STACK,15 \?CCL5
+ INC 'BAD
+ PRINTI "uncertainly"
+ JUMP ?CND3
+?CCL5: PRINTI "for a moment"
+?CND3: PRINTI " on the lowest crates"
+ ZERO? BAD /?CND6
+ PRINTI ", lose your balance, and sprawl to "
+ ICALL2 THE-PRINT,GROUND
+ FSET? CRATES,SEEN /?CND8
+ FSET CRATES,SEEN
+ PRINTI ". Not very coordinated, are you?"
+ CRLF
+ RFALSE
+?CND8: PRINT PERIOD
+ RFALSE
+?CND6: PRINTI ", then slowly edge your way upward."
+ CRLF
+ ZERO? VERBOSITY /?CND10
+ CRLF
+?CND10: RETURN BARRELTOP
+
+
+ .FUNCT AT-STACK-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "Empty wine crates are stacked to "
+ ICALL2 THE-PRINT,CEILING
+ PRINTR " in a stairlike spiral."
+
+
+ .FUNCT THRONE-ROOM-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A shallow nest of sea shells, coral and other bits of ocean debris lies in "
+ ICALL2 THE-PRINT,GCORNER
+ CALL2 SEE-ANYTHING-IN?,THRONE
+ ZERO? STACK /?CND4
+ PRINTI ". Upon this pile you see "
+ ICALL2 CONTENTS,THRONE
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERED \FALSE
+ FSET? CRAB,MONSTER /FALSE
+ FSET CRAB,MONSTER
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 QUEUE,I-CRAB
+ RFALSE
+
+
+ .FUNCT BARRELTOP-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "You struggle to keep your balance as the stack sways back and forth in the darkness."
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ EQUAL? P-WALK-DIR,P?UP \FALSE
+ ZERO? AUTO /FALSE
+ ICALL1 BMODE-OFF
+ RFALSE
+
+
+ .FUNCT IN-THRIFF-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Trim white cottages are clustered around a central grove of mountain firs, tall and lovingly tended. A little chapel graces the west side of the street"
+ FSET? CHAPEL-DOOR,OPENED \?CND4
+ PRINTI ", its front doors wide open"
+?CND4: PRINT PTAB
+ PRINTI "Turning south, you see a "
+ FSET? FOREST-EDGE,MUNGED \?CND6
+ PRINTI "wall of "
+ PRINTD XTREES
+ PRINTR " waiting to descend upon the village."
+?CND6: PRINTI "narrow trail winding up into the mountains"
+ ZERO? MAGMA-TIMER /?CND8
+ PRINTI ", backlit by a "
+ ICALL1 GLOW-COLOR
+ PRINTI "glow of heat"
+?CND8: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?IN \?CCL14
+ SET 'P-WALK-DIR,P?WEST
+ RFALSE
+?CCL14: EQUAL? P-WALK-DIR,P?UP,P?SOUTH \FALSE
+ SET 'P-WALK-DIR,P?SOUTH
+ ZERO? MAGMA-TIMER /?CCL18
+ CALL2 WEARING-MAGIC?,RING
+ ZERO? STACK /?CND19
+ PRINTR "Your ring finger tingles as you draw closer to the blistering heat."
+?CND19: PRINTI "A blistering wall of heat forces you to turn back."
+ CRLF
+ RETURN 2
+?CCL18: CALL GLOBAL-IN?,FOREST-EDGE,SNOW
+ ZERO? STACK /FALSE
+ PRINTR "Your feet become dusted with snow as you ascend."
+
+
+ .FUNCT IN-CHAPEL-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ IN? CLERIC,IN-CHAPEL \?CCL6
+ IN? RELIQUARY,CLERIC \?CCL9
+ ICALL2 CTHE-PRINT,CLERIC
+ PRINTI " stands beside "
+ ICALL2 THE-PRINT,ALTAR
+ PRINTI ", holding "
+ ICALL2 CONTENTS,CLERIC
+ JUMP ?CND4
+?CCL9: PRINTI "An anxious "
+ PRINTD CONGREG
+ PRINTI " kneels in silent prayer before "
+ ICALL2 THE-PRINT,CLERIC
+ PRINTI ". On the altar beside him rests "
+ ICALL2 CONTENTS,ALTAR
+ JUMP ?CND4
+?CCL6: PRINTI "Rows of empty pews face a deserted altar"
+ CALL2 SEE-ANYTHING-IN?,ALTAR
+ ZERO? STACK /?CND4
+ PRINTI ", upon which rests "
+ ICALL2 CONTENTS,ALTAR
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-BEG \?CCL13
+ IN? CLERIC,IN-CHAPEL \FALSE
+ EQUAL? PRSA,V?HIT,V?MUNG,V?KICK \?CCL18
+ PRINTI "This is no place for violence."
+ CRLF
+ RETURN 2
+?CCL18: ZERO? THRIFF-WON \FALSE
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \FALSE
+ FSET CLERIC,SEEN
+ ICALL1 PCLEAR
+ PRINTC QUOTATION
+ RANDOM 100 >X
+ LESS? X,33 \?CCL25
+ PRINTI "Shhh"
+ JUMP ?CND23
+?CCL25: LESS? X,67 \?CCL27
+ PRINTI "Quiet"
+ JUMP ?CND23
+?CCL27: PRINTI "Shush"
+?CND23: PRINTI "!"" whispers a member of "
+ ICALL2 THE-PRINT,CONGREG
+ PRINT PERIOD
+ RETURN 2
+?CCL13: EQUAL? CONTEXT,M-ENTERING \?CCL31
+ FSET? CLERIC,LIVING /FALSE
+ FSET CLERIC,LIVING
+ FCLEAR CLERIC,SEEN
+ SET 'P-HIM-OBJECT,CLERIC
+ SET 'P-THEM-OBJECT,CONGREG
+ SET 'CLERIC-SCRIPT,INIT-CLERIC-SCRIPT
+ ICALL2 QUEUE,I-CLERIC
+ RFALSE
+?CCL31: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?OUT \?CND36
+ SET 'P-WALK-DIR,P?EAST
+?CND36: ZERO? THRIFF-WON \FALSE
+ IN? CLERIC,IN-CHAPEL \FALSE
+ ICALL2 DEQUEUE,I-CLERIC
+ PRINTC QUOTATION
+ CALL2 PICK-NEXT,CLERIC-WOES
+ PRINT STACK
+ PRINTI "!"" wails "
+ ICALL2 THE-PRINT,CLERIC
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT DESCRIBE-FOREST-EDGE,OBJ
+ PRINTI "Snowy Clearing"
+ RTRUE
+
+
+ .FUNCT FOREST-EDGE-F,CONTEXT,BHERE
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ CALL GLOBAL-IN?,FOREST-EDGE,LAVA
+ ZERO? STACK /?CCL6
+ PRINTI "An avalanche of lava has consumed the upward trail, ending here in a "
+ ZERO? MAGMA-TIMER /?CCL9
+ ICALL1 GLOW-COLOR
+ PRINTB W?POOL
+ JUMP ?CND7
+?CCL9: PRINTI "dark, steaming crust"
+?CND7: PRINTI ". Many of the surrounding "
+ ICALL1 SAY-TREES
+ PRINTI " are damaged; the survivors linger near the blackened edge of the clearing."
+ CRLF
+ JUMP ?CND4
+?CCL6: PRINTI "The upward trail bends sharply west here, winding out of sight between the "
+ ICALL1 SAY-TREES
+ PRINT PERIOD
+?CND4: ICALL1 MENTION-GLYPH?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL11
+ FSET? XTREES,SEEN \?CND12
+ SET 'P-THEM-OBJECT,XTREES
+?CND12: CALL GLOBAL-IN?,FOREST-EDGE,GLYPH
+ ZERO? STACK /FALSE
+ SET 'P-IT-OBJECT,GLYPH
+ RFALSE
+?CCL11: EQUAL? CONTEXT,M-EXIT \FALSE
+ FSET? XTREES,TOUCHED /?CND18
+ ICALL1 SEE-XTREES
+ RETURN 2
+?CND18: EQUAL? P-WALK-DIR,P?UP \?CND22
+ SET 'P-WALK-DIR,P?WEST
+?CND22: EQUAL? P-WALK-DIR,P?DOWN \?CND24
+ SET 'P-WALK-DIR,P?NORTH
+?CND24: EQUAL? P-WALK-DIR,P?NORTH \?CCL28
+ ZERO? LAVA-TIMER /?CND29
+ PRINTR "Volcanic heat singes your eyebrows as you race down the mountainside."
+?CND29: PRINTI "You stride down into the village"
+ ICALL1 BYE-BFLY
+ RTRUE
+?CCL28: EQUAL? P-WALK-DIR,P?WEST \FALSE
+ ZERO? LAVA-TIMER /?CND26
+ ICALL2 CASCADE,STR?666
+ RETURN 2
+?CND26: ICALL2 CTHE-PRINT,XTREES
+ PRINTI " shuffle "
+ ZERO? MAGMA-TIMER /?CCL38
+ PRINTI "impotently at the lava's edge"
+ JUMP ?CND36
+?CCL38: IN? BFLY,PLAYER \?CCL40
+ FSET? BFLY,MUNGED \?CCL40
+ FSET? BFLY,LIVING \?CCL40
+ PRINTI "nervously out of your way"
+?CND36: PRINTI " as you ascend the slope"
+ ICALL1 BYE-BFLY
+ RTRUE
+?CCL40: FSET XTREES,SEEN
+ PRINTI "across the upward trail, blocking it completely."
+ CRLF
+ RETURN 2
+
+
+ .FUNCT BYE-BFLY
+ IN? BFLY,HERE \?CND1
+ FSET? BFLY,MUNGED \?CND1
+ FSET? BFLY,LIVING \?CND1
+ REMOVE BFLY
+ ICALL2 DEQUEUE,I-PILLAR
+ PRINTI "; behind you, "
+ ICALL2 THE-PRINT,BFLY
+ PRINTI " crawls out of sight"
+?CND1: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT SEE-XTREES
+ FSET XTREES,TOUCHED
+ FSET XTREES,SEEN
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'P-THEM-OBJECT,XTREES
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ MOVE ORNAMENT,HERE
+ SET 'P-IT-OBJECT,ORNAMENT
+ ICALL2 QUEUE,I-XTREES
+ ICALL2 ITALICIZE,STR?695
+ PRINTI "! Something hard hits the back of "
+ PRINTD HEAD
+ PRINTI " and rolls to your feet."
+ CRLF
+ ICALL1 BMODE-ON
+ ICALL UPDATE-STAT,-5,ENDURANCE
+ PRINT TAB
+ PRINTI "A strange chorus of humming rises from the forest as you rub "
+ PRINTD HEAD
+ PRINTI ". It takes a few moments for you to recall the familiar melody: """
+ CALL2 PICK-NEXT,CAROLS
+ PRINT STACK
+ PRINTI "!"""
+ CRLF
+ RFALSE
+
+
+ .FUNCT SAY-TREES
+ FSET? XTREES,TOUCHED \?CCL3
+ PRINTD XTREES
+ RTRUE
+?CCL3: PRINTB W?TREES
+ RTRUE
+
+
+ .FUNCT MENTION-GLYPH?,X
+ CALL GLOBAL-IN?,HERE,GLYPH
+ ZERO? STACK /TRUE
+ PRINT TAB
+ ICALL2 PRINTCA,GLYPH
+ PRINTI " is inscribed in the "
+ CALL GLOBAL-IN?,HERE,SNOW
+ ZERO? STACK /?CCL5
+ PRINTB W?SNOW
+ JUMP ?CND3
+?CCL5: ZERO? MAGMA-TIMER \?CCL7
+ PRINTI "hardened crust"
+ JUMP ?CND3
+?CCL7: ICALL1 GLOW-COLOR
+ PRINTB W?LAVA
+?CND3: PRINTR " at your feet."
+
+
+ .FUNCT ON-TRAIL-F,CONTEXT,W,LV
+ IN? WIGHT,ON-TRAIL \?CND1
+ FSET? WIGHT,MONSTER \?CND1
+ INC 'W
+?CND1: EQUAL? CONTEXT,M-LOOK \?CCL7
+ CALL GLOBAL-IN?,ON-TRAIL,LAVA >LV
+ PRINTI "This "
+ ZERO? LV /?CCL10
+ PRINTI "high trail has been consumed by an avalanche of "
+ ZERO? MAGMA-TIMER /?CND11
+ ICALL1 GLOW-COLOR
+?CND11: PRINTD LAVA
+ ZERO? MAGMA-TIMER \?CND8
+ PRINTI ", still steaming in the frosty air"
+ JUMP ?CND8
+?CCL10: PRINTI "snowbound trail commands a superb view of the surrounding countryside. Maybe you could enjoy the sights if "
+ ZERO? LAVA-TIMER \?CCL17
+ PRINTI "your teeth would stop chatter"
+ JUMP ?CND15
+?CCL17: ICALL2 THE-PRINT,GROUND
+ PRINTI " would stop shak"
+?CND15: PRINTI "ing"
+?CND8: FSET? FOREST-EDGE,MUNGED \?CND18
+ PRINTI ". The downward path is hopelessly choked with "
+ PRINTD XTREES
+?CND18: PRINT PERIOD
+ ZERO? LV \?CND20
+ PRINT TAB
+ ICALL2 PRINTCA,CABIN
+ PRINTI " hugs the south side of the trail"
+ FSET? CABIN-DOOR,OPENED \?CND22
+ PRINTI ", its front door banging open and shut in the wind"
+?CND22: PRINTI ". Before it stands a"
+ FSET? MAILBOX,OPENED \?CCL26
+ PRINTI "n open "
+ JUMP ?CND24
+?CCL26: PRINTI " closed "
+?CND24: PRINTD MAILBOX
+ PRINT PERIOD
+?CND20: ICALL1 MENTION-GLYPH?
+ RTRUE
+?CCL7: EQUAL? CONTEXT,M-ENTERING \?CCL28
+ CALL GLOBAL-IN?,ON-TRAIL,GLYPH
+ ZERO? STACK /?CND29
+ SET 'P-IT-OBJECT,GLYPH
+?CND29: ZERO? W /FALSE
+ SET 'P-IT-OBJECT,WIGHT
+ SET 'LAST-MONSTER,WIGHT
+ SET 'LAST-MONSTER-DIR,P?EAST
+ ICALL2 QUEUE,I-WIGHT
+ RFALSE
+?CCL28: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?DOWN \?CCL37
+ SET 'P-WALK-DIR,P?EAST
+ JUMP ?CND35
+?CCL37: EQUAL? P-WALK-DIR,P?UP \?CCL39
+ SET 'P-WALK-DIR,P?WEST
+ JUMP ?CND35
+?CCL39: EQUAL? P-WALK-DIR,P?IN \?CND35
+ SET 'P-WALK-DIR,P?SOUTH
+?CND35: EQUAL? P-WALK-DIR,P?WEST \?CCL43
+ ZERO? LAVA-TIMER /?CCL46
+ ICALL2 CASCADE,STR?697
+ RETURN 2
+?CCL46: IN? WIGHT,ON-TRAIL \FALSE
+ FSET? WIGHT,MONSTER /?CND50
+ ICALL1 START-WIGHT
+ RETURN 2
+?CND50: ICALL2 CTHE-PRINT,WIGHT
+ PRINTI " leaps into your path and snarls."
+ CRLF
+ RETURN 2
+?CCL43: EQUAL? P-WALK-DIR,P?SOUTH \?CCL57
+ FSET? CABIN-DOOR,OPENED \FALSE
+ ZERO? W /?CCL62
+ FSET? W,SLEEPING /?CCL62
+ ICALL1 SNARLS
+ JUMP ?CND58
+?CCL62: PRINT CYOU
+?CND58: ICALL2 DEQUEUE,I-WIGHT
+ PRINTI "retreat into the shelter of "
+ ICALL2 THE-PRINT,CABIN
+ ZERO? LAVA-TIMER /?CND65
+ PRINT STR?698
+?CND65: PRINT PERIOD
+ RTRUE
+?CCL57: EQUAL? P-WALK-DIR,P?EAST \FALSE
+ ZERO? W /?CCL70
+ FSET? WIGHT,SLEEPING /?CCL70
+ ICALL1 SNARLS
+ JUMP ?CND41
+?CCL70: PRINT CYOU
+?CND41: ICALL2 DEQUEUE,I-WIGHT
+ PRINTI "stumble down "
+ ICALL2 THE-PRINT,TRAIL
+ ZERO? LAVA-TIMER /?CND73
+ PRINT STR?698
+ PRINT PERIOD
+ RTRUE
+?CND73: ICALL1 BYE-BFLY
+ RTRUE
+
+
+ .FUNCT SNARLS
+ ICALL2 CTHE-PRINT,WIGHT
+ PRINTI " snarls a threat as you "
+ RTRUE
+
+
+ .FUNCT IN-CABIN-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "Whoever works in this isolated cabin ought to consider the services of a maid nymph. Retorts, alembics and other dubious "
+ PRINTD CHEMS
+ PRINTI " are spilled across "
+ ICALL2 THE-PRINT,BENCH
+ PRINTI " in the center of the room"
+ FSET CHEMS,NODESC
+ CALL2 SEE-ANYTHING-IN?,BENCH
+ ZERO? STACK /?CND4
+ PRINTI ". You also see "
+ ICALL2 CONTENTS,BENCH
+ PRINTI " lying amid the mess"
+?CND4: FCLEAR CHEMS,NODESC
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT ON-PEAK-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINT XTHE
+ CALL GLOBAL-IN?,ON-PEAK,LAVA
+ ZERO? STACK /?CCL6
+ ZERO? MAGMA-TIMER /?CND7
+ ICALL1 GLOW-COLOR
+?CND7: PRINTI "flow of lava"
+ JUMP ?CND4
+?CCL6: PRINTI "upward trail"
+?CND4: PRINTI " ends here, at the brink of "
+ ICALL2 PRINTA,CRATER
+ PRINTI ". "
+ IN? DOME,ON-PEAK \?CCL11
+ PRINTI "Most of the opening is hidden beneath "
+ ICALL2 PRINTA,DOME
+ PRINTI " of light, at least a hundred yards across and almost as high."
+ CRLF
+ JUMP ?CND9
+?CCL11: ZERO? LAVA-TIMER /?CCL13
+ PRINTI "Molten lava is spewing out of the opening in a spectacular plume."
+ CRLF
+ JUMP ?CND9
+?CCL13: ICALL1 SAY-STEAM
+?CND9: ICALL1 MENTION-GLYPH?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?DOWN \?CND16
+ SET 'P-WALK-DIR,P?EAST
+?CND16: EQUAL? P-WALK-DIR,P?EAST \FALSE
+ ZERO? LAVA-TIMER /?CND20
+ PRINTR "An onrushing tide of red-hot magma encourages your descent."
+?CND20: PRINTI "You stumble down the steep trail"
+ ICALL1 BYE-BFLY
+ RTRUE
+
+
+ .FUNCT SAY-STEAM
+ PRINTI "Billowing clouds of steam obscure "
+ ICALL2 THE-PRINT,CRATER
+ PRINTR "'s interior."
+
+
+ .FUNCT AT-LEDGE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "This narrow path curves along a rocky ledge overlooking the sea. You "
+ FSET? CREVICE,NODESC \?CCL6
+ PRINTI "press your back against "
+ PRINT STR?703
+ PRINTI ", trying"
+ JUMP ?CND4
+?CCL6: PRINTI "try"
+?CND4: PRINTI " not to hear the waves crashing on the rocks, far below"
+ FSET? CREVICE,NODESC /?CND7
+ SET 'P-IT-OBJECT,CREVICE
+ PRINT PTAB
+ ICALL2 PRINTCA,CREVICE
+ PRINTI " has been blasted into "
+ PRINT STR?703
+?CND7: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ FSET? CREVICE,NODESC /FALSE
+ SET 'P-IT-OBJECT,CREVICE
+ RFALSE
+
+
+ .FUNCT TOWER-BASE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "An ancient "
+ PRINTD TOWER
+ PRINTR " stands upon this secret plateau, looming in dark silhouette against the sky. Crumbled steps lead up into its shadowy interior."
+
+
+ .FUNCT AT-BRINE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINT STR?705
+ PRINTR " here, where a nameless brook meets the tidal flats of the Great Sea. One road follows the water inland; another spans a bridge to the northeast."
+
+
+ .FUNCT AT-BROOK-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "A footpath emerges from the shadow of a forbidding forest, curving southwest along the edge of a brook."
+
+
+ .FUNCT IN-ACCARDI-F,CONTEXT,OBJ
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "Home of the most famous of all Enchanters' Guilds, Accardi is usually crowded with autograph seekers and hopeful young apprentices. But the crooked streets are oddly quiet today"
+ PRINT PTAB
+ ICALL2 PRINTCA,WEAPON-SHOP
+ PRINTI " stands near "
+ ICALL2 THE-PRINT,BRIDGE
+ PRINTI " leading out of town"
+ FSET? WEAPON-DOOR,OPENED \?CND4
+ PRINTI ". Its "
+ PRINTD WEAPON-DOOR
+ PRINTI " is wide open"
+?CND4: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT IN-WEAPON-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Lethal instruments of iron and steel crowd every inch of this tiny establishment. The gleam of polished metal makes your fist clench with expensive fantasies of aggression"
+ PRINT PTAB
+ PRINTI "Your attention comes to rest on a "
+ ICALL2 SHOP-DOOR,WEAPON-DOOR
+ ICALL2 LOOK-ON-CASE,ON-WCASE
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 GET-OWOMAN-AND-CURTAIN
+ RFALSE
+
+
+ .FUNCT NYMPH-SAYS
+ PRINTI "ear. ""There's no one here right now,"" she squeaks, ""so you'd better not"
+ RTRUE
+
+
+ .FUNCT AT-GATE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "Before you stands the headquarters of The Accardi Chapter of the Guild of Enchanters, better known as ""The Circle."" Its legendary membership and mighty deeds need no introduction."
+?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL5
+ IN? GRINDER,AT-GATE \FALSE
+ ICALL1 SEE-GRINDER
+ PRINT TAB
+ PRINTI """Welcome back,"" coos "
+ ICALL2 THE-PRINT,GRINDER
+ PRINTR " with an evil grin."
+?CCL5: EQUAL? CONTEXT,M-EXIT \FALSE
+ ZERO? P-WALK-DIR /FALSE
+ IN? GRINDER,AT-GATE \?CCL14
+ EQUAL? P-WALK-DIR,P?WEST \?CND15
+ ICALL2 DEQUEUE,I-GRINDER
+ PRINTI """Coward!"" taunts "
+ ICALL2 THE-PRINT,GRINDER
+ PRINTR " as you duck out of range."
+?CND15: ICALL2 CTHE-PRINT,GRINDER
+ PRINTI " steps into your path, laughing."
+ CRLF
+ RETURN 2
+?CCL14: EQUAL? P-WALK-DIR,P?NORTH,P?IN \?CCL20
+ FSET? NYMPH,LIVING /?CCL23
+ PRINTR "You step unchallenged through the open gate."
+?CCL23: FSET? GRINDER,NODESC \?CND21
+ FCLEAR GRINDER,NODESC
+ SET 'GRTIMER,4
+ ICALL2 QUEUE,I-GRINDER-APPEARS
+?CND21: FSET? GUILD-HALL,TOUCHED \?CCL27
+ ICALL2 CTHE-PRINT,NYMPH
+ PRINTI " promptly reappears. ""They're not back yet. Go away"
+ JUMP ?CND25
+?CCL27: PRINTI "A tiny "
+ PRINTD NYMPH
+ PRINTI " appears, floating in the air beside your "
+ ICALL1 NYMPH-SAYS
+ PRINTI " come in"
+?CND25: FSET GUILD-HALL,TOUCHED
+ PRINT STR?515
+ RETURN 2
+?CCL20: EQUAL? P-WALK-DIR,P?WEST \FALSE
+ FSET? GRINDER,NODESC /?CCL32
+ ZERO? GRTIMER /FALSE
+?CCL32: PRINTC 65
+ EQUAL? GRTIMER,1,2 \?CND35
+ PRINTI "nother"
+?CND35: PRINT STR?707
+ FSET? GRINDER,NODESC \?CND37
+ FCLEAR GRINDER,NODESC
+ SET 'GRTIMER,3
+ ICALL2 QUEUE,I-GRINDER-APPEARS
+?CND37: ICALL1 I-GRINDER-APPEARS
+ RETURN 2
+
+
+ .FUNCT IN-HALL-F,CONTEXT,OBJ
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL2 CTHE-PRINT,CEILING
+ PRINTR " of this once-splendid chamber has collapsed, burying doors and stairwells under tons of debris. The elliptical scorches on the walls are unmistakable, even to a novice; but why would anyone fire magic missiles here, in the very midst of the Circle?"
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ FSET? IN-HALL,SEEN /FALSE
+ FSET IN-HALL,SEEN
+ CALL2 PICK-ONE,WAND-LIST >OBJ
+ FCLEAR OBJ,NODESC
+ PUTP OBJ,P?ACTION,DISPEL-WAND-F
+ PUTP OBJ,P?SDESC,DESCRIBE-DISPEL-WAND
+ GETPT OBJ,P?SYNONYM
+ PUT STACK,0,W?DISPEL
+ GETPT OBJ,P?ADJECTIVE
+ PUT STACK,0,W?DISPEL
+ PUTP OBJ,P?DESCFCN,DESCRIBE-HALL-WAND
+ MOVE OBJ,IN-HALL
+ RFALSE
+
+
+ .FUNCT LEVEL1A-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "A welcome patch of daylight is visible at the bottom of the stairway."
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?DOWN,P?OUT \FALSE
+ ZERO? AUTO /FALSE
+ ICALL1 BMODE-OFF
+ RFALSE
+
+
+ .FUNCT TOWER-BASE-UP,RM,X
+ FSET? LEVEL1A,TOUCHED /?CND1
+ FSET LEVEL1A,TOUCHED
+ ICALL2 SCRAMBLE,TOWER1-ROOMS
+?PRG3: RANDOM 4
+ GETB TOWER1-ROOMS,STACK >RM
+ EQUAL? RM,LEVEL1A /?PRG3
+ ICALL NEXT-WAND?,DESCRIBE-TOWER-WAND,RM
+?CND1: FSET? SPIDER,NODESC \?CND7
+ FCLEAR SPIDER,NODESC
+ ICALL2 QUEUE,I-SPIDER
+?CND7: ICALL1 YOU-CLIMB-UP
+ RETURN LEVEL1A
+
+
+ .FUNCT LEVEL1-UP,RM
+ FSET? LEVEL2A,TOUCHED /?CND1
+ FSET LEVEL2A,TOUCHED
+ ICALL NEW-EXIT?,LEVEL2A,P?DOWN,897,HERE
+ ICALL2 SCRAMBLE,TOWER2-ROOMS
+?PRG3: RANDOM 4
+ GETB TOWER2-ROOMS,STACK >RM
+ EQUAL? RM,LEVEL2A /?PRG3
+ MOVE CARD,RM
+?CND1: FSET? SLUG,NODESC \?CND7
+ FCLEAR SLUG,NODESC
+ ICALL2 QUEUE,I-SLUG
+?CND7: ICALL1 YOU-CLIMB-UP
+ RETURN LEVEL2A
+
+
+ .FUNCT LEVEL2-UP,RM,X
+ FSET? LEVEL3A,TOUCHED /?CND1
+ FSET LEVEL3A,TOUCHED
+ ICALL NEW-EXIT?,LEVEL3A,P?DOWN,897,HERE
+ ICALL2 SCRAMBLE,TOWER3-ROOMS
+?PRG3: RANDOM 4
+ GETB TOWER3-ROOMS,STACK >RM
+ EQUAL? RM,LEVEL3A /?PRG3
+ ICALL NEXT-SCROLL?,DESCRIBE-TOWER-SCROLL,RM
+?CND1: ICALL1 YOU-CLIMB-UP
+ RETURN LEVEL3A
+
+
+ .FUNCT LEVEL3-UP
+ FSET? TOWER-TOP,TOUCHED /?CND1
+ FSET TOWER-TOP,TOUCHED
+ ICALL NEW-EXIT?,TOWER-TOP,P?DOWN,897,HERE
+ ICALL NEW-EXIT?,HERE,P?UP,641,TOWER-TOP
+?CND1: ICALL1 YOU-CLIMB-UP
+ RETURN TOWER-TOP
+
+
+ .FUNCT MENTION-TOWER-STEPS?
+ CALL GLOBAL-IN?,HERE,TOWER-STEPS
+ ZERO? STACK /?CND1
+ PRINTI ". A narrow flight of steps winds upward"
+?CND1: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT SAY-EXIT,TBL,DIR,XDIR
+ RANDOM 8
+ SUB STACK,1 >XDIR
+ SET 'DIR,XDIR
+?PRG1: IGRTR? 'DIR,I-NW \?CND3
+ SET 'DIR,I-NORTH
+?CND3: GETB PDIR-LIST,DIR
+ GETP HERE,STACK >TBL
+ ZERO? TBL /?PRG1
+ GET TBL,XTYPE
+ BAND STACK,65280
+ EQUAL? STACK,CONNECT \?PRG1
+ GET DIR-NAMES,DIR
+ PRINTB STACK
+ RFALSE
+
+
+ .FUNCT LEVEL1B-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Uneven rays of daylight seep in through walls crumbling with age"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ CALL2 LAST-ROOM-IN?,TOWER1-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL1B,P?UP,1153,LEVEL1-UP
+ ICALL REPLACE-GLOBAL?,LEVEL1B,NULL,TOWER-STEPS
+ RFALSE
+
+
+ .FUNCT LEVEL1C-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The dusty light streaming in from the "
+ ICALL1 SAY-EXIT
+ PRINTI " only deepens the gloom of this forgotten chamber"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ CALL2 LAST-ROOM-IN?,TOWER1-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL1C,P?UP,1153,LEVEL1-UP
+ ICALL REPLACE-GLOBAL?,LEVEL1C,NULL,TOWER-STEPS
+ RFALSE
+
+
+ .FUNCT LEVEL1D-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Rotten floorboards creak with age as you tiptoe across them"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ CALL2 LAST-ROOM-IN?,TOWER1-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL1D,P?UP,1153,LEVEL1-UP
+ ICALL REPLACE-GLOBAL?,LEVEL1D,NULL,TOWER-STEPS
+ RFALSE
+
+
+ .FUNCT LEVEL2A-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "The steps winding downward are choked in a tangle of shadows and useless debris."
+
+
+ .FUNCT LEVEL2B-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The faint smudge of light from the "
+ ICALL1 SAY-EXIT
+ PRINTI " is barely enough to light your way"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ CALL2 LAST-ROOM-IN?,TOWER2-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL2B,P?UP,1153,LEVEL2-UP
+ ICALL REPLACE-GLOBAL?,LEVEL2B,NULL,TOWER-STEPS
+ RFALSE
+
+
+ .FUNCT LEVEL2C-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "You duck low to avoid the sagging, wormy timbers overhead"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ CALL2 LAST-ROOM-IN?,TOWER2-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL2C,P?UP,1153,LEVEL2-UP
+ ICALL REPLACE-GLOBAL?,LEVEL2C,NULL,TOWER-STEPS
+ RFALSE
+?CCL5: EQUAL? CONTEXT,M-END \FALSE
+ RANDOM 100
+ LESS? 10,STACK /FALSE
+ PRINT TAB
+ PRINTI "You bang your head on "
+ ICALL2 THE-PRINT,CEILING
+ PRINTI ". Oof!"
+ CRLF
+ ICALL2 UPDATE-STAT,-4
+ RFALSE
+
+
+ .FUNCT LEVEL2D-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Planes of daylight slice the air through cracks in the walls and ceiling"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ CALL2 LAST-ROOM-IN?,TOWER2-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL2D,P?UP,1153,LEVEL2-UP
+ ICALL REPLACE-GLOBAL?,LEVEL2D,NULL,TOWER-STEPS
+ RFALSE
+
+
+ .FUNCT LEVEL3A-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "Deep, inky shadows obscure the stairwell winding downward."
+
+
+ .FUNCT LEVEL3B-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The sound of your footsteps is dampened by the fine dust coating every inch of this dimly lit chamber"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ CALL2 LAST-ROOM-IN?,TOWER3-ROOMS
+ ZERO? STACK /?CND6
+ ICALL NEW-EXIT?,LEVEL3B,P?UP,1153,LEVEL3-UP
+ ICALL REPLACE-GLOBAL?,LEVEL3B,NULL,TOWER-STEPS
+?CND6: IN? DUST,LEVEL3B \FALSE
+ SET 'P-IT-OBJECT,DUST
+ SET 'P-THEM-OBJECT,DUST
+ GRTR? BUNNIES,89 \FALSE
+ PRINTI "A cloud of dust billows up as you enter!"
+ CRLF
+ ZERO? VERBOSITY /FALSE
+ CRLF
+ RFALSE
+?CCL5: EQUAL? CONTEXT,M-ENTERED \?CCL15
+ IN? DUST,HERE \FALSE
+ SET 'LAST-MONSTER,DUST
+ RFALSE
+?CCL15: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,FALSE-VALUE,P?UP,P?DOWN /FALSE
+ IN? DUST,HERE \FALSE
+ FCLEAR DUST,SEEN
+ GRTR? BUNNIES,89 \?CND23
+ PRINT STR?620
+ PRINTD DUST
+ PRINT PERIOD
+ RETURN 2
+?CND23: PRINTI "You edge your way past "
+ ICALL2 THE-PRINT,DUST
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT LEVEL3C-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Streaks of light from the "
+ ICALL1 SAY-EXIT
+ PRINTI " exit fall in jagged patches across "
+ ICALL2 THE-PRINT,FLOOR
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ CALL2 LAST-ROOM-IN?,TOWER3-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL3C,P?UP,1153,LEVEL3-UP
+ ICALL REPLACE-GLOBAL?,LEVEL3C,NULL,TOWER-STEPS
+ RFALSE
+
+
+ .FUNCT LEVEL3D-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINT YOU-HEAR
+ PRINTI "the creak of sagging timber as "
+ ICALL2 THE-PRINT,FLOOR
+ PRINTI " struggles to bear your weight"
+ ICALL1 MENTION-TOWER-STEPS?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ CALL2 LAST-ROOM-IN?,TOWER3-ROOMS
+ ZERO? STACK /FALSE
+ ICALL NEW-EXIT?,LEVEL3D,P?UP,1153,LEVEL3-UP
+ ICALL REPLACE-GLOBAL?,LEVEL3D,NULL,TOWER-STEPS
+ RFALSE
+
+
+ .FUNCT TOWER-TOP-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Nothing remains of the stormproof panes that once enclosed this circular chamber on every side. The floor is littered with glass and debris"
+ CALL2 SEE-ANYTHING-IN?,LAMPHOUSE
+ ZERO? STACK /?CND4
+ PRINTI ", in which you also see "
+ ICALL2 CONTENTS,LAMPHOUSE
+?CND4: PRINT PTAB
+ PRINTR "A flight of steps descends into shadow."
+?CCL3: EQUAL? CONTEXT,M-ENTERED \FALSE
+ IN? DORN,TOWER-TOP \FALSE
+ ICALL2 SEE-CHARACTER,DORN
+ RFALSE
+
+
+ .FUNCT ENTER-GONDOLA
+ IN? GONDOLA,AT-DOCK /?CND1
+ ICALL2 CTHE-PRINT,DGONDOLA
+ PRINTI " isn't back yet."
+ CRLF
+ RFALSE
+?CND1: ICALL PERFORM,V?ENTER,GONDOLA
+ RFALSE
+
+
+ .FUNCT AT-DOCK-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Aggressive ad campaigns and the deregulation of ZIFMIA spells have made Miznia's Jungle Skyway the fifth biggest tourist attraction in the Southlands. Passengers "
+ IN? GONDOLA,HERE \?CND4
+ PRINTI "are "
+ LESS? GON,2 \?CCL8
+ PRINTI "streaming out of "
+ JUMP ?CND6
+?CCL8: PRINTI "crowding for a space in "
+?CND6: ICALL2 THE-PRINT,GONDOLA
+ IN? PLAYER,GONDOLA /?CND9
+ PRINTI " docked nearby"
+?CND9: PRINT PERIOD
+ RTRUE
+?CND4: PRINTI "crowd around the entry gate, "
+ EQUAL? GON,4 \?CND11
+ PRINTI "watching a "
+ PRINTD GONDOLA
+ PRINTR " glide away into the haze."
+?CND11: PRINTI "waiting for the "
+ EQUAL? GON,14 \?CND13
+ PRINTD GONDOLA
+ PRINTI " now "
+ PRINT STR?586
+ RTRUE
+?CND13: PRINTI "next "
+ PRINTD GONDOLA
+ PRINTR " to appear."
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL16
+ FSET? DGONDOLA,SEEN /?CND17
+ FSET DGONDOLA,SEEN
+ ICALL2 QUEUE,I-GONDOLA
+?CND17: IN? GONDOLA,AT-DOCK \?CND19
+ SET 'P-IT-OBJECT,GONDOLA
+ ICALL2 SEE-CHARACTER,CONDUCTOR
+?CND19: MOVE PASSENGERS,AT-DOCK
+ SET 'P-THEM-OBJECT,PASSENGERS
+ RFALSE
+?CCL16: EQUAL? CONTEXT,M-EXIT \FALSE
+ MOVE PASSENGERS,GONDOLA
+ RFALSE
+
+
+ .FUNCT UNDERS-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Steel girders rise high above the treetops of the surrounding jungle"
+ CALL GLOBAL-IN?,HERE,DGONDOLA
+ ZERO? STACK /?CND4
+ PRINTI ". Peering upward, you notice "
+ ICALL2 PRINTA,DGONDOLA
+ PRINTI " gliding overhead"
+?CND4: PRINT PTAB
+ PRINTR "A skinny ladder leads upward."
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?UP \FALSE
+ ZERO? AUTO /?CND10
+ ICALL1 BMODE-OFF
+?CND10: PRINTR "You scoot up the ladder."
+
+
+ .FUNCT SUPPORTS-IN
+ IN? PLAYER,GONDOLA \?CCL3
+ ICALL PERFORM,V?EXIT,GONDOLA
+ RFALSE
+?CCL3: IN? GONDOLA,HERE \?CCL5
+ ICALL PERFORM,V?ENTER,GONDOLA
+ RFALSE
+?CCL5: CALL GLOBAL-IN?,HERE,DGONDOLA
+ ZERO? STACK /?CND1
+ ICALL PERFORM,V?ENTER,DGONDOLA
+ RFALSE
+?CND1: ICALL1 V-WALK-AROUND
+ RFALSE
+
+
+ .FUNCT DESCRIBE-TOPS,OBJ
+ IN? PLAYER,GONDOLA \?CND1
+ PRINTI "Beside Tower"
+ RTRUE
+?CND1: PRINTI "Maintenance Platform"
+ RTRUE
+
+
+ .FUNCT TOPS-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ IN? PLAYER,GONDOLA \?CND4
+ PRINT CYOUR
+ PRINTD GONDOLA
+ PRINTI " is passing a few feet away from a Skyway support tower. A small maintenance "
+ PRINTD PLATFORM
+ PRINTR " is enclosed within the steel girders; beside it, you notice a skinny ladder leading down towards the treetops."
+?CND4: PRINTI "A spiderweb of structural steel rises above the treetops, tapering up to this narrow vantage near the top. The topmost rungs of a skinny ladder are within your reach."
+ CRLF
+ IN? GONDOLA,HERE /?CCL7
+ CALL GLOBAL-IN?,HERE,DGONDOLA
+ ZERO? STACK /TRUE
+?CCL7: PRINT TAB
+ ICALL2 PRINTCA,DGONDOLA
+ PRINTI " is gliding "
+ IN? GONDOLA,HERE \?CCL12
+ PRINTI "close by "
+ JUMP ?CND10
+?CCL12: EQUAL? GON,11,8,5 \?CCL14
+ PRINTI "towards "
+ JUMP ?CND10
+?CCL14: PRINTI "away from "
+?CND10: ICALL2 THE-PRINT,PLATFORM
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL16
+ FSET? DGONDOLA,SEEN /FALSE
+ FSET DGONDOLA,SEEN
+ ICALL2 QUEUE,I-GONDOLA
+ RFALSE
+?CCL16: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?DOWN \FALSE
+ IN? PLAYER,GONDOLA \?CND23
+ ICALL YOUD-HAVE-TO,STR?717,GONDOLA
+ RETURN 2
+?CND23: PRINTR "You scramble down the ladder."
+
+
+ .FUNCT JUN0-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A strip of dry path winds alongside a pool of "
+ PRINTD QUICKSAND
+ CALL2 SEE-ANYTHING-IN?,QUICKSAND
+ ZERO? STACK /?CND4
+ PRINTI ". "
+ PRINT YOU-SEE
+ ICALL2 CONTENTS,QUICKSAND
+ PRINTI " stuck into the wet, gritty surface"
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL7
+ FSET? MAMA,NODESC \FALSE
+ FCLEAR MAMA,NODESC
+ ICALL2 QUEUE,I-BABY
+ ICALL2 QUEUE,I-MAMA
+ RFALSE
+?CCL7: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,FALSE-VALUE,P?UP /FALSE
+ IN? BABY,QUICKSAND \FALSE
+ FSET BABY,SEEN
+ ICALL2 CTHE-PRINT,BABY
+ PRINTR " bellows mournfully as you walk away."
+
+
+ .FUNCT WORM-ROOM-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL2 CTHE-PRINT,GROUND
+ PRINTR " here is concealed beneath a growth of fungus, green and squishy."
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ FSET? WORM,MONSTER /FALSE
+ ICALL2 START-WORM,STR?718
+ RETURN 2
+
+
+ .FUNCT JUNGLE-ROOM-F,CONTEXT,TBL
+ EQUAL? CONTEXT,M-ENTERING \FALSE
+ FSET? HERE,TOUCHED /FALSE
+ FSET? CROCO,SEEN /?CCL7
+ CALL LAST-ROOM-IN?,JUNGLE-ROOMS,3
+ ZERO? STACK /?CCL7
+ FSET CROCO,SEEN
+ PUTP HERE,P?ACTION,IDOL-ROOM-F
+ PUTP HERE,P?SDESC,DESCRIBE-IDOL-ROOM
+ MOVE CROCO,HERE
+ MOVE MAW,HERE
+ ICALL NEW-EXIT?,HERE,P?UP,1153,ENTER-CROCO
+ ICALL NEW-EXIT?,HERE,P?IN,1153,ENTER-CROCO
+ ICALL NEW-EXIT?,HERE,P?OUT,1153,EXIT-CROCO
+ ICALL1 CLEAR-MAW-EXITS
+ RFALSE
+?CCL7: CALL2 PICK-ONE,JUNGLE-DESCS >TBL
+ GET TBL,0
+ PUTP HERE,P?SDESC,STACK
+ GET TBL,1
+ PUTP HERE,P?ACTION,STACK
+ RFALSE
+
+
+ .FUNCT CLEAR-MAW-EXITS,X
+ LOC CROCO >X
+ PUTP X,P?BELOW,0
+ PUTP X,P?OVERHEAD,MAW
+ ICALL NEW-EXIT?,X,P?DOWN,SORRY-EXIT,NOT-IN-MAW
+ RFALSE
+
+
+ .FUNCT DESCRIBE-IDOL-ROOM,OBJ
+ PRINTI "Idol"
+ RTRUE
+
+
+ .FUNCT IDOL-ROOM-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "A stone idol, carved in the likeness of a giant crocodile, stands in a clearing"
+ CALL2 SEE-ANYTHING-IN?,MAW
+ ZERO? STACK /?CND4
+ PRINTI ". "
+ PRINT YOU-SEE
+ ICALL2 CONTENTS,MAW
+ PRINTI " in its gaping maw"
+?CND4: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT NOT-IN-MAW
+ PRINTI "You're not in the maw."
+ CRLF
+ RFALSE
+
+
+ .FUNCT DESCRIBE-JD0,OBJ
+ PRINTI "Underbrush"
+ RTRUE
+
+
+ .FUNCT JD0-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "Unseen creatures scurry out of your path as you struggle through the damp underbrush."
+
+
+ .FUNCT DESCRIBE-JD1,OBJ
+ PRINTI "Birdcries"
+ RTRUE
+
+
+ .FUNCT JD1-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "The unnerving cries of exotic birds echo in the treetops."
+
+
+ .FUNCT DESCRIBE-JD2,OBJ
+ PRINTI "Creepers"
+ RTRUE
+
+
+ .FUNCT JD2-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "A slimy tangle of vines and creepers dangles high overhead, swinging to and fro in the humid breeze."
+
+
+ .FUNCT DESCRIBE-JD3,OBJ
+ PRINTI "Ferns"
+ RTRUE
+
+
+ .FUNCT JD3-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "A natural canopy of ferns mutes the sunlight to a cool, emerald dusk."
+
+
+ .FUNCT OVER-JUNGLE-F,CONTEXT,X,Y
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ SET 'X,W?WEST
+ EQUAL? GON,7,8 \?CCL6
+ SET 'X,W?SOUTH
+ JUMP ?CND4
+?CCL6: EQUAL? GON,10,11 \?CCL8
+ SET 'X,W?EAST
+ JUMP ?CND4
+?CCL8: EQUAL? GON,13,14 \?CND4
+ SET 'X,W?NORTH
+?CND4: PRINT CYOUR
+ PRINTD GONDOLA
+ PRINTI " is gliding "
+ PRINTB X
+ PRINTI ", high over the lush jungles and sparkling rivers of Miznia. "
+ EQUAL? GON,4 \?CCL12
+ ICALL2 RECEDING,DOCK
+ RTRUE
+?CCL12: EQUAL? GON,5 \?CCL14
+ ICALL2 EMERGING,SUPPORT
+ RTRUE
+?CCL14: EQUAL? GON,8,11 \?CCL16
+ ICALL EMERGING,SUPPORT,STR?720
+ RTRUE
+?CCL16: EQUAL? GON,14 \?CND10
+ ICALL2 EMERGING,DOCK
+ RTRUE
+?CND10: ICALL2 RECEDING,SUPPORT
+ RTRUE
+
+
+ .FUNCT EMERGING,OBJ,X
+ ASSIGNED? 'X \?CCL3
+ PRINTI "Another "
+ JUMP ?CND1
+?CCL3: PRINT XTHE
+?CND1: ICALL2 DPRINT,OBJ
+ PRINTR " is emerging from the haze ahead."
+
+
+ .FUNCT RECEDING,OBJ
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTR " is receding into the haze."
+
+
+ .FUNCT AT-FALLS-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A dazzling cascade roars down from a ledge overhead, fed by the snowy peaks rising to the south"
+ FSET? IN-THRIFF,MUNGED \?CND4
+ PRINTI ". The trail leading "
+ PRINTB W?SOUTHWEST
+ PRINTI " is choked with "
+ PRINTD XTREES
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ EQUAL? P-WALK-DIR,P?SOUTH \FALSE
+ ZERO? AUTO /FALSE
+ ICALL1 BMODE-OFF
+ RFALSE
+
+
+ .FUNCT IN-PASTURE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "This windswept pasture is dotted with ancient oaks. A snowy trail winds upward"
+ FSET? IN-THRIFF,MUNGED \?CND4
+ PRINTI ", and a solid wall of "
+ PRINTD XTREES
+ PRINTI " lies to the "
+ PRINTB W?SOUTHEAST
+?CND4: PRINT PERIOD
+ ICALL1 MENTION-GLYPH?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL7
+ IN? HUNTERS,IN-PASTURE \?CND8
+ FSET HUNTERS,SEEN
+ ICALL2 SEE-CHARACTER,HUNTERS
+?CND8: ICALL2 QUEUE,I-HUNTERS
+ RFALSE
+?CCL7: EQUAL? CONTEXT,M-EXIT \?CCL11
+ IN? MINX,OAK \?CND12
+ FSET? MINX,LIVING \?CND12
+ PRINTI "A loud voice makes you hesitate."
+ CRLF
+ RETURN 2
+?CND12: ICALL2 DEQUEUE,I-HUNTERS
+ EQUAL? P-WALK-DIR,P?UP \?CND18
+ SET 'P-WALK-DIR,P?WEST
+?CND18: IN? HUNTER,IN-PASTURE \FALSE
+ ICALL1 ABORT-HUNT
+ ICALL2 CTHE-PRINT,HUNTER
+ PRINTR " watches you leave."
+?CCL11: EQUAL? CONTEXT,M-END \FALSE
+ IN? HUNTER,IN-PASTURE \FALSE
+ EQUAL? WINNER,PLAYER \FALSE
+ EQUAL? PRSA,V?LISTEN,V?SMELL /FALSE
+ EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR,V?TELL-ABOUT \?CCL28
+ EQUAL? PRSI,OAK,MINX /FALSE
+?CCL28: EQUAL? OAK,PRSO,PRSI \?CCL32
+ ICALL2 DRAW-ATTENTION-TO,OAK
+ RTRUE
+?CCL32: EQUAL? MINX,PRSO,PRSI \FALSE
+ ICALL2 DRAW-ATTENTION-TO,MINX
+ RTRUE
+
+
+ .FUNCT DRAW-ATTENTION-TO,OBJ
+ PRINT TAB
+ PRINTI "Your action draws "
+ ICALL2 THE-PRINT,HUNTER
+ PRINTI "'s attention to "
+ ICALL2 THE-PRINT,OBJ
+ PRINT PERIOD
+ ICALL1 HUNTER-SEES-MINX
+ RTRUE
+
+
+ .FUNCT HUNTER-SEES-MINX
+ ICALL1 ABORT-HUNT
+ PRINT TAB
+ PRINTI """Aha!"" he cries, plucking the minx out from behind the oak by the scruff of her neck. ""Thought ye'd get away from me, did ye? It's back home I'll be bringin' you, for a whippin' ye won't soon forget!""
+ The last thing you hear is a tearful cry of ""Minx!"" as "
+ ICALL2 THE-PRINT,HUNTER
+ PRINTR " stalks away with his quarry."
+
+
+ .FUNCT ABORT-HUNT
+ ICALL2 DEQUEUE,I-HUNT
+ REMOVE HUNTER
+ SET 'P-HIM-OBJECT,NOT-HERE-OBJECT
+ REMOVE MINX
+ SET 'P-HER-OBJECT,NOT-HERE-OBJECT
+ SET 'QCONTEXT,FALSE-VALUE
+ SET 'QCONTEXT-ROOM,FALSE-VALUE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ RFALSE
+
+
+ .FUNCT CANT-ENTER-WALL,X
+ EQUAL? P-WALK-DIR,P?IN,P?OUT \?CND1
+ PRINT CANT
+ PRINTI "see anywhere to go "
+ SET 'X,W?OUT
+ EQUAL? P-WALK-DIR,FALSE-VALUE,P?IN \?CND3
+ SET 'X,W?IN
+?CND3: PRINTB X
+ PRINT PERIOD
+ RFALSE
+?CND1: GETP HERE,P?EXIT-STR >X
+ ZERO? X /?CND5
+ PRINT X
+ CRLF
+ RFALSE
+?CND5: PRINT STR?721
+ CRLF
+ RFALSE
+
+
+ .FUNCT SE-WALL-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A sunlit wall of stone rises above the snow-dusted ground. Gazing farther up the mountainside, you see the parapets of a mighty "
+ PRINTD CASTLE
+ PRINT PERIOD
+ FSET? SWALL,SEEN \?CND4
+ PRINT TAB
+ ICALL2 SEE-DOORLIKE,SWALL
+ PRINTI "wall."
+ CRLF
+?CND4: ICALL1 MENTION-GLYPH?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL7
+ FSET? SWALL,SEEN \FALSE
+ SET 'P-IT-OBJECT,SWALL
+ RFALSE
+?CCL7: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?IN \FALSE
+ FSET? SWALL,OPENED \FALSE
+ SET 'P-WALK-DIR,P?NW
+ RFALSE
+
+
+ .FUNCT SE-CAVE-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL NOTE-WALL,SWALL,W?SOUTHEAST
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ IN? GRUE,HERE \?CND6
+ REMOVE GRUE
+?CND6: FSET? SE-CAVE,SEEN /FALSE
+ CALL1 SETUP-CAVES?
+ ZERO? STACK \FALSE
+ RETURN 2
+?CCL5: EQUAL? CONTEXT,M-ENTERED \FALSE
+ FSET? SWALL,SEEN \?CND15
+ SET 'P-IT-OBJECT,SWALL
+?CND15: FSET? LANTERN,LIGHTED \FALSE
+ ICALL1 NO-LANTERN-HERE?
+ RFALSE
+
+
+ .FUNCT CHUCKLE
+ PRINT TAB
+ EQUAL? HERE,IN-LAIR \?CND1
+ FSET URGRUE,SEEN
+ PRINTI """Heh, heh, heh,"" chuckles "
+ ICALL2 THE-PRINT,URGRUE
+ PRINT PERIOD
+ RTRUE
+?CND1: PRINTR "An evil chuckle echoes through the caverns."
+
+
+ .FUNCT NOTE-WALL,OBJ,WRD
+ PRINTI "This "
+ FSET? OBJ,OPENED /?CND1
+ PRINTI "dead-end "
+?CND1: PRINTI "passage grows wider as it bends "
+ PRINTB WRD
+ PRINTI ", ending at a flat wall of rock"
+ FSET? OBJ,SEEN \?CND3
+ PRINTI ". "
+ FSET? OBJ,OPENED \?CCL7
+ PRINTI "Daylight "
+ EQUAL? HERE,SE-CAVE \?CCL10
+ PRINTI "streams in from "
+ JUMP ?CND8
+?CCL10: PRINTI "can be seen beyond "
+?CND8: PRINTI "an "
+ PRINTB W?OPENING
+ JUMP ?CND5
+?CCL7: PRINT STR?723
+ PRINTB W?OUTLINE
+ PRINTI " is visible"
+?CND5: PRINTI " therein"
+?CND3: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT NE-CAVE-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL NOTE-WALL,NWALL,W?NORTHWEST
+ ICALL1 MENTION-BEAM?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ IN? GRUE,HERE \?CND6
+ REMOVE GRUE
+?CND6: FSET? NE-CAVE,SEEN /FALSE
+ CALL1 SETUP-CAVES?
+ ZERO? STACK \FALSE
+ RETURN 2
+?CCL5: EQUAL? CONTEXT,M-ENTERED \FALSE
+ FSET? NWALL,SEEN \?CND15
+ SET 'P-IT-OBJECT,NWALL
+?CND15: FSET? LANTERN,LIGHTED \FALSE
+ ICALL1 NO-LANTERN-HERE?
+ RFALSE
+
+
+ .FUNCT NE-WALL-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The air is cool here, beneath the shadow of a towering wall of rock"
+ FSET? NWALL,SEEN \?CND4
+ PRINTI ". "
+ ICALL2 SEE-DOORLIKE,NWALL
+ PRINTB W?WALL
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERED \?CCL7
+ FSET? NWALL,SEEN \FALSE
+ SET 'P-IT-OBJECT,NWALL
+ RFALSE
+?CCL7: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?IN \FALSE
+ FSET? NWALL,OPENED \FALSE
+ SET 'P-WALK-DIR,P?SE
+ RFALSE
+
+
+ .FUNCT CAVE0-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "Cold, clammy walls of rock recede deep into the shadows."
+ CRLF
+?CND1: CALL2 MOVE-GRUE?,CONTEXT
+ RSTACK
+
+
+ .FUNCT CAVE1-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "The steady drip of invisible moisture echoes in the passageway."
+ CRLF
+?CND1: CALL2 MOVE-GRUE?,CONTEXT
+ RSTACK
+
+
+ .FUNCT CAVE2-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "The air here is pungent with subterranean vapors."
+ CRLF
+?CND1: CALL2 MOVE-GRUE?,CONTEXT
+ RSTACK
+
+
+ .FUNCT CAVE3-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "Ebony walls of rock deepen the shadows on every side."
+ CRLF
+?CND1: CALL2 MOVE-GRUE?,CONTEXT
+ RSTACK
+
+
+ .FUNCT CAVE4-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "Only a few feet separate the walls of this stultifying passage."
+ CRLF
+?CND1: CALL2 MOVE-GRUE?,CONTEXT
+ RSTACK
+
+
+ .FUNCT CAVE6-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "The close, stale air in this chamber makes breathing difficult."
+ CRLF
+?CND1: CALL2 MOVE-GRUE?,CONTEXT
+ RSTACK
+
+
+ .FUNCT CAVE7-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "The walls of this shallow chamber are coated with a thick blanket of moss, fed by unseen trickles of water."
+ CRLF
+?CND1: CALL2 MOVE-GRUE?,CONTEXT
+ RSTACK
+
+
+ .FUNCT MOVE-GRUE?,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL1 MENTION-BEAM?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ IN? GRUE,HERE \FALSE
+ REMOVE GRUE
+ RTRUE
+
+
+ .FUNCT MENTION-BEAM?,DIR,TBL
+ GETP HERE,P?MIRROR-OBJ
+ EQUAL? STACK,NO-MIRROR \FALSE
+ GETP HERE,P?BEAM-DIR >DIR
+ EQUAL? DIR,NO-MIRROR /FALSE
+ PRINT STR?724
+ PRINTI "shines in from the "
+ GET DIR-NAMES,DIR
+ PRINTB STACK
+ ADD DIR,4 >DIR
+ GRTR? DIR,I-NW \?CND5
+ SUB DIR,8 >DIR
+?CND5: GETB PDIR-LIST,DIR
+ GETP HERE,STACK >TBL
+ ZERO? TBL /?CND7
+ GET TBL,XTYPE
+ BAND STACK,65280
+ EQUAL? STACK,CONNECT \?CND7
+ PRINTI ", and disappears to the "
+ GET DIR-NAMES,DIR
+ PRINTB STACK
+?CND7: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT ON-PIKE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL2 SEE-FIELDS,W?WEST
+ PRINT PTAB
+ PRINTI "A billboard stands in a "
+ PRINTD WEEDS
+ CALL2 SEE-ANYTHING-IN?,WEEDS
+ ZERO? STACK /?CND4
+ PRINTI ". Around it you see "
+ ICALL2 CONTENTS,WEEDS
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?WEST \FALSE
+ CALL1 ENTER-PLAIN?
+ RSTACK
+
+
+ .FUNCT XROADS-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL2 SEE-FIELDS,W?EAST
+ PRINTI ". But the snow-capped peaks of Southern Mithicus are bright with sunshine"
+ PRINT PTAB
+ PRINTI "The outskirts of Gurth City"
+ PRINT STR?683
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ EQUAL? P-WALK-DIR,P?WEST \FALSE
+ ZERO? AUTO /FALSE
+ ICALL1 BMODE-OFF
+ RFALSE
+?CCL5: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?EAST \?CCL14
+ CALL1 ENTER-PLAIN?
+ RSTACK
+?CCL14: EQUAL? P-WALK-DIR,P?NORTH \FALSE
+ ICALL1 ENTER-CITY
+ RTRUE
+
+
+ .FUNCT ENTER-CITY
+ CALL2 PICK-NEXT,CITY-ENTRIES
+ PRINT STACK
+ PRINTR " as you cross the city limits."
+
+
+ .FUNCT SEE-FIELDS,WRD
+ PRINTI "Gray fields extend to the "
+ PRINTB WRD
+ PRINT STR?725
+ PRINTI ", under "
+ PRINT STR?726
+ RTRUE
+
+
+ .FUNCT ENTER-PLAIN?,X,Y,L,LL
+ LOC GOBLET >L
+ ICALL1 KERBLAM
+ PRINTI "Forks of "
+ PRINTB W?LIGHTNING
+ PRINTI " dance across your path"
+ FSET? ROSE-ROOM,LOCATION /?CND1
+ PRINTI ", and the clouds boom with laughter"
+?CND1: EQUAL? L,PLAYER /?CTR4
+ ZERO? L /?CCL5
+ IN? L,PLAYER \?CCL5
+ CALL2 SEE-INSIDE?,L
+ ZERO? STACK /?CCL5
+?CTR4: FSET? ROSE-ROOM,LOCATION \?CCL13
+ PRINTI ", answered by "
+ ICALL2 THE-PRINT,GOBLET
+ EQUAL? L,PLAYER /?CND11
+ ICALL2 ON-IN,L
+ JUMP ?CND11
+?CCL13: PRINTI ". But "
+ ICALL2 THE-PRINT,GOBLET
+ EQUAL? L,PLAYER /?CND16
+ ICALL2 ON-IN,L
+?CND16: PRINTI " emits an answering flash, and the threat from the sky subsides"
+?CND11: PRINT PTAB
+ LOC MINX >L
+ ZERO? L /?CND20
+ FSET? MINX,LIVING \?CND20
+ LOC L >LL
+ EQUAL? PLAYER,L,LL \?CCL26
+ MOVE MINX,HERE
+ ICALL2 CTHE-PRINT,MINX
+ PRINTI " struggles out of "
+ EQUAL? L,PLAYER \?CCL29
+ PRINTI "your arms"
+ JUMP ?CND27
+?CCL5: FSET IMPS,MUNGED
+ PRINT PERIOD
+ RETURN 2
+?CCL29: ICALL2 THE-PRINT,L
+?CND27: PRINTI " and"
+ PRINT STR?727
+ JUMP ?CND20
+?CCL26: EQUAL? HERE,L \?CND20
+ ICALL2 CTHE-PRINT,MINX
+ PRINT STR?727
+?CND20: FSET CORBIES,SEEN
+ ICALL2 QUEUE,I-CORBIES
+ FSET? ROSE-ROOM,LOCATION /?CND31
+ FSET ROSE-ROOM,LOCATION
+ PRINTI "As you set out across "
+ ICALL2 THE-PRINT,PRAIRIE
+ PRINTR ", the colors around you seem to smudge and fade. Soon the entire landscape is rendered in shades of gray."
+?CND31: PRINTR "All color drains from the landscape."
+
+
+ .FUNCT PLAIN-CONTEXT?,CONTEXT,TBL,X
+ EQUAL? CONTEXT,M-ENTERING \?CCL3
+ FSET? HERE,TOUCHED /?CND4
+ DLESS? 'PLAIN-COUNT,1 \?CCL8
+ SET 'FARM-ROOM,HERE
+ ICALL NEW-EXIT?,FARM-ROOM,P?SOUTH,SORRY-EXIT,STR?728,FALSE-VALUE
+ FSET? FARMHOUSE,NODESC /?CND4
+ ICALL1 DROP-FARM
+ JUMP ?CND4
+?CCL8: EQUAL? PLAIN-COUNT,5 \?CCL12
+ MOVE SCARE1,HERE
+ JUMP ?CND4
+?CCL12: EQUAL? PLAIN-COUNT,4 \?CCL14
+ MOVE CLOVER,HERE
+ JUMP ?CND4
+?CCL14: EQUAL? PLAIN-COUNT,3 \?CCL16
+ MOVE SCARE2,HERE
+ JUMP ?CND4
+?CCL16: EQUAL? PLAIN-COUNT,2 \?CCL18
+ ICALL NEXT-SCROLL?,DESCRIBE-PLAIN-SCROLL,HERE
+ JUMP ?CND4
+?CCL18: EQUAL? PLAIN-COUNT,1 \?CND4
+ MOVE SCARE3,HERE
+?CND4: FSET CORBIES,SEEN
+ FSET? FARMHOUSE,SEEN /FALSE
+ FSET? FARMHOUSE,NODESC /FALSE
+ EQUAL? HERE,FARM-ROOM \FALSE
+ SET 'STORM-TIMER,5
+ ICALL2 QUEUE,I-TWISTER
+ RFALSE
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ FSET? FARMHOUSE,SEEN /?CND26
+ FSET? FARMHOUSE,NODESC /?CND26
+ EQUAL? HERE,FARM-ROOM \?CND26
+ EQUAL? STORM-TIMER,3 \?CCL32
+ PRINTI "A sudden"
+ PRINT STR?707
+ RETURN 2
+?CCL32: EQUAL? P-WALK-DIR,P?SOUTH,P?IN \?CCL36
+ IN? TWISTER,HERE \FALSE
+ MOVE TWISTER,IN-FARM
+ PRINTR "You fight your way through the rising gale."
+?CCL36: EQUAL? STORM-TIMER,0,4,5 \?CCL40
+ SET 'STORM-TIMER,0
+ ICALL2 DEQUEUE,I-TWISTER
+?CND26: FSET? HERE,SEEN /?CND43
+ EQUAL? P-WALK-DIR,P?WEST \?PRD47
+ EQUAL? HERE,WEST-EXIT /?CCL45
+?PRD47: EQUAL? P-WALK-DIR,P?EAST \?CND43
+ EQUAL? HERE,EAST-EXIT \?CND43
+?CCL45: PRINTR "Color slowly returns to the landscape."
+?CCL40: SET 'P-WALK-DIR,FALSE-VALUE
+ PRINTI "The rising gale makes it impossible to walk that way."
+ CRLF
+ RETURN 2
+?CND43: EQUAL? P-WALK-DIR,P?NORTH \FALSE
+ GETP HERE,P-WALK-DIR >X
+ ZERO? X /FALSE
+ GET X,XROOM
+ EQUAL? STACK,ROSE-ROOM \FALSE
+ ZERO? BADKEY /?CND54
+ IN? BADKEY,PLAYER \?CND54
+ PRINTI "Screeching with fear, "
+ ICALL2 THE-PRINT,CORBIES
+ PRINTR " swoop out of your way."
+?CND54: PRINTI "A screeching wall of corbies blocks the way."
+ CRLF
+ RETURN 2
+
+
+ .FUNCT PLAIN0-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "The landscape is mottled with rocky terrain and windswept tracts of g"
+ ICALL1 GOLD-GRAY
+ PRINTI " grass"
+ ICALL1 MENTION-CORBIES
+ RTRUE
+?CND1: CALL2 PLAIN-CONTEXT?,CONTEXT
+ RSTACK
+
+
+ .FUNCT PLAIN1-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTC 71
+ ICALL1 GOLD-GRAY
+ PRINTI " hills of grass sweep back and forth in the storm-driven wind"
+ ICALL1 MENTION-CORBIES
+ RTRUE
+?CND1: CALL2 PLAIN-CONTEXT?,CONTEXT
+ RSTACK
+
+
+ .FUNCT PLAIN2-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "A sky black with thunderclouds looms over g"
+ ICALL1 GOLD-GRAY
+ PRINTI " acres of windswept grass"
+ ICALL1 MENTION-CORBIES
+ RTRUE
+?CND1: CALL2 PLAIN-CONTEXT?,CONTEXT
+ RSTACK
+
+
+ .FUNCT PLAIN3-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "Flashes of lightning light your path between the barren rocks and g"
+ ICALL1 GOLD-GRAY
+ PRINTI " patches of grass"
+ ICALL1 MENTION-CORBIES
+ RTRUE
+?CND1: CALL2 PLAIN-CONTEXT?,CONTEXT
+ RSTACK
+
+
+ .FUNCT PLAIN4-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "The windblown grass stretches in every "
+ PRINTD INTDIR
+ PRINT STR?725
+ ICALL1 MENTION-CORBIES
+ RTRUE
+?CND1: CALL2 PLAIN-CONTEXT?,CONTEXT
+ RSTACK
+
+
+ .FUNCT PLAIN5-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTC 71
+ ICALL1 GOLD-GRAY
+ PRINTI " tracts of windswept grass sway to and fro under the dark, stormy sky"
+ ICALL1 MENTION-CORBIES
+ RTRUE
+?CND1: CALL2 PLAIN-CONTEXT?,CONTEXT
+ RSTACK
+
+
+ .FUNCT DESCRIBE-FROTZEN,OBJ
+ PRINTI "The G"
+ ICALL1 GOLD-GRAY
+ PRINTI " Fields of Frotzen"
+ RTRUE
+
+
+ .FUNCT GOLD-GRAY
+ FSET? HERE,SEEN \?CND1
+ PRINTI "olden"
+ RTRUE
+?CND1: PRINTI "ray"
+ RTRUE
+
+
+ .FUNCT DESCRIBE-FARM-ROOM,OBJ
+ FSET? FARMHOUSE,SEEN \?CND1
+ PRINTI "Vacant Lot"
+ RTRUE
+?CND1: PRINTI "Farmyard"
+ RTRUE
+
+
+ .FUNCT MENTION-CORBIES,TBL
+ EQUAL? HERE,FARM-ROOM \?CND1
+ IN? TWISTER,HERE \?CND1
+ PRINT PERIOD
+ RFALSE
+?CND1: PRINTI ". "
+ RANDOM 100
+ LESS? 50,STACK /?CCL7
+ PRINTI "Corbies are "
+ JUMP ?CND5
+?CCL7: PRINTI "A flock of corbies is "
+?CND5: PRINTI "circling "
+ GETP HERE,P?NORTH >TBL
+ ZERO? TBL /?CND8
+ GET TBL,XROOM
+ EQUAL? STACK,ROSE-ROOM \?CND8
+ PRINTI "a point on "
+ ICALL2 THE-PRINT,GROUND
+ PRINTR " not far to the north."
+?CND8: PRINTR "in tight, menacing circles overhead."
+
+
+ .FUNCT DESCRIBE-ROSE-ROOM,OBJ
+ PRINTC 71
+ FSET? ROSE-ROOM,SEEN \?CCL3
+ PRINTI "olden"
+ JUMP ?CND1
+?CCL3: PRINTI "ray"
+?CND1: PRINTI " Grotto"
+ RTRUE
+
+
+ .FUNCT ROSE-ROOM-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "You're in the grotto."
+
+
+ .FUNCT DESCRIBE-IN-FARM,OBJ
+ PRINTD OBJ
+ PRINTI ", in a "
+ PRINTD TWISTER
+ RTRUE
+
+
+ .FUNCT IN-FARM-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "This tiny shack looks much as you'd expect after falling thousands of feet. No two of the splintered walls are parallel. The floor and ceiling are likewise skewed at crazy angles."
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?NORTH,P?OUT \FALSE
+ FSET? FARM-DOOR,OPENED \FALSE
+ IN? TWISTER,IN-FARM \?CCL12
+ FCLEAR FARM-DOOR,OPENED
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ ICALL2 ITALICIZE,STR?605
+ PRINTI "! The wind slams "
+ ICALL2 THE-PRINT,FARM-DOOR
+ PRINTI " in your face."
+ CRLF
+ RETURN 2
+?CCL12: IN? FCROWD,IN-FROON \FALSE
+ ICALL2 CTHE-PRINT,FCROWD
+ PRINTI " cheers louder as you leave "
+ ICALL2 THE-PRINT,FARMHOUSE
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT IN-GURTH-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTR "Both sides of this busy thoroughfare are crammed with stalls. Hawkers shout and gesticulate at the passersby, their hoarse obscenities mingling with the smell of sweat and burning food."
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ ZERO? P-WALK-DIR /FALSE
+ FSET? CAKE,NODESC \FALSE
+ FCLEAR CAKE,NODESC
+ MOVE CAKE,HERE
+ SET 'P-IT-OBJECT,CAKE
+ ICALL QUEUE,I-CAKE,3
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINTI """Oof!""
+ The street hawker you just bumped into glowers. ""Watch where I'm goin', will ya!"" You clumsily help to pick up her spilled wares; she stomps away without a word of thanks.
+ As you dust yourself off, you notice something"
+ PRINT STR?498
+ CRLF
+ RETURN 2
+
+
+ .FUNCT AT-MAGICK-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "This is the safer end of Gurth City's notorious market district. Shop windows are mostly unbroken here, and the cobblestones don't stick to your shoes"
+ PRINT PTAB
+ PRINTI "The gabled facade of Ye Olde Magick Shoppe lends an air of ersatz charm to the west side of the street"
+ FSET? MAGICK-DOOR,OPENED \?CND4
+ PRINTI ". The front door is wide open"
+?CND4: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT IN-MAGICK-F,CONTEXT,CNT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A lone black candle obscures the proportions of this windowless shop. The scent of tallow is strong, heightening the aura of arcane mystery"
+ PRINT PTAB
+ PRINTI "Your eyes are irresistibly drawn to a "
+ ICALL2 SHOP-DOOR,MAGICK-DOOR
+ ICALL2 LOOK-ON-CASE,ON-MCASE
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ FSET? MCASE,SEEN /?CND6
+ FSET MCASE,SEEN
+?PRG8: CALL2 NEXT-POTION?,MCASE
+ PUTP STACK,P?VALUE,24
+ IGRTR? 'CNT,2 \?PRG8
+?CND6: ICALL1 GET-OWOMAN-AND-CURTAIN
+ RFALSE
+
+
+ .FUNCT NGURTH-F,CONTEXT,X,WRD
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The path before you leads away from the "
+ EQUAL? P-WALK-DIR,P?NE \?CCL6
+ PRINT STR?730
+ SET 'WRD,W?SOUTH
+ SET 'X,STR?731
+ JUMP ?CND4
+?CCL6: PRINT STR?731
+ SET 'WRD,W?NORTH
+ SET 'X,STR?730
+?CND4: PRINTI ", meandering across the hills towards the "
+ PRINTB WRD
+ PRINTI "ernmost "
+ PRINT X
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?SOUTH \FALSE
+ ICALL1 ENTER-CITY
+ RTRUE
+
+
+ .FUNCT TWILIGHT-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "An ancient oak tree turns the day to twilight beneath the impressive sprawl of its branches"
+ ICALL2 LOOK-UNDER-OAK,OAK3
+ CRLF
+ RTRUE
+
+
+ .FUNCT FOREST-ROOM-F,CONTEXT,TBL
+ EQUAL? CONTEXT,M-ENTERING \FALSE
+ FSET? HERE,TOUCHED /FALSE
+ FSET? BOULDER,NODESC \?CCL7
+ CALL LAST-ROOM-IN?,FOREST-ROOMS,2
+ ZERO? STACK /?CCL7
+ FCLEAR BOULDER,NODESC
+ MOVE BOULDER,HERE
+ PUTP HERE,P?SDESC,DESCRIBE-POOL
+ PUTP HERE,P?ACTION,AT-POOL-F
+ RFALSE
+?CCL7: CALL2 PICK-ONE,FOREST-DESCS >TBL
+ GET TBL,0
+ PUTP HERE,P?SDESC,STACK
+ GET TBL,1
+ PUTP HERE,P?ACTION,STACK
+ RFALSE
+
+
+ .FUNCT OPEN-POOL
+ ICALL REPLACE-SYN?,BOULDER,W?YOUTH,W?ZZZP
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ SET 'P-WALK-DIR,FALSE-VALUE
+ SET 'OLD-HERE,FALSE-VALUE
+ MOVE POOL,HERE
+ SET 'P-IT-OBJECT,POOL
+ ICALL1 SETUP-POND-EXITS
+ PRINTR """Behold the Pool of Eternal Youth.""
+ The hollow voice fades in the air as beams of sunlight converge on the clearing, forming a shallow pool of radiance that flows and ripples like a golden liquid."
+
+
+ .FUNCT SETUP-POND-EXITS
+ ICALL NEW-EXIT?,HERE,P?IN,1153,ENTER-POOL
+ ICALL NEW-EXIT?,HERE,P?OUT,SORRY-EXIT,STR?732
+ RFALSE
+
+
+ .FUNCT DESCRIBE-POOL,OBJ
+ PRINTI "Clearing"
+ RTRUE
+
+
+ .FUNCT AT-POOL-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTI "Soft rays of sunlight filter down through the overhanging trees"
+ IN? POOL,HERE \?CND4
+ PRINTI ", forming a circular "
+ PRINTD POOL
+ IN? PLAYER,POOL /?CND4
+ CALL2 SEE-ANYTHING-IN?,POOL
+ ZERO? STACK /?CND4
+ PRINTI ". You can make out "
+ ICALL2 CONTENTS,POOL
+ PRINTI " enveloped within"
+?CND4: PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT DESCRIBE-F1,OBJ
+ PRINTI "Birches"
+ RTRUE
+
+
+ .FUNCT F1-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "A graceful stand of birches has taken root amid the tangle of roots and underbrush."
+
+
+ .FUNCT DESCRIBE-F2,OBJ
+ PRINTI "Catalpa"
+ RTRUE
+
+
+ .FUNCT F2-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "Your head brushes past the blossoms of a stately old catalpa tree, home of many an unseen songbird."
+
+
+ .FUNCT DESCRIBE-F3,OBJ
+ PRINTI "Pine Grove"
+ RTRUE
+
+
+ .FUNCT F3-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "A carpet of amber softens your footsteps between the rows of tall, sweet-smelling pines."
+
+
+ .FUNCT DESCRIBE-F4,OBJ
+ PRINTI "Eerie Copse"
+ RTRUE
+
+
+ .FUNCT F4-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "A nameless blight has twisted the surrounding elms into sinister forms that creak and groan in the dry breeze."
+
+
+ .FUNCT DESCRIBE-F5,OBJ
+ PRINTI "Willow"
+ RTRUE
+
+
+ .FUNCT F5-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "The limbs of an old, melancholy willow sway to and fro in the whispering breeze."
+
+
+ .FUNCT DESCRIBE-F6,OBJ
+ PRINTI "Talons"
+ RTRUE
+
+
+ .FUNCT F6-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "The gnarled branch of an ironwood tree looms above the path like the talons of a hawk descending."
+
+
+ .FUNCT SFORD-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL2 SEE-BRIDGE,W?SOUTH
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?NORTH \FALSE
+ SET 'BRIDGE-DIR,STR?733
+ SET 'ZTOP,1
+ SET 'ZBOT,2
+ RFALSE
+
+
+ .FUNCT SEE-BRIDGE,WRD
+ PRINTI "You're shivering on the "
+ PRINTB WRD
+ PRINTI " edge of a broad chasm. Clammy mists chill the air, and "
+ ICALL2 THE-PRINT,GROUND
+ PRINTI " trembles with the roar of a cataract"
+ PRINT PTAB
+ PRINTI "Your heart sinks as you inspect the crude rope bridge spanning the chasm. A notice hangs near "
+ ICALL2 THE-PRINT,ZBRIDGE
+ PRINTR "'s entrance."
+
+
+ .FUNCT NFORD-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ ICALL2 SEE-BRIDGE,W?NORTH
+ PRINT TAB
+ PRINTI "The ruins of an ancient city lie not far to the "
+ PRINTB W?NORTHEAST
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?SOUTH \FALSE
+ SET 'BRIDGE-DIR,STR?734
+ SET 'ZTOP,1
+ SET 'ZBOT,2
+ RFALSE
+
+
+ .FUNCT DESCRIBE-ON-BRIDGE,OBJ
+ EQUAL? ZBOT,2 \?CCL3
+ PRINTI "Halfway"
+ JUMP ?CND1
+?CCL3: EQUAL? ZBOT,-1 \?CCL5
+ PRINTI "Immeasurably Close"
+ JUMP ?CND1
+?CCL5: EQUAL? ZBOT,HIGHEST-ZBOT \?CND6
+ LESS? ZTOP,16383 \?CND6
+ PRINTI "About "
+?CND6: PRINTN ZTOP
+ PRINTC 47
+ PRINTN ZBOT
+ PRINTI " of the Way"
+?CND1: ZERO? BRIDGE-DIR \?CND10
+ PRINTI " Across"
+ RTRUE
+?CND10: PRINTI " to the "
+ PRINT BRIDGE-DIR
+ PRINTI " End"
+ RTRUE
+
+
+ .FUNCT ON-BRIDGE-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The entire bridge jerks and sways as you struggle to keep your footing on the slippery ropes. "
+ CALL2 PICK-NEXT,BRIDGE-TYPES
+ PRINT STACK
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL5
+ EQUAL? ZTOP,1 \FALSE
+ EQUAL? ZBOT,2 \FALSE
+ FSET? PARASOL,NODESC \FALSE
+ FSET? PARASOL,TOUCHED /FALSE
+ FCLEAR PARASOL,NODESC
+ MOVE PARASOL,ON-BRIDGE
+ RFALSE
+?CCL5: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?NORTH,P?SOUTH \FALSE
+ IN? PARASOL,ON-BRIDGE \?CND14
+ REMOVE PARASOL
+ FSET PARASOL,NODESC
+?CND14: ZERO? BRIDGE-DIR /?CTR19
+ EQUAL? P-WALK-DIR,P?NORTH \?PRD23
+ EQUAL? BRIDGE-DIR,STR?733 /?CTR19
+?PRD23: EQUAL? P-WALK-DIR,P?SOUTH \?CCL20
+ EQUAL? BRIDGE-DIR,STR?734 \?CCL20
+?CTR19: EQUAL? ZBOT,HIGHEST-ZBOT,-1 \?CCL30
+ SET 'ZBOT,-1
+ JUMP ?CND18
+?CCL30: ADD ZTOP,ZBOT >ZTOP
+ ADD ZBOT,ZBOT >ZBOT
+ JUMP ?CND18
+?CCL20: EQUAL? ZBOT,HIGHEST-ZBOT,-1 \?CCL32
+ SET 'BRIDGE-DIR,0
+ SET 'ZBOT,2
+ SET 'ZTOP,1
+ JUMP ?CND18
+?CCL32: ADD ZBOT,ZBOT >ZBOT
+ SUB ZBOT,ZTOP >ZTOP
+?CND18: SET 'BRIDGE-DIR,STR?733
+ EQUAL? P-WALK-DIR,P?SOUTH \FALSE
+ SET 'BRIDGE-DIR,STR?734
+ RFALSE
+
+
+ .FUNCT JUMP-OFF-BRIDGE,OBJ,NXT,X
+ PRINTI "You leap off the "
+ EQUAL? HERE,ON-BRIDGE \?CCL3
+ PRINTI "slippery ropes"
+ JUMP ?CND1
+?CCL3: PRINTI "chasm's edge"
+?CND1: PRINT AND
+ IN? PARASOL,PLAYER \?CND4
+ FSET? PARASOL,OPENED \?CND4
+ FSET? PARASOL,MUNGED /?CND4
+ ICALL1 PCLEAR
+ PRINTI "drift down towards the raging water"
+ PRINT PTAB
+ ICALL2 ITALICIZE,STR?736
+ PRINTI "! A gust of spray"
+ ICALL1 TEARS-PARASOL
+ PRINTI ", and you hit the freezing water..."
+ FIRST? PLAYER >OBJ \?CND9
+?PRG11: NEXT? OBJ >NXT /?BOGUS13
+?BOGUS13: FSET? OBJ,WORN /?CND14
+ FSET? OBJ,TAKEABLE \?CND14
+ MOVE OBJ,AT-BROOK
+ FCLEAR OBJ,WIELDED
+ EQUAL? OBJ,MINX \?CND14
+ FSET? OBJ,LIVING \?CND14
+ ICALL1 KILL-MINX
+?CND14: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG11
+?CND9: ICALL1 REGAIN-SENSES
+ FCLEAR AT-BROOK,TOUCHED
+ ICALL2 GOTO,AT-BROOK
+ GET STATS,ENDURANCE >X
+ GRTR? X,1 \FALSE
+ ZERO? AUTO /?CND25
+ ICALL1 BMODE-ON
+?CND25: SUB X,1
+ SUB 0,STACK
+ ICALL2 UPDATE-STAT,STACK
+ RFALSE
+?CND4: PRINTI "plummet to a cold, violent death in the raging waters"
+ ICALL1 JIGS-UP
+ RFALSE
+
+
+ .FUNCT ARCH-VOID-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "A timeless, dimensionless void stretches be"
+ ZERO? ATIME \?CND3
+ PRINTI "hind you, re"
+ PRINT STR?738
+ PRINTR "past."
+?CND3: PRINTI "fore you, pro"
+ PRINT STR?738
+ PRINTR "future."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH1-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTR "Huge dinosaurs feed on unfamiliar vegetation, lumbering against a sky red with the glare of active volcanos."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH2-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTI "The perimeter of this grassy "
+ PRINTB W?CLEARING
+ PRINTR " is dotted with primitive huts."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH3-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The spires of a young and arrogant city rise around "
+ ICALL2 THE-PRINT,PLAZA
+ IN? PCROWD,HERE \?CND4
+ PRINTI ", which is filled to capacity with a cheering throng"
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL7
+ MOVE ORATOR,HERE
+ ICALL2 SEE-CHARACTER,ORATOR
+ MOVE PCROWD,HERE
+ SET 'P-THEM-OBJECT,PCROWD
+ ICALL2 QUEUE,I-ARCH3
+ JUMP ?CND1
+?CCL7: EQUAL? CONTEXT,M-EXIT \?CND1
+ IN? ORATOR,HERE \?CND9
+ REMOVE ORATOR
+?CND9: IN? PCROWD,HERE \?CND11
+ REMOVE PCROWD
+?CND11: ICALL2 DEQUEUE,I-ARCH3
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH4-F,CONTEXT,V,NEWIQ,NAC,OBJ,NXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "A mighty conflagration obscures the dying city in a pall of smoke. Motionless bodies are strewn around "
+ ICALL2 THE-PRINT,ARCH
+ PRINT PTAB
+ PRINTI "Battle trenches zigzag across the plaza like open wounds. The one nearest you is "
+ IN? HORSE,TRENCH \?CCL6
+ PRINTI "blocked by the body of "
+ ICALL2 PRINTA,HORSE
+ JUMP ?CND4
+?CCL6: CALL2 SEE-ANYTHING-IN?,TRENCH
+ ZERO? STACK /?CCL8
+ PRINTI "sheltering "
+ ICALL2 CONTENTS,TRENCH
+ JUMP ?CND4
+?CCL8: PRINTI "unoccupied"
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL10
+ ICALL2 REMOVE-ALL,TRENCH
+ FSET TRENCH,NODESC
+ MOVE TRENCH,HERE
+ FSET TRENCH,OPENED
+ ICALL REPLACE-SYN?,TRENCH,W?MINXHOLE,W?ZZZP
+ ICALL REPLACE-ADJ?,TRENCH,W?MINX,W?ZZZP
+ ICALL2 QUEUE,I-ARCH4
+ IN? HELM,PRINCE /FALSE
+ CALL2 VISIBLE?,HELM
+ ZERO? STACK /?CND13
+ INC 'V
+ IN? HELM,PLAYER \?CND13
+ FSET? HELM,WORN \?CND13
+ INC 'NAC
+ FSET? HELM,NEUTRALIZED /?CND13
+ INC 'NEWIQ
+?CND13: MOVE HELM,PRINCE
+ GETP HELM,P?DNUM
+ PUTP HELM,P?VALUE,STACK
+ FCLEAR HELM,WORN
+ FCLEAR HELM,WIELDED
+ ZERO? V /FALSE
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ICALL2 CTHE-PRINT,HELM
+ PRINTI " abruptly fades from view."
+ CRLF
+ ZERO? NAC /?CND23
+ GETP HELM,P?EFFECT
+ SUB 0,STACK
+ ICALL UPDATE-STAT,STACK,ARMOR-CLASS
+?CND23: ZERO? NEWIQ /TRUE
+ ICALL1 NORMAL-IQ
+ RTRUE
+?CCL10: EQUAL? CONTEXT,M-EXIT \?CND1
+ ICALL2 DEQUEUE,I-ARCH4
+ FIRST? TRENCH >OBJ \?CND28
+?PRG30: NEXT? OBJ >NXT /?BOGUS32
+?BOGUS32: EQUAL? OBJ,TEAR,DIAMOND,PHASE /?CND33
+ EQUAL? OBJ,TRUFFLE \?CCL36
+ FSET? OBJ,MUNGED /?CND33
+ REMOVE OBJ
+ JUMP ?CND33
+?CCL36: FSET? OBJ,FERRIC /?CND33
+ REMOVE OBJ
+?CND33: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG30
+?CND28: REMOVE TRENCH
+ FCLEAR TRENCH,OPENED
+ REMOVE BHORSE
+ FCLEAR PRINCE,SLEEPING
+ FSET PRINCE,NODESC
+ MOVE PRINCE,HORSE
+ PUTP PRINCE,P?ACTION,PRINCE-F
+ ICALL REPLACE-SYN?,PRINCE,W?HEAD,W?ZZZP
+ ICALL REPLACE-SYN?,PRINCE,W?BODY,W?ZZZP
+ ICALL REPLACE-SYN?,PRINCE,W?CORPSE,W?ZZZP
+ ICALL REPLACE-ADJ?,PRINCE,W?DEAD,W?ZZZP
+ REMOVE HORSE
+ REMOVE DEAD-HORSE
+ FSET HORSE,LIVING
+ FCLEAR HORSE,NODESC
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH5-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTR "Time has not yet softened the layers of dirt and rubble obscuring the remains of the plaza."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT HANDLE-ARCH-ROOMS?,CONTEXT,X,OBJ,NXT
+ EQUAL? CONTEXT,M-EXIT \?CCL3
+ GETB ARCH-ROOMS,PRESENT
+ EQUAL? HERE,STACK /FALSE
+ FIRST? HERE >OBJ \FALSE
+?PRG8: NEXT? OBJ >NXT /?BOGUS10
+?BOGUS10: FSET? OBJ,TAKEABLE \?CND11
+ REMOVE OBJ
+?CND11: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG8
+ RFALSE
+?CCL3: EQUAL? CONTEXT,M-BEG \FALSE
+ EQUAL? ATIME,PRESENT /FALSE
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \FALSE
+ PRINTI "Your voice has the faint, wistful quality of words "
+ LESS? ATIME,PRESENT \?CCL23
+ PRINTI "yet to be spoken"
+ JUMP ?CND21
+?CCL23: PRINTI "spoken long ago"
+?CND21: CALL1 QCONTEXT-GOOD? >X
+ ZERO? X /?CND24
+ PRINTI "; "
+ ICALL2 THE-PRINT,X
+ PRINTI " seems not to hear"
+?CND24: PRINT PERIOD
+ RETURN 2
+
+
+ .FUNCT ARCH9-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTR "Ages of windblown dust lie hardened upon the frozen earth. The air is touched with an ominous arctic chill."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH10-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTR "The last traces of the plaza are lost beneath an impenetrable layer of glacial ice."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH11-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTR "Strange mechanisms of metal and glass zoom across a rugged landscape strewn with glacial boulders."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT ARCH12-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Patient centuries have eroded much of the topsoil from the landscape. Loose, charred earth stretches away in every "
+ PRINTD INTDIR
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-EXIT \?CND1
+ IN? TRENCH,HERE \?CND1
+ FSET TRENCH,NODESC
+ FCLEAR TRENCH,OPENED
+ REMOVE TRENCH
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT TIMESHIFT,X
+ FSET? ARCH,SEEN \?CCL2
+ EQUAL? P-WALK-DIR,P?NORTH \?PRD5
+ EQUAL? ATIME,MAX-ATIME /?CCL2
+?PRD5: EQUAL? P-WALK-DIR,P?SOUTH \?CND1
+ ZERO? ATIME \?CND1
+?CCL2: PRINTI "The weight of centuries restricts your motion."
+ CRLF
+ RFALSE
+?CND1: GETP HERE,P?ACTION
+ CALL STACK,M-EXIT >X
+ ZERO? X /?CND10
+ EQUAL? X,M-FATAL /FALSE
+ ZERO? VERBOSITY /?CND10
+ CRLF
+?CND10: EQUAL? P-WALK-DIR,P?NORTH \?CCL18
+ INC 'ATIME
+ JUMP ?CND16
+?CCL18: DEC 'ATIME
+?CND16: GETB ARCH-ROOMS,ATIME >HERE
+ MOVE ARCH,HERE
+ SET 'OLD-HERE,FALSE-VALUE
+ SET 'ARCHTIMER,0
+ GETP HERE,P?ACTION
+ ICALL STACK,M-ENTERING
+ FSET? LIGHTSHOW,TOUCHED \?CCL21
+ PRINTI "You slide "
+ JUMP ?CND19
+?CCL21: PRINTI "The merest effort of will is enough to slide you "
+?CND19: EQUAL? P-WALK-DIR,P?NORTH \?CCL24
+ PRINTB W?FOR
+ JUMP ?CND22
+?CCL24: PRINTB W?BACK
+?CND22: PRINTI "ward through "
+ ICALL2 THE-PRINT,LIGHTSHOW
+ FSET? LIGHTSHOW,TOUCHED /?CND25
+ FSET LIGHTSHOW,TOUCHED
+ PRINTI ", guided by the Magick of the arch"
+?CND25: ICALL1 RELOOK
+ ZERO? GLASS-TOP /FALSE
+ ICALL1 I-GLASS
+ RFALSE
+
+
+ .FUNCT IN-LAIR-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "The plunder of many kingdoms lies in a vast, sparkling mound of the type often employed by dragons as a mattress. Luckily, there are no dragons to be seen"
+ IN? URGRUE,IN-LAIR \?CND4
+ PRINTI "; but the southeast corner of the chamber is obscured by a curious shadow"
+?CND4: PRINT PERIOD
+ CALL2 SEE-ANYTHING-IN?,HEAP
+ ZERO? STACK /?CND6
+ PRINT TAB
+ PRINT YOU-SEE
+ ICALL2 CONTENTS,HEAP
+ PRINTI " lying among the treasures."
+ CRLF
+?CND6: ICALL1 MENTION-BEAM?
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL9
+ IN? GRUE,HERE \?CND10
+ REMOVE GRUE
+?CND10: IN? URGRUE,IN-LAIR \FALSE
+ FCLEAR URGRUE,SEEN
+ FSET URGRUE,SURPRISED
+ SET 'P-HIM-OBJECT,URGRUE
+ SET 'LAST-MONSTER,URGRUE
+ ICALL2 QUEUE,I-URGRUE
+ RFALSE
+?CCL9: EQUAL? CONTEXT,M-EXIT \FALSE
+ IN? URGRUE,IN-LAIR \FALSE
+ ICALL2 DEQUEUE,I-URGRUE
+ PRINTC 34
+ CALL2 PICK-NEXT,URGRUE-BYES
+ PRINT STACK
+ PRINTI """ chuckles "
+ ICALL2 THE-PRINT,URGRUE
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT IN-FROON-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "Lullabies sing of places such as this. Songbirds swoop and glide between rows of dainty cottages; a rainbow of flowers lines the sun-dappled street, filling the air with a gentle fragrance"
+ PRINT PTAB
+ PRINT XTHE
+ FSET? FARM-DOOR,OPENED \?CCL6
+ PRINTB W?OPEN
+ JUMP ?CND4
+?CCL6: PRINTB W?CLOSED
+?CND4: PRINTC SP
+ PRINTD FARMHOUSE
+ PRINTI " leans askew upon the roadside. Beneath it, you notice what appears to be the heel of "
+ ICALL2 PRINTA,BOOT
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL8
+ IN? MAYOR,IN-FROON \?CND9
+ SET 'P-HIM-OBJECT,MAYOR
+?CND9: IN? FCROWD,IN-FROON \FALSE
+ SET 'P-THEM-OBJECT,FCROWD
+ RFALSE
+?CCL8: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,P?SOUTH,P?IN \FALSE
+ FSET? FARM-DOOR,OPENED \FALSE
+ IN? MAYOR,IN-FROON \FALSE
+ GRTR? FSCRIPT,5 \FALSE
+ ICALL1 BYE-MAYOR
+ RETURN 2
+
+
+ .FUNCT INNARDS-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "This long, low chamber is shaped much like the gizzard of a crocodile. Trickles of fetid moisture feed the moss crusting the walls and ceiling."
+
+
+ .FUNCT DESCRIBE-APLANE,OBJ
+ PRINTD OBJ
+ IN? PLAYER,OBJ \TRUE
+ PRINTI ", Above "
+ GET OVERS,ABOVE
+ PRINT STACK
+ RTRUE
+
+
+ .FUNCT APLANE-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINT XTHE
+ EQUAL? ABOVE,OPLAIN \?CCL6
+ PRINTI "thunderclouds are "
+ JUMP ?CND4
+?CCL6: PRINTI "landscape is "
+?CND4: PRINTI "compressed into a flat optical plane, stretching away below your feet in every "
+ PRINTD INTDIR
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 NEXT-OVER
+ RFALSE
+
+
+ .FUNCT DESCRIBE-IN-SKY,OBJ
+ PRINTI "Over "
+ GET OVERS,ABOVE
+ PRINT STACK
+ RTRUE
+
+
+ .FUNCT IN-SKY-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "You're soaring on "
+ ICALL2 PRINTA,DACT
+ PRINTI "'s back, high above "
+ ICALL2 THE-PRINT,GROUND
+ PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \FALSE
+ ICALL1 NEXT-OVER
+ RFALSE
+
+
+ .FUNCT IN-GARDEN-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "You're in a private garden, enclosed by the high walls of a castle and guarded by a brooding statue of a brogmoid"
+ FSET? BROG,OPENED \?CND4
+ PRINTI ". A secret compartment in "
+ ICALL2 THE-PRINT,BROG
+ PRINTI " is open"
+ CALL2 SEE-ANYTHING-IN?,BROG
+ ZERO? STACK /?CND4
+ PRINTI ", revealing "
+ ICALL2 CONTENTS,BROG
+?CND4: PRINT PERIOD
+ RTRUE
+?CCL3: EQUAL? CONTEXT,M-ENTERING \?CCL9
+ FSET? QUEEN,NODESC \FALSE
+ SET 'PTIMER,0
+ ICALL2 QUEUE,I-QUEEN
+ RFALSE
+?CCL9: EQUAL? CONTEXT,M-EXIT \?CCL13
+ IN? QUEEN,IN-GARDEN \?CND14
+ REMOVE QUEEN
+ IN? MIRROR0,IN-GARDEN \?CND14
+ ICALL2 DESTROY-MIRROR,MIRROR0
+ ICALL2 DEQUEUE,I-MIRRORS
+?CND14: ICALL2 DEQUEUE,I-QUEEN
+ RFALSE
+?CCL13: EQUAL? CONTEXT,M-BEG \FALSE
+ IN? QUEEN,IN-GARDEN \FALSE
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \FALSE
+ ICALL2 APPROACH-QUEEN,STR?656
+ RETURN 2
+
+
+ .FUNCT RUIN-ROOM-F,CONTEXT,TBL,X
+ EQUAL? CONTEXT,M-ENTERING \FALSE
+ FSET? HERE,TOUCHED /FALSE
+ FSET? PLAZA,SEEN /?CCL7
+ CALL2 LAST-ROOM-IN?,RUIN-ROOMS
+ ZERO? STACK /?CCL7
+ FSET PLAZA,SEEN
+ PUTB ARCH-ROOMS,PRESENT,HERE
+ ICALL REPLACE-GLOBAL?,HERE,NULL,PLAZA
+ MOVE ARCH,HERE
+ PUTP HERE,P?SDESC,DESCRIBE-ARCH7
+ PUTP HERE,P?ACTION,ARCH7-F
+ ICALL NEW-EXIT?,HERE,P?IN,1153,ENTER-ARCH
+ ICALL NEW-EXIT?,HERE,P?OUT,1153,EXIT-ARCH
+ RFALSE
+?CCL7: CALL2 PICK-ONE,RUIN-DESCS >TBL
+ GET TBL,0
+ PUTP HERE,P?SDESC,STACK
+ GET TBL,1 >X
+ PUTP HERE,P?ACTION,X
+ EQUAL? X,RD3-F \FALSE
+ MOVE WEEDS2,HERE
+ RFALSE
+
+
+ .FUNCT DESCRIBE-ARCH7,OBJ
+ PRINTI "Plaza"
+ RTRUE
+
+
+ .FUNCT ARCH7-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \?CND1
+ PRINTR "This vast expanse may have served as a public meetingplace in centuries long past. Waves of heat rise from the stone pavement underfoot."
+?CND1: CALL2 HANDLE-ARCH-ROOMS?,CONTEXT
+ RSTACK
+
+
+ .FUNCT DESCRIBE-RD0,OBJ
+ PRINTI "Courtyard"
+ RTRUE
+
+
+ .FUNCT RD0-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "Tall pillars of stone once enclosed this circular courtyard. The sad remains lie smashed and scattered at your feet."
+
+
+ .FUNCT DESCRIBE-RD1,OBJ
+ PRINTI "Aqueduct"
+ RTRUE
+
+
+ .FUNCT RD1-F,CONTEXT,TBL,DIR
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ SET 'DIR,I-NORTH
+?PRG4: GETB PDIR-LIST,DIR
+ GETP HERE,STACK >TBL
+ ZERO? TBL /?CND6
+ GET TBL,XTYPE
+ BAND STACK,65280
+ EQUAL? STACK,CONNECT /?REP5
+?CND6: IGRTR? 'DIR,I-NW \?PRG4
+?REP5: PRINTI "A boulevard of cracked marble leads "
+ GET DIR-NAMES,DIR
+ PRINTB STACK
+ PRINTR " beneath the shadows of a crumbling aqueduct."
+
+
+ .FUNCT DESCRIBE-RD2,OBJ
+ PRINTI "Debris"
+ RTRUE
+
+
+ .FUNCT RD2-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "Alleys strewn with centuries of debris wind between the silent ruins."
+
+
+ .FUNCT DESCRIBE-RD3,OBJ
+ PRINTI "Glare"
+ RTRUE
+
+
+ .FUNCT RD3-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "The hard glare of sunlight on the windswept ruins is making your eyes water. Weeds are growing between the cracks in the street."
+
+
+ .FUNCT DESCRIBE-RD4,OBJ
+ PRINTI "Dusty Street"
+ RTRUE
+
+
+ .FUNCT RD4-F,CONTEXT
+ EQUAL? CONTEXT,M-LOOK \FALSE
+ PRINTR "A dry, cheerless wind blows dust in your face as you regard the broken facades on every side."
+
+
+ .FUNCT IN-SPLENDOR-F,CONTEXT,X
+ EQUAL? CONTEXT,M-LOOK \?CCL3
+ PRINTI "An unspoiled landscape of rolling meadows, sparkling streams and orchards bursting with fruit stretches away in every direction. You must be alone here; for no "
+ FSET? PLAYER,FEMALE \?CND4
+ PRINTI "wo"
+?CND4: PRINTR "man could visit this place and leave it voluntarily."
+?CCL3: EQUAL? CONTEXT,M-BEG \?CCL7
+ IN? HERD,IN-SPLENDOR \FALSE
+ INTBL? PRSA,TALKVERBS,NTVERBS >X \FALSE
+ ICALL2 UNICORNS-FLEE,STR?656
+ RETURN 2
+?CCL7: EQUAL? CONTEXT,M-EXIT \FALSE
+ EQUAL? P-WALK-DIR,FALSE-VALUE,P?IN,P?OUT /FALSE
+ EQUAL? P-WALK-DIR,P?UP,P?DOWN /FALSE
+ IN? HERD,IN-SPLENDOR \?CND16
+ ICALL1 UNICORNS-FLEE
+ RETURN 2
+?CND16: ICALL2 I-ARREST,FALSE-VALUE
+ RETURN 2
+
+
+ .FUNCT SETUP-CELLAR?
+ ICALL2 SCRAMBLE,CELLAR-ROOMS
+ ICALL NEXT-WAND?,DESCRIBE-CELLAR-WAND,WC1
+ ICALL2 QUEUE,I-RAT
+ RTRUE
+
+
+ .FUNCT N-MOOR-S
+ CALL1 SETUP-MOOR?
+ ZERO? STACK /FALSE
+ GETP N-MOOR,P?SOUTH
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SW-MOOR-NE
+ CALL1 SETUP-MOOR?
+ ZERO? STACK /FALSE
+ GETP SW-MOOR,P?NE
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SETUP-MOOR?,RM,RM2,RM3,OBJ,LEN
+ ICALL2 SCRAMBLE,MOOR-ROOMS
+ CALL1 N-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?NORTH,641,N-MOOR
+ ICALL NEW-EXIT?,N-MOOR,P?SOUTH,641,RM
+ CALL1 SW-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?SW,645,SW-MOOR
+ ICALL NEW-EXIT?,SW-MOOR,P?NE,645,RM
+ GETB MOOR-ROOMS,0 >LEN
+ RANDOM LEN
+ GETB MOOR-ROOMS,STACK >RM
+ ICALL NEXT-SCROLL?,DESCRIBE-MOOR-SCROLL,RM
+?PRG1: RANDOM LEN
+ GETB MOOR-ROOMS,STACK >RM2
+ EQUAL? RM2,RM /?PRG1
+ ICALL NEXT-POTION?,RM2,DESCRIBE-MOOR-POTION
+?PRG5: RANDOM LEN
+ GETB MOOR-ROOMS,STACK >RM3
+ EQUAL? RM3,RM2,RM /?PRG5
+ ICALL NEXT-WAND?,DESCRIBE-MOOR-WAND,RM3
+ ICALL2 QUEUE,I-VAPOR
+ RTRUE
+
+
+ .FUNCT NW-UNDER-SE
+ CALL1 SETUP-JUNGLE?
+ ZERO? STACK /FALSE
+ GETP NW-UNDER,P?SE
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SW-UNDER-NE
+ CALL1 SETUP-JUNGLE?
+ ZERO? STACK /FALSE
+ GETP SW-UNDER,P?NE
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SE-UNDER-NW
+ CALL1 SETUP-JUNGLE?
+ ZERO? STACK /FALSE
+ GETP SE-UNDER,P?NW
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT AT-FALLS-N
+ CALL1 SETUP-JUNGLE?
+ ZERO? STACK /FALSE
+ GETP AT-FALLS,P?NORTH
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SETUP-JUNGLE?,RM,RM2,RM3,LEN
+ ICALL2 SCRAMBLE,JUNGLE-ROOMS
+ CALL1 NW-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?NW,641,NW-UNDER
+ ICALL NEW-EXIT?,NW-UNDER,P?SE,641,RM
+ CALL1 SE-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?SE,641,SE-UNDER
+ ICALL NEW-EXIT?,SE-UNDER,P?NW,641,RM
+ CALL1 SW-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?SW,641,SW-UNDER
+ ICALL NEW-EXIT?,SW-UNDER,P?NE,641,RM
+ CALL1 S-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?SOUTH,645,AT-FALLS
+ ICALL NEW-EXIT?,AT-FALLS,P?NORTH,645,RM
+ GETB JUNGLE-ROOMS,0 >LEN
+?PRG1: RANDOM LEN
+ GETB JUNGLE-ROOMS,STACK >RM
+ EQUAL? RM,JUN0 /?PRG1
+ MOVE TUSK,RM
+?PRG5: RANDOM LEN
+ GETB JUNGLE-ROOMS,STACK >RM2
+ EQUAL? RM2,RM,JUN0 /?PRG5
+ ICALL NEXT-WAND?,DESCRIBE-JUNGLE-WAND,RM2
+?PRG9: RANDOM LEN
+ GETB JUNGLE-ROOMS,STACK >RM3
+ EQUAL? RM3,RM2,RM,JUN0 /?PRG9
+ ICALL NEXT-SCROLL?,DESCRIBE-JUNGLE-SCROLL,RM3
+ ICALL2 QUEUE,I-CROC
+ RTRUE
+
+
+ .FUNCT ENTER-PLAIN-W
+ CALL1 SETUP-PLAIN?
+ ZERO? STACK /FALSE
+ GETP XROADS,P?EAST
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT ENTER-PLAIN-E
+ CALL1 SETUP-PLAIN?
+ ZERO? STACK /FALSE
+ GETP ON-PIKE,P?WEST
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SETUP-PLAIN?,RM,OBJ,LEN
+ SET 'SCRAMBLE-LENGTH,3
+ ICALL SCRAMBLE,PLAIN-ROOMS,61166
+ SET 'SCRAMBLE-LENGTH,1
+ CALL1 W-ROOM? >RM
+ SET 'WEST-EXIT,RM
+ ICALL NEW-EXIT?,RM,P?WEST,653,XROADS
+ ICALL NEW-EXIT?,XROADS,P?EAST,653,RM
+ CALL1 E-ROOM? >RM
+ SET 'EAST-EXIT,RM
+ ICALL NEW-EXIT?,RM,P?EAST,653,ON-PIKE
+ ICALL NEW-EXIT?,ON-PIKE,P?WEST,653,RM
+ CALL1 N-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?NORTH,643,ROSE-ROOM
+ ICALL NEW-EXIT?,ROSE-ROOM,P?SOUTH,643,RM
+ ICALL2 QUEUE,I-BFLY
+ RTRUE
+
+
+ .FUNCT NGURTH-N
+ CALL1 SETUP-FOREST?
+ ZERO? STACK /FALSE
+ GETP NGURTH,P?NORTH
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT AT-BROOK-WEST
+ CALL1 SETUP-FOREST?
+ ZERO? STACK /FALSE
+ GETP AT-BROOK,P?WEST
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SFORD-S
+ CALL1 SETUP-FOREST?
+ ZERO? STACK /FALSE
+ GETP SFORD,P?SW
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SETUP-FOREST?,LEN,RM,RM2
+ ICALL2 SCRAMBLE,FOREST-ROOMS
+ CALL1 S-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?SOUTH,641,NGURTH
+ ICALL NEW-EXIT?,NGURTH,P?NORTH,641,RM
+ CALL1 NE-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?NE,641,SFORD
+ ICALL NEW-EXIT?,SFORD,P?SW,641,RM
+ CALL1 E-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?EAST,649,AT-BROOK
+ ICALL NEW-EXIT?,AT-BROOK,P?WEST,649,RM
+ GETB FOREST-ROOMS,0 >LEN
+ RANDOM LEN
+ GETB FOREST-ROOMS,STACK >RM
+ ICALL NEXT-SCROLL?,DESCRIBE-FOREST-SCROLL,RM
+?PRG1: RANDOM LEN
+ GETB FOREST-ROOMS,STACK >RM2
+ EQUAL? RM2,RM /?PRG1
+ ICALL NEXT-WAND?,DESCRIBE-FOREST-WAND,RM2
+ ICALL2 QUEUE,I-PUPP
+ RTRUE
+
+
+ .FUNCT NFORD-NE
+ CALL1 SETUP-RUINS?
+ ZERO? STACK /FALSE
+ GETP NFORD,P?NE
+ GET STACK,XROOM
+ RSTACK
+
+
+ .FUNCT SETUP-RUINS?,RM
+ ICALL SCRAMBLE,RUIN-ROOMS,61166
+ CALL1 SW-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?SW,641,NFORD
+ ICALL NEW-EXIT?,NFORD,P?NE,641,RM
+ GETB RUIN-ROOMS,0
+ RANDOM STACK
+ GETB RUIN-ROOMS,STACK >RM
+ ICALL NEXT-POTION?,RM,DESCRIBE-RUINS-POTION
+ ICALL2 QUEUE,I-GHOUL
+ RTRUE
+
+
+ .FUNCT SETUP-CAVES?,RM
+ ICALL SCRAMBLE,CAVE-ROOMS,43690
+ CALL1 SE-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?SE,513,CAVE7
+ ICALL NEW-EXIT?,CAVE7,P?NW,513,RM
+ ICALL NEW-EXIT?,CAVE7,P?IN,513,RM
+ CALL1 NE-ROOM? >RM
+ ICALL NEW-EXIT?,RM,P?NE,513,NE-CAVE
+ ICALL NEW-EXIT?,NE-CAVE,P?SW,513,RM
+ ICALL NEW-EXIT?,NE-CAVE,P?IN,513,RM
+ CALL1 W-ROOM? >RM
+ ICALL NEW-EXIT?,IN-LAIR,P?NE,513,RM
+ ICALL NEW-EXIT?,RM,P?SW,513,IN-LAIR
+ FSET SE-CAVE,SEEN
+ FSET NE-CAVE,SEEN
+ ICALL2 NEXT-SUCKER,ASUCKER
+ ICALL2 QUEUE,I-ASUCKER
+ ICALL2 QUEUE,I-GRUE
+ RTRUE
+
+
+ .FUNCT SCRAMBLE,RTBL,MASK,HOME,LEN,RM,NXT,X
+ COPYT DEFAULT-BORDERS,BORDERS,50
+ ASSIGNED? 'MASK \?CND1
+ SET 'LEN,24
+?PRG3: GET BORDERS,LEN
+ BAND STACK,MASK
+ PUT BORDERS,LEN,STACK
+ DLESS? 'LEN,0 \?PRG3
+ PUTB BORDERS,0,49
+?CND1: GETB RTBL,0 >LEN
+ GETB RTBL,1 >HOME
+ SET 'X,LEN
+?PRG7: GETB RTBL,X
+ PUT MAZE-ROOMS,X,STACK
+ DLESS? 'X,2 \?PRG7
+ PUT MAZE-ROOMS,1,0
+ PUT MAZE-ROOMS,0,LEN
+ INC 'LEN
+ PUT AUX-TABLE,0,LEN
+ PUT AUX-TABLE,1,3
+ PUT AUX-TABLE,2,HOME
+?PRG11: CALL2 PICK-ONE,MAZE-ROOMS
+ PUT AUX-TABLE,LEN,STACK
+ DLESS? 'LEN,3 \?PRG11
+ COPYT MAZE-ROOMS,0,51
+ FCLEAR HOME,TOUCHED
+ PUTP HOME,P?DNUM,25
+ PUTB MAZE-ROOMS,25,HOME
+?PRG15: SET 'LAST-CONNECTION,-1
+ ICALL2 CLEAR-MAPBITS,RTBL
+ SET 'RM,HOME
+ FSET HOME,MAPPED
+?PRG17: CALL2 NEXT-ROOM?,RM >NXT
+ ZERO? NXT \?CCL21
+ CALL2 NEW-HOME?,HOME >HOME
+ JUMP ?PRG15
+?CCL21: GET AUX-TABLE,1
+ EQUAL? STACK,2 \?CCL23
+ ICALL2 CLEAR-MAPBITS,RTBL
+ RFALSE
+?CCL23: EQUAL? NXT,HOME /?PRG17
+ FSET? NXT,MAPPED \?CND19
+ SET 'HOME,NXT
+ JUMP ?PRG15
+?CND19: FSET NXT,MAPPED
+ SET 'RM,NXT
+ JUMP ?PRG17
+
+
+ .FUNCT CLEAR-MAPBITS,TBL,LEN
+ GETB TBL,0 >LEN
+?PRG1: GETB TBL,LEN
+ FCLEAR STACK,MAPPED
+ DLESS? 'LEN,1 \?PRG1
+ RFALSE
+
+
+ .FUNCT NEW-HOME?,RM,DIR,CNT,TBL
+ SET 'CNT,1
+ SET 'DIR,P?NW
+?PRG1: GETP RM,DIR >TBL
+ ZERO? TBL /?CND3
+ INC 'CNT
+ GET TBL,XROOM
+ PUT GOOD-DIRS,CNT,STACK
+?CND3: IGRTR? 'DIR,P?NORTH \?PRG1
+ EQUAL? CNT,1 /FALSE
+ EQUAL? CNT,2 \?CND7
+ GET GOOD-DIRS,2
+ RSTACK
+?CND7: PUT GOOD-DIRS,0,CNT
+ PUT GOOD-DIRS,1,0
+ CALL2 PICK-ONE,GOOD-DIRS
+ RSTACK
+
+
+ .FUNCT NEXT-ROOM?,RM,DIR,DIAG,PATH-LEN,CNT,BITS,RNUM,NRM,NRNUM,X,LEN,TBL
+ GETP RM,P?DNUM >RNUM
+ ZERO? RNUM /FALSE
+ GETB BORDERS,RNUM >BITS
+ SET 'CNT,1
+?PRG3: GETB DBIT-LIST,DIR
+ BTST BITS,STACK \?CND5
+ GET DIR-HACKS,DIR
+ ADD RNUM,STACK >X
+ GETB MAZE-ROOMS,X
+ ZERO? STACK /?CND5
+ INC 'CNT
+ PUT GOOD-DIRS,CNT,DIR
+?CND5: IGRTR? 'DIR,7 \?PRG3
+ EQUAL? CNT,1 \?CCL13
+ SET 'DIR,0
+?PRG14: GETB DBIT-LIST,DIR
+ BTST BITS,STACK \?CND16
+ GETB PDIR-LIST,DIR
+ GETP RM,STACK
+ ZERO? STACK \?CND16
+ INC 'CNT
+ PUT GOOD-DIRS,CNT,DIR
+?CND16: IGRTR? 'DIR,7 \?PRG14
+ EQUAL? CNT,1 /FALSE
+ EQUAL? CNT,2 \?CCL26
+ GET GOOD-DIRS,2 >DIR
+ JUMP ?CND11
+?CCL26: PUT GOOD-DIRS,0,CNT
+ PUT GOOD-DIRS,1,0
+?PRG27: CALL2 PICK-ONE,GOOD-DIRS >DIR
+ EQUAL? DIR,LAST-CONNECTION /?PRG27
+ JUMP ?CND11
+?CCL13: EQUAL? CNT,2 \?CCL32
+ GET GOOD-DIRS,2 >DIR
+ JUMP ?CND11
+?CCL32: PUT GOOD-DIRS,0,CNT
+ PUT GOOD-DIRS,1,0
+?PRG33: CALL2 PICK-ONE,GOOD-DIRS >DIR
+ EQUAL? DIR,LAST-CONNECTION /?PRG33
+?CND11: SET 'LAST-CONNECTION,DIR
+ GET DIR-HACKS,DIR
+ ADD RNUM,STACK >NRNUM
+ BTST DIR,1 \?CND37
+ INC 'DIAG
+ ICALL KILL-DIAGONAL,RNUM,DIR
+?CND37: SET 'PATH-LEN,SCRAMBLE-LENGTH
+?PRG39: CALL CAN-EXTEND?,NRNUM,DIR >X
+ ZERO? X /?REP40
+ RANDOM 100
+ LESS? 67,STACK \?REP40
+ ZERO? DIAG /?CND41
+ ICALL KILL-DIAGONAL,NRNUM,DIR
+?CND41: ICALL EXTEND,NRNUM,DIR
+ ADD PATH-LEN,2 >PATH-LEN
+ SET 'NRNUM,X
+ JUMP ?PRG39
+?REP40: GETB MAZE-ROOMS,NRNUM >NRM
+ ZERO? NRM \?CND47
+ CALL2 PICK-NEXT,AUX-TABLE >NRM
+ PUTP NRM,P?DNUM,NRNUM
+ PUTB MAZE-ROOMS,NRNUM,NRM
+?CND47: ADD CONNECT,PATH-LEN >LEN
+ GETB PDIR-LIST,DIR
+ ICALL NEW-EXIT?,RM,STACK,LEN,NRM
+ GETB XDBIT-LIST,DIR
+ BAND BITS,STACK
+ PUTB BORDERS,RNUM,STACK
+ ADD DIR,4 >DIR
+ GRTR? DIR,7 \?CND49
+ SUB DIR,8 >DIR
+?CND49: GETB PDIR-LIST,DIR
+ ICALL NEW-EXIT?,NRM,STACK,LEN,RM
+ GETB BORDERS,NRNUM >BITS
+ GETB XDBIT-LIST,DIR
+ BAND BITS,STACK
+ PUTB BORDERS,NRNUM,STACK
+ RETURN NRM
+
+
+ .FUNCT CAN-EXTEND?,RNUM,DIR,CNT,XDIR,X,BITS
+ ADD DIR,4 >XDIR
+ GRTR? XDIR,7 \?PRG3
+ SUB XDIR,8 >XDIR
+?PRG3: EQUAL? CNT,XDIR /?CND5
+ GETB DBIT-LIST,CNT
+ BTST BITS,STACK \FALSE
+?CND5: IGRTR? 'CNT,7 \?PRG3
+ GET DIR-HACKS,DIR
+ ADD RNUM,STACK
+ RSTACK
+
+
+ .FUNCT EXTEND,RNUM,DIR,CNT,XRNUM,XDIR,BITS,LIST
+ PUTB BORDERS,RNUM,0
+ SET 'LIST,XDBIT-LIST+4
+ ADD DIR,4 >XDIR
+ GRTR? XDIR,7 \?PRG3
+ SUB XDIR,8 >XDIR
+?PRG3: EQUAL? CNT,DIR,XDIR /?CND5
+ GET DIR-HACKS,CNT
+ ADD RNUM,STACK >XRNUM
+ GETB BORDERS,XRNUM >BITS
+ GETB LIST,CNT
+ BAND BITS,STACK
+ PUTB BORDERS,XRNUM,STACK
+?CND5: IGRTR? 'CNT,7 \?PRG3
+ RFALSE
+
+
+ .FUNCT KILL-DIAGONAL,RNUM,DIR,CNT,BITS,XDIR,XRNUM,XBITS
+ GETB BORDERS,RNUM >BITS
+ DIV DIR,2 >DIR
+?PRG1: ADD QDIRS,CNT
+ GETB STACK,DIR
+ GET DIR-HACKS,STACK
+ ADD RNUM,STACK >XRNUM
+ ADD CNT,CNT
+ ADD ZDIRS,STACK
+ GETB STACK,DIR >XDIR
+ GETB XDBIT-LIST,XDIR >XBITS
+ GETB BORDERS,XRNUM
+ BAND STACK,XBITS
+ PUTB BORDERS,XRNUM,STACK
+ IGRTR? 'CNT,1 \?PRG1
+ RFALSE
+
+
+ .FUNCT N-ROOM?,ROW,OFFSET,RM
+ SET 'ROW,4
+?PRG1: GETB MAZE-ROOMS,ROW >RM
+ ZERO? RM /?CND3
+ RETURN RM
+?CND3: SET 'OFFSET,1
+?PRG5: ADD ROW,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CND7
+ RETURN RM
+?CND7: SUB ROW,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CCL11
+ RETURN RM
+?CCL11: IGRTR? 'OFFSET,3 \?PRG5
+ ADD ROW,7 >ROW
+ GRTR? ROW,46 \?PRG1
+ RFALSE
+
+
+ .FUNCT S-ROOM?,ROW,OFFSET,RM
+ SET 'ROW,46
+?PRG1: GETB MAZE-ROOMS,ROW >RM
+ ZERO? RM /?CND3
+ RETURN RM
+?CND3: SET 'OFFSET,1
+?PRG5: ADD ROW,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CND7
+ RETURN RM
+?CND7: SUB ROW,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CCL11
+ RETURN RM
+?CCL11: IGRTR? 'OFFSET,3 \?PRG5
+ SUB ROW,7 >ROW
+ LESS? ROW,4 \?PRG1
+ RFALSE
+
+
+ .FUNCT W-ROOM?,COL,OFFSET,RM
+ SET 'COL,22
+?PRG1: GETB MAZE-ROOMS,COL >RM
+ ZERO? RM /?CND3
+ RETURN RM
+?CND3: SET 'OFFSET,7
+?PRG5: ADD COL,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CND7
+ RETURN RM
+?CND7: SUB COL,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CND9
+ RETURN RM
+?CND9: ADD OFFSET,7 >OFFSET
+ GRTR? OFFSET,21 \?PRG5
+ IGRTR? 'COL,28 \?PRG1
+ RFALSE
+
+
+ .FUNCT E-ROOM?,COL,OFFSET,RM
+ SET 'COL,28
+?PRG1: GETB MAZE-ROOMS,COL >RM
+ ZERO? RM /?CND3
+ RETURN RM
+?CND3: SET 'OFFSET,7
+?PRG5: ADD COL,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CND7
+ RETURN RM
+?CND7: SUB COL,OFFSET
+ GETB MAZE-ROOMS,STACK >RM
+ ZERO? RM /?CND9
+ RETURN RM
+?CND9: ADD OFFSET,7 >OFFSET
+ GRTR? OFFSET,21 \?PRG5
+ DLESS? 'COL,22 \?PRG1
+ RFALSE
+
+
+ .FUNCT NW-ROOM?,COL,PTR,X,I,RM
+ SET 'COL,1
+?PRG1: SET 'X,COL
+ SET 'PTR,COL
+?PRG3: GETB MAZE-ROOMS,PTR >RM
+ ZERO? RM /?CCL7
+ RETURN RM
+?CCL7: DLESS? 'X,1 /?REP4
+ ADD PTR,6 >PTR
+ JUMP ?PRG3
+?REP4: IGRTR? 'COL,7 \?PRG1
+ RFALSE
+
+
+ .FUNCT NE-ROOM?,COL,PTR,X,I,RM
+ SET 'COL,7
+ SET 'I,1
+?PRG1: SET 'PTR,COL
+ SET 'X,I
+?PRG3: GETB MAZE-ROOMS,PTR >RM
+ ZERO? RM /?CCL7
+ RETURN RM
+?CCL7: DLESS? 'X,1 /?REP4
+ ADD PTR,8 >PTR
+ JUMP ?PRG3
+?REP4: INC 'I
+ DLESS? 'COL,1 \?PRG1
+ RFALSE
+
+
+ .FUNCT SW-ROOM?,COL,PTR,X,RM
+ SET 'COL,1
+?PRG1: SET 'X,COL
+ ADD COL,42 >PTR
+?PRG3: GETB MAZE-ROOMS,PTR >RM
+ ZERO? RM /?CCL7
+ RETURN RM
+?CCL7: DLESS? 'X,1 /?REP4
+ SUB PTR,8 >PTR
+ JUMP ?PRG3
+?REP4: IGRTR? 'COL,7 \?PRG1
+ RFALSE
+
+
+ .FUNCT SE-ROOM?,COL,PTR,X,I,RM
+ SET 'COL,7
+ SET 'I,1
+?PRG1: ADD COL,42 >PTR
+ SET 'X,I
+?PRG3: GETB MAZE-ROOMS,PTR >RM
+ ZERO? RM /?CCL7
+ RETURN RM
+?CCL7: DLESS? 'X,1 /?REP4
+ SUB PTR,6 >PTR
+ JUMP ?PRG3
+?REP4: INC 'I
+ DLESS? 'COL,1 \?PRG1
+ RFALSE
+
+ .ENDI
diff --git a/places.zil b/places.zil
index 34bfff1..4c51074 100644
--- a/places.zil
+++ b/places.zil
@@ -4094,6 +4094,8 @@ THE ,BENCH " in the center of the room">
(DESC "Twilight")
(SDESC 0)
(FLAGS LIGHTED LOCATION)
+ (IN 0)
+ (OUT 0)
(NORTH 0)
(NE 0)
(EAST 0)
diff --git a/rarities.zap b/rarities.zap
new file mode 100644
index 0000000..309de37
--- /dev/null
+++ b/rarities.zap
@@ -0,0 +1,1911 @@
+
+
+ .FUNCT DESCRIBE-INTNUM,OBJ
+ PRINTD INTNUM
+ PRINTC SP
+ PRINTN P-NUMBER
+ RTRUE
+
+
+ .FUNCT BE-SPECIFIC
+ PRINTI "[Be specific: what do you want to "
+ RTRUE
+
+
+ .FUNCT TO-DO-THING-USE,STR1,STR2
+ PRINTI "[To "
+ PRINT STR1
+ PRINTC SP
+ PRINTB W?SOMETHING
+ PRINTI ", use the command: "
+ PRINT STR2
+ PRINTR " THING.]"
+
+
+ .FUNCT CANT-USE,PTR,BUF,?TMP1
+ SET 'QUOTE-FLAG,FALSE-VALUE
+ SET 'P-OFLAG,FALSE-VALUE
+ MUL PTR,2
+ ADD P-LEXV,STACK >BUF
+ PRINTI "[This story can't understand the word """
+ GETB BUF,2 >?TMP1
+ GETB BUF,3
+ ICALL WORD-PRINT,?TMP1,STACK
+ PRINTR """ when you use it that way.]"
+
+
+ .FUNCT DONT-UNDERSTAND
+ PRINTR "[Please try to express that another way.]"
+
+
+ .FUNCT NOT-IN-SENTENCE,STR
+ PRINTI "[There aren't "
+ PRINT STR
+ PRINTR " in that sentence.]"
+
+
+ .FUNCT WALLS-F
+ EQUAL? HERE,IN-GARDEN /?CND1
+ FSET? HERE,INDOORS /?CND1
+ ICALL2 CANT-SEE-ANY,WALLS
+ RETURN 2
+?CND1: CALL1 HANDLE-WALLS?
+ ZERO? STACK \TRUE
+ ICALL2 USELESS,WALLS
+ RETURN 2
+
+
+ .FUNCT HANDLE-WALLS?,X
+ ZERO? NOW-PRSI? /?CCL3
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ ICALL1 PRSO-SLIDES-OFF-PRSI
+ RTRUE
+?CCL3: INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X /?CTR6
+ EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-UNDER \?CCL7
+?CTR6: EQUAL? HERE,IN-GARDEN \?CND10
+ ICALL1 CTHE-PRINT
+ PRINTR " is much too high."
+?CND10: ICALL1 IMPOSSIBLE
+ RTRUE
+?CCL7: INTBL? PRSA,X-VERBS,CLIMB-DOWN-VERBS >X \?CCL13
+ ICALL1 NOT-ON
+ RTRUE
+?CCL13: INTBL? PRSA,HURTVERBS,NHVERBS >X /?CTR14
+ INTBL? PRSA,MOVEVERBS,NMVERBS >X \?CCL15
+?CTR14: ICALL1 CTHE-PRINT
+ PRINTR " isn't affected."
+?CCL15: INTBL? PRSA,TALKVERBS,NTVERBS >X \FALSE
+ PRINTI "Talking to walls"
+ ICALL1 WONT-HELP
+ RETURN 2
+
+
+ .FUNCT CEILING-F
+ FSET? HERE,INDOORS /?CCL3
+ ICALL2 CANT-SEE-ANY,CEILING
+ RETURN 2
+?CCL3: EQUAL? PRSA,V?LOOK-UNDER \FALSE
+ ICALL1 V-LOOK
+ RTRUE
+
+
+ .FUNCT HANDS-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ EQUAL? PRSA,V?SCRAPE-ON \?CCL6
+ ZERO? MOSS-TIMER /?CCL6
+ ICALL1 DO-MOSS
+ RTRUE
+?CCL6: EQUAL? PRSA,V?TIE,V?PUT,V?PUT-ON /?CCL9
+ EQUAL? PRSA,V?EMPTY-INTO \FALSE
+?CCL9: ICALL1 WASTE-OF-TIME
+ RTRUE
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL13
+ ZERO? MOSS-TIMER /?CND14
+ ICALL1 DO-MOSS
+ RTRUE
+?CND14: PRINT CYOUR
+ FSET? PRSO,MUNGED \?CND16
+ PRINTI "long, slender "
+?CND16: PRINTR "fingers are still there."
+?CCL13: EQUAL? PRSA,V?COUNT \?CCL19
+ PRINTI "You still have "
+ CALL NOUN-USED?,W?FINGERS,W?FINGER
+ ZERO? STACK /?CCL22
+ PRINTI "ten"
+ JUMP ?CND20
+?CCL22: PRINTI "two"
+?CND20: PRINTR " of them."
+?CCL19: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \?CCL24
+ ICALL1 V-INVENTORY
+ RTRUE
+?CCL24: EQUAL? PRSA,V?PUT,V?PUT-UNDER,V?PUT-BEHIND \?CCL26
+ ICALL PERFORM,V?REACH-IN,PRSI
+ RTRUE
+?CCL26: EQUAL? PRSA,V?PUT-ON \?CCL28
+ ICALL PERFORM,V?TOUCH,PRSI
+ RTRUE
+?CCL28: EQUAL? PRSA,V?SCRATCH \?CCL30
+ ZERO? MOSS-TIMER /?CND31
+ ICALL1 DO-MOSS
+ RTRUE
+?CND31: PRINTI "Your hand isn't itchy"
+ PRINT AT-MOMENT
+ RTRUE
+?CCL30: INTBL? PRSA,HAVEVERBS,NHAVES >X \FALSE
+ ICALL1 IMPOSSIBLE
+ RTRUE
+
+
+ .FUNCT FEET-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ ICALL1 WASTE-OF-TIME
+ RTRUE
+?CCL3: EQUAL? PRSA,V?PUT-ON \?CCL7
+ ICALL PERFORM,V?STAND-ON,PRSI
+ RTRUE
+?CCL7: INTBL? PRSA,HAVEVERBS,NHAVES >X \FALSE
+ ICALL1 IMPOSSIBLE
+ RTRUE
+
+
+ .FUNCT MOUTH-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ EQUAL? PRSA,V?PUT,V?PUT-ON,V?THROW \?CCL6
+ ICALL PERFORM,V?EAT,PRSO
+ RTRUE
+?CCL6: EQUAL? PRSA,V?TOUCH-TO \?CND1
+ ICALL PERFORM,V?TASTE,PRSO
+ RTRUE
+?CCL3: EQUAL? PRSA,V?REACH-IN \?CCL9
+ PRINTR "How rude."
+?CCL9: EQUAL? PRSA,V?OPEN,V?OPEN-WITH,V?CLOSE \?CCL11
+ ICALL1 NO-NEED
+ RTRUE
+?CCL11: EQUAL? PRSA,V?RAPE,V?KICK,V?KISS \?CCL13
+ PRINTR "Good luck."
+?CCL13: INTBL? PRSA,HAVEVERBS,NHAVES >X \?CND1
+ ICALL1 IMPOSSIBLE
+ RTRUE
+?CND1: ICALL2 USELESS,MOUTH
+ RETURN 2
+
+
+ .FUNCT EYES-F,X
+ ZERO? NOW-PRSI? \?CND1
+ EQUAL? PRSA,V?OPEN \?CCL4
+ PRINTR "They are."
+?CCL4: EQUAL? PRSA,V?CLOSE \?CCL6
+ EQUAL? LAST-MONSTER,DORN \?CCL9
+ FSET? LAST-MONSTER,MUNGED /?CCL9
+ PRINTI "Something about "
+ ICALL2 THE-PRINT,LAST-MONSTER
+ PRINTR "'s roving gaze forces your eyes to snap open."
+?CCL9: ZERO? LAST-MONSTER /?CND7
+ PRINTI "That won't make "
+ ICALL2 THE-PRINT,LAST-MONSTER
+ PRINTR " go away."
+?CND7: ICALL1 V-SLEEP
+ RTRUE
+?CCL6: INTBL? PRSA,HAVEVERBS,NHAVES >X \?CND1
+ ICALL1 IMPOSSIBLE
+ RTRUE
+?CND1: ICALL2 USELESS,EYES
+ RETURN 2
+
+
+ .FUNCT HEAD-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ EQUAL? PRSA,V?PUT-ON \?CCL3
+ EQUAL? PRSO,HELM \?CND6
+ ICALL PERFORM,V?WEAR,PRSO
+ RTRUE
+?CND6: ICALL1 WASTE-OF-TIME
+ RTRUE
+?CCL3: INTBL? PRSA,HAVEVERBS,NHAVES >X \?CND1
+ ICALL1 IMPOSSIBLE
+ RTRUE
+?CND1: ICALL2 USELESS,HEAD
+ RETURN 2
+
+
+ .FUNCT ME-F,CONTEXT,ANY,OBJ,NXT,X
+ ZERO? NOW-PRSI? /?CCL3
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \?CCL6
+ ICALL1 WASTE-OF-TIME
+ RTRUE
+?CCL6: EQUAL? PRSA,V?COVER \?CCL8
+ ICALL PERFORM,V?STAND-ON,PRSO
+ RTRUE
+?CCL8: EQUAL? PRSA,V?PUT-ON,V?WRAP-AROUND \?CCL10
+ FSET? PRSO,CLOTHING \?CND11
+ ICALL PERFORM,V?WEAR,PRSO
+ RTRUE
+?CND11: ICALL1 IMPOSSIBLE
+ RTRUE
+?CCL10: EQUAL? PRSA,V?PUT \FALSE
+ ICALL PERFORM,V?TASTE,PRSO
+ RTRUE
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?SEARCH \?CCL15
+ PRINTI "You're "
+ FIRST? WINNER >OBJ /?PRG17
+?PRG17: ZERO? OBJ /?REP18
+ NEXT? OBJ >NXT /?BOGUS21
+?BOGUS21: FSET? OBJ,WORN \?CND22
+ SET 'ANY,TRUE-VALUE
+ MOVE OBJ,DUMMY-OBJECT
+?CND22: SET 'OBJ,NXT
+ JUMP ?PRG17
+?REP18: ZERO? ANY \?CND24
+ PRINTR "not wearing anything special."
+?CND24: PRINTI "wearing "
+ ICALL2 CONTENTS,DUMMY-OBJECT
+ PRINT PERIOD
+ ICALL MOVE-ALL,DUMMY-OBJECT,WINNER
+ RTRUE
+?CCL15: EQUAL? PRSA,V?NAME \?CCL27
+ PRINTI "You already have a name. It's "
+ ICALL2 PRINT-TABLE,CHARNAME
+ PRINT PERIOD
+ RETURN 2
+?CCL27: EQUAL? PRSA,V?LISTEN,V?SMELL \?CCL31
+ PRINT CANT
+ PRINTR "help doing that."
+?CCL31: EQUAL? PRSA,V?FIND,V?FOLLOW \?CCL33
+ PRINT STR?533
+ RTRUE
+?CCL33: EQUAL? PRSA,V?RAPE,V?KISS \?CCL35
+ PRINTR "Desperate?"
+?CCL35: EQUAL? PRSA,V?HIT \?CCL37
+ PRINTR "You're indispensable."
+?CCL37: INTBL? PRSA,HURTVERBS,NHVERBS >X \?CCL39
+ PRINTI "Punishing "
+ EQUAL? WINNER,PLAYER \?CCL42
+ PRINTI "your"
+ JUMP ?CND40
+?CCL42: FSET? WINNER,FEMALE \?CCL44
+ PRINTI "her"
+ JUMP ?CND40
+?CCL44: FSET? WINNER,PERSON \?CCL46
+ PRINTI "him"
+ JUMP ?CND40
+?CCL46: PRINTI "it"
+?CND40: PRINTI "self that way"
+ ICALL1 WONT-HELP
+ RTRUE
+?CCL39: CALL1 YOU-F
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT YOU-F,X
+ EQUAL? PRSA,V?WHO,V?WHAT,V?WHERE \?CCL3
+ PRINTR "Good question."
+?CCL3: EQUAL? PRSA,V?UNDRESS \?CCL5
+ ICALL1 INAPPROPRIATE
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EAT,V?TASTE,V?DRINK /?CTR6
+ EQUAL? PRSA,V?DRINK-FROM /?CTR6
+ INTBL? PRSA,HAVEVERBS,NHAVES >X \FALSE
+?CTR6: ICALL1 IMPOSSIBLE
+ RTRUE
+
+
+ .FUNCT INAPPROPRIATE
+ PRINTR "That would hardly be an appropriate thing to do."
+
+
+ .FUNCT WONT-HELP
+ PRINTR " isn't likely to help matters."
+
+
+ .FUNCT GLOBAL-ROOM-F,X
+ FSET? HERE,INDOORS \?CCL3
+ CALL NOUN-USED?,W?LANDSCAPE,W?HORIZON
+ ZERO? STACK /?CCL3
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?LOOK-INSIDE \?CCL7
+ ICALL1 V-LOOK
+ RTRUE
+?CCL7: INTBL? PRSA,E-VERBS,ENTER-VERBS >X /?CTR8
+ EQUAL? PRSA,V?DROP,V?EXIT \?CCL9
+?CTR8: ICALL1 V-WALK-AROUND
+ RETURN 2
+?CCL9: EQUAL? PRSA,V?WALK-AROUND \FALSE
+ PRINTI "Walking around the area reveals nothing new"
+ PRINT PTAB
+ PRINTI "[If you want to go somewhere, simply indicate a "
+ PRINTD INTDIR
+ PRINTR ".]"
+
+
+ .FUNCT CANT-SEE-ANY,THING,STRING?
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,NOT-HERE-OBJECT
+?CND1: SET 'CLOCK-WAIT?,TRUE-VALUE
+ ICALL1 PCLEAR
+ ICALL2 THIS-IS-IT,NOT-HERE-OBJECT
+ PRINT CANT
+ EQUAL? PRSA,V?LISTEN \?CCL5
+ PRINTB W?HEAR
+ JUMP ?CND3
+?CCL5: EQUAL? PRSA,V?SMELL \?CCL7
+ PRINTB W?SMELL
+ JUMP ?CND3
+?CCL7: PRINTB W?SEE
+?CND3: PRINTC SP
+ ZERO? STRING? /?CCL10
+ PRINT THING
+ JUMP ?CND8
+?CCL10: FSET? THING,PROPER \?CCL13
+ PRINT LTHE
+ JUMP ?CND11
+?CCL13: FSET? THING,NOARTICLE /?CND11
+ PRINTI "any "
+?CND11: ICALL2 DPRINT,THING
+?CND8: PRINTR " here."
+
+
+ .FUNCT HOW?
+ PRINTR "A noble idea. How do you intend to do it?"
+
+
+ .FUNCT NOT-LIKELY,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: PRINTI "It"
+ CALL2 PICK-NEXT,LIKELIES
+ PRINT STACK
+ PRINTI " that "
+ ICALL2 THE-PRINT,OBJ
+ RTRUE
+
+
+ .FUNCT YOUD-HAVE-TO,STR,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ICALL2 THIS-IS-IT,OBJ
+ EQUAL? WINNER,PLAYER \?CCL5
+ PRINTI "You'd "
+ JUMP ?CND3
+?CCL5: ICALL2 CTHE-PRINT,WINNER
+ PRINTI " would "
+?CND3: PRINTI "have to "
+ PRINT STR
+ PRINTC SP
+ ICALL2 THE-PRINT,OBJ
+ PRINTR " to do that."
+
+
+ .FUNCT GROUND-F,OBJ,NXT,X
+ EQUAL? HERE,IN-SKY \?CCL3
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL3
+ ICALL1 CANT-FROM-HERE
+ RTRUE
+?CCL3: ZERO? NOW-PRSI? /?CCL7
+ EQUAL? PRSA,V?PUT-ON,V?PUT,V?THROW /?CTR9
+ EQUAL? PRSA,V?THROW-OVER \?CCL10
+?CTR9: ICALL PERFORM,V?DROP,PRSO
+ RTRUE
+?CCL10: EQUAL? PRSA,V?WRITE-ON \FALSE
+ EQUAL? PRSO,GLYPH,GGLYPH /?CND14
+ ICALL1 IMPOSSIBLE
+ RTRUE
+?CND14: ICALL1 WRITE-GLYPH
+ RTRUE
+?CCL7: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?SEARCH \?CCL17
+ FIRST? HERE >OBJ \?CND18
+?PRG20: NEXT? OBJ >NXT /?BOGUS22
+?BOGUS22: FSET? OBJ,NODESC /?CCL24
+ FSET? OBJ,TAKEABLE /?CND23
+?CCL24: MOVE OBJ,C-OBJECT
+?CND23: SET 'OBJ,NXT
+ ZERO? OBJ \?PRG20
+?CND18: PRINT YOU-SEE
+ ICALL2 CONTENTS,HERE
+ PRINTI " on the "
+ ICALL1 GROUND-WORD
+ PRINT PERIOD
+ ICALL MOVE-ALL,C-OBJECT,HERE
+ RTRUE
+?CCL17: EQUAL? PRSA,V?CROSS \?CCL30
+ ICALL1 V-WALK-AROUND
+ RTRUE
+?CCL30: EQUAL? PRSA,V?LOOK-UNDER \?CCL32
+ PRINTR "Unfortunately, you left your X-ray glasses at home."
+?CCL32: EQUAL? PRSA,V?DIG,V?DIG-UNDER \FALSE
+ PRINTI "You dig around with "
+ ICALL1 THEI-PRINT
+ ICALL1 BUT-FIND-NOTHING
+ RTRUE
+
+
+ .FUNCT FLOOR-F,X
+ FSET? HERE,INDOORS /?CND1
+ ICALL2 CANT-SEE-ANY,FLOOR
+ RETURN 2
+?CND1: GETB CAVE-ROOMS,0 >X
+ INTBL? HERE,CAVE-ROOMS+1,X,1 >X /?CND5
+ EQUAL? HERE,IN-LAIR,NE-CAVE,SE-CAVE /?CND5
+ EQUAL? PRSA,V?DIG,V?DIG-UNDER \?CND5
+ PRINT CANT
+ PRINTR "do that here."
+?CND5: CALL1 GROUND-F
+ RSTACK
+
+
+ .FUNCT NO-NEED
+ PRINT DONT
+ PRINTR "need to do that."
+
+
+ .FUNCT NOT-IN,THING
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: ICALL2 THIS-IS-IT,THING
+ PRINTI "You're not in "
+ ICALL2 THE-PRINT,THING
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT NOT-ON,THING
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: ICALL2 THIS-IS-IT,THING
+ PRINTI "You're not on "
+ ICALL2 THE-PRINT,THING
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT ALREADY-IN,THING
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: ICALL2 THIS-IS-IT,THING
+ PRINT ALREADY
+ PRINTI "in "
+ ICALL2 THE-PRINT,THING
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT ALREADY-ON,THING
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: ICALL2 THIS-IS-IT,THING
+ PRINT ALREADY
+ PRINTI "on "
+ ICALL2 THE-PRINT,THING
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT ALREADY-AT-TOP,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ICALL ALREADY-AT,STR?859,OBJ
+ RTRUE
+
+
+ .FUNCT ALREADY-AT-BOTTOM,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ICALL ALREADY-AT,STR?860,OBJ
+ RTRUE
+
+
+ .FUNCT ALREADY-AT,STR,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ICALL2 THIS-IS-IT,OBJ
+ PRINT ALREADY
+ PRINTI "at the "
+ PRINT STR
+ PRINTI " of "
+ ICALL2 THE-PRINT,OBJ
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT CANT-SEE-MUCH
+ PRINT STR?760
+ PRINTR "from here."
+
+
+ .FUNCT NOT-A,STR
+ PRINTI "You're an adventurer, not a "
+ PRINT STR
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT OPEN-CLOSED,THING,VOWEL
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: FSET? THING,OPENED \?CCL5
+ ZERO? VOWEL /?CND6
+ PRINTC 110
+?CND6: PRINTI " open "
+ JUMP ?CND3
+?CCL5: PRINTI " closed "
+?CND3: ICALL2 DPRINT,THING
+ RTRUE
+
+
+ .FUNCT CANT-FROM-HERE
+ PRINT IMPOSSIBLY
+ PRINTI "do that"
+ ICALL1 STANDING
+ RTRUE
+
+
+ .FUNCT STANDING,X
+ ASSIGNED? 'X /?CND1
+ PRINTI " from where you're "
+?CND1: LOC PLAYER
+ EQUAL? STACK,SADDLE,PEW \?CCL5
+ PRINTI "sitt"
+ JUMP ?CND3
+?CCL5: PRINTB W?STAND
+?CND3: PRINTI "ing"
+ ASSIGNED? 'X /TRUE
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT IS-ARE,THING
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: PRINTC SP
+ FSET? THING,PLURAL \?CND3
+ PRINTI "are "
+ RTRUE
+?CND3: PRINTI "is "
+ RTRUE
+
+
+ .FUNCT ISNT-ARENT,THING
+ ASSIGNED? 'THING /?CND1
+ SET 'THING,PRSO
+?CND1: PRINTC SP
+ FSET? THING,PLURAL \?CCL5
+ PRINTI "are"
+ JUMP ?CND3
+?CCL5: PRINTI "is"
+?CND3: PRINTI "n't"
+ RTRUE
+
+
+ .FUNCT FIRMLY-ATTACHED,THING,TO,STR
+ ZERO? STR \?CCL3
+ ICALL2 THIS-IS-IT,THING
+ ICALL2 CTHE-PRINT,THING
+ ICALL2 IS-ARE,THING
+ JUMP ?CND1
+?CCL3: ICALL2 THIS-IS-IT,TO
+ PRINT XTHE
+ PRINT THING
+ PRINT SIS
+?CND1: CALL2 PICK-NEXT,FIRMS
+ PRINT STACK
+ PRINTI "ly "
+ CALL2 PICK-NEXT,ATTACHES
+ PRINT STACK
+ PRINT STO
+ ICALL2 THE-PRINT,TO
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT HERE-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ ICALL PERFORM,V?DROP,PRSO
+ RTRUE
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?LOOK-INSIDE /?CTR6
+ EQUAL? PRSA,V?SEARCH \?CCL7
+?CTR6: ICALL1 V-LOOK
+ RTRUE
+?CCL7: EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-OUTSIDE \?CCL11
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+?CCL11: EQUAL? PRSA,V?ENTER,V?WALK-TO,V?FIND \?CCL13
+ ICALL1 ALREADY-IN
+ RTRUE
+?CCL13: INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X /?CTR14
+ INTBL? PRSA,X-VERBS,CLIMB-DOWN-VERBS >X \FALSE
+?CTR14: ICALL1 V-WALK-AROUND
+ RTRUE
+
+
+ .FUNCT GLOBAL-HOLE-F
+ EQUAL? PRSA,V?DIG,V?SDIG \?CND1
+ ICALL1 WASTE-OF-TIME
+ RTRUE
+?CND1: PRINT CANT
+ PRINTR "see any here."
+
+
+ .FUNCT SOUND-F,X
+ GETP HERE,P?HEAR >X
+ ZERO? X /?CCL3
+ ZERO? NOW-PRSI? \?CND4
+ ICALL PERFORM,PRSA,X,PRSI
+ RTRUE
+?CND4: ICALL PERFORM,PRSA,PRSO,X
+ RTRUE
+?CCL3: INTBL? PRSA,SEEVERBS,NSVERBS >X /?CTR6
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+?CTR6: ICALL1 IMPOSSIBLE
+ RTRUE
+
+
+ .FUNCT GCORNER-F,X
+ FSET? HERE,INDOORS /?CCL3
+ ICALL2 CANT-SEE-ANY,GCORNER
+ RETURN 2
+?CCL3: ZERO? NOW-PRSI? /?CCL7
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ ICALL PERFORM,V?DROP,PRSO
+ RTRUE
+?CCL7: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?LOOK-ON /?CTR10
+ EQUAL? PRSA,V?SEARCH,V?LOOK-BEHIND,V?LOOK-UNDER \?CCL11
+?CTR10: ICALL1 V-LOOK
+ RTRUE
+?CCL11: INTBL? PRSA,E-VERBS,ENTER-VERBS >X \?CCL15
+ PRINT ALREADY
+ PRINTI "close enough to "
+ ICALL1 THE-PRINT
+ PRINT PERIOD
+ RTRUE
+?CCL15: INTBL? PRSA,X-VERBS,EXIT-VERBS >X \FALSE
+ ICALL1 V-WALK-AROUND
+ RTRUE
+
+
+ .FUNCT RL-F,X
+ ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X /?CTR4
+ INTBL? PRSA,X-VERBS,CLIMB-DOWN-VERBS >X \FALSE
+?CTR4: ICALL1 V-WALK-AROUND
+ RTRUE
+
+
+ .FUNCT GAME-F
+ EQUAL? PRSA,V?TOUCH,V?READ,V?EXAMINE \?CND1
+ PRINTI "[That's what you're doing.]"
+ CRLF
+ RETURN 2
+?CND1: ICALL2 USELESS,GAME
+ RETURN 2
+
+
+ .FUNCT READ-YES-LEXV,KEY
+ COPYT YES-LEXV,0,YES-LEXV-LENGTH
+ PUTB YES-LEXV,0,2
+ COPYT YES-INBUF,0,YES-INBUF-LENGTH
+ PUTB YES-INBUF,0,12
+?PRG1: COLOR INCOLOR,BGND
+ READ YES-INBUF,YES-LEXV >KEY
+ EQUAL? KEY,EOL,LF \?PRG1
+ COLOR FORE,BGND
+ RFALSE
+
+
+ .FUNCT YES-WORD?,WORD
+ ZERO? WORD /FALSE
+ EQUAL? WORD,W?Y,W?YES,W?YUP /TRUE
+ EQUAL? WORD,W?OKAY,W?OK,W?SURE /TRUE
+ RFALSE
+
+
+ .FUNCT NO-WORD?,WORD
+ ZERO? WORD /FALSE
+ EQUAL? WORD,W?N,W?NO,W?NOPE /TRUE
+ EQUAL? WORD,W?NEGATIVE,W?NAY /TRUE
+ RFALSE
+
+
+ .FUNCT YES?,WORD,TBL
+ COLOR FORE,BGND
+ CRLF
+?PRG1: CRLF
+ PRINTI "[Please type YES or NO.] >"
+ ICALL1 READ-YES-LEXV
+ GETB YES-LEXV,P-LEXWORDS
+ ZERO? STACK /?PRG1
+ GET YES-LEXV,P-LEXSTART >WORD
+ ZERO? WORD /?PRG1
+ CALL2 YES-WORD?,WORD
+ ZERO? STACK \TRUE
+ CALL2 NO-WORD?,WORD
+ ZERO? STACK /?PRG1
+ RFALSE
+
+
+ .FUNCT STARTUP,X,TBL,CNT
+ GETB VOCAB,0
+ ADD STACK,2
+ COPYT VOCAB,VOCAB2,STACK
+ ICALL1 DEFAULT-SOFTS
+ GET MACHINE-COLORS,HOST >TBL
+ ZERO? TBL /?CND1
+ GET TBL,1 >TBL
+ GETB TBL,0 >BGND
+ GETB TBL,1 >FORE
+ GETB TBL,2 >INCOLOR
+ GETB TBL,3 >GCOLOR
+?CND1: EQUAL? HOST,DEC-20 \?CND3
+ CLEAR -1
+ CRLF
+ PRINTI "Is this a VT220?"
+ CALL1 YES?
+ ZERO? STACK \?CND3
+ SET 'VT100,TRUE-VALUE
+ ICALL1 SETUP-APPLE-MODE
+?CND3: COLOR FORE,BGND
+ CLEAR -1
+ CRLF
+ PRINT STR?573
+ CRLF
+ PRINT STR?861
+ PRINTI "begin a new game, restore a saved game, or quit?"
+ CRLF
+ CRLF
+?PRG7: COLOR FORE,BGND
+ PRINTI "[Type BEGIN, RESTORE or QUIT.] >"
+ ICALL1 READ-YES-LEXV
+ GETB YES-LEXV,P-LEXWORDS
+ ZERO? STACK /?PRG7
+ GET YES-LEXV,P-LEXSTART >X
+ ZERO? X /?PRG7
+ EQUAL? X,W?BEGIN,W?B,W?RESTART \?CCL15
+ ICALL1 PROLOGUE
+ CLEAR -1
+ RTRUE
+?CCL15: EQUAL? X,W?RESTORE \?CCL17
+ ICALL1 V-RESTORE
+ CRLF
+ JUMP ?PRG7
+?CCL17: EQUAL? X,W?Q,W?QUIT \?PRG7
+ CRLF
+ QUIT
+ RFALSE
+
+
+ .FUNCT SHOW-MENU-ITEM,LINE,INV,X
+ ADD LINE,7
+ ICALL CENTER,STACK,35
+ COLOR GCOLOR,BGND
+ HLIGHT H-NORMAL
+ ZERO? INV /?CND1
+ ZERO? COLORS? /?CCL5
+ EQUAL? FORE,GCOLOR /?CCL5
+ COLOR FORE,BGND
+ JUMP ?CND1
+?CCL5: HLIGHT H-INVERSE
+?CND1: GET MENU-LIST,LINE
+ PRINT STACK
+ RFALSE
+
+
+ .FUNCT SETUP-CHARACTER,LAST,X,STAT
+ PUTB DBOX,0,SP
+ COPYT DBOX,DBOX+1,-1551
+?PRG1: COLOR FORE,BGND
+ CLEAR -1
+ SPLIT 14
+ FSET? PLAYER,NAMED \?CND3
+ ICALL2 SHOW-RANK,WIDTH
+?CND3: ICALL1 TO-TOP-WINDOW
+ COLOR FORE,BGND
+ ICALL CENTER,5,15
+ PRINTI "Character Setup"
+ SET 'STAT,0
+?PRG5: ICALL2 SHOW-MENU-ITEM,STAT
+ IGRTR? 'STAT,4 \?PRG5
+ ICALL1 USE-ARROWS
+ PRINT STR?862
+ SET 'STAT,LAST
+?PRG9: ICALL1 TO-TOP-WINDOW
+ ICALL SHOW-MENU-ITEM,STAT,1
+ ICALL1 TO-BOTTOM-WINDOW
+ CALL1 DO-INPUT >X
+ EQUAL? X,DOWN-ARROW,SP,UP-ARROW \?CCL13
+ ICALL1 TO-TOP-WINDOW
+ ICALL2 SHOW-MENU-ITEM,STAT
+ EQUAL? X,UP-ARROW \?CND14
+ DLESS? 'STAT,0 \?PRG9
+ SET 'STAT,4
+ JUMP ?PRG9
+?CND14: IGRTR? 'STAT,4 \?PRG9
+ SET 'STAT,0
+ JUMP ?PRG9
+?CCL13: EQUAL? X,EOL,LF \?CND11
+ ZERO? STAT \?CCL23
+ ICALL1 QUICK-SETUP
+ JUMP ?REP10
+?CCL23: EQUAL? STAT,1 \?CCL25
+ ICALL1 PICK-A-CHAR
+ JUMP ?REP10
+?CCL25: EQUAL? STAT,2 \?CCL27
+ ICALL1 ROLL-YOUR-OWN
+ JUMP ?REP10
+?CCL27: EQUAL? STAT,3 \?CND21
+ ICALL1 MANUAL
+ CRLF
+ ZERO? POTENTIAL /?REP10
+ CRLF
+ PRINTI "Your unused Potential has been evenly distributed."
+ CRLF
+?REP10: ICALL1 TO-BOTTOM-WINDOW
+ CRLF
+ ZERO? STAT /?REP2
+ SET 'LAST,STAT
+ PRINT STR?863
+ PRINTI "these are the attributes you want?"
+ CALL1 YES?
+ ZERO? STACK /?PRG1
+ ICALL1 GET-SEX
+ ICALL1 GET-NAME
+ FSET PLAYER,NAMED
+ ICALL2 SHOW-RANK,WIDTH
+ PRINT STR?863
+ ICALL2 PRINT-TABLE,CHARNAME
+ PRINTI " is the character you want?"
+ CALL1 YES?
+ ZERO? STACK /?PRG1
+?REP2: SET 'SAY-STAT,TRUE-VALUE
+ COPYT STATS,MAXSTATS,16
+ ZERO? STAT /?CND37
+ PRINT STR?861
+ PRINTI "save this character before you proceed?"
+ CALL1 YES?
+ ZERO? STACK /?CND37
+ PUTB OOPS-INBUF,1,0
+ SAVE >X
+ ZERO? X \?CCL43
+ ICALL2 FAILED,STR?567
+ JUMP ?CND37
+?CND21: CRLF
+ CRLF
+ ICALL1 V-QUIT
+ ICALL1 TO-TOP-WINDOW
+ ICALL2 SHOW-MENU-ITEM,STAT
+ ICALL1 USE-ARROWS
+ PRINT STR?862
+ SET 'STAT,0
+ JUMP ?PRG9
+?CND11: SOUND 2
+ JUMP ?PRG9
+?CCL43: EQUAL? X,1 \?CCL45
+ ICALL2 COMPLETED,STR?567
+?CND37: SET 'CHECKSUM,0
+ SET 'STAT,ENDURANCE
+?PRG46: GET STATS,STAT
+ ADD CHECKSUM,STACK >CHECKSUM
+ IGRTR? 'STAT,LUCK \?PRG46
+ GRTR? CHECKSUM,66 \?CND50
+ ICALL1 CHEATER
+ RFALSE
+?CCL45: ICALL1 INITVARS
+ RFALSE
+?CND50: CRLF
+ PRINTI "Press any key to begin the story. >"
+ INPUT 1 >X
+ RFALSE
+
+
+ .FUNCT QUICK-SETUP
+ GET CSTATS,0
+ COPYT STACK,STATS,12
+ COPYT DEFAULT-NAME,CHARNAME,DEFAULT-NAME-LENGTH
+ FSET PLAYER,NAMED
+ FCLEAR PLAYER,FEMALE
+ ICALL2 SHOW-RANK,WIDTH
+ RFALSE
+
+
+ .FUNCT SETUP-TOP,NOCLEAR,STAT
+ CLEAR S-WINDOW
+ PUT STATS,EXPERIENCE,BEGINNERS-EXPERIENCE
+ FSET? PLAYER,NAMED \?CND1
+ ICALL2 SHOW-RANK,WIDTH
+?CND1: ZERO? VT220 \?CCL5
+ ICALL1 APPLE-BARS
+ JUMP ?CND3
+?CCL5: SUB WIDTH,BARWIDTH
+ DIV STACK,2
+ SUB STACK,1
+ ICALL STATBARS,3,STACK,LUCK
+?CND3: SET 'IN-DBOX,SHOWING-STATS
+ RFALSE
+
+
+ .FUNCT APPLE-BARS,Y,X,STAT
+ ASSIGNED? 'Y /?CND1
+ SET 'Y,4
+?CND1: SET 'BARY,Y
+ ASSIGNED? 'X /?CND3
+ SUB WIDTH,18
+ DIV STACK,2 >X
+?CND3: SET 'BARX,X
+ ICALL1 TO-TOP-WINDOW
+ SUB BARX,1
+ CURSET 3,STACK
+ HLIGHT H-INVERSE
+ PRINTT DBOX,APPBOX,8
+ CURSET BARY,BARX
+ PRINTT BAR-LABELS,LABEL-WIDTH,ARMOR-CLASS
+?PRG5: GET STATS,STAT
+ ICALL BAR-NUMBER,STAT,STACK
+ IGRTR? 'STAT,LUCK \?PRG5
+ ICALL1 TO-BOTTOM-WINDOW
+ RFALSE
+
+
+ .FUNCT PICK-A-CHAR,CHAR,LMARGIN,NX,NY,NTBL,X
+ CLEAR S-WINDOW
+ FSET? PLAYER,NAMED \?CND1
+ ICALL2 SHOW-RANK,WIDTH
+?CND1: SET 'X,BARWIDTH
+ ZERO? VT220 \?CND3
+ SET 'X,APPBOX
+?CND3: ADD BARMAR,X
+ SUB WIDTH,STACK
+ DIV STACK,2 >NX
+ SUB NX,1 >LMARGIN
+ SET 'IN-DBOX,SHOWING-STATS
+ ICALL1 TO-TOP-WINDOW
+ ZERO? VT220 \?PRG7
+ COLOR FORE,BGND
+ ICALL DO-CURSET,3,LMARGIN
+ HLIGHT H-INVERSE
+ PRINTT DBOX,9,8
+?PRG7: ADD CHAR,4
+ ICALL DO-CURSET,STACK,NX
+ GET CNAMES,CHAR
+ PRINT STACK
+ IGRTR? 'CHAR,5 \?PRG7
+ GET CSTATS,0
+ COPYT STACK,STATS,12
+ ADD LMARGIN,BARMAR
+ ADD STACK,1 >X
+ ZERO? VT220 \?CCL13
+ ICALL APPLE-BARS,4,X
+ JUMP ?CND11
+?CCL13: ICALL STATBARS,4,X,LUCK
+?CND11: ICALL1 USE-ARROWS
+ PRINTI "select the character you want"
+ ICALL1 PRESS-RETURN
+ ICALL1 TO-TOP-WINDOW
+ SET 'CHAR,0
+?PRG14: ADD CHAR,4 >NY
+ GET CNAMES,CHAR >NTBL
+ ICALL DO-CURSET,NY,NX
+ COLOR FORE,BGND
+ ZERO? VT220 \?CCL18
+ HLIGHT H-NORMAL
+ JUMP ?CND16
+?CCL18: ZERO? COLORS? /?CCL19
+ EQUAL? FORE,GCOLOR \?CND16
+?CCL19: HLIGHT H-INVERSE
+?CND16: HLIGHT H-MONO
+ PRINT NTBL
+ GET CSTATS,CHAR
+ COPYT STACK,STATS,12
+ HLIGHT H-NORMAL
+ SET 'X,ENDURANCE
+?PRG22: GET STATS,X
+ ICALL STAT-ROUTINE,X,STACK
+ IGRTR? 'X,LUCK \?PRG22
+ ICALL1 TO-BOTTOM-WINDOW
+?PRG26: CALL1 DO-INPUT >X
+ EQUAL? X,EOL,LF \?CCL30
+ ICALL1 SETUP-TOP
+ RFALSE
+?CCL30: EQUAL? X,DOWN-ARROW,SP,UP-ARROW \?CND28
+ ICALL1 TO-TOP-WINDOW
+ ICALL DO-CURSET,NY,NX
+ COLOR FORE,BGND
+ ZERO? VT220 \?CCL34
+ HLIGHT H-INVERSE
+ JUMP ?CND32
+?CCL34: HLIGHT H-NORMAL
+ ZERO? COLORS? /?CND32
+ COLOR GCOLOR,BGND
+?CND32: HLIGHT H-MONO
+ PRINT NTBL
+ EQUAL? X,UP-ARROW /?CND37
+ IGRTR? 'CHAR,5 \?PRG14
+ SET 'CHAR,0
+ JUMP ?PRG14
+?CND37: DLESS? 'CHAR,0 \?PRG14
+ SET 'CHAR,5
+ JUMP ?PRG14
+?CND28: SOUND S-BOOP
+ JUMP ?PRG26
+
+
+ .FUNCT USE-ARROWS,X
+ ICALL1 TO-BOTTOM-WINDOW
+ CRLF
+ CRLF
+ PRINTI "Use the "
+ EQUAL? HOST,MACINTOSH \?CCL3
+ PRINTI "[SPACE] bar to "
+ RFALSE
+?CCL3: ZERO? VT220 /?CCL5
+ FONT F-NEWFONT >X
+ PRINTC 92
+ JUMP ?CND1
+?CCL5: EQUAL? HOST,IBM \?CCL7
+ PRINTC 24
+ JUMP ?CND1
+?CCL7: EQUAL? HOST,APPLE-2C \?CCL9
+ FONT F-NEWFONT >X
+ PRINTC 75
+ JUMP ?CND1
+?CCL9: PRINTI "UP"
+?CND1: FONT F-DEFAULT >X
+ PRINT AND
+ ZERO? VT220 /?CCL12
+ FONT F-NEWFONT >X
+ PRINTC 93
+ JUMP ?CND10
+?CCL12: EQUAL? HOST,IBM \?CCL14
+ PRINTC 25
+ JUMP ?CND10
+?CCL14: EQUAL? HOST,APPLE-2C \?CCL16
+ FONT F-NEWFONT >X
+ PRINTC 74
+ JUMP ?CND10
+?CCL16: PRINTI "DOWN arrow"
+?CND10: FONT F-DEFAULT >X
+ PRINTI " keys to "
+ RFALSE
+
+
+ .FUNCT PRESS-RETURN
+ PRINT PERIOD
+ CRLF
+ PRINTI "Press [RETURN] when you're finished. >"
+ RTRUE
+
+
+ .FUNCT MANUAL,A,OA,X,NX,Y,Z,BX,OBX,OP,KEY,TBL
+ SET 'A,ENDURANCE
+?PRG1: PUT STATS,A,1
+ IGRTR? 'A,ARMOR-CLASS \?PRG1
+ ICALL1 SETUP-TOP
+ SET 'POTENTIAL,INIT-POTENTIAL
+ ICALL1 TO-TOP-WINDOW
+ ADD BARY,7 >Y
+ ZERO? VT220 \?CCL7
+ SUB BARX,1
+ CURSET Y,STACK
+ HLIGHT H-INVERSE
+ PRINTT DBOX,APPBOX,2
+ CURSET Y,BARX
+ PRINTI " Potential"
+ ICALL BAR-NUMBER,7,POTENTIAL
+ JUMP ?CND5
+?CCL7: ADD BARY,ARMOR-CLASS
+ ICALL DO-CURSET,STACK,BARX
+ PRINTT DBOX,BARWIDTH
+ ICALL DO-CURSET,Y,BARX
+ COLOR FORE,BGND
+ PRINTI " Potential"
+ ICALL RAWBAR,7,POTENTIAL
+?CND5: ICALL1 USE-ARROWS
+ PRINTI "select an attribute. Then use the "
+ EQUAL? HOST,MACINTOSH \?CCL10
+ PRINTC 43
+ JUMP ?CND8
+?CCL10: ZERO? VT220 /?CCL12
+ FONT F-NEWFONT >Z
+ PRINTC 33
+ JUMP ?CND8
+?CCL12: EQUAL? HOST,IBM \?CCL14
+ PRINTC 27
+ JUMP ?CND8
+?CCL14: EQUAL? HOST,APPLE-2C \?CCL16
+ FONT F-NEWFONT >Z
+ PRINTC 72
+ JUMP ?CND8
+?CCL16: PRINTI "LEFT"
+?CND8: FONT F-DEFAULT >Z
+ PRINT AND
+ EQUAL? HOST,MACINTOSH \?CCL19
+ PRINTC 45
+ JUMP ?CND17
+?CCL19: ZERO? VT220 /?CCL21
+ FONT F-NEWFONT >Z
+ PRINTC 34
+ JUMP ?CND17
+?CCL21: EQUAL? HOST,IBM \?CCL23
+ PRINTC 26
+ JUMP ?CND17
+?CCL23: EQUAL? HOST,APPLE-2C \?CCL25
+ FONT F-NEWFONT >Z
+ PRINTC 85
+ JUMP ?CND17
+?CCL25: PRINTI "RIGHT arrow"
+?CND17: FONT F-DEFAULT >Z
+ PRINTI " keys to adjust that attribute"
+ ICALL1 PRESS-RETURN
+ SET 'OP,-1
+ SET 'OA,-1
+ SET 'A,ENDURANCE
+?PRG26: ICALL1 TO-TOP-WINDOW
+ MUL A,LABEL-WIDTH
+ ADD BAR-LABELS,STACK >TBL
+ EQUAL? A,OA /?CND28
+ SET 'OA,A
+ ADD BARY,A
+ ICALL DO-CURSET,STACK,BARX
+ COLOR FORE,BGND
+ ZERO? VT220 /?CND30
+ HLIGHT H-INVERSE
+?CND30: PRINTT TBL,LABEL-WIDTH
+ HLIGHT H-NORMAL
+ HLIGHT H-MONO
+ COLOR GCOLOR,BGND
+?CND28: EQUAL? OP,POTENTIAL /?CND32
+ ICALL STAT-ROUTINE,7,POTENTIAL
+ SET 'OP,POTENTIAL
+?CND32: ICALL1 TO-BOTTOM-WINDOW
+ CALL1 DO-INPUT >KEY
+ EQUAL? KEY,EOL,LF /?REP27
+ ICALL1 TO-TOP-WINDOW
+ EQUAL? KEY,UP-ARROW,DOWN-ARROW,SP \?CCL38
+ ADD BARY,A
+ ICALL DO-CURSET,STACK,BARX
+ COLOR FORE,BGND
+ ZERO? VT220 \?CND39
+ HLIGHT H-INVERSE
+?CND39: PRINTT TBL,LABEL-WIDTH
+ HLIGHT H-NORMAL
+ HLIGHT H-MONO
+ COLOR GCOLOR,BGND
+ EQUAL? KEY,UP-ARROW \?CND41
+ DLESS? 'A,ENDURANCE \?PRG26
+ SET 'A,LUCK
+ JUMP ?PRG26
+?CND41: IGRTR? 'A,LUCK \?PRG26
+ SET 'A,ENDURANCE
+ JUMP ?PRG26
+?CCL38: EQUAL? KEY,LEFT-ARROW,45,95 \?CCL48
+ EQUAL? POTENTIAL,INIT-POTENTIAL /?CCL48
+ GET STATS,A >X
+ GRTR? X,1 \?CND36
+ INC 'POTENTIAL
+ SUB X,1 >NX
+ PUT STATS,A,NX
+ ICALL STAT-ROUTINE,A,NX
+ JUMP ?PRG26
+?CCL48: ZERO? POTENTIAL /?CND36
+ EQUAL? KEY,RIGHT-ARROW,43,61 \?CND36
+ DEC 'POTENTIAL
+ GET STATS,A >X
+ ADD X,1 >NX
+ PUT STATS,A,NX
+ ICALL STAT-ROUTINE,A,NX
+ JUMP ?PRG26
+?CND36: SOUND 2
+ JUMP ?PRG26
+?REP27: ICALL1 TO-TOP-WINDOW
+ ICALL1 FUDGE-STATS
+ COPYT STATS,MAXSTATS,16
+ SET 'A,ENDURANCE
+?PRG55: GET STATS,A
+ ICALL STAT-ROUTINE,A,STACK
+ IGRTR? 'A,LUCK \?PRG55
+ ZERO? VT220 \?CCL61
+ SUB BARX,1
+ ICALL DO-CURSET,Y,STACK
+ PRINTT DBOX,18,2
+ HLIGHT H-INVERSE
+ JUMP ?CND59
+?CCL61: ICALL DO-CURSET,Y,BARX
+ HLIGHT H-NORMAL
+ HLIGHT H-MONO
+ PRINTT DBOX,BARWIDTH
+ COLOR FORE,BGND
+?CND59: ICALL DO-CURSET,BARY,BARX
+ PRINTT BAR-LABELS,LABEL-WIDTH,ARMOR-CLASS
+ ICALL1 TO-BOTTOM-WINDOW
+ RFALSE
+
+
+ .FUNCT ROLL-YOUR-OWN,STAT,XSTAT,OLD,DELTA,STAT-ORDER,X
+ SET 'STAT,ENDURANCE
+?PRG1: PUT STATS,STAT,1
+ IGRTR? 'STAT,ARMOR-CLASS \?PRG1
+ ICALL1 SETUP-TOP
+ ICALL1 TO-BOTTOM-WINDOW
+ CRLF
+ CRLF
+ PRINTI "A new set of attributes will appear each time you press the [SPACE] bar."
+ CRLF
+ CRLF
+ PRINTI "Press [RETURN] to select a set that you like. >"
+ PUT AUX-TABLE,0,7
+ ADD AUX-TABLE,4 >STAT-ORDER
+ SET 'STAT,ENDURANCE
+?PRG5: PUT STAT-ORDER,STAT,STAT
+ IGRTR? 'STAT,LUCK \?PRG5
+ ADD AUX-TABLE,20 >STAT-ORDER
+?PRG9: ICALL1 TO-TOP-WINDOW
+ PUT AUX-TABLE,1,0
+ SET 'STAT,ENDURANCE
+?PRG11: CALL2 PICK-ONE,AUX-TABLE
+ PUTB STAT-ORDER,STAT,STACK
+ IGRTR? 'STAT,LUCK \?PRG11
+ SET 'POTENTIAL,66
+ SET 'STAT,ENDURANCE
+?PRG15: GETB STAT-ORDER,STAT >XSTAT
+ SET 'DELTA,1
+ ZERO? POTENTIAL /?CND17
+ RANDOM 11 >DELTA
+ DEC 'DELTA
+ SUB SPREAD,DELTA
+ ADD AVERAGE,STACK >DELTA
+ GRTR? DELTA,POTENTIAL \?CND19
+ SET 'DELTA,POTENTIAL
+?CND19: SUB POTENTIAL,DELTA >POTENTIAL
+?CND17: PUT STATS,XSTAT,DELTA
+ IGRTR? 'STAT,LUCK \?PRG15
+ ICALL1 FUDGE-STATS
+ SET 'STAT,ENDURANCE
+?PRG23: GET STATS,STAT
+ ICALL STAT-ROUTINE,STAT,STACK
+ IGRTR? 'STAT,LUCK \?PRG23
+ ICALL1 TO-BOTTOM-WINDOW
+?PRG27: INPUT 1 >X
+ EQUAL? X,EOL,LF /FALSE
+ EQUAL? X,SP /?PRG9
+ SOUND S-BOOP
+ JUMP ?PRG27
+
+
+ .FUNCT FUDGE-STATS,TOTAL,STAT
+ ZERO? POTENTIAL /FALSE
+ SET 'TOTAL,POTENTIAL
+?PRG3: GET STATS,STAT
+ ADD STACK,1
+ PUT STATS,STAT,STACK
+ DLESS? 'TOTAL,1 /FALSE
+ IGRTR? 'STAT,LUCK \?PRG3
+ SET 'STAT,ENDURANCE
+ JUMP ?PRG3
+
+
+ .FUNCT GET-NAME,CNT,PTR,APO,DASH,BAD,ANY,CAP,SPACE,LEN,X,CHAR
+ FSET? PLAYER,NAMED /?CND1
+ COPYT DEFAULT-NAME,CHARNAME,DEFAULT-NAME-LENGTH
+?CND1: CRLF
+ PRINTI "Finally, you must select a Name for your character.
+
+By what Name shall your character be known?"
+?PRG3: COPYT P-INBUF,0,P-INBUF-LENGTH
+ PUTB P-INBUF,0,80
+ CRLF
+ CRLF
+ PRINTI "[The default is """
+ ICALL2 PRINT-TABLE,CHARNAME
+ PRINTI ".""] >"
+?PRG5: COLOR INCOLOR,BGND
+ READ P-INBUF,0 >X
+ EQUAL? X,EOL,LF /?REP6
+ SOUND 2
+ JUMP ?PRG5
+?REP6: COLOR FORE,BGND
+ GETB P-INBUF,1 >LEN
+ ZERO? LEN /?REP4
+ ADD LEN,1 >X
+ SET 'PTR,2
+ SET 'APO,0
+ SET 'DASH,0
+ SET 'BAD,0
+ SET 'ANY,0
+?PRG11: GETB P-INBUF,PTR >CHAR
+ GRTR? CHAR,96 \?CCL15
+ LESS? CHAR,123 \?CCL15
+ INC 'ANY
+ JUMP ?CND13
+?CCL15: EQUAL? CHAR,SP /?CND13
+ EQUAL? CHAR,39 \?CCL20
+ INC 'APO
+ JUMP ?CND13
+?CCL20: EQUAL? CHAR,45 \?CCL22
+ INC 'DASH
+?CND13: IGRTR? 'PTR,X \?PRG11
+?REP12: ZERO? ANY /?CTR26
+ ZERO? BAD \?CTR26
+ GRTR? APO,1 /?CTR26
+ GRTR? DASH,1 \?CCL27
+?CTR26: ICALL2 BAD-NAME,STR?864
+ JUMP ?PRG3
+?CCL22: INC 'BAD
+ JUMP ?REP12
+?CCL27: GRTR? LEN,CHARNAME-LENGTH \?CND25
+ ICALL2 BAD-NAME,STR?552
+ JUMP ?PRG3
+?CND25: COPYT CHARNAME,0,25
+ SET 'CNT,0
+ SET 'PTR,2
+ SET 'CAP,1
+ SET 'SPACE,0
+ SET 'ANY,0
+?PRG33: GETB P-INBUF,PTR >CHAR
+ EQUAL? CHAR,SP \?CCL37
+ INC 'CAP
+ INC 'SPACE
+ ZERO? ANY /?CND35
+ EQUAL? SPACE,1 \?CND35
+ INC 'CNT
+ PUTB CHARNAME,CNT,SP
+ JUMP ?CND35
+?CCL37: INC 'ANY
+ SET 'SPACE,0
+ EQUAL? CHAR,39,45 \?CCL44
+ INC 'CAP
+ JUMP ?CND42
+?CCL44: ZERO? CAP /?CND42
+ SET 'CAP,0
+ SUB CHAR,SP >CHAR
+?CND42: INC 'CNT
+ PUTB CHARNAME,CNT,CHAR
+?CND35: IGRTR? 'PTR,X \?PRG33
+ PUTB CHARNAME,0,CNT
+ CRLF
+ PRINTI "Is """
+ ICALL2 PRINT-TABLE,CHARNAME
+ PRINTI """ correct?"
+ CALL1 YES?
+ ZERO? STACK \?REP4
+ ICALL2 BAD-NAME,STR?865
+ JUMP ?PRG3
+?REP4: FSET PLAYER,NAMED
+ ICALL2 SHOW-RANK,WIDTH
+ RFALSE
+
+
+ .FUNCT BAD-NAME,STR
+ CRLF
+ PRINTI "That name is "
+ PRINT STR
+ PRINTI ". Please supply another."
+ RFALSE
+
+
+ .FUNCT GET-SEX,WORD
+ CRLF
+ PRINTI "Shall your character be male or female?"
+?PRG1: CRLF
+ CRLF
+ PRINTI "[The default is "
+ FSET? PLAYER,FEMALE \?CND3
+ PRINTI "FE"
+?CND3: PRINTI "MALE.] >"
+ ICALL1 READ-YES-LEXV
+ GETB YES-LEXV,P-LEXWORDS
+ ZERO? STACK /TRUE
+ GET YES-LEXV,P-LEXSTART >WORD
+ EQUAL? WORD,W?M,W?MALE,W?MAN /FALSE
+ EQUAL? WORD,W?F,W?FEMALE,W?WOMAN \?CND7
+ FSET PLAYER,FEMALE
+ RFALSE
+?CND7: CRLF
+ PRINTI "[Please type MALE or FEMALE.]"
+ JUMP ?PRG1
+
+
+ .FUNCT WAY-TO-TALK
+ ICALL1 PCLEAR
+ LOC RIDDLE
+ EQUAL? HERE,STACK \?CND1
+ PRINT STR?512
+ CRLF
+ RTRUE
+?CND1: ICALL2 SEE-MANUAL,STR?866
+ RTRUE
+
+
+ .FUNCT NOT-AVAILABLE
+ ICALL1 NYMPH-APPEARS
+ PRINTI "Sorry, that feature isn't available. Consult your "
+ ICALL2 ITALICIZE,STR?867
+ PRINTI " manual for more information"
+ PRINT STR?515
+ RTRUE
+
+
+ .FUNCT USELESS,THING,STRING
+ ICALL1 NYMPH-APPEARS
+ PRINT DONT
+ PRINTI "need to refer to "
+ ASSIGNED? 'STRING \?CCL3
+ PRINT LTHE
+ PRINT THING
+ JUMP ?CND1
+?CCL3: ASSIGNED? 'THING \?CCL5
+ ICALL2 THE-PRINT,THING
+ JUMP ?CND1
+?CCL5: PRINTD PSEUDO-OBJECT
+?CND1: ICALL1 TO-COMPLETE
+ RTRUE
+
+
+ .FUNCT TO-COMPLETE
+ PRINTI " to complete this story"
+ PRINT STR?515
+ RTRUE
+
+
+ .FUNCT NYMPH-APPEARS,STR
+ ICALL1 PCLEAR
+ PRINT XA
+ ASSIGNED? 'STR /?CCL3
+ PRINTI "technical"
+ JUMP ?CND1
+?CCL3: PRINT STR
+?CND1: PRINTI " nymph appears on your keyboard. """
+ RTRUE
+
+
+ .FUNCT SEE-MANUAL,STR
+ ICALL1 NYMPH-APPEARS
+ PRINTI "Refer to your "
+ ICALL2 ITALICIZE,STR?867
+ PRINTI " manual for the correct way to "
+ PRINT STR
+ PRINT STR?515
+ RTRUE
+
+
+ .FUNCT REFER-TO-PACKAGE,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,PRSO
+?CND1: ICALL2 NYMPH-APPEARS,STR?868
+ PRINTI "You'll find "
+ EQUAL? PRSA,V?EXAMINE \?CCL5
+ PRINTI "a drawing of "
+ ICALL2 THE-PRINT,OBJ
+ JUMP ?CND3
+?CCL5: PRINTI "that information"
+?CND3: PRINTI " in your "
+ ICALL2 ITALICIZE,STR?867
+ PRINTI " package"
+ PRINT STR?515
+ RTRUE
+
+
+ .FUNCT NONE-TO-BE-SEEN
+ PRINTR "There are none to be seen."
+
+
+ .FUNCT GENERIC-MONSTER-F,TBL,LEN,X
+ ASSIGNED? 'LEN /?CND1
+ GET TBL,0 >LEN
+?CND1: ADD TBL,2 >TBL
+ ZERO? LAST-MONSTER /?CND3
+ INTBL? LAST-MONSTER,TBL,LEN >X \?CND3
+ RETURN LAST-MONSTER
+?CND3: INTBL? P-IT-OBJECT,TBL,LEN >X \?PRG8
+ RETURN P-IT-OBJECT
+?PRG8: DLESS? 'LEN,0 /FALSE
+ GET TBL,LEN >X
+ FSET? X,LIVING \?PRG8
+ FSET? X,SLEEPING /?PRG8
+ RETURN X
+
+
+ .FUNCT NOBODY-TO-ASK
+ ICALL1 PCLEAR
+ PRINTR "There's nobody here to ask."
+
+
+ .FUNCT TALK-TO-SELF
+ ICALL1 PCLEAR
+ LOC RIDDLE
+ EQUAL? HERE,STACK \?CND1
+ PRINT STR?512
+ CRLF
+ RTRUE
+?CND1: PRINTR "[You must address characters directly.]"
+
+
+ .FUNCT DESCRIBE-DEATH,OBJ
+ FSET? OBJ,MUNGED \?CND1
+ PRINTI "Defeated"
+ RTRUE
+?CND1: PRINTD OBJ
+ RTRUE
+
+
+ .FUNCT KILL-URGRUE
+ PRINTI ", directly into the core of the shadow!
+ The thing within stands revealed to you for one brief instant. Then your sanity is spared by a blinding flash and concussion that throws you hard against the far wall..."
+ ICALL1 CARRIAGE-RETURNS
+ PRINT XTHE
+ PRINTI "sound of sobbing jolts you to your senses.
+ In the corner lies a feeble old man, bent with grief. His robes are tattered, his white hair scorched by flame. You slowly rise and draw closer, bending low to touch his shoulder"
+ PRINT PTAB
+ ICALL1 CLAMP
+ PRINT TAB
+ PRINTI """I can always count on fools like you for sympathy,"" chuckles the not-so-feeble old man as he holds your windpipe shut. ""Still, though your mind is weak, your body is young and strong. It will make a suitable vessel until I can find another grue."" He grabs your hair, pulls your head back and directs your eyes into his own. ""Relax. This won't hurt a bit.""
+ Your fear turns to resentment, then to rage as the old man violates your mind, absorbing your compassion like a sponge as he fights to take possession of your soul."
+ CRLF
+ ICALL UPDATE-STAT,WINNING-COMPASSION,COMPASSION
+ PRINT TAB
+ PRINTI """Enough!""
+ The fingers on your neck drop away, "
+ GET STATS,COMPASSION
+ ZERO? STACK /?CND1
+ ICALL2 VANISH,URGRUE
+ ICALL2 DEQUEUE,I-URGRUE
+ FCLEAR URGRUE,LIVING
+ SET 'LAST-MONSTER,FALSE-VALUE
+ PRINTI "leaving you gasping but alive. You stumble backwards to find the old man leaning against the wall, breathing hard, his eyes brimming with tears.
+ ""Enough,"" he cries again, gesturing towards the exit. ""Take what you want and leave this place! I cannot bring myself to murder one so virtuous. Go!"" His voice is bitter with despair. ""Leave me to wallow in Compassion.""
+ With these last words, the broken man fades into nothingness."
+ CRLF
+ GETP URGRUE,P?VALUE
+ ICALL UPDATE-STAT,STACK,EXPERIENCE,TRUE-VALUE
+ RTRUE
+?CND1: PRINTI "and the carcass of your former self slumps to the ground. You kick it aside with a chuckle, and pause to admire your new, young body in the floating mirror. Then you saunter off down the passageway with the Coconut of Quendor under your arm, looking for a couple of baby grues to strangle. There's no faster way to burn off unwanted Compassion"
+ FSET DEATH,MUNGED
+ ICALL1 JIGS-UP
+ RTRUE
+
+
+ .FUNCT JIGS-UP
+ SET 'HERE,DEATH
+ MOVE PLAYER,HERE
+ ICALL1 RELOOK
+ ICALL1 OPTIONS
+ RFALSE
+
+
+ .FUNCT OPTIONS,U,WORD,KEY
+ ZERO? CAN-UNDO /?CND1
+ ZERO? LAST-MONSTER \?CND1
+ INC 'U
+?CND1: PRINT STR?861
+ ZERO? U /?CND4
+ PRINTI "undo your last command, "
+?CND4: PRINTI "restore a previously saved game, restart from the beginning, or quit?"
+ CRLF
+ CRLF
+?PRG6: PRINTI "[Type "
+ ZERO? U /?CND8
+ PRINTI "UNDO, "
+?CND8: PRINTI "RESTORE, RESTART or QUIT.] >"
+ CALL1 READ-YES-LEXV >KEY
+ GET YES-LEXV,P-LEXSTART >WORD
+ GETB YES-LEXV,P-LEXWORDS
+ ZERO? STACK /?PRG6
+ ZERO? U /?CCL14
+ EQUAL? WORD,W?UNDO \?CCL14
+ ICALL1 V-UNDO
+ JUMP ?PRG6
+?CCL14: EQUAL? WORD,W?RESTORE \?CCL18
+ ICALL1 V-RESTORE
+ JUMP ?PRG6
+?CCL18: EQUAL? WORD,W?RESTART \?CCL20
+ RESTART
+ ICALL2 FAILED,STR?565
+ JUMP ?PRG6
+?CCL20: EQUAL? WORD,W?QUIT,W?Q \?PRG6
+ CRLF
+ QUIT
+ JUMP ?PRG6
+
+
+ .FUNCT ASIDE-FROM,OBJ
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,ME
+?CND1: RANDOM 100
+ LESS? 50,STACK /?CCL5
+ PRINTI "Besides "
+ JUMP ?CND3
+?CCL5: PRINTI "Aside from "
+?CND3: ICALL2 THE-PRINT,OBJ
+ PRINT LYOU-SEE
+ RTRUE
+
+
+ .FUNCT GONE-NOW,OBJ,STR
+ ZERO? STR \?CCL3
+ ICALL2 CTHE-PRINT,OBJ
+ JUMP ?CND1
+?CCL3: PRINT XTHE
+ PRINT OBJ
+?CND1: PRINTR " you saw here before is gone now."
+
+
+ .FUNCT HOLLOW-VOICE,STR
+ ICALL1 PCLEAR
+ PRINT STR?512
+ PRINTI " That Name is "
+ PRINT STR
+ PRINTR ". Choose another!"""
+
+
+ .FUNCT V-COLOR,TBL,PAL,CNT
+ EQUAL? PRSO,ROOMS \?CND1
+ GET MACHINE-COLORS,HOST >TBL
+ ZERO? COLORS? \?CCL5
+ EQUAL? HOST,ATARI-ST \?CCL5
+ SET 'TBL,ST-MONO
+ JUMP ?CND3
+?CCL5: ZERO? COLORS? /?CCL8
+ ZERO? TBL /?CCL8
+ GET TBL,0 >CNT
+ ZERO? CNT /?CND3
+ LESS? CNT,2 \?CND3
+?CCL8: ICALL1 NOT-AVAILABLE
+ RTRUE
+?CND3: GET TBL,PALLETTE >TBL
+ GETB TBL,0 >BGND
+ GETB TBL,1 >FORE
+ GETB TBL,2 >INCOLOR
+ GETB TBL,3 >GCOLOR
+ ICALL1 V-REFRESH
+ CRLF
+ PRINTI "[Color pallette "
+ PRINTN PALLETTE
+ PRINTI " of "
+ PRINTN CNT
+ PRINTI ".]"
+ CRLF
+ IGRTR? 'PALLETTE,CNT \TRUE
+ SET 'PALLETTE,1
+ RTRUE
+?CND1: ICALL1 DONT-UNDERSTAND
+ RTRUE
+
+
+ .FUNCT PROLOGUE,X,Y
+ CLEAR -1
+ CRLF
+ PRINTI """Our doom is sealed.""
+ Y'Gael turned away from the window overlooking the Great Sea. ""The Guildmaster nears the end of his final quest,"" she said softly. ""When he succeeds, for succeed he will, our powers shall cease to be.""
+ The silence was unbroken for a long minute. Then a tiny voice near the door peeped, ""Forever?""
+ """
+ HLIGHT H-ITALIC
+ PRINTI "No"
+ HLIGHT H-NORMAL
+ PRINTI "."" The old woman leaned forward on her staff. ""The Age of Science will endure long; no one in this room can hope to outlive it. But our knowledge need not die with us -- if we act at once to preserve our priceless heritage.""
+ ""Wherein lies your hope, Y'Gael?"" demanded a salamander in the front row. ""What Magick is proof against the death of Magick itself?""
+ Y'Gael's dry chuckle stilled the murmur of the crowd. ""You forget your own history, Gustar. Are you not author of the definitive scroll on the Coconut of Quendor?""
+ A tumult of amphibious croaks and squeals drowned out Gustar's retort. Y'Gael hobbled over to a table laden with mystical artifacts, selected a small stone and raised it high.
+ ""The Coconut is our only hope,"" she cried, her eyes shining in the stone's violet aura. ""Its seed embodies the essence of our wisdom. Its shell is impervious to the ravages of Time. We must reclaim it from the Implementors, and hide it away before its secrets are forgotten!""
+ The shrill voice of a newt rose above the cheering. ""And who will steal this Coconut from the Implementors?"" he scoffed. ""You, Y'Gael?""
+ The violet aura faded at his words. ""Not I, Orkan,"" replied Y'Gael, shaking the lifeless stone and replacing it with a sigh. ""The fabric of Magick is unravelling. We dare not rely on its protection. Another champion must be sought; an innocent unskilled in the lore of enchantment, who cannot know the price of failure, or recognize the face of death.""
+ Orkan's squeak was skeptical. ""Suppose your champion succeeds in this hopeless quest. What will become of the Coconut?""
+ Y'Gael turned to face the sea once more. ""It will await the coming of a better age,"" she replied, her voice trembling with emotion. ""An age beyond Magick, beyond Science ...""
+
+"
+ INPUT 1 >X
+ SUB WIDTH,52
+ DIV STACK,2 >X
+ SUB HEIGHT,8
+ DIV STACK,2 >Y
+ CLEAR -1
+ SPLIT 20
+ ICALL1 TO-TOP-WINDOW
+ ADD X,10
+ ICALL DO-CURSET,Y,STACK
+ ICALL1 BIG-ZORK
+ INC 'Y
+ ADD X,15
+ ICALL DO-CURSET,Y,STACK
+ ICALL1 SAY-COCO
+ ADD Y,2 >Y
+ ADD X,15
+ ICALL DO-CURSET,Y,STACK
+ PRINTI "An Interactive Fantasy"
+ INC 'Y
+ ICALL DO-CURSET,Y,X
+ PRINT STR?573
+ INC 'Y
+ ADD X,2
+ ICALL DO-CURSET,Y,STACK
+ ICALL1 TRADEMARK
+ ICALL1 TO-BOTTOM-WINDOW
+ INPUT 1 >X
+ RFALSE
+
+
+ .FUNCT BIG-ZORK
+ ZERO? COLORS? /?CCL3
+ COLOR FORE,BGND
+ JUMP ?CND1
+?CCL3: EQUAL? HOST,MACINTOSH /?CND1
+ HLIGHT H-BOLD
+?CND1: PRINTI "B E Y O N D Z O R K"
+ RFALSE
+
+
+ .FUNCT SAY-COCO
+ COLOR INCOLOR,BGND
+ HLIGHT H-NORMAL
+ HLIGHT H-MONO
+ PRINT STR?572
+ COLOR FORE,BGND
+ RFALSE
+
+
+ .FUNCT TRADEMARK
+ ICALL2 ITALICIZE,STR?869
+ PRINTI " is a registered trademark of Infocom, Inc."
+ RTRUE
+
+
+ .FUNCT V-$CREDITS,X
+ CLEAR -1
+ SUB HEIGHT,1
+ SPLIT STACK
+ ICALL1 TO-TOP-WINDOW
+ ICALL CENTER,2,33
+ ICALL1 BIG-ZORK
+ ICALL CENTER,3,22
+ ICALL1 SAY-COCO
+ ICALL CENTER,5,17
+ PRINTI "by Brian Moriarty"
+ ICALL CENTER,7,7
+ COLOR INCOLOR,BGND
+ PRINTI "Testing"
+ COLOR FORE,BGND
+ ICALL CENTER,8,53
+ PRINTI "Gary Brennan Max Buxton Liz Cyr-Jones Jacob Galley"
+ ICALL CENTER,9,70
+ PRINTI "Tyler Gore Matt Hillman Katie Kendall Martin Price Joe Prosser"
+ ICALL CENTER,10,44
+ PRINTI "Steve Meretzky Tom Veldran Steve Watkins"
+ ICALL CENTER,12,48
+ COLOR INCOLOR,BGND
+ PRINTI "Package Project Manager Copywriter"
+ ICALL CENTER,13,56
+ COLOR FORE,BGND
+ PRINTI "Carl Genatossio Jon Palace Elizabeth Langosy"
+ SET 'X,15
+ GRTR? HEIGHT,23 \?CND1
+ ICALL CENTER,X,57
+ COLOR INCOLOR,BGND
+ PRINTI "Cover Map & Book Photography Production"
+ INC 'X
+ ICALL CENTER,X,63
+ COLOR FORE,BGND
+ PRINTI "John Gamache Bruce Hutchinson Steve Grohe Angela Crews"
+ ADD X,2 >X
+?CND1: ICALL CENTER,X,18
+ COLOR INCOLOR,BGND
+ PRINTI "Micro Interpreters"
+ INC 'X
+ ICALL CENTER,X,47
+ COLOR FORE,BGND
+ PRINTI "Tim Anderson Jon Arnold Duncan Blanchard"
+ INC 'X
+ ICALL CENTER,X,34
+ PRINTI "Linde Dynneson Andy Kaluzniacki"
+ ADD X,2 >X
+ COLOR INCOLOR,BGND
+ ICALL CENTER,X,20
+ PRINTI "Z Development System"
+ INC 'X
+ ICALL CENTER,X,43
+ COLOR FORE,BGND
+ PRINTI "Tim Anderson Dave Lebling Chris Reeve"
+ ICALL1 TO-BOTTOM-WINDOW
+ INPUT 1 >X
+ ICALL1 V-REFRESH
+ RTRUE
+
+
+ .FUNCT TIMESTOP
+ ICALL2 CTHE-PRINT,URGRUE
+ PRINTI " clears its throat. ""Girgol it is, then.""
+ The speed and pitch of "
+ ICALL2 THE-PRINT,URGRUE
+ PRINTI "'s triumphant laughter increase as a web of evil Magick engulfs you. Eons of history flicker past in mere seconds of subjective time, until the Final Conflagration brings your long-forgotten existence to a merciful end"
+ ICALL1 JIGS-UP
+ RFALSE
+
+
+ .FUNCT SAY-ERROR,STR
+ PRINTI "[Error @ "
+ PRINT STR
+ PRINTR "]"
+
+
+ .FUNCT ENDING,X,LEVEL
+ PRINTI "A devastating ground shock sends you sprawling! The roof of the cavern gives way at the same moment, and you watch helplessly as tons of granite crumble all around you.."
+ LOC COCO >X
+ ZERO? X /?CCL2
+ EQUAL? X,PLAYER /?CND1
+ IN? X,PLAYER /?CND1
+?CCL2: ICALL1 JIGS-UP
+ RFALSE
+?CND1: PRINT PERIOD
+ ICALL1 CARRIAGE-RETURNS
+ CLEAR -1
+ COLOR FORE,BGND
+ CRLF
+ PRINTI """Is "
+ FSET? PLAYER,FEMALE \?CND7
+ PRINTC 115
+?CND7: PRINTI "he still alive?""
+ The voice at your ear is familiar. You decide to open one eye.
+ ""Apparently."" "
+ PRINT CTHELADY
+ PRINTI " probes your left ankle with her fingers, and you wince with pain. ""Close call, though. What did you call that spell, your Worship?""
+ """
+ ICALL2 ITALICIZE,STR?870
+ PRINTI ". Turns granite to fettucine."" Cardinal Toolbox wipes his mouth. ""Any left?""
+ ""Gluttony is a sin,"" retorts "
+ ICALL2 THE-PRINT,OWOMAN
+ PRINTI ", helping you to your feet. ""Is everything ready?""
+ The old sailor dabs a final touch of color onto the canvas, then signs his work with a chuckle. ""All set, Y'Gael.""
+ ""Very well."" The old woman hands you a slim golden wand and nods at the easel. ""Here. You need the experience.""
+ The painting shimmers with Magick as the wand's rays play across its surface. You watch with growing wonder as the skillful strokes and flourishes become one with the sea and sky, artfully blending with your surroundings until it's hard to tell where one begins and the other ends.
+ ""Cast off, Mister Clutchcake!"" cries the old sailor, taking his place behind the wheel. ""Let's be underway while the tide's still with us!""
+ ""Aye, Captain!"" The cook from the Rusty Lantern chops the mooring rope with a meat cleaver, and your magnificent galleon glides away from the wharf and high into the sky, held aloft by planes of sparkling Magick. The village of Grubbo-by-the-Sea dwindles off the stern; you can just see the little hilltop where your adventure began, so long ago.
+ The woman called Y'Gael weighs the Coconut of Quendor thoughtfully in her hand. ""Better go below and take a nap,"" she suggests as you stifle a yawn. ""You're going to need it.""
+
+"
+ INPUT 1 >X
+ CLEAR -1
+ SPLIT 14
+ PUTB DBOX,0,SP
+ COPYT DBOX,DBOX+1,-1551
+ ICALL2 SHOW-RANK,WIDTH
+ ZERO? VT220 \?CCL11
+ ICALL1 APPLE-BARS
+ JUMP ?CND9
+?CCL11: SUB WIDTH,BARWIDTH
+ DIV STACK,2
+ SUB STACK,1
+ ICALL STATBARS,3,STACK,LUCK
+?CND9: CRLF
+ PRINTI "Thus ends the story of "
+ ICALL2 ITALICIZE,STR?867
+ PRINTI ": "
+ HLIGHT H-ITALIC
+ PRINT STR?572
+ HLIGHT H-NORMAL
+ PRINT PERIOD
+ CRLF
+ PRINTI "Your final rank is "
+ CALL1 ANNOUNCE-RANK >LEVEL
+ PRINTI " in "
+ PRINTN MOVES
+ PRINTI " moves, "
+ ZERO? RANK \?CND12
+ SUB 9,LEVEL >LEVEL
+ PRINTN LEVEL
+ PRINTI " level"
+ EQUAL? LEVEL,1 /?CND14
+ PRINTC 115
+?CND14: PRINTI " below "
+?CND12: PRINTI "the highest possible rank."
+ CRLF
+ ICALL1 OPTIONS
+ RTRUE
+
+
+ .FUNCT CHEATER
+ CRLF
+ ICALL1 NYMPH-APPEARS
+ PRINTI "Shame on you"
+ PRINT STR?515
+ CRLF
+ QUIT
+ RFALSE
+
+ .ENDI
diff --git a/rmode.init b/rmode.init
new file mode 100644
index 0000000..71fe591
--- /dev/null
+++ b/rmode.init
Binary files differ
diff --git a/things.zap b/things.zap
new file mode 100644
index 0000000..8ce72da
--- /dev/null
+++ b/things.zap
@@ -0,0 +1,11637 @@
+
+
+ .FUNCT HANDLE-SIGNS?,X
+ INTBL? PRSA,MOVEVERBS,NMVERBS >X \FALSE
+ PRINTR "Signs are for reading."
+
+
+ .FUNCT BILLBOARD-PSEUDO
+ FSET PSEUDO-OBJECT,TRYTAKE
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE,V?READ,V?LOOK-ON \?CCL5
+ PRINT STR?744
+ ICALL1 FROTZEN-SIGN
+ RTRUE
+?CCL5: CALL1 HANDLE-SIGNS?
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT FROTZEN-SIGN
+ PRINTI " says,"
+ CRLF
+ CRLF
+ HLIGHT H-MONO
+ EQUAL? HOST,MACINTOSH /?CND1
+ HLIGHT H-BOLD
+?CND1: PRINTI "WELCOME TO THE FIELDS OF FROTZEN"
+ CRLF
+ HLIGHT H-NORMAL
+ HLIGHT H-MONO
+ PRINTI " Last sign for next 120 bloits."
+ CRLF
+ HLIGHT H-NORMAL
+ RTRUE
+
+
+ .FUNCT SUN-F,X
+ FSET? HERE,INDOORS /?CTR2
+ CALL1 PLAIN-ROOM?
+ ZERO? STACK \?CTR2
+ EQUAL? HERE,NE-WALL \?CCL3
+?CTR2: ICALL2 NOT-VISIBLE,SUN
+ RETURN 2
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL10
+ ICALL1 CTHE-PRINT
+ PRINTI " is as bright as ever"
+ EQUAL? HERE,XROADS,ON-PIKE \?CND11
+ PRINTI ", except to the "
+ EQUAL? HERE,ON-PIKE \?CCL15
+ PRINTB W?WEST
+ JUMP ?CND11
+?CCL15: PRINTB W?EAST
+?CND11: PRINT PERIOD
+ RTRUE
+?CCL10: EQUAL? PRSA,V?FOLLOW \?CCL17
+ ICALL2 DO-WALK,P?SOUTH
+ RTRUE
+?CCL17: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X /?CTR18
+ INTBL? PRSA,E-VERBS,ENTER-VERBS >X /?CTR18
+ EQUAL? PRSA,V?LOOK-BEHIND \FALSE
+?CTR18: ICALL1 IMPOSSIBLE
+ RTRUE
+
+
+ .FUNCT NOT-VISIBLE,OBJ
+ ICALL1 PCLEAR
+ ICALL2 CTHE-PRINT,OBJ
+ PRINTI " isn't visible"
+ PRINT AT-MOMENT
+ RTRUE
+
+
+ .FUNCT SKY-F,X
+ FSET? HERE,INDOORS \?CCL3
+ ICALL2 NOT-VISIBLE,SKY
+ RETURN 2
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?LOOK-UP /?CTR6
+ EQUAL? PRSA,V?SEARCH \?CCL7
+?CTR6: EQUAL? HERE,IN-SKY \?CND10
+ ICALL1 V-LOOK
+ RTRUE
+?CND10: ICALL PERFORM,V?EXAMINE,SUN
+ RTRUE
+?CCL7: EQUAL? PRSA,V?FLY-UP,V?WALK-TO,V?ENTER /?CTR12
+ EQUAL? PRSA,V?THROUGH,V?CLIMB-ON,V?CLIMB-UP \?CCL13
+?CTR12: ICALL1 V-FLY
+ RTRUE
+?CCL13: EQUAL? PRSA,V?EXIT,V?FLY-DOWN,V?CLIMB-DOWN /?CTR16
+ EQUAL? PRSA,V?LEAVE,V?CLIMB-DOWN \?CCL17
+?CTR16: ICALL1 V-LAND
+ RTRUE
+?CCL17: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X /?CTR20
+ EQUAL? PRSA,V?LOOK-BEHIND,V?LAND-ON \FALSE
+?CTR20: ICALL1 IMPOSSIBLE
+ RTRUE
+
+
+ .FUNCT BREEZE-F,X
+ FSET BREEZE,SEEN
+ FSET? HERE,INDOORS /?CTR2
+ EQUAL? HERE,APLANE,IN-GARDEN,IN-FROON /?CTR2
+ EQUAL? HERE,IN-SPLENDOR \?CCL3
+?CTR2: PRINTI "There's no wind here to speak of."
+ CRLF
+ RETURN 2
+?CCL3: INTBL? PRSA,SEEVERBS,NSVERBS >X \?CCL10
+ PRINTR "Wind is transparent."
+?CCL10: EQUAL? PRSA,V?TOUCH \?CCL12
+ ICALL2 CTHE-PRINT,BREEZE
+ PRINTR " feels cool and fresh."
+?CCL12: INTBL? PRSA,E-VERBS,ENTER-VERBS >X /?CTR13
+ INTBL? PRSA,X-VERBS,EXIT-VERBS >X \?CCL14
+?CTR13: ICALL1 V-WALK-AROUND
+ RTRUE
+?CCL14: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL1 IMPOSSIBLE
+ RTRUE
+
+
+ .FUNCT PACK-F
+ ZERO? NOW-PRSI? /?CCL3
+ EQUAL? PRSA,V?PUT,V?EMPTY-INTO \FALSE
+ EQUAL? PRSO,RUG \?CCL8
+ ICALL1 NEVER-FIT
+ RTRUE
+?CCL8: EQUAL? PRSO,PARASOL \FALSE
+ FSET? PRSO,OPENED \FALSE
+ ICALL2 YOUD-HAVE-TO,STR?536
+ RTRUE
+?CCL3: EQUAL? PRSA,V?OPEN,V?OPEN-WITH \?CCL13
+ ICALL2 ITS-ALREADY,STR?518
+ RTRUE
+?CCL13: EQUAL? PRSA,V?CLOSE \FALSE
+ PRINTR "It's not that type of pack."
+
+
+ .FUNCT CELLAR-DOOR-F,X
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?LOOK-BEHIND \?CCL5
+ FSET? PRSO,MUNGED \?CCL5
+ ICALL2 ITS-MUNGED,W?DOOR
+ RTRUE
+?CCL5: EQUAL? PRSA,V?CLOSE \?CCL9
+ FSET? PRSO,MUNGED \?CCL12
+ ICALL2 ITS-MUNGED,W?DOOR
+ RTRUE
+?CCL12: FSET? PRSO,OPENED \FALSE
+ ICALL1 ICLOSE
+ PRINTI "You pull "
+ ICALL1 THE-PRINT
+ PRINTI " shut."
+ CRLF
+ EQUAL? HERE,AT-BOTTOM \TRUE
+ FCLEAR HERE,LIGHTED
+ ICALL1 SAY-IF-HERE-LIT
+ RTRUE
+?CCL9: EQUAL? PRSA,V?OPEN,V?OPEN-WITH \?CCL17
+ FSET? PRSO,MUNGED \?CCL20
+ ICALL2 ITS-MUNGED,W?DOOR
+ RTRUE
+?CCL20: FSET? PRSO,OPENED /FALSE
+ EQUAL? HERE,AT-BOTTOM \?CCL24
+ FSET? PRSO,LOCKED /?CCL24
+ ICALL1 LOCK-CELLAR-DOOR
+ RTRUE
+?CCL24: ZERO? PRSI /FALSE
+ EQUAL? PRSA,V?OPEN-WITH \FALSE
+ ICALL2 CRASH-CELLAR-DOOR,PRSI
+ RTRUE
+?CCL17: INTBL? PRSA,E-VERBS,ENTER-VERBS >X /?CTR30
+ INTBL? PRSA,X-VERBS,EXIT-VERBS >X \?CCL31
+?CTR30: EQUAL? HERE,AT-BOTTOM \?CND34
+ ICALL2 DO-WALK,P?UP
+ RTRUE
+?CND34: ICALL2 DO-WALK,P?DOWN
+ RTRUE
+?CCL31: EQUAL? PRSA,V?KICK,V?HIT,V?MUNG /?CTR36
+ EQUAL? PRSA,V?LOOSEN,V?PUSH,V?SHAKE /?CTR36
+ EQUAL? PRSA,V?CUT,V?KNOCK \FALSE
+?CTR36: FSET? PRSO,MUNGED \?CCL43
+ ICALL2 ITS-ALREADY,STR?745
+ RTRUE
+?CCL43: FSET? PRSO,OPENED \?CCL45
+ ICALL2 ITS-ALREADY,STR?518
+ RTRUE
+?CCL45: EQUAL? PRSA,V?KNOCK \?CND41
+ EQUAL? HERE,AT-BOTTOM \?CND47
+ PRINT YOU-HEAR
+ PRINTR "a muffled ""Har!"""
+?CND47: PRINTI """Nobody down there,"" snickers "
+ ICALL2 THE-PRINT,COOK
+ PRINT PERIOD
+ RTRUE
+?CND41: SET 'X,PRSI
+ EQUAL? PRSA,V?KICK \?CND49
+ SET 'X,FEET
+?CND49: ICALL2 CRASH-CELLAR-DOOR,X
+ RTRUE
+
+
+ .FUNCT ITS-MUNGED,WRD
+ PRINTI "Little remains of the "
+ PRINTB WRD
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT CRASH-CELLAR-DOOR,OBJ,TBL
+ ASSIGNED? 'OBJ /?CND1
+ SET 'OBJ,HANDS
+?CND1: ICALL2 ITALICIZE,STR?746
+ PRINTI "! Your "
+ EQUAL? OBJ,FALSE-VALUE,HANDS,ME \?CCL5
+ PRINTB W?FIST
+ JUMP ?CND3
+?CCL5: EQUAL? OBJ,FEET \?CCL7
+ PRINTB W?FOOT
+ JUMP ?CND3
+?CCL7: ICALL2 DPRINT,OBJ
+?CND3: PRINTI " deals "
+ ICALL2 THE-PRINT,CELLAR-DOOR
+ PRINTI " a mighty blow"
+ GET STATS,STRENGTH
+ LESS? STACK,50 \?CND8
+ ICALL1 NOTE-NOISE
+ RTRUE
+?CND8: FSET CELLAR-DOOR,OPENED
+ FCLEAR CELLAR-DOOR,LOCKED
+ FSET CELLAR-DOOR,MUNGED
+ FSET AT-BOTTOM,LIGHTED
+ GETPT CELLAR-DOOR,P?SYNONYM >TBL
+ PUT TBL,2,W?HOLE
+ PUT TBL,3,W?OPENING
+ GETP AT-BOTTOM,P?UP >TBL
+ PUT TBL,XTYPE,513
+ PUT TBL,XROOM,IN-KITCHEN
+ GETP IN-KITCHEN,P?DOWN >TBL
+ PUT TBL,XTYPE,513
+ PUT TBL,XROOM,AT-BOTTOM
+ GETP IN-KITCHEN,P?IN >TBL
+ PUT TBL,XTYPE,513
+ PUT TBL,XROOM,AT-BOTTOM
+ PRINTI ", shattering it and much of "
+ ICALL2 THE-PRINT,KITCHEN
+ PRINTI " wall into splinters"
+ ICALL1 RELOOK
+ PRINT TAB
+ PRINTI """Yow,"" murmurs "
+ EQUAL? HERE,AT-BOTTOM \?CND10
+ PRINTR "an admiring voice upstairs."
+?CND10: FSET COOK,SEEN
+ ICALL2 THE-PRINT,COOK
+ PRINTR ", gawking at you admiringly."
+
+
+ .FUNCT NOTE-NOISE
+ PRINTR ", with little effect except for the noise."
+
+
+ .FUNCT CELLAR-STAIR-F,X
+ FSET? CELLAR-DOOR,OPENED /?CCL3
+ EQUAL? HERE,IN-KITCHEN \?CCL3
+ ICALL1 CANT-SEE-ANY
+ RETURN 2
+?CCL3: EQUAL? HERE,IN-KITCHEN /?CND1
+ INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X \?CND1
+ FSET? CELLAR-DOOR,OPENED \?CND10
+ ICALL2 DO-WALK,P?UP
+ RTRUE
+?CND10: SET 'P-IT-OBJECT,CELLAR-DOOR
+ ICALL2 CTHE-PRINT,CELLAR-DOOR
+ PRINTR " at the top is closed."
+?CND1: CALL2 HANDLE-STAIRS?,IN-KITCHEN
+ RSTACK
+
+
+ .FUNCT MIGHT-TRIP?
+ EQUAL? PRSA,V?PUT,V?PUT-ON,V?EMPTY-INTO /?CCL2
+ EQUAL? PRSA,V?THROW,V?THROW-OVER \FALSE
+?CCL2: PRINTI "Better not. You might trip on "
+ FSET? PRSO,PLURAL \?CCL7
+ PRINTI "them"
+ JUMP ?CND5
+?CCL7: PRINTI "it"
+?CND5: PRINTR " later."
+
+
+ .FUNCT HANDLE-STAIRS?,TOP,X
+ EQUAL? HERE,TOP /?CND1
+ SET 'TOP,FALSE-VALUE
+?CND1: ZERO? NOW-PRSI? /?CCL5
+ CALL1 MIGHT-TRIP?
+ ZERO? STACK /FALSE
+ RTRUE
+?CCL5: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL9
+ ICALL1 CTHE-PRINT
+ PRINTI " leads "
+ ZERO? TOP /?CCL12
+ PRINTI "down"
+ JUMP ?CND10
+?CCL12: PRINTI "up"
+?CND10: PRINTR "ward."
+?CCL9: EQUAL? PRSA,V?LOOK-UP \?CCL14
+ ZERO? TOP /?CND15
+ ICALL1 ALREADY-AT-TOP
+ RTRUE
+?CND15: ICALL1 CANT-SEE-MUCH
+ RTRUE
+?CCL14: EQUAL? PRSA,V?LOOK-DOWN \?CCL18
+ ZERO? TOP /?CND19
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+?CND19: ICALL1 ALREADY-AT-BOTTOM
+ RTRUE
+?CCL18: EQUAL? PRSA,V?FOLLOW,V?USE \?CCL22
+ ZERO? TOP /?CND23
+ ICALL2 DO-WALK,P?DOWN
+ RTRUE
+?CND23: ICALL2 DO-WALK,P?UP
+ RTRUE
+?CCL22: INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X \?CCL26
+ ZERO? TOP /?CND27
+ ICALL1 ALREADY-AT-TOP
+ RTRUE
+?CND27: ICALL2 DO-WALK,P?UP
+ RTRUE
+?CCL26: INTBL? PRSA,X-VERBS,CLIMB-DOWN-VERBS >X \FALSE
+ ZERO? TOP /?CND31
+ ICALL2 DO-WALK,P?DOWN
+ RTRUE
+?CND31: ICALL1 ALREADY-AT-BOTTOM
+ RTRUE
+
+
+ .FUNCT PUB-F,X
+ EQUAL? HERE,IN-PUB \?CCL3
+ CALL1 HERE-F
+ ZERO? STACK \TRUE
+?CCL3: INTBL? PRSA,E-VERBS,ENTER-VERBS >X \?CCL7
+ ICALL2 DO-WALK,P?IN
+ RTRUE
+?CCL7: EQUAL? PRSA,V?EXAMINE \?CCL9
+ EQUAL? HERE,OUTSIDE-PUB \?CND10
+ ICALL1 DESCRIBE-PUB-SIGN
+ RTRUE
+?CND10: ICALL1 V-LOOK
+ RTRUE
+?CCL9: EQUAL? PRSA,V?SMELL \?CCL13
+ PRINTR "Mouthwatering aromas hang in the air."
+?CCL13: EQUAL? PRSA,V?LISTEN \FALSE
+ PRINTI "Raucous laughter"
+ PRINT STR?596
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT PUB-SIGN-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ EQUAL? PRSA,V?PUT-ON,V?HANG-ON,V?EMPTY-INTO \?CCL6
+ EQUAL? PRSO,LANTERN,PARASOL \?CCL9
+ FIRST? PRSI >X \?CCL12
+ ICALL YOUD-HAVE-TO,STR?541,X
+ RTRUE
+?CCL12: EQUAL? PRSO,PARASOL \?CND10
+ FSET? PRSO,OPENED \?CND10
+ ICALL2 YOUD-HAVE-TO,STR?536
+ RTRUE
+?CND10: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ MOVE PRSO,PRSI
+ PRINTI "You carefully hang "
+ ICALL1 THE-PRINT
+ EQUAL? PRSO,LANTERN \?CND16
+ PRINTI " back"
+?CND16: PRINT SON
+ ICALL1 THEI-PRINT
+ PRINT PERIOD
+ RTRUE
+?CCL9: EQUAL? PRSA,V?HANG-ON /FALSE
+ ICALL1 PRSO-SLIDES-OFF-PRSI
+ RTRUE
+?CCL6: EQUAL? PRSA,V?PUT-UNDER \FALSE
+ ICALL PERFORM,V?DROP,PRSO
+ RTRUE
+?CCL3: CALL2 NOUN-USED?,W?HOOK
+ ZERO? STACK /?CND1
+ EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL23
+ FIRST? PUB-SIGN >X \?CND24
+ ICALL2 PRINTCA,X
+ PRINTR " hangs from it."
+?CND24: PRINT XTHE
+ PRINTR "hook is empty."
+?CCL23: INTBL? PRSA,MOVEVERBS,NMVERBS >X \?CND1
+ ICALL FIRMLY-ATTACHED,STR?747,PRSO,TRUE-VALUE
+ RTRUE
+?CND1: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?READ \?CCL29
+ ICALL1 DESCRIBE-PUB-SIGN
+ RTRUE
+?CCL29: EQUAL? PRSA,V?PUSH,V?TOUCH,V?SWING /?CTR30
+ EQUAL? PRSA,V?SHAKE,V?PULL,V?LOOK-BEHIND \?CCL31
+?CTR30: ICALL1 CTHE-PRINT
+ PRINTR " swings back and forth for a moment."
+?CCL31: INTBL? PRSA,MOVEVERBS,NMVERBS >X \FALSE
+ ICALL FIRMLY-ATTACHED,PRSO,PUB
+ RTRUE
+
+
+ .FUNCT LANTERN-F,TBL,X
+ ZERO? NOW-PRSI? /?CCL3
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ ICALL2 ITS-SEALED,LANTERN
+ RTRUE
+?CCL3: CALL2 NOUN-USED?,W?BATTERY
+ ZERO? STACK /?CCL7
+ INTBL? PRSA,SEEVERBS,NSVERBS >TBL /?CCL9
+ INTBL? PRSA,MOVEVERBS,NMVERBS >TBL /?CCL9
+ EQUAL? PRSA,V?REPAIR,V?REPLACE \?CND1
+?CCL9: ICALL2 ITS-SEALED,LANTERN
+ RTRUE
+?CCL7: CALL2 NOUN-USED?,W?SWITCH
+ ZERO? STACK /?CND1
+ INTBL? PRSA,MOVEVERBS,NMVERBS >TBL \?CCL16
+ ICALL FIRMLY-ATTACHED,STR?748,PRSO,TRUE-VALUE
+ RTRUE
+?CCL16: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CND1
+ ICALL1 CTHE-PRINT
+ PRINTI "'s switch is o"
+ FSET? PRSO,OPENED \?CND18
+ PRINTR "ff."
+?CND18: PRINTR "n."
+?CND1: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL22
+ ICALL1 CTHE-PRINT
+ FSET? PRSO,MUNGED \?CND23
+ PRINTR " is broken beyond repair."
+?CND23: PRINTI " looks "
+ FSET? PRSO,MAPPED \?CCL27
+ PRINTI "good as new"
+ JUMP ?CND25
+?CCL27: PRINTI "much as you'd expect it to after years of hanging outdoors"
+?CND25: FSET? PRSO,LIGHTED \?CND28
+ PRINTI ". Its glow is "
+ GRTR? LAMP-LIFE,20 \?CCL32
+ PRINTR "bright and strong."
+?CCL32: GRTR? LAMP-LIFE,10 \?CND30
+ PRINTR "a bit dim."
+?CND30: PRINTI "fading rapidly"
+?CND28: PRINT PERIOD
+ RTRUE
+?CCL22: EQUAL? PRSA,V?LOOK-INSIDE,V?OPEN,V?UNPLUG \?CCL35
+ ICALL2 ITS-SEALED,LANTERN
+ RTRUE
+?CCL35: EQUAL? PRSA,V?LAMP-ON,V?USE \?CCL37
+ FSET? PRSO,OPENED /?CCL40
+ ICALL2 ITS-SWITCHED,W?ON
+ RTRUE
+?CCL40: CALL1 CANT-REACH-LANTERN?
+ ZERO? STACK \TRUE
+ FCLEAR PRSO,OPENED
+ ICALL2 ITALICIZE,STR?749
+ PRINTI ". "
+ FSET? PRSO,MUNGED /?CCL43
+ ZERO? LAMP-LIFE \?CND42
+?CCL43: PRINTR "Nothing happens."
+?CND42: ICALL1 CTHE-PRINT
+ PRINTI " emits a "
+ GRTR? LAMP-LIFE,20 \?CCL48
+ PRINTI "brilliant"
+ JUMP ?CND46
+?CCL48: PRINTI "feeble"
+?CND46: PRINTI " glow."
+ CRLF
+ ICALL1 LIGHT-LANTERN
+ RTRUE
+?CCL37: EQUAL? PRSA,V?LIGHT-WITH \?CCL50
+ EQUAL? PRSI,FALSE-VALUE,HANDS \?CND51
+ ICALL PERFORM,V?LAMP-ON,PRSO
+ RTRUE
+?CND51: PRINT CANT
+ PRINTI "light "
+ ICALL1 THE-PRINT
+ PRINT WITH
+ ICALL1 THEI-PRINT
+ PRINT PERIOD
+ RTRUE
+?CCL50: EQUAL? PRSA,V?LAMP-OFF \?CCL54
+ FSET? PRSO,OPENED \?CCL57
+ ICALL2 ITS-SWITCHED,W?OFF
+ RTRUE
+?CCL57: CALL1 CANT-REACH-LANTERN?
+ ZERO? STACK \TRUE
+ FSET PRSO,OPENED
+ ICALL2 ITALICIZE,STR?749
+ PRINTI ". "
+ FSET? PRSO,LIGHTED \?CND59
+ ICALL1 CTHE-PRINT
+ PRINTI " goes out."
+ CRLF
+ ICALL1 LANTERN-OUT
+ RTRUE
+?CND59: PRINTI "You switch off "
+ ICALL1 THE-PRINT
+ PRINT PERIOD
+ RTRUE
+?CCL54: EQUAL? PRSA,V?MUNG,V?HIT,V?KICK \?CCL62
+ FSET? PRSO,MUNGED \?CND63
+ PRINTR "It's already broken enough."
+?CND63: ICALL2 ITALICIZE,STR?605
+ PRINTI "! You smash "
+ ICALL1 THE-PRINT
+ PRINT WITH
+ EQUAL? PRSA,V?KICK /?CTR66
+ EQUAL? PRSI,FEET \?CCL67
+?CTR66: ICALL2 DPRINT,FEET
+ JUMP ?CND65
+?CCL67: EQUAL? PRSI,FALSE-VALUE,HANDS \?CCL71
+ PRINTI "your fist"
+ JUMP ?CND65
+?CCL71: ICALL1 THEI-PRINT
+?CND65: PRINT PERIOD
+ ICALL1 BREAK-LANTERN
+ RTRUE
+?CCL62: EQUAL? PRSA,V?THROW \?CCL73
+ FSET? PRSO,MUNGED /?CCL73
+ ICALL2 ITALICIZE,STR?750
+ PRINTC 33
+ CRLF
+ ICALL1 BREAK-LANTERN
+ RTRUE
+?CCL73: EQUAL? PRSA,V?REPAIR \FALSE
+ FSET? PRSO,MUNGED \FALSE
+ PRINTR "You're not a member of the Guild of Lanternmakers."
+
+
+ .FUNCT ITS-SWITCHED,WRD
+ PRINTI "It's already switched "
+ PRINTB WRD
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT CANT-REACH-LANTERN?,L
+ LOC LANTERN >L
+ LOC PLAYER
+ EQUAL? L,PLAYER,STACK /FALSE
+ FSET? L,SURFACE /FALSE
+ ICALL TAKE-FIRST,LANTERN,L
+ RTRUE
+
+
+ .FUNCT LIGHT-LANTERN
+ BOR NEW-DBOX,3 >NEW-DBOX
+ CALL1 NO-LANTERN-HERE?
+ ZERO? STACK \TRUE
+ ICALL2 QUEUE,I-LANTERN
+ ICALL REPLACE-ADJ?,LANTERN,W?DARK,W?LIGHTED
+ ICALL2 LIGHT-ROOM-WITH,LANTERN
+ RTRUE
+
+
+ .FUNCT NO-LANTERN-HERE?,LEN
+ FSET? URGRUE,LIVING \FALSE
+ IN? GRUE,HERE \?CND1
+ ICALL2 EXUENT-MONSTER,GRUE
+?CND1: CALL1 GRUE-ROOM?
+ ZERO? STACK /FALSE
+ ICALL2 VANISH,LANTERN
+ PRINT TAB
+ ICALL1 KERBLAM
+ PRINTI "A bolt of lightning "
+ EQUAL? HERE,IN-LAIR /?CND8
+ PRINTI "zigzags down the passageways, "
+?CND8: PRINTI "strikes your lantern and blows it into little, tiny bits."
+ CRLF
+ FSET? LANTERN,LIGHTED \?CND10
+ ICALL1 LANTERN-OUT
+?CND10: ICALL1 CHUCKLE
+ RTRUE
+
+
+ .FUNCT LANTERN-OUT
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ FCLEAR LANTERN,LIGHTED
+ ICALL2 DEQUEUE,I-LANTERN
+ ICALL REPLACE-ADJ?,LANTERN,W?LIGHTED,W?DARK
+ ICALL1 SAY-IF-HERE-LIT
+ RTRUE
+
+
+ .FUNCT BREAK-LANTERN
+ FCLEAR PRSO,SEEN
+ FSET LANTERN,MUNGED
+ BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ ICALL REPLACE-ADJ?,LANTERN,W?ZZZP,W?BROKEN
+ FSET? LANTERN,LIGHTED \TRUE
+ ICALL1 LANTERN-OUT
+ RTRUE
+
+
+ .FUNCT GRUBBO-F,X
+ EQUAL? HERE,HILLTOP,N-MOOR,AT-LEDGE /?CCL3
+ CALL1 HERE-F
+ RSTACK
+?CCL3: INTBL? PRSA,E-VERBS,ENTER-VERBS >X \?CCL5
+ SET 'X,P?EAST
+ EQUAL? HERE,N-MOOR \?CCL8
+ SET 'X,P?NORTH
+ JUMP ?CND6
+?CCL8: EQUAL? HERE,AT-LEDGE \?CND6
+ SET 'X,P?SW
+?CND6: ICALL2 DO-WALK,X
+ RTRUE
+?CCL5: INTBL? PRSA,SEEVERBS,NSVERBS >X \FALSE
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+
+
+ .FUNCT SHILL-F
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?TOUCH,V?SWING,V?SHAKE \?CCL5
+ PRINTR "Feels hefty."
+?CCL5: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL7
+ PRINTR "Years of drifting on the open sea have toughened this stout club into a formidable skull-basher."
+?CCL7: EQUAL? PRSA,V?WHAT \?CCL9
+ CALL2 NOUN-USED?,W?SHILLELAGH
+ ZERO? STACK /?CCL9
+ PRINTR "It's a club."
+?CCL9: EQUAL? PRSA,V?TAKE \FALSE
+ FSET? PRSO,TOUCHED /FALSE
+ CALL1 ITAKE
+ ZERO? STACK /TRUE
+ PRINT XTHE
+ PRINTB W?DRIFTWOOD
+ PRINTI " begins to float out of reach as you bend over the side of the wharf. You strain your arm lower towards the water, lower... got it!"
+ CRLF
+ ICALL1 GET-SHILL
+ RTRUE
+
+
+ .FUNCT GET-SHILL
+ FSET SHILL,TOUCHED
+ ICALL2 DEQUEUE,I-SHILL
+ FSET SALT,SEEN
+ PRINT TAB
+ PRINTI """Found yerself a genu-ine "
+ ICALL2 DPRINT,SHILL
+ PRINTI " there, "
+ ICALL1 BOY-GIRL
+ PRINTI ","" remarks the artist"
+ IN? SHILL,PLAYER \?CND1
+ PRINTI " as you shake off the seawater"
+?CND1: PRINTR ". ""Come in handy nowadays."""
+
+
+ .FUNCT SWORD-F
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE \FALSE
+ PRINTR "It's of elvish workmanship."
+
+
+ .FUNCT AXE-F
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE \FALSE
+ PRINTR "Just the thing for cleaving briskets, and other inconveniences."
+
+
+ .FUNCT DAGGER-F
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \FALSE
+ PRINTI "It's a very basic "
+ PRINTD PRSO
+ PRINTI " with a "
+ FSET? PRSO,MUNGED \?CCL8
+ PRINTB W?RUSTY
+ JUMP ?CND6
+?CCL8: PRINTI "razor-sharp"
+?CND6: PRINTR " blade."
+
+
+ .FUNCT PUBWALL-F,X
+ EQUAL? PRSA,V?EMPTY,V?TAKE /FALSE
+ EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?LOOK-INSIDE /?CCL4
+ EQUAL? PRSA,V?SEARCH \?CND1
+?CCL4: FIRST? PRSO >X \FALSE
+ ICALL2 PRINTCA,X
+ PRINTR " is imbedded there."
+?CND1: CALL1 HANDLE-WALLS?
+ RSTACK
+
+
+ .FUNCT BOTTLE-F,C
+ CALL2 NOUN-USED?,W?MAILBOX
+ ZERO? STACK /?CCL3
+ ZERO? LIT? /?CND4
+ ZERO? NOW-PRSI? \?CND4
+ EQUAL? PRSA,V?OPEN \?CND4
+ FSET? PRSO,SEEN /?CND8
+ FSET PRSO,SEEN
+ PRINTI "Opening the small mailbox reveals a leaflet"
+ PRINT PTAB
+ ICALL1 KERBLAM
+ PRINTI "An Implementor appears in a dazzling flash! He slams the mailbox on "
+ ICALL2 THE-PRINT,BOTTLE
+ PRINTR " shut, wags a disapproving finger and disappears before you can speak or move."
+?CND8: PRINT CANT
+ PRINTI "open the "
+ PRINT STR?751
+ PRINT PERIOD
+ RETURN 2
+?CND4: ICALL USELESS,STR?751,TRUE-VALUE
+ RETURN 2
+?CCL3: CALL1 SEE-COLOR?
+ ZERO? STACK /?CND1
+ INC 'C
+ CALL ADJ-USED?,W?GRAY,W?GREY,W?WHITE
+ ZERO? STACK /?CND1
+ CALL2 NOUN-USED?,W?HOUSE
+ ZERO? STACK \?CND1
+ PRINT XTHE
+ PRINTI "wine in "
+ ICALL2 THE-PRINT,BOTTLE
+ PRINTI " is red, not gray."
+ CRLF
+ RETURN 2
+?CND1: ZERO? NOW-PRSI? /?CCL23
+ EQUAL? PRSA,V?LOOK-THRU \FALSE
+ EQUAL? PRSO,PRSI,ME,HEAD \?CND26
+ ICALL1 IMPOSSIBLE
+ RTRUE
+?CND26: PRINTI "When viewed through "
+ ICALL1 THEI-PRINT
+ PRINTI ", "
+ EQUAL? PRSO,AMULET \?CND28
+ ZERO? AMULET-WORD \?CND30
+ ICALL1 SETUP-AMULET
+?CND30: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
+ PRINTI "the word """
+ GETP AMULET,P?NAME-TABLE
+ ICALL2 PRINT-TABLE,STACK
+ PRINTI """ stands out clearly against the swirls and flourishes of the "
+ PRINTD AMULET
+ PRINT PERIOD
+ RTRUE
+?CND28: ICALL1 THE-PRINT
+ PRINTI " appears "
+ ZERO? C /?CND32
+ PRINTR "pale and ruddy."
+?CND32: PRINTR "gray and muddy."
+?CCL23: EQUAL? PRSA,V?EXAMINE,V?READ,V?LOOK-INSIDE /?CTR34
+ EQUAL? PRSA,V?SEARCH \?CCL35
+?CTR34: EQUAL? PRSA,V?EXAMINE,V?READ \?CND38
+ PRINT XTHE
+ PRINTI "words """
+ ICALL2 ITALICIZE,STR?752
+ PRINTI ", bottled by "
+ ICALL2 FROBOZZ,STR?753
+ PRINTI ", Ltd"" appear on "
+ ICALL1 THE-PRINT
+ PRINTI "'s label, above a picture of a white house with a small mailbox."
+ EQUAL? PRSA,V?READ \?CND40
+ CRLF
+ RTRUE
+?CND40: PRINTC SP
+?CND38: PRINTI "A pale "
+ ZERO? C /?CCL44
+ PRINTB W?RED
+ JUMP ?CND42
+?CCL44: PRINTB W?GRAY
+?CND42: PRINTR " liquid swishes around inside. You can see right through it."
+?CCL35: EQUAL? PRSA,V?SHAKE,V?SPIN \?CCL46
+ PRINT XTHE
+ ZERO? C /?CCL49
+ PRINTB W?RED
+ JUMP ?CND47
+?CCL49: PRINTB W?GRAY
+?CND47: PRINTI " liquid in "
+ ICALL1 THE-PRINT
+ PRINTR " swishes around."
+?CCL46: EQUAL? PRSA,V?OPEN,V?DRINK,V?DRINK-FROM \?CCL51
+ ICALL1 CTHE-PRINT
+ PRINTR " is tightly corked."
+?CCL51: EQUAL? PRSA,V?OPEN-WITH \?CCL53
+ PRINTI "You'll never open "
+ ICALL1 THE-PRINT
+ PRINT WITH
+ ICALL1 THEI-PRINT
+ PRINTR ". Only a corkscrew will do."
+?CCL53: EQUAL? PRSA,V?HIT,V?MUNG,V?KICK \?CCL55
+ ICALL1 PRSO-SHATTER
+ PRINTI ", and wine "
+ PRINT STR?754
+ RTRUE
+?CCL55: EQUAL? PRSA,V?SPIN \FALSE
+ EQUAL? P-PRSA-WORD,W?SPIN \FALSE
+ PRINTR "Lonely?"
+
+
+ .FUNCT CRATES-F
+ EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH,V?OPEN /?CTR2
+ EQUAL? PRSA,V?OPEN-WITH \?CCL3
+?CTR2: PRINTR "They're all empty."
+?CCL3: EQUAL? PRSA,V?SHAKE,V?KICK,V?PUSH \?CCL7
+ ICALL1 CTHE-PRINT
+ PRINTR " sways dangerously back and forth."
+?CCL7: CALL2 HANDLE-STAIRS?,BARRELTOP
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT SETUP-AMULET,TBL
+ CALL2 PICK-ONE,MAGIC-WORDS >TBL
+ PUT TBL,2,1
+ GET TBL,0 >AMULET-WORD
+ GET TBL,1
+ PUTP AMULET,P?NAME-TABLE,STACK
+ GETPT AMULET,P?SYNONYM
+ PUT STACK,0,AMULET-WORD
+ GETPT AMULET,P?ADJECTIVE
+ PUT STACK,0,AMULET-WORD
+ FSET AMULET,NAMED
+ FSET AMULET,IDENTIFIED
+ FSET AMULET,PROPER
+ RFALSE
+
+
+ .FUNCT AMULET-F,X
+ ZERO? NOW-PRSI? \FALSE
+ CALL NOUN-USED?,W?STARS,W?STAR
+ ZERO? STACK \?CTR4
+ CALL2 ADJ-USED?,W?SILVER
+ ZERO? STACK /?CCL5
+?CTR4: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?READ \?CCL10
+ ZERO? AMULET-TIMER /?CND11
+ GRTR? AMULET-STARS,1 \?CCL15
+ PRINT STR?755
+ JUMP ?CND13
+?CCL15: PRINT STR?756
+?CND13: PRINT STR?757
+ PRINTR "is glowing."
+?CND11: PRINT STR?756
+ EQUAL? AMULET-STARS,1 /?CND16
+ PRINTC 115
+?CND16: PRINT STR?757
+ PRINTI "twinkle"
+ EQUAL? AMULET-STARS,1 \?CND18
+ PRINTC 115
+?CND18: PRINTR " with hidden power."
+?CCL10: INTBL? PRSA,MOVEVERBS,NMVERBS >X \?CND1
+ PRINT STR?756
+ GRTR? AMULET-STARS,1 \?CCL23
+ PRINTI "s are "
+ JUMP ?CND21
+?CCL23: PRINT SIS
+?CND21: ICALL1 ETCHED
+ RTRUE
+?CCL5: CALL NOUN-USED?,W?SWIRLS,W?FLOURISHES
+ ZERO? STACK \?CTR24
+ CALL2 ADJ-USED?,W?RED
+ ZERO? STACK /?CCL25
+?CTR24: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?READ \?CCL30
+ PRINT XTHE
+ ICALL1 SAY-RED
+ PRINT STR?758
+ PRINTR " are skillfully wrought."
+?CCL30: INTBL? PRSA,MOVEVERBS,NMVERBS >X \?CND1
+ PRINT XTHE
+ PRINTI "swirls are "
+ ICALL1 ETCHED
+ RTRUE
+?CCL25: CALL NOUN-USED?,W?RUNES,W?RUNE
+ ZERO? STACK \?CCL32
+ CALL2 ADJ-USED?,W?GREEN
+ ZERO? STACK /?CND1
+?CCL32: EQUAL? PRSA,V?READ,V?EXAMINE,V?LOOK-ON \?CCL37
+ ICALL1 READ-RUNES
+ RTRUE
+?CCL37: INTBL? PRSA,MOVEVERBS,NMVERBS >X \?CND1
+ PRINT XTHE
+ PRINTI "runes are "
+ ICALL1 ETCHED
+ RTRUE
+?CND1: CALL2 STRANGLE?,AMULET
+ ZERO? STACK /?CCL41
+ RETURN 2
+?CCL41: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL45
+ ICALL1 CTHE-PRINT
+ PRINTI " is inscribed with "
+ ICALL1 SAY-GREEN
+ PRINTI " runes, "
+ PRINT STR?759
+ ICALL1 SAY-RED
+ PRINT STR?758
+ GRTR? AMULET-STARS,0 \?CND46
+ PRINT AND
+ EQUAL? AMULET-STARS,1 \?CCL50
+ PRINTR "a shiny star."
+?CCL50: EQUAL? AMULET-STARS,2 \?CCL52
+ PRINTB W?TWO
+ JUMP ?CND48
+?CCL52: PRINTB W?THREE
+?CND48: PRINTI " shiny stars"
+?CND46: PRINT PERIOD
+ RTRUE
+?CCL45: EQUAL? PRSA,V?READ \?CCL54
+ ICALL1 READ-RUNES
+ RTRUE
+?CCL54: EQUAL? PRSA,V?SAY,V?YELL \?CCL56
+ ZERO? AMULET-WORD /?CCL56
+ CALL2 NOUN-USED?,AMULET-WORD
+ ZERO? STACK /?CCL56
+ ICALL1 SAY-AMULET-WORD
+ RTRUE
+?CCL56: EQUAL? PRSA,V?WEAR \?CCL61
+ ZERO? AMULET-TIMER /?CCL61
+ FSET? PRSO,WORN /?CCL61
+ ICALL1 PUTON
+ ICALL1 MEGA-STRENGTH
+ RTRUE
+?CCL61: EQUAL? PRSA,V?TAKE-OFF \FALSE
+ ZERO? AMULET-TIMER /FALSE
+ IN? PRSO,PLAYER \FALSE
+ FSET? PRSO,WORN \FALSE
+ ICALL1 TAKEOFF
+ ICALL1 NORMAL-STRENGTH
+ RTRUE
+
+
+ .FUNCT STRANGLE?,OBJ,X
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ FSET? SKELETON,SEEN /FALSE
+ FSET SKELETON,SEEN
+ GET STATS,ENDURANCE
+ MUL 20,STACK
+ DIV STACK,100 >CHOKE
+ ZERO? CHOKE \?CND6
+ INC 'CHOKE
+?CND6: ICALL2 QUEUE,I-STRANGLE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ SET 'LAST-MONSTER,SKELETON
+ SET 'LAST-MONSTER-DIR,FALSE-VALUE
+ SET 'P-IT-OBJECT,SKELETON
+ SET 'P-HIM-OBJECT,SKELETON
+ PRINTI "You reach down to touch "
+ ICALL2 THE-PRINT,OBJ
+ PRINTI ".."
+ PRINT PTAB
+ ICALL1 CLAMP
+ ICALL1 BMODE-ON
+ SUB 0,CHOKE
+ ICALL2 UPDATE-STAT,STACK
+ RTRUE
+
+
+ .FUNCT CLAMP
+ ICALL2 ITALICIZE,STR?521
+ PRINTR "! Ten bony fingers clamp around your throat!"
+
+
+ .FUNCT ETCHED
+ PRINTI "permanently etched onto the "
+ PRINTD PRSO
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT READ-RUNES
+ PRINT XTHE
+ ICALL1 SAY-GREEN
+ PRINTI " runes are hard to see. They're "
+ PRINT STR?759
+ PRINT LTHE
+ ICALL1 SAY-RED
+ PRINT STR?758
+ PRINTI " on the "
+ PRINTD PRSO
+ PRINT PERIOD
+ RTRUE
+
+
+ .FUNCT SAY-RED
+ CALL1 SEE-COLOR?
+ ZERO? STACK /?CND1
+ PRINTB W?RED
+ RFALSE
+?CND1: PRINTB W?GRAY
+ RFALSE
+
+
+ .FUNCT SAY-GREEN
+ CALL1 SEE-COLOR?
+ ZERO? STACK /?CND1
+ PRINTB W?GREEN
+ RFALSE
+?CND1: PRINTB W?GRAY
+ RFALSE
+
+
+ .FUNCT SAY-AMULET-WORD
+ ZERO? AMULET-STARS /?CND1
+ FSET? AMULET,NEUTRALIZED /?CND1
+ CALL2 NO-MAGIC-HERE?,AMULET
+ ZERO? STACK \TRUE
+ CALL2 VISIBLE?,AMULET
+ ZERO? STACK /?CND1
+ ZERO? AMULET-TIMER /?CCL9
+ ICALL2 STAR-FADES,TRUE-VALUE
+ ICALL1 STOP-AMULET
+ CALL2 WEARING-MAGIC?,AMULET
+ ZERO? STACK /TRUE
+ ICALL1 NORMAL-STRENGTH
+ RTRUE
+?CCL9: GRTR? AMULET-STARS,1 \?CCL13
+ PRINT STR?755
+ JUMP ?CND7
+?CCL13: PRINT STR?756
+?CND7: PRINT STR?757
+ PRINTI "begins to glow."
+ CRLF
+ GETP AMULET,P?VALUE
+ SUB STACK,3
+ PUTP AMULET,P?VALUE,STACK
+ CALL2 WEARING-MAGIC?,AMULET
+ ZERO? STACK /?CND14
+ ICALL1 MEGA-STRENGTH
+?CND14: ICALL2 LIGHT-ROOM-WITH,AMULET
+ SET 'AMULET-TIMER,3
+ ICALL2 QUEUE,I-AMULET
+ RTRUE
+?CND1: ICALL2 NOTHING-HAPPENS,FALSE-VALUE
+ RTRUE
+
+
+ .FUNCT MEGA-STRENGTH,S
+ GET STATS,STRENGTH >S
+ LESS? S,2 \?CCL3
+ SET 'S,9
+ JUMP ?CND1
+?CCL3: MUL 9,S >S
+?CND1: PRINT TAB
+ PRINTI "A pulse of energy surges through your muscles!"
+ CRLF
+ ICALL UPDATE-STAT,S,STRENGTH
+ RTRUE
+
+
+ .FUNCT NORMAL-STRENGTH,S,MAX
+ PRINT TAB
+ PRINTI "The tension in your muscles subsides."
+ CRLF
+ GET STATS,STRENGTH >S
+ GET MAXSTATS,STRENGTH >MAX
+ GRTR? S,MAX \TRUE
+ SUB S,MAX
+ SUB 0,STACK
+ ICALL UPDATE-STAT,STACK,STRENGTH
+ RTRUE
+
+
+ .FUNCT STOP-AMULET
+ ICALL2 DEQUEUE,I-AMULET
+ SET 'AMULET-TIMER,0
+ FCLEAR AMULET,LIGHTED
+ DLESS? 'AMULET-STARS,1 \?CND1
+ SET 'AMULET-STARS,0
+ ICALL REPLACE-SYN?,AMULET,W?STAR,W?ZZZP
+ ICALL REPLACE-SYN?,AMULET,W?STARS,W?ZZZP
+ ICALL REPLACE-ADJ?,AMULET,W?SILVER,W?ZZZP
+?CND1: CALL2 VISIBLE?,AMULET
+ ZERO? STACK /FALSE
+ ICALL1 SAY-IF-HERE-LIT
+ RFALSE
+
+
+ .FUNCT KITCHEN-F,X
+ EQUAL? HERE,IN-KITCHEN \?CCL3
+ CALL1 HERE-F
+ RSTACK
+?CCL3: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,E-VERBS,ENTER-VERBS >X \FALSE
+ ICALL2 DO-WALK,P?WEST
+ RTRUE
+
+
+ .FUNCT TEARS-PARASOL,WRD1,WRD2
+ SET 'WRD1,W?OPENED
+ SET 'WRD2,W?OPEN
+ FSET? PARASOL,OPENED /?CND1
+ SET 'WRD1,W?CLOSED
+?CND1: ICALL REPLACE-ADJ?,PARASOL,WRD1,W?BROKEN
+ FSET PARASOL,MUNGED
+ FCLEAR PARASOL,OPENED
+ FCLEAR PARASOL,VOWEL
+ FCLEAR PARASOL,BUOYANT
+ PUTP PARASOL,P?VALUE,0
+ PRINTI " tears "
+ ICALL2 THE-PRINT,PARASOL
+ PRINTI " from your grasp a little too soon"
+ RFALSE
+
+
+ .FUNCT CROWN-F
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE \?CCL5
+ PRINTI "The tiny crown "
+ IN? PRSO,CRAB \?CND6
+ PRINTI "on the crab's head "
+?CND6: PRINTR "is exquisitely wrought in what appears to be solid gold."
+?CCL5: EQUAL? PRSA,V?WEAR,V?USE \FALSE
+ PRINTR "Your head is too fat."
+
+
+ .FUNCT GREAT-SEA-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X \FALSE
+ ICALL1 WATER-VANISH
+ RTRUE
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL7
+ ICALL1 CTHE-PRINT
+ PRINTI " stretches east"
+ PRINT STR?725
+ PRINT PERIOD
+ RTRUE
+?CCL7: EQUAL? PRSA,V?LOOK-INSIDE,V?LOOK-UNDER,V?SEARCH \?CCL9
+ PRINT STR?760
+ PRINTR "in the foamy waters."
+?CCL9: INTBL? PRSA,E-VERBS,ENTER-VERBS >X \?CCL11
+ ICALL2 DO-WALK,P?EAST
+ RTRUE
+?CCL11: INTBL? PRSA,X-VERBS,EXIT-VERBS >X \?CCL13
+ ICALL1 NOT-IN
+ RTRUE
+?CCL13: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ PRINT CANT
+ PRINTR "reach the water from here."
+
+
+ .FUNCT ACCARDI-F,X
+ EQUAL? HERE,IN-ACCARDI \?CCL3
+ CALL1 HERE-F
+ RSTACK
+?CCL3: INTBL? PRSA,E-VERBS,ENTER-VERBS >X \FALSE
+ SET 'X,P?WEST
+ EQUAL? HERE,IN-HALL \?CCL8
+ SET 'X,P?SOUTH
+ JUMP ?CND6
+?CCL8: EQUAL? HERE,AT-BRINE \?CND6
+ SET 'X,P?NE
+?CND6: ICALL2 DO-WALK,X
+ RTRUE
+
+
+ .FUNCT TOWER-F,X
+ INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X \?CCL3
+ ICALL2 DO-WALK,P?UP
+ RTRUE
+?CCL3: INTBL? PRSA,X-VERBS,CLIMB-DOWN-VERBS >X \?CCL5
+ ICALL2 DO-WALK,P?DOWN
+ RTRUE
+?CCL5: CALL1 HERE-F
+ ZERO? STACK /FALSE
+ RTRUE
+
+
+ .FUNCT TOWER-STEPS-F
+ ZERO? NOW-PRSI? /?CCL3
+ CALL1 MIGHT-TRIP?
+ ZERO? STACK /FALSE
+ RTRUE
+?CCL3: EQUAL? PRSA,V?CLIMB-ON,V?CLIMB-UP,V?CLIMB-OVER \?CCL7
+ ICALL2 DO-WALK,P?UP
+ RTRUE
+?CCL7: EQUAL? PRSA,V?CLIMB-DOWN \?CCL9
+ ICALL2 DO-WALK,P?DOWN
+ RTRUE
+?CCL9: EQUAL? PRSA,V?COUNT \?CCL11
+ PRINTR "There are fewer than 69,105 steps."
+?CCL11: EQUAL? PRSA,V?LOOK-UP,V?LOOK-DOWN \FALSE
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+
+
+ .FUNCT BOUTIQUE-F,X
+ EQUAL? HERE,IN-BOUTIQUE \?CCL3
+ CALL1 HERE-F
+ RSTACK
+?CCL3: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,E-VERBS,ENTER-VERBS >X \FALSE
+ ICALL2 DO-WALK,P?NORTH
+ RTRUE
+
+
+ .FUNCT GONDOLA-F,CONTEXT,OBJ,X
+ ZERO? CONTEXT /?CCL3
+ SET 'OBJ,PRSO
+ ZERO? NOW-PRSI? /?CND4
+ SET 'OBJ,PRSI
+?CND4: EQUAL? CONTEXT,M-BEG \?CCL8
+ CALL CANT-REACH-WHILE-IN?,OBJ,GONDOLA
+ RSTACK
+?CCL8: EQUAL? CONTEXT,M-CONT \FALSE
+ IN? PLAYER,GONDOLA /FALSE
+ ZERO? OBJ /FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \FALSE
+ ICALL YOUD-HAVE-TO,STR?761,GONDOLA
+ RTRUE
+?CCL3: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,E-VERBS,ENTER-VERBS >X \?CCL19
+ IN? PLAYER,PRSO /?CCL19
+ EQUAL? HERE,AT-DOCK \?CND22
+ EQUAL? GON,0,1,14 \?CND22
+ PRINTI """Wait yer turn, "
+ FSET? PLAYER,FEMALE \?CCL28
+ PRINTB W?LADY
+ JUMP ?CND26
+?CCL28: PRINTI "buddy"
+?CND26: PRINTR ","" growls a passenger in front of you."
+?CND22: SET 'OLD-HERE,FALSE-VALUE
+ SET 'P-WALK-DIR,FALSE-VALUE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE WINNER,PRSO
+ FCLEAR PRSO,NODESC
+ EQUAL? HERE,AT-DOCK \?CCL31
+ PRINTI "You shove your way "
+ JUMP ?CND29
+?CCL31: PRINT STR?762
+?CND29: PRINTI "into "
+ ICALL1 THE-PRINT
+ ICALL1 RELOOK
+ RTRUE
+?CCL19: INTBL? PRSA,X-VERBS,EXIT-VERBS >X \?CCL33
+ IN? PLAYER,PRSO \?CCL33
+ FSET PRSO,NODESC
+ EQUAL? HERE,OVER-JUNGLE \?CND36
+ ICALL1 JUNGLE-JUMP
+ RTRUE
+?CND36: SET 'OLD-HERE,FALSE-VALUE
+ SET 'P-WALK-DIR,FALSE-VALUE
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ MOVE WINNER,HERE
+ EQUAL? HERE,AT-DOCK \?CND38
+ PRINT STR?763
+ PRINTI "out of "
+ ICALL1 THE-PRINT
+ ICALL1 RELOOK
+ RTRUE
+?CND38: PRINT STR?762
+ PRINT STR?764
+ ICALL1 RELOOK
+ PRINT TAB
+ PRINTI """Passengers will please remain seated,"" drones "
+ ICALL2 THE-PRINT,CONDUCTOR
+ PRINT PERIOD
+ RTRUE
+?CCL33: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE
+ PRINTI "A decal on the side says, """
+ ICALL2 FROBOZZ,STR?765
+ PRINT PERQ
+ RTRUE
+
+
+ .FUNCT JUNGLE-JUMP
+ PRINT STR?762
+ PRINT STR?764
+ PRINTI ", and plummet to your death in the jungle far below"
+ ICALL1 JIGS-UP
+ RFALSE
+
+
+ .FUNCT DGONDOLA-F,X
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X /?CTR2
+ INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X \?CCL3
+?CTR2: ICALL2 CTHE-PRINT,DGONDOLA
+ PRINTR " is too far away now."
+?CCL3: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,SEEVERBS,NSVERBS >X \FALSE
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+
+
+ .FUNCT SUPPORT-F,X
+ INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X \?CCL3
+ EQUAL? HERE,OVER-JUNGLE \?CCL6
+ ICALL1 CANT-FROM-HERE
+ RTRUE
+?CCL6: IN? PLAYER,GONDOLA \?CND4
+ ICALL PERFORM,V?EXIT,GONDOLA
+ RTRUE
+?CND4: ICALL2 DO-WALK,P?UP
+ RTRUE
+?CCL3: INTBL? PRSA,X-VERBS,CLIMB-DOWN-VERBS >X \?CCL9
+ EQUAL? HERE,OVER-JUNGLE \?CCL12
+ ICALL1 CANT-FROM-HERE
+ RTRUE
+?CCL12: IN? PLAYER,GONDOLA \?CND10
+ ICALL2 NOT-ON,SUPPORT
+ RTRUE
+?CND10: ICALL2 DO-WALK,P?DOWN
+ RTRUE
+?CCL9: EQUAL? HERE,OVER-JUNGLE \FALSE
+ INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL18
+ ICALL1 CANT-FROM-HERE
+ RTRUE
+?CCL18: INTBL? PRSA,SEEVERBS,NSVERBS >X \FALSE
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+
+
+ .FUNCT DOCK-F,X
+ EQUAL? HERE,AT-DOCK \?CCL3
+ CALL1 HERE-F
+ RSTACK
+?CCL3: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CCL5
+ CALL1 CANT-FROM-HERE
+ RSTACK
+?CCL5: INTBL? PRSA,SEEVERBS,NSVERBS >X \FALSE
+ ICALL1 CANT-SEE-MUCH
+ RTRUE
+
+
+ .FUNCT ZBRIDGE-F,X
+ ZERO? NOW-PRSI? /?CCL3
+ INTBL? PRSA,PUTVERBS,NUMPUTS >X /?CCL5
+ EQUAL? PRSA,V?HANG-ON \FALSE
+?CCL5: ICALL1 VANISH
+ ICALL1 CTHE-PRINT
+ EQUAL? PRSO,PARASOL,LANTERN \?CND8
+ PRINTI " dangles uncertainly for a moment,"
+?CND8: PRINTR " falls off the slippery ropes and plummets into the roaring water."
+?CCL3: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL11
+ PRINTI "The long, narrow "
+ ICALL2 DPRINT,PRSO
+ PRINTI " leads "
+ EQUAL? HERE,ON-BRIDGE,SFORD \?CCL14
+ PRINTB W?NORTH
+ EQUAL? HERE,ON-BRIDGE \?CND12
+ PRINT AND
+ PRINTB W?SOUTH
+ JUMP ?CND12
+?CCL14: PRINTB W?SOUTH
+?CND12: PRINTR " across the roaring water."
+?CCL11: EQUAL? PRSA,V?ENTER,V?STAND-ON,V?WALK-TO \?CCL18
+ EQUAL? HERE,ON-BRIDGE \?CCL21
+ ICALL1 ALREADY-ON
+ RTRUE
+?CCL21: EQUAL? HERE,SFORD \?CND19
+ ICALL2 DO-WALK,P?NORTH
+ RTRUE
+?CND19: ICALL2 DO-WALK,P?SOUTH
+ RTRUE
+?CCL18: INTBL? PRSA,E-VERBS,CLIMB-ON-VERBS >X \?CCL24
+ SET 'X,P?NORTH
+ EQUAL? HERE,SFORD /?CND25
+ EQUAL? HERE,ON-BRIDGE \?CCL27
+ GETP HERE,P?DNUM
+ EQUAL? STACK,STR?733 /?CND25
+?CCL27: SET 'X,P?SOUTH
+?CND25: ICALL2 DO-WALK,X
+ RTRUE
+?CCL24: CALL1 JUMPING-OFF?
+ ZERO? STACK \?CTR30
+ EQUAL? PRSA,V?STAND-UNDER \?CCL31
+?CTR30: ICALL2 DO-WALK,P?DOWN
+ RTRUE
+?CCL31: INTBL? PRSA,X-VERBS,EXIT-VERBS >X \FALSE
+ EQUAL? HERE,ON-BRIDGE /?CND36
+ ICALL1 NOT-ON
+ RTRUE
+?CND36: ICALL1 V-WALK-AROUND
+ RTRUE
+
+
+ .FUNCT SWALL-F,X
+ CALL NOUN-USED?,W?OPENING,W?HOLE
+ ZERO? STACK /?CCL3
+ FSET? SWALL,OPENED /?CCL3
+ ICALL2 NONE-HERE,W?OPENING
+ RETURN 2
+?CCL3: FSET? SWALL,SEEN /?CCL9
+ CALL NOUN-USED?,W?DOOR,W?DOORWAY
+ ZERO? STACK /?CCL9
+ ICALL2 NONE-HERE,W?DOOR
+ RETURN 2
+?CCL9: CALL2 NOUN-USED?,W?OUTLINE
+ ZERO? STACK /?CND1
+ FSET? SWALL,OPENED \?CCL17
+ PRINT XTHE
+ PRINTB W?OUTLINE
+ PRINTI " is now an "
+ PRINTB W?OPENING
+ PRINT PERIOD
+ RETURN 2
+?CCL17: FSET? SWALL,SEEN /?CND1
+ ICALL2 NONE-HERE,W?OUTLINE
+ RETURN 2
+?CND1: ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?SAY,V?YELL \?CCL27
+ ZERO? WALL-WORD /?CCL27
+ CALL2 NOUN-USED?,WALL-WORD
+ ZERO? STACK \?CTR26
+ CALL2 ADJ-USED?,WALL-WORD
+ ZERO? STACK /?CCL27
+?CTR26: ICALL1 SAY-WALL-WORD
+ RTRUE
+?CCL27: EQUAL? PRSA,V?EXAMINE,V?SEARCH,V?LOOK-ON /?CTR33
+ EQUAL? PRSA,V?LOOK-INSIDE,V?LOOK-BEHIND,V?LOOK-UNDER \?CCL34
+?CTR33: FSET? PRSO,SEEN \?CND37
+ ICALL2 SEE-DOORLIKE,PRSO
+ EQUAL? HERE,SE-CAVE \?CND39
+ PRINTB W?SOUTHEAST
+ PRINTC SP
+?CND39: PRINTB W?WALL
+ PRINT PERIOD
+ RTRUE
+?CND37: ICALL1 SEAMLESS-WALL
+ RTRUE
+?CCL34: EQUAL? PRSA,V?ENTER,V?WALK-TO,V?THROUGH /?CTR41
+ EQUAL? PRSA,V?WALK-AROUND,V?FOLLOW \?CCL42
+?CTR41: SET 'X,P?SW
+ EQUAL? HERE,NE-CAVE \?CND45
+ SET 'X,P?NE
+?CND45: ICALL2 DO-WALK,X
+ RTRUE
+?CCL42: EQUAL? PRSA,V?OPEN,V?PUSH,V?MOVE \?CCL48
+ FSET? PRSO,OPENED \?CCL51
+ ICALL2 ITS-ALREADY,STR?518
+ RTRUE
+?CCL51: FSET? SWALL,SEEN /?CND49
+ ICALL1 SHOVE-STRAIN
+ RTRUE
+?CND49: ICALL1 OPEN-SWALL
+ ICALL1 WALLPUSH
+ RTRUE
+?CCL48: EQUAL? PRSA,V?CLOSE,V?PULL \FALSE
+ FSET? PRSO,OPENED /?CND55
+ FSET? SWALL,SEEN /?CND57
+ ICALL2 NONE-HERE,W?OPENING
+ RTRUE
+?CND57: ICALL2 ITS-ALREADY,STR?531
+ RTRUE
+?CND55: ICALL1 CLOSE-SWALL
+ ICALL1 WALLCLOSE
+ RTRUE
+
+
+ .FUNCT WALLCLOSE
+ PRINTR "You slowly pull the secret door shut."
+
+
+ .FUNCT WALLPUSH
+ PRINTR "You push against the outline on the wall with all your might, and an opening appears."
+
+
+ .FUNCT NONE-HERE,WRD
+ PRINT DONT
+ PRINTI "see any "
+ PRINTB WRD
+ PRINTR "s here."
+
+
+ .FUNCT CLOSE-SWALL
+ FCLEAR SWALL,OPENED
+ ICALL NEW-EXIT?,SE-WALL,P?NW,FCONNECT,CANT-ENTER-WALL
+ ICALL NEW-EXIT?,SE-WALL,P?IN,FCONNECT,CANT-ENTER-WALL
+ ICALL NEW-EXIT?,SE-CAVE,P?SE,FCONNECT,CANT-ENTER-WALL
+ ICALL NEW-EXIT?,SE-CAVE,P?OUT,FCONNECT,CANT-ENTER-WALL
+ FCLEAR SE-CAVE,LIGHTED
+ PUTP SE-CAVE,P?BEAM-DIR,NO-MIRROR
+ ICALL1 REFLECTIONS
+ ICALL1 REFRESH-MAP
+ RTRUE
+
+
+ .FUNCT OPEN-SWALL,X
+ FSET SWALL,OPENED
+ ICALL NEW-EXIT?,SE-WALL,P?NW,641,SE-CAVE
+ ICALL NEW-EXIT?,SE-WALL,P?IN,641,SE-CAVE
+ ICALL NEW-EXIT?,SE-CAVE,P?SE,641,SE-WALL
+ ICALL NEW-EXIT?,SE-CAVE,P?OUT,641,SE-WALL
+ FSET SE-CAVE,LIGHTED
+ PUTP SE-CAVE,P?BEAM-DIR,I-SE
+ EQUAL? HERE,SE-CAVE \?CND1
+ SET 'LIT?,TRUE-VALUE
+?CND1: ICALL1 REFLECTIONS
+ EQUAL? HERE,SE-CAVE /TRUE
+ ICALL1 REFRESH-MAP
+ RTRUE
+
+
+ .FUNCT NWALL-F,X
+ CALL NOUN-USED?,W?OPENING,W?HOLE
+ ZERO? STACK /?CCL3
+ FSET? NWALL,OPENED /?CCL3
+ ICALL2 NONE-HERE,W?OPENING
+ RETURN 2
+?CCL3: FSET? NWALL,SEEN /?CCL9
+ CALL NOUN-USED?,W?DOOR,W?DOORWAY
+ ZERO? STACK /?CCL9
+ ICALL2 NONE-HERE,W?DOOR
+ RETURN 2
+?CCL9: CALL2 NOUN-USED?,W?OUTLINE
+ ZERO? STACK /?CND1
+ FSET? NWALL,OPENED \?CCL17
+ PRINT XTHE
+ PRINTB W?OUTLINE
+ PRINTI " is now an "
+ PRINTB W?OPENING
+ PRINT PERIOD
+ RETURN 2
+?CCL17: FSET? NWALL,SEEN /?CND1
+ ICALL2 NONE-HERE,W?OUTLINE
+ RETURN 2
+?CND1: ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?SAY,V?YELL \?CCL27
+ ZERO? WALL-WORD /?CCL27
+ CALL2 NOUN-USED?,WALL-WORD
+ ZERO? STACK \?CTR26
+ CALL2 ADJ-USED?,WALL-WORD
+ ZERO? STACK /?CCL27
+?CTR26: ICALL1 SAY-WALL-WORD
+ RTRUE
+?CCL27: EQUAL? PRSA,V?EXAMINE,V?SEARCH,V?LOOK-ON /?CTR33
+ EQUAL? PRSA,V?LOOK-INSIDE,V?LOOK-BEHIND,V?LOOK-UNDER \?CCL34
+?CTR33: FSET? NWALL,SEEN \?CND37
+ ICALL2 SEE-DOORLIKE,PRSO
+ EQUAL? HERE,NE-CAVE \?CND39
+ PRINTB W?NORTHWEST
+ PRINTC SP
+?CND39: PRINTB W?WALL
+ PRINT PERIOD
+ RTRUE
+?CND37: ICALL1 SEAMLESS-WALL
+ RTRUE
+?CCL34: EQUAL? PRSA,V?ENTER,V?WALK-TO,V?THROUGH /?CTR41
+ EQUAL? PRSA,V?WALK-AROUND,V?FOLLOW \?CCL42
+?CTR41: SET 'X,P?SE
+ EQUAL? HERE,NE-CAVE \?CND45
+ SET 'X,P?NW
+?CND45: ICALL2 DO-WALK,X
+ RTRUE
+?CCL42: EQUAL? PRSA,V?OPEN,V?PUSH,V?MOVE \?CCL48
+ FSET? PRSO,OPENED \?CCL51
+ ICALL2 ITS-ALREADY,STR?518
+ RTRUE
+?CCL51: FSET? NWALL,SEEN /?CND49
+ ICALL1 SHOVE-STRAIN
+ RTRUE
+?CND49: ICALL1 OPEN-NWALL
+ ICALL1 WALLPUSH
+ RTRUE
+?CCL48: EQUAL? PRSA,V?CLOSE,V?PULL \FALSE
+ FSET? PRSO,OPENED /?CND55
+ FSET? NWALL,SEEN \?CND57
+ ICALL2 NONE-HERE,W?OPENING
+ RTRUE
+?CND57: ICALL2 ITS-ALREADY,STR?531
+ RTRUE
+?CND55: ICALL1 CLOSE-NWALL
+ ICALL1 WALLCLOSE
+ RTRUE
+
+
+ .FUNCT SEE-DOORLIKE,OBJ
+ PRINT STR?723
+ FSET? OBJ,OPENED \?CCL3
+ PRINTB W?OPENING
+ JUMP ?CND1
+?CCL3: PRINTB W?OUTLINE
+?CND1: PRINT STR?495
+ RFALSE
+
+
+ .FUNCT SHOVE-STRAIN
+ PRINTI "You shove and strain against "
+ ICALL1 THE-PRINT
+ PRINTR ", but to no avail."
+
+
+ .FUNCT SEAMLESS-WALL
+ PRINTR "All you see is a seamless wall of stone."
+
+
+ .FUNCT CLOSE-NWALL
+ FCLEAR NWALL,OPENED
+ ICALL NEW-EXIT?,NE-WALL,P?SE,FCONNECT,CANT-ENTER-WALL
+ ICALL NEW-EXIT?,NE-WALL,P?IN,FCONNECT,CANT-ENTER-WALL
+ ICALL NEW-EXIT?,NE-CAVE,P?NW,FCONNECT,CANT-ENTER-WALL
+ ICALL NEW-EXIT?,NE-CAVE,P?OUT,FCONNECT,CANT-ENTER-WALL
+ FCLEAR NE-CAVE,LIGHTED
+ ICALL1 REFRESH-MAP
+ RTRUE
+
+
+ .FUNCT OPEN-NWALL,X
+ FSET NWALL,OPENED
+ ICALL NEW-EXIT?,NE-WALL,P?SE,641,NE-CAVE
+ ICALL NEW-EXIT?,NE-WALL,P?IN,641,NE-CAVE
+ ICALL NEW-EXIT?,NE-CAVE,P?NW,641,NE-WALL
+ ICALL NEW-EXIT?,NE-CAVE,P?OUT,641,NE-WALL
+ FSET NE-CAVE,LIGHTED
+ EQUAL? HERE,NE-CAVE \?CND1
+ SET 'LIT?,TRUE-VALUE
+?CND1: ICALL1 REFRESH-MAP
+ RTRUE
+
+
+ .FUNCT WEAPON-SHOP-F,X
+ EQUAL? HERE,IN-WEAPON \?CCL3
+ CALL1 HERE-F
+ RSTACK
+?CCL3: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,E-VERBS,ENTER-VERBS >X \FALSE
+ ICALL2 DO-WALK,P?WEST
+ RTRUE
+
+
+ .FUNCT MSHOPPE-F,X
+ EQUAL? HERE,IN-MAGICK \?CCL3
+ CALL1 HERE-F
+ RSTACK
+?CCL3: ZERO? NOW-PRSI? \FALSE
+ INTBL? PRSA,E-VERBS,ENTER-VERBS >X \FALSE
+ ICALL2 DO-WALK,P?WEST
+ RTRUE
+
+
+ .FUNCT MAGICK-DOOR-F
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?OPEN \?CCL5
+ FSET? PRSO,OPENED /?CCL5
+ ICALL2 TINKLES,W?OPEN
+ ICALL1 IOPEN
+ RTRUE
+?CCL5: EQUAL? PRSA,V?CLOSE \FALSE
+ FSET? PRSO,OPENED \FALSE
+ ICALL2 TINKLES,W?CLOSE
+ ICALL1 ICLOSE
+ RTRUE
+
+
+ .FUNCT TINKLES,WRD
+ PRINTI "As you "
+ PRINTB WRD
+ PRINTC SP
+ ICALL1 THE-PRINT
+ PRINTR ", a concealed bell tinkles merrily."
+
+
+ .FUNCT LAMPHOUSE-F,X
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE \?CCL5
+ ICALL1 GET-SEXTANT
+ ICALL1 CTHE-PRINT
+ PRINTI " is shattered beyond all usefulness"
+ FIRST? PRSO >X \?CND6
+ PRINT STR?766
+ PRINTI "lying upon the debris within"
+?CND6: PRINT PERIOD
+ RTRUE
+?CCL5: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \?CCL9
+ ICALL1 GET-SEXTANT
+ FIRST? PRSO >X \?CCL12
+ SET 'X,W?YOU
+ PRINTI "Sifting"
+ JUMP ?CND10
+?CCL12: SET 'X,W?BUT
+ PRINTI "You sift"
+?CND10: PRINTI " through the debris, "
+ PRINTB X
+ PRINTI " discover "
+ ICALL1 CONTENTS
+ PRINT PERIOD
+ SET 'P-IT-OBJECT,LAMPHOUSE
+ RTRUE
+?CCL9: EQUAL? PRSA,V?LAMP-ON \?CCL14
+ PRINTR "Not a chance."
+?CCL14: EQUAL? PRSA,V?LAMP-OFF \?CCL16
+ PRINTR "It's been off for a long time."
+?CCL16: INTBL? PRSA,MOVEVERBS,NMVERBS >X \FALSE
+ PRINTI "The remains of "
+ ICALL1 THE-PRINT
+ PRINT STR?767
+ RTRUE
+
+
+ .FUNCT GET-SEXTANT
+ FSET? SEXTANT,NODESC \FALSE
+ FCLEAR SEXTANT,NODESC
+ MOVE SEXTANT,PRSO
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ RFALSE
+
+
+ .FUNCT SEXTANT-F
+ ZERO? NOW-PRSI? \FALSE
+ EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL5
+ PRINTI "A quaint but obsolete instrument, long since replaced by Kaluzniacki's "
+ ICALL2 ITALICIZE,STR?768
+ PRINTR " spell. Nevertheless, even he would have hesitated to throw this sextant away, as it appears to be wrought of solid platinum."
+?CCL5: EQUAL? PRSA,V?POINT-AT,V?TURN-TO,V?ADJUST /?CTR6
+ EQUAL? PRSA,V?OPEN,V?OPEN-WITH,V?CLOSE \FALSE
+?CTR6: PRINTR "You have no idea how to operate this arcane instrument."
+
+
+ .FUNCT CHEST-F,CONTEXT,X
+ ZERO? CONTEXT /?CCL3
+ EQUAL? CONTEXT,M-OBJDESC \FALSE
+ PRINTI "An old "
+ PRINTD CHEST
+ PRINTI " lies half-buried in debris."
+ RTRUE
+?CCL3: INTBL? PRSA,TOUCHVERBS,NTOUCHES >X \?CND1
+ EQUAL? HERE,TOWER-TOP \?CCL9
+ FSET? DORN,LIVING \?CCL9
+ FSET? DORN,NODESC \?CCL9
+ FCLEAR DORN,NODESC
+ ICALL2 QUEUE,I-DORN
+ MOVE DORN,TOWER-TOP
+ ICALL2 SEE-CHARACTER,DORN
+ BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
+ PRINT STR?769
+ PRINTI "hear a loud ""Hurumph!"" immediately behind you."
+ CRLF
+ ZERO? DMODE /?CCL14
+ EQUAL? PRIOR,0,SHOWING-ROOM /TRUE
+?CCL14: ICALL2 RELOOK,TRUE-VALUE
+ RTRUE
+?CCL9: CALL2 VISIBLE?,DORN
+ ZERO? STACK /?CND1
+ FSET? DORN,MUNGED /?CND1
+ ICALL2 CTHE-PRINT,DORN
+ PRINTI " won't let you near "
+ ICALL2 THE-PRINT,CHEST
+ PRINT PERIOD
+ RTRUE
+?CND1: CALL NOUN-USED?,W?LID,W?COVER
+ ZERO? STACK /?CCL22
+ EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND \?CCL25
+ ICALL PERFORM,V?LOOK-INSIDE,CHEST
+ RTRUE
+?CCL25: EQUAL? PRSA,V?OPEN,V?RAISE \?CND20
+ ICALL1 OPEN-CHEST
+ RTRUE
+?CCL22: CALL2 NOUN-USED?,W?PLATE
+ ZERO? STACK \?CCL27
+ CALL ADJ-USED?,W?BRASS,W?METAL
+ ZERO? STACK /?CND20
+?CCL27: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON,V?READ \?CCL32
+ ICALL1 READ-PLATE
+ RTRUE
+?CCL32: INTBL? PRSA,MOVEVERBS,NMVERBS >X \?CND20
+ ICALL FIRMLY-ATTACHED,STR?770,CHEST,TRUE-VALUE
+ RTRUE
+?CND20: ZERO? NOW-PRSI? /?CCL36
+ EQUAL? PRSA,V?PUT,V?EMPTY-INTO \?CCL39
+ FSET? PRSI,OPENED /?CCL42
+ ICALL YOUD-HAVE-TO,STR?518,PRSI
+ RTRUE
+?CCL42: EQUAL? PRSO,PARASOL \FALSE
+ FSET? PRSO,OPENED \FALSE
+ ICALL2 YOUD-HAVE-TO,STR?536
+ RTRUE
+?CCL39: EQUAL? PRSA,V?PUT-ON \FALSE
+ FSET? PRSI,OPENED \?CND47
+ ICALL YOUD-HAVE-TO,STR?536,PRSI
+ RTRUE
+?CND47: ICALL1 PRSO-SLIDES-OFF-PRSI
+ RTRUE
+?CCL36: EQUAL? PRSA,V?TAKE \?CCL50
+ FSET? PRSO,OPENED \?CCL53
+ ICALL2 YOUD-HAVE-TO,STR?536
+ RTRUE
+?CCL53: CALL1 ITAKE
+ ZERO? STACK /TRUE
+ PUTP PRSO,P?DESCFCN,0
+ PRINTR "Taken."
+?CCL50: EQUAL? PRSA,V?READ \?CCL56
+ ICALL1 READ-PLATE
+ RTRUE
+?CCL56: EQUAL? PRSA,V?EXAMINE,V?LOOK-ON \?CCL58
+ PRINTI "The oak chest is compact and sturdy, probably the craft of Antharian dwarves. No latch or keyhole is visible, but a brass plate is affixed to the top of the "
+ FSET? PRSO,OPENED \?CCL61
+ PRINTB W?OPEN
+ JUMP ?CND59
+?CCL61: PRINTB W?CLOSED
+?CND59: PRINTR " lid."
+?CCL58: EQUAL? PRSA,V?OPEN,V?OPEN-WITH \FALSE
+ ICALL1 OPEN-CHEST
+ RTRUE
+
+
+ .FUNCT READ-PLATE
+ FSET CHEST,SEEN
+ PRINTI "The brass plate on "
+ ICALL1 THE-PRINT
+ PRINTI "'s lid is engraved with a simple warning in many languages, including yours: "
+ PRINT STR?771
+ RTRUE