Lv100版本源码上传
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,572 @@
|
||||
from PublicReference.utils.common import to_int
|
||||
from PublicReference.view.Page import Page
|
||||
from PyQt5.QtWidgets import QLabel, QGraphicsOpacityEffect
|
||||
|
||||
from PublicReference.equipment.buff.武器融合_buff import *
|
||||
from PublicReference.equipment.buff.黑鸦_buff import 装备变换属性列表, 武器变换属性列表
|
||||
from PublicReference.utils.constant import *
|
||||
from PublicReference.equipment.equ_list import *
|
||||
|
||||
|
||||
class 登记窗口(Page):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
def 初始化(self):
|
||||
self.初始化 = True
|
||||
self.初始化UI()
|
||||
self.初始化 = False
|
||||
|
||||
def 初始化UI(self):
|
||||
icon = store.get("/app/window/icon")
|
||||
bgImg = store.get("/app/window/background_image")
|
||||
self.setStyleSheet('''QToolTip {
|
||||
background-color: black;
|
||||
color: white;
|
||||
border: 0px
|
||||
}''')
|
||||
self.setFixedSize(960, 560)
|
||||
self.setWindowTitle("登记设置")
|
||||
self.setWindowIcon(icon)
|
||||
backgroundColorLabel = QLabel(self)
|
||||
backgroundColorLabel.resize(self.width(), self.height())
|
||||
backgroundColorLabel.setStyleSheet(
|
||||
"QLabel{background-color:rgba(50,50,50,1)}")
|
||||
graphicsEffect = QGraphicsOpacityEffect()
|
||||
graphicsEffect.setOpacity(0.1)
|
||||
backgroundImageLabel = QLabel(self)
|
||||
backgroundImageLabel.setPixmap(bgImg)
|
||||
backgroundImageLabel.move(0, int((self.height() - 1230) / 6))
|
||||
backgroundImageLabel.setGraphicsEffect(graphicsEffect)
|
||||
borderLabel = QLabel(self)
|
||||
borderLabel.resize(self.width() - 4, self.height() - 2)
|
||||
borderLabel.move(2, -1)
|
||||
borderLabel.setStyleSheet("QLabel{border:1px solid black}")
|
||||
|
||||
yesButton = QPushButton("应用", self)
|
||||
yesButton.move(700, 500)
|
||||
yesButton.resize(80, 24)
|
||||
yesButton.setStyleSheet(按钮样式)
|
||||
yesButton.clicked.connect(lambda _: self.设置换装())
|
||||
|
||||
cancelButton = QPushButton("取消", self)
|
||||
cancelButton.move(790, 500)
|
||||
cancelButton.resize(80, 24)
|
||||
cancelButton.setStyleSheet(按钮样式)
|
||||
cancelButton.clicked.connect(lambda _: self.closeWindow())
|
||||
|
||||
resetButton = QPushButton("全部重置", self)
|
||||
resetButton.move(700, 460)
|
||||
resetButton.resize(170, 24)
|
||||
resetButton.setStyleSheet(按钮样式)
|
||||
resetButton.clicked.connect(lambda _: self.reset())
|
||||
|
||||
self.初始化自选装备UI()
|
||||
self.初始化奥兹玛UI()
|
||||
self.初始化希洛克UI()
|
||||
self.初始化遴选UI()
|
||||
self.初始化残香UI()
|
||||
|
||||
def showEvent(self, event):
|
||||
self.初始化数据()
|
||||
return super().showEvent(event)
|
||||
|
||||
def 初始化数据(self):
|
||||
self.初始化装备()
|
||||
self.初始化希洛克()
|
||||
self.初始化奥兹玛()
|
||||
self.初始化遴选()
|
||||
|
||||
def 初始化装备(self):
|
||||
equips = store.first("/buffer/data/register/equips",
|
||||
"/buffer/memory/equips")
|
||||
amplifies = store.first("/buffer/data/register/amplifies",
|
||||
"/buffer/data/amplifies")
|
||||
for 部位 in range(len(equips)):
|
||||
self.自选装备[部位].setCurrentText(equips[部位])
|
||||
self.自选增幅选项[部位].setCurrentIndex(amplifies[部位])
|
||||
|
||||
self.站街面板输入.setText(
|
||||
str(store.get('/buffer/data/register/display_power', '')))
|
||||
|
||||
def 初始化希洛克(self):
|
||||
sirocos = store.first("/buffer/data/register/siroco",
|
||||
"/buffer/data/siroco")
|
||||
for i in range(len(sirocos)):
|
||||
self.希洛克选择(i, sirocos[i])
|
||||
weapon_fusion = store.first("/buffer/data/register/weapon_fusion",
|
||||
"/buffer/data/weapon_fusion", [0] * 4)
|
||||
self.武器融合属性A.setCurrentIndex(weapon_fusion[0])
|
||||
self.武器融合属性A2.setCurrentIndex(weapon_fusion[1])
|
||||
self.武器融合属性B.setCurrentIndex(weapon_fusion[2])
|
||||
self.武器融合属性B2.setCurrentIndex(weapon_fusion[3])
|
||||
|
||||
def 初始化奥兹玛(self):
|
||||
ozmas = store.first("/buffer/data/register/ozma", "/buffer/data/ozma")
|
||||
for i in range(len(ozmas)):
|
||||
self.奥兹玛选择(i, ozmas[i])
|
||||
|
||||
def 初始化遴选(self):
|
||||
black_purgatory = store.first("/buffer/data/register/black_purgatory",
|
||||
"/buffer/data/black_purgatory")
|
||||
for i in range(len(black_purgatory)):
|
||||
self.黑鸦词条[i][1].setCurrentIndex(black_purgatory[i][1])
|
||||
if len(black_purgatory[i]) > 3:
|
||||
self.黑鸦词条[i][3].setCurrentIndex(black_purgatory[i][3])
|
||||
|
||||
def reset(self):
|
||||
store.delete("^/buffer/data/register/.*$")
|
||||
self.初始化数据()
|
||||
|
||||
def 设置换装(self):
|
||||
if self.初始化:
|
||||
return
|
||||
自选 = []
|
||||
增幅 = []
|
||||
黑鸦 = []
|
||||
|
||||
for i in range(len(self.自选装备)):
|
||||
equip = self.自选装备[i].currentText()
|
||||
自选.append(equip)
|
||||
增幅.append(self.自选增幅选项[i].currentIndex() if equip != '无' else -1)
|
||||
for i in range(len(self.黑鸦词条)):
|
||||
黑鸦.append([
|
||||
2,
|
||||
self.黑鸦词条[i][1].currentIndex(),
|
||||
self.黑鸦词条[i][3].currentIndex(),
|
||||
])
|
||||
|
||||
store.set("/buffer/data/register/equips", 自选)
|
||||
store.set("/buffer/data/register/siroco", self.希洛克选择状态)
|
||||
store.set("/buffer/data/register/ozma", self.奥兹玛选择状态)
|
||||
store.set("/buffer/data/register/black_purgatory", 黑鸦)
|
||||
store.set("/buffer/data/register/amplifies", 增幅)
|
||||
store.set("/buffer/data/register/amplifies", 增幅)
|
||||
store.set("/buffer/data/register/weapon_fusion", [
|
||||
self.武器融合属性A.currentIndex(),
|
||||
self.武器融合属性A2.currentIndex(),
|
||||
self.武器融合属性B.currentIndex(),
|
||||
self.武器融合属性B2.currentIndex(),
|
||||
])
|
||||
|
||||
store.set('/buffer/data/register/display_power',
|
||||
to_int(self.站街面板输入.text()))
|
||||
|
||||
store.emit("/buffer/event/register_changed")
|
||||
self.closeWindow()
|
||||
|
||||
def 初始化自选装备UI(self):
|
||||
count = 0
|
||||
self.装备锁定 = []
|
||||
self.自选装备 = []
|
||||
self.自选增幅选项 = []
|
||||
|
||||
propertyA = store.get("/buffer/temp/property_a")
|
||||
|
||||
标签 = QLabel('锁定', self)
|
||||
标签.setAlignment(Qt.AlignCenter)
|
||||
标签.setStyleSheet(标签样式)
|
||||
标签.resize(70, 25)
|
||||
标签.move(20, 20)
|
||||
|
||||
标签 = QLabel('单件选择', self)
|
||||
标签.setAlignment(Qt.AlignCenter)
|
||||
标签.setStyleSheet(标签样式)
|
||||
标签.resize(240, 25)
|
||||
标签.move(70, 20)
|
||||
|
||||
for i in 部位列表:
|
||||
|
||||
lock = QCheckBox(i, self)
|
||||
lock.setStyleSheet(复选框样式)
|
||||
lock.resize(70, 22)
|
||||
lock.move(20, 50 + 30 * count)
|
||||
self.装备锁定.append(lock)
|
||||
|
||||
x = MyQComboBox(self)
|
||||
for j in range(32):
|
||||
x.addItem(str(j))
|
||||
x.resize(55, 20)
|
||||
x.move(90, 50 + 30 * count)
|
||||
self.自选增幅选项.append(x)
|
||||
|
||||
combo = MyQComboBox(self)
|
||||
|
||||
self.自选装备.append(combo)
|
||||
combo.resize(220, 22)
|
||||
combo.move(150, 50 + 30 * count)
|
||||
combo.addItem("无")
|
||||
for j in equ.get_equ_list():
|
||||
if j.部位 == i:
|
||||
if i == '武器':
|
||||
if j.类型 in propertyA.武器选项:
|
||||
combo.addItem(j.名称)
|
||||
else:
|
||||
combo.addItem(j.名称)
|
||||
count += 1
|
||||
x = 400
|
||||
y = 20
|
||||
|
||||
标签 = QLabel(trans('批量选择'), self)
|
||||
标签.setAlignment(Qt.AlignCenter)
|
||||
标签.setStyleSheet(标签样式)
|
||||
标签.resize(160, 25)
|
||||
标签.move(x, y)
|
||||
|
||||
套装类型 = ['防具', '首饰', '特殊', '上链左', '镯下右', '环鞋指']
|
||||
count = 0
|
||||
self.自选套装 = []
|
||||
for i in 套装类型:
|
||||
self.自选套装.append(MyQComboBox(self))
|
||||
套装名称 = []
|
||||
for j in equ.get_suit_list():
|
||||
if j.名称 not in 套装名称 and j.类型 == i:
|
||||
套装名称.append(j.名称)
|
||||
y += 30
|
||||
self.自选套装[count].addItems(套装名称)
|
||||
self.自选套装[count].resize(160, 22)
|
||||
self.自选套装[count].move(400, y)
|
||||
self.自选套装[count].activated.connect(
|
||||
lambda state, index=count: self.自选套装更改(index))
|
||||
count += 1
|
||||
|
||||
y += 30
|
||||
|
||||
神话部位选项 = MyQComboBox(self)
|
||||
神话部位选项.addItems(['神话部位:无', '神话部位:上衣', '神话部位:手镯', '神话部位:耳环'])
|
||||
神话部位选项.resize(160, 22)
|
||||
神话部位选项.move(400, y)
|
||||
神话部位选项.activated.connect(lambda index: self.神话部位更改(index))
|
||||
|
||||
y += 30
|
||||
|
||||
label = QLabel('站街面板', self)
|
||||
label.setAlignment(Qt.AlignCenter)
|
||||
label.setStyleSheet(标签样式)
|
||||
label.resize(60, 25)
|
||||
label.move(x, y)
|
||||
|
||||
self.站街面板输入 = QLineEdit(self)
|
||||
self.站街面板输入.move(x + 60, y)
|
||||
self.站街面板输入.resize(70, 24)
|
||||
self.站街面板输入.setStyleSheet(输入框样式)
|
||||
|
||||
y += 30
|
||||
|
||||
add = QPushButton('打造↑', self)
|
||||
add.clicked.connect(lambda state: self.批量打造(1))
|
||||
add.move(x, y)
|
||||
add.resize(40, 24)
|
||||
add.setStyleSheet(按钮样式)
|
||||
|
||||
minus = QPushButton('打造↓', self)
|
||||
minus.clicked.connect(lambda state: self.批量打造(-1))
|
||||
minus.move(x + 60, y)
|
||||
minus.resize(40, 24)
|
||||
minus.setStyleSheet(按钮样式)
|
||||
|
||||
reset = QPushButton('重置', self)
|
||||
reset.clicked.connect(lambda state: self.初始化装备())
|
||||
reset.move(x + 120, y)
|
||||
reset.resize(40, 24)
|
||||
reset.setStyleSheet(按钮样式)
|
||||
|
||||
def 批量打造(self, offset):
|
||||
for i in range(len(self.自选增幅选项)):
|
||||
y = max(min(self.自选增幅选项[i].currentIndex() + offset, 31), 0)
|
||||
self.自选增幅选项[i].setCurrentIndex(y)
|
||||
pass
|
||||
|
||||
def 自选套装更改(self, index):
|
||||
name = self.自选套装[index].currentText()
|
||||
for i in range(11):
|
||||
if self.装备锁定[i].isChecked():
|
||||
continue
|
||||
x = 0
|
||||
for j in equ.get_equ_list():
|
||||
if j.部位 == 部位列表[i]:
|
||||
x += 1
|
||||
if j.所属套装2 == name:
|
||||
self.自选装备[i].setCurrentIndex(x)
|
||||
break
|
||||
elif j.所属套装 == name and j.品质 != '神话':
|
||||
self.自选装备[i].setCurrentIndex(x)
|
||||
break
|
||||
|
||||
def 神话部位更改(self, index):
|
||||
部位 = [-1, 0, 5, 8]
|
||||
序号 = 部位[index]
|
||||
if 序号 != -1:
|
||||
当前 = equ.get_equ_by_name(self.自选装备[序号].currentText())
|
||||
x = 0
|
||||
for i in equ.get_equ_list():
|
||||
if 当前.部位 == i.部位:
|
||||
x += 1
|
||||
if i.品质 == '神话' and i.所属套装 == 当前.所属套装:
|
||||
self.自选装备[序号].setCurrentIndex(x)
|
||||
for k in [0, 5, 8]:
|
||||
if k != 序号:
|
||||
当前 = equ.get_equ_by_name(self.自选装备[k].currentText())
|
||||
if 当前.品质 == '神话':
|
||||
x = 0
|
||||
for i in equ.get_equ_list():
|
||||
if 当前.部位 == i.部位:
|
||||
x += 1
|
||||
if i.品质 == '史诗' and i.所属套装 == 当前.所属套装:
|
||||
self.自选装备[k].setCurrentIndex(x)
|
||||
pass
|
||||
|
||||
def 初始化奥兹玛UI(self):
|
||||
横坐标 = 640
|
||||
纵坐标 = 50
|
||||
名称 = ['阿斯特罗斯', '贝利亚斯', '雷德梅恩', '罗什巴赫', '泰玛特']
|
||||
self.奥兹玛套装按钮 = []
|
||||
self.奥兹玛单件按钮 = []
|
||||
self.奥兹玛遮罩透明度 = []
|
||||
self.奥兹玛选择状态 = [0] * 25
|
||||
count = 0
|
||||
for i in 名称:
|
||||
self.奥兹玛套装按钮.append(QPushButton(i, self))
|
||||
self.奥兹玛套装按钮[count].setStyleSheet(按钮样式)
|
||||
self.奥兹玛套装按钮[count].resize(75, 22)
|
||||
self.奥兹玛套装按钮[count].move(横坐标, 纵坐标 + 3 + count * 32)
|
||||
self.奥兹玛套装按钮[count].clicked.connect(
|
||||
lambda state, index=count: self.奥兹玛套装选择(index))
|
||||
for j in range(5):
|
||||
序号 = count * 5 + j
|
||||
图片 = QLabel(self)
|
||||
图片.setPixmap(
|
||||
QPixmap('./ResourceFiles/img/奥兹玛/' + str(序号) + '.png'))
|
||||
图片.resize(28, 28)
|
||||
图片.move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32)
|
||||
self.奥兹玛遮罩透明度.append(QGraphicsOpacityEffect())
|
||||
self.奥兹玛遮罩透明度[序号].setOpacity(0.5)
|
||||
self.奥兹玛单件按钮.append(QPushButton(self))
|
||||
self.奥兹玛单件按钮[序号].setStyleSheet(
|
||||
"background-color: rgb(0, 0, 0)")
|
||||
self.奥兹玛单件按钮[序号].resize(28, 28)
|
||||
self.奥兹玛单件按钮[序号].move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32)
|
||||
self.奥兹玛单件按钮[序号].setGraphicsEffect(self.奥兹玛遮罩透明度[序号])
|
||||
self.奥兹玛单件按钮[序号].clicked.connect(
|
||||
lambda state, index=序号: self.奥兹玛选择(index))
|
||||
count += 1
|
||||
|
||||
def 初始化希洛克UI(self):
|
||||
横坐标 = 700
|
||||
纵坐标 = 250
|
||||
名称 = trans(['奈克斯', '暗杀者', '卢克西', '守门人', '洛多斯'])
|
||||
self.希洛克套装按钮 = []
|
||||
self.希洛克单件按钮 = []
|
||||
self.希洛克遮罩透明度 = []
|
||||
self.希洛克选择状态 = [0] * 15
|
||||
count = 0
|
||||
for i in 名称:
|
||||
self.希洛克套装按钮.append(QPushButton(i, self))
|
||||
self.希洛克套装按钮[count].setStyleSheet(按钮样式)
|
||||
self.希洛克套装按钮[count].resize(75, 22)
|
||||
self.希洛克套装按钮[count].move(横坐标, 纵坐标 + 3 + count * 32)
|
||||
self.希洛克套装按钮[count].clicked.connect(
|
||||
lambda state, index=count: self.希洛克套装选择(index))
|
||||
for j in range(3):
|
||||
序号 = count * 3 + j
|
||||
图片 = QLabel(self)
|
||||
图片.setPixmap(
|
||||
QPixmap('./ResourceFiles/img/希洛克/' + str(序号) + '.png'))
|
||||
图片.resize(28, 28)
|
||||
图片.move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32)
|
||||
self.希洛克遮罩透明度.append(QGraphicsOpacityEffect())
|
||||
self.希洛克遮罩透明度[序号].setOpacity(0.5)
|
||||
self.希洛克单件按钮.append(QPushButton(self))
|
||||
self.希洛克单件按钮[序号].setStyleSheet(
|
||||
"background-color: rgb(0, 0, 0)")
|
||||
self.希洛克单件按钮[序号].resize(28, 28)
|
||||
self.希洛克单件按钮[序号].move(横坐标 + 60 + j * 30 + 20, 纵坐标 + count * 32)
|
||||
self.希洛克单件按钮[序号].setGraphicsEffect(self.希洛克遮罩透明度[序号])
|
||||
self.希洛克单件按钮[序号].clicked.connect(
|
||||
lambda state, index=序号: self.希洛克选择(index))
|
||||
count += 1
|
||||
|
||||
def 初始化残香UI(self):
|
||||
x = 400
|
||||
y = 320
|
||||
|
||||
标签 = QLabel('残香属性', self)
|
||||
标签.setAlignment(Qt.AlignCenter)
|
||||
标签.setStyleSheet(标签样式)
|
||||
标签.resize(240, 25)
|
||||
标签.move(x, y)
|
||||
|
||||
y += 30
|
||||
|
||||
self.武器融合属性A = MyQComboBox(self)
|
||||
for j in 武器属性A列表:
|
||||
self.武器融合属性A.addItem(j.固定属性描述)
|
||||
self.武器融合属性A.resize(60, 20)
|
||||
self.武器融合属性A.move(x, y)
|
||||
|
||||
self.武器融合属性A1 = MyQComboBox(self)
|
||||
self.武器融合属性A1.resize(90 + 75, 20)
|
||||
self.武器融合属性A1.move(x + 110 - 50 + 5, y)
|
||||
|
||||
self.武器融合属性A2 = MyQComboBox(self)
|
||||
self.武器融合属性A2.resize(50, 20)
|
||||
self.武器融合属性A2.move(x + 205 + 20 + 10, y)
|
||||
self.武器融合属性A.currentIndexChanged.connect(
|
||||
lambda: self.希洛克武器融合词条更新(self.武器融合属性A.currentIndex()))
|
||||
|
||||
y += 30
|
||||
self.武器融合属性B = MyQComboBox(self)
|
||||
for j in 武器属性B列表:
|
||||
self.武器融合属性B.addItem(j.固定属性描述)
|
||||
self.武器融合属性B.resize(60, 20)
|
||||
self.武器融合属性B.move(x, y)
|
||||
|
||||
self.武器融合属性B1 = MyQComboBox(self)
|
||||
self.武器融合属性B1.resize(90 + 75, 20)
|
||||
self.武器融合属性B1.move(x + 110 - 50 + 5, y)
|
||||
|
||||
self.武器融合属性B2 = MyQComboBox(self)
|
||||
self.武器融合属性B2.resize(50, 20)
|
||||
self.武器融合属性B2.move(x + 205 + 20 + 10, y)
|
||||
self.武器融合属性B.currentIndexChanged.connect(
|
||||
lambda: self.希洛克武器融合词条更新(self.武器融合属性B.currentIndex(), 1))
|
||||
|
||||
y += 30
|
||||
|
||||
tips = QLabel("提示:当选择无时,将按穿戴装备的设置", self)
|
||||
tips.move(x, y)
|
||||
tips.resize(240, 24)
|
||||
tips.setStyleSheet("QLabel{font-size:12px;color:rgb(211,167,106)}")
|
||||
|
||||
def 初始化遴选UI(self):
|
||||
横坐标 = 30
|
||||
纵坐标 = 420
|
||||
|
||||
名称 = ['武器', '戒指', '辅助装备', '下装']
|
||||
self.黑鸦词条 = []
|
||||
|
||||
title = QLabel("黑鸦遴选词条", self)
|
||||
title.setAlignment(Qt.AlignCenter)
|
||||
title.setStyleSheet(标签样式)
|
||||
title.resize(400, 25)
|
||||
title.move(横坐标, 纵坐标)
|
||||
|
||||
纵坐标 += 25
|
||||
|
||||
for i in range(4):
|
||||
x = QLabel(名称[i], self)
|
||||
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))
|
||||
"""
|
||||
只允许自选,为了保持兼容不移除
|
||||
"""
|
||||
tem[0].addItems(['自选数值'])
|
||||
tem[0].resize(0, 0)
|
||||
tem[0].move(横坐标 + 60, 纵坐标 + 25 * i)
|
||||
tem[0].currentIndexChanged.connect(
|
||||
lambda state, index=i: self.黑鸦词条更新(index))
|
||||
|
||||
tem.append(MyQComboBox(self))
|
||||
tem[1].resize(60, 20)
|
||||
tem[1].move(横坐标 + 156 - 91, 纵坐标 + 25 * i)
|
||||
|
||||
tem.append(MyQComboBox(self))
|
||||
tem[2].resize(90 + 75, 20)
|
||||
tem[2].move(横坐标 + 266 - 50 + 5 - 91, 纵坐标 + 25 * i)
|
||||
|
||||
tem.append(MyQComboBox(self))
|
||||
tem[3].resize(50, 20)
|
||||
tem[3].move(横坐标 + 361 + 20 + 10 - 91, 纵坐标 + 25 * i)
|
||||
for item in 装备变换属性列表:
|
||||
tem[1].addItem(item.固定属性描述)
|
||||
tem[1].currentIndexChanged.connect(
|
||||
lambda state, index=i: self.黑鸦随机词条更新(index))
|
||||
|
||||
self.黑鸦词条.append(tem)
|
||||
self.黑鸦词条更新(i)
|
||||
|
||||
def 希洛克套装选择(self, index):
|
||||
count = 1
|
||||
for i in range(index * 3, index * 3 + 3):
|
||||
count &= self.希洛克选择状态[i]
|
||||
count ^= 1
|
||||
for i in range(index * 3, index * 3 + 3):
|
||||
self.希洛克选择(i, count)
|
||||
|
||||
def 希洛克选择(self, index, value=-1):
|
||||
if value == -1:
|
||||
value = self.希洛克选择状态[index] ^ 1
|
||||
if value == 0:
|
||||
self.希洛克遮罩透明度[index].setOpacity(0.5)
|
||||
elif value == 1:
|
||||
for i in range(5):
|
||||
序号 = i * 3 + index % 3
|
||||
if self.希洛克选择状态[序号] == 1:
|
||||
self.希洛克遮罩透明度[序号].setOpacity(0.5)
|
||||
self.希洛克选择状态[序号] = 0
|
||||
self.希洛克遮罩透明度[index].setOpacity(0)
|
||||
|
||||
self.希洛克选择状态[index] = value
|
||||
|
||||
def 奥兹玛套装选择(self, index):
|
||||
count = 1
|
||||
for i in range(index * 5, index * 5 + 5):
|
||||
count &= self.奥兹玛选择状态[i]
|
||||
count ^= 1
|
||||
for i in range(index * 5, index * 5 + 5):
|
||||
self.奥兹玛选择(i, count)
|
||||
|
||||
def 奥兹玛选择(self, index, value=-1):
|
||||
if value == -1:
|
||||
value = self.奥兹玛选择状态[index] ^ 1
|
||||
if value == 0:
|
||||
self.奥兹玛遮罩透明度[index].setOpacity(0.5)
|
||||
elif value == 1:
|
||||
for i in range(5):
|
||||
序号 = i * 5 + index % 5
|
||||
if self.奥兹玛选择状态[序号] == 1:
|
||||
self.奥兹玛遮罩透明度[序号].setOpacity(0.5)
|
||||
self.奥兹玛选择状态[序号] = 0
|
||||
self.奥兹玛遮罩透明度[index].setOpacity(0)
|
||||
self.奥兹玛选择状态[index] = value
|
||||
|
||||
def 希洛克武器融合词条更新(self, index, x=0):
|
||||
if x == 0:
|
||||
self.武器融合属性A1.clear()
|
||||
self.武器融合属性A2.clear()
|
||||
属性A = 武器属性A列表[index]
|
||||
self.武器融合属性A2.addItems(属性A.range())
|
||||
self.武器融合属性A1.addItem(属性A.随机属性描述)
|
||||
elif x == 1:
|
||||
self.武器融合属性B1.clear()
|
||||
self.武器融合属性B2.clear()
|
||||
属性B = 武器属性B列表[index]
|
||||
self.武器融合属性B2.addItems(属性B.range())
|
||||
self.武器融合属性B1.addItem(属性B.随机属性描述)
|
||||
|
||||
def 黑鸦词条更新(self, index):
|
||||
for i in range(1, 4):
|
||||
self.黑鸦词条[index][i].setEnabled(True)
|
||||
self.黑鸦词条[index][i].setStyleSheet(下拉框样式)
|
||||
|
||||
def 黑鸦随机词条更新(self, i):
|
||||
index = self.黑鸦词条[i][1].currentIndex()
|
||||
self.黑鸦词条[i][2].clear()
|
||||
self.黑鸦词条[i][3].clear()
|
||||
if index == 0:
|
||||
return
|
||||
变换属性 = 武器变换属性列表[index] if i == 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(变换属性.随机属性描述)
|
||||
@@ -0,0 +1,938 @@
|
||||
from ctypes import *
|
||||
|
||||
from PublicReference.common import *
|
||||
from PublicReference.equipment.buff.宠物_buff import *
|
||||
from PublicReference.equipment.buff.武器融合_buff import *
|
||||
from PublicReference.equipment.buff.称号_buff import *
|
||||
from PublicReference.equipment.buff.融合_奥兹玛_buff import OzmaList
|
||||
from PublicReference.equipment.buff.融合_希洛克_buff import SirocoList
|
||||
from PublicReference.equipment.buff.辟邪玉_buff import *
|
||||
from PublicReference.equipment.buff.黑鸦_buff import *
|
||||
from PublicReference.equipment.buff.护石_buff import *
|
||||
from PublicReference.equipment.buff.描述_buff import *
|
||||
from PublicReference.utils.common import to_int
|
||||
|
||||
|
||||
class 技能:
|
||||
名称 = ''
|
||||
备注 = ''
|
||||
所在等级 = 0
|
||||
等级上限 = 0
|
||||
等级 = 0
|
||||
基础等级 = 0
|
||||
是否主动 = 0
|
||||
站街生效 = 0
|
||||
等级溢出 = 0
|
||||
|
||||
是否启用 = 1
|
||||
技能序号 = 0
|
||||
技能表 = {}
|
||||
|
||||
def 等级加成(self, x):
|
||||
if self.等级 != 0:
|
||||
if self.等级 + x > self.等级上限:
|
||||
self.等级 = self.等级上限
|
||||
if self.基础等级 != self.等级上限:
|
||||
self.等级溢出 = 1
|
||||
else:
|
||||
self.等级 += x
|
||||
|
||||
def 结算统计(self, context=None):
|
||||
return [0, 0, 0, 0, 0, 0, 0, 0]
|
||||
# 智力 体力 精神 力量 智力 物攻 魔攻 独立
|
||||
|
||||
|
||||
class 被动技能(技能):
|
||||
是否主动 = 0
|
||||
进图加成 = 0
|
||||
|
||||
|
||||
class 主动技能(技能):
|
||||
是否主动 = 1
|
||||
适用数值 = 0
|
||||
|
||||
|
||||
class 觉醒技能(主动技能):
|
||||
所在等级 = 50
|
||||
等级上限 = 40
|
||||
基础等级 = 12
|
||||
一觉力智 = 0
|
||||
一觉力智per = 0
|
||||
# 28 原力智 941 测试修改为 939
|
||||
力智 = [
|
||||
0, 43, 57, 74, 91, 111, 131, 153, 176, 201, 228, 255, 284, 315, 346,
|
||||
379, 414, 449, 487, 526, 567, 608, 651, 696, 741, 789, 838, 888, 939,
|
||||
993, 1047, 1103, 1160, 1219, 1278, 1340, 1403, 1467, 1533, 1600, 1668
|
||||
]
|
||||
|
||||
def 结算统计(self, context, compute_3rd_awake=False):
|
||||
if not compute_3rd_awake and self.名称 in context.技能表['三次觉醒'].关联技能:
|
||||
return [0] * 8
|
||||
倍率 = self.适用数值 / 750 + 1
|
||||
x = (self.力智[self.等级] + self.一觉力智) * 倍率
|
||||
values = [
|
||||
0, 0, 0,
|
||||
int(round(x * self.一觉力智per)),
|
||||
int(round(x * self.一觉力智per)), 0, 0, 0
|
||||
]
|
||||
return values
|
||||
# 智力 体力 精神 力量 智力 物攻 魔攻 独立
|
||||
|
||||
def 技能面板(self):
|
||||
temp = []
|
||||
temp.append(self.名称)
|
||||
temp.append(
|
||||
int(round((self.力智[self.等级] + self.一觉力智) * self.一觉力智per, 0)))
|
||||
temp.append(
|
||||
int(round((self.力智[self.等级] + self.一觉力智) * self.一觉力智per, 0)))
|
||||
return temp
|
||||
|
||||
|
||||
class 三觉技能(主动技能):
|
||||
所在等级 = 100
|
||||
等级上限 = 40
|
||||
基础等级 = 2
|
||||
绑定一觉力智per = 1.08
|
||||
绑定二觉力智per = 0.23
|
||||
关联技能 = []
|
||||
|
||||
def 结算统计(self, context):
|
||||
技能表 = context.技能表
|
||||
awake = 技能表['一次觉醒']
|
||||
if awake.是否启用:
|
||||
values = awake.结算统计(context, True)
|
||||
倍率 = self.加成倍率(awake.名称 in self.关联技能)
|
||||
return [int(round(i * 倍率)) for i in values]
|
||||
return [0] * 8
|
||||
|
||||
def 加成倍率(self, bind_awake):
|
||||
if bind_awake:
|
||||
return round(1.08 + self.等级 * 0.01, 2)
|
||||
else:
|
||||
return round(0.23 + self.等级 * 0.01, 2)
|
||||
|
||||
|
||||
BUFF影响技能 = ['勇气祝福', '勇气圣歌', '荣誉祝福', '禁忌诅咒', '死命召唤']
|
||||
|
||||
|
||||
class 辅助角色属性(属性):
|
||||
职业分类 = 'BUFF'
|
||||
C力智 = 5000
|
||||
C三攻 = 3000
|
||||
系统奶系数 = 0
|
||||
系统奶基数 = 0
|
||||
排行类型 = '物理百分比'
|
||||
|
||||
类型 = '固伤'
|
||||
|
||||
称号触发 = False
|
||||
|
||||
排行系数 = 0
|
||||
站街系数 = 0
|
||||
|
||||
百分比体精 = 0.0
|
||||
|
||||
被动进图加成 = 0
|
||||
守护恩赐体精 = 0
|
||||
转职被动智力 = 0
|
||||
|
||||
转职被动Lv = 0
|
||||
一觉被动Lv = 0
|
||||
|
||||
BUFFLv = 0
|
||||
BUFF力量per = 1
|
||||
BUFF智力per = 1
|
||||
BUFF物攻per = 1
|
||||
BUFF魔攻per = 1
|
||||
BUFF独立per = 1
|
||||
一觉Lv = 0
|
||||
一觉力智 = 0
|
||||
一觉力智per = 1
|
||||
|
||||
BUFF力量 = 0
|
||||
BUFF智力 = 0
|
||||
BUFF物攻 = 0
|
||||
BUFF魔攻 = 0
|
||||
BUFF独立 = 0
|
||||
|
||||
一觉被动力智 = 0
|
||||
信念光环体精 = 0
|
||||
|
||||
BUFF适用面板 = 0
|
||||
BUFF补正力智 = 0
|
||||
BUFF补正体力 = 0
|
||||
BUFF补正精神 = 0
|
||||
|
||||
一觉序号 = 0
|
||||
二觉序号 = 0
|
||||
三觉序号 = 0
|
||||
双装备模式 = 0
|
||||
切换详情 = '无'
|
||||
|
||||
次数输入 = []
|
||||
# 是否为输出装备描述
|
||||
装备描述 = 0
|
||||
|
||||
希洛克武器词条 = 0
|
||||
自适应最高值 = []
|
||||
武器词条触发 = 0
|
||||
产物升级 = 0
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.次数输入 = []
|
||||
self.残香词条 = [0] * 4
|
||||
self.黑鸦词条 = [[0] * 4] * 4
|
||||
self.希洛克选择状态 = [0] * 15
|
||||
self.奥兹玛选择状态 = [0] * 25
|
||||
self.自适应最高值 = []
|
||||
self.技能表 = {}
|
||||
self.觉醒择优系数 = 1.0
|
||||
self.武器词条触发 = 0
|
||||
self.buff_type = 0
|
||||
self.buff_rate = 1
|
||||
self.护石栏 = [0] * 3
|
||||
|
||||
def get_data(self):
|
||||
buff = self.技能表['BUFF']
|
||||
awake = self.技能表['一次觉醒']
|
||||
|
||||
other_power = 0
|
||||
other_attack = 0
|
||||
|
||||
ignores = ['BUFF', '一次觉醒', '三次觉醒', '死命召唤', '勇气圣歌']
|
||||
|
||||
for i in self.技能表.keys():
|
||||
if i not in ignores:
|
||||
skill = self.技能表[i]
|
||||
data = skill.结算统计(self)
|
||||
other_power += data[3]
|
||||
other_attack += data[5]
|
||||
|
||||
in_int_data = (ctypes.c_int * 12)()
|
||||
in_int_data[0] = self.buff_type
|
||||
in_int_data[1] = int(buff.适用数值)
|
||||
in_int_data[2] = buff.等级
|
||||
in_int_data[3] = int(buff.BUFF力量)
|
||||
in_int_data[4] = int(buff.BUFF物攻)
|
||||
in_int_data[5] = int(awake.适用数值)
|
||||
in_int_data[6] = awake.等级
|
||||
in_int_data[7] = int(awake.一觉力智)
|
||||
in_int_data[8] = int(other_power)
|
||||
in_int_data[9] = int(other_attack)
|
||||
in_int_data[10] = int(self.C力智)
|
||||
in_int_data[11] = int(self.C三攻)
|
||||
|
||||
third_awake = self.技能表['三次觉醒']
|
||||
|
||||
awake_rate = 1
|
||||
if third_awake.是否启用:
|
||||
awake_rate = third_awake.加成倍率(awake.名称 in third_awake.关联技能)
|
||||
awake_rate = awake_rate + 1 if awake_rate < 1 else awake_rate
|
||||
|
||||
awake_rate = awake_rate if awake.是否启用 else 0
|
||||
|
||||
buff_rate = self.buff_rate if buff.是否启用 else 0
|
||||
|
||||
in_double_data = (ctypes.c_double * 8)()
|
||||
in_double_data[0] = self.觉醒择优系数
|
||||
in_double_data[1] = buff_rate
|
||||
in_double_data[2] = buff.BUFF力量per
|
||||
in_double_data[3] = buff.BUFF物攻per
|
||||
in_double_data[4] = awake_rate
|
||||
in_double_data[5] = awake.一觉力智per
|
||||
in_double_data[6] = self.系统奶系数
|
||||
in_double_data[7] = self.系统奶基数
|
||||
return in_int_data, in_double_data
|
||||
|
||||
def 穿戴装备(self, 装备, 套装=None):
|
||||
self.装备栏 = 装备
|
||||
self.套装栏 = 套装
|
||||
if 套装 is None or len(套装) == 0:
|
||||
self.套装栏 = equ.get_suits_by_equips(装备)
|
||||
self.武器类型 = equ.get_equ_by_name(self.装备栏[11]).类型
|
||||
|
||||
def 力智固定加成(self, x=0):
|
||||
return 力智固定加成(self, x)
|
||||
|
||||
def 体精固定加成(self, x=0):
|
||||
return 体精固定加成(self, x)
|
||||
|
||||
def BUFF增加(self,
|
||||
BUFFLv=0,
|
||||
BUFF力量=0,
|
||||
BUFF智力=0,
|
||||
BUFF力量per=1,
|
||||
BUFF智力per=1,
|
||||
BUFF物攻=0,
|
||||
BUFF魔攻=0,
|
||||
BUFF独立=0,
|
||||
BUFF物攻per=1,
|
||||
BUFF魔攻per=1,
|
||||
BUFF独立per=1):
|
||||
return BUFF增加(self, BUFFLv, BUFF力量, BUFF智力, BUFF力量per, BUFF智力per,
|
||||
BUFF物攻, BUFF魔攻, BUFF独立, BUFF物攻per, BUFF魔攻per, BUFF独立per)
|
||||
|
||||
def 被动增加(self,
|
||||
守护恩赐体精=0,
|
||||
转职被动Lv=0,
|
||||
转职被动智力=0,
|
||||
信念光环Lv=0,
|
||||
信念光环体精=0,
|
||||
一觉被动Lv=0,
|
||||
一觉被动力智=0):
|
||||
if 信念光环Lv > 0 and 一觉被动Lv == 0:
|
||||
一觉被动Lv = 信念光环Lv
|
||||
return 被动增加(self, 转职被动Lv, 转职被动智力, 守护恩赐体精, 信念光环体精, 一觉被动Lv, 一觉被动力智)
|
||||
|
||||
def 觉醒增加(self, 一觉Lv=0, 一觉力智=0, 一觉力智per=1):
|
||||
return 觉醒增加(self, 一觉Lv, 一觉力智, 一觉力智per)
|
||||
|
||||
def 系数数值站街(self):
|
||||
pass
|
||||
|
||||
def 系数数值进图(self):
|
||||
pass
|
||||
|
||||
def 防具精通计算(self, i):
|
||||
temp = equ.get_equ_by_name(self.装备栏[i])
|
||||
if temp.所属套装 != '智慧产物':
|
||||
return 精通体力(temp.等级, temp.品质, self.强化等级[i], 部位列表[i])
|
||||
else:
|
||||
return 精通体力(temp.等级, temp.品质, self.改造等级[i], 部位列表[i])
|
||||
|
||||
def 装备基础(self):
|
||||
for i in range(5):
|
||||
# 精通
|
||||
temp = equ.get_equ_by_name(self.装备栏[i])
|
||||
x = self.防具精通计算(i)
|
||||
if '智力' in self.防具精通属性:
|
||||
self.智力 += x * 2
|
||||
if '体力' in self.防具精通属性:
|
||||
self.体力 += x
|
||||
if '精神' in self.防具精通属性:
|
||||
self.精神 += x * 2
|
||||
# 装备属性
|
||||
self.智力 += temp.智力['板甲']
|
||||
self.体力 += temp.体力['板甲']
|
||||
self.精神 += temp.精神['板甲']
|
||||
|
||||
for i in [9, 10]:
|
||||
temp = equ.get_equ_by_name(self.装备栏[i])
|
||||
if temp.所属套装 != '智慧产物':
|
||||
x = 左右计算(temp.等级, temp.品质, self.强化等级[i])
|
||||
self.智力 += x
|
||||
self.体力 += x
|
||||
self.精神 += x
|
||||
for i in range(12):
|
||||
temp = equ.get_equ_by_name(self.装备栏[i])
|
||||
if self.是否增幅[i] and temp.所属套装 != '智慧产物':
|
||||
x = 增幅计算(temp.等级, temp.品质, self.强化等级[i], self.增幅版本)
|
||||
if '智力' in self.类型:
|
||||
self.智力 += x
|
||||
if '体力' in self.类型:
|
||||
self.体力 += x
|
||||
if '精神' in self.类型:
|
||||
self.精神 += x
|
||||
for i in [5, 6, 7, 8, 9, 10]:
|
||||
temp = equ.get_equ_by_name(self.装备栏[i])
|
||||
self.智力 += temp.智力
|
||||
self.体力 += temp.体力
|
||||
self.精神 += temp.精神
|
||||
|
||||
temp = equ.get_equ_by_name(self.装备栏[11])
|
||||
if temp.所属套装 != '智慧产物':
|
||||
四维 = 锻造四维(temp.等级, temp.品质, self.武器锻造等级)
|
||||
self.智力 += temp.智力 + 四维
|
||||
self.体力 += temp.体力 + 四维
|
||||
self.精神 += temp.精神 + 四维
|
||||
|
||||
def 单技能等级加成(self, 名称, lv):
|
||||
if self.装备描述 == 1:
|
||||
return "{} Lv +{}<br>".format(名称, lv)
|
||||
else:
|
||||
for i in self.技能表.keys():
|
||||
if i == 名称:
|
||||
self.技能表[i].等级加成(lv)
|
||||
return ''
|
||||
|
||||
def 等级溢出判断(self, 装备, 套装):
|
||||
self.穿戴装备(装备, 套装)
|
||||
self.装备属性计算()
|
||||
temp = []
|
||||
for skill in self.技能表.values():
|
||||
if skill.等级溢出 == 1:
|
||||
temp.append(skill.名称)
|
||||
return temp
|
||||
|
||||
def 技能等级加成(self, 加成类型, min, max, lv, 可变=0):
|
||||
lv = int(lv)
|
||||
if self.装备描述 == 1:
|
||||
if 加成类型 == "所有":
|
||||
if min == max:
|
||||
return "Lv{} 技能等级+{}<br>".format(min, lv)
|
||||
else:
|
||||
return "Lv{}-{} 技能等级+{}<br>".format(min, max, lv)
|
||||
else:
|
||||
if min == max:
|
||||
return "Lv{} 主动技能等级+{}<br>".format(min, lv)
|
||||
else:
|
||||
return "Lv{}-{} 主动技能等级+{}<br>".format(min, max, lv)
|
||||
else:
|
||||
for skill in self.技能表.values():
|
||||
if skill.所在等级 >= min and skill.所在等级 <= max:
|
||||
if 加成类型 == '所有':
|
||||
skill.等级加成(lv)
|
||||
else:
|
||||
if skill.是否主动 == 1:
|
||||
skill.等级加成(lv)
|
||||
# if 可变 > 0:
|
||||
# self.变换词条[可变-1] = [6,2,14 + (2 if 可变 > 1 else 4), 14 + (9 if 可变 > 1 else 17)]
|
||||
|
||||
return ''
|
||||
|
||||
def 提升率计算(self, 总数据, x=0):
|
||||
|
||||
力量合计 = 0
|
||||
智力合计 = 0
|
||||
物攻合计 = 0
|
||||
魔攻合计 = 0
|
||||
独立合计 = 0
|
||||
|
||||
for i in 总数据:
|
||||
力量合计 += i[3]
|
||||
智力合计 += i[4]
|
||||
物攻合计 += i[5]
|
||||
魔攻合计 += i[6]
|
||||
独立合计 += i[7]
|
||||
|
||||
x1 = (
|
||||
(self.C力智 +
|
||||
(self.C力智 - 950) * self.系统奶系数 + self.系统奶基数) / 250 + 1) * self.C三攻
|
||||
|
||||
if self.排行类型 == '物理百分比':
|
||||
a = 力量合计
|
||||
b = 物攻合计
|
||||
elif self.排行类型 == '魔法百分比':
|
||||
a = 智力合计
|
||||
b = 魔攻合计
|
||||
elif self.排行类型 == '物理固伤':
|
||||
a = 力量合计
|
||||
b = 独立合计
|
||||
elif self.排行类型 == '魔法固伤':
|
||||
a = 智力合计
|
||||
b = 独立合计
|
||||
|
||||
x2 = ((self.C力智 +
|
||||
(self.C力智 - 950) * self.系统奶系数 + self.系统奶基数 + a) / 250 +
|
||||
1) * (self.C三攻 + b)
|
||||
return [x2 / x1 * 100, int(self.站街系数), a, b][x]
|
||||
|
||||
def 适用数值计算(self):
|
||||
self.专属词条计算()
|
||||
for skill in self.技能表.values():
|
||||
if skill.是否启用:
|
||||
结算 = skill.结算统计(self)
|
||||
self.智力 += 结算[0]
|
||||
self.体力 += 结算[1]
|
||||
self.精神 += 结算[2]
|
||||
|
||||
self.进图智力 += self.智力
|
||||
self.进图体力 += self.体力
|
||||
self.进图精神 += self.精神
|
||||
|
||||
self.进图体力 *= 1 + self.百分比体精
|
||||
self.进图精神 *= 1 + self.百分比体精
|
||||
|
||||
进图 = 0
|
||||
BUFF补正 = 0
|
||||
if self.类型 == '智力':
|
||||
进图 = self.进图智力
|
||||
BUFF补正 = self.BUFF补正力智
|
||||
elif self.类型 == '体力':
|
||||
进图 = self.进图体力
|
||||
BUFF补正 = self.BUFF补正体力
|
||||
elif self.类型 == '精神':
|
||||
进图 = self.进图精神
|
||||
BUFF补正 = self.BUFF补正精神
|
||||
self.技能表['一次觉醒'].适用数值 = 进图
|
||||
self.技能表['BUFF'].适用数值 = 进图 + BUFF补正
|
||||
return 进图
|
||||
|
||||
# 返回可能的组合列表
|
||||
def 装备替换(self, 属性: 属性) -> 属性:
|
||||
套装栏 = []
|
||||
for i in 属性.套装栏:
|
||||
套装栏.append(i.split('[')[0])
|
||||
if len(套装栏) < 7 or self.排行系数 == 1:
|
||||
return [deepcopy(属性)]
|
||||
|
||||
匹配1 = [防具套装, 上链左套装, 上链左套装, 镯下右套装, 镯下右套装, 环鞋指套装, 环鞋指套装]
|
||||
匹配0 = [防具套装, 上链左套装, 防具套装, 镯下右套装, 防具套装, 环鞋指套装, 防具套装]
|
||||
匹配 = [防具套装, 防具套装, 防具套装, 首饰套装, 首饰套装, 特殊套装, 特殊套装]
|
||||
|
||||
count = []
|
||||
count2 = 0
|
||||
|
||||
for i in range(7):
|
||||
# 3332散搭
|
||||
if 套装栏[i] in 匹配1[i]:
|
||||
count.append(1)
|
||||
elif 套装栏[i] in 匹配0[i]:
|
||||
count.append(0)
|
||||
else:
|
||||
count.append(-9)
|
||||
# 3233双防具
|
||||
if 套装栏[i] in 匹配[i]:
|
||||
count2 += 1
|
||||
|
||||
sumcount = sum(count)
|
||||
|
||||
if sumcount == 7:
|
||||
x1 = deepcopy(属性)
|
||||
x2 = deepcopy(属性)
|
||||
x3 = deepcopy(属性)
|
||||
x4 = deepcopy(属性)
|
||||
num = 0
|
||||
index = [6, 5, 7]
|
||||
for i in [x2, x3, x4]:
|
||||
i.装备栏[num * 2] = equ.get_equ_by_index(
|
||||
equ.get_equ_by_name(i.装备栏[1]).所属套装, '史诗',
|
||||
equ.get_equ_by_name(i.装备栏[num * 2]).部位).名称
|
||||
i.套装栏[2 * num + 2] = i.套装栏[2 * num + 2].replace(
|
||||
equ.get_equ_by_name(i.装备栏[index[num]]).所属套装,
|
||||
equ.get_equ_by_name(i.装备栏[1]).所属套装)
|
||||
i.切换详情 = trans(equ.get_equ_by_name(
|
||||
i.装备栏[num * 2]).部位) + ':' + trans(
|
||||
x1.装备栏[num * 2]) + ' → ' + trans(i.装备栏[num * 2])
|
||||
num += 1
|
||||
return [x1, x2, x3, x4]
|
||||
elif sumcount == 6:
|
||||
index = count.index(0)
|
||||
部位 = {2: 6, 4: 5, 6: 7}
|
||||
x1 = deepcopy(属性)
|
||||
x2 = deepcopy(属性)
|
||||
x2.装备栏[index - 2] = equ.get_equ_by_index(
|
||||
equ.get_equ_by_name(x2.装备栏[部位[index]]).所属套装, '史诗',
|
||||
equ.get_equ_by_name(x2.装备栏[index - 2]).部位).名称
|
||||
x2.套装栏[index] = x2.套装栏[index].replace(
|
||||
equ.get_equ_by_name(x2.装备栏[1]).所属套装,
|
||||
equ.get_equ_by_name(x2.装备栏[部位[index]]).所属套装)
|
||||
x2.切换详情 = trans(equ.get_equ_by_name(
|
||||
x2.装备栏[index - 2]).部位) + ':' + trans(
|
||||
x1.装备栏[index - 2]) + ' → ' + trans(x2.装备栏[index - 2])
|
||||
return [x1, x2]
|
||||
elif count2 == 7 and 套装栏[1] != 套装栏[2]:
|
||||
x1 = deepcopy(属性)
|
||||
x2 = deepcopy(属性)
|
||||
x3 = deepcopy(属性)
|
||||
x4 = deepcopy(属性)
|
||||
x5 = deepcopy(属性)
|
||||
两件套名称 = 属性.套装栏[2].split('[')[0]
|
||||
三件套名称 = 属性.套装栏[1].split('[')[0]
|
||||
x2.套装栏[1] = x2.套装栏[1].replace(三件套名称, 两件套名称)
|
||||
x3.套装栏[1] = x3.套装栏[1].replace(三件套名称, 两件套名称)
|
||||
x4.套装栏[1] = x4.套装栏[1].replace(三件套名称, 两件套名称)
|
||||
x5.套装栏[2] = x5.套装栏[2].replace(两件套名称 + '[2]', 三件套名称 + '[5]')
|
||||
可更换部位 = []
|
||||
不可更换部位 = []
|
||||
for i in range(5):
|
||||
if equ.get_equ_by_name(属性.装备栏[i]).所属套装 == 三件套名称:
|
||||
可更换部位.append(i)
|
||||
else:
|
||||
不可更换部位.append(i)
|
||||
x2.装备栏[可更换部位[0]] = equ.get_equ_by_index(两件套名称, '史诗',
|
||||
部位列表[可更换部位[0]]).名称
|
||||
x3.装备栏[可更换部位[1]] = equ.get_equ_by_index(两件套名称, '史诗',
|
||||
部位列表[可更换部位[1]]).名称
|
||||
x4.装备栏[可更换部位[2]] = equ.get_equ_by_index(两件套名称, '史诗',
|
||||
部位列表[可更换部位[2]]).名称
|
||||
x5.装备栏[不可更换部位[0]] = equ.get_equ_by_index(三件套名称, '史诗',
|
||||
部位列表[不可更换部位[0]]).名称
|
||||
x5.装备栏[不可更换部位[1]] = equ.get_equ_by_index(三件套名称, '史诗',
|
||||
部位列表[不可更换部位[1]]).名称
|
||||
|
||||
x2.切换详情 = trans(部位列表[可更换部位[0]]) + ':' + trans(
|
||||
属性.装备栏[可更换部位[0]]) + ' → ' + trans(x2.装备栏[可更换部位[0]])
|
||||
x3.切换详情 = trans(部位列表[可更换部位[1]]) + ':' + trans(
|
||||
属性.装备栏[可更换部位[1]]) + ' → ' + trans(x3.装备栏[可更换部位[1]])
|
||||
x4.切换详情 = trans(部位列表[可更换部位[2]]) + ':' + trans(
|
||||
属性.装备栏[可更换部位[2]]) + ' → ' + trans(x4.装备栏[可更换部位[2]])
|
||||
x5.切换详情 = trans(属性.套装栏[2]) + ' → ' + trans(x5.套装栏[2])
|
||||
return [x1, x2, x3, x4, x5]
|
||||
else:
|
||||
return [deepcopy(属性)]
|
||||
|
||||
def 希洛克计算(self, 希洛克选择状态=None):
|
||||
|
||||
if 希洛克选择状态 is None:
|
||||
希洛克选择状态 = self.希洛克选择状态
|
||||
|
||||
sirocos = []
|
||||
|
||||
for i in range(15):
|
||||
if 希洛克选择状态[i] == 1:
|
||||
siroco = SirocoList[i // 3]
|
||||
if siroco not in sirocos:
|
||||
siroco.set_character(self)
|
||||
sirocos.append(siroco)
|
||||
siroco.fuse(i % 3)
|
||||
|
||||
for siroco in sirocos:
|
||||
siroco.compute()
|
||||
|
||||
# 自选词条
|
||||
if self.希洛克武器词条 == 2:
|
||||
武器融合属性A = 武器属性A列表[self.残香词条[0]]
|
||||
武器融合属性A数值 = 武器融合属性A.最大值 - 武器融合属性A.间隔 * self.残香词条[1]
|
||||
武器融合属性A.当前值 = int(武器融合属性A数值)
|
||||
武器融合属性A.融合属性(self)
|
||||
if sum(希洛克选择状态) == 3:
|
||||
武器融合属性B = 武器属性B列表[self.残香词条[2]]
|
||||
|
||||
武器融合属性B数值 = 武器融合属性B.最大值 - 武器融合属性B.间隔 * self.残香词条[3]
|
||||
武器融合属性B.当前值 = int(武器融合属性B数值)
|
||||
武器融合属性B.融合属性(self)
|
||||
|
||||
def 奥兹玛计算(self, 奥兹玛选择状态=None):
|
||||
if 奥兹玛选择状态 is None:
|
||||
奥兹玛选择状态 = self.奥兹玛选择状态
|
||||
|
||||
for i in range(25):
|
||||
if 奥兹玛选择状态[i] == 1:
|
||||
func = OzmaList[i // 5]
|
||||
func(self)
|
||||
return
|
||||
|
||||
# 仅计算自选黑鸦遴选词条
|
||||
def 黑鸦计算(self, 黑鸦词条=None):
|
||||
if 黑鸦词条 is None:
|
||||
黑鸦词条 = self.黑鸦词条
|
||||
|
||||
for i in range(0, 4):
|
||||
# 自选词条
|
||||
if 黑鸦词条[i][0] == 2:
|
||||
属性列表 = 装备变换属性列表 if i > 0 else 武器变换属性列表
|
||||
装备属性 = 属性列表[黑鸦词条[i][1]]
|
||||
value = 黑鸦词条[i][2]
|
||||
if isinstance(value, int):
|
||||
value = 装备属性.最大值 - 黑鸦词条[i][2] * 装备属性.间隔
|
||||
else:
|
||||
value = 装备属性.当前值
|
||||
装备属性.当前值 = value
|
||||
装备属性.变换属性(self)
|
||||
|
||||
def compute(self, match=None, handle=None):
|
||||
if match is None:
|
||||
|
||||
def match(skill):
|
||||
return skill.是否启用
|
||||
|
||||
if handle is None:
|
||||
|
||||
def handle(skill, values):
|
||||
return values
|
||||
|
||||
data = []
|
||||
for skill in self.技能表.values():
|
||||
values = skill.结算统计(self) if match(skill) else [0] * 8
|
||||
values = handle(skill, values)
|
||||
data.append(values)
|
||||
self.awake_computed = False
|
||||
return data
|
||||
|
||||
def 预计算(self, 自动切装=False):
|
||||
if self.双装备模式 == 1 and 自动切装:
|
||||
# 用于计算一觉
|
||||
temp = deepcopy(self)
|
||||
# 拷贝数据,并修改装备,返回可能的组合
|
||||
数据列表 = []
|
||||
切换列表 = []
|
||||
替换属性_temp = []
|
||||
可能组合 = self.装备替换(temp)
|
||||
for 一觉计算属性 in 可能组合:
|
||||
一觉计算属性.装备属性计算()
|
||||
一觉计算属性.适用数值计算()
|
||||
替换属性_temp.append(一觉计算属性)
|
||||
一觉计算属性.awake_computed = False
|
||||
一觉 = 一觉计算属性.技能表['一次觉醒']
|
||||
三觉 = 一觉计算属性.技能表['三次觉醒']
|
||||
数据 = 三觉.结算统计(一觉计算属性)[3]
|
||||
if 一觉.名称 not in 三觉.关联技能:
|
||||
数据 += 一觉.结算统计(一觉计算属性)[3]
|
||||
一觉计算属性.awake_computed = False
|
||||
数据列表.append(数据) # 3是力量属性 一觉力智都是相等的
|
||||
切换列表.append(一觉计算属性.切换详情)
|
||||
# 取一觉最大值,并修改数据
|
||||
a = max(数据列表)
|
||||
序号 = 数据列表.index(a)
|
||||
if 序号 != 0:
|
||||
temp = '<br><br>'
|
||||
一觉 = self.技能表['一次觉醒']
|
||||
三觉 = self.技能表['三次觉醒']
|
||||
b = int(数据列表[0])
|
||||
c = int(a) - int(b)
|
||||
if 一觉.名称 not in 三觉.关联技能:
|
||||
temp += trans(一觉.名称) + '+'
|
||||
temp += "{}:{}->{}(+{})".format(trans(三觉.名称), b, a, c)
|
||||
else:
|
||||
temp = ''
|
||||
# 计算现有装备BUFF
|
||||
self.装备属性计算()
|
||||
# 一觉属性替换
|
||||
替换属性 = 替换属性_temp[序号]
|
||||
self.一觉Lv = 替换属性.一觉Lv
|
||||
self.一觉力智 = 替换属性.一觉力智
|
||||
self.一觉力智per = 替换属性.一觉力智per
|
||||
|
||||
P = deepcopy(self)
|
||||
适用数值 = P.适用数值计算()
|
||||
适用数值补正 = 替换属性.技能表['一次觉醒'].适用数值 - 适用数值
|
||||
|
||||
self.自适应计算()
|
||||
self.适用数值计算()
|
||||
|
||||
self.技能表['一次觉醒'].等级 = 替换属性.技能表['一次觉醒'].等级
|
||||
self.技能表['二次觉醒'].等级 = 替换属性.技能表['二次觉醒'].等级
|
||||
self.技能表['三次觉醒'].等级 = 替换属性.技能表['三次觉醒'].等级
|
||||
self.技能表['一次觉醒'].适用数值 += 适用数值补正
|
||||
self.切换详情 = 切换列表[序号] + temp
|
||||
|
||||
else:
|
||||
self.装备属性计算()
|
||||
self.自适应计算()
|
||||
self.适用数值计算()
|
||||
|
||||
def 自适应计算(self):
|
||||
|
||||
try:
|
||||
temp = deepcopy(self)
|
||||
temp.适用数值计算()
|
||||
|
||||
in_pre_range = (ctypes.c_int * 6)()
|
||||
if self.希洛克武器词条 == 1:
|
||||
in_pre_range[0] = 1
|
||||
in_pre_range[1] = 1
|
||||
|
||||
for i in range(4):
|
||||
if self.黑鸦词条[i][0] == 1:
|
||||
in_pre_range[i + 2] = 1
|
||||
in_int_data, in_double_data = temp.get_data()
|
||||
preferred.cal_index_buff(in_pre_range, in_int_data, in_double_data)
|
||||
|
||||
if self.希洛克武器词条 == 1:
|
||||
a = in_pre_range[0]
|
||||
b = in_pre_range[1]
|
||||
self.自适应最高值 = [a, b]
|
||||
self.武器属性输入(a, b)
|
||||
|
||||
if self.黑鸦词条[0][0] == 1:
|
||||
self.武器变换属性自适应 = in_pre_range[2]
|
||||
self.黑鸦武器输入(in_pre_range[2])
|
||||
|
||||
self.防具变换属性自适应 = in_pre_range[3:]
|
||||
self.黑鸦属性输入(in_pre_range[3:])
|
||||
pass
|
||||
except Exception as e:
|
||||
self.旧版自适应计算()
|
||||
pass
|
||||
|
||||
def 旧版自适应计算(self):
|
||||
|
||||
# 黑鸦词条计算
|
||||
黑鸦选择 = [0, 0, 0, 0]
|
||||
for i in range(4):
|
||||
if self.黑鸦词条[i][0] == 1:
|
||||
黑鸦选择[i] = 1
|
||||
# 武器词条自适应计算
|
||||
if self.希洛克武器词条 == 1:
|
||||
词条提升率 = []
|
||||
for i in range(len(武器属性组合)):
|
||||
temp = deepcopy(self)
|
||||
# 总数据 = []
|
||||
武器属性A = 武器属性组合[i][0]
|
||||
武器属性B = 武器属性组合[i][1]
|
||||
temp.武器属性输入(武器属性A, 武器属性B)
|
||||
|
||||
提升率 = temp.择优提升率计算()
|
||||
词条提升率.append(提升率)
|
||||
a = max(词条提升率)
|
||||
序号 = 词条提升率.index(a)
|
||||
self.自适应最高值 = 武器属性组合[序号]
|
||||
self.武器属性输入(self.自适应最高值[0], self.自适应最高值[1])
|
||||
|
||||
# 先择优黑鸦防具部分
|
||||
if 黑鸦选择[1] + 黑鸦选择[2] + 黑鸦选择[3] > 0:
|
||||
词条提升率 = []
|
||||
for i in range(len(防具变换属性组合)):
|
||||
temp = deepcopy(self)
|
||||
# 总数据 = []
|
||||
temp.黑鸦属性输入(防具变换属性组合[i])
|
||||
提升率 = temp.择优提升率计算()
|
||||
词条提升率.append(提升率)
|
||||
a = max(词条提升率)
|
||||
序号 = 词条提升率.index(a)
|
||||
self.防具变换属性自适应 = 防具变换属性组合[序号]
|
||||
self.黑鸦属性输入(self.防具变换属性自适应)
|
||||
|
||||
# 再择优武器部分
|
||||
if 黑鸦选择[0] > 0:
|
||||
词条提升率 = []
|
||||
for i in range(7):
|
||||
temp = deepcopy(self)
|
||||
# 总数据 = []
|
||||
temp.黑鸦武器输入(i)
|
||||
if temp.实际名称 == 'BUFF·神启·圣骑士':
|
||||
if i == 0:
|
||||
temp.是否加觉醒 = 1
|
||||
else:
|
||||
temp.是否加觉醒 = 0
|
||||
提升率 = temp.择优提升率计算()
|
||||
词条提升率.append(提升率)
|
||||
a = max(词条提升率)
|
||||
序号 = 词条提升率.index(a)
|
||||
self.武器变换属性自适应 = 序号
|
||||
self.黑鸦武器输入(序号)
|
||||
if 序号 == 0 and self.实际名称 == 'BUFF·神启·圣骑士':
|
||||
self.是否加觉醒 = 1
|
||||
|
||||
def 替换技能(self, skill, name):
|
||||
skill.技能表 = self.技能表
|
||||
self.技能表[name] = skill
|
||||
|
||||
def 武器属性输入(self, index_a, index_b):
|
||||
武器属性A = 武器属性A列表[index_a]
|
||||
武器属性A.当前值 = int(武器属性A.最大值)
|
||||
武器属性A.融合属性(self)
|
||||
if self.武器词条触发 == 1:
|
||||
武器属性B = 武器属性B列表[index_b]
|
||||
武器属性B.当前值 = int(武器属性B.最大值)
|
||||
武器属性B.融合属性(self)
|
||||
else:
|
||||
index_b = 0
|
||||
self.残香词条 = [index_a, 0, index_b, 0]
|
||||
|
||||
def 黑鸦属性输入(self, indices):
|
||||
for i in range(1, 4):
|
||||
if self.黑鸦词条[i][0] == 1:
|
||||
index = indices[i - 1]
|
||||
装备属性 = 装备变换属性列表[index]
|
||||
装备属性.当前值 = int(装备属性.最大值)
|
||||
装备属性.变换属性(self)
|
||||
self.黑鸦词条[i] = [1, index, 装备属性.最大值]
|
||||
|
||||
def 黑鸦武器输入(self, index):
|
||||
if self.黑鸦词条[0][0] == 1:
|
||||
if index > 0:
|
||||
黑鸦武器 = 武器变换属性列表[index]
|
||||
黑鸦武器.当前值 = int(黑鸦武器.最大值)
|
||||
黑鸦武器.变换属性(self)
|
||||
self.黑鸦词条[0] = [1, index, 黑鸦武器.最大值]
|
||||
else:
|
||||
self.技能等级加成('所有', 50, 50, 2)
|
||||
self.技能等级加成('所有', 85, 85, 2)
|
||||
self.技能等级加成('所有', 100, 100, 2)
|
||||
if self.装备检查('世界树之精灵'):
|
||||
self.技能等级加成('所有', 50, 50, 2)
|
||||
|
||||
def 择优提升率计算(self):
|
||||
总数据 = []
|
||||
self.适用数值计算()
|
||||
if self.双装备模式 == 1 and self.技能表['一次觉醒'].是否启用:
|
||||
if self.实际名称 == 'BUFF·神启·圣骑士':
|
||||
if self.是否加觉醒 == 1:
|
||||
self.技能表['一次觉醒'].适用数值 += self.一觉切装加二觉增加体精
|
||||
|
||||
def handle(skill, values):
|
||||
if skill.所在等级 in [50, 100]:
|
||||
values = [int(round(i * self.觉醒择优系数)) for i in values]
|
||||
return values
|
||||
|
||||
self.compute(None, handle)
|
||||
|
||||
return self.提升率计算(总数据)
|
||||
|
||||
def 结果返回(self, x, 总数据):
|
||||
if x == 0:
|
||||
return self.提升率计算(总数据)
|
||||
elif x == 1:
|
||||
return 总数据
|
||||
elif x == 2:
|
||||
return self.提升率计算(总数据, self.排行系数)
|
||||
|
||||
def BUFF计算(self, x=0):
|
||||
self.预计算(自动切装=True)
|
||||
总数据 = self.compute()
|
||||
return self.结果返回(x, 总数据)
|
||||
|
||||
def 装备属性计算(self, x=0):
|
||||
self.装备基础()
|
||||
# self.专属词条计算()
|
||||
|
||||
equips = [equ.get_equ_by_name(i) for i in self.装备栏]
|
||||
suits = [equ.get_suit_by_name(i) for i in self.套装栏]
|
||||
|
||||
for equip in equips:
|
||||
equip.城镇属性_BUFF(self)
|
||||
equip.BUFF属性(self)
|
||||
|
||||
觉醒词条 = self.黑鸦词条[0][0]
|
||||
|
||||
# 黑鸦武器觉醒词条
|
||||
if 觉醒词条 == 3 and equip.部位 == '武器':
|
||||
self.技能等级加成('所有', 50, 50, 2)
|
||||
self.技能等级加成('所有', 85, 85, 2)
|
||||
self.技能等级加成('所有', 100, 100, 2)
|
||||
if equip.名称 == '世界树之精灵' and 觉醒词条 > 0:
|
||||
self.技能等级加成('所有', 50, 50, -2)
|
||||
self.技能等级加成('所有', 85, 85, -2)
|
||||
self.技能等级加成('所有', 100, 100, -2)
|
||||
if 觉醒词条 > 1:
|
||||
self.技能等级加成('所有', 50, 50, 2)
|
||||
|
||||
for suit in suits:
|
||||
suit.城镇属性_BUFF(self)
|
||||
suit.BUFF属性(self)
|
||||
|
||||
self.黑鸦计算()
|
||||
self.希洛克计算()
|
||||
self.奥兹玛计算()
|
||||
|
||||
if self.排行系数 == 1 or x:
|
||||
P = deepcopy(self)
|
||||
P.站街计算()
|
||||
self.站街系数 = P.系数数值站街()
|
||||
|
||||
if x:
|
||||
return
|
||||
|
||||
for equip in equips:
|
||||
equip.进图属性_BUFF(self)
|
||||
|
||||
for suit in suits:
|
||||
suit.进图属性_BUFF(self)
|
||||
|
||||
def 专属词条计算(self):
|
||||
pass
|
||||
|
||||
def 站街计算(self):
|
||||
self.专属词条计算()
|
||||
|
||||
for skill in self.技能表.values():
|
||||
if skill.站街生效 == 1:
|
||||
skill.进图加成 = 0
|
||||
结算 = skill.结算统计(self)
|
||||
self.智力 += 结算[0]
|
||||
self.体力 += 结算[1]
|
||||
self.精神 += 结算[2]
|
||||
|
||||
def 护石计算(self):
|
||||
indices = self.护石栏
|
||||
for i in indices:
|
||||
Talismans(self, i)
|
||||
|
||||
def BUFF面板(self):
|
||||
return self.技能表['BUFF'].技能面板()
|
||||
|
||||
def 一觉面板(self):
|
||||
return self.技能表['一次觉醒'].技能面板()
|
||||
Reference in New Issue
Block a user