From f22c7a435ab2fd1f291d1900a18f3dcd0e5b239c Mon Sep 17 00:00:00 2001 From: bobloy Date: Thu, 19 Apr 2018 22:40:00 -0400 Subject: [PATCH] some changes --- werewolf/game.py | 31 +++++++++++++++++-------------- werewolf/votegroups/wolfvote.py | 5 +++-- werewolf/werewolf.py | 19 +++++++++++++++++++ 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/werewolf/game.py b/werewolf/game.py index f48aaad..fabdd81 100644 --- a/werewolf/game.py +++ b/werewolf/game.py @@ -154,7 +154,10 @@ class Game: async def _at_day_start(self): # ID 1 if self.game_over: return - + + def check(): + return not self.can_vote or not self.day_time or self.game_over + self.day_count += 1 embed=discord.Embed(title=random.choice(self.morning_messages).format(self.day_count)) for result in self.night_results: @@ -176,12 +179,14 @@ class Game: self.can_vote = True await asyncio.sleep(120) # 4 minute days + if check(): + return await self.village_channel.send(embed=discord.Embed(title="**Two minutes of daylight remain...**")) await asyncio.sleep(120) # 4 minute days - # Need a loop here to wait for trial to end + # Need a loop here to wait for trial to end (can_vote?) - if not self.can_vote or not self.day_time or self.game_over: + if check(): return await self._at_day_end() @@ -193,7 +198,8 @@ class Game: await self._notify(2, data) self.used_votes += 1 - + + self.can_vote = False await self.speech_perms(self.village_channel, target.member) await self.village_channel.send("**{} will be put to trial and has 30 seconds to defend themselves**".format(target.mention)) @@ -226,16 +232,15 @@ class Game: if len(down_votes) > len(up_votes): await self.village_channel.send("**Voted to lynch {}!**".format(target.mention)) await self.lynch(target) - self.can_vote = False else: await self.village_channel.send("**{} has been spared!**".format(target.mention)) if self.used_votes >= self.day_vote_count: await self.village_channel.send("**All votes have been used! Day is now over!**") - self.can_vote = False else: await self.village_channel.send("**{}**/**{}** of today's votes have been used!\nNominate carefully..".format(self.used_votes, self.day_vote_count)) - + self.can_vote = True # Only re-enable voting if more votes remain + if not self.can_vote: await self._at_day_end() @@ -349,7 +354,7 @@ class Game: await channel.send("**Game has already started!**") return - if await self.get_player_by_member(member): + if await self.get_player_by_member(member) is not None: await channel.send("{} is already in the game!".format(member.mention)) return @@ -363,7 +368,7 @@ class Game: """ player = await self.get_player_by_member(member) - if not player: + if player is None: return "You're not in a game!" if self.started: @@ -396,8 +401,7 @@ class Game: # I.E. Go on alert? y/n await player.choose(ctx, data) - - + async def _visit(self, target, source): await target.role.visit(source) await self._at_visit(target, source) @@ -410,8 +414,7 @@ class Game: target = await self.get_night_target(target_id, source) await self._visit(target, source) return target - - + async def vote(self, author, id, channel): """ Member attempts to cast a vote (usually to lynch) @@ -576,7 +579,7 @@ class Game: for player in self.players: if player.member == member: return player - return False + return None async def dead_perms(self, channel, member): await channel.set_permissions(member, read_messages=True, send_message=False, add_reactions=False) diff --git a/werewolf/votegroups/wolfvote.py b/werewolf/votegroups/wolfvote.py index 49431b3..b1e0188 100644 --- a/werewolf/votegroups/wolfvote.py +++ b/werewolf/votegroups/wolfvote.py @@ -85,8 +85,9 @@ class WolfVote(VoteGroup): if vote_list: target_id = max(set(vote_list), key=vote_list.count) - - if target_id and self.killer: + + print("Target id: {}\nKiller: {}".format(target_id, self.killer.member.display_name)) + if target_id is not None and self.killer: await self.game.kill(target_id, self.killer, random.choice(self.kill_messages)) await self.channel.send("**{} has left to complete the kill...**".format(self.killer.member.display_name)) else: diff --git a/werewolf/werewolf.py b/werewolf/werewolf.py index 30791a0..60f797f 100644 --- a/werewolf/werewolf.py +++ b/werewolf/werewolf.py @@ -18,6 +18,7 @@ class Werewolf: self.config = Config.get_conf(self, identifier=87101114101119111108102, force_registration=True) default_global = {} default_guild = { + "role": None } self.config.register_global(**default_global) @@ -25,6 +26,24 @@ class Werewolf: self.games = {} # Active games stored here, id is per guild + @commands.group() + async def wwset(self, ctx: commands.Context): + """ + Base command to adjust settings. Check help for command list. + """ + if ctx.invoked_subcommand is None: + await ctx.send_help() + + @commands.guild_only() + @wwset.command(name="role") + async def wwset_role(self, ctx, role: discord.Role): + """ + Assign the game role + This role should not be manually assigned + """ + await self.config.guild(ctx.guild).role.set(role) + await ctx.send("Game role has been set to **{}**".format(role.name)) + @commands.group() async def ww(self, ctx: commands.Context): """