diff --git a/archive/code.rno b/archive/code.rno new file mode 100644 index 0000000..f1115d5 --- /dev/null +++ b/archive/code.rno @@ -0,0 +1,212 @@ +.c;INFOTATER TEXT +.s 4 +This is the copy for the "infotater" -- the rotating data wheel which +will be included in the game package. It is also an object which appears +in the game. It is important to the play of the game, and is meant as an +anti-piracy device. +.s +.c;SEM, 1/5/84 + +.pg +.lm 18 +.rm 62 +.c;BLOODWORM +.s +Found in shallow underground pools; often mistaken for mossy boulders. +Pointy, retractable fangs can extend up to 32". Most bloodworms are +repelled by the smell of boiled chives. Bloodworms are usually white - +gray - black - red - black. +.s 3 +.s +.c;BROGMOID +.s +In rare cases, these squat creatures can achieve intelligence level of a +3-year-old human. Often seen in wild foraging in huge packs for edible +rocks. Live much longer in captivity; can even be trained to perform +simple tasks. Usually red - purple - red - black - purple. +.s 3 +.c;DORN +.s +Can paralyze with a single glare from its powerful eyes (range: roughly +3' for young beasts to 20' for adults). Dorns commonly inhabit crags and +shadows near cliff bases. According to the last words of dying +explorers, dorn beasts are gray - purple - black - gray - white. +.s 3 +.c;DRYAD +.s +Also called "tree sprite". Beautiful, shy. Many spend lifetime under one +tree. If coaxed, may reveal location of forest treasures. Will fight +only in self defense and only in large numbers, pelting foes with tons +of rose petals. When awake, dryads are black - gray - white - red - red. + +.PG +.c;GRUE +.s +A sinister, lurking presence in the dark places of the earth. Favorite +snack is unwary Enchanters. Fears light: No grue has ever been seen by +the light of day. Toxicologists believe that grues are probably black - +black - red - black - purple. +.s 3 +.c;HELLHOUND +.s +Fast, fierce, and capable of devouring a human 12 times its size in 3.5 +seconds. Normally inhabits burnt-out or enchanted woods and rarely +ventures beyond its own turf, even in pursuit of prey. Hellhounds are +purple - white - gray - red - gray. +.s 3 +.c;KOBOLD +.s +Lives in small tribes in caverns and very dark forests. Similar to +paskald, except middle toe is shorter than toes that flank it; also, far +more belligerent. If attacked, will fight back; if not attacked, will +fight back anyway. Coloration: red - purple - black - purple - red. +.s 3 +.c;NABIZ +.s +A nabiz is mostly mouth, and that mouth is mostly teeth. Instinctively +attack's enemy's weak point. Contrary to folk lore, cannot fly, but +leaps vast distances. Is repulsed by the color blue; hence that color's +popularity in adventurers' garb. Nabiz are purple - black - black - +black - red. + +.pg +.c;ORC +Erstwhile warring race who became civilized through their fondness for +computer adventure games. Although a small fraction (Hi-Res Orcs) enjoy +graphics adventures, the vast majority (Orcs of Zork) prefer text games. +By the light of a CRT screen, orcs are red - gray - purple - gray - red. +.s 3 +.c;ROTGRUB +.s +Less than 1" long; smells like very cheap old cheese; impervious to all +forms of magic. Hides in food until ingested, then burrows straight to +victim's brain and feeds for years before death mercifully arrives. +Common household rotgrubs are gray - red - gray - purple - red. +.s 3 +.c;SURMIN +.s +Characterized by malodorous breath, lice-ridden fur, and general +repulsiveness. If allowed to approach close enough, can bore its victims +to death by reciting Greater Borphee County Penal Codes. A newly-shaved +surmin is black - black - purple - red - black. +.s 3 +.c;YIPPLE +.s +Master of disguise, able to change form. In the wild, may bite if +disturbed. Violently allergic to many kinds of animal wastes. Tame +yipples make wonderful pets, but should be kept out of cookie jar when +guests visit. On a white background, yipples look gray - purple - white +- purple - black. + +.pg +.LM 18 +.RM 62 +.c;BLOODWORM +.s +Bloodworms live in shallow underground pools of water, often appearing +as mossy boulders to an unwary observer. Their pointy, retractable fangs +can extend up to 32 inches when attacking a victim. Most bloodworms are +repelled by the taste and smell of boiled chives; always carry some if +you plan on venturing near known bloodworm spawning grounds. Bloodworms +are usually white and gray and black and red and gray. +.s 2 +.c;BROGMOID +.s +Brogmoids are squat creatures who can, in rare cases, achieve the +intelligence of a three-year-old human. If raised from birth in a +domestic setting, a brogmoid will be quite tame and can even be taught +to perform simple tasks. In the wild, brogmoids can be seen in huge +packs sorting through rock piles looking for edible rocks. Brogmoids, +which live considerably longer in captivity, are red and purple and red +and black and purple. +.s 2 +.c;DORN +.s +Dorn beasts are very deadly and should be avoided at all costs. They +generally live in crags and shadows near cliff bases. A dorn beast can +paralyze its victim with a single glare from its powerful eyes. A dorn +beast stare has a range of about three feet in a young dorn beastling up +to about twenty feet in a full grown dorn. According to the last words +of dying explorers, dorn beasts are gray and purple and black and gray +and white. +.s 2 +.c;DRYAD +.s +Dryads, also known as tree sprites, are beautiful and shy. They can +frequently live their entire lives without stepping out of the shade of +the tree they were born under. Dryads, if coaxed, can reveal the +location of forest treasures. They are only dangerous in large numbers, +and then only if threatened. In these circumstances, they have been +known to crush their attackers under tons and tons of rose petals. +Dryads, when awake, are black and gray and white and red and red. + +.pg +.C;GRUE +.s +The grue is a sinister, lurking presence in the dark places of the +earth. Its favorite diet is Enchanters, but its insatiable appetite is +tempered by its fear of light. No grue has ever been seen by the light +of day, and few have survived to tell the tale. Grues are probably black +and black and red and black and purple. +.s 2 +.c;HELLHOUND +.s +The best thing to do when you spot a hellhound is to run as fast as +possible in the other direction. Hellhounds are fast, ferocious, +merciless, and capable of devouring a human 12 times its size in +three-and-one-half seconds. They normally live in burned-out or +enchanted woods, and rarely venture beyond their turf, even in pursuit +of prey. Hellhounds are purple and white and gray and red and gray. +.s 2 +.c;KOBOLD +.s +Kobolds, who live in small tribes in caverns or very dark forests, are +extremely capable fighters. If attacked, they will fight back. If not +attacked, they will fight back anyway. Kobolds look very similar to the +less aggressive paskalds, but can be immediately identified by the fact +that their middle toes are slightly shorter than the toes which flank +it. Kobolds are red and purple and black and purple and red. +.s 2 +.c;NABIZ +.s +Nabiz are mostly mouth, and that mouth is mostly teeth. Nabiz always +instinctively know exactly what their enemy's weakest point is, and +attack there. Contrary to popular folk lore, they cannot fly, but they +can leap tremendous distances. Nabiz are repulsed by the color blue, +which explains the popularity of this color among adventurer's garb. +Common nabiz are purple and black and black and black and red. + +.pg +.c;ORC +.s +Once a fearsome race of warriors, the orcs were tamed by their fondness +for computerized adventure games. Although a small segment, known as the +Hi-Res Orcs, enjoy graphic adventurers, the vast majority prefer text +games. These are known as the Orcs of Zork. In the reflected light of a +CRT screen, orcs appear to be red and gray and purple and gray and red. +.s 2 +.c;ROTGRUB +.s +The rotgrub is less than an inch long, and lies waiting in food. Once +ingested, the rotgrub heads straight for the brain and begins feeding. +Rotgrub death is excrutiatingly painful and can last years. Worse yet, +these pests are totally impervious to all forms of magic, and smell like +very old cheeses. A common house rotgrub is gray and red and gray and +purple and red. +.s 2 +.c;SURMIN +.s +From their malodorous breath to their lice-ridden fur, surmins are +utterly repulsive creatures. If they can get close enough, they can bore +their victim to death by reciting New Jersey State Penal Codes. A newly +shaven surmin is black and black and purple and red and purple. +.s 2 +.c;YIPPLE +.s +The yipple is a master of disguise. As the chameleon is to color, so is +the yipple to shape and form. Some yipples, if disturbed in the wild, +may bite. Domesticated, they make wonderful pets, but should never be +allowed to rest in the cookie jar if guests are expected. Yipples are +violently allergic to many kinds of animal wastes. A yipple, if placed +on a plain white tablecloth, becomes gray and purple and white and +purple and black. \ No newline at end of file diff --git a/archive/sorcerer.beta b/archive/sorcerer.beta new file mode 100644 index 0000000..4bb88f3 Binary files /dev/null and b/archive/sorcerer.beta differ diff --git a/archive/sorcerer.gamma b/archive/sorcerer.gamma new file mode 100644 index 0000000..96c7a09 Binary files /dev/null and b/archive/sorcerer.gamma differ diff --git a/belboz.zap b/belboz.zap new file mode 100644 index 0000000..69a0773 --- /dev/null +++ b/belboz.zap @@ -0,0 +1,985 @@ + + + .FUNCT I-WAKE-UP + CALL JIGS-UP,STR?190 + RSTACK + + + .FUNCT TREE-F + EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \?ELS5 + CALL DO-WALK,P?UP + RSTACK +?ELS5: EQUAL? PRSA,V?CLIMB-DOWN \?ELS7 + CALL DO-WALK,P?DOWN + RSTACK +?ELS7: EQUAL? PRSA,V?LOOK-UNDER \?ELS9 + CALL PERFORM,V?EXAMINE,GROUND + RTRUE +?ELS9: EQUAL? PRSA,V?MEEF \FALSE + SET 'PERFORMING-SPELL,TRUE-VALUE + CALL PERFORM,V?MEEF,FOREST + RTRUE + + + .FUNCT HELLHOUND-F + EQUAL? PRSA,V?RESEARCH \FALSE + CALL PERFORM,V?RESEARCH,LOBBY + RTRUE + + + .FUNCT I-HELLHOUND + EQUAL? HERE,TWISTED-FOREST \?ELS5 + ZERO? HELLHOUND-WARNING /?ELS10 + CALL JIGS-UP,STR?192 + RSTACK +?ELS10: SET 'HELLHOUND-WARNING,TRUE-VALUE + CRLF + PRINTR "A hellhound is racing straight toward you, its open jaws displaying rows of razor-sharp teeth." +?ELS5: EQUAL? HERE,TREE-BRANCH \?ELS17 + PRINTR "The hellhound leaps madly about the base of the tree, gnashing its jaws." +?ELS17: MOVE HELLHOUND,DIAL + CALL INT,I-HELLHOUND + PUT STACK,0,0 + PRINTR "The hellhound stops at the edge of the forest and bellows. After a moment, it turns and slinks into the trees." + + + .FUNCT TREE-BRANCH-F,RARG + EQUAL? RARG,M-LOOK \?ELS5 + PRINTI "You are " + ZERO? FLYING /?ELS10 + PRINTI "flying near" + JUMP ?CND8 +?ELS10: PRINTI "on" +?CND8: PRINTR " a large gnarled branch of an old and twisted tree." +?ELS5: EQUAL? RARG,M-ENTER \FALSE + CALL QUEUE,I-BOA,-1 + PUT STACK,0,1 + RFALSE + + + .FUNCT TREE-UP-F + PRINTI "You can't " + ZERO? FLYING /?ELS5 + PRINTI "fly" + JUMP ?CND3 +?ELS5: PRINTI "climb" +?CND3: PRINTI " any higher." + CRLF + RFALSE + + + .FUNCT BOA-F + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "Your average giant carnivorous snake -- except that this one has three heads and an appetite to match." + + + .FUNCT I-BOA + EQUAL? HERE,TREE-BRANCH \?ELS5 + ZERO? FLYING \FALSE + ZERO? BOA-WARNING /?ELS13 + CALL JIGS-UP,STR?193 + RSTACK +?ELS13: SET 'BOA-WARNING,TRUE-VALUE + CRLF + PRINTR "A giant boa constrictor is slithering along the branch toward you!" +?ELS5: SET 'BOA-WARNING,FALSE-VALUE + CALL INT,I-BOA + PUT STACK,0,0 + RFALSE + + + .FUNCT FENCE-PSEUDO + EQUAL? PRSA,V?LEAP,V?CLIMB-FOO,V?CLIMB-OVER \FALSE + PRINTR "It's too tall." + + + .FUNCT SIGNPOST-F + EQUAL? PRSA,V?READ \FALSE + CALL FIXED-FONT-ON + PRINTI " +"" *** !!! >>> WARNING <<< !!! *** + This path is protected by a + Magic Mine Field + installed by the + Frobozz Magic Mine Field Company" + CRLF + CALL FIXED-FONT-OFF + RSTACK + + + .FUNCT MINE-FIELD-EXIT-F + EQUAL? PRSO,P?SOUTH \?ELS5 + RANDOM 100 + LESS? 50,STACK /?ELS5 + RETURN FOREST-EDGE +?ELS5: ZERO? FLYING /?CND10 + PRINTI "Unfortunately, one of the properties of magic mine fields is their ability to blow you up even if you're floating above them. " +?CND10: CALL JIGS-UP,STR?198 + RFALSE + + + .FUNCT SNAKE-PIT-PSEUDO + EQUAL? PRSA,V?THROUGH \FALSE + CALL LOOK-AROUND-YOU + RSTACK + + + .FUNCT CRACK-PSEUDO + EQUAL? PRSA,V?THROUGH \FALSE + CALL DO-WALK,P?DOWN + RSTACK + + + .FUNCT SNAKE-PIT-F,RARG + EQUAL? RARG,M-ENTER \FALSE + RANDOM 3 + ADD 1,STACK + CALL QUEUE,I-SNAKE-PIT,STACK + PUT STACK,0,1 + RFALSE + + + .FUNCT I-SNAKE-PIT + EQUAL? HERE,SNAKE-PIT \?ELS5 + CALL JIGS-UP,STR?200 + RSTACK +?ELS5: CALL INT,I-SNAKE-PIT + PUT STACK,0,0 + RTRUE + + + .FUNCT MOSS-F + EQUAL? PRSA,V?MEEF \?ELS5 + PRINTR "A few patches of the moss and lichens become brown and dry." +?ELS5: EQUAL? PRSA,V?EAT \FALSE + CALL JIGS-UP,STR?202 + RSTACK + + + .FUNCT MEADOW-F,RARG + EQUAL? RARG,M-ENTER \?ELS5 + CALL QUEUE,I-LOCUSTS,-1 + PUT STACK,0,1 + RFALSE +?ELS5: EQUAL? RARG,M-LOOK \FALSE + PRINTI "You are in the center of a " + IN? MEADOW-OBJECT,HERE \?ELS12 + PRINTI "rolling meadow of tall grass" + JUMP ?CND10 +?ELS12: PRINTI "barren field" +?CND10: PRINTR ". To the east is the turret of a ruined castle, and from the northeast comes the sound of rushing water." + + + .FUNCT MEADOW-OBJECT-F + EQUAL? HERE,MEADOW /?ELS5 + EQUAL? PRSA,V?MEEF,V?RUB \?ELS5 + PRINTR "The meadow is too far away." +?ELS5: EQUAL? PRSA,V?MEEF \FALSE + MOVE MEADOW-OBJECT,DIAL + PRINTR "The grass vanishes as far as the eye can see." + + + .FUNCT PLAGUE-OF-LOCUSTS-F + EQUAL? PRSA,V?LOOK-UNDER \FALSE + CALL PERFORM,V?EXAMINE,MEADOW-OBJECT + RTRUE + + + .FUNCT I-LOCUSTS + EQUAL? HERE,MEADOW /?ELS5 + CALL INT,I-LOCUSTS + PUT STACK,0,0 + SET 'LOCUST-WARNING,0 + RFALSE +?ELS5: ZERO? LOCUST-WARNING \?ELS7 + INC 'LOCUST-WARNING + CRLF + PRINTR "A swarm of bloodsucking locusts appears on the horizon." +?ELS7: EQUAL? LOCUST-WARNING,1 \?ELS11 + INC 'LOCUST-WARNING + CRLF + PRINTR "The locusts are much closer now, blotting out the sun like a black storm cloud." +?ELS11: SET 'LOCUST-WARNING,0 + CALL JIGS-UP,STR?203 + RSTACK + + + .FUNCT RIVER-BANK-F,RARG + EQUAL? RARG,M-LOOK \?ELS5 + PRINTI "You are on a muddy bank " + ZERO? RIVER-EVAPORATED /?ELS10 + PRINTI "above a dried-up river bed" + JUMP ?CND8 +?ELS10: PRINTI "of a fast-moving river, full of sharp rocks and foaming rapids, flowing to the southwest. The ground is soft and eroded, and continually threatens to dump you into the turbulent waters" +?CND8: PRINTR ". A field lies to the southwest, and a trail leads southeast along the bank." +?ELS5: EQUAL? RARG,M-END \FALSE + LESS? BANK-COUNTER,3 \?ELS26 + INC 'BANK-COUNTER + RFALSE +?ELS26: ZERO? RIVER-EVAPORATED \FALSE + ZERO? FLYING \FALSE + RANDOM 100 + LESS? 75,STACK /FALSE + CALL JIGS-UP,STR?205 + RSTACK + + + .FUNCT ROCK-PSEUDO + EQUAL? PRSA,V?CROSS \FALSE + CALL PICK-ONE,YUKS + PRINT STACK + CRLF + RTRUE + + + .FUNCT RIVER-ENTER-F + ZERO? RIVER-EVAPORATED /?ELS5 + RETURN RIVER-BED +?ELS5: ZERO? FLYING /?ELS8 + CALL JIGS-UP,STR?206 + RFALSE +?ELS8: PRINTI "You'd never survive the rapids." + CRLF + RFALSE + + + .FUNCT RIVER-F + EQUAL? HERE,GUN-EMPLACEMENT,TURRET \?ELS5 + PRINTR "The river lies far below." +?ELS5: ZERO? RIVER-EVAPORATED /?ELS9 + PRINTR "River? What river?" +?ELS9: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS14 + CALL PERFORM,V?DRINK,WATER + RTRUE +?ELS14: EQUAL? PRSA,V?PULVER \?ELS16 + EQUAL? HERE,RIVER-BANK \?ELS21 + SET 'RIVER-EVAPORATED,TRUE-VALUE + CALL QUEUE,I-TRICKLE,3 + PUT STACK,0,1 + PRINTR "The river dries up, leaving only a few puddles between the rocks! It's now safe to climb down into the river bed." +?ELS21: PRINTR "The water level drops several feet, but quickly surges back." +?ELS16: EQUAL? PRSA,V?EXAMINE \?ELS29 + PRINTR "The river flows quickly by below you." +?ELS29: EQUAL? PRSA,V?PUT \?ELS33 + EQUAL? RIVER,PRSI \?ELS33 + MOVE PRSO,DIAL + CALL SPLASH + RSTACK +?ELS33: EQUAL? PRSA,V?THROUGH \FALSE + CALL DO-WALK,P?NORTH + RSTACK + + + .FUNCT I-TRICKLE + CALL QUEUE,I-FLOOD,2 + PUT STACK,0,1 + EQUAL? HERE,RIVER-BANK,RIVER-BED /?THN6 + EQUAL? HERE,STAGNANT-POOL,TOP-OF-FALLS \FALSE +?THN6: CRLF + PRINTR "A trickle of water begins flowing down the center of the river bed." + + + .FUNCT I-FLOOD + SET 'RIVER-EVAPORATED,FALSE-VALUE + CALL FLOOD-LOOP,RIVER-BED + CALL FLOOD-LOOP,STAGNANT-POOL + CALL FLOOD-LOOP,TOP-OF-FALLS + CRLF + EQUAL? HERE,STAGNANT-POOL,RIVER-BED,TOP-OF-FALLS \?ELS5 + CALL JIGS-UP,STR?207 + RSTACK +?ELS5: EQUAL? HERE,RIVER-BANK \?ELS7 + PRINTR "A wall of water rushes down the river bed as the river returns with a vengeance." +?ELS7: EQUAL? HERE,HIDDEN-CAVE \FALSE + PRINTR "There is a roar of water from outside the cave. The lower part of the cave, near the mouth, fills with a pool of swirling water!" + + + .FUNCT FLOOD-LOOP,LOC,X,N + FIRST? LOC >X /?KLU14 +?KLU14: ZERO? X /TRUE +?PRG4: NEXT? X >N /?KLU15 +?KLU15: EQUAL? X,PROTAGONIST /?CND6 + MOVE X,DIAL +?CND6: ZERO? N /TRUE + SET 'X,N + JUMP ?PRG4 + + + .FUNCT UNDERGROWTH-F + EQUAL? PRSA,V?MEEF \FALSE + PRINTR "The nearest part of the undergrowth withers away ... revealing more undergrowth." + + + .FUNCT BANKS-F + EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-DOWN,V?CLIMB-UP \FALSE + CALL V-WALK-AROUND + RSTACK + + + .FUNCT RIVER-BED-OBJECT-F + EQUAL? PRSA,V?THROUGH \?ELS5 + EQUAL? HERE,RIVER-BANK \?ELS10 + CALL DO-WALK,P?DOWN + RSTACK +?ELS10: CALL LOOK-AROUND-YOU + RSTACK +?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \FALSE + EQUAL? HERE,RIVER-BANK \?ELS19 + CALL LOOK-AROUND-YOU + RSTACK +?ELS19: CALL DO-WALK,P?UP + RSTACK + + + .FUNCT RIVER-BED-F,RARG + EQUAL? RARG,M-ENTER \FALSE + PUT VEZZAS,1,0 + RFALSE + + + .FUNCT PUDDLE-PSEUDO + EQUAL? PRSA,V?THROUGH \?ELS5 + PRINTR "The puddles are very shallow." +?ELS5: EQUAL? PRSA,V?PULVER \FALSE + SET 'PERFORMING-SPELL,TRUE-VALUE + CALL PERFORM,V?PULVER,WATER + RTRUE + + + .FUNCT FISH-PSEUDO + EQUAL? PRSA,V?TAKE \FALSE + PRINTR "They squirm from your grasp." + + + .FUNCT TENTACLE-DEATH + ZERO? FLYING /?ELS3 + PRINTI "You fly over the surface of the pool." + JUMP ?CND1 +?ELS3: PRINTI "You wade into the stagnant pool." +?CND1: CALL JIGS-UP,STR?210 + RFALSE + + + .FUNCT RIVER-EXIT-F + PRINTI "The banks are too " + ZERO? FLYING /?ELS5 + PRINTI "high to fly over." + CRLF + RFALSE +?ELS5: PRINTI "steep to climb." + CRLF + RFALSE + + + .FUNCT WATERFALL-EXIT-F + ZERO? FLYING /?ELS3 + PRINTI "That would be foolhardy, as flying spells are of limited duration." + CRLF + RFALSE +?ELS3: PRINTI "That would involve quite a plunge." + CRLF + RFALSE + + + .FUNCT TOP-OF-CLIFF-PSEUDO + EQUAL? PRSA,V?CLIMB-DOWN \?ELS5 + PRINTR "Impossible." +?ELS5: EQUAL? PRSA,V?LEAP \FALSE + CALL JIGS-UP,STR?212 + RSTACK + + + .FUNCT HAZE-PSEUDO + EQUAL? PRSA,V?RUB \FALSE + PRINTR "From here?" + + + .FUNCT WATERFALL-F + EQUAL? PRSA,V?EXAMINE \?ELS5 + PRINTR "It's no Aragain Falls, but it's pretty impressive." +?ELS5: EQUAL? PRSA,V?LEAP \?ELS9 + EQUAL? HERE,TOP-OF-FALLS \?ELS9 + SET 'PRSO,FALSE-VALUE + CALL PERFORM,V?LEAP + RTRUE +?ELS9: EQUAL? HERE,MOUTH-OF-RIVER,TURRET \FALSE + EQUAL? PRSA,V?SMELL,V?RUB,V?LEAP /?THN16 + EQUAL? PRSA,V?LISTEN \FALSE +?THN16: PRINTR "From here?" + + + .FUNCT HIDDEN-CAVE-F,RARG + EQUAL? RARG,M-ENTER \?ELS5 + FSET? HIDDEN-CAVE,TOUCHBIT /?ELS5 + ADD SCORE,20 >SCORE + RETURN SCORE +?ELS5: EQUAL? RARG,M-LOOK \FALSE + PRINTI "This is a hollow area under the northeast bank of the river. The floor rises away from the mouth of the cave, which is at its southwest end. " + ZERO? RIVER-EVAPORATED \?CND12 + PRINTI "The mouth is filled with a pool of swirling water. " +?CND12: PRINTR "A dark hole leads downward at the far end of the cave." + + + .FUNCT BAT-GUANO-F + EQUAL? PRSA,V?TAKE \FALSE + FSET? FWEEP-SCROLL,TOUCHBIT /FALSE + FSET FWEEP-SCROLL,TOUCHBIT + FSET BAT-GUANO,TOUCHBIT + FCLEAR BAT-GUANO,TRYTAKEBIT + FCLEAR BAT-GUANO,NDESCBIT + MOVE BAT-GUANO,PROTAGONIST + PRINTR "As you take the guano, the soiled scroll falls to the ground." + + + .FUNCT BLORT-VIAL-F + EQUAL? PRSA,V?READ \FALSE + CALL FIXED-FONT-ON + PRINTI " + ""BLORT POTION +(ability to see in dark places)""" + CRLF + CALL FIXED-FONT-OFF + RSTACK + + + .FUNCT BLORT-POTION-F + EQUAL? PRSA,V?DRINK,V?EAT \?ELS5 + CALL HELD?,BLORT-VIAL + ZERO? STACK \?ELS5 + CALL POTION-POUR,BLORT-VIAL + RSTACK +?ELS5: EQUAL? PRSA,V?RESEARCH \?ELS9 + CALL READ-ABOUT-POTIONS,1 + RSTACK +?ELS9: EQUAL? PRSA,V?DRINK,V?EAT \?ELS11 + MOVE BLORT-POTION,DIAL + ZERO? UNDER-INFLUENCE /?CND12 + CALL TWO-POTIONS + RTRUE +?CND12: CALL QUEUE,I-UNBLORT,24 + PUT STACK,0,1 + SET 'BLORTED,TRUE-VALUE + SET 'UNDER-INFLUENCE,BLORT-POTION + PRINTR "The amber potion tasted like chives, and made your eyes tingle." +?ELS11: EQUAL? PRSA,V?DROP \?ELS19 + CALL PERFORM,V?POUR,PRSO,PRSI + RTRUE +?ELS19: EQUAL? PRSA,V?POUR \FALSE + EQUAL? PRSO,BLORT-POTION \FALSE + CALL POTION-POUR,BLORT-VIAL + RSTACK + + + .FUNCT I-UNBLORT + SET 'BLORTED,FALSE-VALUE + EQUAL? UNDER-INFLUENCE,BLORT-POTION \?CND1 + SET 'UNDER-INFLUENCE,FALSE-VALUE +?CND1: CRLF + PRINTI "Your eyes tingle for a moment." + ZERO? LIT \?CND6 + PRINTI " You can no longer see anything around you!" +?CND6: CRLF + RTRUE + + + .FUNCT I-UNFWEEP + SET 'FWEEPED,FALSE-VALUE + SET 'FLYING,FALSE-VALUE + CRLF + PRINTI "After a moment of futilely flapping your arms, you realize that the fweep spell has worn off. " + EQUAL? HERE,GLASS-MAZE \?ELS5 + CALL NO-FLOOR? + ZERO? STACK /?ELS5 + CALL JIGS-UP,STR?216 + JUMP ?CND3 +?ELS5: EQUAL? HERE,TREE-BRANCH \?ELS9 + CALL SETTLE-ONTO-BRANCH + JUMP ?CND3 +?ELS9: EQUAL? HERE,LAGOON \?ELS11 + CALL SPLASH-INTO-WATER + JUMP ?CND3 +?ELS11: PRINTI "You fall several feet to the ground." + CRLF +?CND3: GRTR? AWAKE,8 \FALSE + CALL I-TIRED + RSTACK + + + .FUNCT DRAWBRIDGE-F,RARG + EQUAL? RARG,M-END \?ELS5 + ZERO? FLYING \?ELS5 + ZERO? DRAWBRIDGE-MOVE /?ELS12 + RANDOM 100 + LESS? 40,STACK /?ELS18 + PRINTI "With a scream of splintering wood, part of the drawbridge collapses and spills you into the moat. " + CALL DO-WALK,P?DOWN + RSTACK +?ELS18: PRINTR "The bridge continues to creak." +?ELS12: SET 'DRAWBRIDGE-MOVE,TRUE-VALUE + RFALSE +?ELS5: EQUAL? RARG,M-LOOK \FALSE + PRINTI "You are " + ZERO? FLYING /?ELS33 + PRINTI "floating over" + JUMP ?CND31 +?ELS33: PRINTI "standing on" +?CND31: PRINTI " the drawbridge of a ruined castle which lies to your east. The wood of the bridge looks severely rotted" + ZERO? FLYING /?ELS45 + PRINTI ". The moat is" + JUMP ?CND43 +?ELS45: PRINTI " and creaks ominously beneath you. The moat, although an easy dive from here, looks dangerous," +?CND43: PRINTR " full of sinister shapes beneath the surface of the water. To the west is a wide field." + + + .FUNCT DRAWBRIDGE-EXIT-F + CALL JIGS-UP,STR?217 + RFALSE + + + .FUNCT MOAT-F + EQUAL? PRSA,V?PULVER \?ELS5 + PRINTR "The moat dries up, leaving vicious-looking creatures flopping around in puddles. Immediately, the castle's automatic moat-filler turns on, and refills the moat." +?ELS5: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS9 + CALL PERFORM,V?DRINK,WATER + RTRUE +?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS11 + PRINTR "The water is murky, and lily pads cover most of the surface. Dark shapes swim about below the surface." +?ELS11: EQUAL? PRSA,V?THROUGH,V?LEAP \FALSE + CALL DO-WALK,P?DOWN + RSTACK + + + .FUNCT BRIDGE-F + EQUAL? PRSA,V?LOOK-UNDER \?ELS5 + CALL PERFORM,V?EXAMINE,MOAT + RTRUE +?ELS5: EQUAL? PRSA,V?LISTEN \FALSE + PRINTR "Creak, creak." + + + .FUNCT TURRET-PSEUDO + EQUAL? PRSA,V?THROUGH \?ELS5 + EQUAL? HERE,RUINS \?ELS10 + CALL DO-WALK,P?UP + RSTACK +?ELS10: EQUAL? HERE,MEADOW \?ELS12 + CALL CANT-ENTER,IT + RSTACK +?ELS12: CALL LOOK-AROUND-YOU + RSTACK +?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \?ELS16 + EQUAL? HERE,TURRET \?ELS21 + CALL DO-WALK,P?DOWN + RSTACK +?ELS21: CALL LOOK-AROUND-YOU + RSTACK +?ELS16: EQUAL? PRSA,V?LEAP \FALSE + EQUAL? HERE,TURRET \FALSE + SET 'PRSO,FALSE-VALUE + CALL PERFORM,V?LEAP + RTRUE + + + .FUNCT TORTURE-DEVICES-F + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "All the usual torture devices are here, all quite mean and deadly looking." + + + .FUNCT FLAXO-VIAL-F + EQUAL? PRSA,V?READ \FALSE + CALL FIXED-FONT-ON + PRINTI " + ""FLAXO POTION +(exquisite torture)""" + CRLF + CALL FIXED-FONT-OFF + RSTACK + + + .FUNCT FLAXO-POTION-F + EQUAL? PRSA,V?DRINK,V?EAT \?ELS5 + CALL HELD?,FLAXO-VIAL + ZERO? STACK \?ELS5 + CALL POTION-POUR,FLAXO-VIAL + RSTACK +?ELS5: EQUAL? PRSA,V?RESEARCH \?ELS9 + CALL READ-ABOUT-POTIONS,2 + RSTACK +?ELS9: EQUAL? PRSA,V?DRINK,V?EAT \?ELS11 + MOVE FLAXO-POTION,DIAL + PRINTI "The potion tastes like a combination of anchovies, prune juice, and garlic powder. As you finish swallowing the potion, a well-muscled troll saunters in" + EQUAL? HERE,TORTURE-CHAMBER \?CND14 + PRINTI " and straps you to a torture device" +?CND14: PRINTR ". He whacks your head with a wooden two-by-four, grunting ""You are playing Sorcerer. It was written by S. Eric Meretzky. You will have fun and enjoy yourself."" He repeats this action 999 more times, then vanishes without a trace." +?ELS11: EQUAL? PRSA,V?DROP \?ELS22 + CALL PERFORM,V?POUR,PRSO,PRSI + RTRUE +?ELS22: EQUAL? PRSA,V?POUR \FALSE + EQUAL? PRSO,FLAXO-POTION \FALSE + CALL POTION-POUR,FLAXO-VIAL + RSTACK + + + .FUNCT PIT-OF-BONES-EXIT-F + ZERO? FLYING /?ELS3 + PRINTI "You can't fly high enough to reach the hole." + CRLF + RFALSE +?ELS3: PRINTI "The hole is too high to reach." + CRLF + RFALSE + + + .FUNCT BONES-PSEUDO + EQUAL? PRSA,V?DIG,V?SEARCH,V?TAKE \?ELS5 + PRINTR "They're at the bottom of the pit." +?ELS5: EQUAL? PRSA,V?MALYON \FALSE + CALL JIGS-UP,STR?225 + RSTACK + + + .FUNCT PIT-PSEUDO + EQUAL? PRSA,V?THROUGH,V?LEAP \?ELS5 + CALL DO-WALK,P?DOWN + RSTACK +?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE + PRINTR "Bones. Lots of bones." + + + .FUNCT TOLL-GATE-CROSSING-F + FSET? GATE,OPENBIT \?ELS5 + RETURN OUTSIDE-STORE +?ELS5: ZERO? FLYING /?ELS7 + CALL PERFORM,V?CLIMB-OVER,GATE + RFALSE +?ELS7: PRINTI "A sturdy toll gate blocks the highway." + CRLF + RFALSE + + + .FUNCT GATE-F + EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 + CALL OPEN-CLOSE + ZERO? STACK \TRUE + PRINTR "Only the gnome can do that." +?ELS5: EQUAL? PRSA,V?REZROV \?ELS16 + FSET? GATE,OPENBIT /FALSE + ZERO? GNOME-SLEEPING /?ELS23 + SET 'GNOME-SLEEPING,FALSE-VALUE + CALL QUEUE,I-GNOME,2 + PUT STACK,0,1 + PRINTR "The gate flies open, waking the gnome, who leaps up and slams it closed again. ""Hey! This is a toll gate! Nobody gets through here without paying the one zorkmid toll. Not nobody, not no how.""" +?ELS23: SET 'GNOME-SLEEPING,TRUE-VALUE + CALL JIGS-UP,STR?228 + RSTACK +?ELS16: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-OVER \FALSE + PRINTR "The gate extends to the roof of the tunnel, and there are pointed nasties all over it." + + + .FUNCT BOOTH-F + EQUAL? PRSA,V?THROUGH \?ELS5 + FSET? GATE,OPENBIT \?ELS10 + CALL JIGS-UP,STR?229 + RSTACK +?ELS10: PRINTR "The booth is on the other side of the toll gate." +?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE + FSET? GATE,OPENBIT \?ELS21 + PRINTR "It's dark inside the toll booth." +?ELS21: CALL PERFORM,V?THROUGH,BOOTH + RTRUE + + + .FUNCT GNOME-DESCFCN,RARG + ZERO? GNOME-SLEEPING /?ELS5 + PRINTR "A fat old gnome with a long white beard is sleeping soundly just outside the toll booth. His loud snores echo around the caverns." +?ELS5: PRINTR "A chubby gnome stands behind the toll gate, grinning broadly." + + + .FUNCT GNOME-F + EQUAL? GNOME,WINNER \?ELS5 + ZERO? GNOME-SLEEPING /?ELS10 + CALL POOR-LISTENERS + CALL STOP + RSTACK +?ELS10: EQUAL? PRSA,V?OPEN \?ELS13 + EQUAL? PRSO,GATE \?ELS13 + PRINTR """You'll have to pay the toll first,"" explains the gnome cheerfully, ""and the toll is one zorkmid.""" +?ELS13: PRINTI """Conversing with customers is disallowed by union rules.""" + CRLF + CALL STOP + RSTACK +?ELS5: EQUAL? PRSA,V?KICK,V?SHAKE \?ELS23 + ZERO? GNOME-SLEEPING /?ELS23 + CALL PERFORM,V?ALARM,GNOME + RTRUE +?ELS23: EQUAL? PRSA,V?LISTEN \?ELS27 + ZERO? GNOME-SLEEPING /?ELS27 + PRINTR "The gnome snores loudly." +?ELS27: EQUAL? PRSA,V?ALARM \?ELS33 + ZERO? GNOME-SLEEPING \?ELS38 + PRINTR "He's awake!" +?ELS38: FSET? GATE,OPENBIT \?ELS42 + PRINTR "The gnome opens one eye and looks at you. ""You again! Just go through. Let me sleep."" He begins snoring again." +?ELS42: ZERO? GNOME-ANNOYED /?ELS46 + CALL JIGS-UP,STR?230 + RSTACK +?ELS46: SET 'GNOME-SLEEPING,FALSE-VALUE + CALL QUEUE,I-GNOME,2 + PUT STACK,0,1 + PRINTR "The gnome stirs a bit and opens one eye, which wanders around until it notices you. He jumps to his feet. ""One zorkmid, please,"" he yells with a smile." +?ELS33: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT,V?GIVE \?ELS53 + ZERO? GNOME-SLEEPING /?ELS53 + PRINTR "The gnome is asleep, remember?" +?ELS53: FSET? GATE,OPENBIT \?ELS59 + EQUAL? PRSA,V?REACH-IN,V?LOOK-INSIDE,V?SEARCH /?THN62 + EQUAL? PRSA,V?PICK \?ELS59 +?THN62: ZERO? COIN-STOLEN \?ELS59 + ZERO? FWEEPED \?ELS59 + SET 'COIN-STOLEN,TRUE-VALUE + MOVE ZORKMID,PROTAGONIST + PRINTR "You carefully search the sleeping gnome, and take the zorkmid coin you find in his pocket!" +?ELS59: EQUAL? PRSA,V?GIVE \?ELS67 + EQUAL? PRSO,ZORKMID \?ELS67 + FSET? ZORKMID,ONBIT \?CND70 + CALL GNOME-REFUSES + RTRUE +?CND70: FSET GATE,OPENBIT + SET 'GNOME-SLEEPING,TRUE-VALUE + MOVE ZORKMID,DIAL + CALL INT,I-GNOME + PUT STACK,0,0 + ADD SCORE,20 >SCORE + PRINTR "The gnome pockets the coin and opens the gate. Before you can take a step the gnome falls asleep again." +?ELS67: EQUAL? PRSA,V?YOMIN \FALSE + ZERO? GNOME-SLEEPING /?ELS81 + PRINTR "The thoughts of the sleeping gnome are focused on certain activities involving female gnomes. Embarrassed, you withdraw." +?ELS81: PRINTR "The thoughts of the gnome seem evenly divided between getting money from you and getting back to sleep." + + + .FUNCT GNOME-REFUSES + PRINTR "The gnome refuses, saying ""That coin is giving off light, and is therefore not legal tender.""" + + + .FUNCT I-GNOME + CALL QUEUE,I-GNOME,-1 + PUT STACK,0,1 + EQUAL? HERE,TOLL-GATE \?ELS5 + INC 'PATIENCE-COUNTER + EQUAL? PATIENCE-COUNTER,5 \?ELS10 + SET 'GNOME-SLEEPING,TRUE-VALUE + CALL INT,I-GNOME + PUT STACK,0,0 + SET 'GNOME-ANNOYED,TRUE-VALUE + CRLF + PRINTR """Thanks for nothing, chum,"" growls the gnome as he resumes his nap." +?ELS10: CRLF + PRINTR """Well?"" asks the gnome, tapping impatiently. ""You've interrupted my nap. Are you going to pay the toll, or not?""" +?ELS5: SET 'GNOME-SLEEPING,TRUE-VALUE + SET 'PATIENCE-COUNTER,3 + CALL INT,I-GNOME + PUT STACK,0,0 + RFALSE + + + .FUNCT SIGN-PSEUDO + EQUAL? PRSA,V?READ \FALSE + CALL FIXED-FONT-ON + PRINTI " +""ZEKE'S APPLIANCE STORE + + Official outlet for all +Frobozz Magic Appliances""" + CRLF + CALL FIXED-FONT-OFF + RSTACK + + + .FUNCT STORE-PSEUDO + EQUAL? PRSA,V?THROUGH \?ELS5 + EQUAL? HERE,STORE \?ELS10 + CALL LOOK-AROUND-YOU + RSTACK +?ELS10: CALL DO-WALK,P?SOUTH + RSTACK +?ELS5: EQUAL? PRSA,V?DROP,V?EXIT \?ELS14 + EQUAL? HERE,STORE \?ELS19 + CALL DO-WALK,P?NORTH + RSTACK +?ELS19: CALL LOOK-AROUND-YOU + RSTACK +?ELS14: EQUAL? PRSA,V?LOOK-INSIDE \FALSE + EQUAL? HERE,STORE \?ELS28 + CALL LOOK-AROUND-YOU + RSTACK +?ELS28: CALL MAKE-OUT + RSTACK + + + .FUNCT WAXER-F + EQUAL? PRSA,V?LAMP-ON \?ELS5 + CALL HELD?,WAXER + ZERO? STACK /?ELS10 + PRINTR "Better put it down, first." +?ELS10: ZERO? FWEEPED /?ELS14 + CALL BATTY + RSTACK +?ELS14: EQUAL? HERE,LAGOON,LAGOON-FLOOR \?ELS17 + CALL JIGS-UP,STR?233 + RSTACK +?ELS17: EQUAL? HERE,MINE-FIELD \?ELS19 + SET 'FLYING,FALSE-VALUE + MOVE WAXER,DIAL + CALL DO-WALK,P?NORTH + RSTACK +?ELS19: PRINTI "The waxer whirrs about the " + LOC PROTAGONIST + FSET? STACK,VEHBIT \?ELS26 + PRINTI "vehicle" + JUMP ?CND24 +?ELS26: PRINTI "room" +?CND24: PRINTR " for a minute, polishing the floor." +?ELS5: EQUAL? PRSA,V?LAMP-OFF \FALSE + PRINTR "It is." + + + .FUNCT CRATER-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "You are " + ZERO? FLYING /?ELS10 + PRINTI "floating near" + JUMP ?CND8 +?ELS10: PRINTI "standing in" +?CND8: PRINTR " the center of an enormous crater, strewn with debris. Several points around the perimeter look climbable." + + + .FUNCT CRATER-OUT-F + CALL V-WALK-AROUND + RFALSE + + + .FUNCT CRATER-EXIT-F + ZERO? FLYING /?ELS5 + PRINTI "As you try to fly over the rim here, a heavy gust of wind blows you back." + CRLF + RFALSE +?ELS5: PRINTI "You attempt to climb the rim here, but the rubble is loose and you slide back down." + CRLF + RFALSE + + + .FUNCT CRATER-PSEUDO + EQUAL? PRSA,V?THROUGH \?ELS5 + EQUAL? HERE,CRATER \?ELS10 + PRINTR "Where do you think you are?" +?ELS10: EQUAL? HERE,EDGE-OF-CRATER \?ELS14 + CALL DO-WALK,P?SW + RSTACK +?ELS14: EQUAL? HERE,EDGE-OF-CHASM \?ELS16 + CALL DO-WALK,P?EAST + RSTACK +?ELS16: EQUAL? HERE,SLIMY-ROOM \?ELS18 + CALL DO-WALK,P?SOUTH + RSTACK +?ELS18: CALL DO-WALK,P?NORTH + RSTACK +?ELS5: EQUAL? PRSA,V?CLIMB-FOO \?ELS22 + CALL V-WALK-AROUND + RSTACK +?ELS22: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?LEAVE \FALSE + EQUAL? HERE,CRATER \?ELS29 + CALL DO-WALK,P?UP + RSTACK +?ELS29: CALL LOOK-AROUND-YOU + RSTACK + + + .FUNCT CHASM-EXIT-F + ZERO? FLYING /?ELS5 + PRINTI "You fly easily across the chasm..." + CRLF + CRLF + EQUAL? HERE,BARE-PASSAGE \?ELS13 + RETURN EDGE-OF-CHASM +?ELS13: RETURN BARE-PASSAGE +?ELS5: PRINTI "If you really want to jump across the chasm, just say so." + CRLF + RFALSE + + + .FUNCT CHASM-PSEUDO + EQUAL? PRSA,V?LEAP \FALSE + RANDOM 100 + LESS? 75,STACK /?ELS10 + CALL JIGS-UP,STR?238 + RSTACK +?ELS10: EQUAL? HERE,EDGE-OF-CHASM \?ELS17 + CALL GOTO,BARE-PASSAGE + RSTACK +?ELS17: CALL GOTO,EDGE-OF-CHASM + RSTACK + + + .FUNCT TREE-ROOM-F,RARG + EQUAL? RARG,M-ENTER \FALSE + PUT VEZZAS,3,0 + RFALSE + + + .FUNCT ZORKMID-TREE-F + EQUAL? PRSA,V?EXAMINE \?ELS5 + PRINTR "It is laden with zorkmids, glinting in the light." +?ELS5: EQUAL? PRSA,V?REZROV \?ELS9 + CALL V-SWANZO + RSTACK +?ELS9: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \FALSE + PRINTR "The branches don't look sturdy enough." + + + .FUNCT ZORKMID-F + EQUAL? PRSA,V?PICK \?ELS5 + FSET? PRSO,TRYTAKEBIT \?ELS5 + EQUAL? ZORKMID,PRSO \?ELS5 + CALL PERFORM,V?TAKE,PRSO,PRSI + RTRUE +?ELS5: EQUAL? PRSA,V?TAKE \?ELS9 + FSET? PRSO,TRYTAKEBIT \?ELS9 + FCLEAR PRSO,TRYTAKEBIT + FCLEAR PRSO,NDESCBIT + MOVE ZORKMID-TREE,DIAL + MOVE ZORKMID,PROTAGONIST + ADD SCORE,15 >SCORE + PRINTR "As you pluck the first zorkmid, the tree shimmers and vanishes! (I guess it was just an illusion.) You are left holding a solitary zorkmid coin." +?ELS9: EQUAL? PRSA,V?EXAMINE,V?COUNT \?ELS15 + IN? ZORKMID-TREE,HERE \?ELS15 + PRINTR "There are countless coins, hanging from every branch of the tree." +?ELS15: EQUAL? PRSA,V?EXAMINE \?ELS21 + PRINTR "The coin pictures a man with an incredibly flat head, wearing a gaudy crown." +?ELS21: EQUAL? PRSA,V?BITE \?ELS25 + PRINTR "Yep, it's real." +?ELS25: EQUAL? PRSA,V?RESEARCH \FALSE + PRINTI "An article in the monetary section explains that the zorkmid was the unit of currency of the Great Underground Empire, and is still used in most parts of the kingdom today. A picture of a zorkmid coin is included. " + CALL PERFORM,V?EXAMINE,ZORKMID + RTRUE + + + .FUNCT HALL-OF-CARVINGS-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "You have entered a large room whose walls are covered with intricate carvings. " + ZERO? DRAGON-MOVED /?ELS10 + PRINTI "A passage has been recently opened to the south, and is only partially blocked by a huge stone dragon, poised in the midst of an attack." + JUMP ?CND8 +?ELS10: PRINTI "The largest and most striking carving, on the southern wall, is of a huge sleeping dragon!" +?CND8: PRINTR " A winding tunnel leads north." + + + .FUNCT DRAGON-F + EQUAL? PRSA,V?MALYON \FALSE + ZERO? MALYON-YONKED /?ELS10 + ZERO? DRAGON-MOVED /?ELS16 + CALL JIGS-UP,STR?243 + RSTACK +?ELS16: SET 'DRAGON-MOVED,TRUE-VALUE + PRINTR "The dragon is suddenly imbued with life and begins to move. It shakes itself loose from the wall, which crumbles down upon the dragon, revealing a southward passage! The dragon howls with pain and anger. Spotting you, the dragon rears back its head, smoke billowing from its nostrils. Then, just as it seems that you will be barbecued, the dragon reverts to stone!" +?ELS10: PRINTR "The dragon seems to shiver for a moment, but that is all." + + .ENDI diff --git a/belboz.zil b/belboz.zil index 78c8fc4..b76c3a7 100644 --- a/belboz.zil +++ b/belboz.zil @@ -1253,7 +1253,7 @@ with a smile." CR>)>) ,GNOME-SLEEPING> ) ( - + > diff --git a/coal.zap b/coal.zap new file mode 100644 index 0000000..3ec05ba --- /dev/null +++ b/coal.zap @@ -0,0 +1,928 @@ + + + .FUNCT COAL-F + EQUAL? PRSA,V?TAKE \FALSE + PRINTR "Such menial tasks are best left to troglodytes." + + + .FUNCT SOOTY-ROOM-F,RARG + EQUAL? RARG,M-ENTER \FALSE + FSET? SOOTY-ROOM,TOUCHBIT /FALSE + ADD SCORE,20 >SCORE + RETURN SCORE + + + .FUNCT SOOTY-ROOM-EXIT-F + FSET? COAL-BIN-ROOM,TOUCHBIT \?ELS5 + PRINTI "That passage is now completely blocked by a cave-in." + CRLF + RFALSE +?ELS5: RETURN COAL-BIN-ROOM + + + .FUNCT TIMBER-PSEUDO + EQUAL? PRSA,V?MOVE \FALSE + CALL JIGS-UP,STR?299 + RSTACK + + + .FUNCT COAL-BIN-ROOM-F,RARG + EQUAL? RARG,M-ENTER \?ELS5 + FSET? HERE,TOUCHBIT /?ELS10 + RANDOM 873 >COMBO + PUT VEZZAS,5,0 + PRINTI "There is a rumbling noise behind you as the ceiling of the tunnel collapses, blocking your retreat! The air smells strongly of coal gas. " + ZERO? VILSTUED /?ELS15 + CALL QUEUE,I-OLDER-SELF,2 + PUT STACK,0,1 + PRINTI "Good thing you took that vilstu potion" + JUMP ?CND13 +?ELS15: CALL QUEUE,I-SUFFOCATE,2 + PUT STACK,0,1 + PRINTI "You won't survive long in this atmosphere" +?CND13: PRINTI "." + CRLF + CRLF + RTRUE +?ELS10: ZERO? GOLMACKED /FALSE + CALL QUEUE,I-YOUNGER-SELF,-1 + PUT STACK,0,1 + MOVE YOUNGER-SELF,HERE + ZERO? YOUNGER-HAS-SPELL-BOOK /?CND28 + IN? SPELL-BOOK,LAGOON-FLOOR \?CND32 + SET 'BOOK-BELONGS-IN-LAGOON,TRUE-VALUE +?CND32: MOVE SPELL-BOOK,YOUNGER-SELF + FSET SPELL-BOOK,TRYTAKEBIT +?CND28: CALL LIT?,HERE >LIT + RETURN LIT +?ELS5: EQUAL? RARG,M-END \FALSE + RANDOM 100 + LESS? 35,STACK /FALSE + CRLF + PRINTR "A few lumps of coal spill from the coal chute." + + + .FUNCT I-SUFFOCATE + CRLF + ZERO? SUFFOCATE-WARNING /?ELS5 + CALL JIGS-UP,STR?301 + RSTACK +?ELS5: SET 'SUFFOCATE-WARNING,TRUE-VALUE + CALL QUEUE,I-SUFFOCATE,2 + PUT STACK,0,1 + PRINTR "You are about to pass out from the bad air." + + + .FUNCT COAL-BIN-F + EQUAL? PRSA,V?LOOK-INSIDE \?ELS5 + PRINTR "It's full of coal." +?ELS5: EQUAL? PRSA,V?DIG,V?SEARCH \FALSE + PRINTR "You find nothing of interest." + + + .FUNCT UPPER-CHUTE-F + EQUAL? PRSA,V?LEAP,V?THROUGH \?ELS5 + EQUAL? HERE,TOP-OF-CHUTE,SLANTED-ROOM \?ELS10 + CALL DO-WALK,P?DOWN + RSTACK +?ELS10: CALL LOOK-AROUND-YOU + RSTACK +?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS14 + EQUAL? HERE,TOP-OF-CHUTE \?ELS19 + CALL BOTTOM-TOP-OF-CHUTE,TRUE-VALUE + RSTACK +?ELS19: CALL DO-WALK,P?UP + RSTACK +?ELS14: EQUAL? PRSA,V?CLIMB-DOWN \?ELS23 + EQUAL? HERE,COAL-BIN-ROOM \?ELS28 + CALL BOTTOM-TOP-OF-CHUTE + RSTACK +?ELS28: CALL DO-WALK,P?DOWN + RSTACK +?ELS23: EQUAL? PRSA,V?LOWER-INTO,V?PUT \?ELS32 + EQUAL? PRSI,UPPER-CHUTE \?ELS32 + EQUAL? HERE,TOP-OF-CHUTE,SLANTED-ROOM \?ELS39 + EQUAL? PRSO,BEAM \?ELS44 + ZERO? ROPE-TO-BEAM /?ELS44 + MOVE ROPE,COAL-BIN-ROOM + MOVE BEAM,COAL-BIN-ROOM + SET 'ROPE-PLACED,FALSE-VALUE + FCLEAR BEAM,TRYTAKEBIT + FCLEAR ROPE,TRYTAKEBIT + CALL BEAM-AND-ROPE + RSTACK +?ELS44: EQUAL? PRSO,ROPE \?ELS48 + ZERO? ROPE-TO-BEAM /?ELS48 + CALL DROP-BEAM-FIRST + ZERO? STACK \TRUE + SET 'ROPE-PLACED,TRUE-VALUE + FSET BEAM,TRYTAKEBIT + FSET ROPE,TRYTAKEBIT + MOVE ROPE,HERE + CALL ROPE-HANGS + RSTACK +?ELS48: GETP PRSO,P?SIZE + LESS? STACK,20 \?ELS58 + MOVE PRSO,DIAL + JUMP ?CND56 +?ELS58: MOVE PRSO,COAL-BIN-ROOM +?CND56: CALL DISAPPEARS-DOWN-CHUTE + RSTACK +?ELS39: EQUAL? HERE,COAL-BIN-ROOM \FALSE + CALL LOOK-AROUND-YOU + RSTACK +?ELS32: EQUAL? PRSA,V?LOOK-INSIDE \FALSE + CALL PERFORM,V?RESEARCH,UPPER-CHUTE + RTRUE + + + .FUNCT LOWER-CHUTE-F + EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5 + EQUAL? HERE,COAL-BIN-ROOM \?ELS10 + CALL BOTTOM-TOP-OF-CHUTE,TRUE-VALUE + RSTACK +?ELS10: CALL DO-WALK,P?UP + RSTACK +?ELS5: EQUAL? PRSA,V?LEAP,V?THROUGH,V?CLIMB-DOWN \?ELS14 + EQUAL? HERE,COVE \?ELS19 + CALL BOTTOM-TOP-OF-CHUTE + RSTACK +?ELS19: CALL DO-WALK,P?DOWN + RSTACK +?ELS14: EQUAL? PRSA,V?LOWER-INTO,V?PUT \?ELS23 + EQUAL? PRSI,LOWER-CHUTE \?ELS23 + EQUAL? HERE,COAL-BIN-ROOM \?ELS30 + EQUAL? PRSO,BEAM \?ELS35 + ZERO? ROPE-TO-BEAM /?ELS35 + MOVE ROPE,LAGOON-FLOOR + MOVE BEAM,LAGOON-FLOOR + SET 'ROPE-IN-LOWER-CHUTE,FALSE-VALUE + FCLEAR ROPE,TRYTAKEBIT + CALL BEAM-AND-ROPE + RSTACK +?ELS35: EQUAL? PRSO,ROPE \?ELS39 + ZERO? ROPE-TO-BEAM /?ELS39 + CALL DROP-BEAM-FIRST + ZERO? STACK \TRUE + SET 'ROPE-IN-LOWER-CHUTE,TRUE-VALUE + FSET ROPE,TRYTAKEBIT + MOVE ROPE,HERE + CALL ROPE-HANGS + RSTACK +?ELS39: MOVE PRSO,LAGOON-FLOOR + FSET? PRSO,SCROLLBIT /?THN50 + EQUAL? PRSO,SPELL-BOOK \?CND47 +?THN50: FSET PRSO,MUNGBIT +?CND47: CALL DISAPPEARS-DOWN-CHUTE + RSTACK +?ELS30: EQUAL? HERE,COAL-BIN-ROOM \FALSE + CALL LOOK-AROUND-YOU + RSTACK +?ELS23: EQUAL? PRSA,V?LOOK-INSIDE \FALSE + CALL PERFORM,V?RESEARCH,LOWER-CHUTE + RTRUE + + + .FUNCT DROP-BEAM-FIRST + CALL HELD?,BEAM + ZERO? STACK /FALSE + PRINTR "You'll have to drop the beam before doing that." + + + .FUNCT BEAM-AND-ROPE + PRINTR "The beam and rope both slide into the chute." + + + .FUNCT ROPE-HANGS + PRINTR "The rope hangs from the beam, into the chute." + + + .FUNCT DISAPPEARS-DOWN-CHUTE + PRINTI "The " + PRINTD PRSO + PRINTR " disappears into the chute." + + + .FUNCT OLDER-SELF-F + EQUAL? WINNER,OLDER-SELF \?ELS5 + PRINTI "Your older self ignores your words." + CRLF + CALL STOP + RSTACK +?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 + PRINT OLDER-INTRO + PRINTR " The stranger is carrying a smelly scroll." +?ELS9: EQUAL? PRSA,V?GIVE \?ELS13 + EQUAL? PRSO,SPELL-BOOK \?ELS13 + MOVE SPELL-BOOK,OLDER-SELF + FSET SPELL-BOOK,TRYTAKEBIT + PRINTR "Your older self accepts the spell book gratefully." +?ELS13: EQUAL? PRSA,V?FOLLOW \?ELS19 + ZERO? TWIN-FOLLOW /?ELS19 + CALL DO-WALK,P?DOWN + RSTACK +?ELS19: EQUAL? PRSA,V?AIMFIZ \?ELS23 + CALL V-SWANZO + RSTACK +?ELS23: EQUAL? PRSA,V?YOMIN \FALSE + PRINTR "The thoughts of your older self center on attempting to breathe." + + + .FUNCT I-OLDER-SELF + CALL QUEUE,I-OLDER-SELF,-1 + PUT STACK,0,1 + INC 'OLDER-COUNTER + EQUAL? OLDER-COUNTER,1 \?ELS5 + MOVE OLDER-SELF,COAL-BIN-ROOM + CALL HELD?,SPELL-BOOK + ZERO? STACK /?CND6 + SET 'YOUNGER-HAS-SPELL-BOOK,TRUE-VALUE +?CND6: EQUAL? HERE,COAL-BIN-ROOM \?ELS13 + CRLF + PRINTI "Someone slides out of the coal chute, and lands near the bin. " + PRINT OLDER-INTRO + CRLF + SET 'OLDER-INTRODUCED,TRUE-VALUE + RETURN OLDER-INTRODUCED +?ELS13: EQUAL? HERE,DIAL-ROOM \?ELS19 + CRLF + PRINTR "You here a commotion from the room to the west." +?ELS19: CALL INT,I-OLDER-SELF + PUT STACK,0,0 + RFALSE +?ELS5: EQUAL? OLDER-COUNTER,2 \?ELS25 + CALL DATA-TO-TABLE,MOVE-ONE-TABLE + EQUAL? HERE,COAL-BIN-ROOM \?ELS30 + CRLF + ZERO? OLDER-INTRODUCED \?CND31 + SET 'OLDER-INTRODUCED,TRUE-VALUE + PRINTI "Someone is standing near the coal bin. " + PRINT OLDER-INTRO + CRLF + CRLF +?CND31: SET 'COMBO-DISCOVERED,TRUE-VALUE + CALL OLDER-TELLS-COMBO + IN? SPELL-BOOK,OLDER-SELF /?CND36 + PRINTI " Your older self then looks at you, almost expectantly." +?CND36: CRLF + RTRUE +?ELS30: CRLF + PRINTR "From the next room you glimpse someone gasping for air." +?ELS25: EQUAL? OLDER-COUNTER,3 \?ELS46 + CALL DATA-TO-TABLE,MOVE-TWO-TABLE + EQUAL? HERE,COAL-BIN-ROOM \?ELS51 + ZERO? OLDER-INTRODUCED \?CND52 + SET 'OLDER-INTRODUCED,TRUE-VALUE + CRLF + PRINTI "Someone is standing near the coal bin. " + PRINT OLDER-INTRO + CRLF +?CND52: IN? SPELL-BOOK,OLDER-SELF \?ELS61 + MOVE SPELL-BOOK,YOUNGER-SELF + FSET SPELL-BOOK,TRYTAKEBIT + MOVE OLDER-SELF,DIAL + MOVE VARDIK-SCROLL,DIAL + SET 'TWIN-FOLLOW,TRUE-VALUE + CALL QUEUE,I-TWIN-UNFOLLOW,1 + PUT STACK,0,1 + CRLF + PRINTR "Your look-alike dives into the lower chute and slides out of view." +?ELS61: ZERO? COMBO-DISCOVERED \?ELS65 + CRLF + CALL OLDER-TELLS-COMBO + CRLF + RTRUE +?ELS65: CRLF + PRINTR """Give me...the spell book,"" croaks your older self." +?ELS51: MOVE OLDER-SELF,DIAL + MOVE VARDIK-SCROLL,DIAL + CRLF + PRINTR "Someone in the coal bin room dives into the lower chute." +?ELS46: CALL DATA-TO-TABLE,MOVE-THREE-TABLE + CALL INT,I-OLDER-SELF + PUT STACK,0,0 + EQUAL? HERE,COAL-BIN-ROOM \?CND76 + IN? OLDER-SELF,HERE \?CND76 + CRLF + PRINTI "Your older self dives into the lower chute." + CRLF +?CND76: MOVE OLDER-SELF,DIAL + MOVE VARDIK-SCROLL,DIAL + RTRUE + + + .FUNCT OLDER-TELLS-COMBO + PRINTI "Your disheveled ""twin"" is having difficulty breathing, but gasps, ""The combination is " + PRINTN COMBO + PRINTI ".""" + RTRUE + + + .FUNCT I-TWIN-UNFOLLOW + SET 'TWIN-FOLLOW,FALSE-VALUE + RFALSE + + + .FUNCT DATA-TO-TABLE,TABLE + PUT TABLE,1,PRSA + PUT TABLE,2,PRSO + PUT TABLE,3,PRSI + RTRUE + + + .FUNCT YOUNGER-SELF-F + EQUAL? YOUNGER-SELF,WINNER \?ELS5 + EQUAL? PRSA,V?COMBO \?ELS10 + EQUAL? PRSO,INTNUM \?ELS10 + EQUAL? P-NUMBER,COMBO \?CND13 + SET 'COMBO-REVEALED,TRUE-VALUE +?CND13: PRINTR "Your younger self seems surprised by your statement." +?ELS10: EQUAL? PRSA,V?GIVE \?ELS19 + EQUAL? PRSO,SPELL-BOOK \?ELS19 + EQUAL? PRSI,ME \?ELS19 + CALL SPELL-BOOK-PASS-OFF-CHECK + ZERO? STACK \TRUE +?ELS19: PRINTI "Your younger self seems confused, and doesn't respond." + CRLF + CALL STOP + RSTACK +?ELS5: EQUAL? PRSA,V?YOMIN \?ELS27 + PRINTR "The thoughts of your younger self are confused, and seem to center on whether or not to perform a SAVE." +?ELS27: EQUAL? PRSA,V?AIMFIZ \?ELS31 + CALL V-SWANZO + RSTACK +?ELS31: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTI "It's almost like looking in a mirror. Your younger self looks confused" + IN? SPELL-BOOK,YOUNGER-SELF \?CND36 + PRINTI ", and is carrying a spell book" +?CND36: PRINTR "." + + + .FUNCT YOUNGER-SELF-DESCFCN,TABLE + LESS? YOUNGER-COUNTER,3 \?ELS3 + SET 'TABLE,MOVE-ONE-TABLE + JUMP ?CND1 +?ELS3: EQUAL? YOUNGER-COUNTER,3 \?ELS5 + SET 'TABLE,MOVE-TWO-TABLE + JUMP ?CND1 +?ELS5: SET 'TABLE,MOVE-THREE-TABLE +?CND1: FSET? YOUNGER-SELF,TOUCHBIT \?ELS12 + PRINTI "Your younger self is here" + ZERO? YOUNGER-HAS-SPELL-BOOK /?ELS19 + PRINTR ", holding your spell book." +?ELS19: PRINTR "." +?ELS12: FSET YOUNGER-SELF,TOUCHBIT + PRINTI "Standing here, looking quite confused, is someone who could only be your younger self -- an exact duplicate of you, but cleaner and breathing with considerably less difficulty. You remember seeing this scene from another viewpoint just a short while ago." + ZERO? YOUNGER-HAS-SPELL-BOOK /?CND31 + PRINTI " Among the items carried by your ""twin"" is your spell book." +?CND31: CRLF + RTRUE + + + .FUNCT SPELL-BOOK-PASS-OFF-CHECK,TABLE + EQUAL? YOUNGER-COUNTER,1 \?ELS3 + SET 'TABLE,MOVE-ONE-TABLE + JUMP ?CND1 +?ELS3: EQUAL? YOUNGER-COUNTER,2 \?ELS5 + SET 'TABLE,MOVE-TWO-TABLE + JUMP ?CND1 +?ELS5: EQUAL? YOUNGER-COUNTER,3 \FALSE + SET 'TABLE,MOVE-THREE-TABLE +?CND1: GET TABLE,2 + EQUAL? STACK,SPELL-BOOK \?ELS18 + GET TABLE,3 + EQUAL? STACK,OLDER-SELF \?ELS18 + GET TABLE,1 + EQUAL? STACK,V?GIVE /TRUE +?ELS18: GET TABLE,2 + EQUAL? STACK,OLDER-SELF \FALSE + GET TABLE,3 + EQUAL? STACK,SPELL-BOOK \FALSE + GET TABLE,1 + EQUAL? STACK,V?SGIVE \FALSE + RTRUE + + + .FUNCT I-YOUNGER-SELF + INC 'YOUNGER-COUNTER + IN? YOUNGER-SELF,HERE \FALSE + ZERO? LIT \?ELS7 + ZERO? BLORTED /FALSE +?ELS7: EQUAL? YOUNGER-COUNTER,2 \?ELS11 + CALL YOUNGER-ACTIONS,MOVE-ONE-TABLE + RSTACK +?ELS11: EQUAL? YOUNGER-COUNTER,3 \?ELS13 + CALL YOUNGER-ACTIONS,MOVE-TWO-TABLE + RSTACK +?ELS13: EQUAL? YOUNGER-COUNTER,4 \FALSE + CALL YOUNGER-ACTIONS,MOVE-THREE-TABLE + RSTACK + + + .FUNCT YOUNGER-ACTIONS,TABLE + GET TABLE,2 + ZERO? STACK \?CND1 + PUT TABLE,2,NOT-HERE-OBJECT +?CND1: GET TABLE,3 + ZERO? STACK \?CND4 + PUT TABLE,3,NOT-HERE-OBJECT +?CND4: GET TABLE,2 + EQUAL? STACK,OLDER-SELF \?ELS9 + PUT TABLE,2,YOU-OBJECT + JUMP ?CND7 +?ELS9: GET TABLE,2 + EQUAL? STACK,ME \?CND7 + PUT TABLE,2,YOUNGER-SELF +?CND7: GET TABLE,3 + EQUAL? STACK,OLDER-SELF \?ELS14 + PUT TABLE,3,YOU-OBJECT + JUMP ?CND12 +?ELS14: GET TABLE,3 + EQUAL? STACK,ME \?CND12 + PUT TABLE,3,YOUNGER-SELF +?CND12: CRLF + PRINTI "Your younger self " + GET TABLE,2 + EQUAL? STACK,SPELL-BOOK \?ELS27 + GET TABLE,3 + EQUAL? STACK,YOU-OBJECT \?ELS27 + GET TABLE,1 + EQUAL? STACK,V?GIVE /?THN24 +?ELS27: GET TABLE,2 + EQUAL? STACK,YOU-OBJECT \?ELS23 + GET TABLE,3 + EQUAL? STACK,SPELL-BOOK \?ELS23 + GET TABLE,1 + EQUAL? STACK,V?SGIVE \?ELS23 +?THN24: MOVE SPELL-BOOK,PROTAGONIST + FCLEAR SPELL-BOOK,TRYTAKEBIT + PRINTR "hands you your spell book!" +?ELS23: GET TABLE,1 + EQUAL? STACK,V?VERBOSE,V?BRIEF,V?SUPER-BRIEF /?THN34 + GET TABLE,1 + EQUAL? STACK,V?SCORE,V?SCRIPT,V?UNSCRIPT \?ELS33 +?THN34: PRINTR "is performing a spell of high technology." +?ELS33: GET TABLE,1 + EQUAL? STACK,V?ANSWER,V?REPLY,V?CURSE /?THN40 + GET TABLE,1 + EQUAL? STACK,V?HELLO,V?TELL,V?ASK-FOR /?THN40 + GET TABLE,1 + EQUAL? STACK,V?SAY,V?THANK,V?YELL /?THN40 + GET TABLE,1 + EQUAL? STACK,V?ASK-ABOUT \?ELS39 +?THN40: PRINTR "is attempting to talk." +?ELS39: GET TABLE,1 + EQUAL? STACK,V?CAST,V?GNUSTO,V?FROTZ /?THN46 + GET TABLE,1 + EQUAL? STACK,V?REZROV,V?IZYUK,V?FWEEP /?THN46 + GET TABLE,1 + EQUAL? STACK,V?AIMFIZ,V?SWANZO,V?VARDIK /?THN46 + GET TABLE,1 + EQUAL? STACK,V?MEEF,V?PULVER,V?GOLMAC /?THN46 + GET TABLE,1 + EQUAL? STACK,V?YOMIN,V?VEZZA,V?GASPAR /?THN46 + GET TABLE,1 + EQUAL? STACK,V?YONK,V?MALYON \?ELS45 +?THN46: PRINTR "is casting a familiar spell." +?ELS45: GET TABLE,1 + EQUAL? STACK,V?INVENTORY \?ELS51 + PRINTR "is doing an inventory." +?ELS51: GET TABLE,1 + EQUAL? STACK,V?DIAGNOSE \?ELS55 + PRINTR "is checking for wounds." +?ELS55: GET TABLE,1 + EQUAL? STACK,V?WAIT \?ELS59 + PRINTR "is doing absolutely nothing." +?ELS59: GET TABLE,1 + EQUAL? STACK,V?SLEEP \?ELS63 + PRINTR "is trying to fall asleep!" +?ELS63: GET TABLE,1 + EQUAL? STACK,V?LEARN \?ELS67 + PRINTR "is studying a spell book." +?ELS67: GET TABLE,1 + EQUAL? STACK,V?SPELLS \?ELS71 + PRINTR "seems lost in thought." +?ELS71: GET TABLE,1 + EQUAL? STACK,V?LOOK \?ELS75 + PRINTR "is looking around." +?ELS75: GET TABLE,1 + EQUAL? STACK,V?LEAP,V?SKIP \?ELS79 + PRINTR "is hopping around like a crazed rabbit." +?ELS79: GET TABLE,1 + EQUAL? STACK,V?WALK,V?WALK-AROUND,V?WALK-TO \?ELS83 + PRINTR "is moving around." +?ELS83: GET TABLE,1 + EQUAL? STACK,V?GIVE \?ELS87 + PRINTI "is trying to give" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTI " to" + GET TABLE,3 + CALL ARTICLE,STACK + PRINTR "." +?ELS87: GET TABLE,1 + EQUAL? STACK,V?SHOW \?ELS95 + PRINTI "is trying to show" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTI " to" + GET TABLE,3 + CALL ARTICLE,STACK + PRINTR "." +?ELS95: GET TABLE,1 + EQUAL? STACK,V?RAISE,V?LOWER,V?RUB /?THN104 + GET TABLE,1 + EQUAL? STACK,V?MOVE,V?SHAKE,V?PUSH /?THN104 + GET TABLE,1 + EQUAL? STACK,V?KICK,V?PUT-ON,V?PUSH-TO /?THN104 + GET TABLE,1 + EQUAL? STACK,V?PUT,V?PUT-UNDER,V?PUT-BEHIND \?ELS103 +?THN104: GET TABLE,1 + EQUAL? STACK,V?PUT \?CND106 + GET TABLE,2 + EQUAL? STACK,SPELL-BOOK \?CND106 + GET TABLE,3 + EQUAL? STACK,LOWER-CHUTE \?CND106 + MOVE SPELL-BOOK,DIAL +?CND106: PRINTI "is attempting to move" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS103: GET TABLE,1 + EQUAL? STACK,V?EXAMINE,V?LOOK-INSIDE /?THN117 + GET TABLE,1 + EQUAL? STACK,V?LOOK-BEHIND,V?LOOK-UNDER \?ELS116 +?THN117: PRINTI "is examining" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS116: GET TABLE,1 + EQUAL? STACK,V?BOARD,V?ENTER,V?THROUGH \?ELS124 + PRINTI "is trying to get into" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS124: GET TABLE,1 + EQUAL? STACK,V?THROW,V?THROW-OFF \?ELS130 + PRINTI "is performing aeronautical experiments with" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS130: GET TABLE,1 + EQUAL? STACK,V?WHAT,V?WHERE,V?WHO \?ELS136 + PRINTI "is asking about" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR ", addressing the question to no one in particular." +?ELS136: GET TABLE,1 + EQUAL? STACK,V?ATTACK,V?KILL,V?MUNG \?ELS142 + PRINTI "is attacking" + GET TABLE,2 + CALL ARTICLE,STACK,TRUE-VALUE + PRINTR "." +?ELS142: GET TABLE,1 + EQUAL? STACK,V?EAT,V?DRINK \?ELS148 + PRINTI "is attempting to ingest" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS148: GET TABLE,1 + EQUAL? STACK,V?CLIMB-ON,V?CLIMB-UP,V?CLIMB-FOO /?THN155 + GET TABLE,1 + EQUAL? STACK,V?CLIMB-DOWN,V?CLIMB-OVER \?ELS154 +?THN155: PRINTI "is climbing" + GET TABLE,2 + CALL ARTICLE,STACK,TRUE-VALUE + PRINTR "." +?ELS154: GET TABLE,1 + EQUAL? STACK,V?READ \?ELS162 + PRINTI "is reading" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS162: GET TABLE,1 + EQUAL? STACK,V?SMELL \?ELS168 + PRINTI "is smelling" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS168: GET TABLE,1 + EQUAL? STACK,V?LISTEN \?ELS174 + PRINTI "seems to be listening to" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS174: GET TABLE,1 + EQUAL? STACK,V?KISS \?ELS180 + PRINTI "tries to kiss" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS180: GET TABLE,1 + EQUAL? STACK,V?OPEN \?ELS186 + PRINTI "is trying to open" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS186: GET TABLE,1 + EQUAL? STACK,V?CLOSE \?ELS192 + PRINTI "is closing" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS192: GET TABLE,1 + EQUAL? STACK,V?EXIT,V?DISEMBARK \?ELS198 + PRINTI "is trying to leave" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS198: GET TABLE,1 + EQUAL? STACK,V?TAKE \?ELS204 + PRINTI "is reaching for" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS204: GET TABLE,1 + EQUAL? STACK,V?DROP \?ELS210 + PRINTI "is dropping" + GET TABLE,2 + CALL ARTICLE,STACK + PRINTR "." +?ELS210: PRINTR "is doing something." + + + .FUNCT LAMP-PSEUDO + EQUAL? PRSA,V?TAKE \FALSE + CALL PERFORM,V?TAKE,KEROSENE-LAMP + RTRUE + + + .FUNCT DIAL-DOOR-F + EQUAL? PRSA,V?OPEN \?ELS5 + FSET? DIAL-DOOR,OPENBIT /?ELS5 + ZERO? DIAL-OPEN /?ELS12 + FSET DIAL-DOOR,OPENBIT + ADD SCORE,COAL-DOOR-POINT >SCORE + SET 'COAL-DOOR-POINT,0 + PRINTR "The door opens easily." +?ELS12: PRINTR "The door won't budge." +?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS21 + CALL PERFORM,V?EXAMINE,DIAL + RTRUE +?ELS21: EQUAL? PRSA,V?REZROV \FALSE + CALL JIGS-UP,STR?305 + RSTACK + + + .FUNCT DIAL-F + EQUAL? PRSA,V?READ,V?EXAMINE \?ELS5 + PRINTI "Set in the door is a large circular dial which can be set to any number up to 873. It is currently set to " + PRINTN CURRENT-SETTING + PRINTR "." +?ELS5: EQUAL? PRSA,V?TURN \FALSE + ZERO? FWEEPED /?ELS14 + CALL BATTY + RSTACK +?ELS14: ZERO? PRSI /?THN18 + EQUAL? PRSI,INTNUM /?ELS17 +?THN18: PRINTR "You must say what number to turn it to." +?ELS17: EQUAL? CURRENT-SETTING,P-NUMBER \?ELS23 + PRINTI "The dial is already set to " + PRINTN CURRENT-SETTING + PRINTR "." +?ELS23: SET 'CURRENT-SETTING,P-NUMBER + PRINTI "The dial is now set to " + PRINTN CURRENT-SETTING + PRINTI "." + EQUAL? CURRENT-SETTING,COMBO \?CND30 + PRINTI " You hear a click from inside the door." + SET 'DIAL-OPEN,TRUE-VALUE +?CND30: CRLF + RTRUE + + + .FUNCT ROPE-F + EQUAL? PRSA,V?PUT \?ELS5 + CALL ACCESSIBLE?,ROPE + ZERO? STACK /FALSE +?ELS5: EQUAL? PRSA,V?TIE \?ELS9 + EQUAL? PRSI,BEAM \?ELS9 + PRINTI "The rope is " + ZERO? ROPE-TO-BEAM /?CND14 + PRINTI "already " +?CND14: PRINTI "tied securely to the center of the beam." + CRLF + SET 'ROPE-TO-BEAM,TRUE-VALUE + RETURN ROPE-TO-BEAM +?ELS9: EQUAL? PRSA,V?TIE \?ELS23 + EQUAL? PRSI,COAL-BIN \?ELS23 + PRINTR "The bin is too large." +?ELS23: EQUAL? PRSA,V?UNTIE \?ELS29 + ZERO? ROPE-TO-BEAM /?ELS29 + SET 'ROPE-TO-BEAM,FALSE-VALUE + PRINTR "The rope is untied." +?ELS29: EQUAL? PRSA,V?CLIMB-DOWN \?ELS35 + ZERO? ROPE-PLACED \?ELS40 + ZERO? ROPE-IN-LOWER-CHUTE \?ELS40 + PRINTR "It would be hard to climb down the rope in its current state." +?ELS40: CALL DO-WALK,P?DOWN + RSTACK +?ELS35: EQUAL? PRSA,V?CLIMB-UP \?ELS48 + PRINTR "Do you also charm snakes?" +?ELS48: EQUAL? PRSA,V?EXAMINE \FALSE + ZERO? ROPE-PLACED \?THN58 + ZERO? ROPE-IN-LOWER-CHUTE /?ELS57 +?THN58: PRINTR "The rope is tied to the beam and hangs into the chute." +?ELS57: ZERO? ROPE-TO-BEAM /FALSE + PRINTR "It is tied to the center of the timber." + + + .FUNCT SHAFT-BOTTOM-F,RARG + EQUAL? RARG,M-ENTER \FALSE + FSET? VARDIK-SCROLL,TOUCHBIT \FALSE + SET 'BREATH-SHORTAGE,3 + CALL I-BREATHE + RSTACK + + + .FUNCT SHAFT-PSEUDO + EQUAL? PRSA,V?CLIMB-DOWN \?ELS5 + EQUAL? HERE,SHAFT-TOP \?ELS10 + CALL DO-WALK,P?DOWN + RSTACK +?ELS10: CALL LOOK-AROUND-YOU + RSTACK +?ELS5: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \?ELS14 + EQUAL? HERE,SHAFT-TOP \?ELS19 + CALL LOOK-AROUND-YOU + RSTACK +?ELS19: CALL DO-WALK,P?UP + RSTACK +?ELS14: EQUAL? PRSA,V?PUT-ON \?ELS23 + EQUAL? PRSO,BEAM \?ELS23 + PRINTR "The shaft is too wide." +?ELS23: EQUAL? PRSA,V?PUT \FALSE + EQUAL? HERE,SHAFT-TOP \FALSE + EQUAL? PRSO,ROPE \?ELS36 + ZERO? ROPE-TO-BEAM /?ELS36 + PRINTR "The rope now dangles into the shaft." +?ELS36: MOVE PRSO,SHAFT-BOTTOM + PRINTR "It disappears into the shaft. A moment later comes a distant thud." + + + .FUNCT BEAM-F + EQUAL? PRSA,V?PUT-ON \?ELS5 + EQUAL? PRSI,UPPER-CHUTE,LOWER-CHUTE \?ELS5 + MOVE BEAM,HERE + PRINTR "The beam is now lying across the mouth of the chute." +?ELS5: EQUAL? PRSA,V?TAKE \?ELS11 + ZERO? ROPE-PLACED /?ELS11 + PRINTR "You'd have to take the rope out of the chute first." +?ELS11: EQUAL? PRSA,V?EXAMINE \FALSE + ZERO? ROPE-PLACED /?ELS22 + PRINTR "A rope hangs from the beam, into the chute." +?ELS22: ZERO? ROPE-TO-BEAM /FALSE + PRINTR "A rope is tied to the beam." + + + .FUNCT TOP-OF-CHUTE-F,RARG + EQUAL? RARG,M-END \FALSE + IN? TROGLODYTE,HERE /FALSE + ZERO? LIT \?THN8 + ZERO? BLORTED /FALSE +?THN8: RANDOM 100 + LESS? 30,STACK /FALSE + MOVE TROGLODYTE,HERE + CALL QUEUE,I-TROGLODYTE,2 + PUT STACK,0,1 + CRLF + PRINTR "A troglodyte trundles in and dumps a load of coal into the chute." + + + .FUNCT I-TROGLODYTE + MOVE TROGLODYTE,DIAL + EQUAL? HERE,TOP-OF-CHUTE \FALSE + SET 'TROG-FOLLOW,TRUE-VALUE + CALL QUEUE,I-TROG-UNFOLLOW,1 + PUT STACK,0,1 + CRLF + PRINTR "The troglodyte trundles off into the coal mine." + + + .FUNCT I-TROG-UNFOLLOW + SET 'TROG-FOLLOW,FALSE-VALUE + RFALSE + + + .FUNCT TROGLODYTE-F + EQUAL? WINNER,TROGLODYTE \?ELS5 + PRINTI "The troglodyte ignores you." + CRLF + CALL STOP + RSTACK +?ELS5: EQUAL? PRSA,V?FOLLOW \?ELS9 + ZERO? TROG-FOLLOW /?ELS9 + PRINTR "You didn't notice which passage it took." +?ELS9: EQUAL? PRSA,V?YOMIN \?ELS15 + PRINTR "The troglodyte is worried about filling his coal quotas." +?ELS15: EQUAL? PRSA,V?RESEARCH \FALSE + PRINTR "Semi-intelligent subterranean beasts frequently used to dig and haul coal." + + + .FUNCT CHUTE-EXIT-F + ZERO? ROPE-PLACED /?ELS5 + PRINTI "You climb carefully down the rope, which is slippery with coal dust, " + GRTR? AWAKE,0 \?ELS13 + PRINTI "but because of your fatigue you lose your grip." + CALL ORANGE-FLASH + CRLF + CRLF + RETURN COAL-BIN-ROOM +?ELS13: CALL NOTHING-HELD? + ZERO? STACK \?ELS17 + PRINTI "but because of your load you are unable to maintain your grip." + CALL ORANGE-FLASH + CRLF + CRLF + RETURN COAL-BIN-ROOM +?ELS17: PRINTI "and soon reach a small opening off the chute. You clamber inside..." + CRLF + CRLF + ADD SCORE,20 >SCORE + FCLEAR VARDIK-SPELL,INVISIBLE + RETURN SLANTED-ROOM +?ELS5: CALL ROPE-BEAM-CHECK,TRUE-VALUE + PRINTI "Wheee!!! " + CALL ORANGE-FLASH + PRINTI " You land beside an enormous bin of coal." + CRLF + CRLF + RETURN COAL-BIN-ROOM + + + .FUNCT ORANGE-FLASH + PRINTI " As you " + ZERO? FLYING /?ELS5 + PRINTI "float" + JUMP ?CND3 +?ELS5: PRINTI "whiz" +?CND3: PRINTI " down the chute, you notice a flash of orange light spilling from an opening onto the chute." + RTRUE + + + .FUNCT SLANTED-ROOM-F,RARG + EQUAL? RARG,M-ENTER \FALSE + PUT VEZZAS,6,0 + RTRUE + + + .FUNCT SLANTED-ROOM-EXIT-F + IN? GOLMAC-SCROLL,PROTAGONIST /?ELS5 + ZERO? GOLMACKED \?ELS5 + CALL POOF + RFALSE +?ELS5: IN? GOLMAC-SCROLL,PROTAGONIST \?ELS9 + ZERO? GOLMACKED /?ELS9 + CALL POOF + RFALSE +?ELS9: PRINTI "Wheeee!!!" + CRLF + CRLF + RETURN COAL-BIN-ROOM + + + .FUNCT KEROSENE-LAMP-DESCFCN,RARG + PRINTI "Mounted securely to the wall is a kerosene lamp, filling the room with a serene orange glow. " + FSET? KEROSENE-LAMP,OPENBIT \?CND3 + PRINTI "A small compartment at its base is open." +?CND3: CRLF + RTRUE + + + .FUNCT KEROSENE-LAMP-F + EQUAL? PRSA,V?EXAMINE \?ELS5 + PRINTR "The lamp has a glass bowl where the flame burns. Below is a small metal door, perhaps a compartment for storing extra wicks or kerosene." +?ELS5: EQUAL? PRSA,V?TAKE \?ELS9 + PRINTR "It's mounted securely to the wall." +?ELS9: EQUAL? PRSA,V?LAMP-OFF \FALSE + PRINTR "You can't spare the breath to blow out the lamp." + + + .FUNCT CHUTE-ENTER-F + ZERO? FLYING /?ELS3 + PRINTI "The chute is too narrow to fly up." + JUMP ?CND1 +?ELS3: PRINTI "The chute is too steep and slippery." +?CND1: CRLF + RFALSE + + + .FUNCT BOTTOM-TOP-OF-CHUTE,TOP=0 + PRINTI "You're already at the " + ZERO? TOP /?ELS5 + PRINTI "top" + JUMP ?CND3 +?ELS5: PRINTI "bottom" +?CND3: PRINTR " of the chute." + + .ENDI diff --git a/end.zap b/end.zap new file mode 100644 index 0000000..3871874 --- /dev/null +++ b/end.zap @@ -0,0 +1,538 @@ + + + .FUNCT COVE-F,RARG,X=0 + EQUAL? RARG,M-ENTER \FALSE + FSET? COVE,TOUCHBIT /FALSE + ZERO? BOOK-BELONGS-IN-LAGOON /?CND8 + MOVE SPELL-BOOK,LAGOON-FLOOR +?CND8: PUT VEZZAS,6,0 + ADD SCORE,20 >SCORE + CALL INT,I-SUFFOCATE + PUT STACK,0,0 + CALL INT,I-YOUNGER-SELF + PUT STACK,0,0 + CALL INT,I-OLDER-SELF + PUT STACK,0,0 + ZERO? GOLMACKED /?ELS14 + ZERO? COMBO-REVEALED \?ELS14 + CALL POOF + JUMP ?CND12 +?ELS14: ZERO? GOLMACKED \?CND12 + CALL HELD?,ROPE + ZERO? STACK /?CND19 + MOVE ROPE,DIAL + SET 'X,TRUE-VALUE +?CND19: CALL HELD?,BEAM + ZERO? STACK /?CND22 + MOVE BEAM,DIAL + SET 'X,TRUE-VALUE +?CND22: CALL HELD?,VARDIK-SCROLL + ZERO? STACK /?CND25 + MOVE VARDIK-SCROLL,DIAL + SET 'X,TRUE-VALUE +?CND25: CALL HELD?,GOLMAC-SCROLL + ZERO? STACK /?CND28 + MOVE GOLMAC-SCROLL,DIAL + SET 'X,TRUE-VALUE +?CND28: ZERO? X /?CND12 + PRINTI "As you slide down the chute, some of your possessions suddenly vanish! " +?CND12: PRINTI "You fly out of the chute and land just at the edge of some water..." + CRLF + CRLF + RTRUE + + + .FUNCT POOF + SET 'POOFED,TRUE-VALUE + PRINTI "Suddenly, without the slightest fanfare, you cease to exist!" + CRLF + CALL FINISH + RSTACK + + + .FUNCT OCEAN-SHORE-F,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTI "You are " + ZERO? FLYING /?ELS10 + PRINTI "floating above" + JUMP ?CND8 +?ELS10: PRINTI "standing on" +?CND8: PRINTI " the western shore of the mighty Flathead Ocean. According to legends you read at the University, the eastern shore of this ocean is a strange land of magical beings and priceless treasures. " + EQUAL? HERE,OCEAN-NORTH \?ELS22 + PRINTI "You could go north along the shore; the edge of a small cove lies to the southwest." + JUMP ?CND20 +?ELS22: PRINTI "The beach to the south is blocked by a tall cliff; a lagoon shore lies to the northwest." +?CND20: CRLF + RTRUE + + + .FUNCT OCEAN-F,X=0 + EQUAL? HERE,GUN-EMPLACEMENT,TURRET,TOP-OF-FALLS \?ELS5 + PRINTR "The ocean lies far below you." +?ELS5: EQUAL? PRSA,V?PULVER \?ELS9 + SET 'PERFORMING-SPELL,TRUE-VALUE + CALL PERFORM,V?PULVER,LAGOON-OBJECT + RTRUE +?ELS9: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS11 + CALL PERFORM,V?DRINK,WATER + RTRUE +?ELS11: EQUAL? PRSA,V?EXAMINE \?ELS13 + PRINTR "It streches east as far as the eye can see." +?ELS13: EQUAL? PRSA,V?RESEARCH \?ELS17 + PRINTR "The Flathead Ocean, called the Great Sea by the ancients, has a very unusual feature -- its western shore basks in the sunlight while its eastern shore lies far underground." +?ELS17: EQUAL? PRSA,V?PUT \?ELS21 + EQUAL? OCEAN,PRSI \?ELS21 + MOVE PRSO,DIAL + CALL SPLASH + RSTACK +?ELS21: EQUAL? PRSA,V?THROUGH \FALSE + CALL JIGS-UP,STR?318 + RSTACK + + + .FUNCT CLIFF-PSEUDO + EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE + ZERO? FLYING /?ELS10 + PRINTR "The cliff is too high to fly over." +?ELS10: PRINTR "The cliff is unclimbable." + + + .FUNCT LAGOON-OBJECT-F + EQUAL? PRSA,V?THROUGH \?ELS5 + EQUAL? HERE,LAGOON,LAGOON-FLOOR \?ELS10 + CALL LOOK-AROUND-YOU + RSTACK +?ELS10: CALL GOTO,LAGOON + RSTACK +?ELS5: EQUAL? PRSA,V?PUT \?ELS14 + EQUAL? HERE,LAGOON-FLOOR /?ELS14 + EQUAL? PRSI,LAGOON-OBJECT \?ELS14 + MOVE PRSO,LAGOON-FLOOR + FSET? PRSO,SCROLLBIT /?THN20 + EQUAL? PRSO,SPELL-BOOK \?CND17 +?THN20: FSET PRSO,MUNGBIT +?CND17: CALL SPLASH + RSTACK +?ELS14: EQUAL? PRSA,V?EXAMINE \?ELS23 + PRINTR "The water looks calm and hospitable." +?ELS23: EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?ELS27 + CALL PERFORM,V?DRINK,WATER + RTRUE +?ELS27: EQUAL? PRSA,V?PULVER \FALSE + PRINTR "The water level seems to drop an inch or two, for a moment." + + + .FUNCT LAGOON-F,RARG,X + EQUAL? RARG,M-ENTER \?ELS5 + FIRST? PROTAGONIST >X /?KLU35 +?KLU35: +?PRG6: ZERO? X /TRUE + FSET? X,SCROLLBIT /?THN15 + EQUAL? X,SPELL-BOOK \?CND12 +?THN15: FSET X,MUNGBIT +?CND12: NEXT? X >X /?KLU36 +?KLU36: JUMP ?PRG6 +?ELS5: EQUAL? RARG,M-LOOK \FALSE + PRINTI "You are " + ZERO? FLYING /?ELS25 + PRINTI "flying over" + JUMP ?CND23 +?ELS25: PRINTI "swimming on" +?CND23: PRINTR " the surface of a calm lagoon, whose sandy floor is visible below. A curved beach surrounds this inlet on its western side." + + + .FUNCT LAGOON-FLOOR-ENTER-F + ZERO? FLYING /?ELS5 + CALL WHILE-FLYING + RFALSE +?ELS5: RETURN LAGOON-FLOOR + + + .FUNCT SAND-PSEUDO + EQUAL? PSEUDO-OBJECT,PRSO \?ELS5 + SET 'PERFORMING-SPELL,TRUE-VALUE + CALL PERFORM,PRSA,GROUND,PRSI + RTRUE +?ELS5: SET 'PERFORMING-SPELL,TRUE-VALUE + CALL PERFORM,PRSA,PRSO,GROUND + RTRUE + + + .FUNCT LAGOON-FLOOR-F,RARG + EQUAL? RARG,M-ENTER \FALSE + CALL QUEUE,I-DROWN,-1 + PUT STACK,0,1 + RFALSE + + + .FUNCT I-DROWN + EQUAL? HERE,LAGOON-FLOOR \?ELS5 + ZERO? VILSTUED \FALSE + INC 'UNDERWATER-COUNTER + EQUAL? UNDERWATER-COUNTER,3 \?ELS14 + CRLF + PRINTR "You won't be able to hold your breath much longer." +?ELS14: EQUAL? UNDERWATER-COUNTER,4 \?ELS18 + CRLF + PRINTR "Better get some fresh air soon!" +?ELS18: EQUAL? UNDERWATER-COUNTER,5 \FALSE + SET 'UNDERWATER-COUNTER,0 + CRLF + CALL JIGS-UP,STR?320 + RSTACK +?ELS5: SET 'UNDERWATER-COUNTER,0 + CALL INT,I-DROWN + PUT STACK,0,0 + RFALSE + + + .FUNCT CORAL-PSEUDO + EQUAL? PRSA,V?EXAMINE \FALSE + IN? HERE,SPENSEWEEDS \FALSE + PRINTR "The coral is covered by swaying spenseweeds." + + + .FUNCT SPENSEWEEDS-F + EQUAL? PRSA,V?MEEF \?ELS5 + MOVE SPENSEWEEDS,DIAL + MOVE CRATE,HERE + CALL THIS-IS-IT,CRATE + PRINTR "The spenseweeds wilt away, revealing a wooden crate labelled with black lettering." +?ELS5: EQUAL? PRSA,V?LOOK-UNDER \FALSE + PRINTR "That's difficult -- they're well rooted in the coral." + + + .FUNCT CRATE-F + EQUAL? PRSA,V?REZROV,V?OPEN \?ELS5 + ZERO? CRATE-POINT \?ELS5 + SET 'CRATE-POINT,TRUE-VALUE + ADD SCORE,15 >SCORE + RFALSE +?ELS5: EQUAL? PRSA,V?READ \FALSE + CALL FIXED-FONT-ON + PRINTI "Stencilled diagonally across the crate: + + GRUE PROTECTION KIT + +Below, in much smaller letters: + + FROM: + Frobozz Magic Grue Accessories Co. + + TO: + Aragain Brothers Circus + Attn: Grue Trainer" + CRLF + CALL FIXED-FONT-OFF + RSTACK + + + .FUNCT BRASS-LANTERN-F + EQUAL? PRSA,V?EXAMINE \FALSE + PRINTI "It is a battery-powered lantern like those used by adventurers and explorers. It is currently " + FSET? BRASS-LANTERN,ONBIT \?ELS10 + PRINTI "on" + JUMP ?CND8 +?ELS10: PRINTI "off" +?CND8: PRINTR "." + + + .FUNCT GRUE-REPELLENT-F + EQUAL? PRSA,V?SHAKE \?ELS5 + ZERO? SPRAY-USED? /?ELS10 + PRINTR "The can seems empty." +?ELS10: PRINTR "There is a sloshing sound from inside." +?ELS5: EQUAL? PRSA,V?PUT-ON,V?SPRAY \FALSE + EQUAL? PRSO,GRUE-REPELLENT \FALSE + ZERO? SPRAY-USED? /?ELS26 + PRINTR "The repellent is all gone." +?ELS26: ZERO? PRSI \?ELS31 + SET 'SPRAY-USED?,TRUE-VALUE + PRINTR "The spray stinks amazingly for a few moments, then drifts away." +?ELS31: EQUAL? PRSI,ME \?CND36 + CALL QUEUE,I-SPRAY,5 + PUT STACK,0,1 + SET 'SPRAYED?,TRUE-VALUE +?CND36: SET 'SPRAY-USED?,TRUE-VALUE + PRINTR "The spray smells like a mixture of old socks and burning rubber. If I were a grue I'd sure stay clear!" + + + .FUNCT I-SPRAY + SET 'SPRAYED?,FALSE-VALUE + CRLF + PRINTR "That horrible smell is much less pungent now." + + + .FUNCT MOUTH-OF-RIVER-F,RARG + EQUAL? RARG,M-LOOK \?ELS5 + PRINTI "A mighty river spills into the ocean here. Looking up the river valley, you see a tall waterfall. Atop a cliff, high above you, is the rampart of a fortress. A cave entrance " + IN? VINES,HERE \?ELS10 + PRINTI "at the base of the cliff to the west is blocked by writhing green vines" + JUMP ?CND8 +?ELS10: PRINTI "lies to the west" +?CND8: PRINTR "." +?ELS5: EQUAL? RARG,M-END \FALSE + IN? VINES,HERE \FALSE + RANDOM 100 + LESS? 15,STACK /FALSE + CRLF + PRINTI "Suddenly you realize that, without really thinking about it, you were " + ZERO? FLYING /?ELS27 + PRINTI "flying" + JUMP ?CND25 +?ELS27: PRINTI "walking" +?CND25: PRINTR " toward the wriggling vines. As you stop, a feeling of annoyance seems to radiate from the plants." + + + .FUNCT VINES-F + EQUAL? PRSA,V?MEEF \?ELS5 + MOVE VINES,DIAL + PRINTR "You can almost feel a wave of pain from the vines as they shrivel away." +?ELS5: EQUAL? PRSA,V?KILL,V?ATTACK \?ELS9 + CALL JIGS-UP,STR?324 + RSTACK +?ELS9: EQUAL? PRSA,V?BITE,V?KICK,V?THROUGH /?THN12 + EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP,V?TAKE /?THN12 + EQUAL? PRSA,V?RUB,V?MOVE,V?PUSH \FALSE +?THN12: CALL DO-WALK,P?WEST + RSTACK + + + .FUNCT VINES-EXIT-F + IN? VINES,HERE \?ELS5 + CALL JIGS-UP,STR?325 + RFALSE +?ELS5: RETURN GRUE-LAIR + + + .FUNCT GRUE-LAIR-F,RARG + ZERO? SPRAYED? \FALSE + EQUAL? RARG,M-END \FALSE + IN? GRUE-SUIT,PROTAGONIST /FALSE + ZERO? LIT \?THN13 + ZERO? BLORTED /?ELS12 +?THN13: CALL JIGS-UP,STR?327 + RSTACK +?ELS12: CALL JIGS-UP,STR?328 + RSTACK + + + .FUNCT MUTATED-GRUES-F + EQUAL? PRSA,V?FROTZ \?ELS5 + PRINTR "One of the grues gives off a flash of light but, strangely, it doesn't seem to notice or care." +?ELS5: EQUAL? PRSA,V?RESEARCH \FALSE + CALL PERFORM,V?RESEARCH,GRUE + RTRUE + + + .FUNCT MUTATED-GRUES-DESCFCN,RARG + ZERO? LIT \?THN6 + ZERO? BLORTED /?ELS5 +?THN6: ZERO? SPRAYED? /?ELS12 + CALL LIT-MESSAGE + PRINTR "They stagger about the room, covering their noses and making horrid gurgling noises." +?ELS12: IN? GRUE-SUIT,PROTAGONIST \?ELS17 + CALL LIT-MESSAGE + PRINTR "They seem to be ignoring you, aside from a few suspicious gurgles in your direction." +?ELS17: CALL LIT-MESSAGE + PRINTR "Baring tremendous fangs, they form a circle around you..." +?ELS5: PRINTR "There are terrifying gurgling noises from the darkness!" + + + .FUNCT LIT-MESSAGE + PRINTI "A pack of grues fills the room! " + ZERO? LIT /FALSE + PRINTI "The grues, contrary to all conventional wisdom, aren't bothered by your light in the least. They must be mutated grues, no longer fearing light! " + RTRUE + + + .FUNCT MAMMOTH-CAVERN-F,RARG + EQUAL? RARG,M-ENTER \FALSE + ADD SCORE,CAVERN-POINT >SCORE + SET 'CAVERN-POINT,0 + PUT VEZZAS,7,0 + RTRUE + + + .FUNCT MACHINERY-F + EQUAL? PRSA,V?LAMP-ON,V?MUNG \?ELS5 + CALL JIGS-UP,STR?330 + RSTACK +?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE + PRINTR "You notice, on one machine, a tiny plaque which reads: + +FROBOZZ MAGIC MUTATED GRUE BREEDER CO." + + + .FUNCT CHAMBER-OF-LIVING-DEATH-F,RARG + EQUAL? RARG,M-BEG \?ELS5 + EQUAL? PRSA,V?VERSION,V?SAVE,V?QUIT /?ELS5 + EQUAL? PRSA,V?RESTART,V?RESTORE /?ELS5 + EQUAL? PRSA,V?SUPER-BRIEF,V?VERBOSE,V?BRIEF /?ELS5 + EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT /?ELS5 + CALL AGONY + RTRUE +?ELS5: EQUAL? RARG,M-END \FALSE + PRINTR "Hideous parasites descend upon you and tear the flesh from your bones, gnaw the eyes from your sockets, and feast upon your very brain tissue. Amazingly, you do not die, and your body regenerates itself as you await the next attack..." + + + .FUNCT PARASITES-PSEUDO + RFALSE + + + .FUNCT HALL-OF-ETERNAL-DEATH-F,RARG + EQUAL? RARG,M-BEG \?ELS5 + EQUAL? PRSA,V?VERSION,V?SAVE,V?QUIT /?ELS5 + EQUAL? PRSA,V?RESTART,V?RESTORE /?ELS5 + EQUAL? PRSA,V?SUPER-BRIEF,V?VERBOSE,V?BRIEF /?ELS5 + EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT /?ELS5 + CALL AGONY + RTRUE +?ELS5: EQUAL? RARG,M-END \FALSE + PRINTR "Disembodied forces suck the very thoughts from your mind, savoring each moment and growing stronger. Every second is an agonizing torment, as though thousands of raging fires were exploding in your skull, filling you with a pain greater than you could ever imagine." + + + .FUNCT FORCE-PSEUDO + RFALSE + + + .FUNCT AGONY + PRINTR "Your agony is too great to concentrate on such an action." + + + .FUNCT BLACK-DOOR-F + EQUAL? PRSA,V?REZROV,V?OPEN \FALSE + PRINTI "As the door opens, hundreds of slime-covered tentacles stream out and drag you across the threshold..." + CRLF + CRLF + CALL ROB,PROTAGONIST + CALL INT,I-TIRED + PUT STACK,0,0 + CALL INT,I-THIRST + PUT STACK,0,0 + CALL INT,I-HUNGER + PUT STACK,0,0 + CALL WEAR-OFF-SPELLS + CALL GOTO,CHAMBER-OF-LIVING-DEATH + RSTACK + + + .FUNCT SILVER-DOOR-F + EQUAL? PRSA,V?REZROV,V?OPEN \FALSE + PRINTI "The door blows open, knocking you to the ground. You are pulled through the open doorway by an unseen force..." + CRLF + CRLF + CALL ROB,PROTAGONIST + CALL INT,I-TIRED + PUT STACK,0,0 + CALL INT,I-HUNGER + PUT STACK,0,0 + CALL INT,I-THIRST + PUT STACK,0,0 + CALL WEAR-OFF-SPELLS + CALL GOTO,HALL-OF-ETERNAL-PAIN + RSTACK + + + .FUNCT WHITE-DOOR-F + EQUAL? PRSA,V?REZROV,V?OPEN \FALSE + EQUAL? HERE,BELBOZ-HIDEOUT \?CND6 + CALL DO-WALK,P?EAST + RTRUE +?CND6: ADD SCORE,WHITE-DOOR-SCORE >SCORE + SET 'WHITE-DOOR-SCORE,0 + PRINTI "The door creaks slowly open. Within, you see someone lying as though asleep. You feel yourself drawn into the room..." + CRLF + CRLF + CALL QUEUE,I-BELBOZ-AWAKES,8 + PUT STACK,0,1 + CALL GOTO,BELBOZ-HIDEOUT + RSTACK + + + .FUNCT I-UNVARDIK + SET 'VARDIKED,FALSE-VALUE + CRLF + PRINTR "Your head feels numb for a moment, and your mind feels suddenly open and unprotected." + + + .FUNCT KILL-BELBOZ + ZERO? BELBOZ-GASPARED /?ELS5 + SET 'BELBOZ-GASPARED,FALSE-VALUE + PRINTI "As you stab Belboz, an apparition rises from his body. Floating above him like a cloud of fog, it howls with laughter. A moment later, gaspar begins to heal the wounds, and the spirit flows back into the body." + CRLF + CRLF + CALL I-BELBOZ-AWAKES + RSTACK +?ELS5: PRINTI "You stab the knife time and again into Belboz, who writhes in pain, eyes bulging outward. Sickened and dizzy, you stagger back." + CRLF + CRLF + SET 'BELBOZ-DEAD,TRUE-VALUE + CALL SWANZO-BELBOZ + RSTACK + + + .FUNCT SWANZO-BELBOZ + PRINTI "A wispy translucent shape rises from the " + ZERO? BELBOZ-DEAD /?ELS5 + PRINTI "corpse" + JUMP ?CND3 +?ELS5: PRINTI "body" +?CND3: PRINTI " of Belboz. It speaks in a voice so deep that your whole body seems to hear it. ""Foolish Charlatan! I am forced to flee that weak, old body -- I shall take your own, instead! Already I have sucked all knowledge, all secrets from that ancient Enchanter. Now begins an epoch of evil transcending even your worst nightmares; a reign of terror that will last a thousand thousand years!"" The shape blows toward you on a cold wind." + CRLF + CRLF + ZERO? VARDIKED /?ELS19 + PRINTI "Jeearr surrounds you like a cloud and begins to contract. Suddenly, it strikes your invisible protection and recoils as if burned. ""No!"" it cries. ""Such a guileless Enchanter developing a mind shield?"" The cloud is thinner, the voice fainter. ""It cannot be! I cannot survive ... without a host."" The demon roils in agony, then thins and dissipates. There is a final scream of pain, then silence." + CRLF + CRLF + ZERO? BELBOZ-DEAD /?ELS27 + PRINTI "Jeearr is vanquished; the kingdom is saved. But you - you are stranded in a land unknown, and your closest friend, the greatest Enchanter of his age, lies dead by your own hand. Kneeling by his blood-soaked corpse, you beg for another chance..." + CRLF + CALL FINISH + RSTACK +?ELS27: PRINTI "Belboz moans softly, and begins stirring. He sees you and rises, instantly alert. After posing a few well-chosen questions, he casts a brief but unfamiliar spell. + +An instant later, " + IN? GRUE-SUIT,PROTAGONIST \?CND35 + PRINTI "your grue suit has vanished and " +?CND35: PRINTI "you are standing in the Chamber of the Circle. The Circle of Enchanters is assembled. Belboz speaks. ""Once again, this young Enchanter has done a matchless service to the Guild and to the entire kingdom, displaying resourcefulness and imagination worthy of the greatest of Enchanters. I grow old, and must soon step down as Head of the Circle. But let it be known that a successor has been found.""" + CRLF + CRLF + ADD SCORE,25 >SCORE + SET 'HERE,CHAMBER-OF-THE-CIRCLE + CALL V-SCORE + USL + CRLF + PRINTI "Here ends the second chapter of the Enchanter saga, in which, by virtue of your skills, you have been appointed as the next leader of the Circle of Enchanters. The final adventure awaits you as the Enchanter series concludes." + CRLF + IN? MORGIA-PLANT,BELBOZ-QUARTERS /?CND44 + CRLF + PRINTI "You hear a distant bellow. ""What happened to my morgia plant?""" + CRLF +?CND44: CALL FINISH,TRUE-VALUE + RSTACK +?ELS19: PRINTI "You feel an overwhelming sense of oppression as the demon seizes control of your mind and body. The monster reaches into the recesses of your mind, adding your hard-earned magic powers to its own. As it settles comfortably into your skull, the demon grants you a vision of the future. You see the enslaved people of the land toiling to erect great idols to Jeearr. Parents offer up their own children upon these altars, as the rivers of the land fill with blood. And YOU embody Jeearr; you are cursed by ten thousand generations of victims; your face adorns the idols. And worst of all, you remain awake and aware, a witness to horror, never sleeping, and never, ever to escape." + CRLF + SET 'SCORE,-99 + CALL FINISH + RSTACK + + + .FUNCT I-BELBOZ-AWAKES + EQUAL? HERE,BELBOZ-HIDEOUT \FALSE + CRLF + PRINTI "Suddenly, Belboz's eyes flicker and he leaps to his feet. His face is unrecognizable, a twisted mask of hatred. ""Meddlesome Enchanter! I should have killed you all before I left! But better late than never..."" Lightning bolts flash toward you from his fingers, but rather than dying, you find yourself in the..." + CRLF + CRLF + CALL ROB,PROTAGONIST + CALL INT,I-TIRED + PUT STACK,0,0 + CALL INT,I-THIRST + PUT STACK,0,0 + CALL INT,I-HUNGER + PUT STACK,0,0 + CALL WEAR-OFF-SPELLS + CALL GOTO,HALL-OF-ETERNAL-PAIN + RSTACK + + .ENDI diff --git a/end.zil b/end.zil index e605d44..d84b334 100644 --- a/end.zil +++ b/end.zil @@ -641,7 +641,7 @@ as though you're floating in the center of an infinite void.") > - > + > > >> @@ -669,7 +669,7 @@ the next attack..." CR>)>> > - > + > > >> @@ -868,7 +868,7 @@ offer up their own children upon these altars, as the rivers of the land fill with blood. And YOU embody Jeearr; you are cursed by ten thousand generations of victims; your face adorns the idols. And worst of all, you remain awake and aware, a witness to horror, never sleeping, and never, ever to escape." CR> - + )>>