From 10fb0f7f6e0eea960c30adc4d3718e9c8ec9bdbf Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Sat, 30 Jan 2021 23:22:40 +0100 Subject: [PATCH] :wolf: --- funcs/games/werewolf.py | 42 +++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/funcs/games/werewolf.py b/funcs/games/werewolf.py index fd8d774..bf9b535 100644 --- a/funcs/games/werewolf.py +++ b/funcs/games/werewolf.py @@ -72,23 +72,44 @@ class Werewolf(): else: return "There's no game going on right now" + def allotRoles(self,channel): + game = self.bot.database["werewolf games"].find_one({"_id":channel}) + players = len(game["users"]) + async def werewolfLoop(self,ctx,round): logThis(f"Starting loop {round} of Werewolf game") channel = "#"+str(ctx.channel.id) if round == 0: - await asyncio.sleep(120) + await asyncio.sleep(90) game = self.bot.database["werewolf games"].find_one({"_id":channel}) - while len(game["users"].keys()) >= minimumPlayers and len(game["users"].keys()) < minimumPlayersWithAI: - user = {"role": None} - self.bot.database["werewolf games"].update_one({"_id":"#"+str(ctx.channel.id)}, - {"$set":{"users."+self.bot.generator.nameGen():user}}) - game = self.bot.database["werewolf games"].find_one({"_id":channel}) + if len(game["users"].keys()) >= minimumPlayers: + while len(game["users"].keys()) < minimumPlayersWithAI: + user = {"role": None} + self.bot.database["werewolf games"].update_one({"_id":"#"+str(ctx.channel.id)}, + {"$set":{"users."+self.bot.generator.nameGen()[:-1]+" (AI player)":user}}) + game = self.bot.database["werewolf games"].find_one({"_id":channel}) - self.bot.database["werewolf games"].update_one({"_id":channel},{"$inc":{"round":1}}) - await self.werewolfLoop(ctx,round+1) + if game["current message"] != None: + await ctx.channel.fetch_message(game["current message"]).delete() + users = "" + for x, user in enumerate(list(game["users"].keys())): + users += str(x+1)+") "+self.bot.funcs.getName(user)+"\n" + + em = discord.Embed(title="Game started with the following players:",description=users,colour=0x00FF00) + oldMessage = await ctx.send(embed=em) + + self.bot.database["werewolf games"].update_one({"_id":channel},{"$set":{"current message":oldMessage.id}}) + + self.allotRoles(channel) + + self.bot.database["werewolf games"].update_one({"_id":channel},{"$inc":{"round":1}}) + await self.werewolfLoop(ctx,round+1) + else: + ctx.send("Not enough players. Ending game.") + self.werewolfStop("#"+str(ctx.channel.id)) else: - await asyncio.sleep(60) + await asyncio.sleep(30) async def werewolfJoin(self,ctx): @@ -130,4 +151,5 @@ class Werewolf(): if len(list(game["users"].keys())) < minimumPlayers: users += f"You need at least {minimumPlayers} players to play werewolf." em = discord.Embed(title="Current Players",description=users,colour=0x00FF00) - await ctx.send(embed=em) + oldMessage = await ctx.send(embed=em) + self.bot.database["werewolf games"].update_one({"_id":"#"+str(ctx.channel.id)},{"$set":{"current message":oldMessage.id}})