623 lines
16 KiB
Python
623 lines
16 KiB
Python
from PublicReference.carry.base import *
|
|
from math import *
|
|
|
|
|
|
class 主动技能(主动技能):
|
|
电弧能量充能 = 0
|
|
# 等级 = 100 + 5
|
|
|
|
|
|
# class 职业主动技能(主动技能):
|
|
# 技能施放时间 = 0.0
|
|
# 脱手 = 1
|
|
# data0 = []
|
|
# data1 = []
|
|
# data2 = []
|
|
# data3 = []
|
|
|
|
# def 等效百分比(self, 武器类型):
|
|
# 等效倍率 = 0.0
|
|
# if len(self.data0) >= self.等级 and len(self.data0) > 0:
|
|
# 等效倍率 += self.data0[self.等级] * self.攻击次数
|
|
# if len(self.data1) >= self.等级 and len(self.data1) > 0:
|
|
# 等效倍率 += self.data1[self.等级] * self.攻击次数1
|
|
# if len(self.data2) >= self.等级 and len(self.data2) > 0:
|
|
# 等效倍率 += self.data2[self.等级] * self.攻击次数2
|
|
# if len(self.data3) >= self.等级 and len(self.data3) > 0:
|
|
# 等效倍率 += self.data3[self.等级] * self.攻击次数3
|
|
# return 等效倍率 * (1 + self.TP成长 * self.TP等级) * self.倍率
|
|
class 技能0(被动技能):
|
|
名称 = '基础精通'
|
|
倍率 = 1.0
|
|
所在等级 = 1
|
|
等级上限 = 200
|
|
基础等级 = 100
|
|
关联技能 = ['瞄准射击']
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)
|
|
|
|
|
|
class 技能1(主动技能):
|
|
名称 = '超频:压制'
|
|
电弧能量充能 = 20
|
|
所在等级 = 5
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
等级精通 = 50
|
|
基础 = 1625 - 165
|
|
成长 = 165
|
|
攻击次数 = 1
|
|
# 学习诺维尔计划:涅磐后减少1秒
|
|
CD = 6.0 - 1
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
class 技能2(主动技能):
|
|
名称 = '烟尘弹'
|
|
所在等级 = 10
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 409 - 42
|
|
成长 = 42
|
|
攻击次数 = 6
|
|
CD = 6
|
|
TP成长 = 0.08
|
|
TP上限 = 7
|
|
|
|
class 技能3(被动技能):
|
|
名称 = '合金战士自动手枪精通'
|
|
所在等级 = 15
|
|
等级上限 = 20
|
|
基础等级 = 10
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(1.13 + 0.02 * self.等级, 3)
|
|
|
|
def 物理攻击力倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(1.13 + 0.02 * self.等级, 3)
|
|
|
|
class 技能4(主动技能):
|
|
名称 = '瞄准射击'
|
|
所在等级 = 15
|
|
等级上限 = 1
|
|
基础等级 = 1
|
|
基础 = 130
|
|
成长 = 0
|
|
攻击次数 = 7
|
|
CD = 3
|
|
TP成长 = 0.10
|
|
TP上限 = 3
|
|
|
|
class 技能5(被动技能):
|
|
名称 = '弱点扫描'
|
|
所在等级 = 20
|
|
等级上限 = 20
|
|
基础等级 = 10
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(1 + 0.02 * self.等级, 3)
|
|
|
|
class 技能6(主动技能):
|
|
名称 = '枪托强击'
|
|
所在等级 = 20
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 4221 - 428
|
|
成长 = 428
|
|
CD = 8
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
class 技能7(主动技能):
|
|
名称 = '改装榴弹'
|
|
所在等级 = 20
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 3132 - 317
|
|
成长 = 317
|
|
CD = 6
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
class 技能8(被动技能):
|
|
名称 = '改造烟尘弹'
|
|
所在等级 = 25
|
|
等级上限 = 1
|
|
基础等级 = 1
|
|
关联技能 = ['烟尘弹']
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(1.2, 3)
|
|
|
|
class 技能9(主动技能):
|
|
名称 = '超频:重盾保卫'
|
|
电弧能量充能 = 30
|
|
所在等级 = 20
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 6325 - 642
|
|
成长 = 642
|
|
# 基础 = 6470 - 656
|
|
# 成长 = 656
|
|
CD = 6
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
class 技能10(主动技能):
|
|
名称 = '磁力手雷'
|
|
所在等级 = 30
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 2011 - 204
|
|
成长 = 204
|
|
攻击次数 = 3
|
|
CD = 12
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
class 技能11(主动技能):
|
|
名称 = '三连霰弹'
|
|
所在等级 = 30
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 1016 - 103
|
|
成长 = 103
|
|
攻击次数 = 1
|
|
基础2 = 1524 - 155
|
|
成长2 = 155
|
|
攻击次数2 = 1
|
|
基础3 = 2540 - 258
|
|
成长3 = 258
|
|
攻击次数3 = 1
|
|
CD = 8
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
class 技能12(主动技能):
|
|
名称 = '爆裂飞踢'
|
|
所在等级 = 35
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 3233 - 328
|
|
成长 = 328
|
|
攻击次数 = 1
|
|
基础2 = 1212 - 123
|
|
成长2 = 123
|
|
攻击次数2 = 4
|
|
CD = 15
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
class 技能13(主动技能):
|
|
名称 = '超频:机械冲撞'
|
|
电弧能量充能 = 30
|
|
所在等级 = 35
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
# 撞击
|
|
基础 = 4707 - 478
|
|
成长 = 478
|
|
攻击次数 = 1
|
|
# 炮
|
|
基础2 = 3138 - 318
|
|
成长2 = 318
|
|
攻击次数2 = 1
|
|
CD = 13
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
是否有护石 = 1
|
|
护石选项 = ['圣痕']
|
|
|
|
def 装备护石(self, 类型):
|
|
if 类型 == 0:
|
|
self.攻击次数2 = 0
|
|
self.攻击次数 = 1+0.91+0.32
|
|
|
|
class 技能14(主动技能):
|
|
名称 = '战略轰炸'
|
|
所在等级 = 40
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
# 榴弹
|
|
基础 = 1647 - 167
|
|
成长 = 167
|
|
攻击次数 = 3
|
|
# 手榴弹
|
|
基础2 = 2471 - 251
|
|
成长2 = 251
|
|
攻击次数2 = 3
|
|
CD = 20
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
是否有护石 = 1
|
|
护石选项 = ['圣痕']
|
|
|
|
def 装备护石(self, 类型):
|
|
if 类型 == 0:
|
|
self.攻击次数 += 2
|
|
self.基础 *= 0.83
|
|
self.成长 *= 0.83
|
|
self.基础2 *= 1.29
|
|
self.成长2 *= 1.29
|
|
self.CD *= 0.9
|
|
|
|
class 技能15(主动技能):
|
|
名称 = '雷达扫射'
|
|
所在等级 = 45
|
|
等级上限 = 60
|
|
学习间隔 = 2
|
|
基础 = 1446 - 147
|
|
成长 = 147
|
|
攻击次数 = 15
|
|
CD = 40
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
是否有护石 = 1
|
|
护石选项 = ['圣痕']
|
|
|
|
def 装备护石(self, 类型):
|
|
if 类型 == 0:
|
|
self.攻击次数 *= 1+0.14+0.17
|
|
self.CD *= 0.95
|
|
|
|
class 技能16(被动技能):
|
|
名称 = '机体复原'
|
|
所在等级 = 48
|
|
等级上限 = 40
|
|
学习间隔 = 3
|
|
等级精通 = 30
|
|
关联技能 = ['所有']
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(1.04 + 0.02 * self.等级, 3)
|
|
|
|
class 技能17(主动技能):
|
|
名称 = '电弧能量释放'
|
|
所在等级 = 48
|
|
等级上限 = 1
|
|
基础等级 = 1
|
|
基础 = 8816 - 1406
|
|
成长 = 1406
|
|
攻击次数 = 1
|
|
CD = 1
|
|
|
|
class 技能18(主动技能):
|
|
名称 = '超频:全领域攻击'
|
|
电弧能量充能 = 100
|
|
所在等级 = 50
|
|
等级上限 = 40
|
|
学习间隔 = 5
|
|
等级精通 = 30
|
|
基础 = 5230
|
|
成长 = 1577
|
|
攻击次数 = 1
|
|
基础2 = 2613
|
|
成长2 = 789
|
|
攻击次数2 = 8
|
|
基础3 = 26138
|
|
成长3 = 7889
|
|
攻击次数3 = 1
|
|
CD = 145
|
|
|
|
class 技能19(主动技能):
|
|
名称 = '超频:电流闪踢'
|
|
电弧能量充能 = 50
|
|
所在等级 = 60
|
|
等级上限 = 40
|
|
学习间隔 = 2
|
|
基础 = 17383 - 1764
|
|
成长 = 1764
|
|
CD = 25
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
是否有护石 = 1
|
|
护石选项 = ['圣痕']
|
|
|
|
def 装备护石(self, 类型):
|
|
if 类型 == 0:
|
|
self.攻击次数 *= 1+0.15+0.16
|
|
self.CD *= 0.9
|
|
|
|
class 技能20(主动技能):
|
|
名称 = '堡垒轰击'
|
|
所在等级 = 70
|
|
等级上限 = 40
|
|
学习间隔 = 2
|
|
基础 = 1314 - 133
|
|
成长 = 133
|
|
攻击次数 = 30
|
|
CD = 50
|
|
TP成长 = 0.1
|
|
TP上限 = 7
|
|
|
|
是否有护石 = 1
|
|
护石选项 = ['圣痕']
|
|
|
|
def 装备护石(self, 类型):
|
|
if 类型 == 0:
|
|
# 变成充能类技能
|
|
self.基础释放次数 = 2
|
|
self.倍率 *= 1-0.43+0.13
|
|
self.CD *= 0.5
|
|
|
|
class 技能21(主动技能):
|
|
名称 = 'AT-SO步行者'
|
|
备注 = '自动射击'
|
|
所在等级 = 75
|
|
等级上限 = 40
|
|
学习间隔 = 2
|
|
基础 = 1022 - 104
|
|
成长 = 104
|
|
攻击次数 = 28*4
|
|
CD = 40
|
|
CD_min = 20
|
|
|
|
是否有护石 = 1
|
|
护石选项 = ['圣痕']
|
|
|
|
def 装备护石(self, 类型):
|
|
if 类型 == 0:
|
|
self.CD_min = 30
|
|
# 增加持续时间
|
|
self.攻击次数 *=30/20
|
|
# 自爆
|
|
self.攻击次数 += 5.6
|
|
|
|
|
|
class 技能22(被动技能):
|
|
名称 = '躯体重塑'
|
|
所在等级 = 75
|
|
等级上限 = 40
|
|
学习间隔 = 3
|
|
等级精通 = 30
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(1.22 + 0.02 * self.等级, 3)
|
|
|
|
class 技能23(主动技能):
|
|
名称 = '炎神攻城炮'
|
|
所在等级 = 80
|
|
等级上限 = 40
|
|
学习间隔 = 2
|
|
精通等级 = 30
|
|
基础 = 67684 - 6866
|
|
成长 = 6866
|
|
CD = 45
|
|
|
|
是否有护石 = 1
|
|
护石选项 = ['圣痕']
|
|
|
|
def 装备护石(self, 类型):
|
|
if 类型 == 0:
|
|
self.倍率 *=1.25
|
|
self.CD *= 0.9
|
|
|
|
class 技能24(主动技能):
|
|
名称 = '超频:伊奎利斯-MR'
|
|
电弧能量充能 = 100
|
|
所在等级 = 85
|
|
等级上限 = 40
|
|
学习间隔 = 5
|
|
等级精通 = 30
|
|
基础 = 7802 - 1809
|
|
成长 = 1809
|
|
攻击次数 = 20
|
|
CD = 180
|
|
|
|
class 技能25(被动技能):
|
|
名称 = '诺维尔计划:涅磐'
|
|
所在等级 = 95
|
|
等级上限 = 40
|
|
学习间隔 = 3
|
|
等级精通 = 30
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 1.0
|
|
else:
|
|
return round(1.18 + 0.02 * self.等级, 5)
|
|
|
|
class 技能26(主动技能):
|
|
名称 = '超频:音速瞬杀'
|
|
电弧能量充能 = 70
|
|
所在等级 = 95
|
|
等级上限 = 40
|
|
学习间隔 = 2
|
|
等级精通 = 10
|
|
|
|
CD = 60
|
|
|
|
基础 = 6349 - 644
|
|
成长 = 644
|
|
攻击次数 = 4
|
|
|
|
基础2 = 38097 - 3864
|
|
成长2 = 3864
|
|
攻击次数2 =1
|
|
|
|
基础3 = 63495 - 6441
|
|
成长3 = 6441
|
|
攻击次数3 = 1
|
|
|
|
class 技能27(主动技能):
|
|
电弧能量充能 = 100
|
|
名称 = '超频:末世终结之战'
|
|
所在等级 = 100
|
|
等级上限 = 40
|
|
学习间隔 = 5
|
|
等级精通 = 30
|
|
|
|
关联技能 = ['无']
|
|
|
|
CD = 290.0
|
|
# 战场脉冲+落地冲击波
|
|
基础 = 41744 - 9679
|
|
成长 = 9679
|
|
攻击次数 = 2
|
|
|
|
基础2 = 5218 - 1209
|
|
成长2 = 1209
|
|
攻击次数2 = 12
|
|
|
|
基础3 = 20872 - 4839
|
|
成长3 = 4839
|
|
攻击次数3 = 3
|
|
|
|
基础4 = 208720 - 48398
|
|
成长4 = 48398
|
|
攻击次数4 = 1
|
|
|
|
def 加成倍率(self, 武器类型):
|
|
return 0.0
|
|
|
|
def 等效百分比(self, 武器类型):
|
|
if self.等级 == 0:
|
|
return 0
|
|
else:
|
|
return int(
|
|
(self.攻击次数 * (self.基础 + self.成长 * self.等级) + self.攻击次数2 *
|
|
(self.基础2 + self.成长2 * self.等级) + self.攻击次数3 *
|
|
(self.基础3 + self.成长3 * self.等级) + self.攻击次数4 *
|
|
(self.基础4 + self.成长4 * self.等级)) *
|
|
(1 + self.TP成长 * self.TP等级) * self.倍率)
|
|
|
|
技能列表 = []
|
|
i = 0
|
|
while i >= 0:
|
|
try:
|
|
tem = eval('技能'+str(i)+'()')
|
|
tem.基础等级计算()
|
|
技能列表.append(tem)
|
|
i += 1
|
|
except:
|
|
i = -1
|
|
|
|
|
|
class 职业属性(角色属性):
|
|
实际名称 = '重霄·合金战士'
|
|
角色 = '神枪手(男)'
|
|
职业 = '合金战士'
|
|
|
|
武器选项 = ['自动手枪']
|
|
|
|
类型选择 = ['物理百分比']
|
|
|
|
类型 = '物理百分比'
|
|
防具类型 = '轻甲'
|
|
防具精通属性 = ['力量']
|
|
|
|
主BUFF = 2
|
|
|
|
def __init__(self, 技能列表, 技能序号):
|
|
基础属性输入(self)
|
|
self.技能栏 = deepcopy(技能列表)
|
|
self.技能序号 = deepcopy(技能序号)
|
|
|
|
def 被动倍率计算(self):
|
|
super().被动倍率计算()
|
|
self.技能栏[self.技能序号['电弧能量释放']].等级 = self.技能栏[self.技能序号['机体复原']].等级
|
|
|
|
def 武器基础(self):
|
|
temp = equ.get_equ_by_name(self.装备栏[11])
|
|
self.力量 += temp.智力
|
|
self.智力 += temp.智力
|
|
self.物理攻击力 += temp.魔法攻击力
|
|
self.魔法攻击力 += temp.魔法攻击力
|
|
self.独立攻击力 += temp.独立攻击力
|
|
|
|
if temp.所属套装 != '智慧产物':
|
|
self.物理攻击力 += 武器计算(temp.等级, temp.品质,
|
|
self.强化等级[11], self.武器类型, '魔法')
|
|
self.魔法攻击力 += 武器计算(temp.等级, temp.品质,
|
|
self.强化等级[11], self.武器类型, '魔法')
|
|
self.独立攻击力 += 锻造计算(temp.等级, temp.品质, self.武器锻造等级)
|
|
|
|
def 技能释放次数计算(self):
|
|
技能释放次数 = []
|
|
充能 = 0
|
|
for i in self.技能栏:
|
|
if i.是否有伤害 == 1:
|
|
s = self.次数输入[self.技能序号[i.名称]]
|
|
次数 = 0
|
|
if '/CD' in s:
|
|
if i.名称 == 'AT-SO步行者':
|
|
if self.时间输入 >= i.CD_min:
|
|
次数 = self.时间输入 / max(i.等效CD(self.武器类型, self.类型),i.CD_min)
|
|
else:
|
|
次数 = self.时间输入 / i.CD_min
|
|
else:
|
|
次数 = int((self.时间输入 - i.演出时间) /
|
|
i.等效CD(self.武器类型, self.类型)) + 1 + i.基础释放次数
|
|
else:
|
|
次数 = round(float(s), 2)
|
|
充能 += 次数 * i.电弧能量充能
|
|
技能释放次数.append(次数)
|
|
else:
|
|
技能释放次数.append(0)
|
|
if '/CD' in self.次数输入[self.技能序号['电弧能量释放']]:
|
|
技能释放次数[self.技能序号['电弧能量释放']] = int(充能/100)
|
|
return self.技能释放次数解析(技能释放次数)
|
|
|
|
class 重霄·合金战士(角色窗口):
|
|
def 窗口属性输入(self):
|
|
技能序号 = dict()
|
|
for i in range(len(技能列表)):
|
|
技能序号[技能列表[i].名称] = i
|
|
|
|
一觉序号 = 0
|
|
二觉序号 = 0
|
|
三觉序号 = 0
|
|
|
|
for i in 技能列表:
|
|
if i.所在等级 == 50:
|
|
一觉序号 = 技能序号[i.名称]
|
|
if i.所在等级 == 85:
|
|
二觉序号 = 技能序号[i.名称]
|
|
if i.所在等级 == 100:
|
|
三觉序号 = 技能序号[i.名称]
|
|
|
|
护石选项 = ['无']
|
|
for i in 技能列表:
|
|
if i.是否有伤害 == 1 and i.是否有护石 == 1:
|
|
护石选项.append(i.名称)
|
|
|
|
符文选项 = ['无']
|
|
for i in 技能列表:
|
|
if i.所在等级 >= 20 and i.所在等级 <= 80 and i.所在等级 != 50 and i.是否有伤害 == 1 and i.名称 != '爆裂弹':
|
|
符文选项.append(i.名称)
|
|
self.初始属性 = 职业属性(技能列表, 技能序号)
|
|
self.角色属性A = 职业属性(技能列表, 技能序号)
|
|
self.角色属性B = 职业属性(技能列表, 技能序号)
|
|
self.一觉序号 = 一觉序号
|
|
self.二觉序号 = 二觉序号
|
|
self.三觉序号 = 三觉序号
|
|
self.护石选项 = deepcopy(护石选项)
|
|
self.符文选项 = deepcopy(符文选项)
|
|
|