|
| 1 | +from main import AIKyaru |
| 2 | +import discord |
| 3 | +from discord.ext import commands |
| 4 | +from discord.ext.commands import Context |
| 5 | +import re |
| 6 | +from utils import damage_converter |
| 7 | +import utils |
| 8 | + |
| 9 | + |
| 10 | +class Cbre(commands.Cog): |
| 11 | + def __init__(self, bot: AIKyaru): |
| 12 | + self.bot = bot |
| 13 | + self.damage2regex = re.compile(r"(\d+[kKwW\d])(\((\d\d)\)|)") |
| 14 | + |
| 15 | + @commands.command(brief="補償計算機", aliases=["補償計算"], usage="<目標血量> <第一刀傷害> <第二刀傷害(剩餘秒數)>") |
| 16 | + async def cbre(self, ctx: Context, hp: damage_converter, damage1: damage_converter, damage2="10000"): |
| 17 | + try: |
| 18 | + damage2out = self.damage2regex.search(damage2) |
| 19 | + damage2 = damage_converter(damage2out.group(1)) |
| 20 | + damage2time = int(damage2out.group(3)) if damage2out.group(3) else 0 |
| 21 | + if hp == 0 or damage1 == 0 or damage2 == 0: |
| 22 | + return await ctx.send("血量和傷害不可為0") |
| 23 | + except: |
| 24 | + raise commands.BadArgument |
| 25 | + |
| 26 | + if (damage1 + damage2) < hp: |
| 27 | + return await ctx.send("兩刀還殺不掉王啊...") |
| 28 | + if hp < damage1: |
| 29 | + return await ctx.send("一刀就能殺掉了...") |
| 30 | + retime = 90 - (hp - damage1) / (damage2 / (90 - damage2time)) + 20 |
| 31 | + retime = 90 if retime > 90 else retime |
| 32 | + if retime == 20: |
| 33 | + return await ctx.send("可能殺不死喔, 靠暴擊吧") |
| 34 | + redmg = round((damage2 / 90) * retime / 10000, 1) |
| 35 | + |
| 36 | + embed = utils.create_embed( |
| 37 | + author={"name": "補償計算", "icon_url": f"{self.bot.config.get(['AssetsURL'])}/item/99002.webp"}, |
| 38 | + footer={"text": "出刀打王有賺有賠, 此資料僅供參考"}, |
| 39 | + ) |
| 40 | + |
| 41 | + embed.add_field(name="目標血量", value=f"{int(hp/10000)}萬", inline=True) |
| 42 | + embed.add_field(name="第一刀傷害", value=f"{int(damage1/10000)}萬", inline=True) |
| 43 | + embed.add_field(name="第二刀傷害", value=f"{int(damage2/10000)}萬", inline=True) |
| 44 | + embed.add_field(name="第二刀補償時間", value=f"{retime}秒", inline=True) |
| 45 | + embed.add_field(name="理想補償傷害", value=f"{redmg}萬", inline=True) |
| 46 | + |
| 47 | + await ctx.send(embed=embed) |
0 commit comments