import supybot.utils as utils from supybot.commands import * import supybot.plugins as plugins import supybot.ircutils as ircutils import supybot.callbacks as callbacks import random class Fun(callbacks.Plugin): """This plugin does random stuff.""" threaded = True class bottle(callbacks.Commands): bottle_message = "%s spins the bottle! The bottle lands on %s!" bottle_outcomes = [ "%s has to kiss %s.", "%s has to make out with %s.", "%s has to hug %s.", "%s has to cuddle with %s.", "%s has to spoon with %s.", "%s has to buy %s a gift.", "%s has to lick %s.", "%s has to touch %s.", "%s has to massage %s.", "%s has to play with %s's boobs.", "%s has to play with %s's chest.", "%s has to rape %s.", "%s has to fuck %s.", "%s has to french %s.", "%s has to unf %s.", "%s has to give %s a lap dance.", "%s has to have sex with %s.", "%s has to lustfully gnaw on %s.", "%s has to do something of %s's choosing.", "%s gets to do whatever they want to %s.", "%s has to whip %s.", "%s has to love %s. All night long.", "%s has to draw a picture of %s.", "%s has to write a poem for %s.", "%s has to do %s's grocery shopping.", "%s has to eat out %s.", "%s has to suck off %s.", "%s has to orally pleasure %s.", "%s has to domineer %s.", "%s has to taste %s.", "%s has to spray perfume all over %s.", "%s has to spray cologne all over %s.", "%s has to love %s.", "%s has to give %s sloppy seconds.", "%s has to moan for %s.", "%s has to sensually moan for %s.", "%s has to take %s out on a date.", "%s has to tie %s up and have their way with them.", "%s has to watch as %s's gender is changed.", "%s has to have nasal intercourse with %s.", "%s has to have aural intercourse with %s.", "%s has to have oral intercourse with %s.", "%s has to have vaginal intercourse with %s.", "%s has to have anal intercourse with %s.", "%s has to pay for %s's housing for the rest of the year.", #more "%s has to 69 with %s.", "%s has to give %s HOT DICKINGS.", "%s has to make a plushie of %s.", "%s has to suck %s off and swallow.", "%s has to tutor %s.", "%s has to have a one night stand with %s.", "%s has to grope %s awkwardly.", "%s has to grope %s.", "%s has to do it with %s.", "%s has to screw %s.", "%s has to fuck %s's brains out.", "%s has to lick whipped cream off of %s's stomach.", "%s has to lick whipped cream off of %s's crotch.", "%s has to lick whipped cream off of %s's chest.", "%s has to lick whipped cream off of %s's boobs.", "%s has to lick whipped cream off of %s's face.", "%s has to nuzzle %s.", "%s has to nuzzle %s's crotch.", "%s has to eskimo kiss %s.", #more-2 "%s has to marry %s.", "%s has to divorce %s.", "%s has to lick %s's chest.", "%s has to lick %s's crotch.", "%s has to nuzzle %s's chest.", "%s has to play with %s's tits.", "%s has to play with %s's nipples.", "%s has to play with %s's breasts.", "%s has to massage %s.", "%s has to massage %s's crotch.", "%s has to massage %s's stomach.", "%s has to massage %s's chest.", "%s has to massage %s's boobs.", "%s has to massage %s's breasts.", "%s has to massage %s's nipples.", "%s has to massage %s's tits.", "%s has to knead %s's stomach.", "%s has to knead %s's tits.", "%s has to knead %s's skin.", "%s has to please %s.", "%s has to please %s any way they'd like.", "%s has to buy a diamond ring for %s.", "%s and %s have to put on each other's clothes.", "%s has to dress up as %s.", "%s has to cosplay as %s.", #more-3 "%s has to strip down for %s.", "%s and %s have to strip naked.", "%s has to be %s's slave for the rest of the day.", "%s has to be %s's slave for the rest of the week.", "%s has to be %s's slave for the rest of the month.", "%s has to be %s's slave for the rest of the year.", "%s has to take %s out on a date. Dinner and a movie sounds nice!", "%s has to massage %s's back.", "%s and %s have to switch genders.", "%s and %s have to please each other completely.", "%s and %s have to get down and dirty.", "%s has to impregnate %s.", #more-4 "%s has to rub %s.", "%s has to rub %s's crotch.", "%s has to rub %s's stomach.", "%s has to rub %s's breasts.", "%s has to rub %s's tits.", "%s has to rub %s's chest.", "%s has to rub %s's nipples.", "%s has to rub %s's shoulders.", "%s has to rub %s's legs.", "%s has to rub %s's back.", "%s has to fuck %s with a dildo.", "%s has to rub %s's butt.", "%s has to kiss %s's butt.", "%s has to massage %s's butt.", "%s has to play with %s's butt.", "%s has to lick whipped cream off of %s's butt.", "%s has to lick %s's butt.", "%s has to dance with %s.", "%s has to tango with %s.", "%s has to square dance with %s.", "%s has to get down tonight with %s.", "%s has to do the electric boogaloo with %s.", "%s has to waltz with %s.", "%s has to play some music for %s.", "%s has to take %s out on a date. A night at the ballroom? Oh my!", "%s has to show their affections for %s.", "%s has to be raped by %s.", #more-5 "%s has to be sensually groped by %s.", "%s has to play doctor with %s.", "%s has to play house with %s.", "%s has to dress %s up in bondage.", "%s has to have his/her way with %s.", "%s has to make %s feel good.", "%s has to apologize to %s.", "%s has to make a paper airplane for %s.", "%s has to throw a paper airplane into %s's eye.", "%s has to mumble at %s.", #more-6 "%s has to play Mario Kart against %s.", "%s has to play Tekken against %s.", "%s has to play Tetris against %s.", "%s has to pay for anything %s buys for the rest of the month.", "%s has to pay for anything %s buys for the rest of the year.", "%s has to dress up as a catgirl for %s.", "%s has to do %s's homework.", #more-7 "%s and %s are stripped of their clothes and locked in a closet. Together.", "%s must bring %s an offering of peace.", "%s and %s get inserted into a wacky romance fanfic together.", "%s and %s get inserted into a crazy action fanfic together.", "%s and %s get inserted into a weird hentai fanfic together.", "%s has to draw or commission a picture of %s naked.", "%s has to buy %s a drink.", "%s has to flirt with %s.", "%s has to act sensual towards %s.", "%s has to act sensual with %s.", "%s and %s have to do it in public.", "%s has to sit on %s.", "%s has to treat %s right!", "%s has to give %s free money!", "%s has to hit the road, Jack. %s says, \"don't you come back no more, no more, no more, no more!\" (What you say?!)", "%s has to passionately make out with %s in front of everyone.", "%s has to skinny dip with %s.", "%s has to have %s's babies.", "%s has to murr for %s.", "%s has to mumble under his/her breath about %s.", "%s has to praise %s's glory!", "%s has to apologize to %s for having the script pick such a crappy action.", "%s has to rape %s, and then apologize afterwards.", "%s has to push %s over.", "%s has to undress %s.", "%s has to make a balloon out of a condom for %s.", "%s has to shrink %s.", "%s has to morph into something of %s's choosing.", "%s has to become %s's pet.", "%s has to degrade %s.", "%s has to talk about %s behind his/her back.", #more-8 "%s has to stick a pencil up %s's butt.", "%s has to stick a pencil up %s's vagina.", "%s has to stick a pen up %s's butt.", "%s has to stick a pen up %s's vagina.", "%s has to pour milk all over %s and lick it off.", "%s has to pour chocolate sauce all over %s and lick it off.", "%s has to pour a strawberry milkshake all over %s and lick it off.", "%s has to pour wine all over %s and lick it off.", "%s has to play with %s's crotch.", "%s has to play with %s's penis.", "%s has to play with %s's vagina.", "%s has to undress for %s.", "%s has to stick a stick of pocky up %s's butt.", "%s has to stick a stick of pocky up %s's vagina.", "%s has to make a wooddaver for %s.", # lol homestar reference "%s has to stick an antenna up %s's butt.", "%s has to stick an antenna up %s's vagina.", "%s has to rub %s's penis.", "%s has to rub %s's vagina.", "%s has to make a fool of themselves in front of %s.", "%s has to stick a sharpie up %s's butt.", "%s has to stick a sharpie up %s's vagina.", "%s has to stick a marker up %s's butt.", "%s has to stick a marker up %s's vagina.", "%s has to stick a highlighter up %s's butt.", "%s has to stick a highlighter up %s's vagina.", "%s has to stick a thermometer up %s's butt.", "%s has to stick a thermometer up %s's vagina.", "%s has to be %s's chauffeur for the rest of the day.", "%s has to feed %s a chocolate.", "%s has to make a fool of %s in front of everyone.", "%s has to make %s horny.", "%s has to take some Viagra for %s.", "%s has to take some Cialis for %s.", "%s has to use the force! In danger, %s is.", "%s has to convince %s to have sex with them.", "%s has to convince %s to go out on a date with them.", "%s has to convince %s to go steady with them.", "%s has to convince %s to play around with them.", "%s has to become %s's friend-with-benefits.", "%s has to beat up %s's significant other.", "%s has to make sure that %s never sees the light of day again.", "%s has to be %s's pillow.", #more-9 (219) "%s shouts, \"OBJECTION! %s obviously did the crime!\" The judge agrees.", "%s shouts, \"OBJECTION! %s obviously did the crime!\" The judge disagrees.", "%s shouts, \"OBJECTION! %s is obviously guilty!\" The judge agrees.", "%s shouts, \"OBJECTION! %s is obviously guilty!\" The judge disagrees.", "%s shouts, \"OBJECTION! %s is obviously not guilty!\" The judge agrees.", "%s shouts, \"OBJECTION! %s is obviously not guilty!\" The judge disagrees.", "%s has to sit on %s.", "%s has to be %s's pillow tonight.", "%s has to be %s's pillow for the rest of the week.", "%s has to lie on top of %s.", "%s has to draw or commission a picture of %s.", "%s has to beat up %s.", "%s has to murder %s.", "%s has to be willingly raped by %s.", "%s has to flood all of %s's orifices!", "%s has to make sure %s arrives to work on time.", "%s has jury duty in %s's crime!", "%s has to make sure %s never sees the light of day again.", "%s has to make %s giggle like a schoolgirl.", "%s has to dress up as a catgirl for %s.", "%s has to propose to %s.", #more-10 (240) "%s has to tap that! ...'That' being %s.", "%s has to tap %s.", "%s has to stare at %s.", "%s has to pee on %s.", "%s has to make %s feel the best they've ever felt.", "%s has to flog %s with a whip.", "%s has to flog %s with a belt.", "%s has to flog %s with a paddle.", "%s has to curse at %s.", "%s has to make %s feel wonderful.", "%s has to make %s feel like the best person in the world.", "%s has to grab life by the horns... for %s's sake.", "%s has to put %s's favorite pet down. How sad.", "%s has to feel %s up.", "%s has to smack %s in the face.", "%s has to grab %s and twirl them around."] global bottle_message global bottle_outcomes def DoBottle(self, irc, msg, nick1, nick2, outcome_number=None): """ [] Takes two people and spins the bottle! Who knows what will happen?""" people = [nick1, nick2] random.shuffle(people) bottle_outcomes_l = bottle_outcomes[:] random.shuffle(bottle_outcomes_l) if outcome_number == None: outcome = bottle_outcomes_l[0] else: if outcome_number < 1 or outcome_number > len(bottle_outcomes): irc.error(format("You need to specify an outcome between 1 and %s.", len(bottle_outcomes))) return else: outcome = bottle_outcomes[outcome_number-1] irc.reply(format(bottle_message + " " + outcome, nick1, nick2, people[0], people[1])) global DoBottle; def bottle(self, irc, msg, args): """takes no arguments Chooses a person from the chat and makes them do something with you.""" channel = msg.args[0] person_list = [str(nick) for nick in irc.state.channels[str(channel)].users] thislist = [msg.nick, msg.nick] tried = 0 while (((thislist[0] == thislist[1]) or (thislist[0] == irc.nick) or (thislist[1] == irc.nick)) and (len(person_list) >= 3)): random.shuffle(person_list) thislist = [msg.nick, person_list[0]] tried = tried + 1 if (len(person_list) < 3): irc.reply("The bottle vanishes into a puff of smoke. (Try again when someone other than you and I is around.)") elif ((thislist[0] == irc.nick) or (thislist[1] == irc.nick)): irc.reply(format(bottle_message + " ... That's me. Try again!", irc.nick)) elif (thislist[0] == thislist[1]): irc.reply(format(bottle_message + " ...That\'s you. Try again!", thislist[0])) else: DoBottle(self, irc, msg, thislist[0], thislist[1]) bottle = wrap(bottle) def stats(self, irc, msg, args): """takes no arguments Returns stats on the possible bottle outcomes.""" channel = msg.args[0] nick = msg.args[1] people_in_channel = len([str(nick) for nick in irc.state.channels[str(channel)].users]) irc.reply(format("There are %s outcomes in my database. With %s people in this channel, that makes for %s possible outcomes if you spin the bottle!", len(bottle_outcomes), people_in_channel, (((people_in_channel * 2) - 1) * len(bottle_outcomes)))) def rig(self, irc, msg, args, person1, person2, outcome_number): """ [] [] Rigs a bottle spin. The first person spins the bottle, and it lands on the second person if a second person is specified, otherwise it lands on a random chat member.. If a specific outcome number is given, then that outcome is used.""" if person2 == None: people_list = [str(nick) for nick in irc.state.channels[str(msg.args[0])].users] random.shuffle(people_list) person2 = people_list[0] if outcome_number == None: DoBottle(self, irc, msg, person1, person2) else: DoBottle(self, irc, msg, person1, person2, outcome_number) rig = wrap(rig, ["something", optional("something"), optional("int")]) Class = Fun