Message "[Including ]"; ! The computer is ripped bleeding from DM4, Ex. 37 (p. 454) ! Yes, those are IBM-style error messages Thingy computer "Computer" with name "computer" "dzogchen", ! Little joke there, folks grammar [;return 'dzogchen,'; ], speed 2, destination rigel, description "The ship's computer can hear you from anywhere in the ship (except when you're in a holodeck simulation).", before [; TalkTo: print "Unlike the actual characters, you address the computer with "; print (boldtext) "COMPUTER, "; print (italics) "order"; "."; ], orders [x; if ((scene > 5) && (excretus has general) && (master_daemon.counter > 19)) "~Resistance is futile. You will be assimilated.~"; Go: if ((scene > 5) && (excretus has general)) { self.deny(); "~Cannot overcome Borg tractor beam.~"; } if (self.destination == noun) { self.deny(); "~Already proceeding towards ",(name) noun,".~"; } self.confirm(); self.destination = noun; if (noun == olmak) give olmak general; else give olmak ~general; "~Course confirmed for ",(name) noun,".~ You feel the ship change course."; setTo: if ((scene > 5) && (excretus has general)) { self.deny(); "~Cannot overcome Borg tractor beam.~"; } x = self.speed; if (noun == 0) { if (x == 0) { self.deny(); "~Already stopped.~"; } self.confirm(); self.speed = 0; "~Confirmed.~ The ship's warp engines stop."; } if (noun > 6) { self.deny(); "~Warp Factor ", noun, " exceeds design limits.~"; } if (x == noun) { self.deny(); "~Already travelling at Warp Factor ", x, ".~"; } self.confirm(); self.speed = noun; print "~Warp Factor ", noun, " confirmed.~ You hear the pitch of the warp engines' soft whine"; if (x) " change."; "."; Look: self.confirm(); if (self.speed > 0) { print "~Currently travelling at Warp Factor ", self.speed, " en route to ", (name) self.destination, ". "; } else { print "~Currently stopped. "; } print "Shields "; if (shield has general) print "up"; else print "down"; print ". Phasers "; if (phaser has general) print "armed"; else print "disarmed"; print ". Photon Torpedos "; if (torpedo has general) print "armed"; else print "disarmed"; ".~"; Take: if (noun == shield) { if (shield hasnt general) { self.confirm(); give shield general; "~Shields raised.~"; } else { self.deny(); "~Shields already raised.~"; } } else { self.deny(); "~DMZ2235E Cannot raise non-shield ", (name) noun, ".~"; } ComputerLower: if (noun == shield) { if (shield has general) { self.confirm(); give shield ~general; "~Shields lowered.~"; } else { self.deny(); "~Shields already lowered.~"; } } else { self.deny(); "~DMZ2236E Cannot lower non-shield ", (name) noun, ".~"; } ComputerArm: if ((noun ~= phaser or torpedo)) { self.deny(); "~DMZ2093E Cannot arm non-weapon ", (name) noun,".~"; } if (noun hasnt general) { self.confirm(); give noun general; "~Armed.~"; } else { self.deny(); "~Weapon already armed, Captain.~"; } ComputerDisarm: if (noun ~= phaser or torpedo) { self.deny(); "~DMZ2093E Cannot disarm non-weapon ", (name) noun,".~"; } if (noun has general) { self.confirm(); give noun ~general; "~Disarmed.~"; } else { self.deny(); "~Weapon not armed, Captain.~"; } Drop: if (noun == phaser) { if (phaser has general) { give phaser ~general; PlaySound(gg_forechannel,snd_phaser,0,1,1); if (screen_moose in bridge) { "Space Moose yelps. ~That was fucking rude!~ However, his ship appears undamaged."; } "~Fired.~"; } self.deny(); "~Phasers not armed, Captain.~"; } else if (noun == torpedo) { if (torpedo has general) { give torpedo ~general; PlaySound(gg_forechannel,snd_torpedo,0,1,1); ! Blow up things here if (screen_moose in bridge) { "Space Moose yelps. ~That was fucking rude!~ However, his ship appears undamaged."; } "~Fired.~"; } self.deny(); "~Torpedoes not armed, Captain.~"; } self.deny(); "~DMZ2241E Cannot fire non-weapon ", (name) noun,".~"; ComputerFire: if ((torpedo has general) && (phaser hasnt general)) { give torpedo ~general; PlaySound(gg_forechannel,snd_torpedo,0,1,1); ! Blow up things here if (screen_moose in bridge) { "Space Moose yelps. ~That was fucking rude!~ However, his ship appears undamaged."; } "~Fired.~"; } if ((phaser has general) && (torpedo hasnt general)){ give phaser ~general; PlaySound(gg_forechannel,snd_phaser,0,1,1); ! Special-case code for actually zapping stuff ! goes here if (screen_moose in bridge) { "Space Moose yelps. ~That was fucking rude!~ However, his ship appears undamaged."; } "~Fired.~"; } if ((phaser has general) && (torpedo has general)) { self.deny(); "~Ambiguous command. Both weapon systems armed, Captain.~"; } self.deny(); "~No weapon system armed.~"; ComputerHelp: self.confirm(); print "~I am the ship's computer. I understand the following commands:^", "^STATUS", "^SET COURSE FOR ",(italics) "planet", "^WARP ",(italics) "[FACTOR] speed (0-6)", "^RAISE SHIELDS", "^LOWER SHIELDS", "^ARM ",(italics) "weapon system (PHASERS or PHOTON TORPEDOS)", "^DISARM ",(italics) "weapon system", "^FIRE ",(italics) "[weapon system]", "^HELP.~"; ""; NotUnderstood: self.deny(); "~Unable to parse your request, Captain.~"; default: self.deny(); "~Request is beyond my capacity, Captain.~"; ], deny [; PlaySound(gg_forechannel,snd_comp_bad,0,1,1); ], confirm [; PlaySound(gg_forechannel,snd_comp_ok,0,1,1); ], found_in [; return (location ofclass Starship_room); ], has talkable proper scenery transparent, ; Thingy -> shield "shield" with name "shield" "shields", description "You'll have to ask the computer their status.", found_in [; return (location ofclass Starship_room); ], has scenery, ; Thingy -> torpedo "torpedo" with name "torpedo" "photon" "torpedos" "torpedoes", description "You'll have to ask the computer their status.", found_in [; return (location ofclass Starship_room); ], has scenery, ; Thingy -> phaser "phaser" with name "phaser" "phasers", description "You'll have to ask the computer their status.", found_in [; return (location ofclass Starship_room); ], has scenery, ; [ComputerArmSub; "Only here to make the action exist.";]; [ComputerDisarmSub; "Only here to make the action exist.";]; [ComputerLowerSub; "Only here to make the action exist.";]; [ComputerHelpSub; "Only here to make the action exist.";]; [ComputerFireSub; "Only here to make the action exist.";]; [Planet; switch(scope_stage) { 1: rfalse; ! One at a time, please 2: ScopeWithin(galaxy); rtrue; } ]; Verb "dzogchen," * 'set' 'course' 'for' scope=Planet -> Go * 'warp' number -> setTo * 'warp' 'factor' number -> setTo * 'status' -> Look * 'raise' held -> Take * 'lower' held -> ComputerLower * 'disarm' held -> ComputerDisarm * 'arm' held -> ComputerArm * 'fire' -> ComputerFire * 'fire' held -> Drop * 'help' -> ComputerHelp ; Object galaxy; Object -> earth "Earth" with name "Earth" "Terra"; Object -> vulcan "Vulcan" with name "Vulcan"; Object -> olmak "Olmak" with name "Olmak"; Object -> rigel "Rigel IV" with name "Rigel" "IV"; ! Lexically-scoped constants would be preferable Constant TERRI_AROUSAL_NONE 0; Constant TERRI_AROUSAL_NAKED 5; Constant TERRI_AROUSAL_BREASTS 10; Constant TERRI_AROUSAL_HORNY 15; Constant TERRI_AROUSAL_EXTREME 20; ! Yes, it's a very, very lame pun. Or an homage. Or something. ! The pictures are fan interpretations of Sailor Jupiter in the altogether ! The voice is Tutter from "Bear In The Big Blue House" ! Yes, I'm going to hell. StiffyWoman Terri "Lieutenant Barcelona" with name "Terri" "Barcelona" "Lieutenant", description [; if (self.state >= TERRI_AROUSAL_NAKED) "The Lieutenant lounges here, completely and delectably nude."; "Lieutenant Terri Barcelona is here, gorgeous as always."; ], SayQ [line; interlocutor = self; DrawObjectPic(self); switch (line) { 0: "~Hi. Tell me about yourself.~"; 1: "~Would you like to fuck?~"; 2: "~How about a blowjob?~"; 3: "~Nice tits.~"; 4: "~Uh, I guess so.~"; 5: "~No, not really.~"; 6: "~Say, how about slipping into something more comfortable?~"; } ], Respond [line; interlocutor = 0; switch (line) { 0: switch (self.state) { TERRI_AROUSAL_NONE: self.QuipsOff(3,0,1,2); self.QuipsOn(2,4,5); print "~Hee hee! You silly captain! I'm Terri Barcelona, I'm from Io, and I like men in uniform, especially when they're out of uniform"; if (PlayerIsNaked()) print ", like you are now. I guess your uniform was as hot and chafey as mine, huh?~^^"; else print ". Speaking of uniforms, is yours as hot and chafey as mine is?~^^"; <>; default: "~Enough about me. Let's talk about you.~"; } 1: switch (self.state) { TERRI_AROUSAL_BREASTS to (TERRI_AROUSAL_HORNY - 1): "~Mmmmm. Warm me up a little first, Captain.~"; TERRI_AROUSAL_HORNY: "~Let's make out some first!~"; TERRI_AROUSAL_EXTREME: print "~Would I ever!~^^"; <>; default: "~Not right now, thanks.~"; } 2: switch (self.state) { TERRI_AROUSAL_HORNY: "~",(italics) "You"," warm ",(italics)"me"," up a little first, and then we'll see.~"; TERRI_AROUSAL_EXTREME: print "~I'd love to!~^^"; self.blowstiffy(); rtrue; default :"~Mmmmm......No.~"; } 3: switch (self.state) { TERRI_AROUSAL_NONE: "~You can't even really see them, silly!~"; TERRI_AROUSAL_NAKED: self.state = TERRI_AROUSAL_BREASTS; setPronoun('it',terri_breasts); setPronoun('them',terri_breasts); "~Thanks! You're sweet! My aunt Pamela paid for them! You can play with them if you want!~"; default: "~Yeah, I know.~"; } 4: self.QuipsOff(2,4,5); self.QuipsOn(3,6,1,2); print "~I figured it would be!~ she beams.^^"; <>; 5: self.QuipsOff(2,4,5); self.QuipsOn(3,6,1,2); print "Lieutenant Barcelona looks crestfallen, her conversational gambit shot down in its prime. ~Oh.~^^"; <>; 6: if (PlayerIsNaked()) { if (self.state >= TERRI_AROUSAL_NAKED) "~What could be more comfortable than skin, you big silly?~"; else { self.state=TERRI_AROUSAL_NAKED; self.picture=pic_terri_nude; penis.changeStatus(10); DrawObjectPic(self); Self.QuipsOff(2,0,6); self.QuipsOn(1,3); move terri_breasts to self; move terri_pussy to self; move terri_ass to self; "~Um, sure, OK.~ She removes her clothing, revealing a luscious pair of breasts. ~Hee Hee!~"; } } else { "~I will if you will!~"; } default: "~Yeah, whatever.~"; ! self.QuipsOff(); } ], InitQuips [; self.QuipsOn(3,0,1,2); ], picture pic_terri, state TERRI_AROUSAL_NONE, life [; Give: if (noun == rohypnol) "~No thanks, I already took some.~"; if (noun == penis) <>; ], before [x; Kiss: switch(self.state) { TERRI_AROUSAL_NAKED to (TERRI_AROUSAL_HORNY - 1): penis.changeStatus(3); "You and Lieutenant Barcelona make out for a while. She doesn't seem very enthusiastic, although it's getting you hornier. ~Ooooh, play with my tits!~ she moans, and then giggles impishly."; TERRI_AROUSAL_HORNY: penis.changeStatus(4); self.state = TERRI_AROUSAL_EXTREME; self.picture = pic_terri_horny; DrawObjectPic(self); self.QuipsOn(1,2); "Lieutenant Barcelona moans and writhes against you. ~Take me, Captain! Take me now!~"; TERRI_AROUSAL_EXTREME: penis.changeStatus(4); "~Oh Captain! My Captain!~ groans Lieutenant Barcelona."; default: "~Captain, that's hardly appropriate behavior.~"; } Fuck: if (PlayerIsNaked() == 0) "You're not exactly undressed for it."; switch(self.state) { TERRI_AROUSAL_NAKED: "Lieutenant Barcelona playfully wags a finger at you. ~Don't you boys know anything about foreplay?~ she giggles."; TERRI_AROUSAL_BREASTS to (TERRI_AROUSAL_EXTREME - 1): "~Always in such a hurry!~ she admonishes squeakily."; TERRI_AROUSAL_EXTREME: x = penis.getStatus(); if (x < GREASY) "Alas, your stiffy just isn't up to the task. Lieutenant Barcelona stares at you in alarm."; back_mus = 0; ! Do not restart music snd_magic = TERRI_AROUSAL_EXTREME; PlaySound(gg_forechannel,snd_toobig,0,1,1); print "You mount Lieutenant Barcelona, slide your greasy stiffy into her dripping pussy, and begin thrusting. She moans in pleasure as you begin to establish a rhythm. Much sooner than you anticipate...^^"; ! penis.ejaculate(); /* Will be called from sound_notify PressKey(); print (italics) "^^*SPLORT*"; print "^^You pump round after round of cum into her snatch and collapse on top of her, and then roll to the side. You're expecting a cigarette, or at least a congratulatory hug, so you're a little surprised when "; self.gameover(); rtrue; default: "Lieutenant Barcelona glares at you. ~I don't ",(italics)"think"," so.~"; } Blowjob: "Perhaps a commendable idea, but Lieutenant Barcelona has the wrong sort of genitals for that."; ], blowstiffy [x; penis.changeStatus(40); x = penis.getStatus(); print "Lieutenant Barcelona takes your cock into her mouth, rolls her tongue around it a few times, and begins enthusiastically deep-throating it."; if (x < 100) { PlaySound(gg_forechannel,snd_lickit,0,1,1); "After a few moments she pulls back to admire her handiwork."; } back_mus = 0; ! So we don't restart the music afterwards snd_magic=TERRI_AROUSAL_EXTREME; PlaySound(gg_forechannel,snd_lickit,0,1,1); print "^^The stimulation is too much for you to bear.^^"; PressKey(); print (italics) "^^*SPLORT*"; print "^^You spurt wave after wave of jism into Lieutenant Barcelona's mouth. She chokes, semen dribbling from her nose, and coughs your stiffy out.^^"; self.gameover(); rtrue; ], gameover [; print "Lieutenant Barcelona sighs deeply, pushes you out into the hallway"; setPronoun('it',nothing); setPronoun('them',nothing); if (parent(uniform) == terri_room) { move uniform to junction; print ", throws your uniform after you,"; } give terri_room general; Achieved(TASK_TERRI); tasks_done -> TASK_TERRI = 1; ! Oooh! Oooh! See the intertextuality? Because "Tickle the Elmo" is ! Tracy Valencia's line, but Tutter--Terri's voice--is also a Jim ! Henson Productions character? Oh, never mind. print " and snarls, ~'Scuse me. I gotta go tickle the Elmo. Bye now.~^^The door slams shut.^^"; PlayerTo(junction); ClearWindow(gg_objectwin); object_pic = NULL; object_obj = NULL; ""; ], has transparent, ; Object terri_breasts "breasts" with name "breasts" "tits" "hooters" "melons" "gonzagas" "boobs" "breast" "tit" "hooter" "melon" "gonzaga" "boob" "pair" "of", description [; print "They are a pair of absolutely magnificent tits."; if (self has general) " Too bad they conceal such monstrous horror."; ""; ], before [; Fuck, Squeeze, Touch, Rub, Kiss: if (terri.state < TERRI_AROUSAL_BREASTS) { "Lieutenant Barcelona slaps you away. ~Not until you give them the praise and respect they deserve!~ she snaps."; } if (self has general) "Nuh uh. Not again."; give self general; PlaySound(gg_forechannel,snd_honk,0,2,1); print (boldtext) "HONK, HONK!^^"; ! cf. _TIEAOSM_ terri.state=TERRI_AROUSAL_HORNY; penis.changeStatus(-5); "You recoil in horror. Lieutenant Barcelona giggles. ~You're ",(italics) "cute"," when you're disgusted.~"; ], has pluralname scenery, ; Orifice terri_pussy "pussy" with name "pussy" "cunt" "vagina" "slit" "clit" "clitoris" "gash" "poontang", description "The lieutenant's pussy is shaved. It looks tight and delicious.", before [; Kiss, Rub, Touch: switch (terri.state) { TERRI_AROUSAL_HORNY to TERRI_AROUSAL_EXTREME: <>; default: "Lieutenant Barcelona crosses her legs. ~Nuh uh,~ she giggles."; } Smell: if (terri.state < TERRI_AROUSAL_HORNY) "You can't get close enough to get a good whiff."; penis.changeStatus(2); "Maybe it smells a little like tuna, but we're talking good sashimi-grade bluefin here, not Chicken-of-the-Sea."; Taste: if (terri.state < TERRI_AROUSAL_HORNY) "Lieutenant Barcelona won't let you taste her pussy."; penis.changeStatus(3); "Yummm. Definitely closer to Maguro Sashimi than Charlie Tuna, if you know what I'm saying."; Blow: <>; Fuck: <>; ], ; Orifice terri_ass "ass" with name "ass" "butt" "asshole" "anus", description "It's a gorgeous, firm, round ass.", before [; Kiss, Rub, Touch: switch(terri.state) { TERRI_AROUSAL_HORNY to TERRI_AROUSAL_EXTREME: <>; default: "Lieutenant Barcelona wiggles away from you. ~I'm not that kind of girl!~ she giggles."; } Fuck: switch(terri.state) { TERRI_AROUSAL_HORNY: "~I usually don't do anal,~ she giggles."; TERRI_AROUSAL_EXTREME: if (penis.getStatus() < GREASY) "You'd love to, but your penis simply isn't hard enough."; snd_magic = TERRI_AROUSAL_EXTREME; PlaySound(gg_forechannel,snd_toobig,0,1,1); back_mus = 0; ! penis.ejaculate(); ! called from sound_notify print "You thrust your stiffy into her cunt once, deep and hard. She moans, unaware that you're only doing this to get a little lube on. Then you pull back and ram your stiffy deep into her puckered asshole. She yelps in surprise.^^"; PressKey(); print (italics) "^^*SPLORT*"; print "^^You immediately unload gobs and gobs of steaming cum into her intestines.^^"; print "You collapse and roll off of her. ~You sneaky pigfucker!~ she screams.^^"; terri.gameover(); rtrue; default: "~Nuh uh. I don't do anal.~"; } Taste: if (terri.state < TERRI_AROUSAL_EXTREME) "She won't let you near her asshole."; penis.changeStatus(3); "Lieutenant Barcelona bucks and wiggles as you rim her enthusiastically. The taste is salty, yet musky."; Smell: if (terri.state < TERRI_AROUSAL_EXTREME) "You can't get near enough to get a good whiff."; "It smells like ass. What did you expect, lilacs?"; ], ; ! Mara is, of course, from "Shattertown Sky" by Laura Mixon; also ! check out Neil de Mause's review in XYZZYNews #14 StiffyWoman mara "Mara", with name "Granny" "Grandma" "Mara" "Gramma" "Bubbi" "horrible" "old" "lady" "woman", initial [; give self moved; "There's some horrible old lady here, clutching a Colt .45 in one hand and a Colt .45 in the other hand, looking like Hitler on a bad hair day. ~Hello, child,~ she grates. ~I'm Granny Mara. Welcome to Shattertown. Don't make me fill you full of lead.~"; ], description "Granny Mara sways here, blinking in the sun.", before [; Fuck, Blowjob, Rub, Kiss: "No. Gerontophilia is not within the Stiffy sphere."; ], Life [; Give, Show: if (noun == mimesis) { if (mimesis hasnt general) { "Mara examines the plant. ~Made in Taiwain,~ she reads. ~This will never do. Only someone who paid no attention to detail could believe that this was a real mimesis. And if no one believes in it, it ain't gonna help. Get someone--anyone--to believe that this is a real mimesis, and then we'll talk.~"; } remove mimesis; give self general; move orgasmatron to player; "Mara nods. ~",(italics) "Someone"," believes in this mimesis, and that's good enough. Here's your Orgasmatron, kid, you've earned it. Now get outta here. We gotta rebuild Happy-Fuzzy-Bunny-Ville.~"; } ], picture pic_granny, InitQuips [;self.QuipsOn(3,1,2,3);], SayQ [line; interlocutor = self; DrawObjectPic(self); switch (line) { 1: "~Um, hi. So, uh, what's Shattertown?~"; 2: "~Er, about all those corpses....~"; 3: "~Who are you again?~"; 4: "~Uh, nice gun you got there.~"; 5: "~Can I have some of that malt liquor?~"; 6: "~Rioting after a ",(italics) "trial"," caused all this?~"; 7: "~Tell me more about this mimesis thing.~"; 8: "~'Poot?' Poor guy. No wonder he's psychotic.~"; 9: "~How can the city be healed?~"; 10: "~Happy-Fuzzy-Bunny-Ville?~"; 11: "~Did you say Samuel Delany?~"; 12: "~Well, where can I find a mimesis?~"; 13: "~Espen Aarseth? Who dat?~"; 14: "~And what's in it for me if I do find you a mimesis?~"; 15: "~What's in it for me if I give you this mimesis?~"; } ], Respond [line; interlocutor = 0; if (self has general) "~No time to talk! We're rebuilding Happy-Fuzzy-Bunny-Ville!~"; switch (line) { 1: self.QuipOff(1); self.QuipsOn(3,6,7,10); print "~This used to be a great city; Happy-Fuzzy-Bunny-Ville, to be precise. But Shattertown was created when the whole city kinda melted in the aftermath of riots following an unpopular acquittal. See, we used to have this ceremonial plant. It was called a mimesis. The entire city revolved around it and we all, you know, engaged in ritual designed to further its well-being. And then this bastard named Roger came in, and committed all sorts of heinous crimes against it. Well, we arrested him, but instead of just lynching him, like we shoulda done, we gave him a fair trial, and he got acquitted. And that's when everything turned to shit.~^^"; <>; 2: self.QuipOff(2); self.QuipOn(11); print "~Oh, the corpses were, y'know, created when the city melted around them. Didn't make much sense, but it was very cyberpunk, in a kinda don't-look-at-it-too-closely-Samuel-Delany-kinda-way.^^"; <>; 3: self.QuipOff(3); self.QuipsOn(3,4,5,8); print "~I'm Mara, a whip-hard old woman with a drinking problem. I used to run a printing press with my possibly-psychotic boyfriend Poot. I'm sorta the mayor, seeing as how I'm the most coherent person left.~^^"; <>; 4: self.QuipOff(4); ! cf. _TIEAOSM_ "~Hey, like they say, big gun kick the hell outta you.~"; 5: self.QuipOff(5); "~No.~"; 6: self.QuipOff(6); "She has the grace to look slightly embarassed. ~Yes. Well, sorta. I mean, yeah, I know it doesn't make any sense, but, like, I just live here. Take it up with Laura Mixon already. Yeah. Trial, riots, The Shattering, corpses trapped in walls, paranoia. That's it.~"; 7: self.QuipOff(7); if (mimesis in player) { self.QuipOn(15); "~The mimesis, much like the one you're carrying, was the symbol of our city. If it were returned to our city...~ Mara shoots you a significant look. ~Why then, we could begin to rebuild.~"; } self.QuipOn(9); "~The mimesis was our civic lifeblood. If it could somehow be brought back...but people would have to believe.~"; 8: self.QuipOff(8); penis.changeStatus(-3); "~Yeah. I know. I've tried telling him, look, change your name to Bob or something, but no, no, he has to be Poot. Nothing else will do. He's kind of a dork, but on the other hand, at my age who else is still going to give me the regular dickings I require?~ You shudder."; 9: self.QuipOff(9); self.QuipOn(12); print "~Oh, if the city had a mimesis to believe in again, all would be well.~^^"; <>; 10: self.QuipOff(10); "~Yeah.~ Mara glowers at you."; 11: self.QuipOff(11); "~Well, yeah. I mean, if you want post-apocalyptic nightmare cities that don't make any sense at all, it's all right there in ", (italics) "Dhalgren", " and besides, his books turn me right the hell on.~"; 12: self.QuipOff(12); self.QuipsOn(2,13,14); print "~The only living mimesis we know of lies deep within the Thicket of Theory, guarded by Espen Aarseth.~^^"; <>; 13: self.QuipOff(13); espen.QuipsOn(2,2,3); "~Espen Aarseth, The One So Erudite That None May Hear His Discourse And Live!~ Mara shudders."; 14: self.QuipOff(14); print "~Well, I reckon that if you brought back a mimesis, we could see fit to part with our Orgasmatron.~ "; if (erasmatron has general) print "She leers. ~It's the real thing.~"; ""; 15: self.QuipOff(15); print "~You give me the mimesis, I give you an Orgasmatron.~ "; if (erasmatron has general) print "She leers. ~It's the real thing.~"; ""; } ], has transparent, ; MyObject->Mara_gun "Colt .45 pistol", with name "Colt" "45" "pistol" "gun", description "BIG GUN KICK THE HELL OUTTA YOU!", ! Yeah, yeah, it's a _Stiffy Classic_ riff picture pic_mara_gun, has scenery, ; MyObject->Mara_tallboy "Colt .45 tallboy", with name "Colt" "45" "tallboy" "malt" "liquor" "bottle" "beer", description "Breakfast of Champions.", picture pic_mara_tallboy, has scenery, ; ! The picture is Leah the Realdoll from http://www.realdoll.com StiffyWoman Realdoll "Hot Chick", with name "Hot" "Chick" "Real" "Doll" "Realdoll" "chyk" "blonde" "leah" "blond" "hair" "simulation" "simulated" "fake", description "A Hot Simulation Chick. You know the kind.", initial [; give self moved; "The Hot Chick here is, as you have come to realize after innumerable runs through the holodeck, the reward for your puzzle. The logic is simple and always the same: jump through some hoops, get to fuck the girl. If only real life were so easy!^^Anyway, this particular Hot Chick is blonde, with wavy hair and perky breasts."; ], picture pic_realdoll, life [; Give,Show: if (noun == erasmatron) { "The Hot Chick looks at you with contempt. ~This,~ she says, ~is an Erasmatron. Not an Orgasmatron. They're ", (italics) "completely", " different things."; } if (noun == mimesis) { "The Hot Chick sniffs dismissively. ~That's the saddest excuse for a mimesis I've ever seen.~"; } if (noun == orgasmatron) { remove orgasmatron; give self general; snd_magic=MOAN; PlaySound(gg_forechannel,snd_grunt,FALSE,10,TRUE); penis.changeStatus(20); "The Hot Chick takes the Orgasmatron, shakes it, performs some intricate manipulation whereby it begins glowing a fierce orange, and then inserts it into her vagina. She seems to derive a great deal of pleasure from whatever it's doing to her; smoke billows from her ears. Then she sighs deeply and proclaims, ~Well done, Captain Makane! You may have your bestial way with me now!~"; } ], before [; Blow: "Although artificial, the Hot Chick is not actually inflatable."; Kiss, Taste, Touch, Rub: "The Hot Chick stops you. ~Foreplay is not implemented in this simulation.~"; Fuck: if (self hasnt general) "~Have you brought me an Orgasmatron? I don't think so. And you're not getting any until I get one.~"; if (self has visited) "~One per customer, buddy.~"; if (PlayerIsNaked() == FALSE) "You're not appropriately undressed for the occasion."; if (penis.getStatus() < GREASY) "You lack the erection when it comes to the crucial moment."; give self visited; print "The Hot Chick nods. ~All aboard!~ she shouts.^^You quickly slide your stiffy in and begin thrusting.^^"; print (italics) "Pwoik, pwoik!^^"; print "~Pwoik?~ you yelp incredulously.^^"; print "~Yeah, well, what kinda simulation do you expect, Captain Makane?~ she growls at you.^^"; print "It's pleasant enough, though not, frankly, all that memorable. After a few minutes...^^"; penis.ejaculate(); PressKey(); print "^^",(italics) "**SPLORT**"; print "^^"; Achieved(TASK_HOLODECK); tasks_done->TASK_HOLODECK = 1; give Simulation general; "The Hot Chick looks at her watch, shrugs, and rolls out from under you."; ], InitQuips [;self.QuipsOn(4,1,2,3,4); ], SayQ [line; interlocutor = self; DrawObjectPic(self); switch(line) { 1: "~Hey, babe. How's it goin'?~"; 2: "~How about some hot lovin' for the old Stiffy-Meister?~"; 3: "~Lookin' kind of inflated there.~"; 4: "~You look almost real.~"; } ], Respond [line; interlocutor = 0; self.QuipOff(line); if (self has visited) "~You've gotten everything this simulation provides, Captain Makane. Please leave.~"; if (self has general) { if (line == 2) { print "~Affirmative. Authorization granted. Proceed.~^^"; <>; } "~Thank you for providing me an Orgasmatron. You may proceed.~"; } switch(line) { 1: "~It goes. I detect a seduction attempt in progress. But it is clear that you will be an unsatisfying lover. Therefore I must insist that you bring me an Orgasmatron before I allow you to penetrate me.~"; 2: "~You have not brought me an Orgasmatron. Therefore, no hot lovin' for you.~"; 3: "~I'll have you know I'm the very best simulation the computer can provide, thank you very much. Where's my Orgasmatron?~"; 4: "~Flattery will get you nowhere. An Orgasmatron, however, will get you everywhere you need to be.~"; } ], has transparent ~proper, ; Orifice -> realdoll_pussy "pussy" with name "pussy" "cunt" "vagina" "slit" "clit" "clitoris" "gash" "poontang", description "It looks very realistic.", before [; Receive: if (noun == orgasmatron) "You'd better let her insert it."; Taste, Kiss, Rub, Touch: "It's a fantasy simulation of a Hot Chick. No need for foreplay."; Smell: if (realdoll hasnt general) "The Hot Chick won't let you near."; "Mmmm. Plastic."; Blow: <>; Fuck: <>; ], ; Orifice -> realdoll_ass "ass" with name "ass" "butt" "asshole" "anus", description "The best simulated ass your computer can provide.", before [; Receive: if (noun == orgasmatron) "You'd better let her insert it."; Kiss, Rub, Touch, Taste, Fuck: "The Hot Chick glares at you. ~That function is not implemented. This is a low-budget simulation, Captain.~"; Smell: if (realdoll hasnt general) "The Hot Chick won't let you near."; "Ahhh. The sweet smell of latex."; ], ; Object -> realdoll_breasts "breasts" with name "breasts" "tits" "hooters" "melons" "gonzagas" "boobs" "breast" "tit" "hooter" "melon" "gonzaga" "boob" "pair" "of" "perky", description [; "Quite nice, even if obviously artificial. Very perky."; ], has scenery, ; ! http://www.erasmatazz.com StiffyMan crawford "Chris Crawford" with name "chris" "crawford", initial [; if (self has general) "A sadder but wiser Chris Crawford stands here."; "Chris Crawford stands here, a manic gleam in his eye."; ], description [; if (self has general) "Crawford has been beaten up pretty thoroughly."; "Unsung genius, or total crackpot? You make the call."; ], InitQuips [; self.QuipsOn(2,1,2); ], SayQ [ line; interlocutor = self; DrawObjectPic(self); switch(line) { 1: "~Um, OK. What's an Erasmatron?~"; 2: "~Are you ",(italics)"sure"," it's not an Orgasmatron?~"; 3: "~Sounds impressive. But how does it work?~"; 4: "~So, what you're doing is modelling the emotional state of an actor by keeping track of a bunch of possibly-correlated variables?~"; 5: "~Oh, I think I have something like that~."; 6: "~So how does that differ from CMU's Oz project?~"; ! 7: "~Well, yeah, sure, but that's my only response worth ! mentioning.~"; 8: "~So let's assume that this works, and that you have actors who react realistically in a variety of situations. I can see where that's something you want for a simulation, but how does it help the dramaturgical aspects of computer-aided storytelling?~"; 9: "~I'm saying that the narrative arc is paramount. The Erasmatron doesn't help an author tell his story; if anything it's like creating a space for freeform improvisational theatre.~"; 10: "~This is going to lead to boring, simplistic stories. Sure, if plot really did unfold dialectically from character, in an Aristotelean model of drama, this might kind of work. But, frankly, that's not a very popular literary model, and, I would argue, tends to lead to really boring stories.~"; } ], Respond [line; interlocutor = 0; if (self has general) { "Crawford can't speak, probably because his face is completely bruised and bloodied."; } switch(line) { 1: self.QuipOff(1); self.QuipOn(3); print "~After six years of research and development, Erasmatazz has completed a technology that solves many of the problems of interactive storytelling. At its heart is the storytelling engine. It uses a cast of actors and a large palette of verbs available to these actors, deciding which verb the actors will choose in any given dramatic situation.~^^"; <>; 2: self.QuipOff(2); "~Yes. I'm quite sure. Your facetiousness repels me.~"; 3: self.QuipsOn(3,4,5,6); self.QuipOff(3); print "~The engine uses an extensible personality model with 41 personality traits to control the behavior of the actors. It automatically handles the direct interactions of actors, as well as their indirect interactions through conversations and gossip. Actors can learn of past deeds and react to them after the fact. They can anticipate the consequences of their revelations and selectively reveal information to each other. They can tell lies about each other, and trace the path of gossip backwards to find its source. They can recall past favors and transgressions; they can pursue revenge and abort plans if new information causes them to change their mind.~^^"; <>; 4: self.QuipOff(4); self.QuipOn(8); print "~Forty-one of them! FORTY-ONE! In essence, that is correct. But: FORTY-ONE!~^^"; <>; 5: self.QuipOff(5); ! self.QuipOn(7); print "~You, Captain Makane, have exactly one state variable,~ Crawford sniffs disdainfully. ~It is the state of your erection. Hardly up to the exacting standards of the Erasmatron.~^^"; <>; 6: self.QuipOff(6); "Crawford looks wary. ~The Erasmatron is FAR superior! Did I mention that it uses FORTY-ONE emotional state variables? It's far more complex. Furthermore, it's commercial. Also, FORTY-ONE!~"; ! 7: self.QuipOff(7); ! "Crawford says nothing, but his arched eyebrow ! seems to indicate that he feels the prosecution ! rests."; 8: self.QuipOff(8); self.QuipsOn(2,9,10); print "~It's an entire new paradigm in interactive entertainment,~ he shrills. ~Realistic actor interaction! Adaptive response to situations! What ", (italics) "isn't"," there to like?~^^"; <>; 9: self.QuipOff(9); self.QuipOn(10); print "~What's wrong with freeform improvisational theatre? That's the point! The author populates his world, and the characters do the rest. What's wrong with that?~^^"; <>; 10: self.QuipsOff(2,9,10); remove crawford; ClearWindow(gg_objectwin); object_obj = NULL; object_pic = NULL; "~You're just like all the rest! But you'll be sorry. In three thousand years when there are FORTY-ONE giant bronze statues of me in every town, commemorating the genius father of the new literary paradigm, you'll be sorry!~ Chris Crawford stamps off in a huff."; } ], Life [; Give,Show: if (noun == mimesis) { if (self has general) { "Crawford moans and shakes his head sorrowfully."; } "~If that were a real mimesis--which I don't believe for one minute that it is--it would be badly broken. Probably got that way because of the crudity of its storyworld; look at it. I'm sure ",(italics) "it", "doesn't have forty-one state variables.~"; } if (noun == erasmatron) { if (self has general) { "Crawford groans piteously"; } "~Isn't it magnificent? Keep it! Cherish it! Love it!~ He begins singing his song, ~Forty-one ways to Love Your Erasmatron.~"; } ], picture pic_crawford, ; ! Espen's been around r*if a few times. Check groups.google.com. ! I like to imagine his voice as that of Comic Book Guy from _The ! Simpsons_. StiffyMan Espen "Espen Aarseth" with name "espen" "aarseth", counter 1, boredom 0, description "Espen Aarseth is a bearded man, with no hint of the terror that his reputation evokes.", picture pic_espen, InitQuips[; self.QuipOn(3);], SayQ [line; interlocutor = self; switch (line) { 1: "~So, you're the feared Espen Aarseth.~"; 2: "~What makes you so scary?~"; 3: "~Tell me about your theories of ergodic literature.~"; 4: if (erasmatron has general) "~Ha! Think that's abstruse? The Erasmatron would kick your theory's ass!"; "~Ha! I eat more convoluted things than that on my morning bowl of Cheerios!~"; 5: "~Yes, but have you considered the seminal work of Brenda Laurel and its implications for the postmodern narrator?~"; 6: "~I didn't quite follow that.~"; 7: "~Could you use smaller words, please?~"; 8: "~I like a monkey.~"; 9: "~Awwwk! Want cork nut!~"; 10: "~Wubba Wubba Wubba.~"; 11: "~Nngnghrhghgggg.~"; } ], Respond [line ; interlocutor = 0; if (self.counter < 12) self.QuipOff(self.counter); self.QuipOff(line); if(self.counter < 9) self.QuipOn(self.counter+3); self.counter++; ! I didn't make *ANY* of this up. switch(random(7)) { 1: print "~During the cybertextual process, the user will have effectuated a semiotic sequence, and this selective movement is a work of physical construction that the various concepts of 'reading' do not account for. This phenomenon I call ", (italics) "ergodic",", using a term appropriated from physics that derives from the Greek words ", (italics) "ergon", " and ",(italics) " hodos"," meaning 'work' and 'path.'~^"; 2: print "~Our present idea of the labyrinth is the Borgesian structure of 'forking paths,' the bewildering chaos of passages that lead in many directions but never directly to our desired goal. But there is also another kind, or paradigm, of labyrinths. Penelope Reed Doob, in her excellent discussion of physical and metaphorical labyrinths of classical antiquity and the Middle Ages (1990), distinguishes between two kinds of labyrinthine structure: the unicursal, where there is only one path, winding and turning, usually toward a center; and the multicursal, where the maze wanderer faces a series of critical choices, or bivia.~^"; 3: print "~Even in highly subversive narratives, such as the novels of Samuel Beckett or Italo Calvino's ",(italics) "If on a Winter's Night a Traveler . . ."," (1993), the reader is faced, topologically, with a unicursal maze. Yet there are some novels for which the post-Renaissance model is perfectly valid, for instance Julio Cortazar's ",(italics) "Rayuela", " (1966), in which the topology is multicursal. In yet others, such as Vladimir Nabokov's ",(italics) "Pale Fire", " (1962), it may be described as both unicursal and multicursal.~^"; 4: print "~A related but reverse problem is the tendency to describe the new text media as radically different from the old, with attributes solely determined by the material technology of the medium. In these analyses, technical innovation is presented as a cause of social improvement and political and intellectual liberation, a historical move away from the old repressive media. This kind of technological determinism (the belief that technology is an autonomous force that causes social change) has been refuted eloquently by Langdon Winner (1986), James W. Carey (1988), and others but continues, nevertheless, to dominate the discussion. In the context of literature, this has led to claims that digital technology enables readers to become authors, or at least blurs the (supposedly political) distinction between the two, and that the reader is allowed to create his or her own 'story' by 'interacting' with 'the computer.' The ideological forces surrounding new technology produce a rhetoric of novelty, differentiation, and freedom that works to obscure the more profound structural kinships between superficially heterogeneous media. Even the inspiring and perceptive essays of Richard Lanham (1993) are suffused by this binary rhetoric and, ultimately, dominated by politics at the expense of analysis.~^"; 5: print "~Cybertext, as now should be clear, is the wide range (or perspective) of possible textualities seen as a typology of machines, as various kinds of literary communication systems where the functional differences among the mechanical parts play a defining role in determining the aesthetic process. Each type of text can be positioned in this multidimensional field according to its functional capabilities, as we shall see in chapter 3. As a theoretical perspective, cybertext shifts the focus from the traditional threesome of author/sender, text/message, and reader/receiver to the cybernetic intercourse between the various part(icipant)s in the textual machine. In doing so, it relocates attention to some traditionally remote parts of the textual galaxy, while leaving most of the luminous clusters in the central areas alone. This should not be seen as a call for a renegotiation of 'literary' values, since most of the texts drawn attention to here are not well suited for entry into the competition for literary canonization.~^"; 6: print "~Even if important insights can be gained from the study of extraliterary phenomena with the instruments of literary theory (cautiously used), it does not follow that these phenomena are literature and should be judged with literary criteria or that the field of literature should be expanded to include them. In my view, there is nothing to be gained from this sort of theoretical imperialism, but much to lose: discussions of the 'literariness' of this or that verbal medium are ever in danger of deteriorating into a battle of apologetic claims and chauvinistic counterclaims. When much energy is spent on showing that ",(italics)"P"," is a perfectly deserving type of", (italics) "Q",", the more fundamental question of what ",(italics)"P"," is will often be neglected. These nonproductive (and nonacademic) campaigns in favor of marginal media or aesthetic forms of expression are pathetic signs of a larger problem, however: they illustrate only too well the partial and conservative state of the human sciences, in which nothing can be studied that is not already within a field; in which the type rather than the individual qualities of an object determines its value as an accepted member of some canon or other.~^"; 7:print "~The problem is not, finally, that literary critics use words like ",(italics)"labyrinth",", ",(italics)"game",", and ",(italics) "world"," as metaphors in their analyses of unicursal works but that this rhetoric seems to have blinded them to the existence of multicursal literary structures and to the possibility that the concept of labyrinth (in their post-Renaissance rendition) might have more analytic accuracy in connection with texts that function as game-worlds or labyrinths in a literal sense. However, this is not the place to criticize in detail the ontological problems resulting from a possible flaw in the terminology of narrative theory. Such an issue deserves at least a separate study, one not focused on the texts that are our primary concern here. Instead, this might be the place for suggesting the reinstatement of the old dual meaning of labyrinth, so that both unicursal and multicursal texts might be examined within the same theoretical framework.~^"; } ! if (self.counter < 11) ! <>; ! Alas, this causes a stack overflow. rtrue; ], React_before [x; Take: if (noun == mimesis) { "Aarseth steps in front of you. ~No! You may not have my mimesis! Its rupture is an essential part of my theoretical studies, and a troglodyte such as yourself could not possibly be expected to understand the intricacies of its torment.~"; } Examine, Look: if (noun == mimesis) { "Espen Aarseth blocks your path. ~Mimesis is too fragile to be imperiled by the likes of you.~"; } Sleep: print "Aarseth's voice is soothing, hypnotic, and extremely boring. You have no difficulty falling asleep.^^Some time later, you awaken with a splitting headache, and realize that the holodeck failsafes must have kicked in, preventing you from being bored to death.^^"; back_mus = NULL; ClearWindow(gg_objectwin); StopSound(gg_backchannel); while (child(player)) { x = child(player); move x to limbo; } while (child(dummy)) { x = child(dummy); move x to player; } espen.boredom = 0; playerTo(holodeck); rtrue; ], Life [; Give, Show: if (noun == erasmatron) { remove erasmatron; remove self; move crawford to prairie; give crawford general; self.boredom = 0; object_obj = 0; object_pic = 0; crawford.picture = pic_bloody_chris; ClearWindow(gg_objectwin); "Aarseth snatches the Erasmatron from you and shakes it violently. ~Oh, you think so, do you?~ he snarls, in reaction to something only he can hear. Foaming at the mouth, he gnaws at a corner of the Erasmatron. Finally, he sticks it in his back pocket and fixes you with a steely glare. ~There's someone out there who doesn't understand the first damn thing about ergodic texts, and I have to go get postmodern on his ass. 'Scuse me.~"; } ], each_turn [x; print "^Aarseth makes some hideously complicated point about "; switch (random(5)) { 1: print "intertextuality.^"; 2: print "mimesis.^"; 3: print "anergodic literature.^"; 4: print "ludic ", (italics) "divertissments",".^"; 5: print "the aesthetics of cyborg textuality.^"; } self.boredom++; if (self.boredom == 5) "^Your eyelids are becoming heavy as Aarseth drones on about literary theory."; if (self.boredom == 8) "^You can barely stay awake."; if (self.boredom > 9) { back_mus = NULL; ClearWindow(gg_objectwin); StopSound(gg_backchannel); while (child(player)) { x = child(player); move x to limbo; } while (child(dummy)) { x = child(dummy); move x to player; } print "^You pass out from the ennui induced by Aarseth's rhetoric. Luckily, the failsafes in the holodeck kick in, and you awaken some time later with a splitting headache.^^"; espen.boredom = 0; playerTo(holodeck); } ], ; ! You know Beevie. ! Check out groups.google.com if you don't ! The dialogue is authentic. The picture, perhaps, less so. StiffyMan Beevie "Brandon Van Every" with name "beevie" "brandon" "van" "every" "green" "slimy" "stinky" "bve" "troll", description "Brandon Van Every is a hideous mutant monstrosity, like a troll, but ten times worse.", picture pic_beevie, InitQuips [; self.QuipsOn(4,1,2,3,4); ], SayQ [line; interlocutor = self; switch (line) { 1: "~Hi! I'm Stiffy! Who are you?~"; 2: "~Are you really as smart as you say you are?~"; 3: "~Nice Beevie. Good Beevie.~"; 4: "~Wow, it must get lonely living here in this dank smelly cave.~"; 5: "~What's a killfile?~"; } ], respond [line; interlocutor = 0; self.QuipOff(line); switch(line) { default: if (self hasnt general) self.QuipOn(5); give self general; "~FUCK YOU! YOU'RE IN MY KILLFILE! NEXT!~"; } ], before [; Smell: "Yep. That's the mephitic stench, all right."; ], each_turn [; print "^Brandon Van Every muses, ~The depth of my creativity is so great that I just ", (italics) "can't", " be bothered to "; switch(random(7)) { 1: "check my attributions.~"; 2: "examine each trifling detail of the mundane world.~"; 3: "waste my time by writing adjectives.~"; 4: "show rather than tell.~"; 5: "spell my opponents' names correctly.~"; 6: "marshal actual evidence in support of my arguments.~"; 7: "take the time to research my opinions.~"; } ], react_before [; Smell: if (noun == nothing) <>; rfalse; ], Life [; Give, Show: if (noun == mimesis) { give mimesis general; print "The mimesis seems to suddenly perk up and glow with the satisfaction of being believed in.^^"; } "~Nice ", (name) noun,", kid. Whatever. Enough about you. Let's talk about my genius.~"; ], ;