diff --git a/backend/core/basic/skill.py b/backend/core/basic/skill.py index 5ed88f0b..860f25a9 100644 --- a/backend/core/basic/skill.py +++ b/backend/core/basic/skill.py @@ -84,7 +84,7 @@ class Skill: """技能冷却恢复""" associate: list = [] """关联技能 - type: 关联类型 *乘算 +加算 $角色属性 默认'*skillRation' + type: 关联类型 *乘算 +加算 =直接赋值 $角色属性 默认'*skillRation' e.g. *skillRation 乘算技能面板倍率 *cdReduce 乘算技能冷却缩减 @@ -166,7 +166,7 @@ class Skill: ratio = assoc.get('ratio', 100) weapon = assoc.get('weapon', self.char.武器选项) exceptSkills = assoc.get('exceptSkills', []) - if type[0] not in ['*', '+', '$']: + if type[0] not in ['*', '+', '=', '$']: if self.precondition() and (self.char.GetWeaponType()[0] in weapon or len(weapon) == len(self.char.武器选项)): getattr(self, type)(old, new, data, skills, exceptSkills, ratio, weapon) continue @@ -212,6 +212,8 @@ class Skill: return else: setattr(skill, type[1:], getattr(skill, type[1:]) + data[new] / ratio - data[old] / ratio) + elif type.startswith('='): + setattr(skill, type[1:], data[new]) def skillInfo(self, mode: str | None = None): pass @@ -285,7 +287,7 @@ class ActiveSkill(Skill): plus = getattr(self, f'plus{i}', 0) hit = getattr(self, f'hit{i}', 0) if len(data) == 0 or hit == 0: - break + continue if lv < len(data): hit = getattr(self, f'hit{i}', 0) power = getattr(self, f'power{i}', 1) diff --git a/backend/core/character/GF/swordman_male/asura.py b/backend/core/character/GF/swordman_male/asura.py index 8637d67a..4217a5c2 100644 --- a/backend/core/character/GF/swordman_male/asura.py +++ b/backend/core/character/GF/swordman_male/asura.py @@ -436,16 +436,16 @@ class Skill17(ActiveSkill): self.cd = 4.9 def getSkillCD(self,mode=None): - if self.currentMode == "光翼": + if mode == "光翼": pre = self.char.GetSkillByName("地裂 · 波动剑") return 1.2 * pre.getSkillCD(mode) / pre.cd - elif self.currentMode == "天照": + elif mode == "天照": pre = self.char.GetSkillByName("冰刃 · 波动剑") return 2 * pre.getSkillCD(mode) / pre.cd - elif self.currentMode == "闪枪": + elif mode == "闪枪": pre = self.char.GetSkillByName("爆炎 · 波动剑") return 4.9 * pre.getSkillCD(mode) / pre.cd - elif self.currentMode == "平X": + elif mode == "平X": return 1.0 else: return super().getSkillCD(mode) @@ -631,9 +631,8 @@ class Skill22(ActiveSkill): mode = ['雷针','终结'] def vp_2(self): - self.power1 = self.power2 = 0 - self.power0 *= 1.48 - self.power3 *= 1.48 + self.setMode('雷针') + self.skillRation *= 1.48 def setMode(self, mode): if mode == "雷针":