Skip to content

Commit

Permalink
Rewrote digidecimal to allow proper SV/WV/etc math
Browse files Browse the repository at this point in the history
  • Loading branch information
nfearnley committed May 30, 2024
1 parent 315c6b6 commit 0643ec8
Show file tree
Hide file tree
Showing 38 changed files with 2,288 additions and 617 deletions.
3 changes: 1 addition & 2 deletions sizebot/cogs/change.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import random
from typing import cast
from sizebot.lib import errors, utils
from sizebot.lib.digidecimal import Decimal

from discord import Member
from discord.ext import commands, tasks
Expand All @@ -14,7 +13,7 @@
from sizebot.lib.errors import ChangeMethodInvalidException
from sizebot.lib.objs import DigiObject, objects
from sizebot.lib.types import BotContext, StrToSend
from sizebot.lib.units import SV
from sizebot.lib.units import SV, Decimal

logger = logging.getLogger("sizebot")

Expand Down
3 changes: 1 addition & 2 deletions sizebot/cogs/edge.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@

from sizebot.lib import guilddb, userdb, nickmanager
from sizebot.lib.checks import is_mod
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV
from sizebot.lib.units import SV, Decimal

logger = logging.getLogger("sizebot")

Expand Down
12 changes: 11 additions & 1 deletion sizebot/cogs/eval.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from sizebot.lib import utils
from sizebot.lib.constants import emojis
from sizebot.lib.eval import runEval
from sizebot.lib.eval import runEval, get_fullname
from sizebot.lib.types import BotContext


Expand Down Expand Up @@ -74,5 +74,15 @@ async def evil(self, ctx: BotContext, *, evalStr: str):
await ctx.author.send(emojis.warning + f" ` {utils.format_error(err)} `")


def format_error(err: Exception) -> str:
fullname = get_fullname(err)

errMessage = str(err)
if errMessage:
errMessage = f": {errMessage}"

return f"{fullname}{errMessage}"

async def setup(bot: commands.Bot):
await bot.add_cog(EvalCog(bot))

3 changes: 1 addition & 2 deletions sizebot/cogs/multiplayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@
from sizebot.lib import userdb, nickmanager
from sizebot.lib.constants import colors, emojis
from sizebot.lib.diff import Diff
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.errors import ChangeMethodInvalidException
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV, WV
from sizebot.lib.units import SV, WV, Decimal

logger = logging.getLogger("sizebot")

Expand Down
3 changes: 1 addition & 2 deletions sizebot/cogs/say.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@

from sizebot.lib import userdb
from sizebot.lib.constants import emojis
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV
from sizebot.lib.units import SV, Decimal
from sizebot.lib.errors import UserNotFoundException
from sizebot.lib.stats import AVERAGE_HEIGHT

Expand Down
5 changes: 2 additions & 3 deletions sizebot/cogs/scaletalk.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import logging
import re
from copy import copy
from sizebot.lib.utils import try_int

import discord
from discord.ext import commands

from sizebot.lib import userdb
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.diff import Diff
from sizebot.lib.errors import ChangeMethodInvalidException, UserMessedUpException, UserNotFoundException, ValueIsZeroException
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV
from sizebot.lib.units import SV, Decimal
from sizebot.lib.utils import try_int


logger = logging.getLogger("sizebot")
Expand Down
3 changes: 1 addition & 2 deletions sizebot/cogs/scalewalk.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@

from sizebot.conf import conf
from sizebot.lib import userdb
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.diff import Diff
from sizebot.lib.errors import ChangeMethodInvalidException, DigiContextException, ValueIsZeroException
from sizebot.lib.loglevels import EGG
from sizebot.lib.stats import StatBox
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV
from sizebot.lib.units import SV, Decimal
from sizebot.lib.utils import try_int

