From 64fd328ff8fd6a06f0ec0d825cdfc11642097589 Mon Sep 17 00:00:00 2001 From: 283375 Date: Mon, 18 Sep 2023 14:02:02 +0800 Subject: [PATCH] feat(calc): calculate potential from world step --- src/arcaea_offline/calculate/world_step.py | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/arcaea_offline/calculate/world_step.py b/src/arcaea_offline/calculate/world_step.py index 656080b..ee28fc8 100644 --- a/src/arcaea_offline/calculate/world_step.py +++ b/src/arcaea_offline/calculate/world_step.py @@ -148,3 +148,28 @@ def calculate_step( ) return round(play_result_original, 1) + + +def calculate_potential_from_step( + step: Union[Decimal, str, int, float], + partner_step_value: Union[Decimal, str, int, float], + *, + partner_bonus: Optional[PartnerBonus] = None, + booster: Optional[StepBooster] = None, +): + step = Decimal(step) + partner_step_value = Decimal(partner_step_value) + + # get original play result + if partner_bonus and partner_bonus.final_multiplier: + step /= partner_bonus.final_multiplier + if booster: + step /= booster.final_value() + + if partner_bonus and partner_bonus.step_bonus: + step -= partner_bonus.step_bonus + + potential_sqrt = (Decimal(50) * step - Decimal("2.5") * partner_step_value) / ( + Decimal("2.45") * partner_step_value + ) + return potential_sqrt**2