再加点typing

This commit is contained in:
qwerdvd 2023-09-11 15:17:10 +08:00
parent 16942a83a0
commit 070bce4132
7 changed files with 130 additions and 86 deletions

View File

@ -1,9 +1,9 @@
from typing import List
from typing import Dict, List
from gsuid_core.logger import logger
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
from ..Base.model import DamageInstanceAvatar, DamageInstanceSkill
class Seele(BaseAvatar):
@ -13,8 +13,8 @@ class Seele(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -41,8 +41,8 @@ class JingYuan(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -72,8 +72,8 @@ class Clara(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -98,8 +98,8 @@ class Danhengil(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -129,8 +129,8 @@ class Silverwolf(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -164,8 +164,8 @@ class Kafka(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -189,8 +189,8 @@ class Blade(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -217,8 +217,8 @@ class Fuxuan(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -240,8 +240,8 @@ class Gepard(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -262,8 +262,8 @@ class Yanqing(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -297,8 +297,8 @@ class Welt(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -322,8 +322,8 @@ class Himeko(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -351,8 +351,8 @@ class Qingque(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
@ -383,8 +383,8 @@ class Jingliu(BaseAvatar):
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute = {}
self.extra_ability_attribute = {}
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()

View File

@ -111,66 +111,74 @@ class BaseAvatar:
skill_info_ = msgspec.convert(skill_info, type=List[Union[str, int]])
return skill_info_
def Normalnum(self, skill_type: str) -> float:
return skill_dict[str(self.avatar_id)][skill_type][
def Normalnum(self, skill_type: str):
skill_info = skill_dict[str(self.avatar_id)][skill_type][
self.Skill.Normal_.level - 1
]
return msgspec.convert(skill_info, type=float)
def Normal(self) -> float:
return skill_dict[str(self.avatar_id)]['Normal'][
def Normal(self):
skill_info = skill_dict[str(self.avatar_id)]['Normal'][
self.Skill.Normal_.level - 1
]
return msgspec.convert(skill_info, type=float)
def BPSkill(self) -> float:
return skill_dict[str(self.avatar_id)]['BPSkill'][
def BPSkill(self):
skill_info = skill_dict[str(self.avatar_id)]['BPSkill'][
self.Skill.BPSkill_.level - 1
]
return msgspec.convert(skill_info, type=float)
def Ultra(self) -> float:
return skill_dict[str(self.avatar_id)]['Ultra'][
def Ultra(self):
skill_info = skill_dict[str(self.avatar_id)]['Ultra'][
self.Skill.Ultra_.level - 1
]
return msgspec.convert(skill_info, type=float)
def Maze(self) -> float:
return skill_dict[str(self.avatar_id)]['Maze'][
def Maze(self):
skill_info = skill_dict[str(self.avatar_id)]['Maze'][
self.Skill.Maze_.level - 1
]
return msgspec.convert(skill_info, type=float)
def Talent(self) -> float:
return skill_dict[str(self.avatar_id)]['Talent'][
def Talent(self):
skill_info = skill_dict[str(self.avatar_id)]['Talent'][
self.Skill.Talent_.level - 1
]
return msgspec.convert(skill_info, type=float)
def BPSkill_num(self, skill_type: str) -> float:
return skill_dict[str(self.avatar_id)][skill_type][
def BPSkill_num(self, skill_type: str):
skill_info = skill_dict[str(self.avatar_id)][skill_type][
self.Skill.BPSkill_.level - 1
]
return msgspec.convert(skill_info, type=float)
def Ultra_num(self, skill_type: str) -> float:
return skill_dict[str(self.avatar_id)][skill_type][
def Ultra_num(self, skill_type: str):
skill_info = skill_dict[str(self.avatar_id)][skill_type][
self.Skill.Ultra_.level - 1
]
return msgspec.convert(skill_info, type=float)
def Talent_num(self, skill_type: str) -> float:
return skill_dict[str(self.avatar_id)][skill_type][
def Talent_num(self, skill_type: str):
skill_info = skill_dict[str(self.avatar_id)][skill_type][
self.Skill.Talent_.level - 1
]
return msgspec.convert(skill_info, type=float)
def Talent_add(self) -> float:
def Talent_add(self):
if self.avatar_id in [1102]:
return float(
skill_dict[str(self.avatar_id)]['Talent'][
skill_info = skill_dict[str(self.avatar_id)]['Talent'][
self.Skill.Talent_.level - 1
]
)
return msgspec.convert(skill_info, type=float)
elif self.avatar_id in [1205]:
return float(
skill_dict[str(self.avatar_id)]['BPSkill'][
skill_info = skill_dict[str(self.avatar_id)]['BPSkill'][
self.Skill.BPSkill_.level - 1
]
)
return msgspec.convert(skill_info, type=float)
else:
return float(0)
return 0.0
def Ultra_Use(self) -> float:
return skill_dict[str(self.avatar_id)]['Ultra_Use'][0]
def Ultra_Use(self):
skill_info = skill_dict[str(self.avatar_id)]['Ultra_Use'][0]
return msgspec.convert(skill_info, type=float)

View File

@ -14,7 +14,7 @@ class SingleRelic:
self.set_id = relic.SetId
self.relic_type = relic.Type
self.relic_level = relic.Level
self.relic_attribute_bonus = {}
self.relic_attribute_bonus: Dict[str, float] = {}
def get_attribute_(self):
# MainAffix
@ -51,8 +51,7 @@ class BaseRelicSetSkill:
if count == 4:
self.pieces4 = True
logger.info(f'Relic {set_id} 4 pieces set activated')
self.relicSetAttribute: Dict[str, float] = {}
self.set_skill_property_ability()
self.relicSetAttribute = self.set_skill_property_ability()
@abstractmethod
async def check(
@ -72,17 +71,22 @@ class BaseRelicSetSkill:
def set_skill_property_ability(self):
set_property = ''
set_value = 0
if self.pieces2 and RelicSetSkill[str(self.setId)]['2'] != {}:
set_property = RelicSetSkill[str(self.setId)]['2']['Property']
set_value = RelicSetSkill[str(self.setId)]['2']['Value']
if self.pieces4 and RelicSetSkill[str(self.setId)]['4'] != {}:
set_property = RelicSetSkill[str(self.setId)]['4']['Property']
set_value = RelicSetSkill[str(self.setId)]['4']['Value']
relic_set_attribute: Dict[str, float] = {}
if self.pieces2:
status_add = RelicSetSkill.RelicSet[str(self.setId)]['2']
if status_add:
set_property = status_add.Property
set_value = status_add.Value
if self.pieces4:
status_add = RelicSetSkill.RelicSet[str(self.setId)]['4']
if status_add:
set_property = status_add.Property
set_value = status_add.Value
if set_property != '':
if set_property in self.relicSetAttribute:
self.relicSetAttribute[set_property] = (
self.relicSetAttribute[set_property] + set_value
if set_property in relic_set_attribute:
relic_set_attribute[set_property] = (
relic_set_attribute[set_property] + set_value
)
else:
self.relicSetAttribute[set_property] = set_value
return self.relicSetAttribute
relic_set_attribute[set_property] = set_value
return relic_set_attribute

View File

@ -1,11 +1,11 @@
from typing import Dict
from abc import abstractmethod
from typing import Dict
from msgspec import Struct
from .model import DamageInstanceWeapon
from ....utils.excel.model import EquipmentPromotionConfig
from ....utils.map.SR_MAP_PATH import EquipmentID2AbilityProperty
from .model import DamageInstanceWeapon
class BaseWeaponAttribute(Struct):
@ -28,7 +28,7 @@ class BaseWeapon:
self.weapon_rank = weapon.rank
self.weapon_promotion = weapon.promotion
self.weapon_base_attribute = self.get_attribute()
self.weapon_attribute = {}
self.weapon_attribute: Dict[str, float] = {}
self.get_attribute()
self.weapon_property_ability()

View File

@ -1,10 +1,10 @@
import json
from typing import Dict
from collections import Counter
from typing import Dict, List
from loguru import logger
from ...utils.map.SR_MAP_PATH import RelicSetSkill, EquipmentID2AbilityProperty
from ...utils.map.SR_MAP_PATH import EquipmentID2AbilityProperty, RelicSetSkill
class Character:
@ -74,7 +74,7 @@ class Character:
async def get_relic_info(self):
# 计算圣遗物效果
set_id_list = []
set_id_list: List[int] = []
for relic in self.char_relic:
set_id_list.append(relic['SetId'])
# 处理主属性
@ -103,12 +103,16 @@ class Character:
set_id = item[0]
count = item[1]
set_value = 0
if count >= 2 and RelicSetSkill[str(set_id)]['2'] != {}:
set_property = RelicSetSkill[str(set_id)]['2']['Property']
set_value = RelicSetSkill[str(set_id)]['2']['Value']
if count == 4 and RelicSetSkill[str(set_id)]['4'] != {}:
set_property = RelicSetSkill[str(set_id)]['4']['Property']
set_value = RelicSetSkill[str(set_id)]['4']['Value']
if count >= 2:
status_add = RelicSetSkill.RelicSet[str(set_id)]['2']
if status_add:
set_property = status_add.Property
set_value = status_add.Value
if count == 4:
status_add = RelicSetSkill.RelicSet[str(set_id)]['4']
if status_add:
set_property = status_add.Property
set_value = status_add.Value
if set_property != '':
if set_property in self.add_attr:
self.add_attr[set_property] = (

View File

@ -1,9 +1,11 @@
import json
from pathlib import Path
from typing import Dict, List, Union, TypedDict
from typing import Dict, List, TypedDict, Union
from msgspec import json as msgjson
from ...version import StarRail_version
from .model.RelicSetSkill import RelicSetSkillModel
MAP = Path(__file__).parent / 'data'
@ -97,7 +99,8 @@ with Path.open(
)
with Path.open(MAP / RelicSetSkill_fileName, encoding='UTF-8') as f:
RelicSetSkill = msgjson.decode(f.read(), type=Dict[str, Dict])
data = json.load(f)
RelicSetSkill = RelicSetSkillModel.from_json(data)
with Path.open(MAP / skillId2AttackType_fileName, encoding='UTF-8') as f:
skillId2AttackType = msgjson.decode(f.read(), type=Dict[str, str])

View File

@ -0,0 +1,25 @@
from typing import Dict, Union
from msgspec import Struct
class RelicSetStatusAdd(Struct):
Property: str
Value: float
class RelicSetSkillModel(Struct):
RelicSet: Dict[str, Dict[str, Union[RelicSetStatusAdd, None]]]
@classmethod
def from_json(cls, data: Dict):
return cls(RelicSet={
str(k): {
str(k2): RelicSetStatusAdd(
Property=v2['Property'],
Value=v2['Value']
) if v2 else None
for k2, v2 in v.items()
}
for k, v in data.items()
})