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
@@ -1,6 +1,17 @@
#944b9aab492c15a8474f96947ceeb9e4
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,
LevelTable,
Operation,
Percent,
Read,
SkillAttribute,
SkillEffect,
)
prefix = "gunner_female/launcher_female/cn/skillDetail"
@@ -622,10 +633,16 @@ class Skill20(PassiveSkill):
data3 = get_data(f'{prefix}/{uuid}', 3)
# 技能冷却时间减少率 : {value4}%
data4 = get_data(f'{prefix}/{uuid}', 4)
# 迁移前实现(保留对照):
# associate = [
# {"type":"$*PAtkP","data":data2},
# {"data":data3},
# {"type":"*cdReduce","data":data4,"exceptSkills":['远古粒子炮', '火力全开', '制胜·最终兵器']},
# ]
associate = [
{"type":"$*PAtkP","data":data2},
{"data":data3},
{"type":"*cdReduce","data":data4,"exceptSkills":['远古粒子炮', '火力全开', '制胜·最终兵器']},
CharacterEffect(attribute=CharacterAttribute.P_ATK_P, value=1 + Percent(LevelTable(data2))),
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data3))),
SkillEffect(attribute=SkillAttribute.CD_REDUCE, value=1 - Percent(LevelTable(data4)), except_skills=['远古粒子炮', '火力全开', '制胜·最终兵器']),
]
# 空中射击
@@ -679,12 +696,23 @@ class Skill22(PassiveSkill):
hasUP = False
custom = get_data(f'{prefix}/{uuid}', "custom") # noqa: E501
# 迁移前实现(保留对照):
# def effect(self, old, new):
# skills = []
# for i in self.char.skills:
# if i.type == "active" and i.learnLv not in [50,85,100] and i.damage and self.char.skill_effects.is_learned(i):
# skills.append(i.name)
# self.associate = [{"type":"+lv","data":[0] + [1]*self.maxLv,"ratio":1,"skills":skills}]
# super().effect(old, new)
# 仅动态枚举目标名称,贡献值与 VP 条件交由类型化声明处理。
def effect(self, old, new):
skills = []
for i in self.char.skills:
if i.type == "active" and i.learnLv not in [50,85,100] and i.damage and self.char.skill_effects.is_learned(i):
skills.append(i.name)
self.associate = [{"type":"+lv","data":[0] + [1]*self.maxLv,"ratio":1,"skills":skills}]
self.associate = [
SkillEffect(attribute=SkillAttribute.LEVEL, operation=Operation.ADD, value=LevelTable([0] + [1] * self.maxLv), skills=skills),
]
super().effect(old, new)
@@ -904,7 +932,11 @@ class Skill29(PassiveSkill):
data0 = get_data(f'{prefix}/{uuid}', 0)
# 攻击力增加率 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{"data":data1,"skills":["激光炮"]}]
# 迁移前实现(保留对照):
# associate = [{"data":data1,"skills":["激光炮"]}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data1)), skills=['激光炮']),
]
# 脉冲雷达-63
# gunner_female/launcher_female/9376d04c476cd41d60ed1974ca69ab95
@@ -929,7 +961,11 @@ class Skill30(PassiveSkill):
data0 = get_data(f'{prefix}/{uuid}', 0)
# 物理攻击力增加率 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{"data":data1,"type":"$*PAtkP"}]
# 迁移前实现(保留对照):
# associate = [{"data":data1,"type":"$*PAtkP"}]
associate = [
CharacterEffect(attribute=CharacterAttribute.P_ATK_P, value=1 + Percent(LevelTable(data1))),
]
# 聚焦喷火器
# gunner_female/launcher_female/04883563896fe1adac7505c6146b5f59
@@ -1297,10 +1333,14 @@ class Skill37(ActiveSkill):
"""
...
def effect(self, old, new):
if self.vp == 1:
self.associate = [{"type":"*skillRation","data":[0] + [-12.5]*self.maxLv,"skills":["激光炮"]}]
return super().effect(old, new)
# 迁移前实现(保留对照):
# def effect(self, old, new):
# if self.vp == 1:
# self.associate = [{"type":"*skillRation","data":[0] + [-12.5]*self.maxLv,"skills":["激光炮"]}]
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.PANEL_RATIO, value=1 + Percent(LevelTable([0] + [-12.5] * maxLv)), skills=['激光炮'], when=Equals(Read(SkillAttribute.VP), 1)),
]
# 超温重火器
# gunner_female/launcher_female/5892d1fa4462e561ac8f8d2c74892b0a
@@ -1323,7 +1363,11 @@ class Skill38(PassiveSkill):
# 基本攻击和重火器攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
associate = [{"data":data0}]
# 迁移前实现(保留对照):
# associate = [{"data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 远古粒子炮
# gunner_female/launcher_female/2ba299855fc22192cba4f73db75e9d0e
@@ -1524,7 +1568,11 @@ class Skill42(PassiveSkill):
data1 = get_data(f'{prefix}/{uuid}', 1)
# 发射后僵直时间减少率 : {value2}%
data2 = get_data(f'{prefix}/{uuid}', 2)
associate = [{"data":data0}]
# 迁移前实现(保留对照):
# associate = [{"data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 集束炸弹
# gunner_female/launcher_female/68062215e75d92575958873ac8ede31a
@@ -1718,7 +1766,11 @@ class Skill46(PassiveSkill):
data0 = get_data(f'{prefix}/{uuid}', 0)
# [M-3喷火器]、 [聚焦喷火器]、 [等离子放射器]、 [UHT-03爆炎喷火器]移动速度比率 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{"data":data0}]
# 迁移前实现(保留对照):
# associate = [{"data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# UHT-03爆炎喷火器
# gunner_female/launcher_female/3a691a432c58abebc08211df45c4f4bd
@@ -1,6 +1,23 @@
# 944b9aab492c15a8474f96947ceeb9e4
from core.basic.skill import PassiveSkill, ActiveSkill, get_data
from core.basic.character import Character
from core.basic.skill_effect_types import (
LevelTable,
Operation,
Percent,
ProfessionAttribute,
SkillAttribute,
SkillEffect,
)
class MechanicFemaleAttribute(ProfessionAttribute):
"""本职业专用的最终效果属性;字段含义与技能实现保持一致。"""
BLOW_POWER = 'blow_power'
"""女机械:空战机械爆炸分段倍率。"""
G_RATIO = 'ratio_g'
"""女机械:G 系列技能的相互强化倍率。"""
prefix = "gunner_female/mechanic_female/cn/skillDetail"
@@ -720,9 +737,14 @@ class Skill23(ActiveSkill):
# 爆炸攻击力变化率 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
# 迁移前实现(保留对照):
# associate = [
# {'data': [i - 100 if i > 100 else i for i in data1], 'skills': ['RX-78追击者', 'EZ-8爆破者']},
# {'type':'*blow_power' ,'data': [i - 100 if i > 100 else i for i in data1], 'skills': ['空战机械 : 狂风']}
# ]
associate = [
{'data': [i - 100 if i > 100 else i for i in data1], 'skills': ['RX-78追击者', 'EZ-8爆破者']},
{'type':'*blow_power' ,'data': [i - 100 if i > 100 else i for i in data1], 'skills': ['空战机械 : 狂风']}
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable([i - 100 if i > 100 else i for i in data1])), skills=['RX-78追击者', 'EZ-8爆破者']),
SkillEffect(attribute=MechanicFemaleAttribute.BLOW_POWER, value=1 + Percent(LevelTable([i - 100 if i > 100 else i for i in data1])), skills=['空战机械 : 狂风']),
]
# G-14手雷
@@ -784,7 +806,11 @@ class Skill25(PassiveSkill):
# 基本攻击力和转职技能攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
associate = [{'data': data0}]
# 迁移前实现(保留对照):
# associate = [{'data': data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 危机追击者
# gunner_female/mechanic_female/dc1ffbe7bfcc6dc2be737951960da9ad
@@ -815,7 +841,11 @@ class Skill26(PassiveSkill):
data1 = get_data(f'{prefix}/{uuid}', 1)
# 按期望计算
associate = [{'data': data0, 'type': '*skillDamage', 'skills': ['RX-78追击者']}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage', 'skills': ['RX-78追击者']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0)), skills=['RX-78追击者']),
]
# G-1科罗纳
# gunner_female/mechanic_female/1b1cfab062e0768bcc889e33e1f30dbf
@@ -865,9 +895,14 @@ class Skill27(ActiveSkill):
ratio_g = 1.0
# 迁移前实现(保留对照):
# associate = [
# {'data': data6, 'type': '+ratio_g', 'skills': ['改装 : G-2旋雷者']},
# {'data': data7, 'type': '+ratio_g', 'skills': ['改装 : G-3捕食者']}
# ]
associate = [
{'data': data6, 'type': '+ratio_g', 'skills': ['改装 : G-2旋雷者']},
{'data': data7, 'type': '+ratio_g', 'skills': ['改装 : G-3捕食者']}
SkillEffect(attribute=MechanicFemaleAttribute.G_RATIO, operation=Operation.ADD, value=Percent(LevelTable(data6)), skills=['改装 : G-2旋雷者']),
SkillEffect(attribute=MechanicFemaleAttribute.G_RATIO, operation=Operation.ADD, value=Percent(LevelTable(data7)), skills=['改装 : G-3捕食者']),
]
def getSkillCD(self, mode=None):
@@ -1009,9 +1044,14 @@ class Skill31(ActiveSkill):
# 电波前方攻击范围比率 : {value7}%
data7 = get_data(f'{prefix}/{uuid}', 7)
# 迁移前实现(保留对照):
# associate = [
# {'data': data5, 'type': '+ratio_g', 'skills': ['G-1科罗纳']},
# {'data': data6, 'type': '+ratio_g', 'skills': ['改装 : G-3捕食者']}
# ]
associate = [
{'data': data5, 'type': '+ratio_g', 'skills': ['G-1科罗纳']},
{'data': data6, 'type': '+ratio_g', 'skills': ['改装 : G-3捕食者']}
SkillEffect(attribute=MechanicFemaleAttribute.G_RATIO, operation=Operation.ADD, value=Percent(LevelTable(data5)), skills=['G-1科罗纳']),
SkillEffect(attribute=MechanicFemaleAttribute.G_RATIO, operation=Operation.ADD, value=Percent(LevelTable(data6)), skills=['改装 : G-3捕食者']),
]
def getSkillCD(self, mode=None):
@@ -1060,7 +1100,11 @@ class Skill32(PassiveSkill):
# 魔法暴击率增加 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{'data': data0, 'type': '*skillDamage', 'exceptSkills': ['G-1科罗纳', '改装 : G-2旋雷者', '改装 : G-3捕食者', 'G-磁力弹']}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage', 'exceptSkills': ['G-1科罗纳', '改装 : G-2旋雷者', '改装 : G-3捕食者', 'G-磁力弹']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0)), except_skills=['G-1科罗纳', '改装 : G-2旋雷者', '改装 : G-3捕食者', 'G-磁力弹']),
]
# 伪装
# gunner_female/mechanic_female/4b2c90ec226fd40e967875aa5eabefb2
@@ -1145,9 +1189,14 @@ class Skill34(ActiveSkill):
# 捕食者移动范围 : {value7}px
data7 = get_data(f'{prefix}/{uuid}', 7)
# 迁移前实现(保留对照):
# associate = [
# {'data': data5, 'type': '+ratio_g', 'skills': ['G-1科罗纳']},
# {'data': data6, 'type': '+ratio_g', 'skills': ['改装 : G-2旋雷者']}]
associate = [
{'data': data5, 'type': '+ratio_g', 'skills': ['G-1科罗纳']},
{'data': data6, 'type': '+ratio_g', 'skills': ['改装 : G-2旋雷者']}]
SkillEffect(attribute=MechanicFemaleAttribute.G_RATIO, operation=Operation.ADD, value=Percent(LevelTable(data5)), skills=['G-1科罗纳']),
SkillEffect(attribute=MechanicFemaleAttribute.G_RATIO, operation=Operation.ADD, value=Percent(LevelTable(data6)), skills=['改装 : G-2旋雷者']),
]
ratio_g = 1.0
@@ -1529,7 +1578,11 @@ class Skill41(PassiveSkill):
# 改装延长持续时间增加率 : {value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{'data': data0, 'type': '*skillDamage'}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage'}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 改装 : G-0战争领主
# gunner_female/mechanic_female/d89f26862e348a801b30bb9fd7125db5
@@ -1742,9 +1795,14 @@ class Skill45(PassiveSkill):
# G-4雷行者多段攻击间隔减少 : {value9}秒
data9 = get_data(f'{prefix}/{uuid}', 9)
# 迁移前实现(保留对照):
# associate = [
# {'data': data0, 'type': '*cdReduce', 'exceptSkills': ['改装 : G-0战争领主', '终结者 : 博尔特MX', 'G-X星尘天穹']},
# {'data': data2},
# ]
associate = [
{'data': data0, 'type': '*cdReduce', 'exceptSkills': ['改装 : G-0战争领主', '终结者 : 博尔特MX', 'G-X星尘天穹']},
{'data': data2},
SkillEffect(attribute=SkillAttribute.CD_REDUCE, value=1 - Percent(LevelTable(data0)), except_skills=['改装 : G-0战争领主', '终结者 : 博尔特MX', 'G-X星尘天穹']),
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data2))),
]
# G-超级猎鹰
@@ -1977,7 +2035,11 @@ class Skill49(PassiveSkill):
data0 = get_data(f'{prefix}/{uuid}', 0)
# 每蓄满1个旋雷者Y轴范围增加率 : 12.5%
associate = [{'data': data0}]
# 迁移前实现(保留对照):
# associate = [{'data': data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 每蓄满1个旋雷者Y轴范围增加率 : 12.5%
# 超时空光耀加农炮
@@ -1,6 +1,15 @@
#944b9aab492c15a8474f96947ceeb9e4
from core.basic.skill import PassiveBufferSkill,ActiveBufferSkill,ActiveSkill,PassiveSkill, get_data
from core.basic.character import Character
from core.basic.skill_effect_types import (
CharacterAttribute,
CharacterEffect,
LevelTable,
Operation,
Percent,
SkillAttribute,
SkillEffect,
)
prefix = "gunner_female/paramedic/cn/skillDetail"
@@ -439,7 +448,11 @@ class Skill14(PassiveSkill):
# 基本攻击力和技能攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
associate = [{"data":data0}] # 协战师技能关联
# 迁移前实现(保留对照):
# associate = [{"data":data0}] # 协战师技能关联
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 系统 · 战场信息
# gunner_female/paramedic/6235960237fdb1b77f2c82b33614dcf4
@@ -491,7 +504,11 @@ class Skill15(PassiveBufferSkill):
# [军械强化 (进阶)]
# [保护模件 (黄金复苏)]
Spirit = data1
associate = [{"data":data1,"type":"$+Spirit","ratio":1}]
# 迁移前实现(保留对照):
# associate = [{"data":data1,"type":"$+Spirit","ratio":1}]
associate = [
CharacterEffect(attribute=CharacterAttribute.SPIRIT, operation=Operation.ADD, value=LevelTable(data1)),
]
CarryRatio = [0]+ [((1 + i / 100) ** 3) * 100 - 100 for i in data1]# noqa: E501
# [激光炮击目标技能]
# [保护模件 (缓冲)]
@@ -728,7 +745,11 @@ class Skill22(ActiveBufferSkill):
data6 = get_data(f'{prefix}/{uuid}', 6)
Spirit = data6
associate = [{"data": data6,"type": "$+Spirit","ratio":1}] # type: ignore
# 迁移前实现(保留对照):
# associate = [{"data": data6,"type": "$+Spirit","ratio":1}] # type: ignore
associate = [
CharacterEffect(attribute=CharacterAttribute.SPIRIT, operation=Operation.ADD, value=LevelTable(data6)),
]
# 军械强化
# gunner_female/paramedic/e73e980e87591bc98940afb1ac0fe522
@@ -1120,7 +1141,11 @@ class Skill30(PassiveBufferSkill):
STRINT = data0
Spirit = data1
associate = [{"data": data1,"type": "$+Spirit","ratio":1}] # type: ignore
# 迁移前实现(保留对照):
# associate = [{"data": data1,"type": "$+Spirit","ratio":1}] # type: ignore
associate = [
CharacterEffect(attribute=CharacterAttribute.SPIRIT, operation=Operation.ADD, value=LevelTable(data1)),
]
# 强袭策略 : 区域肃清
# gunner_female/paramedic/ca0cc360e00e5f13e33027bf5fc53d5d
@@ -1346,7 +1371,11 @@ class Skill35(PassiveBufferSkill):
data6 = get_data(f'{prefix}/{uuid}', 6)
Spirit = data0
associate = [{"data": data0,"type": "$+Spirit","ratio":1}] # type: ignore
# 迁移前实现(保留对照):
# associate = [{"data": data0,"type": "$+Spirit","ratio":1}] # type: ignore
associate = [
CharacterEffect(attribute=CharacterAttribute.SPIRIT, operation=Operation.ADD, value=LevelTable(data0)),
]
# 战服 · 超限压制
# gunner_female/paramedic/9559c99a9596b20d031de1ce2649b326
@@ -1547,7 +1576,11 @@ class Skill40(PassiveBufferSkill):
data1 = get_data(f'{prefix}/{uuid}', 1)
Spirit = data1
associate = [{"data": data1,"type": "$+Spirit","ratio":1}] # type: ignore
# 迁移前实现(保留对照):
# associate = [{"data": data1,"type": "$+Spirit","ratio":1}] # type: ignore
associate = [
CharacterEffect(attribute=CharacterAttribute.SPIRIT, operation=Operation.ADD, value=LevelTable(data1)),
]
# 系统 · 孤军突破
# gunner_female/paramedic/56ef36c1980e67dd2bb50b180a925b89
@@ -1,6 +1,17 @@
#944b9aab492c15a8474f96947ceeb9e4
from core.basic.skill import PassiveSkill, ActiveSkill, get_data
from core.basic.character import Character
from core.basic.skill_effect_types import (
CharacterAttribute,
CharacterEffect,
ExtraData,
LevelTable,
Operation,
Percent,
Power,
SkillAttribute,
SkillEffect,
)
prefix = "gunner_female/ranger_female/cn/skillDetail"
@@ -608,7 +619,11 @@ class Skill19(ActiveSkill):
# [范围信息]
# 子弹速度比率 : {value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{"type":"+dataplus0","data":data0,"skills":["心灵反击","溃灭回射"],"ratio":1}]# noqa: E501
# 迁移前实现(保留对照):
# associate = [{"type":"+dataplus0","data":data0,"skills":["心灵反击","溃灭回射"],"ratio":1}]# noqa: E501
associate = [
SkillEffect(attribute=ExtraData(0), operation=Operation.ADD, value=LevelTable(data0), skills=['心灵反击', '溃灭回射']),
]
# 刺踢
# gunner_female/ranger_female/c9664191611af31142e052dfaef84530
@@ -720,7 +735,11 @@ class Skill22(PassiveSkill):
# 填装速度增加 : {value7}%
data7 = get_data(f'{prefix}/{uuid}', 7)
associate = [{"type":"$*PAtkP","data":data0}]
# 迁移前实现(保留对照):
# associate = [{"type":"$*PAtkP","data":data0}]
associate = [
CharacterEffect(attribute=CharacterAttribute.P_ATK_P, value=1 + Percent(LevelTable(data0))),
]
# 空中射击
# gunner_female/ranger_female/bb34e8854a93fd250347a1c64119f7ab
@@ -860,7 +879,11 @@ class Skill26(PassiveSkill):
data5 = get_data(f'{prefix}/{uuid}', 5)
# Y轴每秒移动距离 : {value6}px
data6 = get_data(f'{prefix}/{uuid}', 6)
associate = [{"data":data2}]
# 迁移前实现(保留对照):
# associate = [{"data":data2}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data2))),
]
# 暴击
# gunner_female/ranger_female/fc1262c19f3d0477ee8eda47b8db8696
@@ -1382,7 +1405,11 @@ class Skill38(PassiveSkill):
data3 = get_data(f'{prefix}/{uuid}', 3)
# 出血攻击力 : {value4}%
data4 = get_data(f'{prefix}/{uuid}', 4)
associate = [{"data":data0}]
# 迁移前实现(保留对照):
# associate = [{"data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 绯红盛宴
# gunner_female/ranger_female/374f53e8989ef04a8506c8ec99d9ecdc
@@ -1561,7 +1588,11 @@ class Skill42(PassiveSkill):
data0 = get_data(f'{prefix}/{uuid}', 0)
# 出血持续时间增加 : {value1}秒
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{"data":data0}]
# 迁移前实现(保留对照):
# associate = [{"data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 死亡锁链
# gunner_female/ranger_female/8ec9da6f808889b63adf2680fbf1f331
@@ -1765,7 +1796,12 @@ class Skill46(PassiveSkill):
# [花式枪术]
# 可强制中断次数上限增加量 : {value3}
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{"data":data0},{"data":data1,"type":"=power0","skills":["锁链截击"]}]
# 迁移前实现(保留对照):
# associate = [{"data":data0},{"data":data1,"type":"=power0","skills":["锁链截击"]}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
SkillEffect(attribute=Power(0), operation=Operation.ASSIGN, value=LevelTable(data1), skills=['锁链截击']),
]
# 毁灭风暴
# gunner_female/ranger_female/d59c9840f65381bde8487757f1753c71
@@ -1,6 +1,15 @@
# 944b9aab492c15a8474f96947ceeb9e4
from core.basic.skill import PassiveSkill, ActiveSkill, get_data
from core.basic.character import Character
from core.basic.skill_effect_types import (
CharacterAttribute,
CharacterEffect,
LevelTable,
Percent,
Read,
SkillAttribute,
SkillEffect,
)
prefix = "gunner_female/spitfire_female/cn/skillDetail"
@@ -710,7 +719,12 @@ class Skill22(PassiveSkill):
# 后跳使用时,消耗使用次数 : {value6}
data6 = get_data(f'{prefix}/{uuid}', 6)
associate = [{'data': data0, 'skills': ['交叉射击', '聚合弹', '凝固汽油弹', '超真空弹 : 切利']}, {'data': data1, 'skills': ['爆裂弹']}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'skills': ['交叉射击', '聚合弹', '凝固汽油弹', '超真空弹 : 切利']}, {'data': data1, 'skills': ['爆裂弹']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0)), skills=['交叉射击', '聚合弹', '凝固汽油弹', '超真空弹 : 切利']),
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data1)), skills=['爆裂弹']),
]
# 空中射击
# gunner_female/spitfire_female/bb34e8854a93fd250347a1c64119f7ab
@@ -848,7 +862,12 @@ class Skill26(PassiveSkill):
# 暴击率增加 : {value5}%
data5 = get_data(f'{prefix}/{uuid}', 5)
associate = [{'data': data3, 'type': '*skillDamage'}, {'data': data4, 'type': '*skillDamage'}]
# 迁移前实现(保留对照):
# associate = [{'data': data3, 'type': '*skillDamage'}, {'data': data4, 'type': '*skillDamage'}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data3))),
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data4))),
]
# 手雷精通
# gunner_female/spitfire_female/0113c8b1306ca76d208f83f2d093dd62
@@ -875,11 +894,15 @@ class Skill27(PassiveSkill):
ratio = 1.0
def effect(self, old, new):
self.associate = [
{'type': '*skillDamage', 'data': [i*self.ratio for i in self.data0], 'skills': ['G-14手雷', 'G-35L感电手雷', 'G-18C冰冻手雷']},
]
return super().effect(old, new)
# 迁移前实现(保留对照):
# def effect(self, old, new):
# self.associate = [
# {'type': '*skillDamage', 'data': [i*self.ratio for i in self.data0], 'skills': ['G-14手雷', 'G-35L感电手雷', 'G-18C冰冻手雷']},
# ]
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0) * Read(SkillAttribute.RATIO)), skills=['G-14手雷', 'G-35L感电手雷', 'G-18C冰冻手雷']),
]
# 暴击
@@ -939,7 +962,12 @@ class Skill29(PassiveSkill):
# 填装速度增加 : {value5}%
data5 = get_data(f'{prefix}/{uuid}', 5)
associate = [{'data': data0, 'type': '$*PAtkI'}, {'data': data2, 'type': '*cdReduce', 'exceptSkills': ['EMP磁暴', '决战之日', '终解·制空霸权']}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '$*PAtkI'}, {'data': data2, 'type': '*cdReduce', 'exceptSkills': ['EMP磁暴', '决战之日', '终解·制空霸权']}]
associate = [
CharacterEffect(attribute=CharacterAttribute.P_ATK_I, value=1 + Percent(LevelTable(data0))),
SkillEffect(attribute=SkillAttribute.CD_REDUCE, value=1 - Percent(LevelTable(data2)), except_skills=['EMP磁暴', '决战之日', '终解·制空霸权']),
]
# M18阔剑地雷
# gunner_female/spitfire_female/2ff50c35efcf0f287c4c418c8454da48
@@ -1487,7 +1515,11 @@ class Skill41(PassiveSkill):
data0 = get_data(f'{prefix}/{uuid}', 0)
# 过电流持续时间 : {value1}秒
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{'type': '*skillDamage', 'data': data0}]
# 迁移前实现(保留对照):
# associate = [{'type': '*skillDamage', 'data': data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# EMP磁暴
# gunner_female/spitfire_female/2c9d9a36c8401bddff6cdb80fab8dc24
@@ -1678,7 +1710,11 @@ class Skill45(PassiveSkill):
# 基本攻击力和技能攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
associate = [{'type': '*skillDamage', 'data': data0}]
# 迁移前实现(保留对照):
# associate = [{'type': '*skillDamage', 'data': data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 开火
# gunner_female/spitfire_female/9ceb0c55f40f1fc0fe0fcc65c8fee3a0
@@ -1851,10 +1887,15 @@ class Skill49(PassiveSkill):
# 强化手雷攻击力 : 手雷攻击力的{value2}%
data2 = get_data(f'{prefix}/{uuid}', 2)
# 迁移前实现(保留对照):
# associate = [
# {'type': '*skillDamage', 'data': data0},
# {'type': '*ratio', 'data': data1, 'skills': ['手雷精通']},
# ]
associate = [
{'type': '*skillDamage', 'data': data0},
{'type': '*ratio', 'data': data1, 'skills': ['手雷精通']},
]
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
SkillEffect(attribute=SkillAttribute.RATIO, value=1 + Percent(LevelTable(data1)), skills=['手雷精通']),
]
# 空袭战略
# gunner_female/spitfire_female/c591d1827cfbe224031c704e21d07932