From 2b07f786b82334aa00d2d5d24a32fd6770a26618 Mon Sep 17 00:00:00 2001 From: qwerdvd <2450899274@qq.com> Date: Fri, 26 May 2023 20:42:02 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8=E4=BF=AE=E5=A4=8D=E9=81=97?= =?UTF-8?q?=E5=99=A8=E5=B1=9E=E6=80=A7=E6=9C=AA=E8=A2=AB=E8=AE=A1=E5=85=A5?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StarRailUID/starrailuid_damagecal/cal_damage.py | 2 ++ .../starrailuid_damagecal/effect/Base/Avatar.py | 1 + .../starrailuid_damagecal/effect/Base/Relic.py | 2 ++ .../starrailuid_damagecal/effect/Base/Role.py | 17 +++++++++++++++-- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/StarRailUID/starrailuid_damagecal/cal_damage.py b/StarRailUID/starrailuid_damagecal/cal_damage.py index d0162c7..c3ff753 100644 --- a/StarRailUID/starrailuid_damagecal/cal_damage.py +++ b/StarRailUID/starrailuid_damagecal/cal_damage.py @@ -17,6 +17,7 @@ async def cal(char_data: Dict): raw_data['avatar']['level'] = char.char_level raw_data['avatar']['rank'] = char.char_rank raw_data['avatar']['promotion'] = char.char_promotion + raw_data['avatar']['attribute_bonus'] = char.attribute_bonus raw_data['weapon']['id'] = char.equipment['equipmentID'] raw_data['weapon']['level'] = char.equipment['equipmentLevel'] @@ -28,4 +29,5 @@ async def cal(char_data: Dict): role = RoleInstance(raw_data) await role.cal_role_base_attr() await role.cal_relic_attr_add() + await role.cal_avatar_attr_add() return '还没写完呢' diff --git a/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py b/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py index 1e7b085..930b13e 100644 --- a/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py +++ b/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py @@ -37,6 +37,7 @@ class BaseAvatar: self.avatar_rank = char['rank'] self.avatar_promotion = char['promotion'] self.avatar_attribute = {} + self.avatar_attribute_bonus = char['attribute_bonus'] async def get_attribute(self): promotion = AvatarPromotion[str(self.avatar_id)][ diff --git a/StarRailUID/starrailuid_damagecal/effect/Base/Relic.py b/StarRailUID/starrailuid_damagecal/effect/Base/Relic.py index bc063f4..b0b0dda 100644 --- a/StarRailUID/starrailuid_damagecal/effect/Base/Relic.py +++ b/StarRailUID/starrailuid_damagecal/effect/Base/Relic.py @@ -65,4 +65,6 @@ class RelicSet: async def get_attribute(self): for relic in self.__dict__: + if relic == 'set_id_counter': + break await self.__dict__[relic].get_attribute_() diff --git a/StarRailUID/starrailuid_damagecal/effect/Base/Role.py b/StarRailUID/starrailuid_damagecal/effect/Base/Role.py index 8e32146..c7a5097 100644 --- a/StarRailUID/starrailuid_damagecal/effect/Base/Role.py +++ b/StarRailUID/starrailuid_damagecal/effect/Base/Role.py @@ -1,9 +1,13 @@ from typing import Dict +from mpmath import mp + from .Avatar import Avatar from .Weapon import Weapon from .Relic import RelicSet, SingleRelic +mp.dps = 14 + class RoleInstance: def __init__(self, raw_data: Dict): @@ -32,7 +36,6 @@ class RoleInstance: self.base_attr[attribute] += weapon_attribute[attribute] else: self.base_attr[attribute] = weapon_attribute[attribute] - print(self.base_attr) async def cal_relic_attr_add(self): await self.relic_set.get_attribute() @@ -49,4 +52,14 @@ class RoleInstance: self.attribute_bonus[ attribute ] = relic.relic_attribute_bonus[attribute] - print(self.attribute_bonus) + + async def cal_avatar_attr_add(self): + attribute_bonus = self.avatar.avatar_attribute_bonus + for bonus in attribute_bonus: + status_add = bonus['statusAdd'] + bonus_property = status_add['property'] + value = mp.mpf(status_add['value']) + if bonus_property in self.attribute_bonus: + self.attribute_bonus[bonus_property] += value + else: + self.attribute_bonus[bonus_property] = value