ADJEC red,green,blue,clear; ADJEC glass, silver; NOUN red message(road2); { It's red so there can be others elsewhere } red message(WEIGH) = CAPAC; red message(LDESC) = ($say "There is a message scratched in the dirt.\n"); red message(SDESC) = ($say "a message in the dirt"); red message(ACTION) = (IF ($or ($eq ($verb) read) ($eq ($verb) examine)) THEN ($say "'in' is a preposition. 'enter' is a verb.\n") ($exit 1) ) ; NOUN keys (town4); keys(WEIGH) = 2; keys(LDESC) = ($say "There's a set of keys here.\n"); keys(SDESC) = ($say "a set of keys"); ADJEC tool; NOUN tool box (farm5); toolbox = tool box; toolbox(WEIGH) = CAPAC; toolbox(HOLDS) = 50; toolbox(OPENS) = TRUE; toolbox(LOCKS) = TRUE; toolbox(LOCKED) = TRUE; toolbox(LIGHT) = TRUE; toolbox(LDESC) = (IF ($eq ($loc .ME) toolbox) THEN ($say "You are in a huge wooden structure, towering up at least 80 feet above your head, with wooden walls formed of immense 10-foot by 50-foot boards. Everything here, even the grains of dust which cover the wooden floor, seems immense. " ) (IF ($prop toolbox OPENED) THEN ($say "Above your head, the top of the structure is open, and sunlight streams in.\n" ) ELSE ($say "The structure is closed at the top, but enough light comes in from between the boards to enable you to see.\n" ) ) ELSE ($say "Against\nthe house is a heavy ") (IF ($prop toolbox OPENED) THEN ($say "toolbox with the lid open.\n") ELSEIF ($prop toolbox LOCKED) THEN ($say "toolbox with a rusty lock, painted with an insignia composed of blue and green squares, joined at their corners.\n" ) ELSE ($say "toolbox, the lid of which is ajar.\n") ) ) ; toolbox(SDESC) = (IF ($eq ($loc .ME) toolbox) THEN ($return (Sayer "Inside Huge Box" %0)) ELSE ($say "a toolbox") ) ; toolbox(ACTION) = (IF ($eq ($phase) 7) THEN { This is the room action } (IF ($or ($eq ($verb) drop) ($eq ($verb) throw) ) THEN { We don't want to keep track of lots of small things } ($say "You just lost ") (($sdesc ($dobj))) ($say " in a crack between the wooden floorboards!\n") ($move ($dobj) .ALL) ) ELSEIF ($eq ($verb) lock) THEN (IF ($prop toolbox OPENED) THEN ($say "You must close it first.\n") ($exit 1) ELSEIF ($prop toolbox LOCKED) THEN ($say "It's already locked!\n") ($exit 1) ELSEIF ($eq ($loc keys) .ME) THEN ($say "The toolbox seals with a CLICK!\n") ($setp toolbox LOCKED TRUE) ($exit 1) ) ELSEIF ($eq ($verb) unlock) THEN (IF ($not ($prop toolbox LOCKED)) THEN ($say "It's already unlocked!\n") ($exit 1) ELSEIF ($eq ($loc keys) .ME) THEN ($say "One of the keys fits! The box is unlocked.\n") ($setp toolbox LOCKED FALSE) ($exit 1) ) ELSEIF ($eq ($verb) examine) THEN (IF ($prop toolbox OPENED) THEN ($say "The toolbox is open.\n") ELSEIF ($prop toolbox LOCKED) THEN ($say "The toolbox is locked.\n") ELSE ($say "The toolbox is ajar.\n") ) ($exit 1) ) ; NOUN silver spoon(farm6); silver spoon(POINT) = 25; silver spoon(WEIGH) = 1; silver spoon(LDESC) = ($say "There is a beautiful silver spoon here.\n"); silver spoon(SDESC) = ($say "a silver spoon"); NOUN wetsuit(cel15); WORN = MISC1; wetsuit(LDESC) = ($say "There is a wetsuit here.\n"); wetsuit(SDESC) = ($say "a wetsuit") (IF ($prop wetsuit WORN) THEN ($say " (being worn)") ) ; wetsuit(WEIGH) = 50; wetsuit(ACTION) = (IF ($eq ($verb) wear) THEN (IF ($ne ($loc wetsuit) .ME) THEN ($say "You don't have the wetsuit!\n") ($exit 1) ELSEIF ($prop wetsuit WORN) THEN ($say "You are already wearing it!\n") ($exit 1) ELSE ($setp wetsuit WORN TRUE) ($say "OK, you're wearing the wetsuit.\n") ($exit 1) ) ELSEIF ($eq ($verb) remove) THEN (IF ($prop wetsuit WORN) THEN ($setp wetsuit WORN FALSE) ($say "OK, you're no longer wearing the wetsuit.\n") ($exit 1) ELSE ($say "You are not wearing the wetsuit!\n") ($exit 1) ) ELSEIF ($eq ($verb) drop) THEN (IF ($prop wetsuit WORN) THEN ($say "You'll have to remove the wetsuit first.\n") ($setg Skip TRUE) ) ) ; NOUN signpost(Roadx); signpost(RDLOC)=10; signpost(WEIGH)=CAPAC; signpost(LDESC)=($say "There is a signpost by the side of the road.\n"); signpost(SDESC)=($say "a signpost"); signpost(ACTION) = (IF ($or ($eq ($verb) read) ($eq ($verb) examine)) THEN ($say "Pointing east, it says: 'Unuchevala: 10 miles'\n") ($exit 1) ) ; NOUN globe(toolbox); globe(WEIGH) = 20; globe(LDESC) = (IF ($prop globe LIGHT) THEN ($say "A globe of stone glows brightly here.\n") ELSE ($say "There is a strange globe of polished stone here.\n") ) ; globe(SDESC) = (IF ($prop globe LIGHT) THEN ($say "a glowing globe of stone") ELSE ($say "a stone globe") ) ; globe(ACTION) = (IF ($eq ($verb) rub) THEN (IF ($prop globe LIGHT) THEN ($say "The light from the stone globe fades away.\n") ($setp globe LIGHT FALSE) ELSE ($say "The stone globe glows brightly!\n") ($setp globe LIGHT TRUE) ) ($setg MyLoc -1) ($exit 1) ELSEIF ($eq ($verb) examine) THEN (IF ($prop globe LIGHT) THEN ($say "The globe is glowing.\n") ($exit 1) ) ) ; NOUN crowbar (town3); crowbar(WEIGH) = 100; crowbar(LDESC) = ($say "There is a long crowbar here.\n"); crowbar(SDESC) = ($say "a crowbar"); crydie = ($say "What POWER! The magic crystal releases a flood of energy in a split-second! Unfortunately, you were a little close...\n" ) (die) ; { Dragon Stuff } AWAKE=MISC1; NOUN dragon (cel06); white=clear; NOUN green crystal(cel07); NOUN red crystal(cel08); NOUN blue crystal(cel10); NOUN clear crystal(cel09); diamond = clear crystal; sapphire = blue crystal; ruby = red crystal; emerald = green crystal; WORKD = MISC1; green crystal(WEIGH)=15; green crystal(POINT)=25; green crystal(LDESC) = ($say "There is a beautiful green crystal here!\n"); green crystal(SDESC) = ($say "a green crystal"); green crystal(ACTION) = (IF ($eq ($verb) take) THEN (IF ($and ($not ($prop dragon KILLED)) ($eq ($loc .ME) cel07)) THEN (IF ($not ($prop dragon AWAKE)) THEN ($say "You hear a stirring nearby.\n") ($setg Tempr ($plus @Tempr 2)) ($setp dragon AWAKE TRUE) ($setp cel06 SEEN FALSE) ELSE ($setg Tempr 0) ) ) ELSEIF ($eq ($verb) drop) THEN (IF ($and ($not ($prop dragon KILLED)) ($eq ($loc .ME) cel07)) THEN ($setg Tempr ($minus @Tempr 2)) (IF ($le @Tempr 0) THEN ($setp dragon AWAKE FALSE) ($say "You hear a deep Y A W N nearby.\n") ) ($setp cel06 SEEN FALSE) ) ELSEIF ($eq ($verb) touch) THEN (IF ($eq ($dobj) [red crystal]) THEN (IF ($eq ($loc .ME) toolbox) THEN ($say "The red and green crystals flare briefly!\n") (Grow) ($move .ME cel01) ($setg MyLoc -1) ELSE ($say "Nothing happens.\n") ) ($exit 1) ELSEIF ($eq ($dobj) [blue crystal]) THEN (IF ($gt ($prop [green crystal] WORKD) 2) THEN ($say "Nothing happens.\n") ELSE ($setp [green crystal] WORKD ($plus ($prop [green crystal] WORKD) 1) ) ($say "The blue and green crystals flare briefly!\n") ($move .ME toolbox) (Shrink) ($setg MyLoc -1) ) ($exit 1) ELSEIF ($eq ($dobj) [clear crystal]) THEN ($say "Nothing happens.\n") ($exit 1) ) ELSEIF ($eq ($verb) break) THEN (IF ($eq ($dobj) [green crystal]) THEN (crydie) ) ) ; red crystal(WEIGH)=15; red crystal(POINT)=25; red crystal(LDESC) = ($say "There is a beautiful red crystal here!\n"); red crystal(SDESC) = ($say "a red crystal"); red crystal(ACTION) = (IF ($eq ($verb) touch) THEN (IF ($eq ($dobj) [clear crystal]) THEN (IF ($not ($prop [clear crystal] WORKD)) THEN ($say "The red and clear crystals flare briefly!\n") ($setp [clear crystal] WORKD TRUE) ($setp [clear crystal] LIGHT TRUE) ($say "The clear crystal blazes forth with a magical incandescence brilliant enough to penetrate even the deepest darkness!!\n\n" ) ($move .ME cel04) ($setg MyLoc -1) ($sfus .ME CRout 7) ($exit 1) ELSE ($say "Nothing happens.\n") ($exit 1) ) ELSEIF ($eq ($dobj) [green crystal]) THEN (IF ($eq ($loc .ME) toolbox) THEN ($say "The red and green crystals flare briefly!\n") (Grow) ($move .ME cel01) ($setg MyLoc -1) ELSE ($say "Nothing happens.\n") ) ($exit 1) ELSEIF ($eq ($dobj) [blue crystal]) THEN (IF ($or ($eq ($loc .ME) desert) ($eq ($loc .ME) field)) THEN ($say "The red and blue crystals flare briefly!\n") ($move .ME cel08) ($setg MyLoc -1) ELSEIF ($not @RBTouch) THEN ($say "The red and blue crystals flare briefly!\n") ($setg RBTouch TRUE) ELSE ($say "Nothing happens.\n") ) ($exit 1) ) ELSEIF ($eq ($verb) break) THEN (IF ($eq ($dobj) [red crystal]) THEN (crydie) ) ) ; blue crystal(WEIGH)=15; blue crystal(POINT)=25; blue crystal(LDESC) = ($say "There is a beautiful blue crystal here!\n"); blue crystal(SDESC) = ($say "a blue crystal"); blue crystal(ACTION) = (IF ($eq ($verb) touch) THEN (IF ($eq ($dobj) [red crystal]) THEN (IF ($or ($eq ($loc .ME) desert) ($eq ($loc .ME) field)) THEN ($say "The red and blue crystals flare briefly!\n") ($setg RBTouch TRUE) ($move .ME cel08) ($setg MyLoc -1) ELSEIF ($not @RBTouch) THEN ($say "The red and blue crystals flare briefly!\n") ($setg RBTouch TRUE) ELSE ($say "Nothing happens.\n") ) ($exit 1) ELSEIF ($eq ($dobj) [green crystal]) THEN (IF ($gt ($prop [green crystal] WORKD) 2) THEN ($say "Nothing happens.\n") ELSE ($say "The blue and green crystals flare briefly!\n") ($move .ME toolbox) (Shrink) ($setg MyLoc -1) ($setp [green crystal] WORKD ($plus ($prop [green crystal] WORKD) 1) ) ) ($exit 1) ELSEIF ($eq ($dobj) [clear crystal]) THEN ($say "Nothing happens.\n") ($exit 1) ) ELSEIF ($eq ($verb) break) THEN (IF ($eq ($dobj) [blue crystal]) THEN (crydie) ) ) ; CRout = ($setp [clear crystal] LIGHT FALSE) ($say "The glowing magical crystal seems to have gone dark.\n") ; clear crystal(WEIGH)=15; clear crystal(POINT)=25; clear crystal(LDESC) = ($say "There is a beautiful clear crystal here") (IF ($prop [clear crystal] LIGHT) THEN ($say " (GLOWING!)") ) ($say "!\n") ; clear crystal(SDESC) = ($say "a clear crystal") (IF ($prop [clear crystal] LIGHT) THEN ($say " (GLOWING!)") ) ; clear crystal(ACTION) = (IF ($eq ($verb) touch) THEN (IF ($eq ($dobj) [red crystal]) THEN (IF ($not ($prop [clear crystal] WORKD)) THEN ($say "The red and clear crystals flare briefly!\n") ($setp [clear crystal] WORKD TRUE) ($setp [clear crystal] LIGHT TRUE) ($say "The clear crystal blazes forth with a magical incandescence brilliant enough to penetrate even the deepest darkness!!\n\n" ) ($move .ME cel04) ($setg MyLoc -1) ($sfus .ME CRout 7) ($exit 1) ELSE ($say "Nothing happens.\n") ($exit 1) ) ELSEIF ($eq ($dobj) [green crystal]) THEN ($say "Nothing happens.\n") ($exit 1) ELSEIF ($eq ($dobj) [blue crystal]) THEN ($say "Nothing happens.\n") ($exit 1) ) ELSEIF ($eq ($verb) break) THEN (IF ($eq ($dobj) [red crystal]) THEN (crydie) ) ) ; NOUN wood(cel20); ROUTINE KillDragon; DRdem = { Dragon Daemon. Increases temper in .my presence } (IF ($or ($prop dragon KILLED) ($not ($prop dragon AWAKE))) THEN (IF %1 THEN ($say "\n")) ($return 0) ) (IF ($eq ($loc .ME) ($loc dragon)) THEN (IF ($eq ($loc [green crystal]) .ME) THEN { even worse! } ($setg Tempr ($plus @Tempr 1)) ) ($setg Tempr ($plus @Tempr 1)) (IF ($and ($prop wood FLAME) ($eq ($loc wood) ($loc .ME))) THEN (KillDragon) ($return 0) ) ) (IF ($ge @Tempr 7) THEN ($say "Jeez, I didn't know ice dragons could reach their boiling point! In a final flare of rage, he opens his mouth and breathes his frigid breath in a blast in your direction. It's a bit much for you." ) (die) ELSEIF ($ge @Tempr 6) THEN ($say "Gee, he looks like he's really at the edge!") ELSEIF ($ge @Tempr 5) THEN ($say "This is one upset dragon! Be careful!") ELSEIF ($ge @Tempr 3) THEN ($say "He's getting angrier...") ) (IF %1 THEN ($say "\n")) ; dragon(WEIGH)=CAPAC; dragon(LDESC)= (IF ($prop dragon AWAKE) THEN ($say "There is a fierce ice dragon glaring balefully in your direction. " ) ELSE ($say "There is a large white dragon sleeping peacefully in the middle of the cavern floor. " ) ) (DRdem 1) ; dragon(SDESC)= (IF ($prop dragon AWAKE) THEN ($say "a fierce dragon. ") ELSE ($say "a somnolent dragon. ") ) (IF ($ne @MyLoc ($loc .ME)) THEN (DRdem 0) ) ; dragon(ACTION) = { Man, the things you can try here... } (IF ($prop dragon AWAKE) THEN { This is the harder stuff } (IF ($eq ($verb) strike) THEN ($say "This just seems to get him angrier!\n") ($setg Tempr ($plus @Tempr 1)) ($exit 1) ELSEIF ($eq ($verb) throw) THEN (IF ($eq ($iobj) dragon) THEN (IF ($gt ($prop ($dobj) WEIGH) 75) THEN ($say "This just bruises him! Now he's getting mad!\n") ($setg Tempr ($plus @Tempr 1)) ($exit 1) ELSE ($say "That object is just too light to hurt him.\n") ($exit 1) ) ELSE { Dobj action } ($say "This amuses the dragon no end!\n") ($exit 1) ) ) { end of Throw case} ELSE { he's snoozing} (IF ($eq ($verb) wake) THEN ($say "You manage to waken him. He's not happy.\n") ($setg Tempr 1) ($setp dragon AWAKE TRUE) (IF ($and ($eq ($loc wood) ($loc .ME)) ($prop wood FLAME)) THEN (KillDragon) ) ($exit 1) ELSEIF ($eq ($verb) strike) THEN ($say "Now you woke him up! He's upset, too!\n") ($setg Tempr 2) ($setp dragon AWAKE TRUE) ($exit 1) ELSEIF ($eq ($verb) throw) THEN (IF ($eq ($iobj) dragon) THEN (IF ($gt ($prop ($dobj) WEIGH) 75) THEN ($say "It's just heavy enough to waken him. The bruise doesn't help his temper any either.\n" ) ($setp dragon AWAKE TRUE) ($setg Tempr 3) ($exit 1) ELSE ($say "That object is just too light to wake him.\n") ($exit 1) ) ELSE ($say "Don't hurt yourself trying!\n") ($exit 1) ) ) { end of Throw case} ) ; NOUN money; money(WEIGH) = 1; money(LDESC) = ($say "There is a stack of money here!\n"); money(SDESC) = ($say "a stack of money"); money(POINT) = 25; stack = money; FOUND = MISC1; NOUN bed (farm7); bed(WEIGH) = CAPAC; bed(SDESC) = ($say "an old, rickety bed"); bed(ACTION) = (IF ($eq ($verb) move) THEN (IF ($prop bed OPENED) THEN ($say "Stop messing with the bed, it's fragile!\n") ($exit 1) ) ($say "Moving the bed seems to have loosened one of the wall panels on the west wall.\n" ) ($setp bed OPENED TRUE) ($exit 1) ELSEIF ($and ($eq @Verb look) ($eq @Prep under) ($eq @Iobj bed)) THEN (IF ($eq @Prep under) THEN (IF ($not ($prop money FOUND)) THEN ($say "You find some money under the bed!\n") ($move money ($loc .ME)) ($setp money FOUND TRUE) ($exit 1) ) ELSEIF ($prop bed OPENED) THEN ($say "The bed has been moved.\n") ($exit 1) ) ) ; NOUN panel (farm7); panel(OPENS) = TRUE; panel(WEIGH) = CAPAC; panel(ACTION) = (IF ($or ($eq ($verb) open) ($eq ($verb) pry) ) THEN (IF ($and ($eq ($iobj) crowbar) ($eq ($loc crowbar) .ME) ) THEN (IF ($not ($prop bed OPENED)) THEN ($say "There aren't any loose enough.\n") ($exit 1) ) ($say "The loose panel comes away, revealing a secret stairway down, down...\n" ) ($setp panel OPENED TRUE) ELSE ($say "You can't seem to get the panel open.\n") ) ($exit 1) ) ; NOUN bottle(town6); bottle (WEIGH) = 5; bottle (LDESC) = ($say "There is a bottle here.\n"); bottle (SDESC) = ($say "a bottle"); bottle (TRANS) = TRUE; bottle (ACTION) = (IF ($eq ($verb) open) THEN ($say "Hm, the bottle is somehow sealed shut.\n") ($exit 1) ELSEIF ($eq ($verb) break) THEN ($say "Wow, is that heavy glass! It won't break!\n") ($exit 1) ELSEIF ($eq ($verb) strike) THEN (IF ($eq ($iobj) bottle) THEN ($say "Weird thing to do with it.\n") ELSE ($say "Nice try, but it isn't even scratched.\n") ) ($exit 1) ) ; NOUN ship(bottle); ship (LDESC) = ($say "There is a golden model ship here!\n"); ship (SDESC) = ($say "a golden model ship"); ship (WEIGH) = 5; ship (POINT) = 50; model = ship; NOUN well(town5); well(NOTAKE) = TRUE; well (ACTION) = (IF ($eq ($iobj) well) THEN (IF ($eq ($verb) drop) THEN (TWN5y) ) ) ; NOUN painting(cel08); painting(ACTION) = (IF ($eq @Verb take) THEN ($say "You can't take the painting.\n") ($setg Skip TRUE) ELSE ($say "Fiddling with the painting is silly.\n") ($exit 1) ) ; NOUN grate(riverx); grate(Loc21) = GRATELOC; grate(ACTION) = (IF ($eq @Verb take) THEN ($say "You can't take the grate.\n") ($setg Skip TRUE) ELSE ($say "Fiddling with the grate is useless.\n") ($exit 1) ) ; NOUN insignia; insignia(NOTAKE) = TRUE; insignia (WEIGH) = CAPAC; insignia (ACTION) = (IF ($eq ($verb) examine) THEN (IF ($eq ($loc .ME) cel01) THEN ($say "The insignia consists of red and green squares joined at the corners.\n" ) ELSEIF ($eq ($loc .ME) cel04) THEN ($say "The insignia consists of red and clear squares joined at the corners.\n" ) ELSEIF ($eq ($loc .ME) cel08) THEN ($say "The insignia consists of red and blue squares joined at the corners.\n" ) ELSEIF ($eq ($loc .ME) farm5) THEN ($say "The insignia consists of blue and green squares joined at the corners.\n" ) ) ($exit 1) ) ($say "There's nothing useful to do with the insignia.\n") ($exit 1) ; square=insignia; NOUN glass box(cel08); glass box(HOLDS)=1; glass box(TRANS)=TRUE; glass box(OPENS)=TRUE; glass box(OPENED)=FALSE; glass box(SHRNK)=TRUE; { First seen as a tiny box } glass box(LDESC) = (IF ($eq ($prop .ME SHRNK) ($prop [glass box] SHRNK)) THEN ($say "There is a big glass case here.\n") ($setp [glass box] WEIGH CAPAC) ($setp [glass box] HOLDS 50) ELSE (IF ($prop .ME SHRNK) THEN ($say "Before you looms a huge glass wall, inscribed with the words, 'program error!'\n" ) ELSE ($say "There is a tiny glass box with a snap lid here.\n") ($setp [glass box] WEIGH 5) ($setp [glass box] HOLDS 1) ) ) ; glass box(SDESC) = (IF ($eq ($prop .ME SHRNK) ($prop [glass box] SHRNK)) THEN ($say "a glass case") ($setp [glass box] WEIGH CAPAC) ($setp [glass box] HOLDS 50) ELSE (IF ($prop .ME SHRNK) THEN ($say "a huge glass wall, inscribed with the words, 'program error'" ) ELSE ($say "a tiny glass box") ($setp [glass box] WEIGH 5) ($setp [glass box] HOLDS 1) ) ) ; glass box(ACTION) = (IF ($eq ($verb) examine) THEN (IF ($prop [glass box] OPENED) THEN ($say "The case is opened.\n") ELSE ($say "The case is closed (pun not intended).\n") ) ($exit 1) ) ; case=glass box; NOUN statue(glass box); sand = statue; sand(SHRNK)=TRUE; sand(WEIGH)=1; sand(LDESC)= (IF ($and ($prop sand SHRNK) ($not ($prop .ME SHRNK))) THEN ($setp sand POINT 0) ($say "There is a grain of sand here.\n") ELSE ($say "There is a beautiful porcelain statue here!\n") ($setp sand POINT 50) ) ; sand(SDESC)= (IF ($and ($prop sand SHRNK) ($not ($prop .ME SHRNK))) THEN ($setp sand POINT 0) ($say "a grain of sand") ELSE ($say "a porcelain statue") ($setp sand POINT 50) ) ; sand(ACTION)= (IF ($eq ($verb) take) THEN (IF ($and ($prop sand SHRNK) ($not ($prop .ME SHRNK))) THEN ($say "You fumble the grain of sand and lose it on the ground.\n") ($move sand .ALL) ($setg Skip TRUE) ) ) ; NOUN hole; hole(NOTAKE) = TRUE; hole(ACTION) = ($say "You can't do anything useful with the hole.\n") ($exit 1) ; NOUN rock(road5); rock(LDESC)=($say "There is a plain-looking rock here.\n"); rock(SDESC)=($say "an ordinary rock"); rock(ACTION)= (IF ($and ($eq ($verb) take) ($eq ($dobj) rock)) THEN ($say "Mmph! Heavy!\n") ) ; rock(WEIGH)=100; IFOUND = MISC1; NOUN ivory(riverx); ivory(WEIGH) = 5; ivory(POINT) = 25; ivory(Loc21) = GRATELOC; ivory(LDESC) = ($say "There is a beautiful piece of ivory ") (IF ($not ($prop ivory IFOUND)) THEN ($say "wedged in the grate.\n") ($setp ivory IFOUND TRUE) ELSE ($say "here.\n") ) ; ivory(SDESC) = ($say "a piece of ivory") (IF ($not ($prop ivory IFOUND)) THEN ($say " (wedged in the grate)") ($setp ivory IFOUND TRUE) ) ; NOUN matches(cel12); matches(LDESC) = ($say "There is a book of waterproof matches here.\n"); matches(SDESC) = ($say "a book of matches"); matches(ACTION) = (IF ($and ($or ($eq @Verb light) ($eq @Verb burn)) ($eq @Dobj matches)) THEN ($say "OK, you light a match, which quickly burns out.\n") ($exit 1) ) ; matches(WEIGH) = 1; book = matches; WoodBurn = (IF ($eq ($loc wood) ($loc .ME)) THEN ($say "The wood burns down to a pile of ashes, which blows away.\n") ) ($move wood .ALL) ($setp wood FLAME FALSE) ; { NOUN wood(cel20); } wood(LDESC) = ($say "There is a pile of ") (IF ($prop wood FLAME) THEN ($say "burning ") ) ($say "wood here.\n") ; wood(SDESC) = ($say "a pile of ") (IF ($prop wood FLAME) THEN ($say "burning ") ) ($say "wood") ; wood(WEIGH) = 100; wood(ACTION) = (IF ($prop wood FLAME) THEN ($say "The wood is too hot to touch.\n") (IF ($or ($eq @Verb take) ($eq @Verb drop)) THEN ($setg Skip TRUE) ($return 0) ELSE ($exit 1) ) ELSEIF ($or ($eq @Verb burn) ($eq @Verb light)) THEN (IF ($not @Iobj) THEN ($say "You must tell me how to do that!\n") ($exit 1) ELSEIF ($ne @Iobj matches) THEN ($say "That doesn't seem to work.\n") ($exit 1) ELSEIF ($eq ($loc wood) .ME) THEN ($say "You can't manage that while you are holding the wood.\n") ($exit 1) ) ($say "You strike a match and apply it to the wood, which bursts into flames.\n" ) (IF ($and ($prop dragon AWAKE) ($eq ($loc .ME) ($loc dragon))) THEN (KillDragon) ELSE ($setp wood FLAME TRUE) ($sfus .ME WoodBurn 3) ) ($exit 1) ) ; KillDragon = ($say "The dragon, attracted by the bright flame of the burning wood, snaps it up in its jaws. Suddenly, the dragon realizes what it has done! It tries to spit out the wood, but it is too late! The dragon evaporates with a deafening whistle and a burst of steam! " ) (IF ($or ($eq ($loc bottle) ($loc .ME)) ($eq ($loc bottle) .ME) ) THEN ($say "The sound of the whistle shatters the bottle, releasing the golden ship model! " ) ($move ship ($loc .ME)) ($move bottle .ALL) ) ($say "Upon the death of the dragon, the ice melts with astonishing speed.\n" ) ($dfus .ME WoodBurn) ($move wood .ALL) ($setp dragon KILLED TRUE) ($move dragon .ALL) ($setg SCORE ($plus @SCORE 100)) ($setp cel06 SEEN FALSE) ($setp cel05 SEEN FALSE) ($setp cel03 SEEN FALSE) ($setp cel10 SEEN FALSE) ($setp cel08 SEEN FALSE) ; NOUN goblet(cel19); FREED = MISC1; goblet(WEIGH) = 5; goblet(POINT) = 25; goblet(LDESC) = (IF ($not ($prop goblet FREED)) THEN ($say "There is a beautiful golden goblet frozen in the ice!\n") ELSE ($say "There is a beautiful golden goblet here!\n") ) ; goblet(SDESC) = ($say "a golden goblet") (IF ($not ($prop goblet FREED)) THEN ($say " (frozen in the ice)") ) ; goblet(ACTION) = (IF ($not ($prop goblet FREED)) THEN ($say "There's not much you can do with the goblet while it's frozen in the ice.\n" ) ($exit 1) ) ; NOUN newspaper(town2); paper = newspaper; newspaper(LDESC) = ($say "There is a newspaper fluttering in the breeze here.\n") ; newspaper(SDESC) = ($say "a newspaper"); newspaper(ACTION) = (IF ($or ($eq ($verb) read) ($eq ($verb) examine)) THEN ($say " UNUCHEVALA NEWS -- VOLUME II NUMBER 1\n\n") ($say "VANDALS THREATEN COWLEY Last night, unknown vandals attacked the farm of Mr. Cowley, north of town. They sprayed \"DIE, HEATHENS\" on his front door (in reference to his admittedly strange beliefs). Cowley says that this is not the first such threat he has received. However, he says that he will deal with the vandals in his own way. Unfortunately, we have been unable to contact Mr. Cowley personally, since he has not been seen hereabouts since last night.\n\n" ) ($say "DROUGHT IMMINENT, SAY LOCAL FARMERS The Unuchevala River has recently been falling, and little relief is in sight for our local farmers. \"I'm agonna leave here, purty soon,\" said one farmer (who chose to remain anonymous). \"It's all that danged Cowley's fault, messin' about with things that ain't natrawl-like. I caint even raise 'nuff to feed myself, not mentionin' the resta the town.\"\n\n" ) ($say "WEATHER -- Continued dry, with no rain in sight.\n\n") ($exit 1) ELSEIF ($or ($eq @Verb burn) ($eq @Verb light)) THEN (IF ($not @Iobj) THEN ($say "You must tell me how to do that!\n") ($exit 1) ELSEIF ($ne @Iobj matches) THEN ($say "That doesn't seem to work.\n") ($exit 1) ELSEIF ($eq ($loc newspaper) .ME) THEN ($say "You can't manage to do that while holding the newspaper.\n") ($exit 1) ) ($say "The newspaper lights easily, burning down to ashes which blow away.\n" ) (IF ($and ($eq ($loc .ME) ($loc dragon)) ($prop dragon AWAKE)) THEN { give the player a hint } ($say "The dragon notices the flash and approaches the newspaper, but the fire dies down before the dragon can reach it.\n" ) ) ($move newspaper .ALL) ($exit 1) ) ; NOUN ice; ice(NOTAKE) = TRUE; ice(ACTION) = (IF ($or ($eq @Verb break) ($eq @Verb hit)) THEN (IF ($eq @Dobj ice) THEN (IF ($not @Iobj) THEN ($say "You must tell me how to do that.\n") ($exit 1) ) (IF ($eq ($loc .ME) cel19) THEN (IF ($gt ($prop @Iobj WEIGH) 20) THEN (IF ($not ($prop goblet FREED)) THEN ($say "You manage to free the goblet.\n") ($setp goblet FREED TRUE) ($move goblet cel19) ($exit 1) ) ) ELSEIF ($eq ($loc .ME) cel13) THEN (IF ($not ($prop cel13 HOLED)) THEN (IF ($gt ($prop @Iobj WEIGH) 75) THEN ($say "You swing at the ice with the " ($name @Iobj) ", which breaks through and sinks into the icy waters below!\n" ) ($move @Iobj .ALL) ($setp cel13 HOLED TRUE) ($exit 1) ) ) ) ($say "The ice chips a bit, but does not break.\n") ($exit 1) ) ) ($say "You can't do that!\n") ($exit 1) ;