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(符文选项)