from tools import decorators import settings.sabotage as var import time from datetime import datetime, timedelta import botconfig COMMANDS = {} PM_COMMANDS = {} HOOKS = {} cmd = decorators.generate(COMMANDS) pmcmd = decorators.generate(PM_COMMANDS) hook = decorators.generate(HOOKS, raw_nick=True, permissions=False) def connect_callback(cli): var.PHASE = "none" var.PLAYERS = [] var.LAST_STATS = None @cmd("join") def join(cli, nick, chan, rest): """Either starts a new game of Werewolf or joins an existing game that has not started yet.""" if var.PHASE == "none": cli.mode(chan, "+v", nick, nick+"!*@*") var.PLAYERS.append(nick) var.PHASE = "join" var.WAITED = 0 var.GAME_ID = time.time() var.CAN_START_TIME = datetime.now() + timedelta(seconds=var.MINIMUM_WAIT) cli.msg(chan, ('\u0002{0}\u0002 has started a game of Sabotage. '+ 'Type "{1}join" to join. Type "{1}start" to start the game. '+ 'Type "{1}wait" to increase join wait time.').format(nick, botconfig.CMD_CHAR)) elif nick in var.PLAYERS: cli.notice(nick, "You're already playing!") elif len(pl) >= var.MAX_PLAYERS: cli.notice(nick, "Too many players! Try again next time.") elif var.PHASE != "join": cli.notice(nick, "Sorry but the game is already running. Try again next time.") else: cli.mode(chan, "+v", nick, nick+"!*@*") var.PLAYERS.append(nick) cli.msg(chan, '\u0002{0}\u0002 has joined the game.'.format(nick)) var.LAST_STATS = None # reset