quests quefaire (explicit level)

This commit is contained in:
Amazed 2020-09-25 01:12:17 +02:00
parent 0ccf8ad720
commit f9e9300365
1 changed files with 33 additions and 27 deletions

View File

@ -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