! The Tale of the Kissing Bandit ! Copyright 2001 by J. Robinson Wheeler ! for SmoochieComp Started: 01-30-2001 3:00am ! Version history ! Alpha version 1.0 01-30-01 3:00am ! Alpha version 2.0 02-01-01 11:17pm ! Alpha version 3.0 02-07-01 03:34am Constant Story "The Tale of the Kissing Bandit"; Constant Headline "^by Cary Valentino^"; Release 1; Replace AskSub; Replace AskForSub; Replace TellSub; Replace AnswerSub; Replace InvWideSub; Replace InvTallSub; Replace StrongSub; Replace SwimSub; Replace KissSub; Include "Parser"; Attribute activeloop; Attribute kissed; Attribute paused; Attribute masked; Attribute approached; !Constant MAX_SCORE = 20; Constant SACK_OBJECT grouch_bag; Object LibraryMessages "lm" with before [; Miscellany: switch( lm_n ) { 5: print "^Would you like to RESTART, RESTORE a saved game"; if ( deadflag == 1 ) print ", UNDO your last move"; ", or QUIT?"; 19: << Examine player >>; 30: "That isn't important to the Kissing Bandit."; 38: "That verb is outside the Kissing Bandit's knowing."; } ]; Include "VerbLib"; Include "looptalk"; !Include "menus"; Class Room has light ; Class Detail has scenery ; Object game "game" with state 0, number 0, ; [ Initialise o; lookmode = 2; ! verbose on notify_mode = 0; ! notify off inventory_style = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT + CONCEAL_BIT; objectloop (o ofclass Character) { o.InitQuips(); } location = s_ballroom; ChangePlayer( Kissing_Bandit ); print "^^^The grand ballroom is awhirl with colour and gaiety on this, the night of the annual Governor's Ball. All of the choice mademoiselles are spinning in their lace finery, bewitching upright young suitors, lined up five deep to kiss a wrist.^^ The Kissing Bandit has other plans, though. First, he must be cautious. Find a fetching femme who has parted from her company, to rest alone in a shaded alcove. Or perhaps take a stroll on the veranda. Yes, perhaps... ah, you twirl your moustaches with delight. The Kissing Bandit shall have no trouble tonight finding a pair of pert lips, ready for a stolen kiss...^^^"; HitReturnOrSpace(); ]; Room s_ballroom "Grand Ballroom, south side", with description [; if ( self hasnt general ) { give self general; "The grand ballroom of the Emerson Hotel is a busy spin of high society's young and old. The Warthingtons, the Worthingtons, the Wellingtons (London and Boston branches), the Westons, the Wooltons, the Whitestones...^^ Hmm, maybe the room is arranged alphabetically, you think. The upper class loves hewing to arbitrary orders, almost by definition. It's up to the Kissing Bandit to inject a note of blessed confusion to the events."; } "The grand ballroom of the Emerson Hotel is a busy spin of high society's young and old. Exits lead in all directions. "; ], n_to center_ballroom, e_to se_ballroom, w_to sw_ballroom, s_to outside_ballroom, ne_to e_ballroom, nw_to w_ballroom, out_to outside_ballroom, in_to center_ballroom, ; Object -> Kissing_Bandit "the Kissing Bandit" with name 'kissing' 'Bandit', article 'the', description "Ha-HA! No one will ever guess the identity of the Kissing Bandit! Not even... uh... yourself!", kiss_count 0, number 0, each_turn [; if ( black_mask has worn && fake_mustache has worn ) give self masked; else give self ~masked; if ( Kissing_Bandit hasnt paused ) { Kissing_Bandit.number++; switch ( Kissing_Bandit.number ) { 2: if ( location == s_ballroom ) { give lily_whitestone ~scenery; move lily_whitestone to sw_ballroom; if ( lily_whitestone has general ) print "^Young Lily Whitestone, "; else print "^A lovely young demoiselle, "; "looking in her ruffled ball gown like a plenteous dish of peaches and whipped cream, parts from the general company. Fanning herself, she retreats to the west. "; } else if ( location == sw_ballroom ) { give lily_whitestone ~scenery; move lily_whitestone to sw_ballroom; if ( lily_whitestone has general ) print "^Young Lily Whitestone, "; else print "^A lovely young demoiselle, "; "looking in her ruffled ball gown like a plenteous dish of peaches and whipped cream, arrives from the central dance floor. Fanning herself, she relaxes in the shade. "; } Kissing_Bandit.number--; } } give self ~paused; ], before [; Kiss: "The Kissing Bandit kiss himself? Preposterous!"; ], has transparent proper animate masked ; Detail -> -> wrist "wrist" with name 'wrist' 'her', description "The Kissing Bandit is not interested in wrists at the moment.", before [; Kiss: "The Kissing Bandit did not put himself at risk tonight for the sake of a mere kiss on a wrist!"; ], ; Object -> -> black_mask "black mask" with name 'black' 'mask', description "The black mask protects your identity.", has clothing worn ; Object -> -> fake_mustache "fake moustache" with name 'fake' 'mustache' 'mustaches' 'moustache' 'moustaches', description "The moustache conceals your identity and adds a touch of melodrama to the Kissing Bandit's appearance, you do think. ", before [; Twirl: "You twirl your moustaches. Ha-HA!"; ], has clothing worn ; Object -> -> pair_of_buckled_boots "pair of buckled boots" with name 'pair' 'of' 'buckled' 'boot' 'boots', description "Ah, these are magic boots, boots full of secrets. They allow the Kissing Bandit to move swiftly and silently; to sneak and to steal close without detection; to climb and jump like a jackrabbit; and to run with the fleetness of quicksilver." has clothing worn ; Object -> -> velvet_cloak "velvet cloak" with name 'velvet' 'cloak', description "The velvet cloak allows you to melt into shadows." has clothing worn ; Object -> -> rakish_hat "rakish hat" with name 'rakish' 'hat', description "The rakish hat is becomingly sly." has clothing worn ; Object -> -> locket "locket" with name 'locket', description [; print "The locket is made of carved gold, inlaid with delicate ornaments. "; <>; ], before [; Receive: "You can't fit that into the locket."; LetGo: if ( noun == silhouette ) "You have vowed that you shall never take the silhouette out of the locket, nor remove the locket, until you win the heart of Marianne."; ], after [; Open: print "Opening the locket reveals a silhouette"; if ( tiny_lock_of_brown_hair in locket ) print " and a tiny lock of brown hair"; print ".^"; if ( self hasnt general ) { give self general; "^Ah! Your heart breaks once again over your one true lost love! Fair Marianne, twas you that spurned my love, flaming a fury that turned one simple boy into this dashing rogue, that steals kisses by night! If only I could find you..."; } rtrue; ], has clothing worn container openable ; Object -> -> -> silhouette "silhouette" with name 'silhouette', description "It is a silhouette of Marianne, the fair creature that broke your heart. It is the only image you have of her. Even your memories of her face have been blurred by tears.", before [; Kiss: "You kiss the silhouette; it is, alas, a pale imitation. It leaves ashes in your mouth."; Take: "You shall never take the silhouette out of the locket, nor remove the locket, until you win the heart of Marianne."; ], ; Object -> -> -> tiny_lock_of_brown_hair "tiny lock of brown hair" with name 'tiny' 'lock' 'of' 'brown' 'hair', description "A lock of Marianne's hair. The gently curved strands catch the light in autumn colours of brown, red, and gold.", before [; Kiss: "You kiss the tiny lock of hair. If only, you think with amusement, it were still attached to the one you love."; ], ; Object -> -> grouch_bag "grouch bag" with name 'grouch' 'bag', description [; print "The grouch bag is special; a magician once gave it to you in return for helping him escape from persecutors. It is small and light, made of oiled leather. You have found that it can hold many things, including your entire costume -- cloak, boots, and all.^^"; <>; ], has clothing worn openable ; Detail -> young "high society young" with name 'young' 'high' 'society', has animate pluralname ; Detail -> old "high society old" with name 'old' 'high' 'society', has animate pluralname ; Detail -> The_Warthingtons "Warthingtons" with name 'warthingtons', article "the" has animate pluralname ; Detail -> The_Worthingtons "Worthingtons" with name 'worthingtons', article "the" has animate pluralname ; Detail -> The_London_Wellingtons "London Wellingtons" with name 'london' 'wellingtons', article "the" has animate pluralname ; Detail -> The_Boston_Wellingtons "Boston Wellingtons" with name 'boston' 'wellingtons', article "the" has animate pluralname ; Detail -> The_Westons "Westons" with name 'westons', article "the" has animate pluralname ; Detail -> The_Wooltons "Wooltons" with name 'wooltons' 'woolltons', article "the" has animate pluralname ; Detail -> The_Whitestones "Whitestones" with name 'whitestones', article "the" has animate pluralname ; Object -> lily_whitestone "Lily Whitestone" with name 'peaches' 'and' 'whipped' 'cream' 'dameoiselle' 'damoiselle' 'demoiselle' 'damsel' 'lily' 'whitestone' 'lovely' 'young' 'woman', description [; if ( self hasnt general ) { give self general; "Why, it's little Lily Whitestone herself! She's chanced to escape the plump pursed lips of the Kissing Bandit on other occasions... but no one ever escapes your kisses for long! "; } "It's young Lily Whitestone, looking in her ruffled ball gown like a plenteous dish of peaches and whipped cream. "; ], describe [; if ( self has kissed ) "^Young Lily Whitestone stands here, looking flushed. "; if ( self hasnt general ) "^Young Peaches-and-Cream stands here, fanning herself lightly. "; "^Lily Whitestone is here. "; ], life [; Attack: "Good heavens! The Kissing Bandit's intentions stop at the innocent kiss!"; ], before [; Kiss: if ( player hasnt masked ) "The Kissing Bandit cannot act unless his identity is properly disguised. "; if ( location == s_ballroom ) "The Kissing Bandit cannot act unless his chosen lady is stationed alone... "; if ( self hasnt kissed ) { give self kissed; Kissing_Bandit.kiss_count++; print "You steal closer, closer, closer... and plant a juicy one right on her gleaming rosebud lips! She makes a tiny squealing noise that stops short, her lips tighten as her face pulls into a smile.^^ Lily Whitestone, a smiler -- imagine!^^ But, now it is time to flee. With a twirl of your cape and a bow, you steal away into the night...^"; GoToGardenPark(); rtrue; } "The Kissing Bandit steals but one kiss per lady fair."; ], has animate female scenery proper ; Room e_ballroom "Grand Ballroom, east side" with description "This side of the ballroom is open to the night air, which is not much cooler than the room itself on this moist spring evening. A set of French doors leads east out onto the veranda. ", n_to "You decline to circulate too far from one of your planned exits from the building. ", e_to veranda, w_to center_ballroom, s_to sw_ballroom, sw_to s_ballroom, out_to outside_ballroom, in_to center_ballroom, ; Room w_ballroom "Grand Ballroom, west side" with description [; if ( self hasnt general ) { give self general; "This side of the ballroom is much cooler than the other, although there is not much circulation of the air.^^A thick, forest-green drapery conceals a small private door -- perfectly concealed to all but the trained eyes of the Kissing Bandit. "; } "This side of the ballroom is much cooler than the other, although there is not much circulation of the air. A thick drapery conceals a small private door to the west. "; ], n_to "You decline to circulate too far from one of your planned exits from the building. ", e_to center_ballroom, w_to private_door, s_to sw_ballroom, se_to s_ballroom, out_to outside_ballroom, in_to private_door, ; Room veranda "On the Veranda" with description "The moonlight is exquisite, like milky champagne flowing over the city. The air is husky, humid, and fresh -- redolent of garden greenery and buzzy with insects of the night. Moths to flames -- a metaphor for the Kissing Bandit, you laugh to yourself.", w_to e_ballroom, e_to veranda_balcony, d_to veranda_balcony, out_to veranda_balcony, in_to e_ballroom, ; Object -> gabriella_cavortini "Gabriella Cavortini" with name 'gabby' 'gabriella' 'cavortini' 'striking' 'young' 'woman', description [; if ( self hasnt general ) { give self general; "Ahhh, it's none other than Gabriella Cavortini, enjoying a cocktail by moonlight. Her painted lips touch the tip of the glass, leaving a glossy imprint.^^ An interlocked young couple return to the ballroom. Thus the Kissing Bandit finds himself alone with an exquisite find! "; } "It's Gabriella Cavortini, alone and enjoying a cocktail by moonlight. "; ], describe [; if ( self has kissed ) "^Gabriella is here, hand to her chest, breathing heavily."; if ( self hasnt general ) "^A striking young woman in a sheathlike gown of daring purple is standing here, looking out over the balcony at the lights of the city below. "; "^Gabriella Cavortini is here. "; ], life [; Attack: "Good heavens! The Kissing Bandit's intentions stop at the innocent kiss!"; ], before [; Kiss: if ( player hasnt masked ) "The Kissing Bandit cannot act unless his identity is properly disguised. "; if ( self hasnt kissed ) { give self kissed; Kissing_Bandit.kiss_count++; print "The moment is now! The Kissing Bandit's blood is hot in his breast! The young woman spins, her mouth gently open in "; if ( self has approached ) print "a feigned ~O~ "; else print "an ~O~ "; print "of surprise --^^ The kiss is hot, and warm, and returned. A spontaneous instant of passion...^^ And then The Kissing Bandit breaks off, bows, leaps over the veranda, and steals away into the night...^"; GoToGardenPark(); rtrue; } "The Kissing Bandit kisses each but once."; ], has animate female proper ; Object -> veranda_balcony "balcony" with name 'veranda' 'balcony', description "The balcony is made of carved pink stone, set in small columns and capped by a wide sandstone rail. Over it and below, you see tree branches and street cobblestones, slick and shiny orange in the gaslight. ", door_to [; print "You leap the veranda balcony and escape into the night!^"; HitReturnOrSpace(); game.state = 1; return( garden_park ); ], door_dir out_to, has scenery door open ; Room se_ballroom "Grand Ballroom, southeast corner" with description "This corner of the ballroom is warm and redolent of potent beverages, which are being served behind a mirrored bar. Sulty night air from the open veranda doors to the north gives the area a dreamlike feel.", n_to e_ballroom, w_to salons, ne_to veranda, nw_to center_ballroom, sw_to outside_ballroom, out_to outside_ballroom, in_to center_ballroom, ; Room sw_ballroom "Grand Ballroom, southwest corner" with description "This corner of the ballroom is cool and shaded, with a russet portico leading west to a series of private salons. ", n_to w_ballroom, e_to s_ballroom, w_to salons, ne_to center_ballroom, se_to outside_ballroom, out_to outside_ballroom, in_to center_ballroom, ; Room salons "Private salons" with description "This slightly curved room with gold, ornamented wallpaper and settees with silk pillows provides an intermediate sitting area, bathed in yellow candlelight. Seating is plentiful, and a set of private salon doors lead northwest, west, and north. The door to the west is closed; the other two are open. ", n_to smoking_room, e_to sw_ballroom, w_to "You hear the sound of giggling and thumping behind the door; two lovers are there, privately entwined, and you shall not disturb them until they finish and withdraw.", nw_to nw_salon, out_to sw_ballroom, ; Room nw_salon "Changing room" with description "Quaint and curious costumes, from undergarments to overcoats, in a variety of old-fashioned fashions are hung with care from brass rods that span the room. A full length mirror startles you with your own reflection, as well as tricking even your keen eye into believing there is more depth to this room than there really is.", se_to salons, out_to salons, ; Room center_ballroom "Grand Ballroom, center" with description "You dance in an intoxicated swirl. ", door_to [; "You dance in an intoxicated swirl for a few minutes, and then return, laughing, to where you started. "; ], found_in e_ballroom w_ballroom s_ballroom sw_ballroom se_ballroom, door_dir in_to, has scenery door open ; Room outside_ballroom "Emerson Hotel, second floor" with description "Vast crimson carpeting tongues outward from the mouth of the ballroom portal and sprials slowly clockwise down the broad staircase to the public lobby of the hotel. ", n_to s_ballroom, d_to broad_staircase, out_to broad_staircase, in_to s_ballroom, ; Object -> broad_staircase "staircase" with name 'broad' 'staircase' 'stair' 'case' 'stairs' 'steps' 'step', description "The broad stairleads down.", door_to [; if ( black_mask has worn || fake_mustache has worn ) "It would be wise to remove your disguise before you attempt to leave through the hotel's front doors. "; print "You descend the broad staircase, and escape into the night!^"; HitReturnOrSpace(); game.state = 1; return( garden_park ); ], door_dir out_to, has scenery door open ; Room smoking_room "Smoking room" with description [; print "The curt spice of Turkish tobacco raids your senses and leaves them stinging. The ceiling is sooty from years of cigar and cigarette smoke, as are the paintings -- one of which has recently been moved, revealing a rectangular outline of a cleaner, lighter wall behind. Old books, charged with acidic odours, stand yellowing on ceiling-high bookcases. Large, masculine furnishings form a circle in the center of the room. "; if ( private_door hasnt open ) "A short, camouflaged door lies uniquely hidden between two of the bookcases on the east wall."; "The door to the ballroom is open to the east."; ], e_to private_door, s_to salons, in_to private_door, out_to "Out: You'll have to specify either east or south.", ; Object -> private_door "door" with name 'short' 'camoflaged' 'camouflaged' 'hidden' 'private' 'door', description [; if ( location == smoking_room ) "The door leads east into the ballroom. "; "The door leads west out of the ballroom. "; ], door_to [; if ( location == smoking_room ) return w_ballroom; return smoking_room; ], door_dir [; if ( location == smoking_room ) return e_to; return w_to; ], ! with_key stone_key, found_in smoking_room w_ballroom, has static door openable ; Room garden_park "Garden park" with description "The luscious gardens, abloom in the early spring, send forth their heady aromas on the nuzzling breezes. Aloft, too, are the erotic perfumes of the finely dressed ladies in white, walking two by two in the early eve, innocent as does, poised as summer swans.", cant_go "Ah, but the Kissing Bandit has unfinished business here in the park...", e_to [; move choice_maiden to behind_tree; print "You sneak east. The pale line of the maiden's neck glows in the twilight. Perhaps the Kissing Bandit should kiss the neck, not the lips? Ah...!^^ The Bandit stations himself sneakily behind a tree. The maiden stirs, looks left and right, but not behind. Her head tilts down again, her eyes on the page. The Bandit's eyes are on her shoulders, spilling down their slopes. The benchwood blocks further views -- until a slight movement reveals the slender crescent of her neck once again.^^ Time now to steal forward. The sneaking is the best part.^"; PlayerTo( behind_tree, 1 ); rtrue; ], ; Object -> choice_maiden "maiden" with name 'choice' 'maiden' 'she' 'woman' 'girl' 'femme', description "She is absorbed in the novel she is reading.", describe [; if ( self has kissed ) "^The maiden is here, looking more defiant than frightened."; if ( self hasnt general ) { give self general; print "^A choice maiden sits alone on a bench, reading a steamy novel by gaslight. Mwuhaha-HA! The Smooching Bandit has "; if ( Kissing_Bandit.kiss_count > 0 ) print "chosen his second of the evening. "; else print "at last chosen his first of the evening. "; "A burning buss on those pink smackers will do, will surely do..."; } "^A maiden sits here, engrossed in a novel. "; ], life [; Attack: "Good heavens! The Kissing Bandit's intentions stop at the innocent kiss!"; ], before [; Kiss: if ( player hasnt masked ) "The Kissing Bandit cannot act unless his identity is properly disguised. "; if ( location == garden_park ) "Ah, before the kiss, you must sneak! Sneak east, then around the tree, then up from behind..."; if ( self hasnt kissed ) { give self light; "Where do you want to kiss her, on her graceful neck or on her rosy lips?"; } "Ah, but she gives chase! Her blood runs as hotly as your own! "; ], has animate female transparent ; Object -> -> steamy_novel "novel" with name 'steamy' 'romance' 'novel', description "You recognise it at once, for it is penned by your own hand! A great, passionate work, published under a pseudonym, of course. And here sits one of your captive audience, immersed in the florid prose of Chapter 10! If only she knew... ha-HA! If only she knew!", ; Object -> -> her_neck "her neck" with name 'her' 'neck' 'delicate' 'graceful' 'crescent' 'translucent', description "So delicate, it is almost translucent... near enow to drive the Kissing Bandit mad!", before [; Kiss: give choice_maiden kissed; Kissing_Bandit.kiss_count++; print "You lean in, but the maiden feels your hot breath on her neck and whirls!^^ ~The Bandit! The Bandit!~ she shrieks. So -- she has heard of the Kissing Bandit! You cannot help but be flattered, and so you smile. At the sight of your pearly teeth, the maiden gasps and takes off running to the west.^^ You leap atop the bench and cry, ~Ha-ha-HA! You cannot escape the Kissing Bandit!~^"; game.state = 2; rtrue; ], has proper ; Object -> -> her_lips "her rosy lips" with name 'her' 'rosy' 'lip' 'lips' 'pink' 'smacker' 'smackers' 'mouth', description "Blushed and full... She bites them softly as she reads... ", before [; Kiss: give choice_maiden kissed; Kissing_Bandit.kiss_count++; print "You lean around, catching her by surprise! Your mouths touch, but the maiden resists! Your puckered lips frighten her, and why shouldn't they?^^ ~The Bandit! The Bandit!~ she shrieks. So -- she has heard of the Kissing Bandit! You cannot help but be flattered, and so you smile. At the sight of your pearly teeth, the maiden gasps and takes off running to the west.^^ You leap atop the bench and cry, ~Ha-ha-HA! You cannot escape the Kissing Bandit!~^"; game.state = 2; rtrue; ], has proper ; Room behind_tree "Garden park" with description [; print "The luscious gardens, abloom in the early spring, send forth their heady aromas on the nuzzling breezes. "; if ( choice_maiden hasnt approached ) "You are poised silently behind a tree. "; "You are positioned above and behind the maiden. "; ], cant_go [; if ( choice_maiden hasnt kissed ) "Ah, but the Kissing Bandit has unfinished business here in the park..."; "Ah, but the choice maiden gives chase! Pursue her you must!"; ], w_to [; if ( choice_maiden hasnt kissed ) "Ah, but the Kissing Bandit has unfinished business here in the park..."; ! <>; print "The maiden runs, but she is not too fast. Touching a secret button on your lapel, the boots release hidden springworks, lending superhuman fleetness to your stride.^^ The maiden looks behind, sees you gaining, and nearly swoons. Surely it is your gleaming mustaches that frighten her! She recovers and runs to the north, her hair shaking down into shimmering tresses."; PlayerTo( chase1 ); rtrue; ], ; Room chase1 "Garden park" with description "The luscious gardens, abloom in the early spring, send forth their heady aromas on the nuzzling breezes. Alas, they give no cover for the fleeing maiden! ", cant_go "Ah, but the choice maiden gives chase! Pursue her you must!", ; ! Insert more routines here [ HitAnyKey i; print "^[Hit any key.]^"; @read_char 1 0 0 i; "^"; ]; [ HitReturnOrSpace i; print "^^[Hit return or space to continue.]^"; do { @read_char 1 0 0 i; } until (i==32 or 10 or 13); "^"; ]; [ GoToGardenPark; HitReturnOrSpace(); PlayerTo( garden_park ); game.state = 1; rtrue; ]; [ DeathMessage; switch(deadflag) { 3: print "The End"; 4: print "Game over"; } ]; [ ParserError pe i j; if ( pe == ITGONE_PE ) { i = PronounValue('her'); j = PronounValue('it'); if ( i ~= j ) { if ( i == lily_whitestone || i == gabriella_cavortini || i == choice_maiden ) { PrintOrRun(i, description); rtrue; } } rfalse; } rfalse; ]; ! You may want to Replace some or all of AskSub, AskForSub, TellSub, ! GiveSub, ShowSub, and AnswerSub with: [ AskSub; "Please use >TALK TO PLAYER to interact in this game."; ]; [ AskForSub; "Please use >TALK TO PLAYER to interact in this game."; ]; [ TellSub; "Please use >TALK TO PLAYER to interact in this game."; ]; [ AnswerSub; "Please use >TALK TO PLAYER to interact in this game."; ]; [ InvWideSub; inventory_style = FULLINV_BIT + ENGLISH_BIT + RECURSE_BIT + CONCEAL_BIT; ; ]; [ InvTallSub; inventory_style = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT + CONCEAL_BIT; ; ]; Include "Grammar"; ! Insert new grammar lines here [ QuitySub; quit; ]; [ KickSub; "Save it for the bugs. "; ]; [ LaughSub; "Ha-ha-HA! "; ]; [ LaughAtSub; "Good way to get your head busted open."; ]; [ ReplySub; "I don't know how to reply to that. "; ]; [ CleanSub; print_ret (The) noun, " looks a little cleaner now. "; ]; [ ClimbOutSub; "But you aren't in anything at the moment. "; ]; [ LookBehindSub; print_ret "There's nothing of interest behind ", (the) noun, ". "; ]; [ XyzzySub; if ( game.state == -1 ) { HitAnyKey(); rtrue; } "Nothing happens. ";]; [ AboutSub; banner(); "Type CREDITS for more information."; ]; [ CreditsSub; "Appreciative thanks to Emily Short for dreaming up SmoochieComp."; ]; [ GameHelpSub; "The Kissing Bandit needs no one's help!"; ]; [ HelpSub; "That isn't important."; ]; [ StrongSub; "You mutter a naughty oath to yourself."; ]; [ FuckSub; if (noun==0) "You mutter a few oaths and curses to yourself."; "Good heavens! The Kissing Bandit's intentions stop at the innocent kiss!"; ]; [ StandSub; "You're already on your feet. "; ]; [ SwimSub; L__M(##Swim,1,noun); ]; [ ScratchBodySub; "You scratch yourself."; ]; [ ScratchItchSub; "You haven't got an itch -- except to steal some kissies."; ]; [ ScratchFaceSub; "You scratch your face."; ]; [ ScratchHandsSub; "You scratch your hands a little bit, get some circulation going in them."; ]; [ ScratchThumbsSub; "You scratch your thumbs."; ]; [ ScratchWristsSub; "You scratch your wrists. It feels good."; ]; [ RubEyesSub; "You shouldn't rub your eyes."; ]; [ ExamineItchSub; "You haven't got an itch -- except to steal some kisses."; ]; [ ExamineFaceSub; "On your face are a black mask and a fake mustache."; ]; [ ExamineBodySub; << Examine player >>; ]; [ ExamineHandsSub; "Your hands are just fine."; ]; [ ExamineThumbsSub; "Your thumbs are in good shape."; ]; [ ExamineWristsSub; "Your wrists are just fine."; ]; [ ExamineHeadSub; "On your head is a rakish hat."; ]; [ ExamineFeetSub; "Your feet are warm in your shiny buckled boots. "; ]; [ ImpressSub; if (noun==0) "Impressive."; print_ret (name) noun, " isn't impressed."; ]; [ HugSub; "Hugs? Pah! Hugs are not what the Kissing Bandit is after!"; ]; [ TwirlSub; "I don't know how to twirl that. "; ]; [ KissSub; print (The) noun; if ( noun has pluralname ) print " aren't"; else print " isn't"; " a proper target for the Kissing Bandit!"; ]; [ DanceSub; "You dance in an intoxicated swirl for a few minutes, and then return, laughing, to where you started. "; ]; [ SneakSub; if ( lily_whitestone in location ) { if ( lily_whitestone has approached ) "You are already as near as a breath away from her... ! "; if ( location == sw_ballroom ) { give lily_whitestone approached; "You steal close up behind the young lady. Her skin is lustrous and glowing. She turns slightly, her lips lightly parted, her breath warming the air..."; } "There is as yet no suitable cause for sneaking. "; } if ( gabriella_cavortini in location ) { if ( gabriella_cavortini has approached ) "You are already as near as a breath away from her, and yet still she feigns innocence as to your presence... Yea, the Bandit's passion for this kiss grows feverish! "; give gabriella_cavortini approached; "You take a stealthy step closer, but you are aware in that instant that this one already knows you are here, though she pretends not to have seen you. Perhaps, too, she knows what you want... Oh, she is deliciously dangerous, this one! "; } if ( choice_maiden in location ) { if ( location == garden_park ) { <>; } if ( game.state == 1 ) { if ( choice_maiden has approached ) "You are already as near as a breath away from her... ! "; give choice_maiden approached; "You sneak up right behind the maiden. You are invisible to her! The Kissing Bandit never betrays himself until the moment of the kiss... the inevitable kiss..."; } "The Kissing Bandit cannot sneak and be in hot pursuit at the same time! "; } "The Kissing Bandit does not waste his carefully aquired powers of stealth except to approach for a kiss."; ]; [ SneakDirSub i j k thedir; i = parent(player); if ( parent( noun ) ~= compass ) "A moment of confusion for the Kissing Bandit: sneak what? "; thedir=noun.door_dir; j=i.thedir; k=ZRegion(j); if ( noun == u_obj ) <>; if ( noun == d_obj ) { if ( location == veranda ) { PlayerTo( veranda_balcony ); rtrue; } if ( location == outside_ballroom ) { PlayerTo( broad_staircase ); rtrue; } if ( game.state == 0 ) "Alas, the Kissing Bandit cannot sneak through the floor. "; "Alas, the Kissing Bandit cannot sneak through the ground. "; } if ( k==0 || j==0 ) { if ( game.state == 0 ) "Alas, the Kissing Bandit cannot sneak through walls. "; if ( game.state == 1 ) { if ( location == garden_park ) "The only profitable direction for the Kissing Bandit to now sneak is east..."; "The only direction the Kissing Bandit wishes now to sneak is closer... closer...!"; } "The Kissing Bandit cannot sneak and be in hot pursuit at the same time! "; } switch( noun ) { n_obj: print "You sneak silently to the north"; if ( location == s_ballroom ) print ", into the bustling gaiety of the ballroom center. "; else print "...^"; e_obj: if ( location == veranda ) <>; if ( location == garden_park ) <>; print "You sneak silently to the east"; if ( location == w_ballroom ) print ", into the bustling gaiety of the ballroom center. "; print "...^"; s_obj: print "You sneak silently to the south...^"; w_obj: print "You sneak silently to the west"; if ( location == e_ballroom ) print ", into the bustling gaiety of the ballroom center. "; else print "...^"; ne_obj: print "You sneak silently to the northeast"; if ( location == sw_ballroom ) print ", into the bustling gaiety of the ballroom center. "; else print "...^"; nw_obj: print "You sneak silently to the northeast"; if ( location == se_ballroom ) print ", into the bustling gaiety of the ballroom center. "; else print "...^"; se_obj: print "You sneak silently to the southeast...^"; sw_obj: print "You sneak silently to the southwest...^"; } <>; ]; [ ApproachSub; if ( lily_whitestone in location ) { if ( lily_whitestone has approached ) "You are already as near as a breath away from her... ! "; if ( location == sw_ballroom ) { give lily_whitestone approached; "You steal close up behind the young lady. Her skin is lustrous and glowing. She turns slightly, her lips lightly parted, her breath warming the air..."; } "There is as yet no suitable cause for sneaking. "; } if ( gabriella_cavortini in location ) { if ( gabriella_cavortini has approached ) "You are already as near as a breath away from her, and yet still she feigns innocence as to your presence... Yea, the Bandit's passion for this kiss grows feverish! "; give gabriella_cavortini approached; "You take a stealthy step closer, but you are aware in that instant that this one already knows you are here, though she pretends not to have seen you. Perhaps, too, she knows what you want... Oh, she is deliciously dangerous, this one! "; } if ( choice_maiden in location ) { if ( location == garden_park ) { <>; } if ( game.state == 1 ) { if ( choice_maiden has approached ) "You are already as near as a breath away from her... ! "; give choice_maiden approached; "You sneak up right behind the maiden. You are invisible to her! The Kissing Bandit never betrays himself until the moment of the kiss... the inevitable kiss..."; } "The Kissing Bandit cannot sneak and be in hot pursuit at the same time! "; } "The Kissing Bandit does not waste his carefully aquired stealth on such as that."; ]; [ EscapeSub; if ( game.state == 0 ) { print "The Kissing Bandit grows suffocated by these surroundings! "; switch ( location ) { sw_ballroom: if ( lily_whitestone in location ) { print "With a wink to the young demoiselle, and a finger to the side of your nose, you spin on your heels and dash away into the night...^"; } print "You spin on your heels and dash away into the night...^"; GoToGardenPark(); rtrue; veranda: print "Bowing to the untouched maiden, you propel yourself over the balcony, alight on the cobblestones, and steal quickly away into the night...^"; GoToGardenPark(); rtrue; outside_ballroom: PlayerTo( broad_staircase ); rtrue; } print "With a dashing twirl of your cape, you turn and steal away into the night ..."; GoToGardenPark(); rtrue; } if ( game.state == 1 ) { switch ( location ) { garden_park: "Ah, but the Kissing Bandit has unfinished business here in the park..."; } } "The Kissing Bandit's blood is too hot to abandon the chase!"; ]; [ KissUnknownSub; if ( lily_whitestone in location ) <>; if ( gabriella_cavortini in location ) <>; if ( choice_maiden in location ) <>; "The Kissing Bandit's trained eyes do not see any lips to be kissed here."; ]; [ StealSub; if ( parent( noun ) == compass ) <>; "The Kissing Bandit is not a thief! He steals only kisses; strange, passionate kisses..."; ]; [ StealUnknownSub; print "(a kiss)^"; <>; ]; [ LurkSub; "You lurk, blending silently into the shadows. "; ]; [ FollowSub; if ( game.state == 0 ) { if ( noun == lily_whitestone || noun == 0 ) { if ( noun == 0 ) { if ( location == veranda ) "This slender creature seems not interested in moving from here... "; if ( lily_whitestone has general ) print "(Lily Whitestone)^"; else print "(the demoiselle)^"; } if ( lily_whitestone in location ) { if ( location == s_ballroom ) { give Kissing_Bandit paused; Kissing_Bandit.number = 3; give lily_whitestone ~scenery; move lily_whitestone to sw_ballroom; if ( lily_whitestone has general ) print "Young Lily Whitestone, "; else print "A lovely young demoiselle, "; print "looking in her ruffled ball gown like a plenteous dish of peaches and whipped cream, parts from the general company. Fanning herself, she retreats to the west, followed closely -- but not too closely -- by you, the Kissing Bandit... ^^"; PlayerTo( sw_ballroom ); rtrue; } "She seems to have stationed herself here, alone, for a few minutes' gentle rest... "; } if ( location == s_ballroom ) { print "Slyly, silently, you sneak to the west, in bold pursuit... ^^"; PlayerTo( sw_ballroom ); rtrue; } if ( location == sw_ballroom ) "She seems to have stationed herself here, alone, for a few minutes' gentle rest... "; if ( lily_whitestone in sw_ballroom && sw_ballroom has visited ) { print "Silently, stealthily, you return to her; your heart beats fast within your breast as you near... ^^"; PlayerTo( sw_ballroom ); rtrue; } "Ah, but to where...? "; } if ( noun == gabriella_cavortini ) { if ( location == veranda ) "This slender creature seems not interested in moving from here... "; if ( veranda hasnt visited ) "Ah, but where might she be? "; print "Silently, stealthily, you return to her; your heart beats fast within your breast as you return to the veranda... ^^"; PlayerTo( veranda ); rtrue; } } if ( game.state == 1 ) { "She is engrossed in her reading, the dear creature -- and thus no knowledge that she perhaps should take flight... "; } switch( location ) { behind_tree: chase1: } ]; [ CantFollowSub; "That is not something the Kissing Bandit can pursue. "; ]; [ Followable; switch(scope_stage) { 1: rfalse; 2: if ( game.state == 0 ) { PlaceInScope( lily_whitestone ); PlaceInScope( gabriella_cavortini ); rfalse; } PlaceInScope( choice_maiden ); rfalse; 3: "Alas, she is beyond even the Kissing Bandit's abilities to follow at this time, and in this place."; } ]; [ NeckSub; if ( game.state == 1 && location == behind_tree && choice_maiden has light ) <>; "Necking is a bit crass for the Kissing Bandit. Smooching, yes, necking... no."; ]; [ NeckWithSub; "That isn't a suitable target for the Kissing Bandit! Besides, necking is a bit crass for the Kissing Bandit. Smooching, yes, necking... no."; ]; [ SnogSub; "Snogging is a bit crass for the Kissing Bandit. Smooching, yes, snogging... no."; ]; [ BadSnogSub; "That isn't a suitable target for the Kissing Bandit! Besides, snogging is a bit crass for the Kissing Bandit. Smooching, yes, snogging... no."; ]; [ LipsSub; if ( game.state == 1 && location == behind_tree && choice_maiden has light ) <>; "That verb is outside the Kissing Bandit's knowing."; ]; ! Verbs Extend 'look' * 'out' noun -> Search * 'behind' noun -> LookBehind; Extend 'climb' last * 'out' -> Exit * 'out' noun -> ClimbOut; Verb 'yank' 'tug' = 'pull'; Extend 'pull' last * "on" noun -> Pull; Extend only 'answer' replace * creature -> TalkTo * noun -> Reply; Extend only 'clean' first * noun -> Clean * 'up' noun -> Clean * noun 'up' -> Clean; Verb 'hint' * -> GameHelp; Verb 'help' * -> GameHelp * noun -> Help * 'up' noun -> Help * noun 'up' -> Help; Verb 'neaten' 'tidy' * noun -> Clean * 'up' noun -> Clean * noun 'up' -> Clean; Verb 'reply' 'respond' * noun -> Reply * 'to' creature -> TalkTo * 'to' noun -> Reply; Verb 'leap' = 'jump'; Extend 'jump' * noun -> Jump * 'up' -> Jump * 'up' 'to' noun -> Jump * 'on'/'at' creature -> Attack * 'on' noun -> Enter * 'to'/'at'/'in'/'inside'/'for'/'into' noun -> Jump * 'over' 'to' noun -> Jump * 'out' noun -> ClimbOut; Extend only 'speak' * 'in' creature -> TalkTo * 'in' noun -> TalkTo ; Extend 'talk' * 'in' creature -> TalkTo * 'in' noun -> TalkTo ; Verb 'stop' 'halt' 'abort' * -> No; Extend 'drop' first * noun 'at'/'against'/'on'/'onto' noun -> ThrowAt; Extend 'close' * noun 'with' held -> Close; Verb 'slap' = 'attack'; Verb 'zz' = 'wait'; Verb 'kick' * noun -> Kick; Verb 'laugh' 'snort' 'hee' 'ha' 'hah' 'heh' 'har' 'giggle' 'chortle' 'snicker' 'guffaw' * -> Laugh * 'at' noun -> LaughAt; Verb meta 'quity' 'xquit' * -> Quity; Verb meta 'xyzzy' * -> Xyzzy; Extend 'drop' first * held -> Drop; Extend only 'throw' * held 'at'/'against'/'on'/'onto' noun -> ThrowAt; Extend 'go' * 'out' -> Exit; Extend only 'fuck' replace * -> Fuck * noun -> Fuck; Verb 'rape' 'ravage' * -> Fuck * noun -> Fuck; Verb 'caress' = 'touch'; Extend only 'take' first * 'flight' -> Escape * 'leave' -> Escape * 'my'/'your'/'our' -> Escape; Extend 'get' replace * 'away'/'flight' -> Escape * 'up' -> Stand * 'out'/'off' -> Exit * multi -> Take * 'in'/'into'/'on'/'onto' noun -> Enter * 'off' noun -> GetOff * multiinside 'from' noun -> Remove * 'it' 'on'/'up' -> Fuck * 'it' 'on' 'with' noun -> Fuck; Extend 'stand' replace * -> Stand * 'up' -> Stand * 'on' noun -> Enter; Verb 'scratch' 'scrape' 'claw' * -> ScratchBody * 'my' 'forehead'/'head' -> ScratchItch * 'it'/'itch'/'forehead'/'head' -> ScratchItch * 'nose'/'face'/'mouth'/'eyes'/'eye' -> ScratchFace * 'my' 'nose'/'face'/'mouth'/'eyes'/'eye' -> ScratchFace * 'crotch'/'stomach'/'gut'/'leg'/'legs' -> ScratchBody * 'my' 'crotch'/'stomach'/'gut'/'leg'/'legs' -> ScratchBody * 'arm'/'arms'/'chest'/'body'/'foot'/'feet' -> ScratchBody * 'my' 'arm'/'arms'/'chest'/'body'/'foot'/'feet' -> ScratchBody * 'hand'/'hands'/'finger'/'fingers' -> ScratchHands * 'my' 'hand'/'hands'/'finger'/'fingers' -> ScratchHands * 'my' 'thumb'/'thumbs' -> ScratchThumbs * 'wrist'/'wrists' -> ScratchWrists * 'my' 'wrist'/'wrists' -> ScratchWrists; Extend 'rub' first * 'eye'/'eyes' -> RubEyes; Extend only 'hug' replace * -> Hug * noun -> Hug; Extend 'kiss' first * noun -> Kiss; Verb 'smooch' = 'kiss'; Verb 'buss' = 'kiss'; Verb 'plant' * 'one' 'on' creature -> Kiss; Extend 'examine' * 'itch'/'forehead' -> ExamineItch * 'nose'/'face'/'mouth'/'eyes'/'eye' -> ExamineFace * 'crotch'/'stomach'/'gut'/'leg'/'legs' -> ExamineBody * 'arm'/'arms'/'chest'/'body'/'foot'/'feet' -> ExamineBody * 'hand'/'hands'/'finger'/'fingers' -> ExamineHands * 'thumb'/'thumbs' -> ExamineThumbs * 'wrist'/'wrists' -> ExamineWrists * 'head'/'hair' -> ExamineHead * 'feet'/'foot' -> ExamineFeet; Verb 'about' * -> About; Verb 'credit' 'credits' * -> Credits; Extend 'listen' first * 'to' creature -> TalkTo; Extend only 'throw' * multiheld -> ThrowAt * multiheld 'down' -> Drop * 'down' multiheld -> Drop * multiexcept 'in'/'into'/'down' noun -> Insert * multiexcept 'on'/'onto' noun -> PutOn * held 'at'/'against'/'on'/'onto' noun -> ThrowAt; Extend only 'show' * 'off' -> Impress * 'off' 'for'/'to' creature -> Impress; Verb 'impress' 'dazzle' * creature -> Impress; Verb 'dance' 'waltz' 'tango' 'foxtrot' 'charleston' 'tap' * -> Dance * 'with' noun -> Dance; Verb 'spin' 'twirl' * -> Dance * noun -> Twirl; Verb 'approach' 'appraoch' * -> Approach; Verb 'escape' 'flee' * -> Escape; Verb 'sneak' * -> Sneak * noun -> SneakDir * 'kiss'/'smooch' -> KissUnknown * 'a' 'kiss'/'smooch' -> KissUnknown * 'an' 'embrace' -> KissUnknown * 'away'/'out' -> Escape * 'away'/'out' 'into' 'the' 'night' -> Escape * 'close'/'closer' -> Approach * 'close'/'closer' 'on'/'to' noun -> Approach * 'up'/'forward' -> Approach * 'up'/'forward' 'on'/'to' noun -> Approach * 'up' 'close'/'closer' -> Approach * 'up' 'close'/'closer' 'on'/'to' noun -> Approach; Verb 'steal' * -> StealUnknown * noun -> Steal * 'kiss'/'smooch' -> KissUnknown * 'a' 'kiss'/'smooch' -> KissUnknown * 'an' 'embrace' -> KissUnknown * 'away'/'out' -> Escape * 'away'/'out' 'into' 'the' 'night' -> Escape * 'close'/'closer' -> Approach * 'close'/'closer' 'on'/'to' noun -> Approach * 'up'/'forward' -> Approach * 'up'/'forward' 'on'/'to' noun -> Approach * 'up' 'close'/'closer' -> Approach * 'up' 'close'/'closer' 'on'/'to' noun -> Approach; Verb 'lurk' * -> Lurk; Verb 'pursue' 'follow' * -> Follow * scope=Followable -> Follow * noun -> CantFollow; Verb 'neck' * -> Neck * 'with' scope=Followable -> Neck * 'with' noun -> NeckWith; Verb 'snog' * -> Snog * noun=Followable -> Snog * noun -> BadSnog * 'with' scope=Followable -> Snog * 'with' noun -> BadSnog; Verb 'lip' 'lips' 'mouth' * -> Lips; Verb 'rosy' * 'lip'/'lips'/'mouth' -> Lips; Verb 'graceful' * -> Neck * 'neck' -> Neck; Verb 'her' * 'neck' -> Neck * 'graceful' 'neck' -> Neck * 'lip'/'lips'/'mouth' -> Lips * 'rosy' 'lip'/'lips'/'mouth' -> Lips; ! EOF