461 lines
12 KiB
Plaintext
461 lines
12 KiB
Plaintext
|
|
|
|
.FUNCT FORMAL-GARDEN-F,RARG
|
|
EQUAL? RARG,M-ENTER \FALSE
|
|
CALL QUEUE,I-GARDEN,-1
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-GARDEN
|
|
EQUAL? HERE,FORMAL-GARDEN \?CCL3
|
|
IN? UNICORN,FORMAL-GARDEN \?CCL6
|
|
RANDOM 100
|
|
GRTR? 33,STACK \?CCL6
|
|
REMOVE UNICORN
|
|
PRINTR "The unicorn bounds lightly away."
|
|
?CCL6: IN? PRINCESS,DRAGON-LAIR \FALSE
|
|
IN? UNICORN,FORMAL-GARDEN /FALSE
|
|
RANDOM 100
|
|
GRTR? 25,STACK \FALSE
|
|
ZERO? UNICORN-FRIGHTENED /?CND16
|
|
SET 'UNICORN-FRIGHTENED,FALSE-VALUE
|
|
RFALSE
|
|
?CND16: MOVE UNICORN,FORMAL-GARDEN
|
|
PRINTI "A beautiful unicorn is peacefully cropping grass across the garden. A gold key hangs from a red satin ribbon around its neck."
|
|
RTRUE
|
|
?CCL3: REMOVE UNICORN
|
|
CALL INT,I-GARDEN
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT UNICORN-F
|
|
CALL HELLO?,UNICORN
|
|
ZERO? STACK /?CCL3
|
|
PRINTR "The unicorn continues cropping grass."
|
|
?CCL3: EQUAL? PRSA,V?FOLLOW \?CCL7
|
|
PRINTR "The unicorn shies away as you near."
|
|
?CCL7: EQUAL? PRSA,V?RUB,V?PUT,V?TAKE /?CCL11
|
|
EQUAL? PRSA,V?ATTACK,V?MUNG \FALSE
|
|
?CCL11: REMOVE UNICORN
|
|
SET 'UNICORN-FRIGHTENED,TRUE-VALUE
|
|
PRINTR "The unicorn, unsurprised to discover that you are indeed the uncouth sort it suspected you were, melts into the hedges and is gone."
|
|
|
|
|
|
.FUNCT GAZEBO-OBJECT-F
|
|
EQUAL? PRSA,V?ENTER \?CCL3
|
|
EQUAL? HERE,FORMAL-GARDEN \?PRG7
|
|
CALL DO-WALK,P?IN
|
|
RSTACK
|
|
?PRG7: PRINT LOOK-AROUND
|
|
RTRUE
|
|
?CCL3: EQUAL? HERE,GAZEBO \FALSE
|
|
EQUAL? PRSA,V?EXIT,V?LEAVE \FALSE
|
|
CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT NEWSPAPER-F
|
|
EQUAL? PRSA,V?READ \FALSE
|
|
PRINTI "Famed Adventurer to Explore"
|
|
PRINT GUE-NAME
|
|
PRINTI "! A world-famous and battle-hardened adventurer has been seen in the vicinity of"
|
|
PRINT GUE-NAME
|
|
PRINTR ". Local grues have been reported sharpening their (slavering) fangs..."
|
|
|
|
|
|
.FUNCT PLACE-MAT-F
|
|
EQUAL? PRSA,V?PUT-UNDER \?CCL3
|
|
EQUAL? PRSI,PDOOR \?CCL6
|
|
MOVE PRSO,HERE
|
|
SET 'MUD-FLAG,TRUE-VALUE
|
|
PRINTR "The mat slies under the door."
|
|
?CCL6: EQUAL? PRSI,WIZ-DOOR,RIDDLE-DOOR \FALSE
|
|
PRINTR "There's not enough room."
|
|
?CCL3: EQUAL? PRSA,V?MOVE,V?TAKE \FALSE
|
|
ZERO? MATOBJ /FALSE
|
|
MOVE MATOBJ,HERE
|
|
SET 'MATOBJ,FALSE-VALUE
|
|
SET 'MUD-FLAG,FALSE-VALUE
|
|
PRINTI "As the place mat is moved, a "
|
|
PRINTD MATOBJ
|
|
PRINTR " falls from it to the floor."
|
|
|
|
|
|
.FUNCT TEAPOT-F
|
|
EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
PRINTR "The teapot has no lid."
|
|
|
|
|
|
.FUNCT MATCH-F,CNT
|
|
EQUAL? PRSA,V?BURN,V?LAMP-ON \?CCL3
|
|
EQUAL? PRSO,MATCH \?CCL3
|
|
GRTR? MATCH-COUNT,0 \?CND6
|
|
DEC 'MATCH-COUNT
|
|
?CND6: GRTR? MATCH-COUNT,0 /?CCL10
|
|
PRINTR "You've run out of matches."
|
|
?CCL10: FSET MATCH,FLAMEBIT
|
|
FSET MATCH,ONBIT
|
|
CALL QUEUE,I-MATCH,2
|
|
PUT STACK,0,1
|
|
PRINTR "A match starts to burn."
|
|
?CCL3: EQUAL? PRSA,V?LAMP-OFF \?CCL16
|
|
FSET? MATCH,FLAMEBIT \?CCL16
|
|
FCLEAR MATCH,FLAMEBIT
|
|
FCLEAR MATCH,ONBIT
|
|
CALL QUEUE,I-MATCH,0
|
|
PRINTR "The match is out."
|
|
?CCL16: EQUAL? PRSA,V?COUNT \?CCL22
|
|
PRINTI "You have "
|
|
SUB MATCH-COUNT,1 >CNT
|
|
PRINTN CNT
|
|
PRINTI " match"
|
|
EQUAL? CNT,1 /?PRG31
|
|
PRINTI "es"
|
|
?PRG31: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL22: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
FSET? MATCH,ONBIT \?PRG40
|
|
PRINTC 65
|
|
JUMP ?PRG42
|
|
?PRG40: PRINTI "No"
|
|
?PRG42: PRINTR " match is burning."
|
|
|
|
|
|
.FUNCT I-MATCH
|
|
FCLEAR MATCH,FLAMEBIT
|
|
FCLEAR MATCH,ONBIT
|
|
PRINTR "The match has gone out."
|
|
|
|
|
|
.FUNCT TOPIARY-F,RARG
|
|
EQUAL? RARG,M-ENTER \FALSE
|
|
CALL QUEUE,I-TOPIARY,-1
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-TOPIARY
|
|
EQUAL? HERE,TOPIARY \?CCL3
|
|
ZERO? TOPIARY-COUNTER \?CCL6
|
|
RANDOM 100
|
|
GRTR? 12,STACK \?CCL6
|
|
SET 'TOPIARY-COUNTER,1
|
|
PRINTR "Strangely, the topiary animals seem to have shifted position a bit."
|
|
?CCL6: ZERO? TOPIARY-COUNTER \?CCL12
|
|
RANDOM 100
|
|
GRTR? 8,STACK \?CCL12
|
|
SET 'TOPIARY-COUNTER,2
|
|
PRINTR "You turn, and the topiary animals seem to have closed in on you."
|
|
?CCL12: ZERO? TOPIARY-COUNTER \FALSE
|
|
RANDOM 100
|
|
GRTR? 4,STACK \FALSE
|
|
SET 'TOPIARY-COUNTER,0
|
|
CALL JIGS-UP,STR?144
|
|
RSTACK
|
|
?CCL3: CALL INT,I-TOPIARY
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT HEDGES-F
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "The hedges are shaped like various animals: dogs, serpents, dragons..."
|
|
|
|
|
|
.FUNCT DRAGON-F
|
|
CALL QUEUE,I-DRAGON,-1
|
|
PUT STACK,0,1
|
|
CALL HELLO?,DRAGON
|
|
ZERO? STACK /?CCL3
|
|
ADD DRAGON-ANGER,2 >DRAGON-ANGER
|
|
PRINTR "The dragon looks amused."
|
|
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7
|
|
INC 'DRAGON-ANGER
|
|
PRINTR "He looks back at you, his cat's eyes yellow in the gloom. You start to feel weak, and quickly turn away."
|
|
?CCL7: EQUAL? PRSA,V?KICK,V?MUNG,V?ATTACK /?CTR10
|
|
EQUAL? PRSA,V?LAMP-ON \?CCL11
|
|
?CTR10: ADD DRAGON-ANGER,4 >DRAGON-ANGER
|
|
EQUAL? PRSA,V?LAMP-ON /?PRG21
|
|
EQUAL? PRSA,V?ATTACK \?PRG23
|
|
ZERO? PRSI \?PRG23
|
|
?PRG21: PRINTR "With your bare hands? I doubt the dragon even noticed."
|
|
?PRG23: CALL RANDOM-ELEMENT,DRAGON-ATTACKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?CCL11: EQUAL? PRSA,V?GIVE \?CCL26
|
|
EQUAL? PRSI,DRAGON \?CCL26
|
|
INC 'DRAGON-ANGER
|
|
FSET? PRSO,TREASUREBIT \?CCL31
|
|
MOVE PRSO,CHEST
|
|
PRINTI "The dragon excuses himself for a moment and returns without the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL31: CALL BOMB?,PRSO
|
|
ZERO? STACK /?PRG38
|
|
ADD DRAGON-ANGER,2 >DRAGON-ANGER
|
|
REMOVE BRICK
|
|
PRINTR "The politely swallows the bomb. A moment later, he belches and smoke curls from his nostrils."
|
|
?PRG38: PRINTR "The dragon refuses it."
|
|
?CCL26: EQUAL? PRSA,V?WALK \FALSE
|
|
EQUAL? HERE,DRAGON-ROOM \FALSE
|
|
EQUAL? PRSO,P?NORTH \FALSE
|
|
ADD DRAGON-ANGER,3 >DRAGON-ANGER
|
|
PRINTR "The dragon puts out a claw and blocks your way."
|
|
|
|
|
|
.FUNCT DRAGON-LEAVES
|
|
MOVE DRAGON,DRAGON-ROOM
|
|
SET 'DRAGON-ANGER,0
|
|
CALL INT,I-DRAGON
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-DRAGON,ROOM
|
|
GRTR? DRAGON-ANGER,6 \?CCL3
|
|
PRINTI "With an almost bored yawn, the dragon opens his mouth and blasts you with a gout of white-hot flame"
|
|
EQUAL? SPELL?,S-FIREPROOF \?CCL8
|
|
PRINTI ", but it washes over you harmlessly."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL8: CALL DRAGON-LEAVES
|
|
CALL JIGS-UP,STR?11
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? HERE,DRAGON-ROOM \?CCL12
|
|
IN? DRAGON,DRAGON-ROOM /?CCL12
|
|
MOVE DRAGON,DRAGON-ROOM
|
|
PRINTI "The dragon charges in, maddened by your attempt to sneak past him. His eyes glow with anger. He opens his mouth, and a huge ball of flame engulfs you"
|
|
EQUAL? SPELL?,S-FIREPROOF \?CCL19
|
|
CALL JIGS-UP,STR?153
|
|
JUMP ?CND1
|
|
?CCL19: CALL JIGS-UP,STR?11
|
|
JUMP ?CND1
|
|
?CCL12: GRTR? DRAGON-ANGER,0 /?CCL21
|
|
RANDOM 100
|
|
GRTR? 50,STACK \?CCL24
|
|
IN? DRAGON,HERE \?CCL24
|
|
PRINTI "The dragon looks bored."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL24: CALL DRAGON-LEAVES
|
|
EQUAL? HERE,OLD-HERE \?CND1
|
|
PRINTI "The dragon seems to have lost interest in you."
|
|
EQUAL? OLD-HERE,DRAGON-ROOM \?PRG36
|
|
CRLF
|
|
JUMP ?CND1
|
|
?PRG36: PRINTI " He wanders off."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL21: CALL FIND-TARGET,WINNER >ROOM
|
|
ZERO? ROOM \?CCL40
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?CND1
|
|
CALL DRAGON-LEAVES
|
|
JUMP ?CND1
|
|
?CCL40: EQUAL? ROOM,CAROUSEL-ROOM,DREARY-ROOM,LEDGE-IN-RAVINE \?CCL44
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?PRG47
|
|
CALL DRAGON-LEAVES
|
|
?PRG47: PRINTI "The dragon follows no further."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL44: EQUAL? ROOM,ICE-ROOM \?CCL50
|
|
REMOVE DRAGON
|
|
REMOVE ICE
|
|
CALL INT,I-DRAGON
|
|
PUT STACK,0,0
|
|
ADD SCORE,5 >SCORE
|
|
SET 'ICE-MELTED,TRUE-VALUE
|
|
CRLF
|
|
PRINTI "The dragon enters and spies his reflection on the icy surface of the glacier. Thinking that another dragon has invaded his territory, he rears up to his full height and roars a challenge! The intruder responds! The dragon takes a deep breath and expels a massive gout of flame. It washes over the ice, which melts rapidly, sending out huge cloud of steam! When the steam dissipates, the glacier is gone, and so is the dragon.
|
|
With the ice gone, you notice a passage leading west."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL50: EQUAL? ROOM,OLD-HERE /?PRG58
|
|
MOVE DRAGON,ROOM
|
|
PRINTI "The dragon follows you, out of mingled curiosity and anger."
|
|
CRLF
|
|
JUMP ?CND53
|
|
?PRG58: PRINTI "The dragon continues to watch you carefully."
|
|
CRLF
|
|
?CND53: GRTR? DRAGON-ANGER,0 /?CND1
|
|
SET 'DRAGON-ANGER,0
|
|
CALL INT,I-DRAGON
|
|
PUT STACK,0,0
|
|
?CND1: LOC DRAGON >OLD-HERE
|
|
SUB DRAGON-ANGER,2 >DRAGON-ANGER
|
|
LESS? DRAGON-ANGER,0 \TRUE
|
|
SET 'DRAGON-ANGER,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CHEST-F
|
|
EQUAL? PRSA,V?OPEN \FALSE
|
|
IN? PRINCESS,HERE \?PRG12
|
|
ZERO? PRINCESS-AWAKE \?PRG12
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?PRG12
|
|
CALL V-OPEN
|
|
PRINTI "The squeaky lid startles the young woman."
|
|
CRLF
|
|
JUMP ?CND4
|
|
?PRG12: PRINTI "The rusty hinges almost give. It would probably open if you tried again."
|
|
IN? PRINCESS,HERE \?CND14
|
|
ZERO? PRINCESS-AWAKE \?CND14
|
|
PRINTI " The commotion has startled the young woman."
|
|
?CND14: CRLF
|
|
?CND4: PUTP CHEST,P?ACTION,0
|
|
IN? PRINCESS,HERE \TRUE
|
|
ZERO? PRINCESS-AWAKE \TRUE
|
|
CALL PERFORM,V?ALARM,PRINCESS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRINCESS-F,DEM
|
|
CALL INT,I-PRINCESS >DEM
|
|
EQUAL? PRSA,V?FOLLOW \?CCL3
|
|
ZERO? PRFOLLOW /?PRG7
|
|
CALL DO-WALK,PRFOLLOW
|
|
RSTACK
|
|
?PRG7: PRINTR "You've lost track of her."
|
|
?CCL3: EQUAL? PRSA,V?RAPE,V?MUNG,V?ATTACK \?CCL10
|
|
REMOVE PRINCESS
|
|
PRINTI "The princess screams, ""Won't someone deliver me from this awful fate?"" The Wizard of Frobozz "
|
|
IN? WIZARD,HERE \?PRG18
|
|
PRINTI "turns toward you"
|
|
JUMP ?CND13
|
|
?PRG18: PRINTI "appears"
|
|
?CND13: CALL JIGS-UP,STR?158
|
|
RSTACK
|
|
?CCL10: CALL HELLO?,PRINCESS
|
|
ZERO? STACK \?CTR20
|
|
EQUAL? PRSA,V?EXAMINE,V?KISS,V?ALARM /?CTR20
|
|
EQUAL? PRSA,V?RUB \?CCL21
|
|
?CTR20: IN? PRINCESS,DRAGON-LAIR \?PRG32
|
|
GET DEM,C-ENABLED?
|
|
ZERO? STACK \?PRG32
|
|
CALL QUEUE,I-PRINCESS,2
|
|
PUT STACK,0,1
|
|
SET 'PRINCESS-AWAKE,TRUE-VALUE
|
|
PRINTR "The princess shakes herself awake, notices you, and smiles. ""Thank you for rescuing me from that horrid worm, but I must depart."" She rises, looking purposefully out of the lair."
|
|
?PRG32: PRINTI "The princess ignores you; her eyes fix on the "
|
|
EQUAL? HERE,GAZEBO \?CCL36
|
|
PRINTI "garden"
|
|
JUMP ?PRG49
|
|
?CCL36: EQUAL? HERE,FORMAL-GARDEN \?CCL40
|
|
PRINTI "gazebo"
|
|
JUMP ?PRG49
|
|
?CCL40: EQUAL? HERE,LEDGE-IN-RAVINE \?PRG47
|
|
PRINTI "ledge"
|
|
JUMP ?PRG49
|
|
?PRG47: MUL PRCOUNT,4
|
|
GET PRDIRS,STACK
|
|
PRINT STACK
|
|
?PRG49: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL21: ZERO? PRINCESS-AWAKE \FALSE
|
|
PRINTR "She's in a trance!"
|
|
|
|
|
|
.FUNCT I-PRINCESS,DEM,OLDP,PC
|
|
CALL INT,I-PRINCESS >DEM
|
|
LOC PRINCESS >OLDP
|
|
MUL PRCOUNT,4 >PC
|
|
ADD PC,1
|
|
GET PRDIRS,STACK
|
|
MOVE PRINCESS,STACK
|
|
SET 'PRFOLLOW,FALSE-VALUE
|
|
IN? PRINCESS,DARK-TUNNEL \?CCL3
|
|
IN? ADVENTURER,DEEP-FORD \?CCL3
|
|
PRINTI "The princess touches the ravine wall and a section slides away, revealing a passage to the east. She enters it."
|
|
CRLF
|
|
IN? WINNER,OLDP \?CND8
|
|
ADD PC,3
|
|
GET PRDIRS,STACK >PRFOLLOW
|
|
?CND8: SET 'SECRET-DOOR,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: IN? PRINCESS,DARK-TUNNEL \?CCL11
|
|
IN? WINNER,DARK-TUNNEL \?CCL11
|
|
SET 'SECRET-DOOR,TRUE-VALUE
|
|
PRINTI "The princess appears from behind some rocks, as though she had walked through a wall."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL11: IN? WINNER,OLDP \?CCL17
|
|
ADD PC,3
|
|
GET PRDIRS,STACK >PRFOLLOW
|
|
EQUAL? OLDP,FORMAL-GARDEN \?CCL20
|
|
PRINTI "The princess enters the gazebo."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL20: EQUAL? OLDP,LEDGE-IN-RAVINE \?PRG27
|
|
PRINTI "The princess climbs daintily down the rock face."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?PRG27: PRINTI "The princess walks "
|
|
GET PRDIRS,PC
|
|
PRINT STACK
|
|
PRINTI ". She glances back at you as she goes."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL17: IN? PRINCESS,HERE \?CND1
|
|
EQUAL? HERE,GAZEBO \?CCL36
|
|
PRINTI "The princess joins you in the gazebo."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL36: EQUAL? HERE,DEEP-FORD \?PRG43
|
|
PRINTI "The princess clambers down from the ledge."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?PRG43: PRINTI "The princess enters from the "
|
|
ADD 2,PC
|
|
GET PRDIRS,STACK
|
|
PRINT STACK
|
|
PRINTI ". She seems surprised to see you."
|
|
CRLF
|
|
?CND1: IN? PRINCESS,GAZEBO \?CCL51
|
|
PUT DEM,0,0
|
|
CALL QUEUE,I-UNICORN,6
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
?CCL51: INC 'PRCOUNT
|
|
RANDOM 100
|
|
GRTR? 75,STACK \?CCL54
|
|
PUSH 1
|
|
JUMP ?CND52
|
|
?CCL54: PUSH 2
|
|
?CND52: CALL QUEUE,I-PRINCESS,STACK
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-UNICORN
|
|
EQUAL? HERE,GAZEBO,FORMAL-GARDEN \?CCL3
|
|
FCLEAR GOLD-KEY,NDESCBIT
|
|
MOVE GOLD-KEY,WINNER
|
|
CALL SCORE-OBJ,GOLD-KEY
|
|
PUTP GOLD-KEY,P?ACTION,0
|
|
REMOVE PRINCESS
|
|
PRINTR "Shyly, a unicorn peeks out of the hedges and approaches the princess. Around its neck hangs a gold key. The princess takes the key and, smiling, hands it to you. ""It is the least I can do for one who rescued me from a fate I dare not contemplate."" With that, she mounts the unicorn and rides away."
|
|
?CCL3: REMOVE PRINCESS
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ICE-ROOM-F,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "This is a large hall of ancient lava, worn smooth by a glacier. Tunnels lead east and south."
|
|
ZERO? ICE-MELTED /?CND6
|
|
PRINTR " A damp, scorched passage leads west."
|
|
?CND6: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ICE-F
|
|
EQUAL? PRSA,V?MELT \FALSE
|
|
PRINTR "This is a big glacier; you'll need lots of heat."
|
|
|
|
.ENDI
|