| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- import random
- from commands.common import CommandHelpers as CH
- from commands.common import GameHelpers
- bold = "\x02"
- italic = "\x1D"
- underline = "\x1F"
- reverse = "\x16" # swap background and foreground colors ("reverse video")
- reset = "\x0F"
- blue = "\x0302"
- green = "\x0303"
- red = "\x0304"
- grey = "\x0314"
- def do_command(self, connection, event):
- cmdtype, trigger, command, replyto = CH.disect_command(self, event)
- if not command:
- return # Do nothing if there is no command.
- if not self.db.one("SELECT games FROM channels WHERE name='" + event.target + "' AND network='" + self.network + "'") and not event.target == connection.get_nickname():
- return # Do noting if the games channel function is off and it's a channel message.
-
- if command == "cmd" or command == "cmds" or command == "commands":
- if cmdtype == "cmd":
- connection.privmsg(replyto, grey + "Games: " + CH.ccc(self, "8ball") + CH.ccc(self, "dice") + CH.ccc(self, "player") + CH.ccc(self, "levelup")[:-2] + ".")
-
- elif command.split()[0] == "8ball":
- if cmdtype == "help": #Display help text.
- connection.privmsg(replyto, "Ask a question of the mighty and illusive 8-Ball.")
- connection.privmsg(replyto, grey + "Usage: " + blue + self.cmdchar + "8ball " + reset + italic + "question")
- elif cmdtype == "cmd":
-
- if len(command.split()) < 2: # Command contains only !8ball.
- messages = [
- "Don't forget to ask a question...",
- "Hey, that's not a question!",
- "What would you like to know?",
- "You want me to predict nothing?",
- "Are you intentionally not asking a question?",
- "Ask a question you tease!",
- "You do not seem to grasp this, for help type: " + blue + self.helpchar + "8ball",
- "You will die alone.",
- ]
- connection.privmsg(replyto, random.choice(messages))
- else:
- messages = [
- "Yes.",
- "No.",
- "Affirmative.",
- "No way!",
- "Negative.",
- "Positive.",
- "Correct.",
- "Incorrect.",
- "Likely",
- "Unlikely",
- "Maybe.",
- "Definately!",
- "Perhaps?",
- "Most indubitably.",
- "Does the pope shit in the woods?",
- "When hell freezes over.",
- "Only between 9 and 5.",
- "Only just before you die.",
- red + bold + "ERROR: " + bold + "probability failure.",
- "Ask again later.",
- "I don't know.",
- "Unpredictable.",
- ]
- connection.privmsg(replyto, random.choice(messages))
-
- elif command.split()[0] == "dice":
- if cmdtype == "help": #Display help text.
- if len(command.split()) is not 1:
- return
- connection.privmsg(replyto, "Rolls multiple dices of chosen type. Specifying type or amount is optional.")
- connection.privmsg(replyto, grey + "Usage: " + blue + self.cmdchar + "dice " + reset + italic + "amount type")
- connection.privmsg(replyto, grey + "Example: " + blue + self.cmdchar + "dice " + reset + italic + "2 d10")
- connection.privmsg(replyto, grey + "Note: " + reset + "The dice type is specified as a " + italic + "d " + reset + "followed by the amount of sides.")
- elif cmdtype == "cmd":
-
- arguments = len(command.split()) - 1
- if arguments == 0:
- connection.privmsg(replyto, str(random.randint(1, 6)) + " & " + str(random.randint(1, 6)) + ".")
- elif arguments == 1:
- try:
- diceamount = int(command.split()[1])
- except ValueError: # Argument is not an integer.
- if command.split()[1].startswith("d"): # Specific dice type.
- try:
- dicetype = int(command.split()[1][1:])
- except ValueError: # "d" not followd by interger.
- connection.privmsg(replyto, "Invalid number or type of dice. For help type: " + blue + self.helpchar + "dice" + reset + ".")
- return
- if dicetype < 1:
- connection.action(replyto, "can not create objects with less then one side.")
- else:
- connection.privmsg(replyto, str(GameHelpers.roll_dice(1, dicetype)[0]))
- else: # Argument does not start with "d" and is not an integer.
- connection.privmsg(replyto, "Invalid number or type of dice. For help type: " + blue + self.helpchar + "dice" + reset + ".")
- return
- if diceamount < 1:
- connection.privmsg(replyto, "Rolling " + bold + "no " + reset + "dice.")
- elif diceamount > 10:
- connection.action(replyto, "can not fit that many dice into it's robot hands.")
- else:
- connection.privmsg(replyto, ", ".join(str(rolls) for rolls in GameHelpers.roll_dice(diceamount, 6)) + ".") # Roll x amount of dice.
- elif arguments == 2:
- try:
- diceamount = int(command.split()[1])
- except ValueError: # First argument not an integer.
- connection.privmsg(replyto, "Invalid number of dice. For help type: " + blue + self.helpchar + "dice" + reset + ".")
- return
- try:
- dicetype = int(command.split()[2][1:])
- except ValueError: # Second argument not a dice type.
- connection.privmsg(replyto, "Invalid type of dice. For help type: " + blue + self.helpchar + "dice" + reset + ".")
- return
- if diceamount < 1:
- connection.privmsg(replyto, "Rolling " + bold + "no " + reset + "dice.")
- elif diceamount > 10:
- connection.action(replyto, "can not fit that many dice into it's robot hands.")
- elif dicetype < 1:
- connection.action(replyto, "can not create objects with less then one side.")
- elif dicetype > 9999999999 and diceamount > 1:
- connection.action(replyto, "Those dices are so large i can only roll one at a time.")
- else:
- connection.privmsg(replyto, ", ".join(str(rolls) for rolls in GameHelpers.roll_dice(diceamount, dicetype)) + ".") # Roll x amount of x type dice.
- else: # Invalid amount of arguments.
- connection.privmsg(replyto, "Too many arguments. For help type: " + blue + self.helpchar + "dice" + reset + ".")
-
- elif command.split()[0] == "player":
- if cmdtype == "help": #Display help text.
- connection.privmsg(replyto, "Displays a users game info. User optional.")
- elif cmdtype == "cmd":
-
- if len(command.split()) == 1:
- user = event.source.nick.lower()
- message = "Your info. "
- elif len(command.split()) == 2:
- user = command.split()[1]
- if not self.db.one("SELECT id FROM users WHERE LOWER(name)=%s AND network='" + self.network + "'", (user, )):
- connection.action(replyto, "does not know of a " + red + trigger.split()[1] + reset + ".")
- return
- if user == connection.get_nickname().lower():
- connection.privmsg(replyto, "The game does not play the master.")
- return
- if user == event.source.nick.lower():
- message = "Your info. "
- else:
- message = "Info for " + red + trigger.split()[1] + reset + ". "
- else:
- connection.privmsg(replyto, "Too many arguments, For help type " + blue + self.helpchar + "players " + reset + ".")
- return
-
- level, xp, xpspent, karma = GameHelpers.get_info(self, user)
- connection.privmsg(replyto, message + "Level: " + str(level) + ", XP: " + str(xp) + ", karma: " + str(karma))
-
- elif command.split()[0] == "levelup":
- if cmdtype == "help": #Display help text.
- connection.privmsg(replyto, "Spend 10 XP per level gained. Gain multiple levels by specifying the amount.")
- elif cmdtype == "cmd":
-
- user = event.source.nick.lower()
- level, xp, xpspent, karma = GameHelpers.get_info(self, user)
- if len(command.split()) == 1:
- if xp < 10:
- connection.privmsg(replyto, "Insuficcient XP, you need at least 10.")
- else:
- self.db.run("UPDATE users SET level=level+1, xp_spent=xp_spent+10 WHERE LOWER(name)='" + user + "' AND network='" + self.network + "'")
- elif len(command.split()) == 2:
- try:
- levels = int(command.split()[1])
- except:
- connection.privmsg(replyto, "Invalid amount.")
- return
- if levels < 1:
- connection.privmsg(replyto, "Invalid amount.")
- elif xp < levels * 10:
- connection.privmsg(replyto, "Insuficcient XP, you need at least " + str(levels * 10) + ".")
- else:
- print("UPDATE users SET level=level+" + str(levels) + ", xp_spent=xp_spent+" + str(levels * 10) + " WHERE LOWER(name)='" + user + "' AND network='" + self.network + "'")
- self.db.run("UPDATE users SET level=level+" + str(levels) + ", xp_spent=xp_spent+" + str(levels * 10) + " WHERE LOWER(name)='" + user + "' AND network='" + self.network + "'")
- else:
- connection.privmsg(replyto, "Too many arguments. For help type " + blue + self.helpchar + "levelup " + reset + ".")
-
- # elif command.split()[0] == "classup":
- # if cmdtype == "help": #Display help text.
- # connection.privmsg(replyto, "Spend 10 XP to gain a class in your current level. List available classes with " + blue + self.helpchar + "classup available " + reset + ".")
- # connection.privmsg(replyto, grey + "Usage: " + blue + self.cmdchar + "classup " + reset + italic + "class")
- # elif cmdtype == "cmd":
- #
- # if len(command.split()) == 1:
- # connection.privmsg(replyto, "Insufficient arguments. For help type " + blue + self.helpchar + "classup" + reset + ".")
- # if len(command.split()) == 2:
- # if command.split()[1] == "available":
- # level, xp, xpspent, karma = GameHelpers.get_info(self, event.source.nick)
- # if level == 0:
- # connection.privmsg(replyto, "There are no level 0 classes.")
- # if level == 1:
- # connection.privmsg(replyto, "Level 1 classes: Maggot, nubcake, ")
- # if level == 2:
- # connection.privmsg(replyto, "Level 2 classes: Retard, ")
- # if level == 3:
- # connection.privmsg(replyto, "Level 3 classes: ")
- # if level == 4:
- # connection.privmsg(replyto, "Level 3 classes: ")
- # if level == 5:
- # connection.privmsg(replyto, "Level 4 classes: ")
- # else:
- # else:
- # connection.privmsg(replyto, "Too many arguments. For help type " + blue + self.helpchar + "classup" + reset + ".")
|