From 97c43070ffe760294ec5a97b0bd730b83753a59e Mon Sep 17 00:00:00 2001 From: DigiDuncan Date: Fri, 10 Nov 2023 15:18:22 -0500 Subject: [PATCH] improve quake --- sizebot/cogs/quake.py | 20 ++++++++++++++++---- sizebot/lib/quake.py | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/sizebot/cogs/quake.py b/sizebot/cogs/quake.py index 0589e7c5..d4cb1e39 100644 --- a/sizebot/cogs/quake.py +++ b/sizebot/cogs/quake.py @@ -6,11 +6,13 @@ from sizebot.lib.constants import colors from sizebot.lib.fakeplayer import FakePlayer -from sizebot.lib.quake import joules_to_mag, mag_to_name, mag_to_radius, step_joules +from sizebot.lib.quake import joules_to_mag, jump_joules, mag_to_name, mag_to_radius, step_joules, stomp_joules from sizebot.lib.units import SV from sizebot.lib.userdb import load_or_fake +from sizebot.lib.errors import UserMessedUpException EARTH_RAD = 10_018_570 +QuakeType = typing.Literal["step", "stomp", "jump"] class QuakeCog(commands.Cog): """Quake commands.""" @@ -21,12 +23,22 @@ def __init__(self, bot): @commands.command(aliases = ["quake"], usage = "[user/height]", category = "stats") - async def earthquake(self, ctx, user: typing.Union[discord.Member, FakePlayer, SV] = None): + async def earthquake(self, ctx, quake_type: typing.Optional[QuakeType] = "step", user: typing.Union[discord.Member, FakePlayer, SV] = None): """See what quakes would be caused by your steps.""" if user is None: user = ctx.author userdata = load_or_fake(user) - joules = step_joules(userdata) + if quake_type == "step": + verb = "stepping" + joules = step_joules(userdata) + elif quake_type == "stomp": + verb = "stomping" + joules = stomp_joules(userdata) + elif quake_type == "jump": + verb = "jumping" + joules = jump_joules(userdata) + else: + raise UserMessedUpException(f"{quake_type} is not a valid quake type.") mag = joules_to_mag(joules) e_type = mag_to_name(mag).title() rad = mag_to_radius(mag) @@ -37,7 +49,7 @@ async def earthquake(self, ctx, user: typing.Union[discord.Member, FakePlayer, S e_rad = rad / EARTH_RAD print_rad = f"{e_rad:,.2} 🌎" e = Embed( - title=f"Earthquake generated by {userdata.nickname} stepping", + title=f"Earthquake generated by {userdata.nickname} {verb}", description=f"{userdata.nickname} is {userdata.height:,.3mu} tall, and weighs {userdata.weight:,.3mu}.", color=colors.cyan ) diff --git a/sizebot/lib/quake.py b/sizebot/lib/quake.py index d3681c79..3d7f8bb8 100644 --- a/sizebot/lib/quake.py +++ b/sizebot/lib/quake.py @@ -9,7 +9,7 @@ STEP_FACTOR = 0.035 STOMP_FACTOR = 0.5 -JUMP_FACTOR = 0.43 +JUMP_FACTOR = 1 def joules_to_mag(joules: float) -> Decimal: # This might not be super accurate.