feat:优化职业技能关联实现
This commit was merged in pull request #11.
This commit is contained in:
@@ -4,6 +4,7 @@ from functools import cache
|
||||
import json
|
||||
import re
|
||||
from typing import Any, Literal, TYPE_CHECKING
|
||||
from core.character.refs.base import SkillRef, resolve_skill
|
||||
from .formula import 武器冷却惩罚
|
||||
from database.connect import get_redis_client
|
||||
from api.core.Redis import get_redis_info
|
||||
@@ -97,7 +98,15 @@ class Skill:
|
||||
name: str = ''
|
||||
"""技能名称"""
|
||||
_lv: int = 0
|
||||
level_source: str | None = None
|
||||
ref: SkillRef | None = None
|
||||
"""技能身份引用;职业类绑定 Ref 成员,code 由此派生。"""
|
||||
|
||||
@property
|
||||
def code(self) -> str | None:
|
||||
"""技能树原始 code;未迁移的技能返回 None,不单独维护副本。"""
|
||||
return self.ref.code if self.ref is not None else None
|
||||
|
||||
level_source: SkillRef | str | None = None
|
||||
"""共享等级的源技能;目标不独立加级,也不使用自身 maxLv 截断。"""
|
||||
association_source: bool | None = None
|
||||
"""共享等级技能默认仅复用等级;需要独立提供关联效果时显式开启。"""
|
||||
@@ -147,7 +156,7 @@ class Skill:
|
||||
associate: list[dict[str, Any] | EffectDeclaration] = []
|
||||
"""关联声明;维护示例和扩展边界见 core/basic/skill_effects.py 文件顶部说明。
|
||||
|
||||
新规则可用 SkillEffect/CharacterEffect,与旧字典混用;目标仍使用技能名称数组。
|
||||
新规则使用 SkillEffect/CharacterEffect 和 Ref 目标数组,兼容旧字典及名称字符串。
|
||||
新声明 value 是实际倍率/增量/覆盖值,以下 type、data、ratio 约定仅适用于旧字典。
|
||||
type 默认 '*skillDamage':*乘算、+加算、=覆盖;$*PAtkP 等作用于角色。
|
||||
skills 默认 '*',表示所有伤害技能;显式列表使用技能名称,可指定被动技能。
|
||||
@@ -223,7 +232,7 @@ class Skill:
|
||||
if engine is not None and engine.owns(self):
|
||||
engine.read_level(self)
|
||||
elif self.level_source is not None:
|
||||
return self.char.GetSkillByName(self.level_source).lv
|
||||
return resolve_skill(self.char, self.level_source).lv
|
||||
return self._lv
|
||||
|
||||
@lv.setter
|
||||
|
||||
Reference in New Issue
Block a user