套装相关

This commit is contained in:
2025-03-22 15:31:34 +08:00
parent c78faa5435
commit c6b6b02743
20 changed files with 529 additions and 107 deletions
+43 -18
View File
@@ -5,7 +5,8 @@ from typing import Literal
from core.basic.property import CharacterInfo
from core.basic.skill import Skill
from core.basic.equipment import get_equipment,EquEffect
from core.basic.equipment import get_equipment, EquEffect,Equ
# from core.basic.equipment import equipments
# from core.basic.skill import Skill, ActiveSkill, PassiveSkill
from .formula import 获取基础属性
@@ -47,6 +48,9 @@ class Character:
ElementA: dict[str, float]
"""属性攻击"""
ElementIncrease:float
"""属性增幅"""
ElementDB: dict[str, float]
"""属性强化数值"""
@@ -93,15 +97,17 @@ class Character:
# endregion
skills: list["Skill"] = []
skills: list['Skill'] = []
# """技能列表"""
skills_dict: dict[str, "Skill"] = {}
skills_dict: dict[str, 'Skill'] = {}
# """技能名字对应技能"""
equVersion: str = '0'
"""装备版本"""
charEquipInfo: dict[str, "CharacterEquipInfo"]
charEquipInfo: dict[str, 'CharacterEquipInfo']
"""装备打造信息"""
equ_effect:list["EquEffect"] = []
equs: dict[str, 'Equ']
"""装备列表"""
equ_effect: list['EquEffect'] = []
"""装备效果列表"""
# region 角色属性
@@ -180,6 +186,8 @@ class Character:
self.BufferP = 1.0
self.Attack = 0
self.AttackP = 1.0
self.ElementIncrease = 0
self.equs = {}
pass
# region 角色属性设置
@@ -292,7 +300,7 @@ class Character:
self.BufferP += 增益量P + kwargs.get('BufferP', 0)
pass
def AddSkillLv(self, min, max, lv, type=-1) -> None:
def AddSkillLv(self, min:int, max:int, lv:int, type=-1) -> None:
"""
增加技能等级
type: -1 全部, 0 被动, 1 主动
@@ -302,26 +310,26 @@ class Character:
if type == -1 or skill.type == type:
skill.AddLv(lv, self)
def SetSkillCD(self, min=1, max=99, cd=0) -> None:
def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None:
"""
设置技能CD
type: -1 全部, 0 被动, 1 主动
"""
for skill in self.skills:
if min <= skill.requiredLv <= max and skill.damage:
if min <= skill.requiredLv <= max and skill.damage and skill.requiredLv not in exclude:
skill.CDR *= 1 - cd
def GetSkillByName(self, name) -> Skill:
"""通过技能名获取技能"""
return self.skills_dict.get(name,None)
return self.skills_dict.get(name, None)
def GetSkillByID(self,id:str) -> Skill:
skill = list(filter(lambda x:str(x.id) == id,self.skills))
def GetSkillByID(self, id: str) -> Skill:
skill = list(filter(lambda x: str(x.id) == id, self.skills))
"""通过技能ID获取技能"""
return skill[0] if len(skill) > 0 else None
@cache
def GetSkillNames(self, type: Literal['active', 'passive', 'all'] = 'all' , damage:Literal[True,False,'all'] = 'all') -> list[str]:
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)]
@@ -362,14 +370,14 @@ class Character:
'icon': skill.icon,
'type': skill.type,
# 'SPCost': skill.SPCost,
"learnLv": skill.learnLv,
"masterLv": skill.masterLv,
"maxLearnLv":skill.calculate_lv(),
"maxLv": skill.maxLv,
'learnLv': skill.learnLv,
'masterLv': skill.masterLv,
'maxLearnLv': skill.calculate_lv(),
'maxLv': skill.maxLv,
# 'TPCost': 0 if not skill.hasTP else skill.TPCost,
# "masterTPLv":0 if not skill.hasTP else skill.masterTPLv,
# 'maxTPLv': 0 if not skill.hasTP else skill.TPLearnMax,
'position':skill.position
'position': skill.position,
}
)
info['skills'] = skillInfo
@@ -497,7 +505,24 @@ class Character:
# self.SetDetail(setInfo)
# 角色基础属性
self.SetBaseStatus()
return
suitInfo = {}
equs = get_equipment(self.equVersion)
# 设置装备和获取对应的套装属性
for part in self.charEquipInfo.keys():
# 当前部位的打造
cur = self.charEquipInfo[part]
# 当前部位适用调试后的属性
partEqu = equs.equ_dict.get(cur.id).adapt(cur.adaptation)
# 设置当前部位的装备
self.equs[part] = equs.equ_dict.get(cur.id)
# 套装属性设置
for suit in partEqu.suit:
suitInfo[suit] = partEqu.Point + suitInfo.get(suit, 0)
for suit in suitInfo:
print(equs.get_suit_info(suit, suitInfo[suit])[0].id)
skill = self.GetSkillByName('G-35L感电手雷')
print(skill.getSkillDate(skill.lv),skill.skillDamage,skill.skillRation)
return
# 技能影响角色的属性,如属强、抗性等
for skill in self.skills:
skill.effect(self)