From cd6a6316ee047c1e0b698079183b871a567269eb Mon Sep 17 00:00:00 2001 From: qwerdvd <2450899274@qq.com> Date: Fri, 26 May 2023 21:24:45 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=E5=AF=B9=E9=81=97=E5=99=A8=E5=A5=97?= =?UTF-8?q?=E8=A3=85=E8=BF=9B=E8=A1=8C=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../effect/Base/Avatar.py | 2 +- .../effect/Base/Relic.py | 63 ++++++++++++++++++- 2 files changed, 61 insertions(+), 4 deletions(-) diff --git a/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py b/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py index 930b13e..eff9c1a 100644 --- a/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py +++ b/StarRailUID/starrailuid_damagecal/effect/Base/Avatar.py @@ -36,8 +36,8 @@ class BaseAvatar: self.avatar_level = char['level'] self.avatar_rank = char['rank'] self.avatar_promotion = char['promotion'] - self.avatar_attribute = {} self.avatar_attribute_bonus = char['attribute_bonus'] + self.avatar_attribute = {} 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 b0b0dda..ba8685c 100644 --- a/StarRailUID/starrailuid_damagecal/effect/Base/Relic.py +++ b/StarRailUID/starrailuid_damagecal/effect/Base/Relic.py @@ -1,4 +1,5 @@ from typing import Dict, List +from abc import abstractmethod from collections import Counter from mpmath import mp @@ -32,6 +33,48 @@ class SingleRelic: self.relic_attribute_bonus[sub_affix_property] = value +class BaseRelicSetSkill: + @abstractmethod + async def check(self): + ... + + @abstractmethod + async def set_skill_ability(self, char): + ''' + 战斗加成属性, 与 set_skill_property() 互斥 + ''' + ... + + @abstractmethod + async def set_skill_property_ability(self, char): + ''' + 面板加成属性, 与 set_skill_ability_param() 互斥 + ''' + ... + + +class Relic108(BaseRelicSetSkill): + async def check(self): + pass + + async def set_skill_ability(self, char): + pass + + async def set_skill_property_ability(self, char): + pass + + +class Relic306(BaseRelicSetSkill): + async def check(self): + pass + + async def set_skill_ability(self, char): + pass + + async def set_skill_property_ability(self, char): + pass + + class RelicSet: HEAD: SingleRelic HAND: SingleRelic @@ -41,6 +84,9 @@ class RelicSet: OBJECT: SingleRelic Unknow: SingleRelic + set_id_counter: List + SetSkill: List = [] + def __init__(self, relic_list: List): set_id_list = [] for relic in relic_list: @@ -64,7 +110,18 @@ class RelicSet: self.set_id_counter: List = Counter(set_id_list).most_common() async def get_attribute(self): - for relic in self.__dict__: - if relic == 'set_id_counter': + for item in self.__dict__: + if type(self.__dict__[item]) != SingleRelic: break - await self.__dict__[relic].get_attribute_() + await self.__dict__[item].get_attribute_() + + async def check_set(self): + for item in self.set_id_counter: + set_id = item[0] + count = item[1] + if count == 1: + break + if set_id == 108: + self.SetSkill.append(Relic108()) + if set_id == 306: + self.SetSkill.append(Relic306())