Release 4; Constant Story "Beat the Devil"; Constant Headline "^An interactive spree^ Copyright (c) 1999 by Robert M Camisa^"; Constant MAX_SCORE 101; Constant TASKS_PROVIDED; Constant NUMBER_TASKS 11; Array task_scores ->1 10 10 10 10 10 10 10 10 10 10; Include "Parser"; [PrintTaskName ach; switch (ach) { 0: "proving profanity is no substitute for wit"; 1: "teaching Gluttony the virtues of moderation"; 2: "putting a speedy end to Sloth"; 3: "setting off Wrath's explosive temper"; 4: "finding out that Pride has little to be proud of"; 5: "proving that Greed is not always good"; 6: "demonstrating that Lust is not the wisest of sins"; 7: "showing Envy that you should be proud of who you are"; 8: "proving that a rose is not just a rose"; 9: "having good taste in music"; 10: "knowing poetry will melt a woman's heart"; } ]; [PrintRank; print ", meaning that you have "; switch(score) { 0 to 10 : "amused the Devil."; 11 to 21: "annoyed the Devil."; 22 to 31: "angered the Devil."; 32 to 41: "bothered the Devil."; 42 to 51: "badgered the Devil."; 52 to 61: "harrased the Devil."; 62 to 71: "vexed the Devil."; 72 to 81: "irked the Devil."; 82 to 91: "fretted the Devil."; 92 to 100: "pestered the Devil."; 101: "Beat the Devil!"; } ]; Attribute visible; Attribute legible; !Attribute liquid; Attribute binc; Attribute demon; Replace Throwsub; Replace Picksub; Object LibraryMessages "lm" with before[; Think: "It's a little late to start thinking now."; Dig: "I don't think its possible for you to dig yourself much deeper."; Listen: print "You hear a Muzak version of "; switch (random (11)) { 1: print "Nine inch Nails."; 2: print "Metallica."; 3: print "Iron Maiden."; 4: print "Ozzy Ozbourne."; 5: print "Black Sabbath."; 6: print "Slayer."; 7: print "Marilyn Manson."; 8: print "AC/DC."; 9: print "Prodigy."; 10: print "Guns'n'Roses."; 11: print "Tool."; } print_ret " You shudder."; Sorry: "Yes, you certainly are."; Jump: "Look before you leap."; Strong: if (self hasnt general) { give self general; Achieved(0); "This being Hell and all, no one is that impressed, but I'll give you a point for trying."; } else "You got your point. Don't get greedy."; Sleep: "You're a little too tense to sleep."; Smell: "There's an odd scent in the air, a mix of air freshener and brimstone. Rather pleasant, actually."; ;]; Include "VerbLib"; Object Food_Court "Food Court" with description "At first glance, this seems to resemble every other food court in every other mall you've ever been in. In other words, it's too few tables (which are too uncomfortable) packed into too small a space. It's only on second glance that the weirdness creeps in: the tables are all fire red, and the restaurants on the periphery have weird names such as 'Taco Hell' and 'McDemons'. There's an exit north, and that's about it. Brightly lit restaurants block all other directions. Well, except for northeast- the storefront there is dark. There also appears to be no sign of bathroom facilities.", n_to Atrium, ne_to Out_Snowballs, cant_go "You take one look at what the restaurants are serving, and suddenly decide that there's a lot to be said for hunger."; Object -> restaurants "restaurants" with name "restaurant" "restaurants" "Taco" "Hell" "McDemons", description "Except for the name, and some of the ingredients, these restaurants could be carbon copies of the fast-food places you know. Not that that inspires any more confidence in their food.", has scenery; Object -> table "table" with name "table" "red", initial [; if (table hasnt general) { give table general; "You wake up in the usual dignified manner. In other words, with your cheek glued to whatever you were sleeping on by your own saliva. Only this time its different, because its not the softness of your pillow you feel under your cheek, but something hard and metallic. It's some sort of table. With a shock you leap up because this isn't your bedroom!"; } "A red table stands out from the pack. Probably because it has your drool on it.";], description "Well, it's obvious that whoever designed this table did so with comfort in mind. Specifically so they can leave any trace of it out. This table is made of the most uncomfortable metal ever. And its too small, so it would squeeze your stomach. Although, you could stand to lose a little weight.", has static supporter; Object note "note from Lucifer" table with name "paper" "note", article "a", description "A note from Lucifer, written in blood red ink on black paper. At least its not on human skin, right?", react_before[; Read: remove self; "The note reads as follows: ^^ My Dear Sir:^ I listened with great care to your proposal last night, but in the end I'm afraid I must deny your request. You see, Washington and Hollywood provide me with all the souls I'll ever need to buy. I offer instead, the following counter proposal:^^ You have noticed that you are in my masterpiece, the soon to be opened ~Mall of Hell~. Its not completed yet, nor is it open to the public, but the flavor is there. At any rate, I have stationed my chief Lieutenants, the seven deadly sins, at various points in this establishment. Defeat them all, and I will give you your chance with the lovely Gwyneth. Fail, and you join the staff here - permanently.^^ Oh, and one other thing. Because I am a hopeless romantic, I have hidden three very special items in various places around the mall. While not necessary to win our wager, they will improve your chances with the lovely Gwyneth significantly.^^ The note is signed simply ~L~.^^^^ After you have read it, the note bursts into painless, heatless, flame in your hand.";], has legible; Object gluttony "Gluttony" Food_Court with name "gluttony" "glutton" "pile" "garbage" "name" "tag", initial "What appears to be an animated pile of garbage is seated about three feet to your left.", description "Your first impulse, when looking at this is to hold your nose. It's basically a walking, talking pile of rotted food and assorted fast food refuse. A line of gaunt, hollow eyed zombies proceed from each restaurant bearing food to the creature, which it takes, consumes and adds the refuse to itself. You see an exceedingly filthy name tag, and under the various condiment stains can just make out ~Hi! My name is : Gluttony~.", life [; Answer, Tell : "I don't think he cares really, don't feel bad."; Ask : switch (second) { 'him', 'it', 'itself', 'himself', 'gluttony': "~I'm Gluttony. Pleased to meetcha!~ The thing offers a hand made up of burger wrappers, which you shake gingerly."; 'mall', 'food court' : "~This is a great place. Not that I get out of the food court much.~"; 'ice cream', 'Snowballs', 'sundae': "~Snowball's made the best ice cream. I used to eat it all day.~"; 'boss', 'devil', 'lucifer': "~You know, despite his rep, Mr. L is actually quite a guy.~"; 'stomach quake', 'pill', 'packet': "What are you, some sort of wise guy? Don't let me catch you bringing any of that junk near me."; 'exit': "~Not without getting by me bub. And frankly, you don't look like you have the stomach for it.~ The garbage quivers as Gluttony laughs at his own joke."; 'pride', 'lust', 'sloth', 'envy', 'wrath', 'greed': "~I don't really hang with those guys much. They're priorities are all screwed up, ya know what Im sayin?"; 'zombies': "~They're a little tired, that's why their so quiet. But they don't get to rest till I'm full.~"; 'food': "~The best reason to live. Gotta eat!~"; default: switch ( random (3) ) { 1: "Gluttony merely lets out a nausea inducing burp."; 2: "~Tastes like chicken.~"; 3: "~Sorry, I can't think straight cause Im so hungry.~"; }; }; Kiss: "If you were attracted to things that looked like -that- you wouldn't be in this mess in the first place."; Show: "Gluttony only seems interested in the things the zombies are bringing him."; Attack: "Gluttony doesn't even notice."; Give: if (jacket has worn) { print "The zombies, seeing your jacket and thinking you are one of them, shuffle aside and make room for you in the presentation line. "; if ((noun == sundae) && (sundae has general)) { move trash to trash_can; remove gluttony; remove sundae; Achieved(1); Food_Court.cant_go="The restaurants are all closed."; "Gluttony doesn't appear to notice you're not a zombie, and scarfs the sundae down eagerly. You notice a change immediately. He begins looking very ill, and grabs a nearby trash can and begins vomiting. Now, normally you're as repulsed by this as the next guy, but this is fascinating... Gluttony is shrinking as he vomits himself into the trash can. Finally, he disappears entirely, leaving the can full of trash. The lines of zombies sink into the floor, whispering ~At last we can rest.~"; }; if (noun == sundae) { remove sundae; "Gluttony swallows the muck in a single gulp. ~SNOWBALLS ICE CREAM!~ he roars. ~MORE!~"; }; "Gluttony takes one look at your offering and snorts. ~That's not food! Stupid brain rotting zombie!~."; }; "The zombies refuse to let you in their presenting line."; ], has animate static demon proper; Object zombies "zombies" Food_Court with name "long" "line" "zombies" "zombie", description "A line of zombies, each dressed in the uniform of their respective restaurant shuffles silently towards Gluttony, keeping him fed.", life [; Kiss: "Wow. And you thought your last girlfriend was unresponsive."; default : "The zombies continue their silent shuffling.";], has scenery animate; Object trash_can "trash can" Food_Court with name "can", adjective "red" "wire", initial "A red wire trash can is in the center of the court.", description "A red wire trash can stands here. Not much else to say.", has static container open; Object trash "trash" with name "trash" "garbage", article "some", description "This pile of garbage is all that is left of Gluttony.", before[; Search : if (parent(dollar)==trash) {move dollar to player; "Pawing through the disgusting garbage, you happen upon a dollar bill.";} ]; Object dollar "dollar" trash with name "dollar" "bill" "money", description "It's pretty much the same as the money you're used to. Except, of course that it says ~In Lucifer we trust~ instead of the usual wording."; Object Out_Snowballs "Outside Snowball's Ice Cream Shoppe" with description[; print "This seems cheerful and normal enough, which of course makes it oddly out of place. It's not much really, a deserted storefront and an awning done in cheerful blue and white proclaiming ~Snowballs Ice Cream Shoppe~. You can duck behind the counter to the north, or head back to the center of the food court to the southwest."; if (Out_Snowballs hasnt visited) print "^^Actually, its not surprising they went under. I mean, with a name like that what chance could they have?"; new_line; rtrue; ], sw_to Food_Court, n_to In_Snowballs; Object -> awning "awning" with name "cheerful" "blue" "white" "awning", description "It's an awning. It's blue and white. It's cheerful. It says ~Snowball's~", has scenery; Object In_Snowballs "Inside Snowball's Ice Cream Shoppe" with description "The good news is, this looks like a typical ice cream shop. Well, except for the inch thick layer of dust. The bad news is, it's still bigger than your apartment, not to mention it's in the Mall of Hell. There's a shelf rather clumsily bolted to the wall.", s_to Out_Snowballs; Object -> shelf "shelf" with name "shelf" "rack", description "Its one of those tacky plastic shelves. At least it isn't red though.", before[; Search, Examine: shelf.before=NUll; give pliers visible; move pliers to player; "You blow dust off the shelf, almost choking yourself from the resultant cloud, but you uncover a pair of pliers, which you pocket. Personally, I'dve preferred gold or jewels, but beggars can't be choosers."; ], has scenery supporter; Object jacket "spiffy white jacket" shelf with name "spiffy" "white" "jacket", article "a", initial [; if ( parent (jacket) == shelf) { "A snazzy white jacket hangs from the corner of the shelf."; } "A white jacket lies in a crumpled heap on the floor. You slob.";], description "This is a snazzy white jacket with a patch saying ~Snowball's~ over one breast, and a patch saying ~Welcome! I'm Bob.~", before[; Wear: if (catsuit has worn) "No way! The purpose of that suit is to show your body off, not hide it.";], has clothing; Object ice_machine "ice cream machine" In_Snowballs with name "ice" "cream" "machine" "maker" "gears" "knives" "mace" "spray" "can", initial "A dusty, unused ice cream machine sits quietly in the corner.", description "Well, this looks. . . complicated. It's all gears, and knives, and somewhere in the middle you can see something vaguely resembling a spray can of mace (Don't ask). The front panel is all black, with only two distinguishing features: the words ~Sundae slice-o-matic 5000~ and a small green button labeled ~Commence~.", before[; Receive: "There's nowhere on the machine to put ingredients in. Which is probably a good thing- you suspect you could lose a hand if you tried."; Search: <>;], has static supporter container open; Object g_button "green button" ice_machine with name "green" "button", description "It's a green button with the word ~Commence~ on it. I may be going out on a limb here, but my guess is that it starts the machine.", before [; Push: if (sundae notin nothing) "Lets not clutter up the inventory, M'kay?"; move sundae to ice_machine; give self general; "With a whirr and a clunk, the machine begins to shake rather alarmingly. You edge back a couple of feet as robotic hands erupt from the machine and begin grabbing things and stuffing them into a newly opened maw. A spice rack, some napkins, a kicking and screaming rat. . . you prepare to defend yourself, but just as the hands reach for you, the machine lets out a gigantic belch and goes still, with an ice cream sundae appearing where the arms were.";], has scenery; Object sundae "ice cream sundae" with name "ice" "cream" "sundae", description "This is just too disgusting for words. It looks like someone cleaned out their garbage disposal, and covered it in whipped cream.", before[; Eat: "You take one look and suddenly lose your appetite."; Receive: if (noun==qpill) "You can't bring yourself to touch the blasted thing, and simply dropping the pill on top would be too obvious. There has to be a subtle way to do this. Think."; if (noun==powder) { give sundae general; remove powder; "You sprinkle the powder onto the sundae, and it sinks in and disappears. Not that youd've wanted to eat that thing anyway, and the powder just gives you one more reason to stay away from it."; } "There's already enough crap on this sundae, thanks."; ], has supporter; Object pliers "pair of pliers" with name "pliers" "pair" "handle" "handlegrip" "red", description " It's a pair of stainless steel pliers, with red handles. The word ~Hellish~ is stamped on the rubber handlegrip", has ~visible; Object handle "sorry remnants of a pair of pliers" with name "sorry" "remnants" "pair" "pliers" "handgrip", article "the", description "This used to be a really nice pair of pliers, till some idiot got destruction happy. Now all that remains is a sad rubber handgrip stamped ~Hellish~."; Object hammer "really nice hammer" with name "really" "nice" "hammer", article "a", description "It's a nice hammer. It says ~Hellish~ on the handgrip. What, you were expecting poetry? Its just a hammer."; Object Atrium "Atrium" with description "A large flower garden dominates this area, complete with a fountain in the middle, and you can see a bank of escalators a little further on. Paths wind in the four main directions through blooms of all shapes and sizes, though only one color. They're real big on red here. Still, the overall effect is pretty enough, provided you can overlook the fact that the windows appear to look out over a lake of boiling lava instead of a parking lot.", s_to Food_Court, u_to Escalators, e_to Out_WrongAid, w_to Out_Acme, n_to Out_Pets, d_to "You're on the ground floor already! Pay attention!"; Object -> flowers "flower garden" with name "garden", description "You're not much of a horticulturist, so let me put this in a way you would understand: ~OOOOOOOOH. Flowers Pretty!~ There, that about covers it.", before [; Receive, LetGo: "The garden has some sort of force field over it that prevents things entering- or leaving.";], has scenery container open transparent; Object flower "flowers" flowers with name "flower" "flowers" "bloom" "blooms", description "You're not much of a horticulturist, so let me put this in a way you would understand: ~OOOOOOOOH. Flowers Pretty!~ There, that about covers it."; Object -> ground "ground" with name "ground" "tile" "tiles", description "The ground is made up of little tiles in a pattern of interlocking L's", has scenery; Object awindow "window" Atrium with name "window" "windows" "glass" "planes", adjective "thick", description "Thick planes of glass are all that seperate you from what seems to be a lake of boiling lava. Don't you feel more secure knowing that?", has scenery; Object lake "lake" Atrium with name "lake" "lava", ajective "boiling", description "You don't know what upsets you more. That its a lake of boiling lava, or that demons appear to be swimming in it.", before[; Take: "It's _outside_ Genius! Not to mention it's a lake of boiling lava!"; ], has scenery; Object demons "demons" Atrium with name "demons", description "A bunch of demons swimming in the lava lake outside.", has scenery; Object -> Escalators "pair of escalators" with name "up" "down" "escalator" "escalators" "pair" "pair of escalators", description "It's a pair of escalators. One goes up, one goes down. Not much else can be said, really.", door_to [; if (location==Atrium) return Hells_Octoplex; return Atrium ;], door_dir [; if (location==Hells_Octoplex) return d_to; return u_to;], found_in Atrium Hells_Octoplex, before [; Search, Examine : escalators.before=null; move hatch to location; "It's a pair of escalators. One goes up, one goes down. Not much else can be said, really. Wait, I lie. There's a small hatch labeled ~Maintence~."; ;], react_before[; Go: if (noun == u_obj && (Sloth notin nothing)) "You wouldn't be thin enough to squeeze by that disgusting mass of pink flesh blocking the escalators even if you looked like Kate Moss. Which you don't"; if ((Escalators has general) && (noun == u_obj)) "At the speed that escalator is going? You'd lose whatever bodily appendage you chose to put on it."; rfalse; ;], has scenery door open; Object -> hatch "Maintence hatch" with name "hatch" "Maintence", description[; print "A small hatch labeled, surprisingly enough ~Maintence~."; if (hatch has open) print_ret " The hatch is currently open."; " The hatch is currently closed."; ;], before [; Receive : "The hatch is way too small to hold anything else."; ;], has scenery container openable; Object knob "speed control knob" hatch with name "speed" "control" "knob", description [; print "It's the stem of a broken knob used to control the escalator's speed. Even though the knob is gone, your amazing psychic powers tell you it's pointing to "; if (Escalators has general) print_ret "fast."; print "slow."; ;], before [; Turn : if (second == 0 ) "You can't quite get a grip on it with your bare hands."; if (second == pliers) { if (Escalators has general) { give Escalators ~general; "You switch the escalators from fast to slow. "; } give Escalators general; print "You switch the escalators from slow to fast. "; if (Sloth notin nothing) { remove Sloth;Achieved(2); "There's a high pitched whine and a mechanical thud as the escalator attempts to increase speed, only to meet resistence from the incredible weight upon it. You watch and wonder who will give out first. Luckily, you don't have to wait long for your answer as Sloth begins rocking back and forth, trying to shift his mass to just one of the escalators. Waves ripple and undulate through that pink mass, and then he tips onto an escalator. Luckily, its the ~up~ escalator, which promptly whizzes him skyward at an incredible velocity. The last you see of Sloth, he's created an _extremely large_ hole in the roof, and his momentum shows no signs of stopping."; } } "That would be like trying to pick a lock with a herring."; ;]; Object Sloth "Sloth" Atrium with name "sloth" "pink" "ball" "flesh" "mass" "name" "tag", initial "A giant hairless mass of pink flesh completely blocks the up and down escalators.", description "Yuck. Kinda of like a giant ~ball'O'flesh~. If you look hard enough you can make out vestigial limbs and features. You could probably make out more eventually, but you really don't feel motivated to look further. A small name tag pinned directly to the thing says cheerfully ~Hi! My name is: Sloth.~ As if you couldn't guess.", life [; default: "Sloth is to lazy to understand, let alone care about what you're doing. Much like your college roommate, actually."; ;], has animate static demon proper; Object fountain "fountain" Atrium with name "fountain" "pretty" "grey" "stone", initial "A grey stone fountain sits in the middle of the flowers, spouting prettily.", description "It's actually a really nice looking fountain. But as you move closer, you sense an incredible amount of heat radiating off it and realize what you took to be colored water is, in fact, molten lava. How lovely.", before [; Search: "The fountain is full of boiling lava."; Touch: "The heat rising off it makes you think twice."; Receive: if (noun == pliers) { if ((Sloth notin nothing) || (Escalators has general)) { print "Uh..better not. You never know when you'll find a use for a pair of pliers.";rtrue; } else { remove pliers; move handle to player; "You dip the pliers gingerly into the fountain and with a hiss and a cloud the blade dissolves, leaving you forlornly grasping only the handle. You've committed a wanton act of destruction. Happy now?"; } } else "Oh yeah. Destroy something now you may need later. Real smart. I swear, you'd be in so much trouble without me."; ; LetGo: "Any container you tried to pick up the lava in would melt instantly, including your bare hands.";], has static container open; Object flava "lava" fountain with name "lava", description "The fountain seems to be fed from the lake outside the window.", before[; Take: "Oh, please. Pick up boiling lava with your bare hands?";], has scenery; Object Out_WrongAid "Outside Wrong Aid Drugstore" with description "Ah yes. The bargain basement store. Every mall has one tucked away in some quiet little corner, and you've stumbled on one now. Lucky you. The storefront is done in ever so quaint fake brick, and the windows are papered over with a multitude of fliers and circulars. How quaint (read nauseating). You can enter this carnival of kitsch to the east, or return to the Atrium to the west.", w_to Atrium, e_to In_Wrongaid; Object -> storefront "storefront" with name "storefront" "brick", description "Fake brick tends to make me want to vomit. You?", has scenery; Object -> window "windows" with name "window" "windows" "posters" "fliers" "circulars", description "The posters are too faded for you to make out any words.", has scenery; Object In_WrongAid "Inside Wrong Aid Drugstore" with description "Ow! Everything in here is so white you almost need sunglasses to see. White, bare, sterile, and empty. Or maybe its just the glare off the white chrome shelves. When you get tired of blindness, you can head back out to the west.", w_to Out_WrongAid; Object dcounter "counter" In_WrongAid with name "counter", initial "A long white counter sits whitely here.", description "A long white counter appears to be molded into the floor here. Try as you might you cannot discern a single crack or joint.", has static supporter; Object osign "sign" dcounter with name "sign", description "One of those annoying little clock signs with the hands the person (or demon) can set to indicate when they'll be back. Judging from this, the clerk for this store will be back at around half-past next century.", before[; Take: "It appears to be fused to the counter.";], has static; Object hands "hands" In_WrongAid with name "clock" "hands" "big" "little", description "The little hand is on the ~quarter past~ mark. The big hand is on the ~next century~ mark. Judging from that I'd say this store will be unattended till then. Which would explain the conditions of the shelves, come to think of it . . . ", before[; Take : "But then how would people know when the clerk was coming back?"; Push, Pull : "Some force prevents you.";], has scenery; Object fishbowl "fishbowl" dcounter with name "fishbowl" "bowl", adjective "grey" "gray", description "A lovely gray fishbowl with something etched on the side you cant quite make out.", before[; Read: "You can't make it out, because if you could it'd be copyright infringment.";], has container open static; Object seed "seed" fishbowl with name "seed", adjective "single", article "a", description "A single seed. Not having a green thumb, that's all you know.", before[; Attack: "What is it with you and smashing things anyway?";]; Object dshelves "shelves" In_Wrongaid with name "shelves" "racks", description "They are so shiny white, they hurt your eyes to look at. And you can't tell if they have anything on them or not.", before[; Search, Examine : "Closing your eyes against the glow, you grope around and find nothing.";], has scenery; Object hole "hole" with name "hole" "dirt", initial "There is a large hole here.", description "A large hole has been cracked in the tile here. You're trying hard not to think about what caused it. Oddly enough though, the dirt underneath is the richest brown you have ever seen.", before[; Receive: if (noun == seed) { remove seed; move rose to hole; "With astonishing speed, the seed takes root, and grows into a beautiful rose.";}; "That would just get it dirty."; ], has container open transparent static; Object rose "rose" with name "rose", adjective "beautiful", article "a", description "The most beautiful red rose you've ever seen. Gwyneth would love it.", after[; Take: if (self hasnt general) { give self general; Achieved(8); "You pick the rose and smile at the thought of Gwyneth melting in your arms.";} "Done."; ]; Object Out_Acme "Outside Acme Novelties" with description "Oh now, this is in poor taste. Even for Hell. A mural depicting every lame gag that was ever played on anyone, anywhere dominates this storefront. Superimposed over the rubber chicken bit are the words ~Acme Novelty Company. The worst in jokes and novelties~. I'd advise you to hold on to your sanity if you go west, or perhaps retreat east to the relative tastefulness of the atrium.", w_to In_Acme, e_to Atrium; Object sfront "store front" Out_Acme with name "storefront" "mural" "rubber" "chicken" "bit", description "Some things are just too tacky for words.", has scenery; Object In_Acme "Inside Acme Novelties" with description "Well, actually this is better than the outside, only because there's nothing here. Racks and shelves are overturned willy nilly (Who is Willy Nilly, anyway?). A banner overhead reading ~GRAND OPENING SALE~ explains the source of the mess. Stick around if you like, or head back to the east.", e_to Out_Acme; Object tbanner "banner" In_Acme with name "banner", description "A banner. It says ~GRAND OPENING SALE~. Don't you read the room descriptions? Sheesh!", has scenery; Object -> racks "racks" with name "rack" "racks" "shelf" "shelves", description "A cursory examination of the racks and shelves reveals. . . racks and shelves! What a novel idea. Still, perhaps if you put some effort into it.", before[; Search: if (self has general) "They're empty now Einstein."; move packet to player; give self general; "Yada yada..blow dust..yada yada..small white packet.. yada yada... again with the no gold or jewels. Sigh."; ], has scenery; Object aclerk "clerk" In_Acme with name "clerk" "demon" "salesclerk" "salesgirl" "clothes", adjective "asleep" "disheveled" "unconscious" "beaten", initial "There's a demon salesgirl on the floor, unconscious.", description "Well, judging from the look of things they take sales seriously in Hell. The poor girl demon is badly bruised, her clothes are torn, and worst of all her name tag is nowhere to be found. She also seems to be talking in her sleep. And the general public hasn't even been allowed in here yet.", before[; Help: "Help yourself first.";], life [; Kiss: "Prince Charming you aint."; default: "The sales demon mutters something unintelligble.";], each_turn[; switch (random (3) ) { 0: "^The sales demon mutters something that sounds like: ~The shoes! The horrible pointy shoes!~"; 1: "^The sales demon mutters something that sounds like: ~$1.98 plus tax please.~"; 2: "^The sales demon mutters something that sounds like: ~One size fits all.~"; 3: print "^The sales demon mutters something that sounds like: "; switch (random (10)) { 0: "~curse...point..cursing.~"; 1: "~. . . Gluttony will eat anything. . .even things he shouldn't.~"; 2: "~. . .put Sloth on a fast track.~"; 3: "~. . .when Wrath gets angry he forgets himself.~"; 4: "~. . .Pride is only proud of his exterior. Look underneath.~"; 5: "~. . .Greed will try anything to get a dollar.~"; 6: "~. . .Lust can't control himself around sexy, submissive women.~"; 7: "~. . .there are some situations that Envy wouldn't want to be in- despite the consequences.~"; 8: "~. . .poetry is so romantic.~"; 9: "~. . .roses are so beautiful.~"; 10: "~. . .romantic music makes for such a nice night.~"; } } ;], has animate static demon proper; Object packet "packet of Stomach Quake pills" with name "packet" "pills", article "a", description "The picture on the front of the packet shows someone vomiting while all his friends point and laugh. ~Stomach Quake pills. Guaranteed to upset even the strongest stomach.~ Sounds like a great time if you enjoy vomiting.", before [; Open: move qpill to player; remove self; "You rip open the packet, and dispose of it in the proper receptacle. Looks like you were a victim of false advertising though. Instead of the pills proclaimed on the packet, a single pill comes to rest in your palm."; ], has openable; Object qpill "small white pill" with name "stomach quake" "small" "white" "pill", article "a", description "Little. White. Different. Induces vomiting.", before [; Eat: "You want to vomit? Cause that's sure as hell (pardon the pun) something I don't want to watch. So, no."; Attack: if (second == 0) "You don't seem to be strong enough. Wuss."; if (second == hammer) { remove self; move powder to player; "You smash the pill to almost invisible fragments with the hammer. Yet you still manage to keep the resulting powder visible and together. You stud."; } "That would be like trying to pick a lock with a herring."; ]; Object powder "small quantity of white powder" with article "a", name "small" "quantity" "white" "powder", description "Little. White. Powder. Induces vomiting.", before [; Eat: "You want to vomit? Cause that's sure as hell (pardon the pun) something I don't want to watch. So, no."; ]; Object Out_Pets "Outside Pets from Hell" with description "A quaint old fashioned pet store with an awning and big bay windows. Actually, its very old. And dusty. Maybe it's closed?", n_to[; if (hellhound notin nothing) "The Hellhound moves to block your entrance. Wanting to keep what brains you have inside your skull, you back off."; "The store is closed, remember?";], s_to Atrium; Object pdoor "door" Out_Pets with name "door" "store", description [; if (hellhound notin nothing) "The hell hound snarls and spits as you try to take a closer look at it. Choosing the better part of valor, you back off."; "The door is closed and locked, as is the shop behind it.";], has scenery door locked; Object pwindow "windows" Out_Pets with name "bay" "window" "windows", description [; if (hellhound notin nothing) "Hey, wait a minute. There are PEOPLE in the store!. Seeing you look at them through the windows, they hold up signs: ~Please Help us!~, ~We cant get out!~, ~Beware of dog!~ (though that one does seem a tad redundant.)"; "The windows are dark and empty."; ], has scenery; Object pawning "awning" Out_Pets, with name "awning", adjective "blue", description "A blue awning reading ~Pets from Hell~.", has scenery; Object hellhound "hellhound" Out_Pets with name "hellhound" "hound" "dog", initial "A very large dog is snarling and salivating here, leashed to the store door.", description "Remember your neighbors pit bull? The one that scared the crap out of you as a kid? Well, he has a big brother- and big brother has been to the gym.", life [; Ask, Tell, Answer: "You're one of those sappy people who talks to animals, aren't you?"; Kiss: "You've kissed some dogs, I admit, but that would be going too far."; Show: if (noun == bone) "The hellhound lunges for the bone. You barely snatch your arm back before its bitten off."; Give: if (noun == bone) { remove hellhound; remove bone; move collar to player; "You toss the bone to the Hellhound gingerly, and avert your eyes. You hear a snap, some slobbering, and then a thud. Risking a peek, you see the hellhound dead on the floor, a bone shaped lump in its throat. The people trapped inside the store notice this as well, and burst out of the store cheering. They roast the body (oddly enough, it tastes like chicken), carry you around the mall on their shoulders, and present you with the thing's collar as a trophy before closing the store and heading off to a well deserved rest."; } default : "The hellhound lunges, barely restrained by the leash.";], each_turn [; switch (random (3) ) { 0: "^The hellhound growls evilly."; 1: "^The hellhound looks at you. Now you know how kibble feels."; 2: "^The hellhound yawns, revealing a lot of very sharp teeth."; 3: "^The hellhound strains at the leash."; } ], has animate static transparent; Object collar "dog collar and leash" hellhound with name "collar" "leash", description "It's a dog collar and leash. It'll never make the cover of DQ (Demon's Quarterly)", after [; Wear: "You put on the dog collar, and adjust the leash so it hangs over your shoulder. Actually, it feels kind of cool."; ], has clothing; Object Out_Hell "Outside Hell Of A Workout" with description "Oh, a gym. Considering the last exercise you got was lifting beer glasses, perhaps you should go in to the north. On the other hand, between the relentlessly cheery decor (Is it just me or do demons and rainbows make a really odd mix?) and the horrendous sounds being blared over a p.a. perhaps you should exercise the better part of valor and return to the movie theater to the east, or the novelty store to the south", before[; Listen: print "Oh my God! It's terrible..its too horrible to contemplate. "; switch (random (5) ) { 1: print_ret "It's Richard Simmons!!!"; 2: print_ret "It's Air Supply!"; 3: print_ret "It's Anne Murray!"; 4: print_ret "It's The Carpenters!"; 5: print_ret "It's Yanni!"; }; ], e_to Hells_Octoplex, n_to In_Hell, s_to Hells_Hardware; Object uw_machine "unholy water machine" Out_Hell with name "unholy" "water" "machine", article "an", initial "A vending machine sits quietly in the corner.", description "A standard soda vending machine, buttons and all, modified to dispense some concoction called unholy water.", before[; Search: <>;], has supporter static transparent; Object button "row of buttons" uw_machine with name "button" "buttons" "row", description "I really don't know why they bother putting a row of buttons on the thing when they all promise the same brand anyway.", before [; Push: if (self hasnt general) { give self general; move bottle to player; "With a hum of lights and a twinkly sound, a bottle of unholy water materializes itself in your hands.";}; if ((Pride notin nothing) && (parent(bottle)== null)) {move bottle to player; "With a hum of lights and a twinkly sound, a bottle of unholy water materializes itself in your hands.";} "All you get is a clicking sound. Must be empty."; ], has scenery; Object bottle "bottle of unholy water" with name "bottle" "plastic" "label", article "a", description " A large clear plastic bottle, containing a dark liquid. The label has a pitchfork on it.", before[; Receive: "You have a nasty feeling you'd lose whatever you put in there."; LetGo: "You couldn't hold the water outside of the container, and not just because it would dissolve the flesh off your bones.";], has container transparent openable; Object water "unholy water" bottle with name "water", article "some", description "Well, this looks appetizing. Not.", before[; Take : "You can't bring yourself to touch it."; Smell: "Yuck."; Drink: "Eww. You wont even ~do the Dew~ and this stuff looks way grosser than that."; Pour : if (second == 0) "The water stays in the bottle, unwilling to move."; if (second hasnt binc) "You have a feeling that pouring that stuff on anything might be damaging."; move water to bin; remove bottle; "You pour the stinking, hissing water into the bin. You toss the bottle in as a test and watch in horror as it dissolves. You idly wonder why the outside of the bottle dissolves and not the inside, but then you realize it's just one of those things.";]; Object In_Hell "Inside Hell of a Workout" with description[; print"You find it hard to tell wether you've walked into a gym or a torture chamber, unfamiliar as you are with the equipment used in either. Spikes and chains and racks abound, most covered with sweating, grunting demons. You can flee the testosterone soaked air to the south."; if (parent (rtape) == rslot) "^Something is different inside here, but you can't put your finger on it."; new_line;rtrue;], before[; Listen : if (parent(rtape) == rslot) "How odd. You hear soft romantic music. It seems to be coming from the rusty robot."; "You just hear the dreadful sounds coming over the p.a. system."; Smell: "Sweat and old gym socks. Lovely.";], s_to Out_Hell; Object equipment "equipment" In_Hell with name "spikes" "chains" "racks", description "Not sure what it does, you decide to stay away from it. Besides its not your idea of fun. Now maybe if Gwyneth was on it.. in a ripped dress..", has scenery; Object robot "rusty old robot" In_Hell with name "robot" "sparotron", adjective "rusty", description "A rusty old sparring robot, the sparotron (the name visible in rusty letters) was probably the top of the line once. Now it just sits in the corner and lets people beat the crap out of it. Brings back memories of your last job, actually. It's humanoid, if rusty, and has a slot in the back of its head.", has scenery; Object rslot "slot" In_Hell with name "slot", description "It's a slot. It's big enough to hold a cassette tape.", before[; Receive: if ((noun~=rtape) && (noun~=itape)) "Gee, the slot is the size and shape of a cassette tape. My money is on it holding only cassette tapes, buddy."; if ((child(rslot) == rtape) || (child(rslot) == itape)) "Already got something in there, don't we?"; if (noun == itape) { remove Wrath; remove robot; remove itape;remove rslot; Achieved(3); "The ~World's Worst Insult's~ tape slides in with a click, and almost immediately, the insults start coming out of the android's speaker. Such zingers as ~Your mother eats hockey pucks.~ and ~Your dog is _so_ fat.~ , while not doing anything to you seem to push Wrath's buttons. While sneering the classic response of ~Oh Yeah!~, Wrath double's and triples his attacks on the poor robot, which of course responds in kind. This arms race escalates, and escalates as you watch in horrified amazement until it reaches the inevitable critical mass and both Wrath and the robot disappear in an explosion, sending rust flakes everywhere."; }; LetGo: move rtape to player; if (rtape has general) "You take the tape out. Big deal."; else { give rtape general; Achieved(9); "You pop the romantic tape out of the sparotron. Gwyneth is gonna love this!"; }; ], has scenery container open transparent; Object rtape "tape of romantic music" rslot with name "tape" "music", article "a", adjective "romantic", description "Wow! This tape contains all of Gwyneth's favorite songs!"; Object Wrath "wrath" In_Hell with name "wrath" "demon" "name" "tag", adjective "small" "tiny", initial "A very small demon is beating upon a rusty robot here.", description " You saw this movie once: ~Taxi Driver~. Robert DeNiro played this sort of psychotic taxi driver. Well, if something shrunk him to roughly Smurf size, he'd be a carbon copy of the demon you see before you- same receding hair, same sunglasses, same bad attitude. In fact, the only thing different is the small name tag pinned to the things shirt which reads ~Hi! My name is: Wrath.~", life[; Tell, Answer: "~You talking to me? You talking to me? I don't think so.~"; Kiss: "The very prospect scares you."; Ask: switch (second) { 'robot', 'fight', 'fighting': "~Yeah, I'm fighting this . He started something. You start something, I'll kick your too!~"; 'romantic', 'music': "~That stuff is for wusses.~"; 'me', 'exit': "~You aint ever gonna go the home unless you get rid of me, pal. And that just ain't happening.~"; 'he', 'himself', 'it', 'itself': "~Yeah, I'm Wrath. Wanna make something of it ?~"; default : switch ( random (3) ) { 1: "Wrath ignores you, launching a series of devastating blows on the sparotron instead."; 2: "Wrath advances on you slowly. ~You better take that back you .~ Not sure exactly what you said, but not wanting to end up as dented as the robot, you stammer out an apology."; 3: "Wrath swings his fists wildly, and you jump back."; }; } Attack: "Considering that Wrath's fists can dent steel, you aren't even remotley tempted to give him an excuse to dent flesh."; Show, Give: "You better not. If he has a bad reaction to that, it would be bad for your health."; default: "Wrath ignores you, too busy beating up on the robot.";], has animate static demon proper; Object itape "tape of ~The world's worst insults~" In_Acme with name "tape" "insults" "insult", article "a", adjective "dusty", initial "A dusty cassette tape lies in a corner, overlooked by the mob.", description "According to the label this tape contains the world's worst insults. And not worst as in most stinging, worst as in just plain bad."; Object Hells_Hardware "Outside Hell's Hardware" with description "Well, here's a surprise. The tools and displays in the windows of this store look normal. Then again, considering all the scary devices that can be made with normal tools, perhaps they didn't see room for improvement. You can enter tool hell to the west, or visit the other shops to the north and south.", n_to Out_Hell, w_to In_Hard, s_to Veronicas_Secret; Object hwindow "window" with name "window" "tools", description "Tools. Cant really describe them better than that. After all, I've always been one to call a spade a spade. And a hammer a hammer, for that matter.", has scenery; Object In_Hard "Inside Hell's Hardware" with description "Well, you suppose this is what a hardware store looks like; considering the only time you've seen one is on television. Racks, shelves, tools, screws. Nothing you have the slightest clue about, or interest in. You may escape tool hell to the east.", e_to Hells_Hardware; Object hracks "racks" In_Hard with name "racks" "shelves" "tools" "screws", description "Not wanting to admit you have no clue what you're looking at, you feign disinterest.", has scenery; Object counter "counter" In_Hard with name "counter", description "It's a counter. It has a sign on it. The sales demon stands behind it. That's really all there is to it.", has scenery; Object sign "sign" In_Hard with name "sign", description "It reads: ~Ask about our eternity guarantee.~", has scenery; Object norm "Norm" In_Hard with name "demon" "Norm" "salesclerk" "sales demon", initial "A demon stands behind the counter, ready to service your every tool need.", description "A fat, balding, bearded middle-aged demon, dressed in jeans and a flannel shirt (Isn't he hot in that?). Oddly enough he seems familiar.", life[; Tell, Answer : "I don't think he cares really, don't feel bad."; Kiss : "Not only is he a demon, he's a guy demon. You aren't even tempted."; Ask: switch (second) { 'him', 'himself', 'it', 'itself', 'Norm': "~Hi! I'm Norm. Feel free to ask me anything about tools.~"; 'store', 'tools': "Norm begins to spout off about tools, and you doze off."; 'hammer', 'pliers', 'hammers': "~Ahh, our hellish line. Our best line, comes with our eternal guarantee.~"; 'screw', 'screws', 'nail', 'nails', 'saws', 'saw', 'wrench', 'drill', 'level' : "Norm looks kind of embarassed. ~Um, we're out of stock on those right now. I can get one for you next week.~"; 'guarantee', 'eternal': "~If a hellish tool is destroyed for any reason, we will give you another one free. This week, all replacement tools will be hammers. Not to worry though. It'd take at least the tempature inside a volcano to affect one of MY tools!~"; default: "~Sorry. If its not about tools, I can't help you.~"; }; Show, Give: if ((noun == hammer) || (noun == pliers)) "Norm takes it from you and looks it over with pride. ~Yes sir, that's one of ours.~"; if (noun == handle) { move hammer to player; remove handle; "Norm looks at it in shock. ~What the hell did you do to my tool!~ he screeches. Then, he sighs and hands you a hammer. ~Oh well, here's your replacement.~"; } default: "Sorry. If its not about tools, I can't help you."; ;], has static animate proper; Object Veronicas_Secret "Outside Veronica's Secret" with description "Ah, the lingerie shop, that temple of the feminine mystique. Not that you've ever been inside one. In fact, unless you get yourself out of this jam, the odds of you seeing inside another one are very slim indeed. You can stand here and admire the windows, go in to the south, or check out the rest of the mall to the east or north.", n_to Hells_Hardware, e_to Offices, s_to In_Secret; Object windows "windows" Veronicas_Secret with name "window" "windows", description "Big display windows containing demonquins in lingerie.", has scenery; Object dquins "demonquins" with name "demonquins" "mannequins" "lingerie", description "You're getting aroused from looking at the scantily clad demons. You pervert.", has scenery; Object In_Secret "Inside Veronica's Secret" with description "Wow. You're surrounded by racks and shelves containing things you've never seen anybody wear. Not even in those movies under your bed you think nobody else knows about. There's a small fitting room to the south, and when you get tired of having to walk sideways you can head back to the mall to the north.", n_to Veronicas_Secret, s_to fitting_door; Object fitting_door "mirrored fitting room door" with name "door" "mirror", adjective "mirrored", description "It's a full length door with a mirror on it.", door_to[; if (location == In_Secret) return fitting_room;return In_Secret;], door_dir[; if (location == fitting_room) return n_to; return s_to;], found_in fitting_room In_Secret, before[; Open : if (pride notin nothing) "Pride shoves you rudely aside. ~Do you mind? I'm looking at the best looking guy in the universe.~"; ], has door openable ~open static; Object fitting_room "Fitting room" with description "Well, there's good news, and there's bad news. The good news is there seems to be nothing dangerous in this room. The bad news is that it is still bigger than your apartment.", n_to fitting_door; Object catsuit "catsuit" fitting_room with name "catsuit" "suit", article "a", initial "A sleek black catsuit with matching boots hangs on the wall.", before[; Wear:if (jacket has worn) "Putting on the catsuit over the jacket is probably a bad fashion move."; if (location~=fitting_room) "You're a little too shy to strip in public. Even if nobody's watching."; give self worn;"You remove your clothes and put on the catsuit and boots. It feels a little too good."; Disrobe: if (location~=fitting_room) "You're a little too shy to strip in public. Even if nobody's watching."; give catsuit ~worn; "You carefully take the suit and boots off and hang them back up. You make a mental note to buy one when you get home. For Gwyneth..yeah that's it, for Gwyneth.";], has clothing; Object pride "pride" In_Secret with name "pride" "demon" "suit", adjective "balding" "ugly", initial "A balding, ugly demon is admiring himself in the mirror on the fitting room door.", description "Judging by the narssissitc way this demon is hogging the mirror, you'd expect him to be the satanic equivalent of Brad Pitt. This isn't the case. He's short, fat, balding and wearing a leisure suit that even you know is out of date. And pinned to the lapel is a name tag reading ~Hi! My name is: Pride.~", life[; Kiss: "Pride presents his ring to you. ~I accept your adulation.~"; Answer, Tell: "~That's boring. Let's talk about me instead.~"; Show, Give : "Pride sniffs disdainfully. ~Oh please. Like there's anything YOU would have that I want.~"; Ask: switch (second) { 'himself', 'itself', 'demon': "Pride begins to talk about himself. Luckily, he shuts up before your ears begin to bleed."; 'me': "~Ok, lets talk about you. What do you think of me?~"; 'exit':"~Why would I want to leave, I like it here.~"; 'Lucifer', 'devil': "~Great guy. Almost as good looking as me.~"; default : switch ( random (3) ) { 1: "Pride suddenly blinks. ~Oh, I'm sorry. I wasn't listening I was thinking about me.~"; 2: "Pride natters on about himself till you are heartily sick."; 3: "Pride looks at you. ~I wish I was you. That way I could appreciate me all over again.~"; }; }; default: "Pride ignores you, preferring the sight of his own reflection.";], has animate static demon proper; Object alarm "fire alarm" In_Secret with name "alarm" "fire", initial "A fire alarm on the wall catches your eye.", description "Its kind of hard not to notice this alarm. It's a big alarm, its bright red, and it says on it ~FIRE ALARM. DO NOT PULL~ in big letters.", before[; Pull: print "You yank the alarm, and immediately you are assaulted by the most ear splitting noise imaginable. "; if (parent(water) == bin) { remove water; print "Black tepid water bursts out of the sprinkler. Pride merely waves a hand and the water deflects off of him and all over you. ";} if (parent(hwater)==bin) { if (pride in nothing) { remove hwater; "The water splashes. Yawn. The siren shuts off. Big deal."; } remove hwater; remove pride;Achieved(4); "Clear, sparkling water bursts from the sprinkler in the ceiling. Without breaking gaze from the mirror, Pride waves a hand, intending to deflect it. Much to his chagrin, that doesn't work, and the water splashes down over him. He shrieks for a moment, then straightens up and glares as he realizes its not enough holy water to really hurt him. A minute later that turns to extreme embarrassment as his outfit evaporates from the contact. Cupping his hands over his _extremely small_ genitals, Pride slinks away."; }; "A moment later, the racket ceases."; ], has static; Object Offices "Outside the mall offices" with description "Not much here, just a little hallway leading south to the mall office. More interesting sites lie east and west.", w_to Veronicas_Secret, e_to Out_Hworld, s_to In_Offices; Object john "calculating john" Offices with name "john" "demon", adjective "calculating", initial "Calculating John is here fussing and fuming over a large machine.", description "A small demon in a hideously checkered suit, Calculating John never the less projects an air of confidence, likeability and trustworthiness. Not a lot of trustworthiness, true, somewhere above a used car salesman but below a politician. Still, given the fact that he's a demon, any trust at all is impressive.", life [; Tell, Answer: "Calculating John nods in a friendly manner, but it soon becomes obvious he's not really paying attention."; Ask : switch (second) { 'him', 'itself', 'himself': "~Well howdy there friend, I'm calculating John. You just talk to me and all your troubles will be gone.~"; 'machine', 'device': "~Well, now friend, I'm darn glad you asked that. Darn glad. This here is my amazing 'un-un' machine. Think about it, friend- every bad thing in life begins with 'un'. So, this machine gets rid of the un, and the bad things go away. Why, before I used this machine, I was unhealthy, unhappy and unloved.~ Here, he waves an arm to indicate the trio of succubi, and gives you a wink. ~And just look at me now. You don't believe me, son I'll let you try for yourself.~"; 'unholy water', 'unimportant paper': "~Go on son, try them and see.~"; 'exit': "~Why would you ever want to leave?~"; 'me': "~Well son, you look like a man who needs my help.~"; 'succubi', 'women': "Calculating John leans in and in a conspiratorial whisper says ~They cant get enough of me.~"; default: "Calculating John begins a spiel. You're not sure you follow, but you find yourself nodding agreement anyway."; } Kiss, Attack: "You think about it, and decide not to."; Show, Give: "Calculating John looks it over, and hands it back. ~Well, bless your generous heart son, but I've got everything a demon could want right here.~"; ], has static animate demon; Object succubi "succubi" Offices with name "succubi" "women" "succubus" "woman", adjective "beautiful", initial "A trio of scantily clad succubi are hanging on Calculating John's every gesture.", description "MMM..soft white skin.. long blonde hair.. deep blue eyes...nearly naked. I'm sorry, what were you looking at again?", life [; Kiss: "Although you want to, you really really want to, you control yourself. I'm proud of you."; default: "The succubi just giggle brainlessly.";], has animate static demon; Object machine "machine" Offices with name "machine" "compartment", description "Wow, this looks complicated. Lots of lights and buttons and tubes. There's a small compartment where you suppose whatever is to be put in the machine goes.", before[; Receive: if (noun == player) "Not unless you lose a lot of weight, pal."; if ((noun ~= bottle) && (noun ~= paper)) "Calculating John slaps you on the back. ~Weren't you listening son? my little gizmo only works on things that begin with 'un'.~"; if (noun == bottle) { remove bottle; move hbottle to player;}; if (noun == paper) {remove paper; move ipaper to player;}; "As soon as you place it inside the machine, you wonder if you made a mistake, for its sucked in with a ~woosh~ and the machine begins to spin and hum and twinkle. The lights and noises get brighter and brighter and louder and louder until your forced to close your eyes an cover your ears. When you open them again, the machine seems to be unchanged. You take your 'un-un'ed item out of the machine and look at it skeptically.";], has scenery container open transparent; Object ipaper "important piece of paper" with name "paper", adjective "important", description "It's a lost Shakespeare sonnet. About Gwyneth! Wow!", before [; Examine: if (self hasnt general) { give self general; Achieved(10); "It seems to be a poem of some sort. Why, it's a sonnet! A Shakespearian sonnet about Gwyneth. And one that's never been seen before!"; };]; Object hbottle "bottle of holy water" with name "bottle", article "a", description "The bottle has changed. The label now has a picture of a bottle surrounded by a glowing halo, and the water inside looks clean and delicious.", before[; Receive: "The bottle is pretty full already."; LetGo: "The water is holy, but not so holy that it will hold its shape out of the container.";], has container openable transparent; Object hwater "holy water" hbottle with name "water", article "some", adjective "holy", description "The water is clean and delicious looking. It seems to glow with an inner radiance.", before[; Drink : if (hbottle hasnt open) "It's a little difficult to drink from a closed bottle, genius."; "You take a small sip, and feel sanctified."; Pour, Insert: if (second == 0) "What, and waste it?"; if (second hasnt binc) "No point getting that wet."; move hwater to bin; remove hbottle; "You pour the holy water into the bin. The bottle does the holy thing and recycles itself."; Take: "Its holy, but not so holy you can hold on to it once it leaves the container."; ThrowAt: if (second has demon) "That's a bad idea for three reasons: First- because the demons around here can easily ward off any attack they see coming. Second, because such a small amount of holy water would do almost no damage to a demon. It might dissolve an artifact or two, but that's about all. Third, because such a small amount of holy water would do almost no damage to a demon. It might dissolve an artifact or two, but that's about all. Yes, I know that's actually only two reasons, but the second was so important, I felt it bore repeating."; "Who do you think you are, the Pope?"; ], has transparent; Object In_Offices "Inside the mall offices" with description "Inside the mall closet is more like it. A very small, nondescript room, it seems to hold the safety system for the mall, which takes up almost all the room in the room. The only exit is to the north.", before[; Listen: "If only you'd listened to me yesterday. Someday you'll learn.";], n_to offices; Object bin "bin" In_Offices with name "bin", initial "A large bin marked ~sprinkler system~ is here.", description[; print "A large bin, clearly marked ~Sprinkler system reserve~. "; if (parent (water) == bin) "It seems to be filled with brackish, stinking water."; if (parent (hwater) == bin) "It seems to be filled with clean, pure water."; "Unsurprisingly, it is empty.";], before[; Receive: if ( (noun ~= water) || (noun ~=hwater) ) "You can only put liquidy things in the bin";], has container static open transparent binc; Object safe_system In_Offices with name "safety" "system", description "It looks very complicated. You'd better not touch.", before[; Touch: "Dangit, I just told you not to do that! You never listen.";], has scenery; Object mop "mop" In_Offices with name "mop" "head" "wig", initial "A discarded mop head sits in the corner.", description "Hmm..oddly enough, this mop head resembles a dirty blonde wig.", After[; Take : mop.initial=NULL; Wear: "You adjust the mop wig on your head giving you the illusion of long, scraggly, filthy blonde hair."; ], has clothing; Object Hells_Octoplex "Hell's Octoplex" with description "You're standing in front of a large multiplex. Movie posters line the walls, and there's a marquee overhead listing today's attractions. Though given where you are, I'd suspect the film choices here to be dubious at best. Respite can be found to the east or west, or back down the escalators. Or you could go in past the ticket booth to the ne- but to do that, you'd need to have a ticket.", d_to Escalators, e_to Out_FCBH, w_to Out_Hell, u_to "You're on the top floor already! Pay attention!", ne_to[; if (lust notin nothing) "Lust rudely shoves you back. ~No cutting the line!~"; return booth; ]; Object mposters "posters" Hells_Octoplex with name "posters" "marquee", description "~Liquid Sky~, ~Turbulence~, ~Legend of Greystoke~. Well if you hadn't known you were in hell before, you'd know now; cause only people who like torture would watch these wastes of film.", has scenery; Object carpet "carpet" Hells_Octoplex with name "carpet" "hair" "fringes", adjective "red", description "It seems at first glance to be a soft red carpet. Only when you look closely, do you realize what it's made of. Looks like you've discovered the cause of male-pattern baldness. You don't even want to think of what the curly fringes at the side of the carpet are made of.", has scenery; Object booth "Ticket Booth" with name "ticket" "booth", description "It's a little booth that sells and takes tickets. Its manned by a small green demon.", sw_to Hells_Octoplex, n_to [; if (Envy notin nothing) "Envy pushes you back, saying ~Ticket please.~"; return home;]; Object Envy "Envy" booth with name "envy" "demon", initial "A small demon is behind a counter taking tickets.", description "A very green demon with red eyes, it looks hungrily at everyone who passes by. It's not wearing anything except the usual name tag which reads ~Hi! My name is : Envy (though I wish it wasn't)", life[; if ((Wrath notin nothing) || (Greed notin nothing) || (Gluttony notin nothing)) "No time for movies, you still have work to do!"; remove envy; Achieved(7); move alcove to booth;move esign to booth; "As soon as Envy looks at you, it bursts out laughing. ~You're him, aren't you? The idiot mortal that made that bet with the boss.~ Envy falls off his stool laughing. ~Oh man, I would so _NOT_ want to be you.~ Realizing the implications of what he has just said, Envy attempts to backtrack, but its too late and he vanishes in a puff of conflicting logic. As soon as he disappears you notice a little alcove to the north with a sign above it reading ~Exit.~"; ], has scenery animate demon; Object alcove "alcove" with name "alcove", initial "You suddenly notice a dimly lit alcove to your north, with a sign hanging above it labeled ~EXIT~.", description "Who cares what it looks like? It's a way out!"; Object esign "sign" with name "sign", description "You never would have thought an exit sign could be beautiful. Until now.", has scenery; Object Home "Your apartment" with description [; deadflag=2; print "As you enter the alcove, there's a blinding white light, so bright that you have to close your eyes. When you open them, you are back in your familiar, comfortable, messy apartment. Every trace of the Mall of Hell is gone."; if (score >71) print " . . except for Gwyneth's presents. Lucifer seems to have kept his word."; print "^^Suddenly, the doorbell rings. Your heart leaps into your throat. "; print "^It's Gwyneth! She smiles at you, ~Hi honey, ready for our date?~"; if (score >71) print "^^You give Gwyneth her presents, and she just melts in your arms. She kisses you gently, and says ~Lets just stay in.~^"; "^^You smile, content. And then your eye falls on a brief note on the end table(in red ink on black paper) which reads ~You win this time. See you soon.~ The signature is all too familiar. . .";]; Object dsoul "soul" Hells_Octoplex with name "soul" "woman", adjective "damned", description "A rather pretty soul stands here, pale and wan. She is beginning to crack under the strain of being hit on by Lust.", life[; default: if ((catsuit has worn) && (collar has worn) && (mop has worn)) "Lust promptly gives up on the poor soul he has been hitting on, and turns his attention to you. ~Gimme a kiss, babe.~"; "Lust shoves you away. ~I'm talkin here!~"; ], has animate static proper scenery; Object lust "Lust" Hells_Octoplex with name "Lust" "demon" "name" "tag" "suit" "white", initial "A sleazy looking demon is here, holding up the ticket line by chatting up the tired looking soul at its head.", description "Gah. Even looking at this guy makes you want to shower. Even at your horniest, you never gave off one-tenth of the slime this guy does. His look, his stance, his tone of voice all radiate sleaze. And sure enough on the slimy white suit (and don't ask me how a white suit can be slimy) is a small name tag reading ~Hi! My name is : Lust", life[; Show, Give : "Lust doesn't even look. ~Not interested.~"; Ask, Tell: if ((mop has worn) && (collar has worn) && (catsuit has worn)) { print "Seeing you're an attractive female, Lust tries a pickup line: "; switch (random (8) ) { 0: "~Nice shoes. Wanna fuck?~"; 1: "~I'm related to Fred Flinstone baby- I can make your bed rock.~"; 2: "~Aren't you tired? You've been running through my mind all day.~"; 3: "~I lost my phone number. Can I have yours?"; 4: "~That suit looks good on you. It'd look better off you.~"; 5: "~I'm a virgin. Corrupt me.~"; 6: "~You know how you're naked under your clothes? How'd you like to be naked under mine?~"; 7: "~Did it hurt? When you fell out of Heaven?~"; 8: "~Remember my name, you'll be screaming it later.~"; } } "Lust wont even talk to you cause he knows you're male."; Attack: "Not a good idea. He may think you want something else- if you know what I mean."; Kiss: if ((mop has worn) && (catsuit has worn) && (parent(collar) ~=player)) "Lust looks at you critically. ~Not bad, but I like my women a lot kinkier.~"; if ((mop has worn) && (collar has worn) && (parent (catsuit) ~=player)) "~You're a strange man. You scare me.~"; if ((mop has worn) && (collar has worn) && (catsuit has worn)) { remove lust; Achieved(6);move ticket to player; "Reminding yourself that this is for Gwyneth, you draw Lust to you and plant a big wet one on him. Lust stiffens, trembles, and when he draws away there is a noticeable damp stain on the front of his pants. Embarrassed, he slinks off. The line for tickets begins to move faster, and the soul Lust was talking to gives you her ticket out of gratitude.";} "~Not on your life. I don't swing that way.~"; default: switch (random (3) ) { 0: "Lust casually buffs his nails on his white suit."; 1: "Lust slicks his comb-over back."; 2: "Lust leans in to hit on the pour soul in the ticket line. You can smell his garlic breath from here."; 3: "Lust reaches down and adjusts himself. How classy."; } ], has static animate demon proper; Object ticket "movie ticket" with name "ticket", description "A ticket for the movie ~Liquid Sky~. Be afraid- be very afraid."; Object Out_FCBH "Outside the First Circle Bank of Hell" with description "Directly to your north is a set of smoked glass double doors inscribed with a flaming gold circle with the words ~First Circle Bank of Hell~ inscribed underneath. Looks impressive- too bad you don't have any money. Stores lie to the west and south.", w_to Hells_Octoplex, s_to Out_Hsports, n_to "As you approach the doors a snotty, but well dressed demon pops his head out, looks at you and says ~Come back when you have enough money to be worth our while.~"; Object atm "Automatic Teller Machine" Out_FCBH with name "atm" "teller" "machine", initial [; if (greed notin nothing) "An ATM machine is here, spewing dollar bills like a miniature windstorm."; "An ATM sits quietly in its niche."; ], description "This is the state-of-the-art technology, requiring retinal scan, DNA scan, blood type, and fingerprint matching. Lot of trouble. Good thing you don't have an account.", before[; Search: "As you step close to the ATM a stern voice booms out (sounding oddly like James Earl Jones): ~Halt mortal. You do not have an account. Therefore, you cannot approach.~"; ], has static; Object greed "Greed" Out_FCBH with name "little" "green" "ball" "greed" "name" "tag" "dodge", adjective "hyper" "dodge" "kinetic", initial "What appears to be an animate, hyper kinetic dodge ball is snatching dollar bills from the storm.", description "You remember those ugly red and green dodge balls you used to play with in gym? Well, imagine someone took one of those and attached little arms and legs and a face, and gave it the ability to move and speak. And then imagine someone fed it Jolt cola laced with amphetamines! The resulting bouncing green thing would eerily resemble what you see here. Its bouncing and stretching, grabbing every dollar bill coming out of the machine, bouncing high to make some incredible grabs, all the time screaming ~Mine! Mine! Mine! in the most annoying voice imaginable. Through the blur you can just make out a name tag that reads ~Hi! My name is: Greed.~", life [; Kiss: "Greed is moving so fast, you can't get a liplock. Though I've no idea why you'd want to."; Show , Give : "Realizing that you'd only lose it, you wisely reconsider."; default: switch (random (2) ) { 0: "Greed ignores you, intent on grabbing the money spinning in the air."; 1: "Greed makes a truly impressive leap to snag some money."; 2: "Greed bounces by your head, making you duck."; } ], has animate static demon proper; Object storm "storm of money" Out_FCBH with name "storm" "bills" "money", initial "A miniature tornado appears to be emanating from the ATM machine.", description "The ATM is spitting out ten dollar bills so fast it has created a miniature windstorm.", before [; Take: "Every time you reach for a bill it seems that Greed gets there first, stretching his arms and legs to impossible levels, making jumps that carry him dangerously over the guard rail. Or maybe you're just too slow."; ], has static; Object Out_Hsports "Outside Hell's Republic" with description "At first glance, it would seem that you're standing in front of a snotty English sporting goods store, as the display window displays a group of impeccably dressed folks on horses surrounding a fox moving in for the kill. Unfortunately, when you look again, you realize that the ~people~ on the horses are demons and the ~fox~ is some poor schlub in a costume. You can beard the lion in his den to the east, or pursue less athletic venues to the north and south.", n_to Out_FCBH, e_to In_Hsports, s_to Out_HWorld; Object In_Hsports "Inside Hell's Republic" with description "Gah. The atmosphere is even _more_ rarified in here. Filled with clothes you wouldn't be caught dead in (you hope) and probably couldn't afford. I mean, you think hunting is cruel even when you aren't going to be the most likely target. Relative safety lies to the west, though in this case it's more like jumping from the fire back into the frying pan.", w_to Out_Hsports; Object lclerk "clerk" In_Hsports with name "man" "clerk" "demon" "salesclerk" "salesdemon" "name" "tag" "nolan", adjective "balding" "bespectacled" "snooty" "tall" "thin" "elegant", initial "A snooty salesdemon does his best to ignore you.", description "He's a tall thin demon, impeccably dressed in some of the stores best merchandise. He has glasses, though they only serve to magnify the disdain in his eyes. He has a razor sharp nose, over which, you suspect he looks down at those parts of the world that don't seem to live up to his standards. My guess would be that you'd be included in those parts. He has an elegant name tag reading ~Salutations! My name is Nolan~", life[; Tell, Answer: "~I'm afraid I cannot help sir with that.~"; Ask: switch (second) { 'me', 'him', 'himself', 'itself': "~Sir is asking questions I cannot answer.~"; 'store', 'clothes', 'racks', 'shelves', 'money', 'cost': "~Sir can not possibly afford our fine merchandise.~"; 'display', 'dog', 'man', 'demon', 'mannequin', 'demonquin': "~I put that display together myself.~"; default: "Somehow, Nolan manages both to ignore your request, and make you feel bad for making it."; } Show, Give : "~He sniffs disdainfully. ~Sir needs to shop here more.~, under his breath, he adds ~if sir can afford it.~"; Kiss, Attack :"~That sort of thing is not permitted in here.~"; default : "Somehow, Nolan manages both to ignore your request, and make you feel bad for making it.";], has proper animate demon static; Object sracks "racks" In_Hsports with name "racks" "shelves" "clothing", description "You're a typical guy. You wouldn't be caught dead in any of the stuff for sale here. Unless Gwyneth wanted you to wear it.", has scenery; Object display "floor display" In_Hsports with name "floor" "display", article "a", description "A rather revolting display of a well dressed demon feeding what can be described as a dog if you stretch the definition a bit, a cartoonishly large bone.", has static supporter; Object d_mannequin "demon mannequin" display with name "demon" "mannequin", description "A mannequin (demonquin?) of a demon dressed like an English lord.", before[; Take: "*laugh* Uh, no. You've got no reason to take it."; ], has static; Object dog_mannequin "dog mannequin" display with name "dog" "mannequin", description "It's a dog, the way you like them best. Stuffed.", before[; Take: "*laugh* Uh, no. You've got no reason to take it."; ], has static; Object bone "bone" display with name "bone" "cartoon", description "Eerily similar to the bones you see on such quality televison programs as ~The Flintstones~.", before[; Take : move bone to player; if (location == In_Hsports) "You take advantage of Nolan's inattention and slip the bone into a pocket."; "Done."; Drop: if (location == Out_Pets) "The hell hound snarls and lunges for the bone. Laughing, you scoop it up and tease it. Luckily, sanity returns quickly and you hide the bone away before the hound snaps the leash and turns you into kibbles and bits. Oh well.";]; Object Out_HWorld "Outside World of Torture and Science!" with description "At last, a store for the kiddies. A big bay window holds such wonderful goodies as a perform it yourself autopsy kit (which on closer examination turns out to be a perform it on yourself kit) and ~Build your own Iron Maiden~. You can enter science hell to the south, or escape to the north or west.", s_to In_HWorld, n_to Out_HSports, w_to Offices; Object In_HWorld "Inside World of Torture and Science!" with description [; print " As you look around and notice the shelves jam packed with technological goodies and gee whiz toys, you cant help but think that if you were a certain type of person, this would be heaven instead of hell. Sadly, you aren't that type of person."; if (In_HWorld hasnt visited) print "^^^ A perky demon salesgirl runs up to you and hands you a model plane. ~Free to all visitors today~ , she says, before going back behind the counter and watching you like a hawk."; move plane to player; new_line;rtrue; ;], n_to Out_HWorld; Object tcounter "counter" In_HWorld with name "counter", description "It's a counter. People stand behind it.", has scenery; Object salesgirl In_Hworld with name "sales" "girl" "clerk" "demon" "salesgirl", description "A demon sales girl. She's kind of cute if you like demonic jailbait.", life[; Kiss: "You think of Gwyneth, and restrain yourself."; default: "The salesgirl manages to both totally ignore you as well as watch you like a hawk to make sure you don't steal anything.";], has scenery animate proper; Object sshelves "shelves" In_Hworld with name "shelves" "racks" "gizmos" "toys" "toy", description "Shelves filled with toys and gizmos for the technogeeks.", has scenery; Object plane "plane" with name "plane" "model" "Styrofoam" "tail" "wings" "attachment", description[; print "A cheap model plane made out of Styrofoam. Its pretty generic, except for the back compartment, designed to hold a banner. The compartment "; if (child(self)==0) "is empty."; if (child(self)==paper) "has some sort of flier in it."; if (child(self)==dollar) "contains a single dollar bill.";], before [; Receive: if ( (noun ~= paper) && (noun ~= dollar) ) "How were you planning to fit that in there?"; if ( (parent(paper) == plane) || (parent(dollar) == plane)) "You can't fit anything else in there."; if (noun == dollar) { move dollar to plane; "You slide the dollar in the banner housing. It now trails the plane.";} if (noun==ipaper) "You dont want to let that out of your sight."; ThrowAt: if (location == Out_FCBH && parent(dollar) == plane) { ! if (parent(dollar) ~= plane) ! { move noun to location; "Dropped.";} remove greed; remove plane;remove storm;move hole to Atrium; Achieved(5); "You throw the plane and it arcs in a gentle loop, carrying it above Greed's head. His eyes literally bug out as he sees the dollar bill fly by. With his high nasal whine of ~Mine! Mine! Mine!~, he leaps over the guard rail to grab the plane- and comes up short. He realizes his mistake too late and looks down as his body does a cartoony free fall. First his feet, then his torso And just before his head and arms plummet to the atrium below, he holds up a little sign reading ~Oh HECK!~. He then drops straight down to the floor, and with a THUD splats, and then evaporates. The plane, unaffcted by all this, lazily spirals downward, eventually coming to rest in the fountain- which causes it also to evaporate."; } Drop: if (location == Out_FCBH && parent(dollar) == plane) { ! if (parent(dollar) ~= plane) ! { move noun to location; "Dropped.";} remove greed; remove plane;remove storm;move hole to Atrium; Achieved(5); "You throw the plane and it arcs in a gentle loop, carrying it above Greed's head. His eyes literally bug out as he sees the dollar bill fly by. With his high nasal whine of ~Mine! Mine! Mine!~, he leaps over the guard rail to grab the plane- and comes up short. He realizes his mistake too late and looks down as his body does a cartoony free fall. First his feet, then his torso And just before his head and arms plummet to the atrium below, he holds up a little sign reading ~Oh HECK!~. He then drops straight down to the floor, and with a THUD splats, and then evaporates. The plane, unaffcted by all this, lazily spirals downward, eventually coming to rest in the fountain- which causes it also to evaporate."; } ], has container open; Object paper "unimportant paper" plane with name "paper" "flier", adjective "unimportant", article "an", description "Some sort of sales flier. Its not important."; [Initialise; TitlePage(); location=Food_Court; give player light; move player to table;move flava to fountain; "^^^^^^^ Ohhhh. Ow. Don't you just hate hangovers? Guess you shouldn't have celebrated your twenty-first birthday quite so thoroughly. Still, you put on a good show in the bar. Especially when you went on and on about how you'd sell your very soul for a chance with the lovely Gwyneth. Bored everyone to tears, except the guy you were drinking with- that bit seemed to fascinate him. Of course, given how red his eyes were he had to have been drinking long before you started. You probably should've toned it down a bit though, because in addition to the usual pounding head and cotton mouth, you've woken up with this nagging feeling that there's an old proverb you should've paid more attention to. It had something to do with being careful what you wish for. . . ^^"; ]; [TitlePage i; @erase_window -1; print "^^^^^^^^^^^^^"; i = 0->33; if (i==0) i=80; i=(i-50)/2; style bold; font off; spaces(i); print " BEAT THE DEVIL^"; style roman; print "^^"; spaces(i); print" [Please press SPACE to begin.]^"; font on; box "Please allow me to introduce myself-" "I'm a man of wealth and taste." "Pleased to meet you- hope you guessed my name." "But what's troubling you is the nature of my game." "" "- Rolling Stones; ~Sympathy for the Devil~"; do { @read_char 1 0 0 i; } until (i==32 or 10 or 13); @erase_window -1; ]; Include "Grammar"; [XyzzySub; "You hear a deep voice out of the air next to your right ear. It says 'Crowther and Woods, please report to the mall office.' You jump."; ]; [BetaSub; "The mall speaker crackles to life: ~Let's have a round of applause for our excellent beta testers- Jennifer and Stephen.~";]; [ApplaudSub; "You clap politely.";]; [ReadSub;<>; ]; [HelpSub; if (second == 0) "There's no help for you."; if (second == aclerk) "I'd worry more about helping yourself than her."; if (second hasnt animate) "You can only do that to something animate. It's a biological thing. You wouldn't understand.~"; if (second == player) "Just can't help yourself, can you?"; "They don't need your help.";]; [HintSub; "Oh come _on_. It's not that hard!";]; [VomitSub; if (location == Out_WrongAid) "You bend over and retch uncontrolably. Fake brick gets you that way too, huh?"; "It's a struggle, but you keep the contents of your stomach where they belong.";]; [ThrowSub; if (second == 0) <>; <>;]; [Picksub; <>;]; [PourSub; <>;]; ![LightSub; <>;]; Extend "read" first * legible ->Read; Verb "xyzzy" * ->Xyzzy; Extend "turn" * noun "with" noun ->Turn; Extend "break" * noun "with" noun ->Attack; Verb "crush" *noun ->Attack; Extend "crush" *noun "with" noun ->Attack; !Verb "throw" ! * noun ->ThrowAt; Verb "pour" *noun ->Pour; !Verb "pick" ! *noun ->Pick; !Verb "move" * noun ->Push; !Extend "pour" first * liquid ->Pour; Extend "pour" *noun "in" noun ->Pour; Extend "pour" *noun "on" noun ->Pour; Extend "light" * noun ->Burn; Extend "light" * noun "with" noun ->Burn; Verb "vomit" * ->Vomit; Verb "puke" * ->Vomit; Verb "retch" * ->Vomit; Verb "help" * ->Help; Extend "help" * noun ->Help; Verb "plant" * noun ->Insert; Extend "plant" *noun "in" noun ->Insert; Verb "sprinkle" *noun ->Insert; Extend "sprinkle" *noun "on" noun ->Insert; Verb "hint" * ->Hint; Verb "hints" * ->Hint; Verb "beta" * ->Beta; Verb "clap" * ->Applaud; Verb "applaud" * ->Applaud;