3451 lines
149 KiB
Python
3451 lines
149 KiB
Python
from ctypes import *
|
||
|
||
from .panel import *
|
||
from .property import *
|
||
from PublicReference.choise.选项设置_buff import *
|
||
from PublicReference.common import *
|
||
from PublicReference.utils.common import *
|
||
from PublicReference.view.DialogRegister import DefaultDialogRegister
|
||
from PublicReference.equipment.冒险家名望 import *
|
||
|
||
|
||
class 角色窗口(窗口):
|
||
def __init__(self):
|
||
self.初始属性: 辅助角色属性 = None
|
||
self.护石选项 = [
|
||
'无', 'BUFF力量、智力+2%', 'BUFF力量、智力+4%', 'BUFF力量、智力+6%', 'BUFF力量、智力+8%'
|
||
]
|
||
self.登记启用 = False
|
||
super().__init__()
|
||
|
||
store.bind(self, "登记启用", "/{type}/data/register_enable")
|
||
|
||
def 称号描述(self):
|
||
temp = '<font size="3" face="宋体">'
|
||
temp += '<font color="#78FF1E">' + trans(
|
||
self.称号.currentData()) + '</font><br>'
|
||
temp += 称号列表[self.称号.currentIndex()].装备描述_BUFF(self.角色属性B)[:-4]
|
||
temp += '</font>'
|
||
return temp
|
||
|
||
def 宠物描述(self):
|
||
temp = '<font size="3" face="宋体">'
|
||
temp += '<font color="#78FF1E">' + self.宠物.currentData(
|
||
) + '</font><br>'
|
||
temp += 宠物列表[self.宠物.currentIndex()].装备描述_BUFF(self.角色属性B)[:-4]
|
||
temp += '</font>'
|
||
return temp
|
||
|
||
def 界面(self):
|
||
self.setFixedSize(1120, 680)
|
||
self.窗口高度 = 680
|
||
self.行高 = 30
|
||
self.输出背景图片 = QPixmap(trans("./ResourceFiles/img/输出背景_BUFF.png"))
|
||
super().界面()
|
||
|
||
def 界面1(self):
|
||
super().界面1()
|
||
# increase_counter(ga_category="buffer界面", name="装备/选择/打造")
|
||
|
||
for i in 称号列表:
|
||
self.称号.addItem(trans(i.显示名称), i.名称)
|
||
|
||
for i in 宠物列表:
|
||
self.宠物.addItem(trans(i.显示名称), i.名称)
|
||
|
||
标签 = QLabel(self.main_frame1)
|
||
人物 = QPixmap('./ResourceFiles/' + self.角色属性A.实际名称 + "/职业.png")
|
||
标签.setPixmap(人物)
|
||
标签.resize(191, 523)
|
||
标签.move(922 + int((191 - 人物.width()) / 2), 10)
|
||
|
||
self.百变怪选项 = QCheckBox(trans('百变怪'), self.main_frame1)
|
||
self.百变怪选项.move(660, 613)
|
||
self.百变怪选项.resize(80, 24)
|
||
self.百变怪选项.setToolTip(
|
||
'<font size="3" face="宋体">{}</font>'.format('仅在极速模式和套装模式下生效'))
|
||
self.百变怪选项.setStyleSheet(复选框样式)
|
||
|
||
self.计算模式选择 = MyQComboBox(self.main_frame1)
|
||
self.计算模式选择.addItems(['计算模式:极速模式', '计算模式:套装模式', '计算模式:单件模式'])
|
||
self.计算模式选择.move(750, 613)
|
||
self.计算模式选择.resize(235, 24)
|
||
self.计算模式选择.setStyleSheet(下拉框样式)
|
||
self.计算模式选择.setToolTip('<font size="3" face="宋体">{}</font>'.format(
|
||
trans(
|
||
'极速模式:533和3332(散搭) (不含智慧产物)<br><br>套装模式:533、3332(散搭)和3233(双防具) (不含智慧产物)<br><br>单件模式:所有组合 (不含百变怪)'
|
||
)))
|
||
|
||
self.切装模式选项 = QCheckBox(trans('一觉切1件装备'), self.main_frame1)
|
||
self.切装模式选项.move(875, 580)
|
||
self.切装模式选项.resize(105, 24)
|
||
self.切装模式选项.setToolTip('<font size="3" face="宋体">{}</font>'.format(
|
||
trans('仅对极速/套装模式中的3332散搭组合生效<br><br>默认相同打造')))
|
||
self.切装模式选项.setStyleSheet(复选框样式)
|
||
|
||
self.神话排名选项 = QCheckBox(trans('神话排名模式'), self.main_frame1)
|
||
self.神话排名选项.move(990, 580)
|
||
self.神话排名选项.resize(100, 24)
|
||
self.神话排名选项.setToolTip('<font size="3" face="宋体">{}</font>'.format(
|
||
trans('仅显示有神话的组合,且每件神话装备只会出现一次')))
|
||
self.神话排名选项.setStyleSheet(复选框样式)
|
||
|
||
self.最大使用线程数 = thread_num
|
||
self.线程数选择 = MyQComboBox(self.main_frame1)
|
||
self.线程数选择.move(660, 580)
|
||
self.线程数选择.resize(80, 24)
|
||
for i in range(thread_num, 0, -1):
|
||
self.线程数选择.addItem(trans('进程:') + str(i))
|
||
if thread_num > 1:
|
||
self.线程数选择.setCurrentIndex(1)
|
||
|
||
self.禁用存档 = QCheckBox(trans('禁用自动存档'), self.main_frame1)
|
||
self.禁用存档.move(990, 545)
|
||
self.禁用存档.resize(100, 24)
|
||
self.禁用存档.setStyleSheet(复选框样式)
|
||
|
||
重置按钮 = QPushButton(trans('全局重置'), self.main_frame1)
|
||
重置按钮.clicked.connect(lambda state: self.全局重置())
|
||
重置按钮.move(880, 545)
|
||
重置按钮.resize(100, 24)
|
||
重置按钮.setStyleSheet(按钮样式)
|
||
|
||
self.排行参数 = MyQComboBox(self.main_frame1)
|
||
self.排行参数.addItems(['提升率排行', '面板排行', '力智排行', '三攻排行'])
|
||
self.排行参数.move(770, 545)
|
||
self.排行参数.resize(100, 24)
|
||
|
||
self.存档选择 = MyQComboBox(self.main_frame1)
|
||
self.存档选择.move(660, 545)
|
||
self.存档选择.resize(90, 24)
|
||
self.存档选择.currentIndexChanged.connect(lambda state: self.存档更换())
|
||
|
||
# 一键修正按钮添加
|
||
self.一键站街设置输入.append(QLineEdit(self.main_frame1))
|
||
self.一键站街设置输入[0].setAlignment(Qt.AlignCenter)
|
||
self.一键站街设置输入[0].setStyleSheet(输入框样式)
|
||
self.一键站街设置输入[0].resize(45, 24)
|
||
self.一键站街设置输入[0].move(750, 580)
|
||
|
||
self.一键修正按钮 = QPushButton(trans('一键修正'), self.main_frame1)
|
||
self.一键修正按钮.clicked.connect(lambda state: self.一键修正())
|
||
self.一键修正按钮.move(800, 580)
|
||
self.一键修正按钮.resize(70, 24)
|
||
self.一键修正按钮.setStyleSheet(按钮样式)
|
||
|
||
增幅选项 = []
|
||
for i in range(12):
|
||
combo = self.装备打造选项[i + 12]
|
||
combo.currentIndexChanged.connect(
|
||
lambda: store.emit("/{type}/data/amplifies"))
|
||
增幅选项.append(combo)
|
||
store.compute("/{type}/data/amplifies",
|
||
lambda: [i.currentIndex() for i in 增幅选项], None)
|
||
|
||
def 界面2(self):
|
||
# increase_counter(ga_category="buffer界面", name="技能/符文/其它")
|
||
# 第二个布局界面
|
||
self.main_frame2 = QWidget()
|
||
|
||
# 技能等级、次数输入
|
||
|
||
self.护石第一栏 = MyQComboBox(self.main_frame2)
|
||
self.护石第二栏 = MyQComboBox(self.main_frame2)
|
||
self.护石第三栏 = MyQComboBox(self.main_frame2)
|
||
|
||
self.等级调整 = []
|
||
self.次数输入 = []
|
||
|
||
num = 0
|
||
for skill in self.角色属性A.技能表.values():
|
||
level_combo = MyQComboBox(self.main_frame2)
|
||
enable_combo = MyQComboBox(self.main_frame2)
|
||
|
||
level_min = 0 if skill.所在等级 == 50 or skill.所在等级 == 85 else -skill.基础等级
|
||
level_max = skill.等级上限 - skill.基础等级 + 1
|
||
|
||
for j in range(level_min, level_max):
|
||
level_combo.addItem(str(j))
|
||
for j in range(2):
|
||
enable_combo.addItem(str(j))
|
||
enable_combo.activated.connect(
|
||
lambda state, index=num: self.BUFF次数输入填写(index))
|
||
self.等级调整.append(level_combo)
|
||
self.次数输入.append(enable_combo)
|
||
num += 1
|
||
横坐标 = 30
|
||
纵坐标 = 0
|
||
横坐标偏移量 = 60
|
||
纵坐标偏移量 = 30
|
||
词条框宽度 = 48
|
||
行高 = 20
|
||
|
||
counter = 0
|
||
for i in trans(['契约满级', '等级调整', '是否适用']):
|
||
x = QLabel(i, self.main_frame2)
|
||
x.move(横坐标 + 横坐标偏移量 - 30 + 50 * counter, 纵坐标 + 5)
|
||
x.setStyleSheet(标签样式)
|
||
counter += 1
|
||
|
||
纵坐标 += 20
|
||
|
||
num = 0
|
||
for skill in self.角色属性A.技能表.values():
|
||
x = QLabel(self.main_frame2)
|
||
x.setPixmap(self.技能图片[num])
|
||
x.resize(28, 28)
|
||
tempstr = '<font size="3" face="宋体"><font color="#FF6666">' + \
|
||
skill.名称 + skill.备注 + '</font><br>'
|
||
tempstr += '所在等级:' + str(skill.所在等级) + '<br>'
|
||
tempstr += '等级上限:' + str(skill.等级上限) + '</font>'
|
||
x.setToolTip(tempstr)
|
||
x.move(横坐标, 纵坐标 + 7)
|
||
横坐标 += 40
|
||
x = QLabel('Lv' + str(skill.基础等级), self.main_frame2)
|
||
x.resize(40, 28)
|
||
x.move(横坐标, 纵坐标 + 7)
|
||
x.setStyleSheet(标签样式)
|
||
横坐标 += 40
|
||
self.等级调整[num].resize(词条框宽度, 行高)
|
||
self.等级调整[num].move(横坐标, 纵坐标 + 10)
|
||
横坐标 -= 80
|
||
纵坐标 += 纵坐标偏移量
|
||
num += 1
|
||
|
||
横坐标 = 横坐标 + 80 + 50
|
||
纵坐标 = 30
|
||
|
||
for i in range(len(self.角色属性A.技能表)):
|
||
self.次数输入[i].resize(词条框宽度, 行高)
|
||
self.次数输入[i].move(横坐标, 纵坐标)
|
||
纵坐标 += 纵坐标偏移量
|
||
|
||
self.护石第一栏.addItems(self.护石选项)
|
||
self.护石第二栏.addItems(self.护石选项)
|
||
self.护石第三栏.addItems(self.护石选项)
|
||
self.护石栏 = [self.护石第一栏, self.护石第二栏, self.护石第三栏]
|
||
|
||
横坐标 = 395
|
||
纵坐标 = 20
|
||
行高 = 18
|
||
x = QLabel(trans("护石") + "Ⅰ", self.main_frame2)
|
||
x.move(横坐标, 纵坐标)
|
||
x.setStyleSheet(标签样式)
|
||
纵坐标 += 21
|
||
self.护石第一栏.move(横坐标, 纵坐标)
|
||
self.护石第一栏.resize(130, 行高)
|
||
|
||
横坐标 = 565
|
||
纵坐标 = 20
|
||
x = QLabel(trans("护石") + "Ⅱ", self.main_frame2)
|
||
x.move(横坐标, 纵坐标)
|
||
x.setStyleSheet(标签样式)
|
||
纵坐标 += 21
|
||
self.护石第二栏.move(横坐标, 纵坐标)
|
||
self.护石第二栏.resize(130, 行高)
|
||
|
||
横坐标 = 395
|
||
纵坐标 = 70
|
||
行高 = 18
|
||
x = QLabel(trans("护石") + "Ⅲ", self.main_frame2)
|
||
x.move(横坐标, 纵坐标)
|
||
x.setStyleSheet(标签样式)
|
||
纵坐标 += 21
|
||
self.护石第三栏.move(横坐标, 纵坐标)
|
||
self.护石第三栏.resize(130, 行高)
|
||
|
||
self.辟邪玉选择 = []
|
||
self.辟邪玉数值 = []
|
||
x = QLabel(trans("辟邪玉选择"), self.main_frame2)
|
||
x.move(395, 115 + 5)
|
||
x.setStyleSheet(标签样式)
|
||
for i in range(4):
|
||
x = MyQComboBox(self.main_frame2)
|
||
for j in 辟邪玉列表:
|
||
# '[' + str(j.编号) + ']' +
|
||
x.addItem(j.名称)
|
||
x.resize(200, 20)
|
||
x.move(395, 140 + i * 25)
|
||
x.currentIndexChanged.connect(
|
||
lambda state, index=i: self.辟邪玉数值选项更新(index))
|
||
self.辟邪玉选择.append(x)
|
||
y = MyQComboBox(self.main_frame2)
|
||
y.resize(80, 20)
|
||
y.move(615, 140 + i * 25)
|
||
self.辟邪玉数值.append(y)
|
||
|
||
self.复选框列表 = []
|
||
for i in 选项设置列表:
|
||
self.复选框列表.append(QCheckBox(trans(i.名称), self.main_frame2))
|
||
|
||
横坐标 = 395
|
||
纵坐标 = 240
|
||
|
||
x = QLabel(trans("武器融合:"), self.main_frame2)
|
||
x.move(横坐标, 纵坐标 + 5)
|
||
x.resize(300, 20)
|
||
x.setStyleSheet(标签样式)
|
||
|
||
self.希洛克武器选择 = MyQComboBox(self.main_frame2)
|
||
self.希洛克武器选择.addItems(['武器词条:无', '自适应最高值', '自选词条数值'])
|
||
self.希洛克武器选择.resize(120, 20)
|
||
self.希洛克武器选择.move(横坐标 + 60, 纵坐标 + 5)
|
||
self.希洛克武器选择.currentIndexChanged.connect(
|
||
lambda state: self.希洛克武器选择更新())
|
||
纵坐标 += 10
|
||
self.武器融合属性A = MyQComboBox(self.main_frame2)
|
||
for j in 武器属性A列表:
|
||
self.武器融合属性A.addItem(j.固定属性描述)
|
||
self.武器融合属性A.resize(60, 20)
|
||
self.武器融合属性A.move(横坐标, 纵坐标 + 25)
|
||
|
||
self.武器融合属性A1 = MyQComboBox(self.main_frame2)
|
||
self.武器融合属性A1.resize(90 + 75, 20)
|
||
self.武器融合属性A1.move(横坐标 + 110 - 50 + 5, 纵坐标 + 25)
|
||
|
||
self.武器融合属性A2 = MyQComboBox(self.main_frame2)
|
||
self.武器融合属性A2.resize(50, 20)
|
||
self.武器融合属性A2.move(横坐标 + 205 + 20 + 10, 纵坐标 + 25)
|
||
self.武器融合属性A.currentIndexChanged.connect(
|
||
lambda: self.希洛克武器随机词条更新(self.武器融合属性A.currentIndex()))
|
||
|
||
x = QLabel(trans("择优方向"), self.main_frame2)
|
||
x.move(横坐标 + 335, 纵坐标 + 15)
|
||
x.resize(300, 20)
|
||
x.setStyleSheet(标签样式)
|
||
|
||
self.觉醒择优方向 = MyQComboBox(self.main_frame2)
|
||
self.觉醒择优方向.addItem('自选觉醒择优系数')
|
||
self.觉醒择优方向.addItem('续航向:觉醒0.7系数')
|
||
self.觉醒择优方向.addItem('爆发向:觉醒1.0系数')
|
||
self.觉醒择优方向.resize(138, 20)
|
||
self.觉醒择优方向.move(横坐标 + 300, 纵坐标 + 40)
|
||
self.觉醒择优方向.currentIndexChanged.connect(
|
||
lambda index: self.调整觉醒择优方向(index))
|
||
|
||
self.觉醒择优系数 = MyQComboBox(self.main_frame2)
|
||
self.觉醒择优系数.resize(138, 20)
|
||
self.觉醒择优系数.move(横坐标 + 440, 纵坐标 + 40)
|
||
for i in range(21):
|
||
self.觉醒择优系数.addItem(str(round(i / 10, 1)))
|
||
self.觉醒择优系数.setCurrentIndex(10)
|
||
|
||
纵坐标 = 纵坐标 + 30
|
||
self.武器融合属性B = MyQComboBox(self.main_frame2)
|
||
for j in 武器属性B列表:
|
||
self.武器融合属性B.addItem(j.固定属性描述)
|
||
self.武器融合属性B.resize(60, 20)
|
||
self.武器融合属性B.move(横坐标, 纵坐标 + 25)
|
||
|
||
self.武器融合属性B1 = MyQComboBox(self.main_frame2)
|
||
self.武器融合属性B1.resize(90 + 75, 20)
|
||
self.武器融合属性B1.move(横坐标 + 110 - 50 + 5, 纵坐标 + 25)
|
||
|
||
self.武器融合属性B2 = MyQComboBox(self.main_frame2)
|
||
self.武器融合属性B2.resize(50, 20)
|
||
self.武器融合属性B2.move(横坐标 + 205 + 20 + 10, 纵坐标 + 25)
|
||
self.武器融合属性B.currentIndexChanged.connect(
|
||
lambda: self.希洛克武器随机词条更新(self.武器融合属性B.currentIndex(), 1))
|
||
|
||
纵坐标 = 纵坐标 + 60
|
||
标签 = QLabel(trans('黑鸦遴选词条'), self.main_frame2)
|
||
标签.setStyleSheet(标签样式 + 'QLabel{font-size:13px;}')
|
||
标签.resize(410, 20)
|
||
标签.move(横坐标, 纵坐标)
|
||
标签.setAlignment(Qt.AlignCenter)
|
||
|
||
名称 = trans(['武 器', '戒 指', '辅助装备', '下 装'])
|
||
纵坐标 = 纵坐标 + 25
|
||
self.黑鸦词条选项 = []
|
||
for i in range(4):
|
||
this_index = i
|
||
x = QLabel(名称[i], self.main_frame2)
|
||
x.setStyleSheet(标签样式 +
|
||
'QLabel{font-size:13px;};text-align: justify;')
|
||
# x.setStyleSheet('text-align: justify')
|
||
x.resize(55, 20)
|
||
x.move(横坐标, 纵坐标 + i * 25)
|
||
tem = []
|
||
tem.append(MyQComboBox(self.main_frame2))
|
||
if i == 0:
|
||
tem[0].addItems(['无', '计算最高', '自选数值', '自选数值-觉醒'])
|
||
tem[0].resize(91, 20)
|
||
tem[0].move(横坐标 + 60, 纵坐标 + 25 * i)
|
||
tem[0].currentIndexChanged.connect(
|
||
lambda state, index=i: self.黑鸦词条更新(index))
|
||
else:
|
||
tem[0].addItems(['无', '计算最高', '自选数值'])
|
||
tem[0].resize(91, 20)
|
||
tem[0].move(横坐标 + 60, 纵坐标 + 25 * i)
|
||
tem[0].currentIndexChanged.connect(
|
||
lambda state, index=i: self.黑鸦词条更新(index))
|
||
tem.append(MyQComboBox(self.main_frame2))
|
||
tem[1].resize(60, 20)
|
||
tem[1].move(横坐标 + 156, 纵坐标 + 25 * i)
|
||
|
||
tem.append(MyQComboBox(self.main_frame2))
|
||
tem[2].resize(90 + 75, 20)
|
||
tem[2].move(横坐标 + 266 - 50 + 5, 纵坐标 + 25 * i)
|
||
|
||
tem.append(MyQComboBox(self.main_frame2))
|
||
tem[3].resize(50, 20)
|
||
tem[3].move(横坐标 + 361 + 20 + 10, 纵坐标 + 25 * i)
|
||
if i > 0:
|
||
for item in 装备变换属性列表:
|
||
tem[1].addItem(item.固定属性描述)
|
||
tem[1].currentIndexChanged.connect(
|
||
lambda state, index=i: self.黑鸦随机词条更新(index, 1))
|
||
else:
|
||
for item in 武器变换属性列表:
|
||
tem[1].addItem(item.固定属性描述)
|
||
tem[1].currentIndexChanged.connect(
|
||
lambda state, index=i: self.黑鸦随机词条更新(index))
|
||
self.黑鸦词条选项.append(tem)
|
||
self.黑鸦词条更新(i)
|
||
|
||
横坐标 = 740
|
||
纵坐标 = 30
|
||
self.希洛克套装按钮 = []
|
||
self.希洛克单件按钮 = []
|
||
self.希洛克遮罩透明度 = []
|
||
self.希洛克选择状态 = [0] * 15
|
||
|
||
count = 0
|
||
for i in 希洛克套装:
|
||
self.希洛克套装按钮.append(QPushButton(trans(i), self.main_frame2))
|
||
self.希洛克套装按钮[count].setStyleSheet(按钮样式)
|
||
self.希洛克套装按钮[count].resize(50, 22)
|
||
self.希洛克套装按钮[count].move(横坐标, 纵坐标 + 3 + count * 40)
|
||
self.希洛克套装按钮[count].clicked.connect(
|
||
lambda state, index=(count + 1) * 100: self.希洛克选择(index))
|
||
|
||
for j in range(3):
|
||
序号 = count * 3 + j
|
||
图片 = QLabel(self.main_frame2)
|
||
图片.setPixmap(
|
||
QPixmap('./ResourceFiles/img/希洛克/' + str(序号) + '.png'))
|
||
图片.resize(28, 28)
|
||
图片.move(横坐标 + 60 + j * 30, 纵坐标 + count * 40)
|
||
self.希洛克遮罩透明度.append(QGraphicsOpacityEffect())
|
||
self.希洛克遮罩透明度[序号].setOpacity(0.5)
|
||
|
||
siroco_button = QPushButton(self.main_frame2)
|
||
siroco_button.setStyleSheet("background-color: rgb(0, 0, 0)")
|
||
siroco_button.resize(28, 28)
|
||
siroco_button.move(横坐标 + 60 + j * 30, 纵坐标 + count * 40)
|
||
siroco_button.setGraphicsEffect(self.希洛克遮罩透明度[序号])
|
||
siroco_button.clicked.connect(
|
||
lambda state, index=序号: self.希洛克选择(index))
|
||
self.希洛克单件按钮.append(siroco_button)
|
||
count += 1
|
||
|
||
横坐标 = 395
|
||
纵坐标 = 480
|
||
self.奥兹玛套装按钮 = []
|
||
self.奥兹玛单件按钮 = []
|
||
self.奥兹玛遮罩透明度 = []
|
||
self.奥兹玛选择状态 = [0] * 25
|
||
|
||
T = deepcopy(self.初始属性)
|
||
|
||
T.装备描述 = 1
|
||
|
||
count = 0
|
||
for i in 奥兹玛套装:
|
||
self.奥兹玛套装按钮.append(QPushButton(trans(i), self.main_frame2))
|
||
self.奥兹玛套装按钮[count].setStyleSheet(按钮样式)
|
||
self.奥兹玛套装按钮[count].resize(75, 22)
|
||
self.奥兹玛套装按钮[count].move(横坐标, 纵坐标 + 3 + count * 32)
|
||
self.奥兹玛套装按钮[count].clicked.connect(
|
||
lambda state, index=(count + 1) * 100: self.奥兹玛选择(index))
|
||
|
||
ozma = OzmaList[count]
|
||
|
||
for j in range(5):
|
||
序号 = count * 5 + j
|
||
图片 = QLabel(self.main_frame2)
|
||
图片.setPixmap(
|
||
QPixmap('./ResourceFiles/img/奥兹玛/' + str(序号) + '.png'))
|
||
图片.resize(28, 28)
|
||
图片.move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32)
|
||
self.奥兹玛遮罩透明度.append(QGraphicsOpacityEffect())
|
||
self.奥兹玛遮罩透明度[序号].setOpacity(0.5)
|
||
|
||
tooltip = trans('<font color="#00A2E8">{奥兹玛融合属性}:</font><br>')
|
||
tooltip += ozma(T)
|
||
tooltip = tooltip_trim(tooltip)
|
||
|
||
ozma_button = QPushButton(self.main_frame2)
|
||
ozma_button.setStyleSheet("background-color: rgb(0, 0, 0)")
|
||
ozma_button.setToolTip(tooltip)
|
||
ozma_button.resize(28, 28)
|
||
ozma_button.move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32)
|
||
ozma_button.setGraphicsEffect(self.奥兹玛遮罩透明度[序号])
|
||
ozma_button.clicked.connect(
|
||
lambda state, index=序号: self.奥兹玛选择(index))
|
||
self.奥兹玛单件按钮.append(ozma_button)
|
||
count += 1
|
||
|
||
counter = 0
|
||
for i in self.复选框列表:
|
||
i.setStyleSheet(复选框样式)
|
||
i.resize(180, 20)
|
||
i.move(930, 25 + counter * 28)
|
||
if counter < 1:
|
||
i.setChecked(True)
|
||
counter += 1
|
||
|
||
self.排行选项 = []
|
||
for i in range(4):
|
||
self.排行选项.append(MyQComboBox(self.main_frame2))
|
||
self.排行选项[0].setEditable(True)
|
||
for i in [
|
||
3000, 3500, 4000, 4500, 5000, 5500, 6000, 7000, 8000, 10000,
|
||
12000, 15000, 20000
|
||
]:
|
||
self.排行选项[0].addItem(trans('C力智:') + str(i))
|
||
self.排行选项[0].setCurrentIndex(4)
|
||
|
||
self.排行选项[1].setEditable(True)
|
||
for i in [
|
||
2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900,
|
||
3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900,
|
||
4000, 4200, 4400, 4600, 4800, 5000
|
||
]:
|
||
self.排行选项[1].addItem(trans('C三攻:') + str(i))
|
||
self.排行选项[1].setCurrentIndex(10)
|
||
|
||
for i in ['物理百分比', '魔法百分比', '物理固伤', '魔法固伤']:
|
||
self.排行选项[2].addItem(i)
|
||
|
||
for i in ['无系统奶', '希洛克系统奶', '黑鸦系统奶']:
|
||
self.排行选项[3].addItem(i)
|
||
|
||
counter = 0
|
||
for i in self.排行选项:
|
||
i.resize(100, 20)
|
||
i.move(990, 490 + counter * 28)
|
||
counter += 1
|
||
|
||
self.计算按钮2 = QPushButton(trans('开始计算'), self.main_frame2)
|
||
self.计算按钮2.clicked.connect(lambda state: self.计算())
|
||
self.计算按钮2.move(990, 610)
|
||
self.计算按钮2.resize(100, 30)
|
||
self.计算按钮2.setStyleSheet(按钮样式)
|
||
|
||
self.觉醒选择状态 = 2
|
||
self.一觉遮罩透明度 = QGraphicsOpacityEffect()
|
||
self.一觉遮罩透明度.setOpacity(0.5)
|
||
self.二觉遮罩透明度 = QGraphicsOpacityEffect()
|
||
self.二觉遮罩透明度.setOpacity(0.0)
|
||
x = 250
|
||
y = 230
|
||
self.觉醒选择 = QLabel(self.main_frame2)
|
||
self.觉醒选择.setPixmap(QPixmap('./ResourceFiles/img/觉醒选择.png'))
|
||
self.觉醒选择.resize(120, 100)
|
||
self.觉醒选择.move(x, y - 20)
|
||
self.一觉图片 = QLabel(self.main_frame2)
|
||
self.一觉图片.setPixmap(self.技能图片[self.初始属性.一觉序号])
|
||
self.一觉图片.resize(28, 28)
|
||
self.一觉图片.move(x + 7, y + 8)
|
||
self.二觉图片 = QLabel(self.main_frame2)
|
||
self.二觉图片.setPixmap(self.技能图片[self.初始属性.二觉序号])
|
||
self.二觉图片.resize(28, 28)
|
||
self.二觉图片.move(x + 52, y + 8)
|
||
self.一觉遮罩 = QPushButton(self.main_frame2)
|
||
self.一觉遮罩.resize(38, 50)
|
||
self.一觉遮罩.move(x + 2, y + 5)
|
||
self.一觉遮罩.setStyleSheet(
|
||
"QPushButton{background-color:rgb(0,0,0);border:1px;border-radius:3px;}"
|
||
)
|
||
self.一觉遮罩.setGraphicsEffect(self.一觉遮罩透明度)
|
||
self.一觉遮罩.clicked.connect(lambda state, index=1: self.强化觉醒选择(index))
|
||
self.二觉遮罩 = QPushButton(self.main_frame2)
|
||
self.二觉遮罩.resize(38, 50)
|
||
self.二觉遮罩.move(x + 47, y + 5)
|
||
self.二觉遮罩.setStyleSheet(
|
||
"QPushButton{background-color:rgb(0,0,0);border:1px;border-radius:3px;}"
|
||
)
|
||
self.二觉遮罩.setGraphicsEffect(self.二觉遮罩透明度)
|
||
self.二觉遮罩.clicked.connect(lambda state, index=2: self.强化觉醒选择(index))
|
||
self.武器融合属性A.setEnabled(False)
|
||
self.武器融合属性A1.setEnabled(False)
|
||
self.武器融合属性A2.setEnabled(False)
|
||
self.武器融合属性A.setStyleSheet(下拉框样式)
|
||
self.武器融合属性A1.setStyleSheet(下拉框样式)
|
||
self.武器融合属性A2.setStyleSheet(下拉框样式)
|
||
# 武器融合属性B禁用
|
||
self.武器融合属性B.setEnabled(False)
|
||
self.武器融合属性B1.setEnabled(False)
|
||
self.武器融合属性B2.setEnabled(False)
|
||
self.武器融合属性B.setStyleSheet(下拉框样式)
|
||
self.武器融合属性B1.setStyleSheet(下拉框样式)
|
||
self.武器融合属性B2.setStyleSheet(下拉框样式)
|
||
|
||
def 界面3(self):
|
||
# increase_counter(ga_category="buffer界面", name="基础/细节/修正")
|
||
# 第三个布局界面
|
||
self.main_frame3 = QWidget()
|
||
|
||
self.属性设置输入 = []
|
||
self.技能设置输入 = []
|
||
|
||
宽度 = 43
|
||
|
||
列名称1 = trans(["智力", "体力", "精神"])
|
||
行名称1 = trans([
|
||
"工会属性", "训练官BUFF", "戒指", "婚房", "冒险团", "晶体契约", "收集箱", "勋章", "名称装饰卡",
|
||
"快捷栏纹章", "宠物装备-红", " 宠物装备-蓝 ", " 宠物装备-绿 ", "宠物附魔", "皮肤",
|
||
"站街修正", "进图修正", "登记修正", ''
|
||
])
|
||
|
||
column_count = len(列名称1)
|
||
row_count = len(行名称1)
|
||
|
||
名称 = QLabel(trans("基础细节"), self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
名称.resize(80, 25)
|
||
名称.move(10, 5)
|
||
|
||
for i in range(column_count):
|
||
名称 = QLabel(列名称1[i], self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
名称.resize(宽度, 25)
|
||
名称.move(95 + i * (宽度 + 5), 5)
|
||
|
||
Linelist = [[], [], []]
|
||
|
||
for j in range(row_count):
|
||
名称 = QLabel(行名称1[j], self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
名称.resize(80, 25)
|
||
名称.move(10, 35 + j * 30)
|
||
|
||
for i in range(column_count):
|
||
Linelist[i].append(QLineEdit(self.main_frame3))
|
||
Linelist[i][j].setAlignment(Qt.AlignCenter)
|
||
Linelist[i][j].setStyleSheet(输入框样式)
|
||
if 行名称1[j] != '':
|
||
Linelist[i][j].resize(宽度, 22)
|
||
Linelist[i][j].move(95 + i * (宽度 + 5), 35 + j * 30)
|
||
else:
|
||
Linelist[i][j].resize(0, 0)
|
||
|
||
self.属性设置输入.extend(Linelist)
|
||
|
||
列名称2 = trans(["智力", "体力", "精神", "徽章智", "徽章体", "徽章精", "技能等级及选项"])
|
||
行名称2 = trans([
|
||
"上衣", "下装", "头肩", "腰带", "鞋", "手镯", "项链", "戒指", "左槽", "右槽", "耳环",
|
||
"武器", "BUFF等级补正", "穿戴称号", "穿戴光环", "武器装扮", "时装", "宠物登记补正", "光环登记补正"
|
||
])
|
||
|
||
self.列名称 = 列名称1 + 列名称2
|
||
self.行名称 = 行名称1 + 行名称2
|
||
|
||
名称 = QLabel(trans("附魔&徽章"), self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
名称.resize(80, 25)
|
||
名称.move(7 * 宽度, 5)
|
||
for i in range(7):
|
||
名称 = QLabel(列名称2[i], self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
if i == 6:
|
||
名称.resize(150, 25)
|
||
else:
|
||
名称.resize(宽度, 25)
|
||
名称.move(90 + 7 * 宽度 + i * (宽度 + 5), 5)
|
||
|
||
for j in range(19):
|
||
名称 = QLabel(行名称2[j], self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
名称.resize(80, 25)
|
||
名称.move(7 * 宽度, 35 + j * 30)
|
||
|
||
for i in range(6):
|
||
Linelist = []
|
||
for j in range(19):
|
||
Linelist.append(QLineEdit(self.main_frame3))
|
||
Linelist[j].setAlignment(Qt.AlignCenter)
|
||
Linelist[j].setStyleSheet(输入框样式)
|
||
Linelist[j].resize(宽度, 22)
|
||
Linelist[j].move(90 + 7 * 宽度 + i * (宽度 + 5), 35 + j * 30)
|
||
self.属性设置输入.append(Linelist)
|
||
|
||
for j in range(19):
|
||
self.技能设置输入.append(MyQComboBox(self.main_frame3))
|
||
self.技能设置输入[j].addItem('无')
|
||
self.技能设置输入[j].setStyleSheet(下拉框样式)
|
||
self.技能设置输入[j].resize(150, 22)
|
||
self.技能设置输入[j].move(90 + 7 * 宽度 + 6 * (宽度 + 5), 35 + j * 30)
|
||
|
||
for j in [2, 3, 4]:
|
||
self.技能设置输入[j].addItems(['Lv1-30(主动)Lv+1', 'Lv1-50(主动)Lv+1'])
|
||
|
||
self.技能设置输入[2].addItems(['Lv1-35(主动)Lv+1', 'Lv30-50(主动)Lv+1'])
|
||
self.技能设置输入[3].addItem('Lv30-50(主动)Lv+1')
|
||
|
||
# 白金
|
||
skills = [
|
||
trans('{$name}Lv+1', name=i.名称) for i in self.角色属性A.技能表.values()
|
||
if i.所在等级 < 48
|
||
]
|
||
|
||
for j in [8, 9]:
|
||
self.技能设置输入[j].addItems(skills)
|
||
|
||
self.技能设置输入[12].addItems(
|
||
['BUFFLv+1', 'BUFFLv+2', 'BUFFLv+3', 'BUFFLv+4'])
|
||
self.技能设置输入[13].addItems(['Lv1-50(主动)Lv+1', '一觉Lv+1', '一觉Lv+2'])
|
||
self.技能设置输入[14].addItems([
|
||
'Lv1-30(所有)Lv+1', 'Lv1-50(所有)Lv+1', 'Lv1-20(所有)Lv+1',
|
||
'Lv20-30(所有)Lv+1', 'Lv1-80(所有)Lv+1'
|
||
])
|
||
|
||
skills = [
|
||
trans('{$name}Lv+1', name=i.名称) for i in self.角色属性A.技能表.values()
|
||
if i.所在等级 < 85
|
||
]
|
||
|
||
skills_weapons = [
|
||
trans('{$name}Lv+1', name=i.名称) for i in self.角色属性A.技能表.values()
|
||
if (i.所在等级 in [40, 45, 60, 70, 75, 80] and i.是否主动 == 1)
|
||
]
|
||
|
||
self.技能设置输入[15].addItems(skills_weapons)
|
||
self.技能设置输入[16].addItems(skills)
|
||
|
||
self.技能设置输入[17].addItems(['BUFF力智+3%', 'BUFF三攻+3%', 'BUFF力智、三攻+3%'])
|
||
self.技能设置输入[18].addItem('BUFF力智+3%')
|
||
|
||
if '智力' in self.角色属性A.类型:
|
||
self.修正列表名称 = trans([
|
||
'转职被动智力', 'BUFF力智%', 'BUFF三攻%', '转职被动等级', '一觉被动力智', '一觉力智%',
|
||
'一觉力智'
|
||
])
|
||
else:
|
||
self.修正列表名称 = trans([
|
||
'守护恩赐体精', 'BUFF力智%', 'BUFF三攻%', '守护恩赐等级', '信念光环体精', '一觉力智%',
|
||
'一觉力智'
|
||
])
|
||
|
||
Linelist = []
|
||
for i in range(len(self.修正列表名称)):
|
||
名称 = QLabel(self.修正列表名称[i], self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
名称.resize(90, 25)
|
||
名称.move(170 + 7 * 宽度 + 9 * (宽度 + 5), 35 + i * 30)
|
||
Linelist.append(QLineEdit(self.main_frame3))
|
||
Linelist[i].setAlignment(Qt.AlignCenter)
|
||
Linelist[i].setStyleSheet(输入框样式)
|
||
Linelist[i].resize(60, 25)
|
||
Linelist[i].move(270 + 7 * 宽度 + 9 * (宽度 + 5), 35 + i * 30)
|
||
self.属性设置输入.append(Linelist)
|
||
|
||
count = 0
|
||
self.时装选项 = []
|
||
for i in trans(['头部', '帽子', '脸部', '胸部', '上衣', '腰带', '下装', '鞋']):
|
||
名称 = QLabel(i, self.main_frame3)
|
||
名称.setAlignment(Qt.AlignCenter)
|
||
名称.setStyleSheet(标签样式)
|
||
名称.resize(90, 25)
|
||
名称.move(170 + 7 * 宽度 + 9 * (宽度 + 5), 255 + count * 30)
|
||
self.时装选项.append(MyQComboBox(self.main_frame3))
|
||
self.时装选项[count].addItems(['高级', '节日', '稀有', '神器'])
|
||
self.时装选项[count].resize(60, 22)
|
||
self.时装选项[count].move(270 + 7 * 宽度 + 9 * (宽度 + 5),
|
||
255 + count * 30)
|
||
self.时装选项[count].currentIndexChanged.connect(
|
||
lambda state, index=count: self.时装选项更新(index))
|
||
count += 1
|
||
|
||
self.时装选项.append(MyQComboBox(self.main_frame3))
|
||
self.时装选项[8].addItems(
|
||
format_range("{}[8]", trans(['高级套装', '节日套装', '稀有套装', '神器套装'])))
|
||
self.时装选项[8].resize(160, 22)
|
||
self.时装选项[8].move(170 + 7 * 宽度 + 9 * (宽度 + 5), 260 + count * 30)
|
||
self.时装选项[8].currentIndexChanged.connect(
|
||
lambda state, index=8: self.时装选项更新(index))
|
||
|
||
self.计算按钮3 = QPushButton(trans('开始计算'), self.main_frame3)
|
||
self.计算按钮3.clicked.connect(lambda state: self.计算())
|
||
self.计算按钮3.move(990, 610)
|
||
self.计算按钮3.resize(100, 30)
|
||
self.计算按钮3.setStyleSheet(按钮样式)
|
||
|
||
def 界面5(self):
|
||
# increase_counter(ga_category="buffer界面", name="自选装备计算")
|
||
# 第五个布局
|
||
self.main_frame5 = QWidget()
|
||
标签 = QLabel(trans('单件选择'), self.main_frame5)
|
||
标签.setAlignment(Qt.AlignCenter)
|
||
标签.setStyleSheet(标签样式)
|
||
标签.resize(240, 25)
|
||
标签.move(70, 20)
|
||
|
||
标签 = QLabel(trans('锁定'), self.main_frame5)
|
||
标签.setAlignment(Qt.AlignCenter)
|
||
标签.setStyleSheet(标签样式)
|
||
标签.resize(70, 25)
|
||
标签.move(10, 20)
|
||
|
||
self.图片显示 = []
|
||
|
||
count = 0
|
||
|
||
self.装备锁定 = []
|
||
self.自选装备 = []
|
||
self.自选装备结果 = []
|
||
self.self_selects = []
|
||
|
||
def equips_getter():
|
||
return [i.currentData() for i in self.自选装备]
|
||
|
||
def equips_setter(value):
|
||
self.self_selects = value
|
||
|
||
store.compute("/{type}/memory/equips", equips_getter, equips_setter)
|
||
|
||
for i in 部位列表:
|
||
锁定选择 = QCheckBox(i, self.main_frame5)
|
||
锁定选择.setStyleSheet(复选框样式)
|
||
锁定选择.resize(70, 22)
|
||
锁定选择.move(10, 50 + 30 * count)
|
||
self.装备锁定.append(锁定选择)
|
||
|
||
combo = MyQComboBox(self.main_frame5)
|
||
combo.resize(220, 22)
|
||
combo.move(90, 50 + 30 * count)
|
||
|
||
self.自选装备.append(combo)
|
||
|
||
combo.currentIndexChanged.connect(
|
||
lambda _: store.emit("/{type}/memory/equips"))
|
||
combo.currentIndexChanged.connect(
|
||
lambda index, part=count: self.自选装备更改(part))
|
||
for j in equ.get_equ_list():
|
||
if j.部位 == i:
|
||
if i == '武器':
|
||
if j.类型 in self.角色属性A.武器选项:
|
||
combo.addItem(j.名称)
|
||
else:
|
||
combo.addItem(j.名称)
|
||
count += 1
|
||
|
||
self.计算标识 = 1
|
||
标签 = QLabel(trans('批量选择'), self.main_frame5)
|
||
标签.setAlignment(Qt.AlignCenter)
|
||
标签.setStyleSheet(标签样式)
|
||
标签.resize(160, 25)
|
||
标签.move(330, 20)
|
||
|
||
套装类型 = ['防具', '首饰', '特殊', '上链左', '镯下右', '环鞋指']
|
||
count = 0
|
||
self.自选套装 = []
|
||
for i in 套装类型:
|
||
combo = MyQComboBox(self.main_frame5)
|
||
套装名称 = []
|
||
for j in equ.get_suit_list():
|
||
if j.名称 not in 套装名称 and j.类型 == i:
|
||
套装名称.append(j.名称)
|
||
combo.addItems(套装名称)
|
||
combo.resize(160, 22)
|
||
combo.move(330, 50 + 30 * count)
|
||
combo.activated.connect(
|
||
lambda state, index=count: self.自选套装更改(index))
|
||
self.自选套装.append(combo)
|
||
count += 1
|
||
|
||
self.神话部位选项 = MyQComboBox(self.main_frame5)
|
||
self.神话部位选项.addItems(['神话部位:无', '神话部位:上衣', '神话部位:手镯', '神话部位:耳环'])
|
||
self.神话部位选项.resize(160, 22)
|
||
self.神话部位选项.move(330, 50 + 30 * count)
|
||
self.神话部位选项.activated.connect(lambda state: self.神话部位更改())
|
||
|
||
count += 1
|
||
|
||
self.自选装备栏选项 = MyQComboBox(self.main_frame5)
|
||
|
||
# 自行设定自选装备栏数量,最大值为20,最小值为1,默认为6
|
||
column_count = store.get("/{type}/data/self-select/column-count", 6)
|
||
column_count = min(max(column_count, 1), 20)
|
||
|
||
self.last_select_column = 0
|
||
|
||
for i in range(column_count):
|
||
self.自选装备栏选项.addItem('{}:{}'.format(trans('自选装备栏'), i))
|
||
self.自选装备栏选项.setCurrentIndex(-1)
|
||
self.自选装备栏选项.resize(160, 22)
|
||
self.自选装备栏选项.move(330, 50 + 30 * count)
|
||
self.自选装备栏选项.activated.connect(lambda state: self.自选装备栏更改(state))
|
||
|
||
count += 1
|
||
# 一键修正按钮添加
|
||
self.一键站街设置输入.append(QLineEdit(self.main_frame5))
|
||
self.一键站街设置输入[1].setAlignment(Qt.AlignCenter)
|
||
self.一键站街设置输入[1].setStyleSheet(输入框样式)
|
||
self.一键站街设置输入[1].resize(45, 24)
|
||
self.一键站街设置输入[1].move(330, 50 + 30 * count)
|
||
|
||
self.一键修正按钮 = QPushButton(trans('一键修正'), self.main_frame5)
|
||
self.一键修正按钮.clicked.connect(lambda state: self.一键修正(1))
|
||
self.一键修正按钮.move(330 + 60, 50 + 30 * count)
|
||
self.一键修正按钮.resize(80, 24)
|
||
self.一键修正按钮.setStyleSheet(按钮样式)
|
||
|
||
标签 = QLabel(trans('辟邪玉提升率(理论值仅供参考)'), self.main_frame5)
|
||
标签.setAlignment(Qt.AlignCenter)
|
||
标签.setStyleSheet(标签样式)
|
||
标签.resize(200, 25)
|
||
标签.move(525, 20)
|
||
|
||
self.辟邪玉提升率1 = []
|
||
self.辟邪玉提升率2 = []
|
||
count = 0
|
||
for i in 辟邪玉列表:
|
||
if i.名称 != '无':
|
||
if i.间隔 < 1:
|
||
temp = trans(i.名称) + '+' + str(i.最大值) + '%'
|
||
else:
|
||
temp = trans(i.名称) + '+' + str(i.最大值)
|
||
self.辟邪玉提升率1.append(QLabel(temp, self.main_frame5))
|
||
self.辟邪玉提升率1[count].setAlignment(Qt.AlignCenter)
|
||
self.辟邪玉提升率1[count].setStyleSheet(标签样式)
|
||
self.辟邪玉提升率1[count].resize(180, 25)
|
||
self.辟邪玉提升率1[count].move(500, 50 + 30 * count)
|
||
self.辟邪玉提升率2.append(QLabel('0.00%', self.main_frame5))
|
||
self.辟邪玉提升率2[count].setAlignment(Qt.AlignCenter)
|
||
self.辟邪玉提升率2[count].setStyleSheet(标签样式)
|
||
self.辟邪玉提升率2[count].resize(60, 25)
|
||
self.辟邪玉提升率2[count].move(690, 50 + 30 * count)
|
||
count += 1
|
||
|
||
初始x = 805
|
||
初始y = 20
|
||
图片显示 = QLabel(self.main_frame5)
|
||
图片显示.setPixmap(self.输出背景图片)
|
||
图片显示.setAlignment(Qt.AlignTop)
|
||
图片显示.resize(268, 546)
|
||
图片显示.move(初始x, 初始y + 11)
|
||
人物 = QLabel(self.main_frame5)
|
||
图片 = QPixmap('./ResourceFiles/' + self.角色属性A.实际名称 + "/人物.png")
|
||
人物.setPixmap(图片)
|
||
人物.move(初始x + 90 + int(45 - 图片.width() / 2), 初始y + 40)
|
||
人物.resize(90, 90)
|
||
人物.setAlignment(Qt.AlignTop)
|
||
|
||
self.提升率显示 = QLabel(self.main_frame5)
|
||
self.提升率显示.setStyleSheet(
|
||
"QLabel{color:rgb(255,255,255);font-size:25px}")
|
||
self.提升率显示.resize(250, 36)
|
||
self.提升率显示.move(初始x + 10, 初始y + 517)
|
||
self.提升率显示.setAlignment(Qt.AlignCenter)
|
||
|
||
偏移量 = 187
|
||
x坐标 = [
|
||
32, 0, 0, 32, 0, 偏移量, 偏移量 + 32, 偏移量 + 32, 偏移量, 偏移量, 偏移量 + 32, 32
|
||
]
|
||
y坐标 = [0, 0, 32, 32, 64, 0, 0, 32, 64, 32, 64, 64]
|
||
|
||
for i in range(12):
|
||
self.图片显示.append(QLabel(self.main_frame5))
|
||
self.图片显示[i].setMovie(equ.get_img_by_name(self.self_selects[i]))
|
||
self.图片显示[i].resize(26, 26)
|
||
self.图片显示[i].move(初始x + 10 + x坐标[i], 初始y + 31 + y坐标[i])
|
||
self.图片显示[i].setAlignment(Qt.AlignCenter)
|
||
|
||
self.面板显示 = []
|
||
for i in range(11):
|
||
self.面板显示.append(QLabel(self.main_frame5))
|
||
const = 139
|
||
self.面板显示[0].move(初始x + 20, 初始y + const + 10)
|
||
|
||
const += 36
|
||
count = 0
|
||
for i in [2, 3, 4, 5, 6, 7]:
|
||
self.面板显示[i].move(初始x + 20, 初始y + const + count * 18)
|
||
count += 1
|
||
|
||
count = 0
|
||
for i in [8, 9, 10]:
|
||
self.面板显示[i].move(初始x + 155, 初始y + const + count * 18)
|
||
count += 1
|
||
|
||
for i in range(len(self.面板显示)):
|
||
self.面板显示[i].setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
self.面板显示[i].resize(100, 18)
|
||
self.面板显示[i].setAlignment(Qt.AlignLeft if i not in
|
||
[2, 8] else Qt.AlignCenter)
|
||
|
||
self.词条显示 = []
|
||
for i in range(12):
|
||
self.词条显示.append(QLabel(self.main_frame5))
|
||
|
||
j = 315 + 初始y
|
||
for i in self.词条显示:
|
||
i.setStyleSheet("QLabel{font-size:12px;color:rgb(104,213,237)}")
|
||
i.move(8 + 初始x, j)
|
||
i.resize(300, 18)
|
||
i.setAlignment(Qt.AlignLeft)
|
||
j += 18
|
||
|
||
# self.总伤害 = QLabel(self.main_frame5)
|
||
# self.总伤害.setStyleSheet("QLabel{color:rgb(255,255,255);font-size:25px}")
|
||
# self.总伤害.resize(600, 36)
|
||
# self.总伤害.move(200, 517 + 初始y)
|
||
# self.总伤害.setAlignment(Qt.AlignCenter)
|
||
|
||
self.套装名称显示 = []
|
||
for i in range(9):
|
||
self.套装名称显示.append(QLabel(self.main_frame5))
|
||
self.套装名称显示[i].move(132 + 初始x, 138 + 180 + 20 * i + 初始y)
|
||
self.套装名称显示[i].resize(132, 18)
|
||
self.套装名称显示[i].setAlignment(Qt.AlignCenter)
|
||
|
||
自选计算按钮 = QPushButton(trans('查看详情'), self.main_frame5)
|
||
自选计算按钮.clicked.connect(lambda state: self.自选计算())
|
||
自选计算按钮.move(995, 610)
|
||
自选计算按钮.resize(80, 28)
|
||
自选计算按钮.setStyleSheet(按钮样式)
|
||
|
||
self.基准值 = []
|
||
|
||
设置基准值 = QPushButton(trans('设为基准'), self.main_frame5)
|
||
设置基准值.clicked.connect(lambda state: self.基准值设置())
|
||
设置基准值.move(900, 610)
|
||
设置基准值.resize(80, 28)
|
||
设置基准值.setStyleSheet(按钮样式)
|
||
|
||
清空基准值 = QPushButton(trans('清空基准'), self.main_frame5)
|
||
清空基准值.clicked.connect(lambda state: self.基准值设置(1))
|
||
清空基准值.move(805, 610)
|
||
清空基准值.resize(80, 28)
|
||
清空基准值.setStyleSheet(按钮样式)
|
||
|
||
换装选项 = QCheckBox(trans('启用登记'), self.main_frame5)
|
||
|
||
换装选项.toggled.connect(lambda checked: self.启用换装登记(checked))
|
||
换装选项.move(320, 340)
|
||
换装选项.resize(70, 28)
|
||
换装选项.setStyleSheet(复选框样式)
|
||
|
||
换装设置 = QPushButton(trans('登记设置'), self.main_frame5)
|
||
换装设置.clicked.connect(lambda _: self.换装设置())
|
||
换装设置.move(390, 340)
|
||
换装设置.resize(80, 28)
|
||
换装设置.setStyleSheet(按钮样式)
|
||
|
||
名望设置 = QPushButton('名望细节', self.main_frame5)
|
||
名望设置.clicked.connect(lambda _: self.名望设置())
|
||
名望设置.move(710, 610)
|
||
名望设置.resize(80, 28)
|
||
名望设置.setStyleSheet(按钮样式)
|
||
|
||
def 名望设置(self):
|
||
increase_counter(ga_category="buffer详细功能使用", name="名望")
|
||
|
||
def createClient():
|
||
store.set("/fame/temp/property", self)
|
||
# 设置图标和背景 临时做法
|
||
store.const("/app/window/icon", self.icon)
|
||
store.const("/app/window/background_image", self.主背景图片)
|
||
store.watch("/fame/event/changed", lambda _, : self.自选计算(1))
|
||
client = 名望窗口()
|
||
client.初始化()
|
||
return client
|
||
|
||
DefaultDialogRegister.showDialog("base_fame({})".format(type(self)),
|
||
createClient, self)
|
||
|
||
def 自选装备栏更改(self, index):
|
||
if self.计算标识 == 0:
|
||
return
|
||
|
||
self.计算标识 = 0
|
||
|
||
data = store.get("/{type}/data/self_select/equips", [])
|
||
length = len(self.自选装备)
|
||
column_index = store.get("/{type}/data/self_select/column_index")
|
||
|
||
defaultData = [0] * length
|
||
|
||
while column_index >= len(data):
|
||
data.append(defaultData)
|
||
|
||
if column_index != index:
|
||
data[column_index] = [i.currentIndex() for i in self.自选装备]
|
||
|
||
column = data[index] if index < len(data) else defaultData
|
||
for i in range(length):
|
||
self.自选装备[i].setCurrentIndex(column[i])
|
||
store.set("/{type}/data/self_select/column_index", index)
|
||
store.set("/{type}/data/self_select/equips", data)
|
||
|
||
self.计算标识 = 1
|
||
self.自选计算(1)
|
||
|
||
def 启用换装登记(self, checked):
|
||
self.登记启用 = checked
|
||
self.自选计算(1)
|
||
|
||
def 换装设置(self):
|
||
increase_counter(ga_category="buffer详细功能使用", name="切装")
|
||
|
||
def createClient():
|
||
store.compute("/{type}/temp/property_a", lambda: self.角色属性A)
|
||
# 换装更新事件
|
||
store.watch("/{type}/event/register_changed",
|
||
lambda _, : self.自选计算(1))
|
||
# 设置图标和背景 临时做法
|
||
store.const("/app/window/icon", self.icon)
|
||
store.const("/app/window/background_image", self.主背景图片)
|
||
client = 登记窗口()
|
||
client.初始化()
|
||
return client
|
||
|
||
DefaultDialogRegister.showDialog("panel({})".format(type(self)),
|
||
createClient, self)
|
||
|
||
def 时装选项更新(self, index):
|
||
if index == 8:
|
||
count = 0
|
||
for i in self.时装选项:
|
||
if count != 8:
|
||
i.setCurrentIndex(self.时装选项[8].currentIndex())
|
||
count += 1
|
||
return
|
||
else:
|
||
智力, 体力, 精神 = 0, 0, 0
|
||
套装字典 = {'高级': 0, '节日': 0, '稀有': 0, '神器': 0}
|
||
for i in range(8):
|
||
套装字典[self.时装选项[i].currentData()] = 套装字典.get(
|
||
self.时装选项[i].currentData(), 0) + 1
|
||
# 套装属性
|
||
神器 = 套装字典['神器']
|
||
稀有 = 套装字典['稀有'] + 神器
|
||
if 套装字典['高级'] >= 3:
|
||
智力 += 10
|
||
体力 += 10
|
||
精神 += 10
|
||
if 稀有 >= 3 and 神器 < 3:
|
||
智力 += 40
|
||
体力 += 40
|
||
精神 += 40
|
||
if 套装字典['神器'] >= 3:
|
||
智力 += 50
|
||
体力 += 50
|
||
精神 += 50
|
||
if 套装字典['高级'] >= 8:
|
||
智力 += 10
|
||
体力 += 10
|
||
精神 += 10
|
||
if 套装字典['节日'] >= 8:
|
||
智力 += 25
|
||
体力 += 25
|
||
精神 += 25
|
||
if 稀有 >= 8 and 神器 < 8:
|
||
智力 += 40
|
||
体力 += 40
|
||
精神 += 40
|
||
if 套装字典['神器'] >= 8:
|
||
智力 += 50
|
||
体力 += 50
|
||
精神 += 50
|
||
数据 = [45, 45, 55, 65]
|
||
智力 += 数据[self.时装选项[0].currentIndex()] # 头部
|
||
精神 += 数据[self.时装选项[0].currentIndex()] # 头部
|
||
智力 += 数据[self.时装选项[1].currentIndex()] # 帽子
|
||
精神 += 数据[self.时装选项[1].currentIndex()] # 帽子
|
||
数据 = [0, 0, 55, 65]
|
||
体力 += 数据[self.时装选项[5].currentIndex()] # 腰带
|
||
数据 = [45, 45, 55, 65]
|
||
体力 += 数据[self.时装选项[7].currentIndex()] # 鞋子
|
||
|
||
数据 = [0, 20, 0, 0]
|
||
智力 += 数据[self.时装选项[6].currentIndex()] # 下装
|
||
体力 += 数据[self.时装选项[6].currentIndex()] # 下装
|
||
精神 += 数据[self.时装选项[6].currentIndex()] # 下装
|
||
|
||
self.属性设置输入[3][16].setText(str(智力))
|
||
self.属性设置输入[4][16].setText(str(体力))
|
||
self.属性设置输入[5][16].setText(str(精神))
|
||
|
||
def 希洛克武器选择更新(self):
|
||
if self.希洛克武器选择.currentIndex() != 2:
|
||
# 武器融合属性A禁用
|
||
self.武器融合属性A.setEnabled(False)
|
||
self.武器融合属性A1.setEnabled(False)
|
||
self.武器融合属性A2.setEnabled(False)
|
||
self.武器融合属性A.setStyleSheet(下拉框样式)
|
||
self.武器融合属性A1.setStyleSheet(下拉框样式)
|
||
self.武器融合属性A2.setStyleSheet(下拉框样式)
|
||
# 武器融合属性B禁用
|
||
self.武器融合属性B.setEnabled(False)
|
||
self.武器融合属性B1.setEnabled(False)
|
||
self.武器融合属性B2.setEnabled(False)
|
||
self.武器融合属性B.setStyleSheet(下拉框样式)
|
||
self.武器融合属性B1.setStyleSheet(下拉框样式)
|
||
self.武器融合属性B2.setStyleSheet(下拉框样式)
|
||
else:
|
||
# 武器融合属性A启用
|
||
self.武器融合属性A.setEnabled(True)
|
||
self.武器融合属性A1.setEnabled(True)
|
||
self.武器融合属性A2.setEnabled(True)
|
||
self.武器融合属性A.setStyleSheet(下拉框样式)
|
||
self.武器融合属性A1.setStyleSheet(下拉框样式)
|
||
self.武器融合属性A2.setStyleSheet(下拉框样式)
|
||
# 武器融合属性B启用
|
||
self.武器融合属性B.setEnabled(True)
|
||
self.武器融合属性B1.setEnabled(True)
|
||
self.武器融合属性B2.setEnabled(True)
|
||
self.武器融合属性B.setStyleSheet(下拉框样式)
|
||
self.武器融合属性B1.setStyleSheet(下拉框样式)
|
||
self.武器融合属性B2.setStyleSheet(下拉框样式)
|
||
|
||
def 调整觉醒择优方向(self, index):
|
||
if index < 1:
|
||
self.觉醒择优系数.setVisible(True)
|
||
else:
|
||
self.觉醒择优系数.setVisible(False)
|
||
self.觉醒择优系数.setCurrentText(str(1.0 if index > 1 else 0.7))
|
||
|
||
def 希洛克武器随机词条更新(self, index, x=0):
|
||
if x == 0:
|
||
self.武器融合属性A1.clear()
|
||
self.武器融合属性A2.clear()
|
||
|
||
if index == 0:
|
||
return
|
||
|
||
属性A = 武器属性A列表[index]
|
||
|
||
for item in 属性A.range():
|
||
self.武器融合属性A2.addItem(item)
|
||
self.武器融合属性A1.addItem(属性A.随机属性描述)
|
||
|
||
elif x == 1:
|
||
self.武器融合属性B1.clear()
|
||
self.武器融合属性B2.clear()
|
||
|
||
if index == 0:
|
||
return
|
||
|
||
属性B = 武器属性B列表[index]
|
||
|
||
for item in 属性B.range():
|
||
self.武器融合属性B2.addItem(item)
|
||
self.武器融合属性B1.addItem(属性B.随机属性描述)
|
||
|
||
def 黑鸦词条更新(self, index):
|
||
if self.黑鸦词条选项[index][0].currentIndex() < 2:
|
||
for i in range(1, 4):
|
||
self.黑鸦词条选项[index][i].setEnabled(False)
|
||
self.黑鸦词条选项[index][i].setStyleSheet(下拉框样式)
|
||
elif index == 0 and self.黑鸦词条选项[index][0].currentIndex() == 3:
|
||
for i in range(1, 4):
|
||
self.黑鸦词条选项[0][i].setEnabled(False)
|
||
self.黑鸦词条选项[0][i].setStyleSheet(下拉框样式)
|
||
else:
|
||
for i in range(1, 4):
|
||
self.黑鸦词条选项[index][i].setEnabled(True)
|
||
self.黑鸦词条选项[index][i].setStyleSheet(下拉框样式)
|
||
|
||
def 黑鸦随机词条更新(self, i, x=0):
|
||
index = self.黑鸦词条选项[i][1].currentIndex()
|
||
self.黑鸦词条选项[i][2].clear()
|
||
self.黑鸦词条选项[i][3].clear()
|
||
if index == 0:
|
||
return
|
||
|
||
装备属性 = 武器变换属性列表[index] if x == 0 else 装备变换属性列表[index]
|
||
temp = 装备属性.最大值
|
||
while temp >= 装备属性.最小值:
|
||
if 装备属性.间隔 / 10 >= 1:
|
||
self.黑鸦词条选项[i][3].addItem(str(int(temp)))
|
||
else:
|
||
self.黑鸦词条选项[i][3].addItem(str(temp) + '%')
|
||
temp -= 装备属性.间隔
|
||
self.黑鸦词条选项[i][2].addItem(装备属性.随机属性描述)
|
||
|
||
def BUFF次数输入填写(self, x, skill=None):
|
||
if self.次数输入[x].currentIndex() == 2:
|
||
self.次数输入[x].setEditable(True)
|
||
self.次数输入[x].clearEditText()
|
||
self.次数输入[x].setStyleSheet(下拉框样式)
|
||
else:
|
||
self.次数输入[x].setEditable(False)
|
||
|
||
def 批量选择(self, index):
|
||
if index == 1:
|
||
if self.全选状态 == 1:
|
||
self.全选状态 = 0
|
||
else:
|
||
self.全选状态 = 1
|
||
if sum(self.装备选择状态[74:244]) == 170:
|
||
self.批量选择(0)
|
||
|
||
for i in equ.get_equ_list():
|
||
if i.部位 != '武器':
|
||
if i.品质 != '神话' or index == 0 or self.全选状态 == 0:
|
||
self.装备图标点击事件(equ.get_id_by_name(i.名称), index, x=0)
|
||
elif i.类型 in self.角色属性A.武器选项:
|
||
self.装备图标点击事件(equ.get_id_by_name(i.名称), index, x=0)
|
||
|
||
self.装备图标点击事件(74, index)
|
||
|
||
def 基准值设置(self, x=0):
|
||
self.基准值.clear()
|
||
if x == 0:
|
||
A = deepcopy(self.初始属性)
|
||
self.输入属性(A)
|
||
A.穿戴装备(self.self_selects)
|
||
|
||
self.关闭排行窗口()
|
||
self.排行数据.clear()
|
||
self.排行数据.append(self.self_selects + [0] + A.套装栏 + ['无'])
|
||
self.输出界面(0, '基准值', 自选计算模式=True)
|
||
self.基准值 = deepcopy(self.自选计算数据)
|
||
self.自选计算(1)
|
||
|
||
def 载入配置(self, path='set'):
|
||
filepath = './ResourceFiles/{}/{}/'.format(self.角色属性A.实际名称, path)
|
||
if os.path.exists(os.path.join(
|
||
filepath, "page_1.json")) or os.path.exists(
|
||
os.path.join(filepath, "store.json")):
|
||
self.载入json(path)
|
||
return
|
||
else:
|
||
# 如果不存在任何存档则载入重置存档
|
||
self.载入json(path='reset')
|
||
|
||
def 设置技能选项(self, num, info):
|
||
|
||
try:
|
||
self.等级调整[num].setCurrentIndex(info['level'])
|
||
except Exception as e:
|
||
logger.error(e)
|
||
pass
|
||
|
||
try:
|
||
self.次数输入[num].setCurrentIndex(info['count'])
|
||
except Exception as e:
|
||
logger.error(e)
|
||
|
||
def 获取技能选项(self, num):
|
||
info = {}
|
||
try:
|
||
info['level'] = self.等级调整[num].currentIndex()
|
||
except Exception as e:
|
||
info['level'] = 0
|
||
logger.error(e)
|
||
|
||
try:
|
||
info['count'] = self.次数输入[num].currentIndex()
|
||
except Exception as e:
|
||
info['count'] = 0
|
||
logger.error(e)
|
||
return info
|
||
|
||
def 载入旧版json(self, path='set', page=[0, 1, 2, 3, 4]):
|
||
filepath = './ResourceFiles/{}/{}'.format(self.角色属性A.实际名称, path)
|
||
|
||
if 0 in page:
|
||
# 第一页(装备/选择/打造)
|
||
try:
|
||
filename = 'page_1.json'
|
||
set_data = {}
|
||
with open(os.path.join(filepath, filename),
|
||
encoding='utf-8') as fp:
|
||
set_data = json.load(fp)
|
||
fp.close()
|
||
store.set("/{type}/data/title", set_data['称号'])
|
||
store.set("/{type}/data/pet", set_data['宠物'])
|
||
store.set('/{type}/data/compute_mode', set_data["计算模式"])
|
||
store.set('/{type}/data/ditto_checked', set_data["百变怪"])
|
||
store.set('/{type}/data/myth_top_checked', set_data['神话排名勾选'])
|
||
store.set('/{type}/data/awakening_switch_checked',
|
||
set_data['切装模式选项'])
|
||
store.set('/{type}/data/thread_count', set_data['线程数量'])
|
||
store.set("/{type}/data/equip_checked", set_data['装备勾选'])
|
||
store.set("/{type}/data/equip_forges", set_data['装备打造'])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 1 in page:
|
||
# 第二页(技能/符文/药剂)
|
||
try:
|
||
filename = 'page_2.json'
|
||
set_data = {}
|
||
with open(os.path.join(filepath, filename),
|
||
encoding='utf-8') as fp:
|
||
set_data = json.load(fp)
|
||
fp.close()
|
||
|
||
store.set("/{type}/data/awakening_binding", set_data['觉醒选择'])
|
||
store.set("/{type}/data/talismans", set_data['护石栏'])
|
||
store.set("/{type}/data/consumables", set_data['药剂勾选'])
|
||
|
||
skills = {}
|
||
技能选项 = set_data['技能选项']
|
||
for key in 技能选项.keys():
|
||
skills[key] = {
|
||
'level': 技能选项[key]['等级'],
|
||
'count': 技能选项[key]['次数']
|
||
}
|
||
store.set("/{type}/data/skill", skills)
|
||
|
||
store.set("/{type}/data/weapon_fusion", [
|
||
set_data['武器融合属性A'], set_data['武器融合属性A2'],
|
||
set_data['武器融合属性B'], set_data['武器融合属性B2']
|
||
])
|
||
store.set("/{type}/data/siroco_weapon", set_data['希洛克武器选择'])
|
||
store.set("/{type}/data/jude_effects", set_data['辟邪玉效果'])
|
||
store.set('/{type}/data/jude_values', set_data['辟邪玉数值'])
|
||
store.set('/{type}/data/top_options', set_data['排行选项'])
|
||
store.set('/{type}/data/black_purgatory', set_data['黑鸦选择'])
|
||
if '希洛克选择' in set_data:
|
||
store.set('/{type}/data/siroco', set_data['希洛克选择'])
|
||
if '奥兹玛选择' in set_data:
|
||
store.set('/{type}/data/ozma', set_data['奥兹玛选择'])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 2 in page:
|
||
# 第三页(基础/细节/修正)
|
||
try:
|
||
filename = 'page_3.json'
|
||
set_data = {}
|
||
with open(os.path.join(filepath, filename),
|
||
encoding='utf-8') as fp:
|
||
set_data = json.load(fp)
|
||
fp.close()
|
||
|
||
store.set("/{type}/data/avatar", set_data['时装选项'])
|
||
store.set("/{type}/data/detail_values", set_data['细节数值'])
|
||
store.set("/{type}/data/detail_options", set_data['细节选项'])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 3 in page:
|
||
# 第四页(神话属性修正)
|
||
try:
|
||
filename = 'page_4.json'
|
||
set_data = {}
|
||
with open(os.path.join(filepath, filename),
|
||
encoding='utf-8') as fp:
|
||
set_data = json.load(fp)
|
||
fp.close()
|
||
store.set("/{type}/data/myth_properties", set_data['神话属性修正'])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
if 4 in page:
|
||
# 第五页(自选装备计算)
|
||
try:
|
||
filename = 'page_5.json'
|
||
set_data = {}
|
||
with open(os.path.join(filepath, filename),
|
||
encoding='utf-8') as fp:
|
||
set_data = json.load(fp)
|
||
fp.close()
|
||
store.set("/{type}/data/self_select/equips",
|
||
[set_data['自选装备']])
|
||
store.set("/{type}/data/self_select/column_index", 0)
|
||
store.set("/{type}/data/self_select/locked", set_data['装备锁定'])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
def 载入json(self, path='set', page=[0, 1, 2, 3, 4]):
|
||
|
||
filepath = './ResourceFiles/{}/{}'.format(self.角色属性A.实际名称, path)
|
||
|
||
filename = os.path.join(filepath, "store.json")
|
||
|
||
if os.path.exists(filename):
|
||
try:
|
||
set_data = {}
|
||
with open(filename, encoding='utf-8') as fp:
|
||
set_data = json.load(fp)
|
||
fp.close()
|
||
store.imports(set_data)
|
||
except Exception as error:
|
||
logger.error(error)
|
||
else:
|
||
self.载入旧版json(path, page)
|
||
|
||
if 0 in page:
|
||
try:
|
||
self.称号.setCurrentIndex(store.get("/{type}/data/title", 0))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.宠物.setCurrentIndex(store.get("/{type}/data/pet", 0))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.计算模式选择.setCurrentIndex(
|
||
store.get("/{type}/data/compute_mode", 1))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.百变怪选项.setChecked(
|
||
store.get("/{type}/data/ditto_checked", 1))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.神话排名选项.setChecked(
|
||
store.get("/{type}/data/myth_top_checked", 0))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.切装模式选项.setChecked(
|
||
store.get("/{type}/data/awakening_switch_checked", 1))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.线程数选择.setCurrentIndex(
|
||
store.get("/{type}/data/thread_count", 12))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
try:
|
||
self.批量选择(0)
|
||
num = 0
|
||
data = store.get("/{type}/data/equip_checked", [])
|
||
for i in data:
|
||
if i == 1:
|
||
self.装备图标点击事件(num, 1)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
num = 0
|
||
data = store.get("/{type}/data/equip_forges", [])
|
||
for i in data:
|
||
self.装备打造选项[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 1 in page:
|
||
try:
|
||
try:
|
||
self.强化觉醒选择(store.get('/{type}/data/awakening_binding'))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
num = 0
|
||
data = store.get('/{type}/data/talismans')
|
||
|
||
for i in data:
|
||
self.护石栏[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
num = 0
|
||
data = store.get('/{type}/data/consumables')
|
||
for i in data:
|
||
self.复选框列表[num].setChecked(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
data = store.get('/{type}/data/skill', {})
|
||
|
||
num = 0
|
||
for skill in self.角色属性A.技能表.values():
|
||
try:
|
||
self.设置技能选项(num, data[skill.名称])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
num += 1
|
||
try:
|
||
self.觉醒择优系数.setCurrentText(
|
||
str(
|
||
store.get("/{type}/data/awakening_coefficient",
|
||
1.0)))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
try:
|
||
self.觉醒择优方向.setCurrentIndex(
|
||
store.get("/{type}/data/awakening_direction", 0))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
data = store.get('/{type}/data/weapon_fusion', [0, 0, 0, 0])
|
||
|
||
try:
|
||
self.武器融合属性A.setCurrentIndex(data[0])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.武器融合属性A2.setCurrentIndex(data[1])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.武器融合属性B.setCurrentIndex(data[2])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
self.武器融合属性B2.setCurrentIndex(data[3])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
try:
|
||
self.希洛克武器选择.setCurrentIndex(
|
||
store.get('/{type}/data/siroco_weapon'))
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
data = store.get('/{type}/data/jude_effects')
|
||
num = 0
|
||
for i in data:
|
||
self.辟邪玉选择[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
data = store.get('/{type}/data/jude_values')
|
||
num = 0
|
||
for i in data:
|
||
self.辟邪玉数值[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
data = store.get('/{type}/data/top_options')
|
||
num = 0
|
||
for i in data:
|
||
self.排行选项[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
data = store.get('/{type}/data/black_purgatory')
|
||
x = 0
|
||
for i in data:
|
||
y = 0
|
||
for j in i:
|
||
self.黑鸦词条选项[x][y].setCurrentIndex(j)
|
||
y += 1
|
||
x += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
data = store.get("/{type}/data/siroco", [0] * 15)
|
||
self.希洛克选择(0, 1)
|
||
num = 0
|
||
for i in data:
|
||
if i == 1:
|
||
self.希洛克选择(num)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
data = store.get("/{type}/data/ozma", [0] * 25)
|
||
self.奥兹玛选择(0, 1)
|
||
num = 0
|
||
for i in data:
|
||
if i == 1:
|
||
self.奥兹玛选择(num)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
except Exception as error:
|
||
logger.error(error)
|
||
if 2 in page:
|
||
try:
|
||
try:
|
||
num = 0
|
||
data = store.get("/{type}/data/avatar")
|
||
for i in data:
|
||
self.时装选项[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
x = 0
|
||
data = store.get("/{type}/data/detail_values")
|
||
for i in data:
|
||
y = 0
|
||
for j in i:
|
||
try:
|
||
self.属性设置输入[x][y].setText(j)
|
||
except Exception as e:
|
||
logger.error(e)
|
||
y += 1
|
||
x += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
try:
|
||
num = 0
|
||
data = store.get("/{type}/data/detail_options")
|
||
for i in data:
|
||
self.技能设置输入[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 3 in page:
|
||
try:
|
||
num = 0
|
||
data = store.get("/{type}/data/myth_properties")
|
||
for i in data:
|
||
self.神话属性选项[num].setCurrentIndex(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
if 4 in page:
|
||
try:
|
||
try:
|
||
num = 0
|
||
index = store.get('/{type}/data/self_select/column_index',
|
||
0)
|
||
self.自选装备栏选项.setCurrentIndex(index)
|
||
self.自选装备栏更改(index)
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
try:
|
||
num = 0
|
||
data = store.get('/{type}/data/self_select/locked')
|
||
for i in data:
|
||
self.装备锁定[num].setChecked(i)
|
||
num += 1
|
||
except Exception as error:
|
||
logger.error(error)
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
def 奥兹玛选择(self, index, x=0):
|
||
super().奥兹玛选择(index, x)
|
||
store.emit("/{type}/data/ozma")
|
||
|
||
def 希洛克选择(self, index, x=0):
|
||
super().希洛克选择(index, x)
|
||
store.emit("/{type}/data/siroco")
|
||
|
||
def exports_store(self, page=[0, 1, 2, 3, 4]):
|
||
if 0 in page:
|
||
# 第一页(装备/选择/打造)
|
||
try:
|
||
store.set('/{type}/data/title', self.称号.currentIndex())
|
||
store.set("/{type}/memory/title", self.称号.currentData())
|
||
store.set('/{type}/data/pet', self.宠物.currentIndex())
|
||
store.set('/{type}/memory/pet', self.宠物.currentData())
|
||
store.set('/{type}/data/compute_mode',
|
||
self.计算模式选择.currentIndex())
|
||
store.set('/{type}/data/ditto_checked', self.百变怪选项.isChecked())
|
||
|
||
store.set('/{type}/data/myth_top_checked',
|
||
self.神话排名选项.isChecked())
|
||
store.set('/{type}/data/awakening_switch_checked',
|
||
self.切装模式选项.isChecked())
|
||
store.set('/{type}/data/thread_count',
|
||
self.线程数选择.currentIndex())
|
||
store.set('/{type}/data/equip_checked', self.装备选择状态)
|
||
store.set('/{type}/data/equip_forges',
|
||
[i.currentIndex() for i in self.装备打造选项])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 1 in page:
|
||
# 第二页(技能/符文/药剂)
|
||
try:
|
||
|
||
store.set('/{type}/data/awakening_binding', self.觉醒选择状态)
|
||
store.set('/{type}/data/talismans',
|
||
[i.currentIndex() for i in self.护石栏])
|
||
store.set('/{type}/data/consumables',
|
||
[i.isChecked() for i in self.复选框列表])
|
||
|
||
skills = {}
|
||
num = 0
|
||
for skill in self.角色属性A.技能表.values():
|
||
skills[skill.名称] = self.获取技能选项(num)
|
||
num += 1
|
||
store.set('/{type}/data/skill', skills)
|
||
|
||
data = [
|
||
self.武器融合属性A.currentIndex(),
|
||
self.武器融合属性A2.currentIndex(),
|
||
self.武器融合属性B.currentIndex(),
|
||
self.武器融合属性B2.currentIndex(),
|
||
]
|
||
|
||
store.set("/{type}/data/weapon_fusion", data)
|
||
|
||
store.set("/{type}/data/siroco_weapon",
|
||
self.希洛克武器选择.currentIndex())
|
||
|
||
store.set("/{type}/data/jude_effects",
|
||
[i.currentIndex() for i in self.辟邪玉选择])
|
||
store.set("/{type}/data/jude_values",
|
||
[i.currentIndex() for i in self.辟邪玉数值])
|
||
|
||
store.set("/{type}/data/black_purgatory",
|
||
[[j.currentIndex() for j in i] for i in self.黑鸦词条选项])
|
||
|
||
store.set("/{type}/data/top_options",
|
||
[i.currentIndex() for i in self.排行选项])
|
||
|
||
store.set("/{type}/data/awakening_coefficient",
|
||
float(self.觉醒择优系数.currentText()))
|
||
store.set("/{type}/data/awakening_direction",
|
||
self.觉醒择优方向.currentIndex())
|
||
store.set("/{type}/data/siroco", self.希洛克选择状态)
|
||
store.set("/{type}/data/ozma", self.奥兹玛选择状态)
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 2 in page:
|
||
# 第三页(基础/细节/修正)
|
||
try:
|
||
# 时装选项
|
||
store.set("/{type}/data/avatar",
|
||
[i.currentIndex() for i in self.时装选项])
|
||
store.set("/{type}/memory/avatar",
|
||
[i.currentData() for i in self.时装选项])
|
||
# 细节数值
|
||
store.set("/{type}/data/detail_values",
|
||
[[j.text() for j in i] for i in self.属性设置输入])
|
||
# 细节选项
|
||
store.set("/{type}/data/detail_options",
|
||
[i.currentIndex() for i in self.技能设置输入])
|
||
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 3 in page:
|
||
# 第四页(神话属性修正)
|
||
try:
|
||
# 神话属性修正
|
||
store.set("/{type}/data/myth_properties",
|
||
[i.currentIndex() for i in self.神话属性选项])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
if 4 in page:
|
||
# 第五页(自选装备计算)
|
||
try:
|
||
data = store.get("/{type}/data/self_select/equips", [])
|
||
column_index = self.自选装备栏选项.currentIndex()
|
||
length = len(self.自选装备)
|
||
while column_index >= len(data):
|
||
data.append([0] * length)
|
||
|
||
data[column_index] = [i.currentIndex() for i in self.自选装备]
|
||
|
||
store.set("/{type}/data/self_select/equips", data)
|
||
store.set('/{type}/data/self_select/column_index',
|
||
column_index)
|
||
store.set("/{type}/data/self_select/locked",
|
||
[i.isChecked() for i in self.装备锁定])
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
def 保存json(self, path='set', page=[0, 1, 2, 3, 4]):
|
||
self.exports_store(page)
|
||
try:
|
||
filepath = './ResourceFiles/{}/{}/store.json'.format(
|
||
self.角色属性A.实际名称, path)
|
||
set_data = store.exports(
|
||
lambda i: str.startswith(i, "/buffer/data"))
|
||
with open(filepath, "w", encoding='utf-8') as fp:
|
||
json.dump(set_data, fp, ensure_ascii=False, indent=4)
|
||
fp.close()
|
||
except Exception as error:
|
||
logger.error(error)
|
||
|
||
def 保存配置(self, path='set'):
|
||
if self.禁用存档.isChecked():
|
||
return
|
||
self.保存json(path)
|
||
|
||
# 一键修正计算
|
||
def 一键修正(self, x=0):
|
||
increase_counter(ga_category="buffer详细功能使用", name="一键修正")
|
||
sign = -1
|
||
try:
|
||
if self.一键站街设置输入[0].text() != '' or self.一键站街设置输入[1].text() != '':
|
||
sign = 1
|
||
except Exception as e:
|
||
logger.error(e)
|
||
pass
|
||
if sign == -1:
|
||
QMessageBox.information(self, "错误", "请在按钮左侧输入站街数值")
|
||
return
|
||
|
||
if x == 0:
|
||
if self.组合计算(2) == 0:
|
||
QMessageBox.information(self, "错误", "请勾选齐全身上穿戴的装备")
|
||
return
|
||
if self.组合计算(2) > 1:
|
||
QMessageBox.information(self, "错误", "请勿勾选身上未穿戴的装备")
|
||
return
|
||
|
||
self.修正套装计算(x)
|
||
self.角色属性B = deepcopy(self.初始属性)
|
||
self.输入属性(self.角色属性B)
|
||
self.角色属性B.穿戴装备(self.有效穿戴组合[0])
|
||
self.角色属性B.排行系数 = 1
|
||
self.角色属性B.装备属性计算()
|
||
|
||
self.面板修正(self.角色属性B, x)
|
||
|
||
def 面板修正(self, 属性, x):
|
||
数据 = 0
|
||
数据 = to_int(self.一键站街设置输入[x].text())
|
||
if 数据 is None:
|
||
QMessageBox.information(self, "错误", "站街面板输入格式错误,已重置为空")
|
||
self.一键站街设置输入[x].setText('')
|
||
数据 = 0
|
||
|
||
if 数据 == 0:
|
||
QMessageBox.information(self, "错误", "请输入站街面板")
|
||
return
|
||
self.站街面板修正(属性, 数据)
|
||
self.click_window(2)
|
||
QMessageBox.information(
|
||
self, "自动修正计算完毕", "仅对站街修正进行了修改,使面板与输入一致<br>请自行核对其它页面 非智力/体力/精神条目")
|
||
|
||
def click_window(self, index, info=''):
|
||
if info != '':
|
||
increase_counter(ga_category="界面使用情况", name=info)
|
||
self.保存json(self.存档位置, page=[self.当前页面])
|
||
self.当前页面 = index
|
||
|
||
if self.stacked_layout.currentIndex() != index:
|
||
self.stacked_layout.setCurrentIndex(index)
|
||
for i in self.window_btn:
|
||
i.setStyleSheet(页签样式)
|
||
self.window_btn[index].setStyleSheet(页签样式_选中)
|
||
|
||
if index == 3:
|
||
count1 = 0
|
||
count2 = 0
|
||
num = 0
|
||
width = 1100
|
||
height = 680
|
||
page4_height = 0
|
||
for j in equ.get_equ_id_list():
|
||
temp = equ.get_equ_by_id(j)
|
||
if temp.品质 == '神话':
|
||
if self.装备选择状态[j] == 1 or temp.名称 in self.self_selects:
|
||
self.神话属性图片[num].move(
|
||
int(width / 7 * (count1 % 7 + 0.42)),
|
||
int(height / 5.2 * (count2 + 0.05)) - 3)
|
||
for i in range(4):
|
||
self.神话属性选项[num * 4 + i].move(
|
||
int(width / 7 * (count1 % 7) + 6),
|
||
int(height / 5.2 * (count2 + 0.05)) - 3 +
|
||
i * 22 + 32)
|
||
count1 += 1
|
||
if count1 % 7 == 0:
|
||
count2 += 1
|
||
page4_height += 1
|
||
else:
|
||
self.神话属性图片[num].move(-1000, -1000)
|
||
for i in range(4):
|
||
self.神话属性选项[num * 4 + i].move(-1000, -1000)
|
||
num += 1
|
||
page4_height = max(ceil(page4_height / 7) * 130, height)
|
||
self.main_frame4.setMinimumSize(width, page4_height)
|
||
if index == 4:
|
||
self.自选计算(1)
|
||
|
||
def 神话数量判断(self, x=0):
|
||
count = 0
|
||
for j in equ.get_equ_id_list():
|
||
if equ.get_equ_by_id(j).品质 == '神话':
|
||
if self.装备选择状态[j] == 1:
|
||
count += 1
|
||
if x == 0:
|
||
return count == 0
|
||
else:
|
||
return count
|
||
|
||
def 站街面板修正(self, 属性, 输入面板, x=0, append=True):
|
||
i = ['智力', '体力', '精神'].index(属性.类型)
|
||
修正前面板 = int(属性.站街系数)
|
||
修正后面板 = 输入面板 - 修正前面板
|
||
if append:
|
||
修正面板 = to_int(self.属性设置输入[i][15 + x].text(), 0)
|
||
修正后面板 += 修正面板
|
||
self.属性设置输入[i][15 + x].setText(str(int(修正后面板)))
|
||
|
||
def exports_property(self, property):
|
||
num = 0
|
||
for skill in property.技能表.values():
|
||
skill.等级 = skill.基础等级 + int(self.等级调整[num].currentData())
|
||
skill.是否启用 = self.次数输入[num].currentIndex()
|
||
num += 1
|
||
|
||
property.排行系数 = self.排行参数.currentIndex()
|
||
# print(self.排行选项[0].currentText())
|
||
# print(self.排行选项[0].currentData())
|
||
property.C力智 = int(''.join(
|
||
filter(str.isdigit, self.排行选项[0].currentText())))
|
||
property.C三攻 = int(''.join(
|
||
filter(str.isdigit, self.排行选项[1].currentText())))
|
||
property.排行类型 = self.排行选项[2].currentData()
|
||
|
||
if self.排行选项[3].currentIndex() == 0:
|
||
pass
|
||
elif self.排行选项[3].currentIndex() == 1:
|
||
property.系统奶系数 = 1.35
|
||
property.系统奶基数 = 7664
|
||
elif self.排行选项[3].currentIndex() == 2:
|
||
property.系统奶系数 = 2.31
|
||
property.系统奶基数 = 4581
|
||
|
||
if self.初始属性.技能表['三次觉醒'].是否启用:
|
||
if self.觉醒选择状态 == 1:
|
||
property.技能表['三次觉醒'].关联技能 = [property.技能表['一次觉醒'].名称]
|
||
elif self.觉醒选择状态 == 2:
|
||
property.技能表['三次觉醒'].关联技能 = [property.技能表['二次觉醒'].名称]
|
||
|
||
count = 0
|
||
for i in equ.get_equ_list():
|
||
if i.品质 == '神话':
|
||
i.属性1选择_BUFF = self.神话属性选项[count * 4 + 0].currentIndex()
|
||
i.属性2选择_BUFF = self.神话属性选项[count * 4 + 1].currentIndex()
|
||
i.属性3选择_BUFF = self.神话属性选项[count * 4 + 2].currentIndex()
|
||
i.属性4选择_BUFF = self.神话属性选项[count * 4 + 3].currentIndex()
|
||
count += 1
|
||
|
||
property.护石栏 = [i.currentIndex() for i in self.护石栏]
|
||
|
||
if self.护石第一栏.currentData() != '无':
|
||
property.护石第一栏 = self.护石第一栏.currentData()
|
||
|
||
if self.护石第二栏.currentData() != '无':
|
||
property.护石第二栏 = self.护石第二栏.currentData()
|
||
|
||
if self.护石第三栏.currentData() != '无':
|
||
property.护石第三栏 = self.护石第三栏.currentData()
|
||
|
||
def 换装计算(self, AWAKE: 辅助角色属性 = None) -> 辅助角色属性:
|
||
if not self.登记启用:
|
||
return None
|
||
if AWAKE is None:
|
||
AWAKE = self.角色属性A
|
||
|
||
装备 = store.clone("/{type}/data/register/equips", self.self_selects)
|
||
装备打造 = store.clone("/{type}/data/register/amplifies", [-1] * 12)
|
||
奥兹玛选择状态 = store.clone("/{type}/data/register/ozma", [0] * 25)
|
||
希洛克选择状态 = store.clone("/{type}/data/register/siroco", [0] * 15)
|
||
黑鸦词条 = store.clone("/{type}/data/register/black_purgatory",
|
||
[[0] * 4] * 4)
|
||
武器融合选项 = store.clone("/{type}/data/register/weapon_fusion", [0] * 4)
|
||
站街面板 = store.get("/{type}/data/register/display_power")
|
||
|
||
BUFF = deepcopy(self.初始属性)
|
||
|
||
for i in range(len(装备)):
|
||
if 装备[i] == '无':
|
||
装备[i] = self.self_selects[i]
|
||
if 装备打造[i] == -1:
|
||
装备打造[i] = self.装备打造选项[i + 12].currentIndex()
|
||
|
||
for i in range(4):
|
||
if 黑鸦词条[i][0] == 0 or 黑鸦词条[i][1] == 0:
|
||
黑鸦词条[i] = deepcopy(AWAKE.黑鸦词条[i])
|
||
黑鸦词条[i][0] == 2
|
||
|
||
BUFF.黑鸦词条 = 黑鸦词条
|
||
if 希洛克选择状态 is None or len(希洛克选择状态) == 0 or sum(希洛克选择状态) == 0:
|
||
希洛克选择状态 = self.希洛克选择状态
|
||
BUFF.希洛克选择状态 = 希洛克选择状态
|
||
|
||
if 奥兹玛选择状态 is None or len(奥兹玛选择状态) == 0 or sum(奥兹玛选择状态) == 0:
|
||
奥兹玛选择状态 = self.奥兹玛选择状态
|
||
BUFF.奥兹玛选择状态 = 奥兹玛选择状态
|
||
self.登记希洛克 = 希洛克选择状态
|
||
self.登记奥兹玛 = 奥兹玛选择状态
|
||
if 武器融合选项[0] == 0:
|
||
武器融合选项[0] = AWAKE.残香词条[0]
|
||
武器融合选项[1] = AWAKE.残香词条[1]
|
||
|
||
if 武器融合选项[2] == 0:
|
||
武器融合选项[2] = AWAKE.残香词条[2]
|
||
武器融合选项[3] = AWAKE.残香词条[3]
|
||
BUFF.希洛克武器词条 = 2
|
||
BUFF.残香词条 = 武器融合选项
|
||
|
||
self.exports_property(BUFF)
|
||
|
||
self.辟邪玉属性计算(BUFF)
|
||
|
||
if sum(希洛克选择状态) == 3:
|
||
BUFF.武器词条触发 = 1
|
||
|
||
for i in range(len(self.复选框列表)):
|
||
if self.复选框列表[i].isChecked():
|
||
选项设置列表[i].适用效果(BUFF)
|
||
|
||
称号列表[self.称号.currentIndex()].城镇属性_BUFF(BUFF)
|
||
if BUFF.称号触发:
|
||
称号列表[self.称号.currentIndex()].触发属性(BUFF)
|
||
|
||
宠物列表[self.宠物.currentIndex()].城镇属性_BUFF(BUFF)
|
||
|
||
for i in range(12):
|
||
BUFF.是否增幅[i] = 1
|
||
BUFF.强化等级[i] = 装备打造[i]
|
||
BUFF.改造等级[i] = 装备打造[i]
|
||
BUFF.武器锻造等级 = self.装备打造选项[36].currentIndex()
|
||
BUFF.类型 = self.装备打造选项[37].currentData()
|
||
|
||
self.是否计算 = 1
|
||
|
||
self.基础属性(BUFF)
|
||
|
||
BUFF.穿戴装备(装备)
|
||
|
||
if 站街面板 is not None:
|
||
站街属性 = deepcopy(BUFF)
|
||
|
||
站街属性.排行系数 = 1
|
||
站街属性.装备属性计算()
|
||
|
||
self.站街面板修正(站街属性, 站街面板, 2, False)
|
||
|
||
BUFF.预计算()
|
||
AWAKE.替换技能(BUFF.技能表['BUFF'], 'BUFF')
|
||
return BUFF
|
||
|
||
def 自选计算(self, 输出=0):
|
||
if 输出 == 0:
|
||
self.保存配置(self.存档位置)
|
||
self.关闭排行窗口()
|
||
self.排行数据.clear()
|
||
|
||
self.角色属性A = deepcopy(self.初始属性)
|
||
|
||
self.输入属性(self.角色属性A)
|
||
|
||
if self.是否计算 != 1:
|
||
self.click_window(1)
|
||
return
|
||
|
||
装备 = self.self_selects
|
||
C = self.站街计算(装备)
|
||
|
||
B = deepcopy(self.角色属性A)
|
||
B.穿戴装备(装备)
|
||
B.预计算()
|
||
|
||
self.换装计算(B)
|
||
|
||
if 输出 != 0:
|
||
D = deepcopy(self.初始属性)
|
||
self.输入属性(D)
|
||
D.双装备模式 = 0
|
||
伤害列表 = []
|
||
for i in 辟邪玉列表:
|
||
i.当前值 = i.最大值
|
||
temp = deepcopy(D)
|
||
i.穿戴属性(temp)
|
||
temp.穿戴装备(装备)
|
||
伤害列表.append(temp.BUFF计算(0))
|
||
|
||
辟邪玉提升率 = []
|
||
for i in range(1, len(伤害列表)):
|
||
if 伤害列表[0] != 0:
|
||
辟邪玉提升率.append(伤害列表[i] / 伤害列表[0] - 1)
|
||
else:
|
||
辟邪玉提升率.append(0)
|
||
|
||
提升率排序 = copy(辟邪玉提升率)
|
||
提升率排序.sort(reverse=True)
|
||
|
||
for i in range(len(辟邪玉提升率)):
|
||
temp = str('%.2f' % (辟邪玉提升率[i] * 100)) + '%'
|
||
self.辟邪玉提升率2[i].setText(temp)
|
||
x = 提升率排序.index(辟邪玉提升率[i]) / len(辟邪玉提升率) * 10 - 2
|
||
y = 1 / (1 + math.exp(-x))
|
||
if SkinVersion == 'None':
|
||
颜色 = (0, 0, 0)
|
||
else:
|
||
颜色 = (int(255 - 80 * y), int(245 - 100 * y),
|
||
int(0 + 150 * y))
|
||
self.辟邪玉提升率1[i].setStyleSheet(
|
||
'QLabel{font-size:12px;color:rgb' + str(颜色) + '}')
|
||
self.辟邪玉提升率2[i].setStyleSheet(
|
||
'QLabel{font-size:12px;color:rgb' + str(颜色) + '}')
|
||
|
||
合计力量 = 0
|
||
合计智力 = 0
|
||
合计物攻 = 0
|
||
合计魔攻 = 0
|
||
合计独立 = 0
|
||
|
||
总数据 = B.compute()
|
||
|
||
for data in 总数据:
|
||
if sum(data) > 0:
|
||
合计力量 += data[3]
|
||
合计智力 += data[4]
|
||
合计物攻 += data[5]
|
||
合计魔攻 += data[6]
|
||
合计独立 += data[7]
|
||
总奶量 = ''
|
||
# tempstr = ''
|
||
if 合计力量 == 合计智力:
|
||
总奶量 += trans('力智') + '+' + str(round(合计力量))
|
||
else:
|
||
总奶量 += '力量+' + str(round(合计力量))
|
||
总奶量 += ',智力+' + str(round(合计智力))
|
||
|
||
if 合计物攻 == 合计魔攻 and 合计魔攻 == 合计独立:
|
||
总奶量 += ',' + trans('三攻') + '+' + str(round(合计物攻))
|
||
else:
|
||
总奶量 += ',物攻+' + str(round(合计物攻))
|
||
总奶量 += ',魔攻+' + str(round(合计魔攻))
|
||
总奶量 += ',独立+' + str(round(合计独立))
|
||
# self.总伤害.setText(str(tempstr))
|
||
|
||
提升率 = B.提升率计算(总数据)
|
||
|
||
x = B.BUFF面板()
|
||
y = B.一觉面板()
|
||
self.角色属性B = deepcopy(B)
|
||
tempstr = self.装备描述_BUFF计算(B)
|
||
图片列表 = self.获取装备图片(装备)
|
||
for i in range(12):
|
||
self.图片显示[i].setToolTip(tempstr[i])
|
||
self.图片显示[i].setMovie(图片列表[i])
|
||
|
||
self.面板显示[0].setText(trans('站街') + ':' + str(int(C.系数数值站街())))
|
||
self.面板显示[1].setText('')
|
||
self.面板显示[3].setText(trans('力量') + ':' + str(x[1]))
|
||
self.面板显示[4].setText(trans('智力') + ':' + str(x[2]))
|
||
self.面板显示[5].setText(trans('物攻') + ':' + str(x[3]))
|
||
self.面板显示[6].setText(trans('魔攻') + ':' + str(x[4]))
|
||
self.面板显示[7].setText(trans('独立') + ':' + str(x[5]))
|
||
|
||
self.面板显示[9].setText(trans('力量') + ':' + str(y[1]))
|
||
self.面板显示[10].setText(trans('智力') + ':' + str(y[2]))
|
||
|
||
skill_buff = B.技能表['BUFF']
|
||
skill_awake = B.技能表['一次觉醒']
|
||
|
||
tempstr = []
|
||
tempstr.append(
|
||
trans('BUFF力量%') + ' :' + to_percent(skill_buff.BUFF力量per))
|
||
tempstr.append(
|
||
trans('BUFF智力%') + ' :' + to_percent(skill_buff.BUFF智力per))
|
||
tempstr.append(
|
||
trans('BUFF物攻%') + ' :' + to_percent(skill_buff.BUFF物攻per))
|
||
tempstr.append(
|
||
trans('BUFF魔攻%') + ' :' + to_percent(skill_buff.BUFF魔攻per))
|
||
tempstr.append(
|
||
trans('BUFF独立%') + ' :' + to_percent(skill_buff.BUFF独立per))
|
||
tempstr.append(
|
||
trans('一觉力智') + ' :' + str(int(round(skill_awake.一觉力智, 0))))
|
||
tempstr.append(trans('一觉力智%') + ' :' + to_percent(skill_awake.一觉力智per))
|
||
tempstr.append(str(总奶量))
|
||
|
||
# if self.角色属性B.希洛克武器词条 == 1:
|
||
# 武器词条最高值 = self.角色属性B.自适应最高值
|
||
# 武器属性A = 武器属性A列表[武器词条最高值[0]]
|
||
# 武器属性B = 武器属性B列表[武器词条最高值[1]]
|
||
# tempstr.append("属性1:" +"<font style='color:gray'>"+武器属性A.固定属性描述 + '</font>')
|
||
# if self.角色属性B.武器词条触发 == 1:
|
||
# tempstr.append("属性2:" +"<font style='color:gray'>"+武器属性B.固定属性描述 + '</font>')
|
||
|
||
if self.角色属性B.希洛克武器词条 == 1:
|
||
武器词条最高值 = self.角色属性B.自适应最高值
|
||
武器属性A = 武器属性A列表[武器词条最高值[0]]
|
||
武器属性B = 武器属性B列表[武器词条最高值[1]]
|
||
# tempstr += '<br><br>' + "属性1:" +"<font style='color:gray'>"+武器属性A.固定属性描述 + '</font>,' + 武器属性A.随机属性描述 + str(武器属性A.最大值)+ ('%' if 武器属性A.间隔 / 10 < 1 else '')
|
||
temp = trans("残香") + " <font style='color:gray'>" + trans(
|
||
武器属性A.固定属性描述) + '</font>'
|
||
if self.角色属性B.武器词条触发 == 1:
|
||
# tempstr += "| 属性2:" +"<font style='color:gray'>"+武器属性B.固定属性描述 + '</font>,' + 武器属性B.随机属性描述 + str(武器属性B.最大值)+ ('%' if 武器属性B.间隔 / 10 <br 1 else '')
|
||
temp += " | " + "<font style='color:gray'>" + trans(
|
||
武器属性B.固定属性描述) + '</font>'
|
||
tempstr.append(temp)
|
||
|
||
if self.角色属性B.黑鸦词条[0][0] == 1 or self.角色属性B.黑鸦词条[1][
|
||
0] == 1 or self.角色属性B.黑鸦词条[2][0] == 1 or self.角色属性B.黑鸦词条[3][
|
||
0] == 1:
|
||
temp = trans("黑鸦")
|
||
if self.角色属性B.黑鸦词条[0][0] == 1:
|
||
if self.角色属性B.武器变换属性自适应 > 0:
|
||
黑鸦武器 = 武器变换属性列表[self.角色属性B.武器变换属性自适应]
|
||
temp += " {}:".format(
|
||
trans('武器')) + "<font style='color:gray'>" + trans(
|
||
黑鸦武器.固定属性描述) + '</font>'
|
||
else:
|
||
temp += " {}:".format(
|
||
trans('武器')) + "<font style='color:gray'>" + trans(
|
||
'觉醒') + '</font>'
|
||
if self.角色属性B.黑鸦词条[1][0] == 1:
|
||
黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[0]]
|
||
temp += " {}:".format(
|
||
trans('戒指')) + "<font style='color:gray'>" + trans(
|
||
黑鸦.固定属性描述) + '</font>'
|
||
|
||
tempstr.append(temp)
|
||
|
||
temp = trans("黑鸦")
|
||
if self.角色属性B.黑鸦词条[2][0] == 1:
|
||
黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[1]]
|
||
temp += " {}:".format(
|
||
trans('辅助')) + "<font style='color:gray'>" + trans(
|
||
黑鸦.固定属性描述) + '</font>'
|
||
if self.角色属性B.黑鸦词条[3][0] == 1:
|
||
黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[2]]
|
||
temp += " {}:".format(
|
||
trans('下装')) + "<font style='color:gray'>" + trans(
|
||
黑鸦.固定属性描述) + '</font>'
|
||
tempstr.append(temp)
|
||
|
||
count = len(tempstr)
|
||
|
||
for i in range(len(self.词条显示)):
|
||
value = tempstr[i] if i < count else ''
|
||
self.词条显示[i].setText(value)
|
||
|
||
for i in self.套装名称显示:
|
||
i.setText('')
|
||
|
||
self.套装名称显示[0].setText(trans(装备[11]))
|
||
self.套装名称显示[0].setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
|
||
套装名称 = copy(self.角色属性B.套装栏)
|
||
|
||
神话所在套装 = []
|
||
for i in range(11):
|
||
if equ.get_equ_by_name(装备[i]).品质 == '神话':
|
||
神话所在套装.append(equ.get_equ_by_name(装备[i]).所属套装)
|
||
|
||
套装 = []
|
||
套装件数 = []
|
||
套装属性 = []
|
||
for i in range(len(套装名称)):
|
||
temp = 套装名称[i].split('[')[0]
|
||
if temp not in 套装:
|
||
套装.append(trans(temp))
|
||
套装件数.append([])
|
||
套装属性.append('')
|
||
if len(套装名称[i].split('[')) > 1:
|
||
件数 = 套装名称[i].split('[')[1].split(']')[0]
|
||
套装件数[套装.index(trans(temp))].append(件数)
|
||
套装属性[套装.index(
|
||
trans(temp)
|
||
)] += '<font size="3" face="宋体"><font color="#78FF1E">' + 套装名称[
|
||
i] + '</font><br>' + equ.get_suit_by_name(
|
||
套装名称[i]).装备描述_BUFF(self.角色属性B)[:-4] + '</font><br>'
|
||
|
||
self.角色属性B.装备描述 = 1
|
||
|
||
sirocos = []
|
||
|
||
temp = ''
|
||
|
||
for i in range(15):
|
||
if self.希洛克选择状态[i] == 1:
|
||
siroco = SirocoList[i // 3]
|
||
if siroco not in sirocos:
|
||
siroco.set_character(self.角色属性B)
|
||
sirocos.append(siroco)
|
||
siroco.fuse(i % 3)
|
||
for siroco in sirocos:
|
||
temp += siroco.compute()
|
||
self.角色属性B.装备描述 = 0
|
||
套装属性.append(temp)
|
||
|
||
for i in range(len(希洛克套装)):
|
||
count = self.希洛克选择状态[i * 3 + 0] + \
|
||
self.希洛克选择状态[i * 3 + 1] + self.希洛克选择状态[i * 3 + 2]
|
||
if count > 1:
|
||
套装.append("{}-{}".format(trans('希洛克'), trans(希洛克套装[i])))
|
||
套装件数.append([count])
|
||
|
||
for i in range(len(套装)):
|
||
if len(套装件数[i]) > 0:
|
||
self.套装名称显示[i + 1].setText(
|
||
trans(套装[i]) + '[' + str(max(套装件数[i])) + ']')
|
||
else:
|
||
self.套装名称显示[i + 1].setText(trans(套装[i]))
|
||
if 套装[i] in 神话所在套装:
|
||
self.套装名称显示[i + 1].setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(226,150,146)}")
|
||
else:
|
||
self.套装名称显示[i + 1].setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
self.套装名称显示[i + 1].setToolTip(套装属性[i][:-4])
|
||
|
||
if len(self.基准值) != 0:
|
||
self.提升率显示.setText(self.对比输出(提升率, self.基准值[0], 1, 1))
|
||
else:
|
||
self.提升率显示.setText(str(round(提升率, 2)) + '%')
|
||
self.自选计算数据 = [提升率, 总数据]
|
||
|
||
if 输出 == 0:
|
||
self.排行数据.append(装备 + [0] + 套装 + ['无'])
|
||
self.输出界面(0, 自选计算模式=True)
|
||
|
||
def 站街计算(self, 装备名称, 套装名称=None):
|
||
C = deepcopy(self.角色属性A)
|
||
C.穿戴装备(装备名称, 套装名称)
|
||
C.装备属性计算(x=1)
|
||
C.站街计算()
|
||
return C
|
||
|
||
def 对比输出(self, A, B, x=0, y=0):
|
||
if B == 0:
|
||
return str(A)
|
||
if x == 0:
|
||
temp = int(A - B)
|
||
if temp == 0:
|
||
if y == 1:
|
||
return '不变'
|
||
return '-'
|
||
elif temp > 0:
|
||
return '<font face="宋体" color= "#96FF1E">+' + str(
|
||
temp) + '</font>'
|
||
else:
|
||
return '<font face="宋体" color= "#E52E2E">' + str(
|
||
temp) + '</font>'
|
||
else:
|
||
temp = round((A / B - 1) * 100, 2)
|
||
if temp == 0:
|
||
if y == 1:
|
||
return '不变'
|
||
return '-'
|
||
elif temp > 0:
|
||
return '<font face="宋体" color= "#96FF1E">+' + str(
|
||
'%.2f' % temp) + '%</font>'
|
||
else:
|
||
return '<font face="宋体" color= "#E52E2E">' + str(
|
||
'%.2f' % temp) + '%</font>'
|
||
|
||
def 输出界面(self, index, name='', 自选计算模式=False):
|
||
装备名称 = []
|
||
套装名称 = []
|
||
百变怪 = self.排行数据[index][-1]
|
||
for i in range(12):
|
||
装备名称.append(self.排行数据[index][i])
|
||
|
||
if not 自选计算模式:
|
||
for i in range(13, len(self.排行数据[index]) - 1):
|
||
套装名称.append(self.排行数据[index][i])
|
||
|
||
C = self.站街计算(装备名称)
|
||
|
||
self.角色属性B = deepcopy(self.角色属性A)
|
||
self.角色属性B.穿戴装备(装备名称, 套装名称)
|
||
# 登记 Start
|
||
self.角色属性B.预计算(自动切装=not 自选计算模式)
|
||
|
||
if self.登记启用 and 自选计算模式:
|
||
登记属性 = self.换装计算(self.角色属性B)
|
||
登记装备 = 登记属性.装备栏
|
||
|
||
# self.输入属性(self.角色属性B)
|
||
self.角色属性B.切换详情 = '换装详情: <br>' + '<br>'.join(
|
||
[' , '.join(登记装备[i:i + 4]) for i in range(0, len(登记装备), 4)])
|
||
# 登记 end
|
||
|
||
# 最大输出界面限制
|
||
if len(self.输出窗口列表) >= 10:
|
||
del self.输出窗口列表[0]
|
||
|
||
输出窗口 = QWidget()
|
||
输出窗口.setStyleSheet('''QToolTip {
|
||
background-color: black;
|
||
color: white;
|
||
border: 0px
|
||
}''')
|
||
输出窗口.setFixedSize(788, 546)
|
||
pox_y = 18
|
||
pox_y2 = 11
|
||
temp = ''
|
||
if name == '':
|
||
temp += trans('详细数据') + ' 仅供参考 带节奏死个' + ' ' + get_mac_address()
|
||
else:
|
||
temp += name
|
||
# temp += '(最多显示前18个技能)'+"装备版本:"+self.角色属性A.版本 + " 增幅版本:" + self.角色属性A.增幅版本
|
||
输出窗口.setWindowTitle(temp)
|
||
输出窗口.setWindowIcon(self.icon)
|
||
QLabel(输出窗口).setPixmap(self.输出背景图片)
|
||
人物 = QLabel(输出窗口)
|
||
图片 = QPixmap('./ResourceFiles/' + self.角色属性A.实际名称 + "/人物.png")
|
||
人物.setPixmap(图片)
|
||
人物.move(90 + int(45 - 图片.width() / 2), 40 - pox_y2)
|
||
人物.resize(90, 90)
|
||
人物.setAlignment(Qt.AlignTop)
|
||
|
||
y = self.角色属性B.一觉面板()
|
||
x = self.角色属性B.BUFF面板()
|
||
|
||
面板显示 = []
|
||
for i in range(11):
|
||
面板显示.append(QLabel(输出窗口))
|
||
面板显示[0].setText(trans('站街') + ':' + str(int(C.系数数值站街())))
|
||
|
||
面板显示[3].setText(trans('力量') + ':' + str(x[1]))
|
||
面板显示[4].setText(trans('智力') + ':' + str(x[2]))
|
||
面板显示[5].setText(trans('物攻') + ':' + str(x[3]))
|
||
面板显示[6].setText(trans('魔攻') + ':' + str(x[4]))
|
||
面板显示[7].setText(trans('独立') + ':' + str(x[5]))
|
||
|
||
面板显示[9].setText(trans('力量') + ':' + str(y[1]))
|
||
面板显示[10].setText(trans('智力') + ':' + str(y[2]))
|
||
|
||
const = 139
|
||
面板显示[0].move(35, const - pox_y2 + 10)
|
||
|
||
const += 36
|
||
count = 0
|
||
for i in [2, 3, 4, 5, 6, 7]:
|
||
面板显示[i].move(35, const + count * 18 - pox_y2)
|
||
count += 1
|
||
|
||
count = 0
|
||
for i in [8, 9, 10]:
|
||
面板显示[i].move(165, const + count * 18 - pox_y2)
|
||
count += 1
|
||
|
||
for i in range(len(面板显示)):
|
||
面板显示[i].setStyleSheet("QLabel{font-size:12px;color:white;}")
|
||
面板显示[i].resize(100, 18)
|
||
面板显示[i].setAlignment(Qt.AlignLeft)
|
||
|
||
skill_buff = self.角色属性B.技能表['BUFF']
|
||
skill_awake = self.角色属性B.技能表['一次觉醒']
|
||
|
||
tempstr = []
|
||
tempstr.append(
|
||
trans('BUFF力量%') + ' :' + to_percent(skill_buff.BUFF力量per))
|
||
tempstr.append(
|
||
trans('BUFF智力%') + ' :' + to_percent(skill_buff.BUFF智力per))
|
||
tempstr.append(
|
||
trans('BUFF物攻%') + ' :' + to_percent(skill_buff.BUFF物攻per))
|
||
tempstr.append(
|
||
trans('BUFF魔攻%') + ' :' + to_percent(skill_buff.BUFF魔攻per))
|
||
tempstr.append(
|
||
trans('BUFF独立%') + ' :' + to_percent(skill_buff.BUFF独立per))
|
||
tempstr.append(
|
||
trans('一觉力智') + ' :' + str(int(round(skill_awake.一觉力智, 0))))
|
||
tempstr.append(trans('一觉力智%') + ' :' + to_percent(skill_awake.一觉力智per))
|
||
|
||
j = 318
|
||
for i in tempstr:
|
||
templab = QLabel(输出窗口)
|
||
templab.setText(i)
|
||
templab.setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(104,213,237)}")
|
||
templab.move(20, j - pox_y2)
|
||
templab.resize(305, 18)
|
||
templab.setAlignment(Qt.AlignLeft)
|
||
j += 18
|
||
|
||
位置 = 313
|
||
间隔 = 20
|
||
适用称号名称 = QLabel(self.称号.currentData(), 输出窗口)
|
||
适用称号名称.setStyleSheet("QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
适用称号名称.move(114, 位置 - pox_y2)
|
||
适用称号名称.resize(150, 18)
|
||
适用称号名称.setAlignment(Qt.AlignCenter)
|
||
位置 += 间隔
|
||
适用称号名称.setToolTip(self.称号描述())
|
||
|
||
适用宠物名称 = QLabel(self.宠物.currentData(), 输出窗口)
|
||
适用宠物名称.setStyleSheet("QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
适用宠物名称.move(114, 位置 - pox_y2)
|
||
适用宠物名称.resize(150, 18)
|
||
适用宠物名称.setAlignment(Qt.AlignCenter)
|
||
位置 += 间隔
|
||
适用宠物名称.setToolTip(self.宠物描述())
|
||
|
||
适用中的套装 = QLabel(trans(装备名称[11]), 输出窗口)
|
||
适用中的套装.setStyleSheet("QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
适用中的套装.move(132, 位置 - pox_y2)
|
||
适用中的套装.resize(132, 18)
|
||
适用中的套装.setAlignment(Qt.AlignCenter)
|
||
|
||
神话所在套装 = '无'
|
||
for i in range(11):
|
||
temp = equ.get_equ_by_name(装备名称[i])
|
||
if temp.品质 == '神话':
|
||
神话所在套装 = temp.所属套装
|
||
|
||
套装 = []
|
||
套装件数 = []
|
||
套装属性 = []
|
||
|
||
套装名称 = copy(self.角色属性B.套装栏)
|
||
|
||
for i in range(len(套装名称)):
|
||
temp = 套装名称[i].split('[')[0]
|
||
if temp not in 套装:
|
||
套装.append(temp)
|
||
套装件数.append([])
|
||
套装属性.append('')
|
||
if len(套装名称[i].split('[')) > 1:
|
||
件数 = 套装名称[i].split('[')[1].split(']')[0]
|
||
套装件数[套装.index(temp)].append(件数)
|
||
套装属性[套装.index(
|
||
temp
|
||
)] += '<font size="3" face="宋体"><font color="#78FF1E">' + 套装名称[
|
||
i] + '</font><br>' + equ.get_suit_by_name(
|
||
套装名称[i]).装备描述_BUFF(self.角色属性B)[:-4] + '</font><br>'
|
||
|
||
E = deepcopy(self.初始属性)
|
||
|
||
sirocos = []
|
||
|
||
temp = ''
|
||
|
||
for i in range(15):
|
||
if self.希洛克选择状态[i] == 1:
|
||
siroco = SirocoList[i // 3]
|
||
if siroco not in sirocos:
|
||
siroco.set_character(E)
|
||
sirocos.append(siroco)
|
||
siroco.fuse(i % 3)
|
||
for siroco in sirocos:
|
||
temp += siroco.compute()
|
||
|
||
套装属性.append(temp)
|
||
|
||
for i in range(len(希洛克套装)):
|
||
count = self.希洛克选择状态[i * 3 + 0] + \
|
||
self.希洛克选择状态[i * 3 + 1] + self.希洛克选择状态[i * 3 + 2]
|
||
if count > 1:
|
||
套装.append("{}-{}".format(trans('希洛克'), trans(希洛克套装[i])))
|
||
套装件数.append([count])
|
||
|
||
for i in range(len(套装)):
|
||
位置 += 间隔
|
||
适用套装名称 = QLabel(输出窗口)
|
||
if len(套装件数[i]) > 0:
|
||
适用套装名称.setText(trans(套装[i]) + '[' + str(max(套装件数[i])) + ']')
|
||
else:
|
||
适用套装名称.setText(trans(套装[i]))
|
||
适用套装名称.move(132, 位置 - pox_y2)
|
||
适用套装名称.resize(132, 18)
|
||
适用套装名称.setAlignment(Qt.AlignCenter)
|
||
if 套装[i] in 神话所在套装:
|
||
适用套装名称.setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(226,150,146)}")
|
||
else:
|
||
适用套装名称.setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
适用套装名称.setToolTip(套装属性[i][:-4])
|
||
|
||
实际技能等级 = []
|
||
|
||
技能表 = self.角色属性B.技能表.values()
|
||
|
||
for skill in 技能表:
|
||
实际技能等级.append(skill.等级)
|
||
|
||
if len(self.基准值) != 0:
|
||
显示模式 = 1
|
||
else:
|
||
显示模式 = 0
|
||
|
||
count = 0
|
||
|
||
统计详情 = self.角色属性B.compute()
|
||
|
||
for 详情 in 统计详情:
|
||
if sum(详情) != 0:
|
||
count += 1
|
||
|
||
self.行高 = 30
|
||
if count > 0:
|
||
self.行高 = min(int(440 / count), 30)
|
||
j = -1
|
||
|
||
num = 0
|
||
for skill in 技能表:
|
||
if skill.是否启用 and sum(统计详情[num]) != 0:
|
||
j += 1
|
||
每行详情 = []
|
||
for k in range(11):
|
||
每行详情.append(QLabel(输出窗口))
|
||
|
||
# 图片
|
||
每行详情[0].setPixmap(self.技能图片[num])
|
||
每行详情[0].move(302, 50 + j * self.行高 - pox_y)
|
||
每行详情[0].resize(28, min(28, self.行高 - 2))
|
||
# 等级
|
||
每行详情[1].setText('Lv.' + str(实际技能等级[num]))
|
||
每行详情[1].move(337, 50 + j * self.行高 - pox_y)
|
||
每行详情[1].resize(30, min(28, self.行高))
|
||
|
||
for k in range(8):
|
||
详情 = str(int(统计详情[num][k]))
|
||
if 显示模式 == 1:
|
||
详情 = self.对比输出(统计详情[num][k], self.基准值[1][num][k])
|
||
if 详情 == '0' or 详情 == 0:
|
||
详情 = ''
|
||
每行详情[k + 2].setText(详情)
|
||
每行详情[k + 2].move(370 + k * 40, 50 + j * self.行高 - pox_y)
|
||
每行详情[k + 2].resize(50, min(28, self.行高))
|
||
if hasattr(skill, "适用数值") and skill.适用数值 != 0:
|
||
每行详情[10].setText("(" + str(round(skill.适用数值)) + ")")
|
||
每行详情[10].setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(104,213,237)}")
|
||
每行详情[10].move(710, 50 + j * self.行高 - pox_y)
|
||
每行详情[10].resize(50, min(28, self.行高))
|
||
|
||
for l in range(1, 10):
|
||
if self.登记启用 and skill.名称 in BUFF影响技能 and 自选计算模式:
|
||
每行详情[l].setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(255,0,0)}")
|
||
else:
|
||
每行详情[l].setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
每行详情[l].setAlignment(Qt.AlignCenter)
|
||
|
||
num += 1
|
||
|
||
合计力量 = 0
|
||
合计智力 = 0
|
||
合计物攻 = 0
|
||
合计魔攻 = 0
|
||
合计独立 = 0
|
||
|
||
基准值合计力量 = 0
|
||
基准值合计智力 = 0
|
||
基准值合计物攻 = 0
|
||
基准值合计魔攻 = 0
|
||
基准值合计独立 = 0
|
||
|
||
for i in range(len(统计详情)):
|
||
if 显示模式 == 1:
|
||
基准值合计力量 += self.基准值[1][i][3]
|
||
基准值合计智力 += self.基准值[1][i][4]
|
||
基准值合计物攻 += self.基准值[1][i][5]
|
||
基准值合计魔攻 += self.基准值[1][i][6]
|
||
基准值合计独立 += self.基准值[1][i][7]
|
||
合计力量 += 统计详情[i][3]
|
||
合计智力 += 统计详情[i][4]
|
||
合计物攻 += 统计详情[i][5]
|
||
合计魔攻 += 统计详情[i][6]
|
||
合计独立 += 统计详情[i][7]
|
||
tempstr = ''
|
||
if 显示模式 == 1:
|
||
对比力量 = self.对比输出(合计力量, 基准值合计力量, 0, 1)
|
||
对比智力 = self.对比输出(合计智力, 基准值合计智力, 0, 1)
|
||
对比物攻 = self.对比输出(合计物攻, 基准值合计物攻, 0, 1)
|
||
对比魔攻 = self.对比输出(合计魔攻, 基准值合计魔攻, 0, 1)
|
||
对比独立 = self.对比输出(合计独立, 基准值合计独立, 0, 1)
|
||
if 对比力量 == 对比智力:
|
||
tempstr += trans('力智') + 对比力量
|
||
else:
|
||
tempstr += '力量' + 对比力量
|
||
tempstr += ',智力' + 对比智力
|
||
|
||
if 对比物攻 == 对比魔攻 and 对比魔攻 == 对比独立:
|
||
tempstr += ',' + trans('三攻') + 对比物攻
|
||
else:
|
||
tempstr += ',物攻' + 对比物攻
|
||
tempstr += ',魔攻' + 对比魔攻
|
||
tempstr += ',独立' + 对比独立
|
||
else:
|
||
if 合计力量 == 合计智力:
|
||
tempstr += trans('力智') + '+' + str(round(合计力量))
|
||
else:
|
||
tempstr += '力量+' + str(round(合计力量))
|
||
tempstr += ',智力+' + str(round(合计智力))
|
||
|
||
if 合计物攻 == 合计魔攻 and 合计魔攻 == 合计独立:
|
||
tempstr += ',' + trans('三攻') + '+' + str(round(合计物攻))
|
||
else:
|
||
tempstr += ',物攻+' + str(round(合计物攻))
|
||
tempstr += ',魔攻+' + str(round(合计魔攻))
|
||
tempstr += ',独立+' + str(round(合计独立))
|
||
if self.角色属性B.切换详情 != '无':
|
||
tempstr += '<br><br>' + self.角色属性B.切换详情
|
||
|
||
if self.角色属性B.希洛克武器词条 == 1:
|
||
武器词条最高值 = self.角色属性B.自适应最高值
|
||
武器属性A = 武器属性A列表[武器词条最高值[0]]
|
||
武器属性B = 武器属性B列表[武器词条最高值[1]]
|
||
# tempstr += '<br><br>' + "属性1:" +"<font style='color:gray'>"+武器属性A.固定属性描述 + '</font>,' + 武器属性A.随机属性描述 + str(武器属性A.最大值)+ ('%' if 武器属性A.间隔 / 10 < 1 else '')
|
||
tempstr += "<br><br>" + trans("残香") +""+ \
|
||
"<font style='color:gray'>" + trans(武器属性A.固定属性描述) + '</font>'
|
||
if self.角色属性B.武器词条触发 == 1:
|
||
# tempstr += "| 属性2:" +"<font style='color:gray'>"+武器属性B.固定属性描述 + '</font>,' + 武器属性B.随机属性描述 + str(武器属性B.最大值)+ ('%' if 武器属性B.间隔 / 10 < 1 else '')
|
||
tempstr += " | " + "<font style='color:gray'>" + trans(
|
||
武器属性B.固定属性描述) + '</font>'
|
||
|
||
if self.角色属性B.黑鸦词条[0][0] == 1 or self.角色属性B.黑鸦词条[1][
|
||
0] == 1 or self.角色属性B.黑鸦词条[2][0] == 1 or self.角色属性B.黑鸦词条[3][
|
||
0] == 1:
|
||
tempstr += "<br><br>" + trans("黑鸦")
|
||
if self.角色属性B.黑鸦词条[0][0] == 1:
|
||
if self.角色属性B.武器变换属性自适应 > 0:
|
||
黑鸦武器 = 武器变换属性列表[self.角色属性B.武器变换属性自适应]
|
||
tempstr += " {}:".format(
|
||
trans('武器')) + "<font style='color:gray'>" + trans(
|
||
黑鸦武器.固定属性描述) + '</font>'
|
||
else:
|
||
tempstr += " {}:".format(
|
||
trans('武器')) + "<font style='color:gray'>" + trans(
|
||
'觉醒') + '</font>'
|
||
if self.角色属性B.黑鸦词条[1][0] == 1:
|
||
黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[0]]
|
||
tempstr += " {}:".format(
|
||
trans('戒指')) + "<font style='color:gray'>" + trans(
|
||
黑鸦.固定属性描述) + '</font>'
|
||
if self.角色属性B.黑鸦词条[2][0] == 1:
|
||
黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[1]]
|
||
tempstr += " {}:".format(
|
||
trans('辅助')) + "<font style='color:gray'>" + trans(
|
||
黑鸦.固定属性描述) + '</font>'
|
||
if self.角色属性B.黑鸦词条[3][0] == 1:
|
||
黑鸦 = 装备变换属性列表[self.角色属性B.防具变换属性自适应[2]]
|
||
tempstr += " {}:".format(
|
||
trans('下装')) + "<font style='color:gray'>" + trans(
|
||
黑鸦.固定属性描述) + '</font>'
|
||
|
||
合计 = QLabel(输出窗口)
|
||
合计.setStyleSheet("QLabel{color:rgb(104,213,237);font-size:15px}")
|
||
合计.setText(tempstr)
|
||
if self.登记启用 and 自选计算模式:
|
||
合计.setStyleSheet("QLabel{color:rgb(104,213,237);font-size:12px}")
|
||
合计.resize(450, 300)
|
||
合计.move(280, 30 + j * self.行高 - pox_y2)
|
||
合计.setAlignment(Qt.AlignCenter)
|
||
|
||
初始x = 10
|
||
初始y = 31
|
||
|
||
图片列表 = self.获取装备图片(self.排行数据[index])
|
||
|
||
提升率 = self.角色属性B.提升率计算(统计详情)
|
||
|
||
提升率显示 = QLabel(输出窗口)
|
||
|
||
提升率显示.setStyleSheet("QLabel{color:rgb(255,255,255);font-size:25px}")
|
||
if 显示模式 == 1:
|
||
提升率显示.setText(self.对比输出(提升率, self.基准值[0], 1, 1))
|
||
else:
|
||
提升率显示.setText(str(round(提升率, 2)) + '%')
|
||
提升率显示.resize(250, 36)
|
||
提升率显示.move(10, 517 - pox_y2)
|
||
提升率显示.setAlignment(Qt.AlignCenter)
|
||
|
||
图片列表 = self.获取装备图片(self.排行数据[index])
|
||
偏移量 = 187
|
||
x坐标 = [
|
||
32, 0, 0, 32, 0, 偏移量, 偏移量 + 32, 偏移量 + 32, 偏移量, 偏移量, 偏移量 + 32, 32
|
||
]
|
||
y坐标 = [0, 0, 32, 32, 64, 0, 0, 32, 64, 32, 64, 64]
|
||
|
||
tempstr = self.装备描述_BUFF计算(self.角色属性B)
|
||
|
||
for i in range(12):
|
||
x = 初始x + x坐标[i]
|
||
y = 初始y + y坐标[i] - pox_y2
|
||
装备图标 = QLabel(输出窗口)
|
||
装备图标.setMovie(图片列表[i])
|
||
装备图标.resize(26, 26)
|
||
装备图标.move(x, y)
|
||
装备图标.setAlignment(Qt.AlignCenter)
|
||
装备 = equ.get_equ_by_name(self.角色属性B.装备栏[i])
|
||
if self.角色属性B.装备栏[i] == 百变怪:
|
||
图标遮罩 = QLabel(输出窗口)
|
||
图标遮罩.setStyleSheet("QLabel{background-color:rgba(0,0,0,0.5)}")
|
||
图标遮罩.resize(26, 26)
|
||
图标遮罩.move(x, y)
|
||
图标遮罩.setToolTip(tempstr[i])
|
||
else:
|
||
装备图标.setToolTip(tempstr[i])
|
||
|
||
for i in range(12):
|
||
装备 = equ.get_equ_by_name(self.角色属性B.装备栏[i])
|
||
打造状态 = QLabel(输出窗口)
|
||
if 装备.所属套装 != '智慧产物':
|
||
打造状态.setText('+' + str(self.角色属性B.强化等级[i]))
|
||
if self.角色属性B.是否增幅[i] == 1:
|
||
打造状态.setStyleSheet(
|
||
"QLabel{color:rgb(228,88,169);font-size:12px;font-weight:Bold}"
|
||
)
|
||
else:
|
||
打造状态.setStyleSheet(
|
||
"QLabel{color:rgb(25,199,234);font-size:12px;font-weight:Bold}"
|
||
)
|
||
|
||
else:
|
||
打造状态.setText('+' + str(self.角色属性B.改造等级[i]))
|
||
打造状态.setStyleSheet(
|
||
"QLabel{color:rgb(249,141,62);font-size:12px;font-weight:Bold;}"
|
||
)
|
||
|
||
打造状态.move(初始x + x坐标[i] + 13, 初始y + y坐标[i] - 8 - pox_y2)
|
||
|
||
装备 = equ.get_equ_by_name(self.角色属性B.装备栏[11])
|
||
if 装备.所属套装 != '智慧产物' and self.角色属性B.武器锻造等级 != 0:
|
||
打造状态 = QLabel(输出窗口)
|
||
打造状态.setText('+' + str(self.角色属性B.武器锻造等级))
|
||
打造状态.setStyleSheet(
|
||
"QLabel{color:rgb(232,104,24);font-size:12px;font-weight:Bold}"
|
||
)
|
||
打造状态.move(初始x + x坐标[11] + 13, 初始y + y坐标[11] + 20 - pox_y2)
|
||
|
||
if self.登记启用 and 自选计算模式:
|
||
# 登记装备图表显示
|
||
偏移量 = 80
|
||
x坐标 = [
|
||
32, 0, 0, 32, 0, 偏移量, 偏移量 + 32, 偏移量 + 32, 偏移量, 偏移量, 偏移量 + 32,
|
||
32
|
||
]
|
||
y坐标 = [0, 0, 32, 32, 64, 0, 0, 32, 64, 32, 64, 64]
|
||
图片列表2 = self.获取装备图片(登记装备, self.登记希洛克, self.登记奥兹玛)
|
||
|
||
def compare(i):
|
||
if 登记装备[i] != self.排行数据[index][i]:
|
||
return False
|
||
if i == 2:
|
||
if self.角色属性A.黑鸦词条[3][0] != self.角色属性B.黑鸦词条[3][0]:
|
||
return False
|
||
elif i == 7:
|
||
if self.角色属性A.黑鸦词条[1][0] != self.角色属性B.黑鸦词条[1][0]:
|
||
return False
|
||
elif i == 9:
|
||
if self.角色属性A.黑鸦词条[2][0] != self.角色属性B.黑鸦词条[2][0]:
|
||
return False
|
||
elif i == 11:
|
||
if self.角色属性A.黑鸦词条[0][0] != self.角色属性B.黑鸦词条[0][0]:
|
||
return False
|
||
return True
|
||
|
||
for i in range(len(登记装备)):
|
||
x = 初始x + x坐标[i] + 600
|
||
y = 初始y + y坐标[i] - pox_y2 + 200
|
||
装备图标 = QLabel(输出窗口)
|
||
装备图标.setMovie(图片列表2[i])
|
||
装备图标.resize(26, 26)
|
||
装备图标.move(x, y)
|
||
装备图标.setAlignment(Qt.AlignCenter)
|
||
|
||
if compare(i):
|
||
图标遮罩 = QLabel(输出窗口)
|
||
图标遮罩.setStyleSheet(
|
||
"QLabel{background-color:rgba(0,0,0,0.8)}")
|
||
图标遮罩.resize(26, 26)
|
||
图标遮罩.move(x, y)
|
||
try:
|
||
self.exports_store()
|
||
更新人物名望()
|
||
# TODO: 重新布局
|
||
总名望 = store.get("/fame/temp_result")
|
||
名望详情 = store.get("/fame/temp_result/detail")
|
||
if 总名望 > 0:
|
||
bmi = pow(提升率, 2) / 1e5 / pow((总名望 / 1e4 - 0.5), 3)
|
||
templabel = QLabel(输出窗口)
|
||
templabel.setText("名望 {}({})".format(str(总名望),
|
||
str(round(bmi, 2))))
|
||
templabel.setStyleSheet(
|
||
"QLabel{font-size:12px;color:rgb(255,255,255)}")
|
||
templabel.move(130, 110)
|
||
templabel.resize(100, 42)
|
||
templabel.setToolTip(
|
||
'系数计算公式:bmi = pow(提升率,2) / 1e5 / pow((总名望 / 1e4 - 0.5), 3)<br>'
|
||
+ str(名望详情))
|
||
|
||
except Exception as e:
|
||
logger.error(e)
|
||
|
||
输出显示 = MainWindow(输出窗口)
|
||
self.输出窗口列表.append(输出显示)
|
||
输出显示.show()
|
||
|
||
def 辟邪玉显示(self, x=0):
|
||
temp = ''
|
||
num = 0
|
||
for i in range(4):
|
||
k = self.辟邪玉选择[i].currentIndex()
|
||
if k > 0:
|
||
temp += trans('{$name}$value<br>',
|
||
name=辟邪玉列表[k].简称,
|
||
value=self.辟邪玉数值[i].currentData())
|
||
num += 1
|
||
辟邪玉颜色 = 颜色[{4: '史诗', 3: '传说', 2: '神器', 1: '稀有'}.get(num, '稀有')]
|
||
if x == 0:
|
||
return 辟邪玉颜色
|
||
else:
|
||
if num == 0:
|
||
return ''
|
||
else:
|
||
return trans('<font color="$color">{辟邪玉}:<br>$effect</font>',
|
||
color=辟邪玉颜色,
|
||
effect=temp[:-4])
|
||
|
||
def 装备描述_BUFF计算(self, property):
|
||
tempstr = []
|
||
希洛克选择状态 = [0] * 3
|
||
for i in range(len(self.希洛克选择状态)):
|
||
希洛克选择状态[i % 3] += self.希洛克选择状态[i]
|
||
奥兹玛选择状态 = [0] * 5
|
||
for i in range(len(self.奥兹玛选择状态)):
|
||
奥兹玛选择状态[i % 5] += self.奥兹玛选择状态[i]
|
||
for i in range(12):
|
||
装备 = equ.get_equ_by_name(property.装备栏[i])
|
||
tempstr.append(
|
||
trans(
|
||
'<font size="3" face="宋体"><font color="$color"> {$name}</font><br>',
|
||
color=颜色[装备.品质],
|
||
name=装备.名称))
|
||
if 装备.所属套装 != '无':
|
||
if 装备.所属套装 != '智慧产物':
|
||
y = ' ' + 装备.所属套装
|
||
else:
|
||
try:
|
||
y = ' ' + 装备.所属套装2
|
||
except Exception as e:
|
||
y = ' '
|
||
else:
|
||
y = ' '
|
||
if i == 11:
|
||
y += ' ' + 装备.类型
|
||
|
||
tempstr[i] += trans('{Lv}$level {$rarity} {$name}',
|
||
level=装备.等级,
|
||
rarity=装备.品质,
|
||
name=y)
|
||
if i < 5:
|
||
x = property.防具精通计算(i)
|
||
tempstr[i] += trans('<br>{防具精通}: ')
|
||
for n in property.防具精通属性:
|
||
if n != '体力':
|
||
tempstr[i] += n + ' +' + str(2 * x) + ' '
|
||
else:
|
||
tempstr[i] += n + ' +' + str(x) + ' '
|
||
|
||
if 装备.所属套装 != '智慧产物':
|
||
if property.强化等级[i] != 0:
|
||
if i in [9, 10]:
|
||
tempstr[i] += trans(
|
||
'<br><font color="#68D5ED">+$value {强化}:',
|
||
value=property.强化等级[i])
|
||
tempstr[i] += trans('{四维} +$value </font>',
|
||
value=左右计算(100, 装备.品质,
|
||
property.强化等级[i]))
|
||
|
||
if property.武器锻造等级 != 0:
|
||
if i == 11:
|
||
tempstr[i] += trans(
|
||
'<br><font color="#B36BFF">+$value {锻造} ',
|
||
value=property.武器锻造等级)
|
||
tempstr[i] += trans("{四维} +$value </font>",
|
||
value=锻造四维(装备.等级, 装备.品质,
|
||
property.武器锻造等级))
|
||
|
||
if property.是否增幅[i] == 1:
|
||
value = 增幅计算(装备.等级, 装备.品质, property.强化等级[i], property.增幅版本)
|
||
if tempstr[i] != '':
|
||
tempstr[i] += '<br>'
|
||
tempstr[i] += trans('<font color="#FF00FF">+$value {增幅}:',
|
||
value=property.强化等级[i])
|
||
if '体力' in property.类型:
|
||
tempstr[i] += trans('{异次元体力} +$value</font>',
|
||
value=value)
|
||
elif '精神' in property.类型:
|
||
tempstr[i] += trans('{异次元精神} +$value</font>',
|
||
value=value)
|
||
elif '智力' in property.类型:
|
||
tempstr[i] += trans('{异次元智力} +$value</font>',
|
||
value=value)
|
||
|
||
if tempstr[i] != '':
|
||
tempstr[i] += '<br>'
|
||
if 装备.所属套装 != '智慧产物':
|
||
weapon_index = property.黑鸦词条[0][0]
|
||
ring_index = property.黑鸦词条[1][0]
|
||
left_index = property.黑鸦词条[2][0]
|
||
pants_index = property.黑鸦词条[3][0]
|
||
|
||
# 下装
|
||
if i == 2 and pants_index != 0:
|
||
tempstr[i] += 装备.装备描述_变换属性_BUFF(property)
|
||
if pants_index == 1:
|
||
tempstr[i] += self.黑鸦属性描述(property.防具变换属性自适应[2], 0, 1)
|
||
else:
|
||
tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[3][1],
|
||
property.黑鸦词条[3][2], 1)
|
||
|
||
# 戒指
|
||
elif i == 7 and ring_index != 0:
|
||
tempstr[i] += 装备.装备描述_变换属性_BUFF(property)
|
||
if ring_index == 1:
|
||
tempstr[i] += self.黑鸦属性描述(property.防具变换属性自适应[0], 0, 1)
|
||
else:
|
||
tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[1][1], 0, 1)
|
||
|
||
# 辅助装备
|
||
elif i == 9 and left_index != 0:
|
||
tempstr[i] += 装备.装备描述_变换属性_BUFF(property)
|
||
if left_index == 1:
|
||
tempstr[i] += self.黑鸦属性描述(property.防具变换属性自适应[1], 0, 1)
|
||
else:
|
||
tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[2][1],
|
||
property.黑鸦词条[2][2], 1)
|
||
|
||
# 武器
|
||
elif i == 11 and weapon_index != 0:
|
||
|
||
tempstr[i] += 装备.装备描述_变换属性_BUFF(property)
|
||
|
||
# 当遴选为觉醒时
|
||
add_awake = weapon_index == 3 or (weapon_index == 1 and
|
||
property.武器变换属性自适应 == 0)
|
||
|
||
# 自选觉醒
|
||
if add_awake:
|
||
tempstr[i] += 'Lv50 技能等级+2<br>'
|
||
tempstr[i] += 'Lv85 技能等级+2<br>'
|
||
tempstr[i] += 'Lv100 技能等级+2<br>'
|
||
|
||
if weapon_index > 0:
|
||
if weapon_index == 1 and property.武器变换属性自适应 != 0:
|
||
tempstr[i] += self.黑鸦属性描述(property.武器变换属性自适应, 0)
|
||
elif weapon_index == 2:
|
||
tempstr[i] += self.黑鸦属性描述(property.黑鸦词条[0][0],
|
||
property.黑鸦词条[0][2])
|
||
|
||
if 装备.名称 == '世界树之精灵':
|
||
tempstr[i] += 'Lv50 技能等级+2<br>'
|
||
|
||
else:
|
||
tempstr[i] += 装备.装备描述_BUFF(property)
|
||
|
||
property.装备描述 = 1
|
||
|
||
部位 = 部位列表[i]
|
||
|
||
希洛克title = trans('<font color="#00A2E8">{希洛克融合属性}:</font><br>')
|
||
|
||
if 希洛克选择状态[0] == 1 and 部位 == '下装':
|
||
# tempstr[i]+='<br>'
|
||
tempstr[i] += 希洛克title
|
||
tempstr[i] += BUFF增加(property, BUFF力智per=1.03)
|
||
elif 希洛克选择状态[1] == 1 and 部位 == '戒指':
|
||
# tempstr[i]+='<br>'
|
||
tempstr[i] += 希洛克title
|
||
tempstr[i] += 觉醒增加(property, 一觉力智per=1.03)
|
||
elif 希洛克选择状态[2] == 1 and 部位 == '辅助装备':
|
||
# tempstr[i]+='<br>'
|
||
tempstr[i] += 希洛克title
|
||
tempstr[i] += 被动增加(property, 被动进图加成=80)
|
||
if self.角色属性B.希洛克武器词条 > 0 and i == 11:
|
||
|
||
# tempstr[i]+='<br>'
|
||
tempstr[i] += 希洛克title
|
||
|
||
if self.角色属性B.希洛克武器词条 == 1:
|
||
武器词条最高值 = self.角色属性B.自适应最高值
|
||
武器属性A = 武器属性A列表[武器词条最高值[0]]
|
||
武器属性B = 武器属性B列表[武器词条最高值[1]]
|
||
elif self.角色属性B.希洛克武器词条 == 2:
|
||
武器属性A = 武器属性A列表[self.武器融合属性A.currentIndex()]
|
||
武器属性B = 武器属性B列表[self.武器融合属性B.currentIndex()]
|
||
|
||
tempstr[i] += trans("{属性1}:<font style='color:gray'>$a</font>,$b$c$d<br>",\
|
||
a = 武器属性A.固定属性描述,\
|
||
b = 武器属性A.随机属性描述,\
|
||
c = 武器属性A.最大值,\
|
||
d = '%' if 武器属性A.间隔 / 10 < 1 else '')
|
||
if self.角色属性B.武器词条触发 == 1:
|
||
tempstr[i] += trans("{属性2}:<font style='color:gray'>$a</font>,$b$c$d<br>",\
|
||
a = 武器属性B.固定属性描述,\
|
||
b = 武器属性B.随机属性描述,\
|
||
c = 武器属性B.最大值,\
|
||
d = '%' if 武器属性B.间隔 / 10 < 1 else '')
|
||
|
||
if 部位 in 奥兹玛部位列表:
|
||
index = 奥兹玛部位列表.index(部位)
|
||
cur = -1
|
||
for j in range(0, 5):
|
||
if self.奥兹玛选择状态[j * 5 + index] == 1:
|
||
cur = j
|
||
break
|
||
if cur > 0:
|
||
tempstr[i] += trans(
|
||
'<font color="#00A2E8">{奥兹玛融合属性}:</font><br>')
|
||
tempstr[i] += str(OzmaList[cur](property))
|
||
property.装备描述 = 0
|
||
|
||
tempstr[i] = tooltip_trim(tempstr[i])
|
||
tempstr[i] += '</font>'
|
||
|
||
return tempstr
|
||
|
||
def 黑鸦属性描述(self, index, value=0, x=0):
|
||
变换属性 = 武器变换属性列表[index] if x == 0 else 装备变换属性列表[index]
|
||
value = 变换属性.最大值 - 变换属性.间隔 * value
|
||
if value // 10 < 1:
|
||
value = str(value) + "%"
|
||
return "<font style='color:gray'>{},</font>,{}{}<br>".format(
|
||
变换属性.固定属性描述, 变换属性.随机属性描述, value)
|
||
|
||
def 黑鸦属性计算(self, 属性: 辅助角色属性):
|
||
for i in range(4):
|
||
if self.黑鸦词条选项[i][0].currentIndex() == 2:
|
||
if i == 0:
|
||
武器属性 = 武器变换属性列表[self.黑鸦词条选项[i][1].currentIndex()]
|
||
武器属性数值 = self.黑鸦词条选项[i][3].currentText().replace('%', '')
|
||
武器属性.当前值 = int(武器属性数值 if 武器属性数值 != '' else 0)
|
||
武器属性.变换属性(属性)
|
||
else:
|
||
装备属性 = 装备变换属性列表[self.黑鸦词条选项[i][1].currentIndex()]
|
||
装备属性数值 = self.黑鸦词条选项[i][3].currentText().replace('%', '')
|
||
装备属性.当前值 = int(装备属性数值 if 装备属性数值 != '' else 0)
|
||
装备属性.变换属性(属性)
|
||
|
||
def 输入属性(self, 属性: 辅助角色属性, x=0):
|
||
|
||
self.exports_property(属性)
|
||
|
||
if x == 0:
|
||
self.辟邪玉属性计算(属性)
|
||
|
||
if sum(self.希洛克选择状态) == 3:
|
||
属性.武器词条触发 = 1
|
||
|
||
属性.希洛克武器词条 = self.希洛克武器选择.currentIndex()
|
||
|
||
if 属性.希洛克武器词条 == 2:
|
||
属性.残香词条 = [
|
||
self.武器融合属性A.currentIndex(),
|
||
self.武器融合属性A2.currentIndex(),
|
||
self.武器融合属性B.currentIndex(),
|
||
self.武器融合属性B2.currentIndex()
|
||
]
|
||
|
||
for i in range(len(self.复选框列表)):
|
||
if self.复选框列表[i].isChecked():
|
||
选项设置列表[i].适用效果(属性)
|
||
|
||
称号列表[self.称号.currentIndex()].城镇属性_BUFF(属性)
|
||
if 属性.称号触发:
|
||
称号列表[self.称号.currentIndex()].触发属性(属性)
|
||
|
||
宠物列表[self.宠物.currentIndex()].城镇属性_BUFF(属性)
|
||
|
||
for i in range(12):
|
||
属性.是否增幅[i] = self.装备打造选项[i].currentIndex()
|
||
属性.强化等级[i] = self.装备打造选项[i + 12].currentIndex()
|
||
属性.改造等级[i] = self.装备打造选项[i + 24].currentIndex()
|
||
属性.武器锻造等级 = self.装备打造选项[36].currentIndex()
|
||
属性.类型 = self.装备打造选项[37].currentData()
|
||
self.是否计算 = 1
|
||
|
||
if self.切装模式选项.isChecked() and self.计算模式选择.currentIndex(
|
||
) != 2 and 属性.技能表['BUFF'].是否启用 and 属性.技能表['一次觉醒'].是否启用:
|
||
属性.双装备模式 = 1
|
||
pass
|
||
|
||
黑鸦词条 = []
|
||
for i in range(4):
|
||
temp = [
|
||
self.黑鸦词条选项[i][0].currentIndex(),
|
||
self.黑鸦词条选项[i][1].currentIndex(),
|
||
self.黑鸦词条选项[i][3].currentIndex(),
|
||
]
|
||
黑鸦词条.append(temp)
|
||
属性.黑鸦词条 = 黑鸦词条
|
||
|
||
属性.希洛克选择状态 = self.希洛克选择状态
|
||
|
||
属性.奥兹玛选择状态 = self.奥兹玛选择状态
|
||
|
||
属性.觉醒择优系数 = float(self.觉醒择优系数.currentText())
|
||
|
||
self.基础属性(属性)
|
||
|
||
def 技能加成判断(self, name, 属性):
|
||
if name == 'Lv1-30(主动)Lv+1':
|
||
属性.技能等级加成('主动', 1, 30, 1)
|
||
return
|
||
if name == 'Lv1-50(主动)Lv+1':
|
||
属性.技能等级加成('主动', 1, 50, 1)
|
||
return
|
||
if name == 'Lv1-35(主动)Lv+1':
|
||
属性.技能等级加成('主动', 1, 35, 1)
|
||
return
|
||
if name == 'Lv30-50(主动)Lv+1':
|
||
属性.技能等级加成('主动', 30, 50, 1)
|
||
return
|
||
if name == 'Lv1-30(所有)Lv+1':
|
||
属性.技能等级加成('所有', 1, 30, 1)
|
||
return
|
||
if name == 'Lv1-50(所有)Lv+1':
|
||
属性.技能等级加成('所有', 1, 50, 1)
|
||
return
|
||
if name == 'Lv1-20(所有)Lv+1':
|
||
属性.技能等级加成('所有', 1, 20, 1)
|
||
return
|
||
if name == 'Lv20-30(所有)Lv+1':
|
||
属性.技能等级加成('所有', 20, 30, 1)
|
||
return
|
||
if name == 'Lv1-80(所有)Lv+1':
|
||
属性.技能等级加成('所有', 1, 80, 1)
|
||
return
|
||
|
||
if name == '一觉Lv+1':
|
||
属性.一觉Lv += 1
|
||
return
|
||
if name == '一觉Lv+2':
|
||
属性.一觉Lv += 2
|
||
return
|
||
if name == 'BUFFLv+1':
|
||
属性.BUFFLv += 1
|
||
return
|
||
if name == 'BUFFLv+2':
|
||
属性.BUFFLv += 2
|
||
return
|
||
if name == 'BUFFLv+3':
|
||
属性.BUFFLv += 3
|
||
return
|
||
if name == 'BUFFLv+4':
|
||
属性.BUFFLv += 4
|
||
return
|
||
for skill in 属性.技能表.values():
|
||
if name == skill.名称 + 'Lv+1':
|
||
skill.等级加成(1)
|
||
return
|
||
if name == 'BUFF力智+3%':
|
||
属性.BUFF增加(BUFF力量per=1.03, BUFF智力per=1.03)
|
||
if name == 'BUFF三攻+3%':
|
||
属性.BUFF增加(BUFF物攻per=1.03, BUFF魔攻per=1.03, BUFF独立per=1.03)
|
||
if name == 'BUFF力智、三攻+3%':
|
||
属性.BUFF增加(BUFF力量per=1.03,
|
||
BUFF智力per=1.03,
|
||
BUFF物攻per=1.03,
|
||
BUFF魔攻per=1.03,
|
||
BUFF独立per=1.03)
|
||
|
||
def 基础属性(self, 属性):
|
||
for i in range(3):
|
||
for j in range(16):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
try:
|
||
float(self.属性设置输入[i][j].text())
|
||
except Exception as e:
|
||
logger.error(e)
|
||
QMessageBox.information(
|
||
self, "错误", self.行名称[j + 17 if i > 2 else j] +
|
||
":" + self.列名称[i] + " 输入格式错误,已重置为空")
|
||
self.属性设置输入[i][j].setText('')
|
||
for i in range(3, 9):
|
||
for j in range(17):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
try:
|
||
float(self.属性设置输入[i][j].text())
|
||
except Exception as e:
|
||
logger.error(e)
|
||
QMessageBox.information(
|
||
self, "错误", self.行名称[j + 17 if i > 2 else j] +
|
||
":" + self.列名称[i] + " 输入格式错误,已重置为空")
|
||
self.属性设置输入[i][j].setText('')
|
||
|
||
temp = []
|
||
for j in range(len(self.属性设置输入[9])):
|
||
|
||
if self.属性设置输入[9][j].text() != '' and j in [1, 2, 5]:
|
||
try:
|
||
temp.append(float(self.属性设置输入[9][j].text()) / 100)
|
||
|
||
if temp[-1] > 1 or temp[-1] < -.2:
|
||
QMessageBox.information(
|
||
self, "错误",
|
||
self.修正列表名称[j] + " 输入数值超出[-20,100],已重置为空")
|
||
temp[-1] = 0.0
|
||
self.属性设置输入[9][j].setText('')
|
||
except Exception as e:
|
||
temp.append(0.0)
|
||
QMessageBox.information(self, "错误",
|
||
self.修正列表名称[j] + " 输入格式错误,已重置为空")
|
||
self.属性设置输入[9][j].setText('')
|
||
elif self.属性设置输入[9][j].text() != '' and j in [0, 3, 4, 6]:
|
||
try:
|
||
temp.append(int(self.属性设置输入[9][j].text()))
|
||
except Exception as e:
|
||
temp.append(0.0)
|
||
QMessageBox.information(self, "错误",
|
||
self.修正列表名称[j] + " 输入格式错误,已重置为空")
|
||
self.属性设置输入[9][j].setText('')
|
||
else:
|
||
temp.append(0.0)
|
||
# 神话补正
|
||
if 属性.类型 == '智力':
|
||
属性.转职被动智力 += int(temp[0])
|
||
属性.一觉被动力智 += int(temp[4])
|
||
else:
|
||
属性.守护恩赐体精 += int(temp[0])
|
||
属性.信念光环体精 += int(temp[4])
|
||
|
||
属性.BUFF力量per *= 1 + temp[1]
|
||
属性.BUFF智力per *= 1 + temp[1]
|
||
属性.BUFF物攻per *= 1 + temp[2]
|
||
属性.BUFF魔攻per *= 1 + temp[2]
|
||
属性.BUFF独立per *= 1 + temp[2]
|
||
属性.转职被动Lv += int(temp[3])
|
||
属性.一觉力智per *= 1 + temp[5]
|
||
属性.一觉力智 += int(temp[6])
|
||
for i in [0, 3, 6]:
|
||
for j in range(17):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
if i == 3 and j == 12:
|
||
属性.BUFF适用面板 += int(self.属性设置输入[i][j].text())
|
||
continue
|
||
if i == 0 and j in [1, 9, 16]:
|
||
属性.进图智力 += int(self.属性设置输入[i][j].text())
|
||
else:
|
||
属性.智力 += int(self.属性设置输入[i][j].text())
|
||
for j in range(17, 19):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
属性.BUFF补正力智 += int(self.属性设置输入[i][j].text())
|
||
for i in [1, 4, 7]:
|
||
for j in range(17):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
if i == 4 and j == 12:
|
||
属性.BUFF适用面板 += int(self.属性设置输入[i][j].text())
|
||
continue
|
||
if i == 1 and j in [1, 9, 16]:
|
||
属性.进图体力 += int(self.属性设置输入[i][j].text())
|
||
else:
|
||
属性.体力 += int(self.属性设置输入[i][j].text())
|
||
for j in range(17, 19):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
属性.BUFF补正体力 += int(self.属性设置输入[i][j].text())
|
||
for i in [2, 5, 8]:
|
||
for j in range(17):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
if i == 5 and j == 12:
|
||
属性.BUFF适用面板 += int(self.属性设置输入[i][j].text())
|
||
continue
|
||
if i == 2 and j in [1, 9, 16]:
|
||
属性.进图精神 += int(self.属性设置输入[i][j].text())
|
||
else:
|
||
属性.精神 += int(self.属性设置输入[i][j].text())
|
||
for j in range(17, 19):
|
||
if self.属性设置输入[i][j].text() != '':
|
||
属性.BUFF补正精神 += int(self.属性设置输入[i][j].text())
|
||
for i in self.技能设置输入:
|
||
self.技能加成判断(i.currentData(), 属性)
|
||
属性.护石计算()
|