1
This commit was merged in pull request #1.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
from collections.abc import Mapping
|
||||
import sys
|
||||
from typing import Any, Literal
|
||||
|
||||
from core.abstract.character import CharacterProperty
|
||||
@@ -15,8 +14,11 @@ class CharacterBase(CharacterProperty):
|
||||
|
||||
BindAwake: int
|
||||
"""绑定觉醒等级"""
|
||||
skills: list['Skill'] = []
|
||||
skills_dict: dict[str, 'Skill'] = {}
|
||||
skills: list['Skill']
|
||||
skills_dict: dict[str, 'Skill']
|
||||
skills_id_dict: dict[str, 'Skill']
|
||||
skills_uuid_dict: dict[str, 'Skill']
|
||||
skill_names_cache: dict[tuple[str, bool | str], list[str]]
|
||||
equVersion: str = '0'
|
||||
"""装备版本"""
|
||||
charEquipInfo: dict[str, 'CharacterEquipInfo']
|
||||
@@ -33,9 +35,9 @@ class CharacterBase(CharacterProperty):
|
||||
"""誓约套装信息"""
|
||||
oathSkillInfo: list['OathSuitSkill']
|
||||
"""誓约技能信息"""
|
||||
equ_effect: list['EquEffect'] = []
|
||||
equ_effect: list['EquEffect']
|
||||
"""装备效果列表"""
|
||||
equ_options: dict[str, int] = {}
|
||||
equ_options: dict[str, int]
|
||||
"""装备选项列表"""
|
||||
EquEffectRatio = 1.0
|
||||
"""装备效果倍率"""
|
||||
@@ -148,6 +150,9 @@ class CharacterBase(CharacterProperty):
|
||||
self.max_point = 0
|
||||
self.skills = []
|
||||
self.skills_dict = {}
|
||||
self.skills_id_dict = {}
|
||||
self.skills_uuid_dict = {}
|
||||
self.skill_names_cache = {}
|
||||
self.load_skills()
|
||||
|
||||
# region 角色属性设置
|
||||
@@ -285,7 +290,7 @@ class CharacterBase(CharacterProperty):
|
||||
value = int(value * (1 + self.jade_effect.ElementIncrease))
|
||||
self.ElementDB[element] += value
|
||||
|
||||
def AddSkillLv(self, min: int, max: int, lv: int, type=-1, exceptSkills: list[str] = []) -> None:
|
||||
def AddSkillLv(self, min: int, max: int, lv: int, type=-1, exceptSkills: tuple[str, ...] = ()) -> None:
|
||||
"""
|
||||
增加技能等级
|
||||
type: -1 全部, 0 被动, 1 主动
|
||||
@@ -296,13 +301,13 @@ class CharacterBase(CharacterProperty):
|
||||
if (skillType == 'all' or skill.type == skillType) and skill.lv > 0 and skill.name not in exceptSkills:
|
||||
skill.lv += lv
|
||||
|
||||
def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None:
|
||||
def SetSkillCD(self, min=1, max=100, cd=0, exclude: tuple[int, ...] = (50, 85, 100)) -> None:
|
||||
"""设置技能CD"""
|
||||
for skill in self.skills:
|
||||
if min <= skill.learnLv <= max and (skill.type == 'active' or skill.damage) and skill.learnLv not in exclude:
|
||||
skill.cdReduce *= 1 - cd
|
||||
|
||||
def SetSkillCDRecover(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None:
|
||||
def SetSkillCDRecover(self, min=1, max=100, cd=0, exclude: tuple[int, ...] = (50, 85, 100)) -> None:
|
||||
"""设置技能CD恢复"""
|
||||
for skill in self.skills:
|
||||
if min <= skill.learnLv <= max and (skill.type == 'active' or skill.damage) and skill.learnLv not in exclude:
|
||||
@@ -330,17 +335,18 @@ class CharacterBase(CharacterProperty):
|
||||
|
||||
def GetSkillByID(self, id: str) -> 'Skill':
|
||||
"""通过技能ID获取技能"""
|
||||
skill = list(filter(lambda x: str(x.id) == id, self.skills))
|
||||
return skill[0] if len(skill) > 0 else None
|
||||
return self.skills_id_dict.get(str(id), None)
|
||||
|
||||
def GetSkillByUUID(self, uuid: str) -> 'Skill':
|
||||
"""通过技能UUID获取技能"""
|
||||
skill = list(filter(lambda x: str(x.uuid) == uuid, self.skills))
|
||||
return skill[0] if len(skill) > 0 else None
|
||||
return self.skills_uuid_dict.get(str(uuid), None)
|
||||
|
||||
def GetSkillNames(self, type: Literal['active', 'passive', 'all'] = 'all', damage: Literal[True, False, 'all'] = 'all') -> list[str]:
|
||||
"""获取技能名字"""
|
||||
return [skill.name for skill in self.skills if (type == 'all' or skill.type == type) and (damage == 'all' or skill.damage == damage)]
|
||||
key = (type, damage)
|
||||
if key not in self.skill_names_cache:
|
||||
self.skill_names_cache[key] = [skill.name for skill in self.skills if (type == 'all' or skill.type == type) and (damage == 'all' or skill.damage == damage)]
|
||||
return self.skill_names_cache[key]
|
||||
|
||||
def GetWeaponType(self) -> tuple[str, str]:
|
||||
"""获取武器类型"""
|
||||
|
||||
Reference in New Issue
Block a user