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
@@ -3,6 +3,23 @@ from core.basic.roleinfo import CharacterEquipInfo
from core.basic.formula import 武器强化计算
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,
Operation,
Percent,
ProfessionAttribute,
SkillAttribute,
SkillEffect,
)
class BattleMageAttribute(ProfessionAttribute):
"""本职业专用的最终效果属性;字段含义与技能实现保持一致。"""
USE_CHANGE = 'useChange'
"""战斗法师:是否启用煌龙偃月的替代形态。"""
prefix = "mage_female/battle_mage/cn/skillDetail"
@@ -111,7 +128,11 @@ class Skill3(PassiveSkill):
# 跳跃攻击力变化率 : {value2}%
data2 = get_data(f'{prefix}/{uuid}', 2)
associate = [{'type': '*skillDamage', 'data': [i - 100 if i > 0 else 0 for i in data0], 'skills': ['炫纹']}]
# 迁移前实现(保留对照):
# associate = [{'type': '*skillDamage', 'data': [i - 100 if i > 0 else 0 for i in data0], 'skills': ['炫纹']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable([i - 100 if i > 0 else 0 for i in data0])), skills=['炫纹']),
]
# 受身蹲伏
# mage_female/battle_mage/ce26c6b69d02a440a81b552bec94f03b
@@ -435,8 +456,12 @@ class Skill14(PassiveSkill):
# 物理、 魔法暴击率增加 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
# 迁移前实现(保留对照):
# associate = [
# {'type': '*skillDamage', 'data': data0},
# ]
associate = [
{'type': '*skillDamage', 'data': data0},
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 落花掌
@@ -617,7 +642,11 @@ class Skill19(ActiveSkill):
# 暴击率增加 : {value9}%
data9 = get_data(f'{prefix}/{uuid}', 9)
associate = [{'type': '*skillDamage', 'data': data6}]
# 迁移前实现(保留对照):
# associate = [{'type': '*skillDamage', 'data': data6}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data6))),
]
# 实战型替身草人
# mage_female/battle_mage/fc30c667a58e1dd54b5d214e04f4f23c
@@ -645,7 +674,11 @@ class Skill20(PassiveSkill):
data2 = get_data(f'{prefix}/{uuid}', 2)
# 替身草人冷却时间减少 : {value3}秒
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{'type': '+cdCut', 'skills': ['替身草人'], 'data': data3, 'ratio': 1}]
# 迁移前实现(保留对照):
# associate = [{'type': '+cdCut', 'skills': ['替身草人'], 'data': data3, 'ratio': 1}]
associate = [
SkillEffect(attribute=SkillAttribute.CD_CUT, operation=Operation.ADD, value=LevelTable(data3), skills=['替身草人']),
]
# 战斗法师武器精通
# mage_female/battle_mage/27bade584bb42fef68148d3a0b72bace
@@ -685,10 +718,16 @@ class Skill21(PassiveSkill):
data5 = get_data(f'{prefix}/{uuid}', 5)
# 装备矛时,技能攻击范围增加率 : {value6}%
data6 = get_data(f'{prefix}/{uuid}', 6)
# 迁移前实现(保留对照):
# associate = [
# {'type': '$*PAtkP', 'data': data0},
# {'type': '$*PAtkM', 'data': data0},
# {'type': '*cdReduce', 'data': data2, 'exceptSkills': ['星纹陨爆', '一骑当千碎霸', '太古星河·殒灭']},
# ]
associate = [
{'type': '$*PAtkP', 'data': data0},
{'type': '$*PAtkM', 'data': data0},
{'type': '*cdReduce', 'data': data2, 'exceptSkills': ['星纹陨爆', '一骑当千碎霸', '太古星河·殒灭']},
CharacterEffect(attribute=CharacterAttribute.P_ATK_P, value=1 + Percent(LevelTable(data0))),
CharacterEffect(attribute=CharacterAttribute.P_ATK_M, value=1 + Percent(LevelTable(data0))),
SkillEffect(attribute=SkillAttribute.CD_REDUCE, value=1 - Percent(LevelTable(data2)), except_skills=['星纹陨爆', '一骑当千碎霸', '太古星河·殒灭']),
]
# 双重锤击
@@ -1153,7 +1192,11 @@ class Skill32(PassiveSkill):
rangeLv = 2
uuid = '573723c8c0614f5b1218ca9ff992115b'
associate = [{'type': '+useChange', 'data': [0, 100], 'skills': ['煌龙偃月']}]
# 迁移前实现(保留对照):
# associate = [{'type': '+useChange', 'data': [0, 100], 'skills': ['煌龙偃月']}]
associate = [
SkillEffect(attribute=BattleMageAttribute.USE_CHANGE, operation=Operation.ADD, value=Percent(LevelTable([0, 100])), skills=['煌龙偃月']),
]
# 斗神意志
@@ -1203,8 +1246,12 @@ class Skill33(PassiveSkill):
# 回避率增加 : {value12}%
data12 = get_data(f'{prefix}/{uuid}', 12)
# 迁移前实现(保留对照):
# associate = [
# {'type': '*skillDamage', 'data': data0},
# ]
associate = [
{'type': '*skillDamage', 'data': data0},
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 星纹陨爆
@@ -1363,8 +1410,12 @@ class Skill37(PassiveSkill):
# 物理暴击率和魔法暴击率补正比率 : {value2}%
data2 = get_data(f'{prefix}/{uuid}', 2)
# 迁移前实现(保留对照):
# associate = [
# {'type': '*skillDamage', 'data': data0},
# ]
associate = [
{'type': '*skillDamage', 'data': data0},
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 炫纹簇
@@ -1632,8 +1683,12 @@ class Skill44(PassiveSkill):
# 基本攻击力和转职技能攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
# 迁移前实现(保留对照):
# associate = [
# {'type': '*skillDamage', 'data': data0},
# ]
associate = [
{'type': '*skillDamage', 'data': data0},
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 炫纹之源 : 太古神光
@@ -1,6 +1,16 @@
#3909d0b188e9c95311399f776e331da5
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,
Operation,
Percent,
Read,
SkillAttribute,
SkillEffect,
)
prefix = "mage_female/elementalist/cn/skillDetail"
@@ -914,11 +924,16 @@ class Skill25(ActiveSkill):
ratio = 1.0
associate = [{"type":"*cdRatio","data":data1,"skills":['冰墙', '元素之门', '元素之幕', '元素震荡', '圣灵水晶', '烈焰冲击','天雷', '雷旋', '杰克降临', '湮灭黑洞', '极冰盛宴', '虚无之球', '光与暗的交响']}]
# 迁移前实现(保留对照):
# associate = [{"type":"*cdRatio","data":data1,"skills":['冰墙', '元素之门', '元素之幕', '元素震荡', '圣灵水晶', '烈焰冲击','天雷', '雷旋', '杰克降临', '湮灭黑洞', '极冰盛宴', '虚无之球', '光与暗的交响']}]
associate = [
SkillEffect(attribute=SkillAttribute.CD_RATIO, value=1 - (Percent(LevelTable(data1)) * Read(SkillAttribute.RATIO)), skills=['冰墙', '元素之门', '元素之幕', '元素震荡', '圣灵水晶', '烈焰冲击', '天雷', '雷旋', '杰克降临', '湮灭黑洞', '极冰盛宴', '虚无之球', '光与暗的交响']),
]
# 技能等级变化的时候,系数对应的数值变化
def update_skill_attribute(self, skill, type, old, new, data, ratio=100, weapon=(), weapon_type=None, weapon_options=()):
super().update_skill_attribute(skill, type, old, new, data, ratio / self.ratio, weapon, weapon_type, weapon_options)
# 迁移前实现(保留对照):
# def update_skill_attribute(self, skill, type, old, new, data, ratio=100, weapon=(), weapon_type=None, weapon_options=()):
# super().update_skill_attribute(skill, type, old, new, data, ratio / self.ratio, weapon, weapon_type, weapon_options)
# 虚无之球
# mage_female/elementalist/5dc7008b12a459325b548b0715c6b73c
@@ -1126,11 +1141,16 @@ class Skill31(PassiveSkill):
ratio = 1.0
associate = [{"type":"*skillDamage","data":data0}]
# 迁移前实现(保留对照):
# associate = [{"type":"*skillDamage","data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + (Percent(LevelTable(data0)) * Read(SkillAttribute.RATIO))),
]
# 技能等级变化的时候,系数对应的数值变化
def update_skill_attribute(self, skill, type, old, new, data, ratio=100, weapon=(), weapon_type=None, weapon_options=()):
super().update_skill_attribute(skill, type, old, new, data, ratio / self.ratio, weapon, weapon_type, weapon_options)
# 迁移前实现(保留对照):
# def update_skill_attribute(self, skill, type, old, new, data, ratio=100, weapon=(), weapon_type=None, weapon_options=()):
# super().update_skill_attribute(skill, type, old, new, data, ratio / self.ratio, weapon, weapon_type, weapon_options)
# 天雷
# mage_female/elementalist/d2c6df5105577fb59fb92529a36165a0
@@ -1228,9 +1248,14 @@ class Skill33(PassiveSkill):
# [天雷]攻击力增加率 : {value0}%
data0 = get_data(f'{prefix}/{uuid}', 0)
# [天雷]发射间隔减少率 : 50%
# 迁移前实现(保留对照):
# associate = [
# {"type":"+cd","data":[0,5],"skills":["天雷"],"ratio":1},
# {"type":"*skillDamage","data":data0,"skills":["天雷"]}
# ]
associate = [
{"type":"+cd","data":[0,5],"skills":["天雷"],"ratio":1},
{"type":"*skillDamage","data":data0,"skills":["天雷"]}
SkillEffect(attribute=SkillAttribute.CD, operation=Operation.ADD, value=LevelTable([0, 5]), skills=['天雷']),
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0)), skills=['天雷']),
]
# [天雷]发射间隔减少率 : 50%
@@ -1465,7 +1490,11 @@ class Skill37(PassiveSkill):
# 魔法暴击率增加率 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{"type":"$*PAtkM","data":data0}]
# 迁移前实现(保留对照):
# associate = [{"type":"$*PAtkM","data":data0}]
associate = [
CharacterEffect(attribute=CharacterAttribute.P_ATK_M, value=1 + Percent(LevelTable(data0))),
]
# 陨星幻灭
# mage_female/elementalist/b3659936a9a74c4ed6f7faf07cca1f9e
@@ -1672,7 +1701,11 @@ class Skill41(PassiveSkill):
# [杰克降临]大小增加率 : {value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{"type":"*skillDamage","data":data0}]
# 迁移前实现(保留对照):
# associate = [{"type":"*skillDamage","data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 圣灵符文
# mage_female/elementalist/bb34e8854a93fd250347a1c64119f7ab
@@ -1709,9 +1742,14 @@ class Skill42(ActiveSkill):
# 魔法暴击率增加量 : {value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
# 迁移前实现(保留对照):
# associate = [
# {"type":"+ratio","data":data0,"skills":["魔法秀"]},
# {"type":"+ratio","data":data2,"skills":["属性精通"]}
# ]
associate = [
{"type":"+ratio","data":data0,"skills":["魔法秀"]},
{"type":"+ratio","data":data2,"skills":["属性精通"]}
SkillEffect(attribute=SkillAttribute.RATIO, operation=Operation.ADD, value=Percent(LevelTable(data0)), skills=['魔法秀']),
SkillEffect(attribute=SkillAttribute.RATIO, operation=Operation.ADD, value=Percent(LevelTable(data2)), skills=['属性精通']),
]
# 圣灵水晶
@@ -1907,7 +1945,11 @@ class Skill46(PassiveSkill):
# 融合虚无之球多段攻击力 : 虚无之球多段攻击力的40%
# 融合虚无之球爆炸攻击力 : 虚无之球多段攻击力的240%
associate = [{"type":"*skillDamage","data":data0}]
# 迁移前实现(保留对照):
# associate = [{"type":"*skillDamage","data":data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 融合虚无之球多段攻击力 : 虚无之球多段攻击力的40%
# 融合虚无之球爆炸攻击力 : 虚无之球多段攻击力的240%
@@ -1,6 +1,12 @@
#3909d0b188e9c95311399f776e331da5
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,
)
prefix = "mage_female/enchantress/cn/skillDetail"
@@ -891,7 +897,11 @@ class Skill25(PassiveBufferSkill):
data0 = get_data(f'{prefix}/{uuid}', 0)
INT = data0
associate = [{"data":INT,"type":"$+INT","ratio":1}]
# 迁移前实现(保留对照):
# associate = [{"data":INT,"type":"$+INT","ratio":1}]
associate = [
CharacterEffect(attribute=CharacterAttribute.INT, operation=Operation.ADD, value=LevelTable(INT)),
]
# 疯狂乱抓
# mage_female/enchantress/6bbf76bcd2ed3ca25f21b760db4342ad
@@ -1662,7 +1672,11 @@ class Skill43(PassiveBufferSkill):
INT = data3
STRINT = data3
associate = [{"data":INT,"type":"$+INT","ratio":1}]
# 迁移前实现(保留对照):
# associate = [{"data":INT,"type":"$+INT","ratio":1}]
associate = [
CharacterEffect(attribute=CharacterAttribute.INT, operation=Operation.ADD, value=LevelTable(INT)),
]
# 开幕! 人偶剧场
# mage_female/enchantress/56fca6cff74d828e92301a40cd2148b9
@@ -1968,7 +1982,11 @@ class Skill49(PassiveBufferSkill):
data7 = get_data(f'{prefix}/{uuid}', 7)
INT = data0
associate = [{"data":INT ,"type":"$+INT","ratio":1}]
# 迁移前实现(保留对照):
# associate = [{"data":INT ,"type":"$+INT","ratio":1}]
associate = [
CharacterEffect(attribute=CharacterAttribute.INT, operation=Operation.ADD, value=LevelTable(INT)),
]
CarryRatio = [0]+ [(1.05 ** 3) * 100 - 100]*maxLv# noqa: E501
# 苦痛庭院
@@ -2157,7 +2175,11 @@ class Skill53(PassiveBufferSkill):
# [疯熊守护]防御冷却时间 : 30秒
INT = data1
associate = [{"data": data1,"type": "$+INT","ratio":1}]
# 迁移前实现(保留对照):
# associate = [{"data": data1,"type": "$+INT","ratio":1}]
associate = [
CharacterEffect(attribute=CharacterAttribute.INT, operation=Operation.ADD, value=LevelTable(data1)),
]
# [疯熊守护]防御冷却时间 : 30秒
# 挚爱囚笼
@@ -2,9 +2,17 @@
from core.basic.skill import PassiveSkill, ActiveSkill, get_data, _get_skill_damage_suffixes
from core.basic.character import Character
prefix = "mage_female/summoner/cn/skillDetail"
from enum import Enum
from core.basic.skill_effect_types import (
LevelTable,
Operation,
Percent,
SkillAttribute,
SkillEffect,
)
prefix = "mage_female/summoner/cn/skillDetail"
class EnumDataType(Enum):
A = '附灵'
@@ -1056,35 +1064,39 @@ class Skill27(PassiveSkill):
# 物防和魔防的增加 : {value4}%
data4 = get_data(f'{prefix}/{uuid}', 4)
# 迁移前实现(保留对照):
# associate = [
# {
# 'data': data3,
# 'type': '*skillDamage',
# 'skills': [
# '契约召唤 : 赫德尔',
# '精灵召唤 : 亚德炎',
# '精灵召唤 : 冰奈斯',
# '精灵召唤 : 瑟冥特克',
# '精灵召唤 : 雷沃斯',
# '契约召唤 : 弗利特',
# '契约召唤 : 桑德尔',
# '精灵召唤 : 亡魂默克尔',
# '精灵召唤 : 极光格雷林',
# '精灵召唤 : 冰影阿奎利斯',
# '精灵召唤 : 火焰赫瑞克',
# '契约召唤 : 路易丝',
# '精灵召唤 : 伊伽贝拉',
# '契约召唤 : 牛头王库鲁塔',
# '契约召唤 : 征服者卡西利亚斯',
# '必杀剑·千鬼杀',
# '狂化黑月',
# '传说召唤 : 月蚀之影',
# '传说召唤 : 逆月者拉莫斯',
# '咒令 : 逆月之蚀',
# '至高精灵王',
# '魔月·德拉里昂',
# ],
# }
# ]
associate = [
{
'data': data3,
'type': '*skillDamage',
'skills': [
'契约召唤 : 赫德尔',
'精灵召唤 : 亚德炎',
'精灵召唤 : 冰奈斯',
'精灵召唤 : 瑟冥特克',
'精灵召唤 : 雷沃斯',
'契约召唤 : 弗利特',
'契约召唤 : 桑德尔',
'精灵召唤 : 亡魂默克尔',
'精灵召唤 : 极光格雷林',
'精灵召唤 : 冰影阿奎利斯',
'精灵召唤 : 火焰赫瑞克',
'契约召唤 : 路易丝',
'精灵召唤 : 伊伽贝拉',
'契约召唤 : 牛头王库鲁塔',
'契约召唤 : 征服者卡西利亚斯',
'必杀剑·千鬼杀',
'狂化黑月',
'传说召唤 : 月蚀之影',
'传说召唤 : 逆月者拉莫斯',
'咒令 : 逆月之蚀',
'至高精灵王',
'魔月·德拉里昂',
],
}
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data3)), skills=['契约召唤 : 赫德尔', '精灵召唤 : 亚德炎', '精灵召唤 : 冰奈斯', '精灵召唤 : 瑟冥特克', '精灵召唤 : 雷沃斯', '契约召唤 : 弗利特', '契约召唤 : 桑德尔', '精灵召唤 : 亡魂默克尔', '精灵召唤 : 极光格雷林', '精灵召唤 : 冰影阿奎利斯', '精灵召唤 : 火焰赫瑞克', '契约召唤 : 路易丝', '精灵召唤 : 伊伽贝拉', '契约召唤 : 牛头王库鲁塔', '契约召唤 : 征服者卡西利亚斯', '必杀剑·千鬼杀', '狂化黑月', '传说召唤 : 月蚀之影', '传说召唤 : 逆月者拉莫斯', '咒令 : 逆月之蚀', '至高精灵王', '魔月·德拉里昂']),
]
# 伺机而动
@@ -1140,7 +1152,11 @@ class Skill29(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))),
]
# 召唤下级精灵
# mage_female/summoner/f8226512ea3dbcb1fe1374baa0c6bbee
@@ -1199,7 +1215,11 @@ class Skill31(ActiveSkill):
# 蓄气时间上限减少率 : {value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{'type': '*cdRatio', 'data': data1, 'skills': ['精灵献祭', '咒令 : 愤怒咆哮']}]
# 迁移前实现(保留对照):
# associate = [{'type': '*cdRatio', 'data': data1, 'skills': ['精灵献祭', '咒令 : 愤怒咆哮']}]
associate = [
SkillEffect(attribute=SkillAttribute.CD_RATIO, value=1 - Percent(LevelTable(data1)), skills=['精灵献祭', '咒令 : 愤怒咆哮']),
]
# 精灵献祭
# mage_female/summoner/c27418ae613c647527200a7ca17d97fd
@@ -1518,7 +1538,11 @@ class Skill38(PassiveSkill):
# [鞭挞]增益效果持续时间增加 : {value0}秒
data0 = get_data(f'{prefix}/{uuid}', 0)
associate = [{'data': [0] + [2] * maxLv, 'type': '+cd', 'skills': ['鞭挞'], 'ratio': 1}]
# 迁移前实现(保留对照):
# associate = [{'data': [0] + [2] * maxLv, 'type': '+cd', 'skills': ['鞭挞'], 'ratio': 1}]
associate = [
SkillEffect(attribute=SkillAttribute.CD, operation=Operation.ADD, value=LevelTable([0] + [2] * maxLv), skills=['鞭挞']),
]
# 契约召唤 : 袄索
# mage_female/summoner/e4c354a89c337310aeb7041d5e742828
@@ -2131,7 +2155,11 @@ class Skill46(SummonSkill):
# 自身强化
skillDamage = 1.3
associate = [{'type': '*skillDamage', 'data': data13, 'skills': ['精灵召唤 : 亡魂默克尔', '精灵召唤 : 极光格雷林', '精灵召唤 : 冰影阿奎利斯', '精灵召唤 : 火焰赫瑞克']}]
# 迁移前实现(保留对照):
# associate = [{'type': '*skillDamage', 'data': data13, 'skills': ['精灵召唤 : 亡魂默克尔', '精灵召唤 : 极光格雷林', '精灵召唤 : 冰影阿奎利斯', '精灵召唤 : 火焰赫瑞克']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data13)), skills=['精灵召唤 : 亡魂默克尔', '精灵召唤 : 极光格雷林', '精灵召唤 : 冰影阿奎利斯', '精灵召唤 : 火焰赫瑞克']),
]
def vp_1(self):
"""
@@ -2359,7 +2387,11 @@ class Skill50(PassiveSkill):
# 施放速度增加 : {value1}%
data1 = get_data(f'{prefix}/{uuid}', 1)
associate = [{'data': data0}]
# 迁移前实现(保留对照):
# associate = [{'data': data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 契约召唤 : 征服者卡西利亚斯
# mage_female/summoner/0b8db1e10b3abbd24d38564e708675d5
@@ -2530,7 +2562,11 @@ class Skill54(ActiveSkill):
# 速度增加光环范围 : {value6}px
data6 = get_data(f'{prefix}/{uuid}', 6)
associate = [{'data': data2, 'type': '*skillDamage'}]
# 迁移前实现(保留对照):
# associate = [{'data': data2, 'type': '*skillDamage'}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data2))),
]
def vp_1(self):
"""
@@ -2647,7 +2683,11 @@ class Skill56(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))),
]
# 狂化黑月
# mage_female/summoner/8572675ec6a1f50b6eff6a867376c2de
@@ -2961,7 +3001,11 @@ class Skill61(PassiveSkill):
# [鞭挞]召唤兽攻击、 移动速度额外增加 : {value2}%
data2 = get_data(f'{prefix}/{uuid}', 2)
associate = [{'data': data0, 'type': '*skillDamage'}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '*skillDamage'}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 至高精灵王
# mage_female/summoner/13e8c4ad93473b5fcea11e81ce9456f5
+74 -14
View File
@@ -1,6 +1,26 @@
# 3909d0b188e9c95311399f776e331da5
from core.basic.skill import PassiveSkill, ActiveSkill, get_data
from core.basic.character import Character
from core.basic.skill_effect_types import (
Equals,
LevelTable,
MissingTargetPolicy,
Operation,
Percent,
ProfessionAttribute,
Read,
SkillAttribute,
SkillEffect,
)
class WitchAttribute(ProfessionAttribute):
"""本职业专用的最终效果属性;字段含义与技能实现保持一致。"""
FAIL_POWER = 'powerFail'
"""魔道学者:失败形态伤害倍率。"""
SUCCESS_POWER = 'powerSuccess'
"""魔道学者:成功形态伤害倍率。"""
prefix = "mage_female/witch/cn/skillDetail"
@@ -897,7 +917,11 @@ class Skill24(PassiveSkill):
# [改良魔法星弹]探索范围增加率 : {value10}%
data10 = get_data(f'{prefix}/{uuid}', 10)
associate = [{'data': data0}]
# 迁移前实现(保留对照):
# associate = [{'data': data0}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
]
# 扫把掌握
# mage_female/witch/5152480fdde81362575a488d4cec4af9
@@ -1080,7 +1104,11 @@ class Skill28(ActiveSkill):
# 蓄气时间上限减少率 : {value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
associate = [{'type': '*cdRatio', 'data': data1, 'skills': ['改良魔法星弹', '改良舒露露', '熔岩药瓶', '魔道酸雨云', '旋转扫把', '电鳗碰撞机', '暴炎加热炉', '冰霜钻孔车', '反重力装置', '光电兔', '雪人刨冰', '糖果大作战 : 捣蛋杰克']}]
# 迁移前实现(保留对照):
# associate = [{'type': '*cdRatio', 'data': data1, 'skills': ['改良魔法星弹', '改良舒露露', '熔岩药瓶', '魔道酸雨云', '旋转扫把', '电鳗碰撞机', '暴炎加热炉', '冰霜钻孔车', '反重力装置', '光电兔', '雪人刨冰', '糖果大作战 : 捣蛋杰克']}]
associate = [
SkillEffect(attribute=SkillAttribute.CD_RATIO, value=1 - Percent(LevelTable(data1)), skills=['改良魔法星弹', '改良舒露露', '熔岩药瓶', '魔道酸雨云', '旋转扫把', '电鳗碰撞机', '暴炎加热炉', '冰霜钻孔车', '反重力装置', '光电兔', '雪人刨冰', '糖果大作战 : 捣蛋杰克']),
]
# 魔幻粉末
# mage_female/witch/7e904ea3d2a9faa054604e55120a9268
@@ -1268,7 +1296,11 @@ class Skill33(PassiveSkill):
# 基本攻击力、 技能攻击力增加率 : {value2}%
data2 = get_data(f'{prefix}/{uuid}', 2)
associate = [{'data': data2}]
# 迁移前实现(保留对照):
# associate = [{'data': data2}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data2))),
]
# 魔道酸雨云
# mage_female/witch/b89c9ab317bc0a443f6497b7cca2f6a8
@@ -1489,10 +1521,16 @@ class Skill37(PassiveSkill):
# [冰霜钻孔车]失败攻击力增加率 : {value3}%
data3 = get_data(f'{prefix}/{uuid}', 3)
# 迁移前实现(保留对照):
# associate = [
# {'data': data1, 'type': '+powerFail', 'skills': ['熔岩药瓶']},
# {'data': data2, 'type': '+powerFail', 'skills': ['暴炎加热炉']},
# {'data': data3, 'type': '+powerFail', 'skills': ['冰霜钻孔车']},
# ]
associate = [
{'data': data1, 'type': '+powerFail', 'skills': ['熔岩药瓶']},
{'data': data2, 'type': '+powerFail', 'skills': ['暴炎加热炉']},
{'data': data3, 'type': '+powerFail', 'skills': ['冰霜钻孔车']},
SkillEffect(attribute=WitchAttribute.FAIL_POWER, operation=Operation.ADD, value=Percent(LevelTable(data1)), skills=['熔岩药瓶']),
SkillEffect(attribute=WitchAttribute.FAIL_POWER, operation=Operation.ADD, value=Percent(LevelTable(data2)), skills=['暴炎加热炉']),
SkillEffect(attribute=WitchAttribute.FAIL_POWER, operation=Operation.ADD, value=Percent(LevelTable(data3)), skills=['冰霜钻孔车']),
]
# 旋转扫把
@@ -2101,7 +2139,11 @@ class Skill44(PassiveSkill):
# 魔法暴击率增加量 : {value5}%
data5 = get_data(f'{prefix}/{uuid}', 5)
associate = [{'data': data4}]
# 迁移前实现(保留对照):
# associate = [{'data': data4}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data4))),
]
# 技艺融合
# mage_female/witch/3fb8395ae3b81bd608e0c4223a8eb534
@@ -2185,10 +2227,14 @@ class Skill46(ActiveSkill):
# 苍蝇拍大小比率 : {value6}%
data6 = get_data(f'{prefix}/{uuid}', 6)
def effect(self, old, new):
if self.vp == 1:
self.associate = [{'data': [0] + [-17.6] * self.maxLv, 'skills': ['变异苍蝇拍']}]
return super().effect(old, new)
# 迁移前实现(保留对照):
# def effect(self, old, new):
# if self.vp == 1:
# self.associate = [{'data': [0] + [-17.6] * self.maxLv, 'skills': ['变异苍蝇拍']}]
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable([0] + [-17.6] * maxLv)), skills=['变异苍蝇拍'], when=Equals(Read(SkillAttribute.VP), 1)),
]
def vp_1(self):
"""
@@ -2503,7 +2549,12 @@ class Skill49(ActiveSkill):
# 重力加速装置束缚时间 : {value28}秒
data28 = get_data(f'{prefix}/{uuid}', 28)
associate = [{'data': data3, 'skills': ['变异苍蝇拍', '超级苍蝇拍', '改良舒露露', '改良魔法星弹', '暗影斗篷', '技艺融合', '超级棒棒糖', '光电兔', '雪人刨冰', '乌洛波洛斯之环', '糖果大作战精怪乐园', '糖果大作战捣蛋杰克']}, {'data': data4, 'type': '+powerFail', 'skills': ['熔岩药瓶', '暴炎加热炉', '冰霜钻孔车']}]
# 迁移前实现(保留对照):
# associate = [{'data': data3, 'skills': ['变异苍蝇拍', '超级苍蝇拍', '改良舒露露', '改良魔法星弹', '暗影斗篷', '技艺融合', '超级棒棒糖', '光电兔', '雪人刨冰', '乌洛波洛斯之环', '糖果大作战精怪乐园', '糖果大作战捣蛋杰克']}, {'data': data4, 'type': '+powerFail', 'skills': ['熔岩药瓶', '暴炎加热炉', '冰霜钻孔车']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data3)), skills=['变异苍蝇拍', '超级苍蝇拍', '改良舒露露', '改良魔法星弹', '暗影斗篷', '技艺融合', '超级棒棒糖', '光电兔', '雪人刨冰', '乌洛波洛斯之环', '糖果大作战精怪乐园', '糖果大作战捣蛋杰克'], missing_target=MissingTargetPolicy.SKIP),
SkillEffect(attribute=WitchAttribute.FAIL_POWER, operation=Operation.ADD, value=Percent(LevelTable(data4)), skills=['熔岩药瓶', '暴炎加热炉', '冰霜钻孔车']),
]
level_source = '贤者之石'
@@ -2582,7 +2633,12 @@ class Skill50(PassiveSkill):
# [冰霜钻孔车]攻击力增加率 : {value8}%
data8 = get_data(f'{prefix}/{uuid}', 8)
associate = [{'data': data0, 'type': '+powerSuccess', 'skills': ['改良舒露露', '改良魔法星弹', '魔道酸雨云', '电鳗碰撞机', '反重力装置', '熔岩药瓶', '暴炎加热炉']}, {'data': data8, 'skills': ['冰霜钻孔车']}]
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '+powerSuccess', 'skills': ['改良舒露露', '改良魔法星弹', '魔道酸雨云', '电鳗碰撞机', '反重力装置', '熔岩药瓶', '暴炎加热炉']}, {'data': data8, 'skills': ['冰霜钻孔车']}]
associate = [
SkillEffect(attribute=WitchAttribute.SUCCESS_POWER, operation=Operation.ADD, value=Percent(LevelTable(data0)), skills=['改良舒露露', '改良魔法星弹', '魔道酸雨云', '电鳗碰撞机', '反重力装置', '熔岩药瓶', '暴炎加热炉']),
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data8)), skills=['冰霜钻孔车']),
]
# 超级棒棒糖
# mage_female/witch/9bc30e0f6e22b0333762d04acae7d252
@@ -2750,7 +2806,11 @@ class Skill53(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))),
]
# 糖果大作战 : 捣蛋杰克
# mage_female/witch/fa7f1a3dc90600456cbe010e5714bef3