X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=src%2Fintro.inf;fp=src%2Fintro.inf;h=e33f63c87b33f06558fb35e7f1039eb1c905a6b8;hb=53c2e89d2532a0982b774d07415ad6683758e5c9;hp=0000000000000000000000000000000000000000;hpb=5a0bcf5c2a248fc12a2fbfe841b605c6b49ec0e1;p=homeland.git diff --git a/src/intro.inf b/src/intro.inf new file mode 100644 index 0000000..e33f63c --- /dev/null +++ b/src/intro.inf @@ -0,0 +1,940 @@ +! Copyright (C) 2019, 2020 Jason Self +! +! This file is free software: you may copy, redistribute and/or +! modify it under the terms of the GNU Affero General Public License +! as published by the Free Software Foundation, either version 3 of +! the License, or (at your option) any later version. +! +! This file is distributed in the hope that it will be useful, but +! WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +! Affero General Public License for more details. +! +! You should have received a copy of the GNU Affero General Public +! License along with this file. If not, see https://gnu.org/licenses/ + +Object kitchen "Kitchen" + with description + "This looks like a restaurant-quality kitchen. It's small + but full of natural light coming in through the large + window, adding a nice sense of a warm glow. Despite the + small size it has a high ceiling, and the room was set up + into a rectangular shape. The layout allows for easy + access. The walls are painted a buttery yellow and broken + up by celery green curtains on the window. The highly + polished floor ties everything together to create a + feeling of comfort and elegance. It's the perfect example + of well-balanced home design. The livingroom is to the + east.", + n_to window, + cant_go "You walk smack into one of those buttery yellow + walls I described.", + e_to livingroom, + before [; + Go: + if (chair in player) { + print_ret "The chair is too awkward to do that while + you're carrying it."; + } + ], + has light; + +Object wall "wall" kitchen + with name 'yellow' 'wall' 'walls', + description [; + if (location == kitchen) + print + "The walls are painted a buttery yellow and + broken up by celery green curtains on the + windows.^"; + else + print "You see nothing special about the walls.^"; + ], + found_in kitchen livingroom bedroom neighborkitchen neighborlivingroom, + has scenery; + +Object chair "chair" kitchen + with name 'chair' 'backrest' 'seat', + description + "It seems to be your average kitchen chair: Four chrome + legs and a backrest with a yellow seat that matches the + walls.", + before [; + Take: + move chair to player; + print_ret "As awkward as it is, you take the chair."; + ], + has scenery supporter enterable; + +Object table "table" kitchen + with name 'table' 'kitchen table' 'formica', + description + "It looks like something right out of the 1950s: Green + formica and chrome legs.", + before [; + Take, Pull, Push, PushDir, Turn: + print_ret (The) self, " is too heavy for that."; + ], + has scenery supporter enterable; + +Object newspaper "newspaper" table + with name 'newspaper' 'paper', + description + "It's your favorite newspaper: U.S. News And Grue Report, + which also airs on TV. The headline story says ~The GUE's + redesigned 100 zorkmid bill makes history today, becoming + the first ever zorkmid to feature a woman on the front. + The bill is set to become legal tender next year, with + the decision finalized by the Governor yesterday.~ + ~I have enthusiastically embraced this bold new way of + designing money, showing a woman's face. I believe this + landmark achievement will stimulate public confidence in + our monetary system and will help build the GUE's + creative capabilities,~ the Governor said. The next + story talks about how a local resident has won the + carrot-growing contest for the third time in a row."; + +Object window "window" kitchen + with name 'window' 'windows', + description + "Framed by celery green curtains it seems almost large + enough to climb through.", + short_name [; + if (location == kitchen) + print "window to your neighbor's back yard"; + else + print "window to your kitchen"; + return true; + ], + found_in kitchen backyard, + door_dir [; + if (location == kitchen) + return n_to; + else + return s_to; + ], + door_to [; + if (location == kitchen) + return backyard; + else + return kitchen; + ], + before [; + Search: + if (curtains has open) { + print "You see your neighbor's backyard.^"; + return true; + } + else { + print "The curtains are closed, and you can't see + through them.^"; + return true; + } + Open: + if (window hasnt visited) { + score = score + 1; + give window visited; + } + Climb: + if (window hasnt visited) { + score = score + 1; + give window visited; + } + PlayerTo(backyard); + ], + has scenery door openable; + +Object curtains "curtains" kitchen + with name 'celery' 'green' 'curtain' 'curtains', + description "Celery green in color, you see nothing special + about the curtains.", + before [; + Take, Pull, Push, PushDir: + print_ret "Don't you think they look nice where they are?"; + ], + has scenery open openable pluralname; + +Object legs "legs" kitchen + with name 'leg' 'legs', + found_in kitchen neighborkitchen, + has scenery; + +Object livingroom "Livingroom" + with description + "You are in a modestly furnished living room. It's very a + traditional but modern as far as the style of rooms go. It + has a certain bourgeois feeling, although it doesn't seem + very large. There's a couch in the middle of the room + facing a television. Pictures hang from the other walls. + The pictures were commissioned by your family, but a lot + of people claim they painted them. You can hear the sound + of vehicles driving by outside. The kitchen is to the + west. The front door is to the east. Your bedroom is to + the south.", + before [; + Listen: + print "You can hear the sound of vehicles driving by outside.^"; + return true; + ], + n_to + "Since when did you get the ability to walk through + walls? The kitchen is to the west. The front door is to + the east. Your bedroom is to the south.", + s_to bedroom, + w_to kitchen, + e_to frontdoor, + has light; + +Object picture "pictures" livingroom + with description + "The pictures in the room consist of a landscape painting + showing a strangely geometric mountain, another of a + still life painting of a table laid out with a feast and + the third is a portrait of an unknown man. He has a full + beard, is wearing a black robe and no shoes. On his head + is a large 1970s-era hard disk platter.", + name 'picture' 'photo' 'photos' 'frame' 'frames' 'pictures' + 'image' 'images', + Before [; + Take: + print_ret + "They look so nice, perhaps it's better to leave them + where they are."; + ], + has scenery pluralname; + +Object man "man" livingroom + with description "It's a painting of Richard Stallman dressed as + St IGNUcius.", + name 'man' 'disk' 'hard' 'platter' 'robe' 'rms' 'Richard' 'Stallman' + 'robe' 'black' 'image' 'images', + Before [; + Take: + print_ret + "The painting looks so nice, perhaps it's better to + leave it where it is."; + ], + has scenery; + +Object television "television" livingroom + with name 'television' 'tv', + description + "It's big, gray, and one of those old-fashioned CRT + models. It looks very heavy.", + watch_count 0, + before [; + Listen, Examine: + if (television has on) { + self.watch_count = self.watch_count + 1; + switch (self.watch_count) { + 1: + print + "It's big, gray, and one of those + old-fashioned CRT models. It looks very + heavy.^The TV is currently switched on. Your + favorite news program is on: U.S. News And + Grue Report.^The news anchor is saying ~In + other news, authorities continue to + investigate the missing persons case.~^"; + score = score + 1; + return true; + 2: + print + "The news anchor continues by saying ~We're + told the that number of missing people is now + up to as many as 5.~^"; + score = score + 1; + return true; + 3: + print + "The news anchor concludes their coverage by + saying ~We'll have more as the story continues + to develop.~^"; + score = score + 1; + return true; + default: + print + "It's big, gray, and one of those + old-fashioned CRT models. It looks very + heavy.^The TV is currently switched on. Your + favorite news program is on: U.S. News And + Grue Report.^"; + return true; + } + } + ; + Take, Pull, Push, PushDir: + print_ret (The) self, " is too heavy for that."; + ], + after [; + SwitchOn: + print + "The television comes to life. Your favorite news + program is on: U.S. News And Grue Report.^"; + if (television hasnt visited) { + score = score + 1; + give television visited; + } + return true; + ], + has scenery static switchable; + +Object couch "couch" livingroom + with name 'couch' 'sofa', + description + "It looks like a throwback from the 1970s but has held up + very well.", + before [; + Take, Pull, Push, PushDir: + print_ret (The) self, " is too heavy for that."; + ], + after [; + Enter: + print + "The couch makes a nauseating, high-pitched groan as + your weight is added.^"; + return true; + Exit, GetOff: + print "The couch makes a muted snort as your weight is removed.^"; + return true; + ], + has scenery static supporter enterable; + +Object frontdoor "front door" livingroom + with name 'door' 'front', + description + "Cinnamon brown in color it appears to be a very solid + and hefty door.", + short_name [; + if (location == livingroom) + print "door to the outside"; + else + print "door to your house"; + return true; + ], + found_in livingroom sidewalk, + door_dir [; + if (location == sidewalk) + return w_to; + else + return e_to; + ], + door_to [; + if (location == sidewalk) + return livingroom; + else + return sidewalk; + ], + has scenery door openable; + +Object bedroom "Bedroom" + with description + "You walk through the door and find yourself in your own + bedroom, which was once used by your grandmother. This + room was designed in a renaissance style by a master + decorator. It has a certain sense of extravagance, with + ornate inlaid walls in a variety of complimentary colors + that form exquisite patterns, with gold and marble + highlights. The fully-decorated bed looks very comfortable + - it projects a very light, airy feeling that's perfect + for sleeping and adds to the sense of luxury. On the wall + across from your bed is a large painting. The livingroom + is to the north.", + n_to livingroom, + cant_go + "Since when did you get the ability to walk through + walls? Your livingroom is to the north.", + has light; + +Object painting "painting" bedroom + with description + "It's a picture of Aragain Falls, the most breathtaking + and awesome waterfall in the known lands.", + before [; + Insert: + if (second == box) + print_ret (The) self, " is too big to fit."; + ], + name 'painting' 'paint' 'picture' 'of' 'aragain' 'falls', + has scenery; + +Object bed "bed" bedroom + with name 'bed' 'twin', + description + "With a frame of solid wood with a golden brown finish, + it's a finely crafted bed.", + before [; + Take, Pull, Push, PushDir: + print_ret (The) self, " is too heavy for that."; + ], + has scenery static supporter enterable; + +Object box "dented steel box" bed + with name 'box' 'safe' 'safety' 'deposit', + description + "It's a safety deposit box. Made of steel, and dented, + the words ~Property Of The Bank of Zork~ are on it.", + has container openable; + +Object directional "compass" box + with name 'compass', + description [; + if (location == livingroom || location == sidewalk) { + print "The compass is pointing west.^"; + rtrue; + } + if (location == frontporch) { + print "The compass is pointing southeast.^"; + rtrue; + } + else + print + "Ordinarily you'd expect a compass to point north + but this one is spinning wildly in every + direction.^"; + ], + ; + +Object grandlivingroom "Grand Livingroom" + with description [; + if (grandlivingroom has visited) { + print + "This time there's no sign of the woman but the + guards she called for are here. They grab & arrest + you. Perhaps you should have listened.^"; + } + if (grandlivingroom hasnt visited) { + print + "Feeling a little disoriented as you enter, this + doesn't seem like the same place: The interior + feels very open. Walls of pine extend upward to a + ceiling soaring above this two-story height + livingroom with windows extending all the way up + the walls, providing an abundance of sunlight for + the space. The ceiling is painted with soft moss + on a deep silver background creating an inviting + effect. A wide doorway on the other side of the + room leads to a wide balcony, providing a perfect + view of the garden and pond beyond it. As you + begin to take in the bold colors of this lavish + room a woman comes out of one of the walkways on + the other end. Dressed in a stunning red and blue + gown she seems a combination of surprised and + startled to see you. ~Who are you? Why are you + here?~ she asks, demandingly. Not giving time for + a response she yells for the guards. I don't know + where we are but I think now would be a good time + to leave.^"; + } + ], + each_turn [; + guardscalled = guardscalled + 1; + if (guardscalled == 1) + PlayerTo(neighborlivingroom); + else + if (guardscalled == 2) { + deadflag = 3; + } + ], + has light; + +Object Sidewalk "Sidewalk" + with description + "You are standing on the sidewalk in front of your house. + The street is normally quiet, but it's been very busy + and crowded today, like trying to get through a busy movie + theater, and the sound of the traffic has been + particularly noticeable. The traffic is a good sign of + what's going on in the city as a whole today. It is barely + cloudy and already hot this morning. Smaller branches of + trees are in motion from the light wind, which helps to + provide some relief from the heat. Your home is to the + west. Your neighbor's home is to the northwest.", + n_to + "Some inconsiderate person parked their car on the + sidewalk which blocks your path. It might be nice to call + Parking Enforcement so they can get a ticket for creating + an obstruction but you don't have a phone.", + s_to + "You arrive at an intersection. Lots of traffic drives + past at high speed creating a small breeze that makes your + shirt ripple. You decide it is better to not risk being + run over and go back.", + e_to + "As you start to step out into the street a car quickly + zooms by at high speed. You jump back to avoid becoming + part of the pavement.", + se_to + "As you start to step out into the street a car honks + impatiently for you to get out of the way. You go back to + your old spot.", + ne_to + "The street is very busy. Surely you'd be hit by a moving + vehicle if you went there.", + nw_to frontporch, + sw_to "A rock wall blocks your path.", + w_to frontdoor, + has light; + +Object street "street" sidewalk + with name 'street' 'road', + description "It's your typical street.", + has scenery; + +Object rockwall "rock wall" sidewalk + with name 'rock' 'wall' 'stone' 'rock' 'boulder' 'stonework' + 'cobblestone' 'mortar' 'stones' 'rocks' 'walls', + description + "Made up of assorted stones of various sizes and shapes, + with a healthy dose of mortar between them to fill and + seal the irregular gaps between them, it serves as a wall + separating your property from someone else's.", + has scenery; + +Object car "car" sidewalk + with name 'car' 'vehicle' 'automobile', + description + "It's a white two-door car. The license plate holder says + FrobozzCo International.", + before [; + Unlock: + print_ret "The car is locked, and there is apparently no key."; + Open: + print_ret "The car is locked, and there is apparently no key."; + Climb: + print_ret + "I'm not sure that FrobozzCo International would + appreciate people climbing on one of their cars."; + Take: + print_ret + "I doubt that FrobozzCo International would + appreciate someone taking one of their cars."; + Pull, Push, PushDir, Turn: + print_ret (The) self, " is too heavy for that."; + ], + has scenery; + +Object licenseplateframe "license plate holder" sidewalk + with name 'license' 'plate' 'frame' 'holder', + description "It says FrobozzCo International in white letters + on a black frame.", + Before [; + Take, Pull, Push, PushDir, Turn: + print_ret (The) self, " is firmly attached to the car."; + ], + has scenery; + +Object frontporch "Front Porch" + with description + "You are on your neighbor's front porch. It consists of a + coffee brown wooden floor connected to and surrounded a + parchment white wooden fence. The fence is obviously new + and looks great. It's tall enough to make climbing it + impossible. The design of the porch places the focus on + the front door. A deep red color, the door is large, high + quality and has no window. It has a shiny brass handle, + which appears very sturdy. There's an opening to the + southwest toward the sidewalk. Their front door is to the + west.", + cant_go "That parchment white wooden fence is too high to get over.", + se_to sidewalk, + w_to neighbordoor, + has light; + +Object neighbordoor "front door" frontporch + with name 'door' 'front' 'red', + description "The door is large and high quality. A deep red + color it has no window and a shiny brass handle, + which appears to be very sturdy.", + found_in frontporch neighborlivingroom, + door_dir [; + if (location == frontporch) + return w_to; + else + return e_to; + ], + door_to [; + if (location == frontporch) + return neighborlivingroom; + else + return frontporch; + ], + has scenery door openable; + +Object brasshandle "brass door handle" frontporch + with name 'brass' 'handle', + found_in frontporch neighborlivingroom, + has scenery; + +Object fence "wooden fence" frontporch + with name 'fence' 'wooden' 'wood', + found_in backyard frontporch, + has scenery; + +Object neighborlivingroom "Neighbor's Livingroom" + with description + "You are in your neighbor's livingroom. It seems that no + one has lived here in a long time, even though you saw + your neighbor here last week. All of the furniture has + been removed and the air smells stale. A large bay window + enclosed by sheer cobalt blue curtains allowing light to + come through. A door is to the east.^^A machine as tall as + you sits in the center of their livingroom. It consists + of three transparent spheres joined together containing + machinery. A barrel with a small aperture comes out of the + farthest sphere, pointing down and to the wall. The + entire thing rests on a shiny metal platform allowing it + to rotate and tilt with ease.", + w_to neighborkitchen, + e_to neighbordoor, + before [; + Go: + if (bluebutton has on && poker notin machine) { + machine.shoot(); + rtrue; + } + ], + has light; + +Object neighborwindow "window" neighborlivingroom + with name 'large' 'bay' 'window' 'windows', + description "A large bay window enclosed by sheer cobalt blue + curtains allowing light to come through.", + before [; + Go: + print_ret "The window is not something you can go through."; + Open, Close: + print_ret "This isn't the type of window that can be + opened or closed."; + ], + has scenery; + +Object neighborcurtains "curtains" neighborlivingroom + with name 'cobalt' 'blue' 'curtain' 'curtains', + description + "Cobalt blue in color, the curtains have been decorated with + intricate embroidery.", + before [; + Take, Pull, Push, PushDir: + print_ret "Don't you think they look nice where they are?"; + ], + has scenery openable pluralname; + +Object embroidery "embroidery" neighborlivingroom + with name 'embroidery' 'pattern' 'patterns', + has scenery; + +Object redbutton "red button" neighborlivingroom + with name 'red' 'red button' 'button' 'buttons', + before [; + Push: + if (bluebutton has on && poker notin machine) { + print + "You reach for the red button, but not in + time...^ "; + machine.shoot(); + rtrue; + } + if (poker in machine) + print_ret + "You press the red button but it's futile because + the machine's shorted out."; + else { + print + "You push the red button. The machine makes clunky + noises as machinery moves inside. A loud humming + begins to emanate from it. It comes to life, spins + around on its base, aims, and quickly fires a + series of three bright blue sparks at you. You + hear a small explosive sound as they impact your + chest. You feel a little disoriented as it + teleports you away.^"; + move box to bed ; + move directional to box ; + move newspaper to table ; + move letter to island ; + move poker to fireplace ; + PlayerTo(campsite); + rtrue; + } + ], + has scenery; + +Object bluebutton "blue button" neighborlivingroom + with name 'blue' 'blue button' 'button' 'buttons', + before [; + Push: + if (bluebutton has on) { + if (poker notin machine) { + print + "You reach for the blue button, but not + in time...^ "; + machine.shoot(); + rtrue; + } + else { + give bluebutton ~on; + print_ret "You push the blue button. The machine + sounds like it powers down."; + } + } + else { + give bluebutton on; + if (poker notin machine) { + machine.shoot(); + rtrue; + } + print_ret "You push the blue button."; + } + ], + has scenery on; + +Object machine "machine" neighborlivingroom + with name 'machine' 'machinery' 'sphere' 'spheres' 'platform' 'barrel' + 'aperture' 'metal platform' 'shiny metal platform' 'shiny platform' + 'shiny' 'metal', + description + "It consists of three transparent spheres joined together + containing machinery. A barrel with a small aperture comes + out of the farthest sphere, pointing down and to the wall. + The entire thing rests on a shiny metal platform allowing + it to rotate and tilt with ease. There is a blue button + and a red button.", + time_left, + before [ weapon; + Attack: + if (noun == self) + weapon = second; + else + weapon = noun; + if (weapon ~= poker) { + print "That wasn't helpful.^"; + if (bluebutton has on) + self.shoot(); + rtrue; + } + self.shortout(); + return true; + Receive: + if (noun == poker) { + self.shortout(); + return true; + } + if (bluebutton has on) + self.shoot(); + rtrue; + ], + time_out [; + if (poker in self) + StopTimer(machine); + else + if (bluebutton has on) + self.shoot(); + ], + daemon [; + if (poker in player) + rfalse; + if (player in parent(self) && poker notin machine) + self.shoot(); + ], + shoot [ destination; + destination = random(3); + print + "^A loud humming begins to emanate from the machine. + It comes to life, spins around on its base, aims, and + quickly fires a series of three bright blue sparks at + you. You hear a small explosive sound as they impact + your chest. You feel a little disoriented as it + teleports you away.^"; + if (destination == 1) + PlayerTo(kitchen); + if (destination == 2) + PlayerTo(livingroom); + if (destination == 3) + PlayerTo(bedroom); + ], + shortout [; + if (machine hasnt visited) { + score = score + 1; + give machine visited; + } + move poker to self; + print "You put the poker into ", (the) self, + ". Sparks + fly wildly in every direction as it shorts out.^"; + ], + has scenery container open; + +Object backyard "Back Yard" + with description + "You are in your neighbor's back yard. It is barely cloudy + and already hot this morning. Some shade from the sun + would be nice but the closest tree is at the sidewalk, on + the other side of the building and the sun is causing all + of the shadows to go in the wrong direction. The healthy, + dark green grass is well manicured. It looks like a nice + place. You hear some dogs barking in the distance. A high + wooden fence encompasses the area, painted a burnt umber. + Their back door is to the east. Your kitchen window is to + the south.", + before [; + Go: + if (noun == s_obj) { + print + "Climbing over the fence you squeeze back through + your kitchen window.^"; + } + ], + s_to window, + n_to "Their fence is too high to climb over in that direction.", + e_to backdoor, + w_to "Their fence is too high to climb over in that direction.", + has light; + +Object leaves "leaves" backyard + with name 'leaf' 'leaves', + found_in backyard sidewalk, + has scenery; + +Object scratches "scratches" backyard + with name 'scratch' 'scratches' 'mark' 'marks' 'marking' 'markings', + found_in backyard neighborkitchen, + has scenery; + +Object house "neighbor's house" backyard + with name 'neighbor' 'neighbors' 'house' 'home' 'building', + found_in backyard frontporch kitchen sidewalk, + has scenery; + +Object backdoor "back door" backyard + with name 'door' 'back' 'backdoor', + description + "Burgundy in color it seems a solid and hefty door. It + has scratches along the bottom, as if from a pet long + forgotten.", + short_name [; + if (location == backyard) + print "door to your neighbor's house"; + else + print "door to the back yard"; + return true; + ], + found_in backyard neighborkitchen, + door_dir [; + if (location == backyard) + return e_to; + else + return w_to; + ], + door_to [; + if (location == backyard) + return neighborkitchen; + else + return backyard; + ], + has scenery door openable; + +Object neighborkitchen "Kitchen" + with description + "You are in your neighbor's kitchen. It's a large + contemporary kitchen with an open design and many flat + surfaces. The color palette is very bright and in + perfect harmony with the kitchen. It's timeless and + beautiful. The walls look like they've been used to + store things, with some faint outlines remaining that + gives a lived-in look. It could have been a luxury + cooking environment, though by now everything has been + removed. Only the kitchen island and fireplace remain in + stark contrast to the bare kitchen. The livingroom is to + the east. The door to the back yard is to the west.", + e_to neighborlivingroom, + w_to backyard, + has light; + +Object island "kitchen island" neighborkitchen + with name 'kitchen' 'island' 'table' 'wood' 'wooden' 'top' 'wood', + description + "It has metal legs firmly embedded into the floor, and a + wooden top. Strangely, all of the drawers have been + removed.", + before [; + Take, Pull, Push, PushDir, Turn: + print_ret "The kitchen island is firmly planted in the floor."; + ], + has scenery supporter enterable; + +Object brick "brick" neighborkitchen + with name 'brick' 'bricks' 'mortar', + description + "You find nothing special about the bricks that make up + the fireplace.", + has scenery; + +Object fireplace "fireplace" neighborkitchen + with name 'fireplace' 'fire' 'place' 'mouth', + description [; + print + "A stain is splayed against the brick fireplace, + making its curved mouth appear like a black, toothless + scream. A confection of ashes occupy the fireplace"; + if (poker in self) + print + ", and a poker hangs out which looks like it + could make an effective weapon"; + print "."; + new_line; + ], + has scenery container transparent open; + +Object poker "poker" fireplace + with name 'poker', + description + "This poker may have once been used to expedite the + flame's envelopment, as well as the house's many stories + and secrets.", + before [; + Take, Pull, Push, PushDir, Remove: + give poker ~concealed; + if (poker hasnt visited) { + score = score + 1; + give poker visited; + } + if (player in neighborlivingroom) { + if (bluebutton has on) + machine.shoot(); + } + ], + has concealed; + +Object ashes "ashes" fireplace + with name 'ash' 'ashes', + description "It looks like a pile of ash.", + before [; + Take, Pull, Push, PushDir: + print_ret "The ashes are so fine they fall between your fingers."; + ], + has concealed pluralname; + +Object stain "stain" fireplace + with name 'stain', + has scenery; + +Object mouth "mouth of the fireplace" fireplace + with name 'mouth', + has scenery; + +Object letter "letter" island + with name 'letter', + description + "The letter reads: ~Thank you for evaluating this + prototype of the Frobozz Magic Teleporter. Please refer to + the enclosed manual to learn how to program destinations + in to your teleporter. Pressing the red button recalls the + last-used destination and teleports you there. Pressing + the blue button engages Defense Mode, which instantly + whisks intruders away. Use it to provide defense for any + location! Please send feedback about this prototype to + your local FrobozzCo International sales person. Warning: + Side effects can include disorientation, loss of memory, + lightheadedness, loss of appetite, nausea, vomiting, + weakness, and death.~"; \ No newline at end of file