feat:优化职业技能关联实现
This commit is contained in:
@@ -1439,14 +1439,7 @@ class Skill38(CreatorActiveSkill):
|
||||
|
||||
mode = ['秒炸', '常规']
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("创世").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value):
|
||||
...
|
||||
level_source = '创世'
|
||||
|
||||
def setMode(self, mode):
|
||||
if mode == '秒炸':
|
||||
|
||||
@@ -2210,14 +2210,7 @@ class Skill48(ActiveSkill):
|
||||
hit2 = 8
|
||||
dataType2 = EnumDamageType.ENCHANTPOISON
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("万毒噬心诀").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value):
|
||||
...
|
||||
level_source = '万毒噬心诀'
|
||||
|
||||
# 身化万毒
|
||||
# fighter_female/brawler_female/78b86e64fbb74c1db1b71c50a5ac21cd
|
||||
|
||||
@@ -1361,14 +1361,7 @@ class Skill40(ActiveSkill):
|
||||
data0 = get_data(f'{prefix}/{uuid}', 0)
|
||||
hit0 = 1
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("烈焰焚步").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value):
|
||||
...
|
||||
level_source = '烈焰焚步'
|
||||
|
||||
# 飞燕旋风
|
||||
# fighter_male/striker_male/8e358ecf99ac9df31a6132aeafe378a9
|
||||
|
||||
@@ -682,7 +682,7 @@ class Skill22(PassiveSkill):
|
||||
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 i.lv > 0:
|
||||
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)
|
||||
|
||||
@@ -672,7 +672,7 @@ class Skill22(PassiveSkill):
|
||||
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 i.lv > 0:
|
||||
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)
|
||||
|
||||
@@ -912,25 +912,10 @@ class Skill25(ActiveSkill):
|
||||
# 蓄气时间上限减少率 : {value3}%
|
||||
data3 = get_data(f'{prefix}/{uuid}', 3)
|
||||
|
||||
_ratio = 1
|
||||
ratio = 1.0
|
||||
|
||||
associate = [{"type":"*cdRatio","data":data1,"skills":['冰墙', '元素之门', '元素之幕', '元素震荡', '圣灵水晶', '烈焰冲击','天雷', '雷旋', '杰克降临', '湮灭黑洞', '极冰盛宴', '虚无之球', '光与暗的交响']}]
|
||||
|
||||
@property
|
||||
def ratio(self):
|
||||
return self._ratio
|
||||
|
||||
@ratio.setter
|
||||
def ratio(self, value):
|
||||
if self._ratio != value:
|
||||
data = self.associate[0]
|
||||
ratio = (1 - data['data'][self.lv] / 100 * value) / (1 - data['data'][self.lv] / 100 * self._ratio)
|
||||
for item in data['skills']:
|
||||
skill = self.char.GetSkillByName(item)
|
||||
if skill is not None:
|
||||
skill.cdRatio *= ratio
|
||||
self._ratio = value
|
||||
|
||||
# 技能等级变化的时候,系数对应的数值变化
|
||||
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)
|
||||
@@ -1139,25 +1124,10 @@ class Skill31(PassiveSkill):
|
||||
# 所有属性抗性增加值 : {value1}
|
||||
data1 = get_data(f'{prefix}/{uuid}', 1)
|
||||
|
||||
_ratio = 1
|
||||
ratio = 1.0
|
||||
|
||||
associate = [{"type":"*skillDamage","data":data0}]
|
||||
|
||||
@property
|
||||
def ratio(self):
|
||||
return self._ratio
|
||||
|
||||
@ratio.setter
|
||||
def ratio(self, value):
|
||||
if self._ratio != value:
|
||||
data = self.associate[0]
|
||||
ratio = (1 + data['data'][self.lv] / 100 * value) / (1 + data['data'][self.lv] / 100 * self._ratio)
|
||||
for item in self.char.GetSkillNames('all', True):
|
||||
skill = self.char.GetSkillByName(item)
|
||||
if skill is not None:
|
||||
skill.skillRation *= ratio
|
||||
self._ratio = value
|
||||
|
||||
# 技能等级变化的时候,系数对应的数值变化
|
||||
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)
|
||||
|
||||
@@ -2924,14 +2924,7 @@ class Skill60(ActiveSkill):
|
||||
# 自身强化
|
||||
skillDamage = 1.15
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("传说召唤 : 逆月者拉莫斯").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value):
|
||||
...
|
||||
level_source = '传说召唤 : 逆月者拉莫斯'
|
||||
|
||||
# 逆月
|
||||
# mage_female/summoner/10834437b54f67c4c27f92eaabd59bb1
|
||||
|
||||
@@ -2505,13 +2505,7 @@ class Skill49(ActiveSkill):
|
||||
|
||||
associate = [{'data': data3, 'skills': ['变异苍蝇拍', '超级苍蝇拍', '改良舒露露', '改良魔法星弹', '暗影斗篷', '技艺融合', '超级棒棒糖', '光电兔', '雪人刨冰', '乌洛波洛斯之环', '糖果大作战精怪乐园', '糖果大作战捣蛋杰克']}, {'data': data4, 'type': '+powerFail', 'skills': ['熔岩药瓶', '暴炎加热炉', '冰霜钻孔车']}]
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName('贤者之石').lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value): ...
|
||||
level_source = '贤者之石'
|
||||
|
||||
def getSkillData(self, lv = 0):
|
||||
pre = self.char.GetSkillByName('超级苍蝇拍')
|
||||
|
||||
@@ -1383,14 +1383,7 @@ class Skill33(ActiveSkill):
|
||||
|
||||
associate = [{"data": [0] + [10]*maxLv,"skills":[name]}]
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("魔化 : 末日守卫者").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value):
|
||||
...
|
||||
level_source = '魔化 : 末日守卫者'
|
||||
|
||||
def skillInfo(self, mode = None):
|
||||
pre = self.char.GetSkillByName("魔化 : 末日守卫者")
|
||||
|
||||
@@ -1725,13 +1725,7 @@ class Skill47(ActiveSkill):
|
||||
hasVP = False
|
||||
hasUP = False
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName('神圣洗礼 : 信仰之翼').lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value): ...
|
||||
level_source = '神圣洗礼 : 信仰之翼'
|
||||
|
||||
# 爆炸攻击力 : {value0}
|
||||
data0 = get_data(f'{prefix}/{uuid}', 0)
|
||||
|
||||
@@ -652,13 +652,7 @@ class Skill21(ActiveSkill):
|
||||
# 范围比率 : {value3}%
|
||||
data3 = get_data(f'{prefix}/{uuid}', 3)
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("三才回轮剑").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value): ...
|
||||
level_source = '三才回轮剑'
|
||||
|
||||
# 轮回剑
|
||||
# swordman_female/vegabond/852f8ad797db4dca1405cb3e77198401
|
||||
@@ -695,13 +689,7 @@ class Skill22(ActiveSkill):
|
||||
# 范围比率 : {value3}%
|
||||
data3 = get_data(f'{prefix}/{uuid}', 3)
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("三才回轮剑").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value): ...
|
||||
level_source = '三才回轮剑'
|
||||
|
||||
# 三才回轮剑
|
||||
# swordman_female/vegabond/ab6fc3303df03b58911967dfca2b5d07
|
||||
|
||||
@@ -1052,14 +1052,7 @@ class Skill31(ActiveSkill):
|
||||
data0 = get_data(f'{prefix}/{uuid}', 0)
|
||||
hit0 = 3
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName("鬼连击").lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value):
|
||||
...
|
||||
level_source = '鬼连击'
|
||||
|
||||
def getSkillCD(self,mode=None):
|
||||
return self.char.GetSkillByName("鬼连击").getSkillCD(mode)
|
||||
|
||||
@@ -1746,13 +1746,7 @@ class Skill42(ActiveSkill):
|
||||
# [冥炎剑]最后一击范围比率 : {value4}%
|
||||
data4 = get_data(f'{prefix}/{uuid}', 4)
|
||||
|
||||
@property
|
||||
def lv(self):
|
||||
"""技能等级"""
|
||||
return self.char.GetSkillByName('冥炎之卡洛').lv
|
||||
|
||||
@lv.setter
|
||||
def lv(self, value): ...
|
||||
level_source = '冥炎之卡洛'
|
||||
|
||||
def vp_1(self):
|
||||
"""
|
||||
|
||||
@@ -742,26 +742,10 @@ class Skill20(ActiveSkill):
|
||||
# 7点 : {value7}%
|
||||
data7 = get_data(f'{prefix}/{uuid}', 7)
|
||||
|
||||
_maxLayer = 6
|
||||
maxLayer = 6
|
||||
|
||||
associate = [{'type': '*endpower', 'data': data0}, {'type': '*endpower'}]
|
||||
|
||||
@property
|
||||
def maxLayer(self):
|
||||
return self._maxLayer
|
||||
|
||||
@maxLayer.setter
|
||||
def maxLayer(self, value):
|
||||
if self._maxLayer != value:
|
||||
skills = self.char.GetSkillNames('all', True)
|
||||
if self.lv > 0:
|
||||
raito = (getattr(self, f'data{int(value)}')[self.lv] - 100) / (getattr(self, f'data{int(self.maxLayer)}')[self.lv] - 100)
|
||||
for name in skills:
|
||||
skill = self.char.GetSkillByName(name)
|
||||
if skill.type == 'active' and skill.damage:
|
||||
skill.endpower *= raito
|
||||
self._maxLayer = value
|
||||
|
||||
def update_skill_attribute(self, skill, type, old, new, data, ratio=100, weapon=(), weapon_type=None, weapon_options=()):
|
||||
if len(data) == 0:
|
||||
data = getattr(self, f'data{int(self.maxLayer)}')
|
||||
@@ -1080,7 +1064,7 @@ class Skill27(PassiveSkill):
|
||||
associate = [
|
||||
{'type': '$*PAtkP', 'data': data0},
|
||||
{'type': '*cdReduce', 'data': data1, 'exceptSkills': []},
|
||||
{'type': '+maxLayer', 'data': data2, 'ratio': 1, 'skills': ['终结追击']},
|
||||
{'type': '+maxLayer', 'data': data2, 'ratio': 1, 'skills': ['终结之击']},
|
||||
]
|
||||
|
||||
# 旋舞斩
|
||||
|
||||
Reference in New Issue
Block a user