From f9e93003652b4db41ee0780813f02ba519e0131b Mon Sep 17 00:00:00 2001 From: Hipstercat Date: Fri, 25 Sep 2020 01:12:17 +0200 Subject: [PATCH] quests quefaire (explicit level) --- cogs/wynncraft/wynncraftcog.py | 60 +++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/cogs/wynncraft/wynncraftcog.py b/cogs/wynncraft/wynncraftcog.py index c2db691..d1f0117 100644 --- a/cogs/wynncraft/wynncraftcog.py +++ b/cogs/wynncraft/wynncraftcog.py @@ -288,32 +288,38 @@ class WynncraftCog(commands.Cog): self.config.register_global(**default_global) @commands.command() - async def quefaire(self, ctx): - player_name = ctx.author.display_name - req = requests.get("https://api.wynncraft.com/v2/player/%s/stats" % player_name).json() - if not req["data"]: - await ctx.send(":x: impossible de t'aider, je ne te trouve pas sur Wynncraft :(") - return - max_class = None - for cl in req["data"][0]["classes"]: - if not max_class or max_class["professions"]["combat"]["level"] < cl["professions"]["combat"]["level"]: - max_class = cl - - if not max_class: - await ctx.send(":x: impossible de t'aider, je ne te trouve pas ta classe sur Wynncraft :(") - return - - # check for available quests - quests = await self.config.quests() - quests.reverse() - for quest in quests: - if quest["name"] in max_class["quests"]["list"]: - continue # player has already done this quest - - if quest["level"] <= max_class["professions"]["combat"]["level"] and max_class["professions"]["combat"]["level"] - quest["level"] < 10: - # quest is doable - await ctx.send(":dizzy: Woosh! Tu peux faire la quête **%s** (%s)" % (quest["name"], quest["url"])) + async def quefaire(self, ctx, explicit_level: int = 0): + if explicit_level == 0: + # check for class then quests + player_name = ctx.author.display_name + req = requests.get("https://api.wynncraft.com/v2/player/%s/stats" % player_name).json() + if not req["data"]: + await ctx.send(":x: impossible de t'aider, je ne te trouve pas sur Wynncraft :(") return + max_class = None + for cl in req["data"][0]["classes"]: + if not max_class or max_class["professions"]["combat"]["level"] < cl["professions"]["combat"]["level"]: + max_class = cl + + if not max_class: + await ctx.send(":x: impossible de t'aider, je ne te trouve pas ta classe sur Wynncraft :(") + return + + level = max_class["professions"]["combat"]["level"] + + # check for available quests + quests = await self.config.quests() + quests.reverse() + for quest in quests: + if quest["name"] in max_class["quests"]["list"]: + continue # player has already done this quest + + if quest["level"] <= level and level - quest["level"] < 10: + # quest is doable + await ctx.send(":dizzy: Woosh! Tu peux faire la quête **%s** (%s)" % (quest["name"], quest["url"])) + return + else: + level = explicit_level # check for dungeons and grind spots dungeons = await self.config.dungeons() @@ -324,12 +330,12 @@ class WynncraftCog(commands.Cog): hints = [] for dungeon in dungeons: - if max_class["professions"]["combat"]["level"] >= dungeon["minlevel"] and max_class["professions"]["combat"]["level"] - dungeon["minlevel"] < 10: + if level >= dungeon["minlevel"] and level - dungeon["minlevel"] < 10: hints.append(":cyclone: Tu peux faire le donjon **%s** aux coordonnées %s (%s)" % (dungeon["name"], dungeon["location"], dungeon["url"])) break for grind_spot in grind_spots: - if grind_spot["minlevel"] <= max_class["professions"]["combat"]["level"] <= grind_spot["maxlevel"]: + if grind_spot["minlevel"] <= level <= grind_spot["maxlevel"]: hints.append(":star: Tu peux grinder aux coordonnées %s jusqu'au niveau %s" % (grind_spot["location"], grind_spot["maxlevel"])) break