! The Tale of the Smooching 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 Constant Story "The Tale of the Smooching 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; Constant DIALECT_US; 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 >>; 38: #Ifdef DIALECT_US; "That's not a verb I recognize."; #ifnot; "That's not a verb I recognise."; #endif; } ]; 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 = startroom; ChangePlayer( game_counter ); print "^^^The grand ballroom is awhirl with color 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 Smooching 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 mustache with delight. The Smooching Bandit shall have no trouble tonight finding a pair of pert lips, ready for a stolen kiss...^^^"; HitReturnOrSpace(); ]; Room startroom "Grand Ballroom, center", 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 Smooching 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. "; ], e_to e_ballroom, sw_to sw_ballroom, ; Object -> game_counter "The Smooching Bandit" with name 'the' 'smooching' 'bandit', number 0, description "Ha-HA! No one will ever guess the identity of the Smooching Bandit! Not even... uh... yourself!", each_turn [; if ( game_counter hasnt general ) { game_counter.number++; switch ( game_counter.number ) { 2: if ( location == startroom ) { give peaches_and_cream ~scenery; move peaches_and_cream to sw_ballroom; "^A lovely young dameoiselle, 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 southwest. "; } else if ( location == sw_ballroom ) { give peaches_and_cream ~scenery; move peaches_and_cream to sw_ballroom; "^A lovely young dameoiselle, 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. "; } give self general; game_counter.number--; } } give self ~general; ], has transparent ; Object -> -> black_mask "black mask" with name 'black' 'mask', 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', has clothing worn ; Object -> -> velvet_cloak "velvet cloak" with name 'velvet' 'cloak', has clothing worn ; Object -> -> rakish_hat "rakish hat" with name 'rakish' 'hat', has clothing worn ; Object -> -> locket "locket" with name 'locket', has clothing worn ; Object -> -> grouch_bag "grouch bag" with name 'grouch' 'bag' 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 -> peaches_and_cream "Lily Whitestone" with name 'peaches' 'and' 'whipped' 'cream' 'dameoiselle' 'damoiselle' '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 Smooching Bandit on other occasions... but no one ever escapes your smooches 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 hasnt general ) "^Young Peaches-and-Cream stands here, looking flushed. "; "^Lily Whitestone is here. "; ], life [; Attack: "Good heavens! The Smooching Bandit's intentions stop at the innocent kiss!"; ], has animate female scenery proper ; 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. ", ne_to startroom, ; 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. ", w_to startroom, e_to veranda, ; 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 Smooching Bandit, you laugh to yourself.", w_to e_ballroom ; Object -> Gabriella "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 Smooching Bandit finds himself alone with an exquisite find! "; } "It's Gabriella Cavortini, alone and enjoying a cocktail by moonlight. "; ], describe [; 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 Smooching Bandit's intentions stop at the innocent kiss!"; ], has animate female proper ; ! 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); "^"; ]; [ DeathMessage; switch(deadflag) { 3: print "The End"; 4: print "Game over"; } ]; ! 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; "Ain't nothing to laugh at right now, soldier. "; ]; [ 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 Smooching 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 Smooching 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 smoochies."; ]; [ 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 Smooching 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 Smooching Bandit!"; ]; ! 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 'get' replace * 'up' -> Stand * 'out'/'off' -> Exit * multi -> Take * 'in'/'into'/'on'/'onto' noun -> Enter * 'off' noun -> GetOff * multiinside 'from' noun -> Remove * 'it' 'on' -> 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; 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 'spin' 'twirl' * noun -> Twirl; ! EOF