Skip to content
This repository was archived by the owner on Jun 25, 2024. It is now read-only.

Commit 6ffdb10

Browse files
committed
新增補償計算
1 parent f0113cf commit 6ffdb10

File tree

4 files changed

+58
-5
lines changed

4 files changed

+58
-5
lines changed

cogs/clan/__init__.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
from cogs.clan.api import Api
1111
from cogs.clan.embeds import Embeds
1212
from cogs.clan.options import boss_choices
13+
from cogs.clan.cbre import Cbre
1314
from discord_slash.utils.manage_commands import create_option
1415
from cogs.clan.response import ClanResponse
1516
import asyncio
1617

18+
1719
class Clan(commands.Cog):
1820
def __init__(self, bot: AIKyaru):
1921
self.bot = bot
@@ -110,7 +112,9 @@ async def cog_clan_create(self, ctx: SlashContext, form_name: str = None):
110112
description="查看報名列表",
111113
options=[
112114
create_option(name="week", description="指定周次, 預設為群組當前周次", option_type=4, required=False),
113-
create_option(name="boss", description="指定Boss", option_type=4, choices=boss_choices, required=False),
115+
create_option(
116+
name="boss", description="指定Boss, 預設為群組當前Boss", option_type=4, choices=boss_choices, required=False
117+
),
114118
],
115119
)
116120
@commands.guild_only()
@@ -284,4 +288,5 @@ async def cog_finish(self, ctx: SlashContext, damage: int = None, comment: str =
284288

285289
def setup(bot):
286290
bot.add_cog(Clan(bot))
287-
bot.add_cog(ClanResponse(bot))
291+
bot.add_cog(ClanResponse(bot))
292+
bot.add_cog(Cbre(bot))

cogs/clan/cbre.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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)

cogs/common/sta.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@ async def cmd_sta(self, ctx: Context, sta: int = 0, lv: Optional[int] = None):
2929
required=False,
3030
),
3131
],
32+
connector={"當前體力": "sta", "主角等級": "lv"},
3233
)
33-
async def cog_sta(self, ctx: SlashContext, 當前體力: int = 0, 主角等級: int = None):
34-
await self._sta(ctx, 當前體力, 主角等級)
34+
async def cog_sta(self, ctx: SlashContext, sta: int = 0, lv: int = None):
35+
await self._sta(ctx, sta, lv)
3536

3637
async def _sta(self, ctx: Union[Context, SlashContext], sta: int = 0, lv: int = None):
3738
if not lv:

main.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from utils.state_manger import StateManger, State
1616

1717
__author__ = "IanDesuyo"
18-
__version__ = "3.1.3"
18+
__version__ = "3.1.4"
1919

2020

2121
class AIKyaru(AutoShardedBot):

0 commit comments

Comments
 (0)