new:添加誓约升级效果

This commit is contained in:
2026-06-08 12:09:11 +08:00
parent af70affbca
commit a7e5470e2d
7 changed files with 45 additions and 5 deletions
@@ -286,6 +286,15 @@ class CalcEquipMixin(CharacterBase):
continue
apply_uppercase_attrs(self, oath)
fun(self)
# 誓约升级效果
for upgrade in item.upgrade:
if upgrade == 1:
self.SetStatus(SkillAttack=0.04,Buffer=800)
pass
if upgrade == 2:
self.SetSkillCD(cd=0.08)
self.SetStatus(EquEffectRatio=0.04,Buffer=800)
pass
pass
def calc_avatar(self, avatar: dict):
+5
View File
@@ -60,12 +60,16 @@ class CharacterOathInfo:
"""誓约ID"""
adaptation: int
"""调适等级"""
upgrade: list[int]
"""誓约升级"""
oathInfo: Union['Oath', None]
"""誓约信息"""
def __init__(self, info=None, equVerison=0, position='', equipments=None) -> None:
if info is None:
info = {}
if info.get('upgrade') is None:
info['upgrade'] = [0, 0, 0, 0]
self.__dict__.update(info)
self.id = str(self.id)
equipments = equipments or get_equipment(equVerison)
@@ -73,6 +77,7 @@ class CharacterOathInfo:
if oath is not None and position in oath.position:
self.oathInfo = oath.adapt(self.adaptation)
self.adaptation = min(self.adaptation, self.oathInfo.max_adaptation)
self.upgrade = [int(upgrade) for upgrade in self.upgrade]
else:
self.oathInfo = None
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -12,7 +12,7 @@
label="全局修改"
></calc-checkbox>
</div>
<div class="equ-profile-item">
<div class="equ-profile-item" v-if="part !== '11'">
<div class="row-name">调适</div>
<calc-select v-model="adaptation" class="flex-1 !h-20px">
<template v-for="i in Array.from({ length: 4 }, (_, i) => i)" :key="i">
@@ -20,6 +20,20 @@
</template>
</calc-select>
</div>
<div class="equ-profile-item" v-else>
<div class="row-name">誓约升级</div>
<template v-for="i in Array.from({ length: 4 }, (_, i) => i)" :key="i">
<calc-select
:model-value="getOathUpgradeValue(i)"
@update:model-value="setOathUpgradeValue(i, $event)"
class="flex-1 !h-20px"
>
<calc-option :value="0">无</calc-option>
<calc-option :value="1">技攻 +4%</calc-option>
<calc-option :value="2">CD -8%</calc-option>
</calc-select>
</template>
</div>
</div>
</template>
@@ -36,7 +50,7 @@ const configStore = useConfigStore()
const infoStore = useInfoStore()
const currentInfo = function <T>(name: string, defaultValue?: T) {
return computed<string | number>({
return computed<T>({
get() {
return (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -74,4 +88,14 @@ const currentInfo = function <T>(name: string, defaultValue?: T) {
// 调适
const adaptation = currentInfo<string | number>('adaptation')
// 誓约升级
const oath_upgrade = currentInfo<number[]>('upgrade', [0, 0, 0, 0])
const getOathUpgradeValue = (index: number) => oath_upgrade.value[index] ?? 0
const setOathUpgradeValue = (index: number, val: number) => {
const nextUpgrade = [...oath_upgrade.value]
nextUpgrade[index] = val
oath_upgrade.value = nextUpgrade
}
</script>
@@ -203,9 +203,9 @@ const oathSuit = computed(() => {
return props.suits.oath
})
const correction = computed(() => {
return props.suits.correction ?? 0
})
// const correction = computed(() => {
// return props.suits.correction ?? 0
// })
const changeSkillId = (skill: { skillId: string; enable: boolean }) => {
// console.log(skill)
+2
View File
@@ -34,6 +34,7 @@ export interface IConfigEquip {
export interface IConfigOath {
id: string
adaptation: number
upgrade: number[]
}
export interface IConfigEmblem {
@@ -100,6 +101,7 @@ const defaultAvatarConfig = {
const defaultOathConfig = {
id: '',
adaptation: 0,
upgrade: [0, 0, 0, 0],
}
const defaultEmblemConfig = {