mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-06 19:53:44 +08:00
再加点typing
This commit is contained in:
parent
16942a83a0
commit
070bce4132
@ -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()
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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] = (
|
||||
|
@ -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])
|
||||
|
25
StarRailUID/utils/map/model/RelicSetSkill.py
Normal file
25
StarRailUID/utils/map/model/RelicSetSkill.py
Normal 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()
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user