Files
2024-11-04 15:00:40 +08:00

1476 lines
77 KiB
Python

from copy import deepcopy
from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能
class 主动技能(主动技能):
# 国服特色
倍率 = 1.05
class 剑魂主动技能(主动技能):
hit数 = 0 # 太刀时所需参数,计算期望刺伤
神剑术倍率 = 1.0
def 额外刺伤层数(self, 武器类型):
return 0
def 穿云刺数量(self, 武器类型):
return 0
class 剑魂流系技能(主动技能):
hit数 = 0
神剑术倍率 = 1.0
def 武器CD系数(self, 武器类型, 输出类型):
return 1.0 # 流系列技能不受武器CD影响
def 额外刺伤层数(self, 武器类型):
return 0
def 穿云刺数量(self, 武器类型):
return 0
class 技能0(被动技能):
名称 = '基础精通'
倍率 = 1.0
所在等级 = 1
等级上限 = 200
学习间隔 = 1
等级精通 = 110
关联技能 = ['里鬼剑术', '空中连斩']
def 加成倍率(self, 武器类型):
if self.等级 == 0:
return 1.0
else:
return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)
class 技能1(剑魂主动技能):
名称 = '空中连斩'
备注 = '单次伤害(太刀一次挥舞动作是两次伤害)'
所在等级 = 5
等级上限 = 11
学习间隔 = 1
等级精通 = 1
# 实际的空中连斩第一次为跳跃攻击,后续才为空中连斩的伤害
data0 = [0, 195, 209, 221, 234, 247, 260, 275, 286, 299, 312, 326]
hit0 = 1
CD = 1.0
TP成长 = 0.1
TP上限 = 5
hit数 = 2
太刀附加 = 0
def 等效百分比(self, **argv):
武器类型 = argv.get('武器类型', '光剑')
char = argv.get('char', {})
if 武器类型 != '太刀':
self.hit0 = 1
else:
self.太刀附加 = char.get_skill_by_name('太刀精通').太刀附加(武器类型)
self.hit0 = (self.data0[self.等级] - 100 +
self.太刀附加) / self.data0[self.等级] * 2 * 1.5
return super().等效百分比(**argv)
def 穿云刺数量(self, 武器类型):
return 1
class 技能2(剑魂主动技能):
名称 = '里鬼剑术'
所在等级 = 15
等级上限 = 11
学习间隔 = 15
等级精通 = 1
MP = [6, 140]
data0 = [0]*12
data = {
'短剑': [0, 1092, 1123, 1156, 1189, 1222, 1254, 1288, 1319, 1353, 1385, 1419],
'光剑': [0, 968, 994, 1024, 1052, 1082, 1112, 1140, 1170, 1196, 1226, 1256],
'巨剑': [0, 1348, 1387, 1426, 1466, 1505, 1549, 1588, 1629, 1668, 1707, 1751],
'钝器': [0, 1336, 1372, 1412, 1453, 1493, 1535, 1575, 1615, 1653, 1693, 1733],
'太刀': [0, 1308, 1344, 1382, 1422, 1464, 1502, 1540, 1578, 1620, 1660, 1698]
}
# 巨剑不蓄力伤害下降
CD = 1.0
TP成长 = 0.1
TP上限 = 5
hit数 = 8
穿云刺 = {'短剑': 3, '光剑': 3, '巨剑': 2, '钝器': 4, '太刀': 4}
附加百分比 = 0
def 武器百分比修正(self, 武器类型):
# 国服特色回收
return self.武器倍率.get(武器类型, 1.0)/1.05
def 等效百分比(self, **argv):
武器类型 = argv.get('武器类型', '光剑')
self.data0 = self.data[武器类型]
return super().等效百分比(**argv)
# 里鬼附加伤害
def 特殊技能加成(self, char, 武器类型):
self.附加百分比 = 0
self.hit1 = 0
if 武器类型 == '巨剑':
self.附加百分比 = char.get_skill_by_name('巨剑精通').里鬼附加百分比(武器类型)
self.hit1 = 1
if 武器类型 == '短剑':
self.附加百分比 = char.get_skill_by_name('短剑精通').里鬼附加百分比(武器类型)
self.hit1 = 3
self.data1 = [0] + [self.附加百分比]*11
def 穿云刺数量(self, 武器类型):
return self.穿云刺[武器类型]
class 技能3(被动技能):
名称 = '武器奥义'
所在等级 = 15
等级上限 = 30
学习间隔 = 3
等级精通 = 20
关联技能 = ['无']
class 技能4(被动技能):
名称 = '光剑掌握'
所在等级 = 15
等级上限 = 20
学习间隔 = 3
等级精通 = 10
关联技能 = ['无']
冷却关联技能 = ['所有']
非冷却关联技能 = ['极鬼剑术暴风式', '万剑归宗', '万剑极诣开天斩']
def CD缩减倍率(self, 武器类型):
if self.等级 == 0 or 武器类型 != '光剑':
return 1.0
else:
return round(1.0 - 0.01 * self.等级, 5)
class 技能5(被动技能):
名称 = '短剑精通'
所在等级 = 15
等级上限 = 2
学习间隔 = 3
等级精通 = 1
# 物理攻击力增加
data1 = [0, 16.8, 18.3, 19.8, 21.3, 22.8, 24.3, 25.8, 27.3, 28.8, 30.3, 31.8, 33.3, 34.8, 36.3, 37.8, 39.3, 40.8, 42.3, 43.8, 45.3, 46.8, 48.3, 50.3, 52.3, 54.3, 56.3, 58.3, 60.3, 62.3, 64.3, 66.3, 68.3, 70.3, 72.3, 74.3, 76.3, 78.3, 80.3, 82.3, 84.3]
# 魔法攻击力增加
data2 = [0, 1.2, 2.6, 3.9, 5.1, 6.4, 7.7, 9, 10.3, 11.6, 12.9, 14.1, 15.4, 16.7, 18, 19.3, 20.6, 21.9, 23.1, 24.4, 25.7, 27, 28.3, 29.6, 30.9, 32.1, 33.4, 34.7, 36, 37.3, 38.6, 39.9, 41.1, 42.4, 43.7, 45, 46.3, 47.6, 48.9, 50.1, 51.4]
# [里 · 鬼剑术]剑气攻击力
data3 = [0, 445, 459, 472, 486, 499, 510, 525, 537, 552, 563, 574, 590, 601, 618, 627, 639, 655, 666, 681, 693, 705, 719, 731, 746, 758, 770, 784, 797, 812, 823, 836, 850, 863, 876, 889, 900, 916, 926, 942, 953]
def 物理攻击力倍率(self, 武器类型):
if 武器类型 != '短剑':
return 1.0
else:
return round(self.data1[self.等级] / 100 + 1, 3)
def 魔法攻击力倍率(self, 武器类型):
if 武器类型 != '短剑':
return 1.0
else:
return round(self.data2[self.等级] / 100 + 1, 3)
# [里 · 鬼剑术]剑气攻击力 一轮3段
def 里鬼附加百分比(self, 武器类型):
if 武器类型 != '短剑':
return 0
else:
return self.data3[self.等级]
def 等级加成(self, x, char={}):
if self.等级 != 0:
self.等级 += int(x)
class 技能6(被动技能):
名称 = '太刀精通'
所在等级 = 15
等级上限 = 2
学习间隔 = 3
等级精通 = 1
# 物理攻击力增加
data1 = [0, 9.2, 10.7, 12.2, 13.7, 15.2, 16.7, 18.2, 19.7, 21.2, 22.7, 24.2, 25.7, 27.2, 28.7, 30.2, 31.7, 33.2, 34.7, 36.2, 37.7, 39.2, 40.7, 42.7, 44.7, 46.7, 48.7, 50.7, 52.7, 54.7, 56.7, 58.7, 60.7, 62.7, 64.7, 66.7, 68.7, 70.7, 72.7, 74.7, 76.7]
# 魔法攻击力增加
data2 = [0, 1.3, 2.8, 4.1, 5.4, 6.8, 8.2, 9.6, 10.9, 12.3, 13.7, 15, 16.4, 17.7, 19.1, 20.5, 21.9, 23.3, 24.5, 25.9, 27.3, 28.7, 30.1, 31.4, 32.8, 34.1, 35.5, 36.9, 38.2, 39.6, 41, 42.4, 43.7, 45, 46.4, 47.8, 49.2, 50.6, 52, 53.2, 54.6]
# 刺伤几率
data3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52]
# 刺伤爆炸伤害(下限)
data4 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638, 2803, 2968, 3134, 3295, 3460, 3621, 3789, 3953, 4117, 4279, 4448, 4609, 4778, 4936, 5104, 5264, 5430, 5597, 5759, 5925, 6087, 6250, 6419, 6580, 6749, 6909, 7078, 7243, 7407, 7574]
# 刺伤爆炸伤害(上限)
data5 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18328, 19469, 20609, 21749, 22890, 24030, 25169, 26311, 27452, 28590, 29732, 30873, 32012, 33154, 34291, 35432, 36571, 37713, 38852, 39992, 41133, 42274, 43412, 44554, 45696, 46834, 47976, 49114, 50256, 51398, 52536]
# 刺伤持续伤害
data6 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 16, 16, 18, 18, 18, 19, 19, 19, 19, 19]
# [空中连斩]附加攻击力
data7 = [0, 63, 68, 72, 76, 79, 84, 87, 93, 96, 99, 104, 107, 111, 115, 120, 123, 127, 131, 134, 138, 143, 147, 150, 155, 159, 161, 166, 171, 174, 177, 183, 186, 190, 196, 198, 202, 204, 209, 214, 219]
def 物理攻击力倍率(self, 武器类型):
if 武器类型 != '太刀':
return 1.0
else:
return round(self.data1[self.等级] / 100 + 1, 3)
def 魔法攻击力倍率(self, 武器类型):
if 武器类型 != '太刀':
return 1.0
else:
return round(self.data2[self.等级] / 100 + 1, 3)
def 刺伤概率(self, 武器类型):
if 武器类型 != '太刀':
return 0
else:
return self.data3[self.等级] / 100
# 17层结算一次
刺伤层数 = 0
刺伤浮动 = 1
def 刺伤百分比(self, 武器类型):
if 武器类型 != '太刀':
return 0
else:
return self.刺伤浮动 * self.刺伤层数 / 17 * self.data5[self.等级]
# [空中连斩]附加攻击力
def 太刀附加(self, 武器类型):
if 武器类型 != '太刀':
return 0
else:
return self.data7[self.等级]
def 等级加成(self, x, char={}):
if self.等级 != 0:
self.等级 += int(x)
class 技能7(被动技能):
名称 = '巨剑精通'
所在等级 = 15
等级上限 = 2
学习间隔 = 3
等级精通 = 1
# 物理攻击力增加
data1 = [0, 14.4, 15.9, 17.4, 18.9, 20.4, 21.9, 23.4, 24.9, 26.4, 27.9, 29.4, 30.9, 32.4, 33.9, 35.4, 36.9, 38.4, 39.9, 41.4, 42.9, 44.4, 45.9, 47.9, 49.9, 51.9, 53.9, 55.9, 57.9, 59.9, 61.9, 63.9, 65.9, 67.9, 69.9, 71.9, 73.9, 75.9, 77.9, 79.9, 81.9]
# 魔法攻击力增加
data2 = [0, 1.4, 3.1, 4.6, 6, 7.5, 9, 10.6, 12.1, 13.6, 15.1, 16.5, 18.1, 19.6, 21.1, 22.6, 24.2, 25.7, 27.1, 28.6, 30.2, 31.7, 33.2, 34.7, 36.3, 37.7, 39.2, 40.7, 42.2, 43.8, 45.3, 46.8, 48.2, 49.8, 51.3, 52.8, 54.3, 55.9, 57.4, 58.8, 60.3]
# [里 · 鬼剑术]额外附加
data3 = [0, 656, 695, 729, 763, 802, 835, 873, 908, 942, 980, 1014, 1048, 1087, 1121, 1153, 1194, 1226, 1264, 1299, 1332, 1370, 1405, 1439, 1478, 1511, 1549, 1584, 1618, 1656, 1690, 1724, 1762, 1797, 1830, 1869, 1903, 1940, 1976, 2008, 2046]
def 物理攻击力倍率(self, 武器类型):
if 武器类型 != '巨剑':
return 1.0
else:
return round(self.data1[self.等级] / 100 + 1, 3)
def 魔法攻击力倍率(self, 武器类型):
if 武器类型 != '巨剑':
return 1.0
else:
return round(self.data2[self.等级] / 100 + 1, 3)
def 里鬼附加百分比(self, 武器类型):
if 武器类型 != '巨剑':
return 0
else:
return self.data3[self.等级]
def 等级加成(self, x, char={}):
if self.等级 != 0:
self.等级 += int(x)
class 技能8(被动技能):
名称 = '钝器精通'
所在等级 = 15
等级上限 = 2
学习间隔 = 3
等级精通 = 1
# 物理攻击力增加
data1 = [0, 11.3, 12.8, 14.3, 15.8, 17.3, 18.8, 20.3, 21.8, 23.3, 24.8, 26.3, 27.8, 29.3, 30.8, 32.3, 33.8, 35.3, 36.8, 38.3, 39.8, 41.3, 42.8, 44.8, 46.8, 48.8, 50.8, 52.8, 54.8, 56.8, 58.8, 60.8, 62.8, 64.8, 66.8, 68.8, 70.8, 72.8, 74.8, 76.8, 78.8]
# 魔法攻击力增加
data2 = [0, 1.4, 2.9, 4.4, 5.8, 7.3, 8.7, 10.2, 11.7, 13.2, 14.6, 16, 17.5, 18.9, 20.4, 21.9, 23.4, 24.8, 26.2, 27.7, 29.1, 30.6, 32.1, 33.6, 35, 36.4, 37.9, 39.3, 40.8, 42.3, 43.8, 45.2, 46.6, 48.1, 49.6, 51, 52.5, 54, 55.4, 56.8, 58.3]
def 物理攻击力倍率(self, 武器类型):
if 武器类型 != '钝器':
return 1.0
else:
return round(self.data1[self.等级] / 100 + 1, 3)
def 魔法攻击力倍率(self, 武器类型):
if 武器类型 != '钝器':
return 1.0
else:
return round(self.data2[self.等级] / 100 + 1, 3)
def 等级加成(self, x, char={}):
if self.等级 != 0:
self.等级 += int(x)
class 技能9(被动技能):
名称 = '光剑精通'
所在等级 = 15
等级上限 = 2
学习间隔 = 3
等级精通 = 1
# 物理攻击力增加
data1 = [0, 9.5, 11, 12.5, 14, 15.5, 17, 18.5, 20, 21.5, 23, 24.5, 26, 27.5, 29, 30.5, 32, 33.5, 35, 36.5, 38, 39.5, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77]
# 魔法攻击力增加
data2 = [0, 2.5, 3.8, 5, 6.3, 7.6, 8.8, 10.1, 11.3, 12.6, 13.9, 15.1, 16.4, 17.6, 18.9, 20.2, 21.4, 22.7, 23.9, 25.2, 26.5, 27.7, 29, 30.2, 31.5, 32.8, 34, 35.3, 36.5, 37.8, 39.1, 40.3, 41.6, 42.8, 44.1, 45.4, 46.6, 47.9, 49.1, 50.4, 51.7]
def 物理攻击力倍率(self, 武器类型):
if 武器类型 != '光剑':
return 1.0
else:
return round(self.data1[self.等级] / 100 + 1, 3)
def 魔法攻击力倍率(self, 武器类型):
if 武器类型 != '光剑':
return 1.0
else:
return round(self.data2[self.等级] / 100 + 1, 3)
class 技能10(剑魂流系技能):
名称 = '流心刺'
所在等级 = 20
等级上限 = 70
学习间隔 = 2
等级精通 = 60
CD = 8
MP = [30, 280]
无色消耗 = 0
data0 = [0, 2544, 2801, 3061, 3319, 3577, 3837, 4092, 4350, 4610, 4872, 5129, 5387, 5647, 5905, 6163, 6420, 6676, 6936, 7194, 7451, 7711, 7967, 8227, 8485, 8745, 9004, 9263, 9518, 9774, 10032, 10293, 10552, 10810, 11069, 11326, 11580, 11838, 12098, 12356, 12616, 12877, 13134, 13390, 13649, 13905, 14164, 14423, 14681, 14939, 15197, 15455, 15714, 15972, 16230, 16487, 16744, 17003, 17262, 17520, 17779, 18038, 18296, 18552, 18811, 19070, 19328, 19586, 19843, 20100, 20359]
TP成长 = 0.1
TP上限 = 7
武器倍率 = {'短剑': 2 + 1, '光剑': 4 * 0.63, '巨剑': 2 +
1, '钝器': 2 * 1.25, '太刀': 4 * 0.63}
# 95被动相关
地面被动倍率 = {'短剑': 1.0, '光剑': 1.0, '巨剑': 1.0, '钝器': 1.0, '太刀': 1.0}
空中被动倍率 = {'短剑': 1.0, '光剑': 1.0, '巨剑': 1.0, '钝器': 1.0, '太刀': 1.0}
hit数 = 4
刺伤几率 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87]
可附加的刺伤数量 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
def 额外刺伤层数(self, 武器类型):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级]
def 穿云刺数量(self, 武器类型):
return 2
形态 = ['地面','空中']
def 形态变更(self, 形态, char: Character):
if 形态 == '' and len(self.形态) > 0:
形态 = self.形态[0]
if 形态 == "地面":
# self.武器倍率 = {'短剑': 2 + 1, '光剑': 4 * 0.63,
# '巨剑': 2 + 1, '钝器': 2 * 1.25, '太刀': 4 * 0.63}
self.power0 = self.地面被动倍率[char.武器类型]
elif 形态 == "空中":
# self.武器倍率 = {'短剑': 2, '光剑': 2, '巨剑': 2, '钝器': 2 * 1.25, '太刀': 2}
self.power0 = self.空中被动倍率[char.武器类型]
self.hit数 = 2
class 技能11(被动技能):
名称 = '无我剑气'
所在等级 = 20
等级上限 = 15
学习间隔 = 3
等级精通 = 5
def 加成倍率(self, 武器类型):
if self.等级 == 0:
return 1.0
else:
return round(1.00 + 0.02 * self.等级, 5)
class 技能12(剑魂流系技能):
名称 = '流心跃'
所在等级 = 25
等级上限 = 70
学习间隔 = 2
等级精通 = 60
CD = 8
MP = [30, 350]
无色消耗 = 0
data0 = [0, 7065, 7782, 8497, 9214, 9931, 10650, 11369, 12086, 12802, 13518, 14235, 14953, 15670, 16387, 17106, 17822, 18538, 19254, 19972, 20689, 21406, 22123, 22838, 23556, 24274, 24992, 25705, 26425, 27142, 27856, 28574, 29292, 30008, 30726, 31443, 32155, 32874, 33589, 34309, 35028, 35744, 36460, 37177, 37893, 38609, 39329, 40044, 40761, 41479, 42195, 42912, 43629, 44347, 45064, 45780, 46496, 47213, 47933, 48650, 49367, 50085, 50799, 51515, 52232, 52949, 53668, 54385, 55101, 55819, 56536]
hit0 = 1
TP成长 = 0.1
TP上限 = 7
武器倍率 = {'短剑': 2 * 0.5, '光剑': 1, '巨剑': 1, '钝器': 1, '太刀': 2 * 0.5}
# 95被动相关
地面被动倍率 = {'短剑': 1.0, '光剑': 1.0, '巨剑': 1.0, '钝器': 1.0, '太刀': 1.0}
空中被动倍率 = {'短剑': 1.0, '光剑': 1.0, '巨剑': 1.0, '钝器': 1.0, '太刀': 1.0}
hit数 = 2
刺伤几率 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 100, 100, 100, 100]
可附加的刺伤数量 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
def 额外刺伤层数(self, 武器类型):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级]
def 穿云刺数量(self, 武器类型):
return 2
形态 = ['地面', '空中']
def 形态变更(self, 形态, char: Character):
if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
形态 = self.形态[0]
if 形态 == "地面":
self.武器倍率['钝器'] = 1.0
elif 形态 == "空中":
self.武器倍率['钝器'] = 1.2
self.power0 = self.空中被动倍率[char.武器类型]
class 技能13(剑魂主动技能):
名称 = '流心狂'
所在等级 = 30
等级上限 = 20
学习间隔 = 3
等级精通 = 10
是否有伤害 = 0
MP = [20, 168]
关联技能 = ['流心刺', '流心跃', '流心升']
def 加成倍率(self, 武器类型):
if self.等级 == 0:
return 1.0
else:
return round(1.20 + 0.02 * self.等级, 5)
class 技能14(剑魂流系技能):
名称 = '流心升'
所在等级 = 30
等级上限 = 70
学习间隔 = 2
等级精通 = 60
CD = 8
MP = [50, 490]
无色消耗 = 0
data0 = [0, 4198, 4624, 5054, 5478, 5905, 6332, 6756, 7183, 7608, 8033, 8463, 8890, 9313, 9739, 10164, 10594, 11018, 11444, 11873, 12298, 12722, 13152, 13575, 14002, 14428, 14855, 15282, 15707, 16130, 16559, 16986, 17410, 17838, 18264, 18690, 19115, 19540, 19970, 20395, 20819, 21245, 21672, 22101, 22527, 22951, 23377, 23804, 24228, 24654, 25084, 25510, 25935, 26360, 26788, 27213, 27636, 28070, 28494, 28918, 29344, 29771, 30196, 30623, 31048, 31476, 31902, 32326, 32753, 33179, 33606]
hit0 = 1
TP成长 = 0.1
TP上限 = 7
武器倍率 = {'短剑': 1 + 1.1, '光剑': 3 * 0.8,
'巨剑': 1 + 1.1, '钝器': 1 + 1.1, '太刀': 3 * 0.8}
hit数 = 3
刺伤几率 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
可附加的刺伤数量 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9]
def 额外刺伤层数(self, 武器类型):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级]
def 穿云刺数量(self, 武器类型):
return 2
class 技能15(剑魂主动技能):
名称 = "破军升龙击"
所在等级 = 30
等级上限 = 70
学习间隔 = 2
等级精通 = 60
CD = 10
MP = [70, 700]
无色消耗 = 0
data0 = [0, 1856, 2045, 2232, 2421, 2607, 2798, 2987, 3172, 3362, 3549, 3739, 3926, 4113, 4303, 4491, 4679, 4868, 5055, 5246, 5434, 5622, 5811, 5997, 6187, 6374, 6563, 6752, 6941, 7129, 7316, 7504, 7694, 7885, 8068, 8259, 8448, 8635, 8826, 9013, 9202, 9389, 9579, 9769, 9955, 10145, 10333, 10520, 10708, 10895, 11085, 11274, 11459, 11651, 11838, 12024, 12211, 12401, 12589, 12780, 12970, 13157, 13346, 13531, 13720, 13912, 14095, 14285, 14473, 14662, 14850]
data1 = [0, 2866, 3154, 3444, 3735, 4026, 4317, 4606, 4897, 5188, 5478, 5772, 6061, 6349, 6643, 6932, 7223, 7514, 7805, 8093, 8384, 8676, 8967, 9257, 9544, 9840, 10129, 10420, 10712, 11002, 11288, 11582, 11873, 12163, 12454, 12742, 13033, 13326, 13617, 13908, 14199, 14490, 14778, 15067, 15359, 15650, 15940, 16229, 16521, 16810, 17105, 17396, 17683, 17973, 18265, 18557, 18848, 19135, 19426, 19718, 20009, 20300, 20590, 20879, 21170, 21462, 21753, 22044, 22334, 22625, 22915]
TP成长 = 0.1
TP上限 = 7
# 光剑下破军升龙击冲撞攻击力实际为面板的0.89,但游戏中并未有相关说明
冲撞倍率 = {'短剑': 2, '光剑': 4*0.89, '巨剑': 2, '钝器': 2, '太刀': 2}
上斩倍率 = {'短剑': 1, '光剑': 1, '巨剑': 3, '钝器': 3, '太刀': 2}
武器倍率 = {'短剑': 1.45, '光剑': 1, '巨剑': 1, '钝器': 1, '太刀': 1}
独立倍率 = 1.0
def 等效百分比(self, **argv):
武器类型 = argv.get('武器类型', '光剑')
self.hit0 = self.冲撞倍率[武器类型]
self.hit1 = self.上斩倍率[武器类型]
return super().等效百分比(**argv)
# 极神剑术被动相关,短剑影响;与上斩数据相关
def 极神剑术占比(self, 武器类型):
if self.等级 == 0:
return 0
return self.data1[self.等级] * (1 + self.TP成长 * self.TP等级) * self.技攻 * self.倍率 * self.武器百分比修正(武器类型=武器类型) / self.等效百分比(武器类型=武器类型)
hit数 = 3
刺伤几率 = [0, 0, 0, 0, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620,
630, 640, 650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770, 780, 790, 800, 810, 820, 830, 840, 850, 860, 870, 880, 890, 900, 910, 920, 930, 940, 950, 960, 970]
可附加的刺伤数量 = [0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
def 额外刺伤层数(self, 武器类型):
return self.刺伤几率[self.等级] / 1000 * self.可附加的刺伤数量[self.等级]
class 技能16(剑魂主动技能):
名称 = "拔刀斩"
所在等级 = 35
等级上限 = 70
学习间隔 = 2
等级精通 = 60
CD = 15
MP = [110, 924]
无色消耗 = 1
data0 = [0, 9191, 10128, 11061, 11992, 12923, 13855, 14792, 15723, 16655, 17588, 18519, 19454, 20386, 21318, 22250, 23183, 24114, 25049, 25982, 26913, 27847, 28781, 29712, 30647, 31580, 32513, 33445, 34376, 35308, 36242, 37172, 38107, 39042, 39973, 40905, 41838, 42771, 43704, 44635, 45567, 46501, 47436, 48368, 49301, 50234, 51165, 52099, 53030, 53964, 54895, 55828, 56761, 57694, 58629, 59560, 60493, 61425, 62360, 63289, 64223, 65158, 66089, 67022, 67954, 68887, 69823, 70753, 71684, 72619, 73549]
hit0 = 1
TP成长 = 0.1
TP上限 = 5
武器倍率 = {'短剑': 1.4, '光剑': 1.3, '巨剑': 1.3, '钝器': 1.3, '太刀': 1.25}
是否有护石 = 1
触发神影手 = 0
# 拔刀奥义
# 准备动作时间 -30%
# 短剑 : 剑气的拔刀斩攻击力比率 +28%
# 太刀 : 追加攻击的拔刀斩攻击力比率 +25%
# 钝器 : 追加攻击的拔刀斩攻击力比率 +26%
# 巨剑 : [巨剑精通]最大蓄气时[拔刀斩]攻击力增加量 +26%
# 光剑 : 追加攻击的拔刀斩攻击力比率 +26%
# 攻击成功时发动[神影手] (一次[拔刀斩]最多发动1次)
# 攻击范围 +20%
# 攻击力 +5%
def 装备护石(self, char):
self.武器倍率 = {'短剑': 1.4 + 0.28, '光剑': 1.3 + 0.26,
'巨剑': 1.3 + 0.26, '钝器': 1.3 + 0.26, '太刀': 1.25 + 0.25}
self.倍率 *= 1.12
self.触发神影手 = 1
hit数 = 2
刺伤几率 = [0, 0, 0, 0, 0, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
可附加的刺伤数量 = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
追加刺伤几率 = [0, 0, 0, 0, 0, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
追加可附加的刺伤数量 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7]
def 额外刺伤层数(self, 武器类型):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级] + self.追加刺伤几率[self.等级] / 100 * self.追加可附加的刺伤数量[self.等级]
class 技能17(剑魂主动技能):
名称 = '破军斩龙击'
所在等级 = 40
等级上限 = 70
学习间隔 = 2
等级精通 = 60
data0 = [0, 4786, 5272, 5759, 6246, 6729, 7214, 7702, 8186, 8670, 9163, 9644, 10131, 10619, 11103, 11587, 12076, 12561, 13047, 13530, 14018, 14505, 14988, 15477, 15962, 16448, 16933, 17421, 17904, 18390, 18877, 19362, 19846, 20335, 20821, 21307, 21789, 22278, 22763, 23248, 23736, 24221, 24706, 25192, 25678, 26161, 26651, 27136, 27624, 28106, 28592, 29081, 29565, 30047, 30538, 31021, 31511, 31997, 32482, 32968, 33452, 33939, 34425, 34911, 35396, 35882, 36367, 36854, 37339, 37826, 38311]
hit0 = 1
data1 = [0, 5745, 6328, 6910, 7493, 8079, 8663, 9240, 9828, 10409, 10994, 11575, 12159, 12743, 13324, 13906, 14487, 15073, 15658, 16239, 16824, 17405, 17988, 18570, 19153, 19739, 20322, 20904, 21487, 22069, 22652, 23237, 23820, 24399, 24986, 25568, 26149, 26737, 27317, 27901, 28484, 29062, 29650, 30229, 30813, 31400, 31979, 32566, 33145, 33726, 34309, 34899, 35478, 36060, 36643, 37227, 37811, 38394, 38975, 39563, 40141, 40726, 41310, 41892, 42475, 43056, 43640, 44222, 44808, 45391, 45971]
hit1 = 1
data2 = [0, 8619, 9496, 10367, 11241, 12115, 12991, 13865, 14742, 15617, 16492, 17363, 18237, 19113, 19988, 20864, 21737, 22610, 23485, 24359, 25234, 26108, 26984, 27861, 28732, 29605, 30483, 31358, 32232, 33103, 33980, 34856, 35728, 36601, 37478, 38350, 39223, 40101, 40974, 41852, 42727, 43600, 44471, 45348, 46221, 47098, 47972, 48849, 49718, 50594, 51469, 52344, 53220, 54093, 54968, 55841, 56714, 57591, 58465, 59341, 60218, 61088, 61963, 62840, 63713, 64587, 65462, 66335, 67210, 68083, 68961]
hit2 = 1
TP成长 = 0.10
TP上限 = 5
CD = 25.0
MP = [30, 450]
无色消耗 = 1
hit数 = 4
刺伤几率 = [0, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
可附加的刺伤数量 = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8]
def 额外刺伤层数(self, 武器类型):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级]
def 穿云刺数量(self, 武器类型):
return 5
class 技能18(剑魂主动技能):
名称 = "猛龙断空斩"
所在等级 = 40
等级上限 = 70
学习间隔 = 2
等级精通 = 60
CD = 20
MP = [25, 420]
无色消耗 = 1
data0 = [0, 2833, 3124, 3411, 3697, 3987, 4274, 4560, 4848, 5136, 5422, 5710, 5998, 6288, 6577, 6864, 7148, 7439, 7727, 8012, 8301, 8589, 8877, 9163, 9453, 9741, 10028, 10314, 10604, 10891, 11177, 11466, 11754, 12039, 12328, 12617, 12904, 13191, 13479, 13768, 14055, 14343, 14630, 14919, 15205, 15492, 15779, 16069, 16356, 16643, 16934, 17221, 17507, 17795, 18084, 18369, 18658, 18942, 19233, 19522, 19810, 20099, 20385, 20672, 20961, 21248, 21534, 21824, 22109, 22399, 22687]
hit0 = 2
data1 = [0, 4164, 4589, 5011, 5434, 5854, 6279, 6701, 7126, 7545, 7969, 8392, 8812, 9240, 9660, 10081, 10506, 10927, 11349, 11772, 12196, 12619, 13039, 13462, 13888, 14309, 14733, 15156, 15577, 16000, 16423, 16846, 17269, 17690, 18112, 18537, 18960, 19382, 19802, 20228, 20648, 21071, 21494, 21917, 22339, 22762, 23186, 23609, 24028, 24453, 24875, 25298, 25721, 26142, 26566, 26989, 27409, 27833, 28256, 28680, 29100, 29523, 29948, 30371, 30790, 31217, 31637, 32058, 32484, 32907, 33330]
hit1 = 2
TP成长 = 0.1
TP上限 = 5
武器倍率 = {'短剑': 1.25, '光剑': 1.0, '巨剑': 1.0, '钝器': 1.0, '太刀': 1.0}
hit数 = 4 + 8
旋风攻击次数 = 4 * 2
是否有护石 = 1
独立倍率 = 1.0
# 极神剑术被动相关,短剑影响
def 极神剑术占比(self, 武器类型):
if self.等级 == 0:
return 0
return self.data0[self.等级] * (1 + self.TP成长 * self.TP等级) * self.技攻 * self.倍率 * self.武器百分比修正(武器类型=武器类型) / self.等效百分比(武器类型=武器类型)
# 猛龙过江
# 巴恩的飓风强化 (学习[极 · 神剑术]后发动)
# - 移动时追击周围敌人
# - 持续时间 +1秒
# - 多段攻击次数上限 +5
# - 攻击力 -57%
# - 突进上斩动作结束时生成旋风
# - 大小 +80%
# - 多段攻击次数上限 +2次
def 装备护石(self, char):
self.hit数 = 4 + 11 * 3
self.旋风攻击次数 = 11 * 3 * 0.43
self.倍率 *= 1.07
class 技能19(剑魂主动技能):
名称 = "幻影剑舞"
所在等级 = 45
等级上限 = 70
学习间隔 = 2
等级精通 = 60
CD = 45
MP = [360, 3024]
无色消耗 = 2
data0 = [0, 1051, 1161, 1269, 1376, 1481, 1591, 1694, 1802, 1911, 2014, 2122, 2229, 2340, 2446, 2550, 2658, 2767, 2875, 2980, 3087, 3193, 3300, 3408, 3516, 3623, 3728, 3836, 3945, 4051, 4157, 4264, 4369, 4479, 4584, 4691, 4802, 4904, 5012, 5122, 5227, 5334, 5439, 5549, 5655, 5761, 5869, 5977, 6080, 6190, 6299, 6405, 6513, 6618, 6727, 6833, 6939, 7046, 7152, 7260, 7366, 7475, 7582, 7690, 7796, 7903, 8009, 8115, 8223, 8328, 8434]
data1 = [0, 4219, 4645, 5074, 5501, 5929, 6360, 6786, 7215, 7643, 8069, 8502, 8924, 9351, 9786, 10210, 10640, 11067, 11493, 11923, 12350, 12778, 13209, 13635, 14062, 14490, 14918, 15343, 15773, 16203, 16632, 17060, 17487, 17915, 18343, 18768, 19201, 19627, 20053, 20484, 20912, 21339, 21766, 22191, 22623, 23052, 23481, 23908, 24335, 24763, 25191, 25619, 26047, 26476, 26903, 27328, 27762, 28188, 28613, 29043, 29470, 29900, 30325, 30754, 31185, 31611, 32040, 32469, 32895, 33323, 33753]
TP成长 = 0.1
TP上限 = 5
是否有护石 = 1
影子斩击次数 = 4
独立倍率 = 1.0
# 这里的武器倍率已经被计算入内
斩击倍率 = {'短剑': 12 * 0.9, '光剑': 24 * 0.75,
'巨剑': 12 * 1.5, '钝器': 12, '太刀': 24 * 0.75}
剑气倍率 = {'短剑': 4 * 1.2, '光剑': 3, '巨剑': 3, '钝器': 4.2, '太刀': 3}
def 等效百分比(self, **argv):
武器类型 = argv.get('武器类型', '光剑')
self.hit0 = self.斩击倍率[武器类型]
self.hit1 = self.剑气倍率[武器类型]
return super().等效百分比(**argv)
# 极神剑术被动相关,武器倍率不影响
def 极神剑术斩击占比(self, 武器类型):
return self.data0[self.等级] * (1 + self.TP成长 * self.TP等级) * self.技攻 * self.倍率 / self.等效百分比(武器类型=武器类型)
# 极神剑术被动相关,武器倍率不影响
def 极神剑术剑气占比(self, 武器类型):
return self.data1[self.等级] * (1 + self.TP成长 * self.TP等级) * self.技攻 * self.倍率 / self.等效百分比(武器类型=武器类型)
hit数 = 24 + 3 + 4 + 3 # 本体斩击:24 本体剑气:3 影子斩击:4 影子剑气:3
刺伤几率 = [0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35]
可附加的刺伤数量 = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
def 额外刺伤层数(self, 武器类型):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级] * (24 + 3)
def 穿云刺数量(self, 武器类型):
return 4
# 无形剑舞
# 攻击范围 +25%
# 幻影斩击多段攻击次数 +8次
# 施放过程中所受伤害 -90%
# 幻影斩击多段攻击次数 +5次
def 装备护石(self, char):
self.倍率 *= 1.06
self.影子斩击次数 += 13
self.hit数 += 13
class 技能20(被动技能):
名称 = '极鬼剑术斩铁式'
所在等级 = 48
等级上限 = 50
学习间隔 = 3
等级精通 = 40
关联技能 = ['所有']
def 加成倍率(self, 武器类型):
if self.等级 == 0:
return 1.0
else:
return round(0.995 + 0.03 + 0.02 * self.等级, 5)
class 技能21(剑魂主动技能):
名称 = '极鬼剑术暴风式'
所在等级 = 50
等级上限 = 50
学习间隔 = 5
等级精通 = 40
CD = 145
MP = [980, 8232]
无色消耗 = 5
data0 = [0, 6010, 7401, 8795, 10189, 11584, 12977, 14372, 15766, 17160, 18552, 19949, 21341, 22735, 24130, 25526, 26920, 28310, 29704, 31099, 32491, 33884, 35278, 36674, 38070, 39461, 40855, 42252, 43643, 45037, 46433, 47826, 49222, 50612, 52004, 53398, 54795, 56187, 57578, 58975, 60366, 61763, 63157, 64552, 65946, 67338, 68732, 70127, 71521, 72913, 74306]
hit0 = 1
data1 = [0, 2860, 3526, 4186, 4853, 5512, 6182, 6842, 7505, 8172, 8834, 9497, 10163, 10825, 11491, 12156, 12817, 13479, 14145, 14809, 15472, 16135, 16802, 17461, 18128, 18788, 19456, 20115, 20781, 21445, 22111, 22774, 23436, 24101, 24764, 25425, 26093, 26754, 27419, 28081, 28746, 29409, 30074, 30739, 31401, 32065, 32727, 33392, 34056, 34720, 35382]
hit1 = 24
data2 = [0, 11159, 13750, 16340, 18929, 21512, 24104, 26694, 29281, 31867, 34457, 37048, 39636, 42222, 44811, 47403, 49989, 52579, 55167, 57756, 60344, 62930, 65522, 68111, 70698, 73284, 75874, 78466, 81052, 83642, 86228, 88819, 91406, 93997, 96585, 99174, 101761, 104347, 106939, 109523, 112115, 114702, 117290, 119878, 122469, 125055, 127646, 130234, 132823, 135414, 137998]
hit2 = 1
hit数 = 26
def 等效百分比(self, **argv):
return super().等效百分比(**argv) * (1.1 if self.等级 >=9 else 1.0)
class 技能22(剑魂主动技能):
名称 = '极神剑术流星落'
所在等级 = 60
等级上限 = 50
学习间隔 = 2
等级精通 = 40
CD = 35
MP = [420, 1200]
无色消耗 = 1
data0 = [0, 4360, 4806, 5246, 5691, 6131, 6577, 7016, 7460, 7903, 8344, 8788, 9232, 9672, 10116, 10560, 11000, 11443, 11889, 12328, 12771, 13214, 13658, 14099, 14543, 14982, 15427, 15870, 16312, 16752, 17196, 17641, 18081, 18526, 18968, 19406, 19852, 20294, 20740, 21180, 21624, 22063, 22509, 22953, 23392, 23837, 24278, 24718, 25162, 25609, 26049]
hit0 = 1
data1 = [0, 800, 883, 966, 1047, 1127, 1211, 1292, 1373, 1456, 1536, 1621, 1698, 1784, 1865, 1945, 2027, 2108, 2188, 2267, 2353, 2433, 2511, 2599, 2680, 2759, 2842, 2922, 3004, 3085, 3168, 3248, 3332, 3412, 3493, 3574, 3655, 3736, 3819, 3903, 3983, 4066, 4146, 4226, 4309, 4389, 4468, 4554, 4633, 4716, 4799]
hit1 = 38
data2 = [0, 8724, 9611, 10494, 11378, 12267, 13150, 14035, 14923, 15806, 16689, 17580, 18460, 19344, 20234, 21119, 22002, 22890, 23774, 24657, 25547, 26427, 27312, 28199, 29084, 29968, 30857, 31740, 32621, 33508, 34395, 35277, 36167, 37051, 37933, 38821, 39707, 40588, 41479, 42362, 43249, 44132, 45016, 45902, 46787, 47675, 48558, 49445, 50329, 51214, 52099]
hit2 = 1
TP成长 = 0.1
TP上限 = 5
是否有护石 = 1
流星之天剑倍率 = 1.0 # 极神剑术被动相关
独立倍率 = 1.0
hit数 = 40
流星之天剑刺伤层数 = 0 # 极神剑术被动相关
刺伤几率 = [0, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 167, 170, 173, 176]
可附加的刺伤数量 = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
def 额外刺伤层数(self, 武器类型):
return min(self.刺伤几率[self.等级] / 100, 1) * self.可附加的刺伤数量[self.等级] + self.流星之天剑刺伤层数
# 流星审判
# 跳跃冲击波攻击强制控制敌人1.5秒
# 跳跃动作变更为无敌状态, 落地后增加1秒无敌时间
# 投掷流星剑前置准备时间 -50%
# 流星剑间隔 -20%
# 流星剑数量 +9个
# 流星剑和流星之天剑攻击范围 +55%
# 流星之天剑攻击力 +35%
# 流星之天剑强制控制时间 +60%
def 装备护石(self, char):
self.hit数 += 9
self.hit1 += 9
self.流星之天剑倍率 = 2.05
class 技能23(剑魂主动技能):
名称 = '破空拔刀斩'
所在等级 = 70
等级上限 = 50
学习间隔 = 2
等级精通 = 40
CD = 50
MP = [800, 1680]
无色消耗 = 2
data0 = [0, 48046, 52921, 57792, 62669, 67540, 72419, 77292, 82166, 87040, 91915, 96788, 101664, 106540, 111411, 116286, 121159, 126033, 130909, 135781, 140657, 145532, 150405, 155282, 160155, 165029, 169904, 174777, 179653, 184522, 189401, 194274, 199150, 204024, 208900, 213771, 218648, 223520, 228396, 233269, 238144, 243019, 247892, 252764, 257643, 262515, 267391, 272263, 277138, 282013, 286886]
hit0 = 1
data1 = [0, 43251, 47636, 52024, 56410, 60798, 65188, 69575, 73961, 78353, 82739, 87127, 91512, 95901, 100289, 104672, 109065, 113452, 117839, 122224, 126614, 131004, 135390, 139776, 144168, 148556, 152942, 157331, 161714, 166101, 170488, 174878, 179267, 183653, 188040, 192427, 196818, 201205, 205593, 209981, 214371, 218757, 223145, 227530, 231919, 236304, 240696, 245081, 249469, 253854, 258242]
hit1 = 1
TP成长 = 0.1
TP上限 = 5
是否有护石 = 1
MP = [800, 1680]
无色消耗 = 2
hit数 = 1
刺伤几率 = [0, 31, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
可附加的刺伤数量 = [0, 3, 3, 3, 5, 5, 5, 7, 7, 7, 9, 9, 9, 11, 11, 11, 13, 13, 13, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]
def 额外刺伤层数(self, 武器类型):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级]
形态 = ['近距离', '剑气']
def 形态变更(self, 形态, char: Character):
if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
形态 = self.形态[0]
if 形态 == "近距离":
self.power0 = 1
self.power1 = 0
elif 形态 == "剑气":
self.power0 = 0
self.power1 = 1
# 破空一刀
# 剑气攻击适用与近距离击打相同的攻击力
# 准备动作时间 -40%
# 冷却时间 -10%
# 剑气生成后僵直 -20%
# 攻击力 +11%
def 装备护石(self, char):
self.data1 = self.data0
self.倍率 *= 1.19
self.CDR *= 0.9
class 技能24(被动技能):
名称 = '神影手'
所在等级 = 70
等级上限 = 1
学习间隔 = 1
等级精通 = 1
关联技能 = ['无']
百分比 = 4080
class 技能25(剑魂主动技能):
名称 = '极神剑术破空斩'
所在等级 = 75
等级上限 = 50
学习间隔 = 2
等级精通 = 40
CD = 35
MP = [580, 4500]
无色消耗 = 3
data0 = [0, 7692, 8472, 9255, 10031, 10814, 11592, 12373, 13152, 13936, 14714, 15495, 16275, 17059, 17838, 18615, 19399, 20177, 20960, 21738, 22520, 23298, 24079, 24860, 25640, 26420, 27200, 27981, 28762, 29542, 30322, 31104, 31886, 32664, 33446, 34224, 35009, 35787, 36568, 37346, 38128, 38906, 39688, 40469, 41248, 42027, 42808, 43590, 44370, 45152, 45929]
data1 = [0, 25640, 28241, 30843, 33446, 36046, 38646, 41248, 43849, 46451, 49051, 51656, 54253, 56855, 59458, 62060, 64660, 67265, 69863, 72466, 75064, 77667, 80269, 82870, 85469, 88073, 90674, 93273, 95878, 98479, 101079, 103680, 106283, 108884, 111487, 114087, 116687, 119288, 121888, 124492, 127089, 129697, 132295, 134898, 137498, 140101, 142700, 145304, 147905, 150505, 153105]
是否有护石 = 1
# 武器倍率已计入
多段倍率 = {'短剑': 5, '光剑': 6, '巨剑': 5 * 1.08, '钝器': 5, '太刀': 6}
爆炸倍率 = {'短剑': 1, '光剑': 1, '巨剑': 1.08, '钝器': 1, '太刀': 1}
# def 等效百分比(self, 武器类型):
# return (self.多段倍率[武器类型] * self.data1[self.等级] + self.爆炸倍率[武器类型] * self.data2[self.等级]) * self.技攻 * self.倍率
# 极神剑术被动相关,巨剑蓄力会影响
def 等效百分比(self, **argv):
武器类型 = argv.get('武器类型', '光剑')
self.hit0 = self.多段倍率[武器类型]
self.hit1 = self.爆炸倍率[武器类型]
return super().等效百分比(**argv)
# 极神剑术被动相关,巨剑蓄力会影响
def 极神剑术占比(self, 武器类型):
if self.等级 == 0:
return 0
return self.爆炸倍率[武器类型] * self.data1[self.等级] * self.技攻 * self.倍率 / self.等效百分比(武器类型=武器类型)
hit数 = 7
刺伤几率 = [0, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151]
可附加的刺伤数量 = [0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
def 额外刺伤层数(self, 武器类型):
return min(self.刺伤几率[self.等级] / 1000, 1) * self.可附加的刺伤数量[self.等级]
def 穿云刺数量(self, 武器类型):
return 4
def 装备护石(self, char):
self.data1 = [i * 1.62 for i in self.data1]
class 技能26(被动技能):
名称 = '极神剑术'
所在等级 = 75
等级上限 = 50
学习间隔 = 3
等级精通 = 40
额外倍率 = 1.0
关联技能 = ['拔刀斩', '破军斩龙击', '极鬼剑术暴风式', '破空拔刀斩',
'极神剑术瞬斩', '万剑归宗', '极神剑术无形斩', '万剑极诣开天斩']
def 加成倍率(self, 武器类型):
if self.等级 == 0:
return 1.0
else:
return round(1.22 + 0.02 * self.等级, 5)
# 基础值 40%
暴风式冲击波 = [0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196]
# 基础值 21%
飓风 = [0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
# 基础值 55%
幻影斩击 = [0, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245]
# 基础值 55%
幻影剑气 = [0, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245]
# 基础值 41%
幻影钝器 = [0, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245]
# 基础值 60%
十字斩 = [0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 282, 288, 294]
# 流星之天剑
流星之天剑 = [0, 4698, 5090, 5480, 5871, 6266, 6657, 7046, 7438, 7828, 8220, 8613, 9004, 9394, 9787, 10179, 10567, 10960, 11349, 11743, 12135, 12526, 12917, 13310, 13703, 14093, 14485, 14876, 15267, 15657, 16049, 16440, 16833, 17226, 17615, 18007, 18399, 18815, 19207, 19599, 19993, 20384, 20776, 21168, 21560, 21954, 22345, 22737, 23129, 23521, 23915]
# 巨剑流星之天剑追加
巨剑流星之天剑 = [0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60]
# 钝器冲击波
钝器流星之天剑 = [0, 2911, 3156, 3402, 3643, 3891, 4135, 4384, 4630, 4872, 5120, 5365, 5611, 5855, 6098, 6346, 6592, 6836, 7083, 7326, 7573, 7818, 8066, 8311, 8554, 8801, 9046, 9290, 9537, 9780, 10025, 10272, 10519, 10766, 11008, 11255, 11500, 11748, 11994, 12237, 12480, 12728, 12973, 13220, 13464, 13709, 13957, 14201, 14447, 14691, 14936]
# 太刀刺伤
刺伤几率 = [0, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
可附加的刺伤数量 = [0, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12]
# 光剑冲击波
光剑流星之天剑 = [0, 1948, 2246, 2542, 2839, 3134, 3430, 3725, 4023, 4320, 4614, 4913, 5209, 5504, 5801, 6097, 6393, 6689, 6988, 7281, 7578, 7877, 8169, 8466, 8762, 9060, 9355, 9651, 9948, 10246, 10540, 10835, 11134, 11428, 11725, 12023, 12315, 12613, 12910, 13207, 13501, 13799, 14095, 14393, 14689, 14982, 15281, 15576, 15871, 16169, 16466]
def 天剑刺伤层数(self):
return int(self.刺伤几率[self.等级]) / 100 * self.可附加的刺伤数量[self.等级]
def 附加倍率(self, 技能):
if 技能 == '破军升龙击':
return (0.40 + self.暴风式冲击波[self.等级] / 100) * self.额外倍率
elif 技能 == '猛龙断空斩':
return (0.21 + self.飓风[self.等级] / 100) * self.额外倍率
elif 技能 == '幻影剑舞斩击':
return (0.55 + self.幻影斩击[self.等级] / 100) * self.额外倍率
elif 技能 == '幻影剑舞剑气':
return (0.55 + self.幻影剑气[self.等级] / 100) * self.额外倍率
elif 技能 == '幻影剑舞钝器':
return (0.41 + self.幻影钝器[self.等级] / 100) * self.额外倍率
elif 技能 == '极神剑术破空斩':
return 0.60 + self.十字斩[self.等级] / 100
def 特殊技能加成(self, char, 武器类型):
if self.等级 != 0:
b = char.get_skill_by_name('破军升龙击')
if b.等级 > 0:
b.神剑术倍率 *= 1 + b.极神剑术占比(武器类型) * self.附加倍率('破军升龙击') / b.独立倍率
b = char.get_skill_by_name('猛龙断空斩')
if b.等级 > 0:
b.神剑术倍率 *= 1 + b.极神剑术占比(武器类型) * b.旋风攻击次数 * \
self.附加倍率('猛龙断空斩') / b.独立倍率
b = char.get_skill_by_name('幻影剑舞')
if b.等级 > 0:
k = b.极神剑术斩击占比(武器类型) * b.影子斩击次数 * self.附加倍率('幻影剑舞斩击')
if char.武器类型 != '钝器':
剑气次数 = (4 if 武器类型 == '短剑' else 3)
k += b.极神剑术剑气占比(武器类型) * 剑气次数 * self.附加倍率('幻影剑舞剑气')
else:
k += b.极神剑术剑气占比(武器类型) * 4.2 * self.附加倍率('幻影剑舞钝器')
b.神剑术倍率 *= 1 + k / b.独立倍率
b = char.get_skill_by_name('极神剑术破空斩')
if b.等级 > 0:
b.被动倍率 *= 1 + b.极神剑术占比(武器类型) * self.附加倍率('极神剑术破空斩')
b = char.get_skill_by_name('极神剑术流星落')
if b.等级 > 0:
k = 3 * self.流星之天剑[self.等级] * b.流星之天剑倍率
if 武器类型 == '太刀':
b.hit数 += 3
b.流星之天剑刺伤层数 = self.天剑刺伤层数()
elif 武器类型 == '巨剑':
k *= 1 + self.巨剑流星之天剑[self.等级] / 100
elif 武器类型 == '钝器':
k += 3 * 74 # 极神剑术.钝器流星之天剑[极神剑术.等级]
elif 武器类型 == '光剑':
k += 3 * 74 # 极神剑术.光剑流星之天剑[极神剑术.等级]
# 已知BUG,钝器光剑追加的额外天剑伤害极低,约只有74%
# if self.版本 == 'GF':
# 伤害整合 += temp / (1.2 if ('永恒不息之路[2]' in self.套装栏) else 1.0)
# else:
b.神剑术倍率 *= 1 + k * b.倍率 / b.等效百分比(武器类型=武器类型) / b.独立倍率
自定义描述 = 1
def 技能描述(self, 武器类型):
temp = '常规技能攻击力 +%.1f%%' % (22 + 2 * self.等级) + '<br>'
temp += '[破军升龙击]上斩:%.1f%%' % (self.附加倍率('破军升龙击') * 100) + '<br>'
temp += '[猛龙断空斩]突进斩击:%.1f%%' % (self.附加倍率('猛龙断空斩') * 100) + '<br>'
temp += '[幻影剑舞]斩击:%.1f%%' % (self.附加倍率('幻影剑舞斩击') * 100) + '<br>'
if 武器类型 == '钝器':
temp += '[幻影剑舞]钝器最后一击:%.1f%%' % (self.附加倍率('幻影剑舞钝器')
* 100) + '<br>'
else:
temp += '[幻影剑舞]剑气:%.1f%%' % (self.附加倍率('幻影剑舞剑气') * 100) + '<br>'
temp += '[极 · 神剑术 (破空斩)]爆炸:%.1f%%' % (self.附加倍率('极神剑术破空斩')
* 100) + '<br>'
temp += '流星之天剑攻击力:%.1f%%' % self.流星之天剑[self.等级]
return temp
class 技能27(剑魂主动技能):
名称 = '极神剑术瞬斩'
所在等级 = 80
等级上限 = 50
学习间隔 = 2
等级精通 = 40
CD = 50
MP = [800, 6000]
无色消耗 = 5
data0 = [0, 20101, 22139, 24178, 26217, 28256, 30295, 32338, 34374, 36416, 38454, 40492, 42531, 44571, 46610, 48648, 50687, 52726, 54765, 56806, 58846, 60883, 62923, 64962, 67002, 69041, 71083, 73117, 75162, 77195, 79238, 81277, 83316, 85355, 87395, 89432, 91471, 93514, 95549, 97592, 99630, 101671, 103705, 105748, 107786, 109823, 111864, 113903, 115940, 117980, 120023]
hit0 = 1
data1 = [0, 3289, 3623, 3951, 4288, 4622, 4957, 5289, 5624, 5957, 6289, 6625, 6959, 7293, 7625, 7961, 8294, 8626, 8961, 9295, 9628, 9962, 10297, 10628, 10964, 11299, 11629, 11964, 12299, 12633, 12966, 13300, 13631, 13965, 14298, 14633, 14968, 15300, 15637, 15968, 16302, 16636, 16968, 17305, 17639, 17969, 18305, 18640, 18968, 19304, 19641]
hit1 = 5
data2 = [0, 54818, 60381, 65941, 71503, 77065, 82628, 88188, 93750, 99310, 104872, 110435, 115995, 121555, 127117, 132680, 138241, 143802, 149362, 154925, 160491, 166050, 171612, 177173, 182734, 188297, 193853, 199418, 204979, 210542, 216103, 221666, 227227, 232788, 238350, 243912, 249471, 255033, 260592, 266156, 271719, 277280, 282839, 288404, 293961, 299524, 305087, 310648, 316207, 321772, 327331]
hit2 = 1
hit数 = 7
是否有护石 = 1
def 装备护石(self, char):
self.倍率 *= 1.32
class 技能28(剑魂主动技能):
名称 = '万剑归宗'
所在等级 = 85
等级上限 = 50
学习间隔 = 5
等级精通 = 40
CD = 180
MP = [2500, 5000]
无色消耗 = 10
# 该技能hit数不会触发太刀刺伤
data0 = [0, 7264, 8956, 10643, 12324, 14013, 15701, 17381, 19073, 20753, 22435, 24131, 25812, 27494, 29176, 30870, 32555, 34235, 35920, 37616, 39296, 40977, 42665, 44348, 46038, 47726, 49410, 51091, 52786, 54469, 56148, 57831, 59528, 61207, 62891, 64578, 66261, 67953, 69634, 71327, 73006, 74693, 76382, 78066, 79745, 81430, 83122, 84806, 86487, 88172, 89868]
hit0 = 14
data1 = [0, 29033, 35769, 42507, 49243, 55964, 62701, 69436, 76177, 82902, 89642, 96376, 103113, 109837, 116571, 123309, 130044, 136776, 143511, 150246, 156971, 163706, 170443, 177179, 183914, 190642, 197378, 204110, 210838, 217578, 224311, 231045, 237780, 244512, 251245, 257980, 264709, 271444, 278183, 284917, 291651, 298377, 305114, 311849, 318580, 325315, 332048, 338785, 345511, 352248, 358982]
hit1 = 2
data2 = [0, 1568, 1931, 2296, 2661, 3022, 3382, 3752, 4111, 4476, 4842, 5202, 5565, 5929, 6293, 6657, 7020, 7383, 7746, 8110, 8474, 8837, 9201, 9566, 9928, 10294, 10655, 11016, 11381, 11744, 12110, 12474, 12836, 13202, 13565, 13926, 14291, 14657, 15018, 15379, 15743, 16111, 16471, 16833, 17201, 17561, 17925, 18292, 18653, 19016, 19380]
hit2 = 1
形态 = ['终结', '穿云']
def 形态变更(self, 形态, char: Character):
if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
形态 = self.形态[0]
if 形态 == "终结":
self.hit0 = 14
self.hit1 = 2
self.hit2 = 0
elif 形态 == "穿云":
self.hit0 = 0
self.hit1 = 0
self.hit2 = 1
class 技能29(被动技能):
名称 = '无形剑意'
所在等级 = 95
等级上限 = 50
学习间隔 = 3
等级精通 = 40
关联技能 = ['所有']
def 加成倍率(self, 武器类型):
if self.等级 == 0:
return 1.0
else:
return round(1.18 + 0.02 * self.等级, 5)
短剑流心刺 = [0, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177]
短剑流心刺空中 = [0, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118]
太刀流心跃 = [0, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 17, 18, 18, 18, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24]
太刀流心升 = [0, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 70, 71]
钝器流心刺 = [0, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, 265, 270, 275, 280, 285, 290, 295]
巨剑流心刺下斩 = [0, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159]
巨剑流心刺旋风 = [0, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107]
巨剑流心刺空中 = [0, 357, 366, 375, 384, 393, 402, 411, 420, 429, 438, 447, 456, 465, 474, 483, 492, 501, 510, 519, 528, 537, 546, 555, 564, 573, 582, 591, 600, 609, 618, 627, 636, 645, 654, 663, 672, 681, 690, 699, 708, 717, 726, 735, 744, 753, 762, 771, 780, 789, 798]
光剑流心升 = [0, 48, 53, 58, 62, 67, 72, 77, 82, 86, 91, 96, 101, 106, 110, 115, 120, 125, 130, 134, 139, 144, 149, 154, 158, 163, 168, 173, 178, 182, 187, 192, 197, 202, 206, 211, 216, 221, 226, 230, 235, 240, 245, 250, 254, 259, 264, 269, 274, 278, 283]
自定义描述 = 1
def 特殊技能加成(self, char, 武器类型):
if self.等级 > 0:
基础倍率 = self.加成倍率(武器类型)
if 武器类型 == '短剑':
流心刺 = char.get_skill_by_name('流心刺')
流心刺.地面被动倍率['短剑'] = (
1 + 2 * (self.短剑流心刺[self.等级] / 100) / 3) / 基础倍率 # 地面2 + 1段
流心刺.空中被动倍率['短剑'] = (
1 + 3 * (self.短剑流心刺空中[self.等级] / 100) / 2) / 基础倍率 # 空中2段
elif 武器类型 == '太刀':
流心跃 = char.get_skill_by_name('流心跃')
流心升 = char.get_skill_by_name('流心升')
流心跃.hit数 += 5
流心跃.被动倍率 *= (
1 + (self.太刀流心跃[self.等级] / 100) * 5 / (2 * 0.5)) / 基础倍率
流心升.hit数 += 4
流心升.被动倍率 *= (
1 + 4 * (self.太刀流心升[self.等级] / 100) / (3 * 0.8)) / 基础倍率
elif 武器类型 == '钝器':
流心刺 = char.get_skill_by_name('流心刺')
流心刺.被动倍率 *= (
1 + (self.钝器流心刺[self.等级] / 100) / (2 * 1.25)) / 基础倍率
elif 武器类型 == '巨剑':
流心刺 = char.get_skill_by_name('流心刺')
# 基础:地面2 + 1段 加成后:地面1段(200%伤害) + 下斩1段 + 旋风3段
流心刺.地面被动倍率['巨剑'] = (((2 + 1) * (self.巨剑流心刺下斩[self.等级] / 100) +
(self.巨剑流心刺旋风[self.等级] / 100) * 3) / (2 + 1)) / 基础倍率
流心刺.空中被动倍率['巨剑'] = (
(self.巨剑流心刺空中[self.等级] / 100) / 2) / 基础倍率 # 空中1段,伤害为200%
elif 武器类型 == '光剑':
流心升 = char.get_skill_by_name('流心升')
流心升.被动倍率 *= (1 +
(self.光剑流心升[self.等级] / 100) / (3 * 0.8)) / 基础倍率
def 技能描述(self, 武器类型):
temp = '常规技能攻击力 +%.1f%%' % (18 + 2 * self.等级) + '<br>'
if 武器类型 == '短剑':
temp += '短剑流心刺:%.1f%%' % self.短剑流心刺[self.等级] + '<br>'
temp += '短剑流心刺空中:%.1f%%' % self.短剑流心刺空中[self.等级] + ' i 3'
elif 武器类型 == '太刀':
temp += '太刀流心跃:%.1f%%' % self.太刀流心跃[self.等级] + ' i 5<br>'
temp += '太刀流心升:%.1f%%' % self.太刀流心升[self.等级] + ' i 4'
elif 武器类型 == '钝器':
temp += '钝器流心刺:%.1f%%' % self.钝器流心刺[self.等级]
elif 武器类型 == '巨剑':
temp += '巨剑流心刺下斩:%.1f%%' % self.巨剑流心刺下斩[self.等级] + '<br>'
temp += '巨剑流心刺旋风:%.1f%%' % self.巨剑流心刺旋风[self.等级] + ' i 3<br>'
temp += '巨剑流心刺空中:%.1f%%' % self.巨剑流心刺空中[self.等级]
elif 武器类型 == '光剑':
temp += '光剑流心升:%.1f%%' % self.光剑流心升[self.等级]
return temp
class 技能30(剑魂主动技能):
名称 = '极神剑术无形斩'
所在等级 = 95
等级上限 = 50
学习间隔 = 2
等级精通 = 40
CD = 60
MP = [960, 7200]
无色消耗 = 7
data0 = [0, 30185, 33250, 36312, 39374, 42438, 45500, 48561, 51625, 54687, 57750, 60812, 63875, 66936, 70000, 73063, 76124, 79187, 82251, 85311, 88374, 91437, 94500, 97561, 100626, 103688, 106749, 109812, 112876, 115937, 119001, 122062, 125124, 128188, 131251, 134311, 137375, 140438, 143500, 146563, 149626, 152687, 155750, 158813, 161876, 164937, 168001, 171062, 174126, 177188, 180250]
hit0 = 1
data1 = [0, 4312, 4749, 5186, 5623, 6061, 6500, 6937, 7374, 7811, 8250, 8687, 9126, 9561, 10000, 10437, 10874, 11310, 11748, 12186, 12624, 13061, 13499, 13937, 14374, 14812, 15249, 15688, 16124, 16562, 16999, 17437, 17875, 18313, 18749, 19187, 19625, 20064, 20498, 20936, 21374, 21813, 22250, 22687, 23125, 23562, 23999, 24437, 24875, 25312, 25749]
hit1 = 13
data2 = [0, 57500, 63332, 69166, 74999, 80833, 86665, 92498, 98332, 104165, 109999, 115833, 121667, 127499, 133334, 139168, 145000, 150833, 156666, 162500, 168332, 174166, 180000, 185834, 191665, 197499, 203333, 209165, 214999, 220832, 226668, 232503, 238334, 244168, 250001, 255834, 261667, 267502, 273336, 279168, 285001, 290835, 296668, 302501, 308335, 314169, 320001, 325835, 331668, 337501, 343334]
hit2 = 1
hit数 = 15
class 技能31(剑魂主动技能):
名称 = '万剑极诣开天斩'
所在等级 = 100
等级上限 = 50
学习间隔 = 5
等级精通 = 40
CD = 290
MP = [4028, 8056]
无色消耗 = 15
data0 = [0, 68275, 84108, 99940, 115772, 131603, 147435, 163267, 179099, 194930, 210763, 226594, 242427, 258257, 274089, 289923, 305755, 321587, 337420, 353251, 369081, 384914, 400746, 416579, 432409, 448243, 464075, 479905, 495737, 511570, 527401, 543233, 559066, 574899, 590726, 606560, 622390, 638223, 654056, 669888, 685719, 701552, 717384, 733215, 749049, 764879, 780711, 796542, 812376, 828208, 844038]
hit0 = 1
data1 = [0, 89283, 109985, 130689, 151394, 172097, 192799, 213502, 234207, 254909, 275612, 296315, 317019, 337723, 358427, 379129, 399832, 420538, 441242, 461945, 482645, 503350, 524055, 544757, 565461, 586164, 606865, 627569, 648274, 668975, 689680, 710382, 731087, 751789, 772490, 793197, 813899, 834602, 855308, 876009, 896709, 917416, 938120, 958821, 979526, 1000230, 1020932, 1041636, 1062340, 1083042, 1103746]
hit1 = 1
data2 = [0, 12253, 15095, 17937, 20777, 23621, 26461, 29304, 32145, 34989, 37830, 40669, 43512, 46354, 49196, 52037, 54879, 57720, 60562, 63404, 66243, 69085, 71929, 74772, 77610, 80454, 83295, 86136, 88976, 91821, 94659, 97501, 100342, 103183, 106026, 108869, 111712, 114553, 117395, 120235, 123075, 125918, 128760, 131602, 134444, 137285, 140127, 142969, 145809, 148651, 151493]
hit2 = 6
data3 = [0, 16805, 20704, 24598, 28497, 32394, 36291, 40189, 44085, 47983, 51880, 55775, 59674, 63570, 67466, 71365, 75262, 79160, 83057, 86954, 90850, 94746, 98644, 102540, 106439, 110336, 114234, 118131, 122030, 125923, 129822, 133719, 137613, 141514, 145409, 149303, 153204, 157100, 160996, 164896, 168792, 172689, 176586, 180484, 184379, 188278, 192174, 196071, 199968, 203866, 207763]
hit3 = 5
data4 = [0, 210078, 258790, 307505, 356218, 404933, 453646, 502360, 551075, 599788, 648503, 697216, 745931, 794644, 843358, 892070, 940786, 989499, 1038213, 1086924, 1135639, 1184353, 1233067, 1281781, 1330496, 1379208, 1427923, 1476636, 1525351, 1574064, 1622778, 1671490, 1720205, 1768920, 1817632, 1866348, 1915061, 1963772, 2012490, 2061203, 2109915, 2158630, 2207344, 2256058, 2304772, 2353484, 2402197, 2450911, 2499625, 2548339, 2597053]
hit4 = 1
hit数 = 14
class classChange(Character):
def __init__(self, equVersion=""):
self.实际名称 = 'weapon_master'
self.名称 = '极诣·剑魂'
self.角色 = '鬼剑士(男)'
self.类型 = '输出'
self.职业 = '剑魂'
self.武器选项 = ['光剑', '太刀', '钝器', '巨剑', '短剑']
self.输出类型选项 = ['物理百分比']
self.防具精通属性 = ['力量']
self.类型 = '物理百分比'
self.武器类型 = '光剑'
self.防具类型 = '轻甲'
self.get_skill_by_name
技能列表 = []
技能序号 = {}
i = 0
while i >= 0:
try:
tem = eval('技能'+str(i)+'()')
tem.基础等级计算()
技能序号[tem.名称] = i
技能列表.append(tem)
i += 1
except Exception:
i = -1
self.技能栏 = 技能列表
self.技能序号 = 技能序号
self.buff = 1.82
super().__init__(equVersion)
def 被动倍率计算(self):
# 武器奥义、精通相关
武器奥义 = self.get_skill_by_name('武器奥义')
if 武器奥义.等级 != 0:
for i in ['太刀精通', '短剑精通', '巨剑精通', '光剑精通', '钝器精通']:
if self.get_skill_by_name(i).等级 != 0:
self.get_skill_by_name(i).等级 += (武器奥义.等级 + 1)
if self.武器类型 not in i:
self.get_skill_by_name(i).关联技能 = ['无']
super().被动倍率计算()
# 无形剑意流系技能
无形剑意 = self.get_skill_by_name('无形剑意')
无形剑意.特殊技能加成(self, self.武器类型)
# 极神剑术相关
极神剑术 = self.get_skill_by_name('极神剑术')
极神剑术.特殊技能加成(self, self.武器类型)
# 里鬼剑术附加
里鬼剑术 = self.get_skill_by_name('里鬼剑术')
里鬼剑术.特殊技能加成(self, self.武器类型)
def 伤害计算(self):
data = super().伤害计算()
skill_dict = data['skills']
神剑术伤害 = 0
count = 0
attack_rate = 0
# region 神剑术
for skill in ['破军升龙击', '猛龙断空斩', '幻影剑舞', '极神剑术流星落']:
if skill in skill_dict.keys():
temp = self.get_skill_by_name(skill)
count += skill_dict[skill]['count']
神剑术伤害 += skill_dict[skill]['damage']*(temp.神剑术倍率-1)
attack_rate = (
attack_rate + skill_dict[skill]['atk_rate']*skill_dict[skill]['count']*(temp.神剑术倍率-1))/count
if 神剑术伤害 > 0:
神剑术 = self.get_skill_by_name('极神剑术')
data['skills']['极神剑术'] = {
'name': '极神剑术',
'rate': 1.0,
'cd': 1.0,
'mp': 0,
'damage': 神剑术伤害,
'count': count,
'level': 神剑术.等级,
'cosume_cube_frag': 0,
'cd_o': 1.0,
'atk_rate': attack_rate
}
data['total_data'] += 神剑术伤害
# endregion
# region 太刀刺伤
if self.武器类型 == '太刀':
b = self.get_skill_by_name("太刀精通")
if b.等级 > 0:
总hit = 0
for key in data['skills'].keys():
d = data['skills'][key]
i = self.get_skill_by_name(d['name'])
if i.是否主动 == 1:
释放次数 = d['count']
总hit += i.hit数 * 释放次数
b.刺伤层数 += i.额外刺伤层数(self.武器类型) * 释放次数
b.刺伤层数 += 总hit * b.刺伤概率(self.武器类型)
被动倍率 = 1.0
for name in ['光剑精通', '短剑精通', '巨剑精通', '太刀精通', '钝器精通', '无我剑气', '极鬼剑术斩铁式', '无形剑意']:
被动倍率 *= self.get_skill_by_name(name).加成倍率(self.武器类型)
倍率 = b.刺伤百分比(self.武器类型) * 被动倍率
count = round(b.刺伤层数 / 17, 1)
damage = 倍率 * self.伤害指数 * (self.伤害比例.get("直伤", 0.0)) / 100
from core.basic.equipment import get_global_data
for item in ['中毒', '灼伤', '感电', '出血']:
cur = item
pa = ''
if item == '中毒':
pa = 'zd_rate'
if item == '出血':
pa = 'cx_rate'
if item == '感电':
pa = 'gd_rate'
if item == '灼伤':
pa = 'zs_rate'
if item == '灼伤' and '灼伤' in get_global_data("state_type", self.equVersion) and ('冰冻' in get_global_data("get_state_type", self.equVersion) or ('冰冻' in get_global_data("state_type", self.equVersion) and self.check_equ_by_name("永眠前的准备"))):
pa = 'zs_bd_rate'
cur = '灼伤破冰'
保有率 = 0
异常基础加成 = 1.0
异常结算加成 = 1.0
装备加成异常结算 = 1.0
if pa == 'zs_bd_rate':
保有率 = self.异常保有率计算(pa,cur)
异常基础加成 = 1.0
异常结算加成 = self.异常基础加成['灼伤破冰']
装备加成异常结算 = self.异常结算加成.get(cur,1.0)
else:
保有率 = self.异常保有率计算(pa,cur)
# 叠层处理
异常基础加成 = 1+ (self.异常基础加成.get(cur,1.0)-1) * get_global_data(pa,self.equVersion,1.0)
异常结算加成 = 1.0
装备加成异常结算 = self.异常结算加成.get(cur,1.0)
系数 = self.伤害系数.get(item, 0.0) * ( (1-保有率) * 异常基础加成 + 保有率 * 异常基础加成 * 异常结算加成 * 装备加成异常结算)
damage += 系数 * 倍率 * self.伤害指数 * (self.伤害比例.get(item, 0.0)) / 100
data['skills']['太刀精通'] = {
'name': '太刀精通',
'rate': 被动倍率,
'cd': 0,
'mp': 0,
'damage': damage,
'count': count,
'level': b.等级,
'cosume_cube_frag': 0,
'cd_o': 0,
'atk_rate': b.刺伤浮动
}
data['total_data'] += damage
# endregion
dps = 0
for temp in data['skills']:
skill = data['skills'][temp]
try:
dps += (skill['damage']/skill['count'])/skill['cd']
except Exception:
pass
data['dps'] = dps
return data
# 神影手
'''
if self.技能栏[self.技能序号['拔刀斩']].触发神影手 == 1 and 技能总伤害[self.技能序号['拔刀斩']] != 0:
技能释放次数[self.技能序号['神影手']] = 技能释放次数[self.技能序号['拔刀斩']]
神影手倍率 = 1.0
for name in ['光剑精通', '短剑精通', '巨剑精通', '太刀精通', '钝器精通']:
神影手倍率 *= self.技能栏[self.技能序号[name]].加成倍率(self.武器类型)
比例 = self.技能栏[self.技能序号['神影手']].百分比 * self.伤害指数 * \
神影手倍率 / self.主BUFF / 技能单次伤害[self.技能序号['拔刀斩']]
技能总伤害[self.技能序号['神影手']] = 比例 * 技能总伤害[self.技能序号['拔刀斩']]
'''
def 技能倍率加成(self, min: int, max: int, x: float, exc=[], type="all",excName=[],changeSkill = False) -> None:
for i in self.技能栏:
if i.所在等级 >= min and i.所在等级 <= max and i.所在等级 not in exc and i.名称 not in excName:
if i.是否有伤害 == 1:
if type == "all" or (type == "active" and i.是否主动 == 1):
if changeSkill:
i.倍率 *= (1 + x * self.技能伤害增加增幅)
else:
i.技攻 *= (1 + x * self.技能伤害增加增幅)
if type == "all" and min == 75 and i.名称 == '极神剑术':
i.额外倍率 *= (1 + x * self.技能伤害增加增幅)
if i.名称 in ['破军升龙击', '猛龙断空斩', '幻影剑舞', '极神剑术流星落'] and min == max:
i.独立倍率 *= (1 + x * self.技能伤害增加增幅)
def set_skill_info(self, info, rune_except=[], clothes_pants=[]):
super().set_skill_info(info, clothes_pants=[
'太刀精通', '短剑精通', '巨剑精通', '钝器精通'])
def 技能等级加成(self, 加成类型: str, min: int, max: int, lv: int, exc=[],excName=[]) -> None:
for i in self.技能栏:
if i.所在等级 >= min and i.所在等级 <= max and i.所在等级 not in exc and i.名称 not in excName and i.名称 not in ['光剑精通','太刀精通', '巨剑精通', '短剑精通', '钝器精通']:
if 加成类型 == '所有':
i.等级加成(lv, char=self)
else:
if (i.是否主动 == 1) == (加成类型 == '主动'):
i.等级加成(lv, char=self)
# super().技能等级加成(加成类型, min, max, lv, exc)
def get_acitve_skill_detail(self, skill, temp_info, temp_char, weapon, ratio, skill_info):
if skill.是否有伤害:
if len(skill.形态) == 0:
skill.形态 = ['']
for 形态 in skill.形态:
original = 0
for i in ['直伤', '中毒', '灼伤', '感电', '出血']:
original += skill.等效百分比(
char=temp_info, 武器类型=weapon, 形态=形态, 伤害类型=i)
skill_info["skills_active"].append({
"name": skill.名称,
"need_level": skill.所在等级,
"lv": skill.等级,
"data": original*ratio*skill.被动倍率*skill.神剑术倍率,
"cd": skill.等效CD(武器类型=weapon, 输出类型=temp_info.类型,char =temp_info),
"mode": 形态,
"cost": skill.无色消耗,
"tp": skill.TP等级
})
if skill.是否有护石 == 1:
temp = temp_char.get_skill_by_name(skill.名称)
cp = 0
for i in ['直伤', '中毒', '灼伤', '感电', '出血']:
cp += temp.等效百分比(char=temp_char,
武器类型=weapon, 形态=形态, 伤害类型=i)
skill_info["skills_cp"].append({
"name": skill.名称,
"need_level": skill.所在等级,
"lv": skill.等级,
"data": cp*ratio*temp.被动倍率*temp.神剑术倍率,
"cd": temp.等效CD(武器类型=weapon, 输出类型=temp_info.类型,char =temp_info),
"original_data": original*ratio*skill.被动倍率*skill.神剑术倍率,
"original_cd": skill.等效CD(武器类型=weapon, 输出类型=temp_info.类型,char =temp_info),
"mode": 形态,
"cost": temp.无色消耗,
"tp": skill.TP等级
})
pass
pass