logger = logging.getLogger("sizebot")
Expand Down
3 changes: 1 addition & 2 deletions sizebot/cogs/set.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@
from sizebot.cogs.register import show_next_step
from sizebot.lib import userdb, nickmanager
from sizebot.lib.diff import LinearRate
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.gender import Gender, parse_gender
from sizebot.lib.loglevels import EGG
from sizebot.lib.shoesize import to_shoe_size, from_shoe_size
from sizebot.lib.stats import HOUR
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV, WV, pos_SV, pos_WV
from sizebot.lib.units import SV, WV, pos_SV, pos_WV, Decimal
from sizebot.lib.unitsystem import UnitSystem, parse_unitsystem
from sizebot.lib.utils import parse_scale, randrange_log

Expand Down
12 changes: 7 additions & 5 deletions sizebot/cogs/stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,16 @@
from sizebot.cogs.register import show_next_step
from sizebot.lib import errors, proportions, userdb, macrovision
from sizebot.lib.constants import colors, emojis
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.freefall import freefall
from sizebot.lib.language import engine
from sizebot.lib.metal import metal_value, nugget_value
from sizebot.lib.neuron import get_neuron_embed
from sizebot.lib.objs import format_close_object_smart
from sizebot.lib.statproxy import StatProxy
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV, TV, WV
from sizebot.lib.units import SV, TV, WV, Decimal
from sizebot.lib.userdb import load_or_fake, MemberOrFakeOrSize, load_or_fake_height, load_or_fake_weight
from sizebot.lib.utils import pretty_time_delta, round_fraction, sentence_join
from sizebot.lib.utils import pretty_time_delta, sentence_join, round_fraction

logger = logging.getLogger("sizebot")

Expand Down Expand Up @@ -537,13 +536,16 @@ async def fall(self, ctx: BotContext, distance: MemberOrFakeOrSize):
@commands.command(
usage = "<distance>"
)
async def mcfall(self, ctx: BotContext, distance: MemberOrFakeOrSize):
@commands.guild_only()
async def mcfall(self, ctx: BotContext, distance: discord.Member | SV):
if ctx.guild is None:
raise commands.errors.NoPrivateMessage()
if isinstance(distance, discord.Member):
ud = userdb.load(ctx.guild.id, distance.id)
distance = ud.height
userdata = userdb.load(ctx.guild.id, ctx.author.id)
new_dist = SV(distance * userdata.viewscale)
hearts = round_fraction(max(0, new_dist - 3) / 2, 2)
hearts = round_fraction(max(SV(0), new_dist - SV(3)) / SV(2), 2)

await ctx.send(f"You fell **{distance:,.3mu}**, and took {hearts:,.1}❤️ damage!\n"
f"[That feels like falling **{new_dist:,.3mu}**!]")
Expand Down
4 changes: 2 additions & 2 deletions sizebot/data/units/wv.json
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@
"unit": "lb"
},
{
"unit": " US tons"
"unit": "US tons"
},
{
"unit": "Earth weights"
Expand All @@ -383,7 +383,7 @@
"unit": "Sun weights"
},
{
"unit": " Milky Ways"
"unit": "Milky Ways"
},
{
"unit": "uni"
Expand Down
3 changes: 1 addition & 2 deletions sizebot/lib/changes.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@

from sizebot.lib import userdb, paths, nickmanager
from sizebot.lib import utils
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.units import SV, TV
from sizebot.lib.units import SV, TV, Decimal
from sizebot.lib.utils import pretty_time_delta

logger = logging.getLogger("sizebot")
Expand Down
3 changes: 1 addition & 2 deletions sizebot/lib/diff.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,8 @@

from sizebot.lib.errors import InvalidSizeValue, ParseError, ThisShouldNeverHappenException
from sizebot.lib.utils import regexbuild
from sizebot.lib.digidecimal import Decimal
from sizebot.lib.types import BotContext
from sizebot.lib.units import SV, TV
from sizebot.lib.units import SV, TV, Decimal

add_prefixes = ["+", "add", "plus"]
subtract_prefixes = ["-", "sub", "subtract", "minus"]
Expand Down
Loading

0 comments on commit 0643ec8

Please sign in to comment.