feat:优化职业技能关联实现

This commit is contained in:
2026-10-13 17:10:08 +08:00
parent 7dc5f4cde5
commit 927866d366
78 changed files with 5242 additions and 1011 deletions
+58 -14
View File
@@ -1,6 +1,19 @@
# 986c2b3d72ee0e4a0b7fcfbe786d4e02
from core.basic.skill import PassiveSkill, ActiveSkill, get_data
from core.basic.character import Character
from core.basic.skill_effect_types import (
CharacterAttribute,
CharacterEffect,
Equals,
Hit,
LevelTable,
Operation,
Percent,
Power,
Read,
SkillAttribute,
SkillEffect,
)
prefix = "gunblader/hitman/cn/skillDetail"
@@ -524,9 +537,14 @@ class Skill16(PassiveSkill):
# 命中率增加 : {value2}%
data2 = get_data(f'{prefix}/{uuid}', 2)
# 迁移前实现(保留对照):
# associate = [
# {'type': '$*PAtkP', 'data': data0},
# {'type': '*cdReduce', 'data': data2, 'exceptSkills': ['电光飞掠', '集结·暮光之翼', '暮光密令 : 黎明决战']},
# ]
associate = [
{'type': '$*PAtkP', 'data': data0},
{'type': '*cdReduce', 'data': data2, 'exceptSkills': ['电光飞掠', '集结·暮光之翼', '暮光密令 : 黎明决战']},
CharacterEffect(attribute=CharacterAttribute.P_ATK_P, value=1 + Percent(LevelTable(data0))),
SkillEffect(attribute=SkillAttribute.CD_REDUCE, value=1 - Percent(LevelTable(data2)), except_skills=['电光飞掠', '集结·暮光之翼', '暮光密令 : 黎明决战']),
]
# 捷影步
@@ -778,7 +796,11 @@ class Skill23(PassiveSkill):
# 物理暴击率增加 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{'data': data0, 'type': '*skillDamage'}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage'}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 潜行射击
# gunblader/hitman/6e33d47e6622ce03b6defdd912140270
@@ -1157,7 +1179,11 @@ class Skill31(PassiveSkill):
# 基本攻击力和技能攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
associate = [{'data': data0, 'type': '*skillDamage'}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage'}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 电光飞掠
# gunblader/hitman/669f1428193f61f9d92c743b72438c4d
@@ -1335,10 +1361,14 @@ class Skill34(ActiveSkill):
self.cd = 25
self.skillRation *= 0.5
def effect(self, old, new):
if self.vp == 2:
self.associate = [{'type': '*skillRation', 'data': [0] + [-50] * self.maxLv, 'skills': ['潜行射击']}]
return super().effect(old, new)
# 迁移前实现(保留对照):
# def effect(self, old, new):
# if self.vp == 2:
# self.associate = [{'type': '*skillRation', 'data': [0] + [-50] * self.maxLv, 'skills': ['潜行射击']}]
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.PANEL_RATIO, value=1 + Percent(LevelTable([0] + [-50] * maxLv)), skills=['潜行射击'], when=Equals(Read(SkillAttribute.VP), 2)),
]
# B.C精锐特训
# gunblader/hitman/38612d8f2561edc2eb68d5057a837bfa
@@ -1366,7 +1396,11 @@ class Skill35(PassiveSkill):
# 基本攻击力和技能攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
associate = [{'data': data0, 'type': '*skillDamage'}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage'}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 致命焰火
# gunblader/hitman/6a1d1f08a6572be420bb3a256c44c015
@@ -1453,10 +1487,14 @@ class Skill36(ActiveSkill):
self.cd = 20
self.skillRation *= 0.5
def effect(self, old, new):
if self.vp == 2:
self.associate = [{'type': '*skillRation', 'data': [0] + [-50] * self.maxLv, 'skills': ['潜行射击']}]
return super().effect(old, new)
# 迁移前实现(保留对照):
# def effect(self, old, new):
# if self.vp == 2:
# self.associate = [{'type': '*skillRation', 'data': [0] + [-50] * self.maxLv, 'skills': ['潜行射击']}]
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.PANEL_RATIO, value=1 + Percent(LevelTable([0] + [-50] * maxLv)), skills=['潜行射击'], when=Equals(Read(SkillAttribute.VP), 2)),
]
# 碧波瞬斩
# gunblader/hitman/a2d943797daca862a6f321aca6ac9bfa
@@ -1592,7 +1630,13 @@ class Skill39(PassiveSkill):
# [轮盘连射]罗朗斩击攻击力 : [轮盘连射]攻击力总和的{value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{'data': data0, 'type': '*skillDamage'}, {'data': data1, 'type': '=hit2', 'skills': ['轮盘连射'], 'ratio': 1}, {'data': [i - 100 if i > 0 else 0 for i in data2], 'type': '*power2', 'skills': ['轮盘连射']}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage'}, {'data': data1, 'type': '=hit2', 'skills': ['轮盘连射'], 'ratio': 1}, {'data': [i - 100 if i > 0 else 0 for i in data2], 'type': '*power2', 'skills': ['轮盘连射']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
SkillEffect(attribute=Hit(2), operation=Operation.ASSIGN, value=LevelTable(data1), skills=['轮盘连射']),
SkillEffect(attribute=Power(2), value=1 + Percent(LevelTable([i - 100 if i > 0 else 0 for i in data2])), skills=['轮盘连射']),
]
# 燃情协战
# gunblader/hitman/e5c09f9132a48dc1d695968592cc5878