dev
This commit is contained in:
@@ -491,6 +491,7 @@ class Character(CharacterProperty):
|
|||||||
info['emblems'] = [i for i in equInfos.emblems]
|
info['emblems'] = [i for i in equInfos.emblems]
|
||||||
info['avatar'] = equInfos.funs.get_dress_list(skill_clothes)
|
info['avatar'] = equInfos.funs.get_dress_list(skill_clothes)
|
||||||
info['jades'] = equInfos.jades
|
info['jades'] = equInfos.jades
|
||||||
|
info['options'] = equInfos.funs.options
|
||||||
info['sundry'] = equInfos.funs.sundryList
|
info['sundry'] = equInfos.funs.sundryList
|
||||||
for skill in platinum:
|
for skill in platinum:
|
||||||
info['emblems'].append(
|
info['emblems'].append(
|
||||||
@@ -686,6 +687,19 @@ class Character(CharacterProperty):
|
|||||||
# 获取装备额外属性
|
# 获取装备额外属性
|
||||||
if fun is not None:
|
if fun is not None:
|
||||||
fun(self)
|
fun(self)
|
||||||
|
# 武器贴膜处理
|
||||||
|
weapon = self.charEquipInfo['武器']
|
||||||
|
if weapon.equInfo is None or weapon.weaponFusion is None or weapon.weaponFusion == 0:
|
||||||
|
return
|
||||||
|
adaptation = min(weapon.adaptation,weapon.equInfo.max_adaptation)
|
||||||
|
if weapon.weaponFusion == 1:
|
||||||
|
self.SetStatus(SkillAttack = 0.07 + adaptation * 0.01)
|
||||||
|
if weapon.weaponFusion == 2:
|
||||||
|
self.SetStatus(SkillAttack = 0.01 + adaptation * 0.01)
|
||||||
|
self.SetSkillCD(1, 100, 0.1)
|
||||||
|
if weapon.weaponFusion == 3:
|
||||||
|
self.SetStatus(SkillAttack = 0.055 + adaptation * 0.01)
|
||||||
|
self.SetStatus(SpeedA = 0.2,SpeedM = 0.2,SpeedR = 0.2)
|
||||||
|
|
||||||
def calc_avatar(self, avatar: dict):
|
def calc_avatar(self, avatar: dict):
|
||||||
"""计算时装效果"""
|
"""计算时装效果"""
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ class CharacterEquipInfo:
|
|||||||
"""贴膜ID"""
|
"""贴膜ID"""
|
||||||
refine: int | None
|
refine: int | None
|
||||||
"""锻造等级"""
|
"""锻造等级"""
|
||||||
fusionDetail: dict | None
|
weaponFusion: int | None
|
||||||
"""贴膜详情"""
|
"""武器融合详情"""
|
||||||
adaptation: int
|
adaptation: int
|
||||||
"""调适等级"""
|
"""调适等级"""
|
||||||
equInfo: Union['Equ', None]
|
equInfo: Union['Equ', None]
|
||||||
@@ -35,6 +35,7 @@ class CharacterEquipInfo:
|
|||||||
def __init__(self, info={}, equVerison=0, part='') -> None:
|
def __init__(self, info={}, equVerison=0, part='') -> None:
|
||||||
info["fusion"] = info.get("fusion", None)
|
info["fusion"] = info.get("fusion", None)
|
||||||
info["precision"] = info.get("precision", 0)
|
info["precision"] = info.get("precision", 0)
|
||||||
|
info["weaponFusion"] = info.get("weaponFusion", None)
|
||||||
self.__dict__.update(info)
|
self.__dict__.update(info)
|
||||||
equ = get_equipment(equVerison).equ_dict.get(self.id, None)
|
equ = get_equipment(equVerison).equ_dict.get(self.id, None)
|
||||||
fusion = get_equipment(equVerison).stone_dict.get(self.fusion, None)
|
fusion = get_equipment(equVerison).stone_dict.get(self.fusion, None)
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ class ActiveSkill(Skill):
|
|||||||
self.vp_2()
|
self.vp_2()
|
||||||
|
|
||||||
def setReinforce(self):
|
def setReinforce(self):
|
||||||
if self.learnLv in [50, 85, 100] and not self.damage:
|
if self.learnLv in [50, 85, 100] or not self.damage:
|
||||||
return
|
return
|
||||||
if self.reinforce == 1:
|
if self.reinforce == 1:
|
||||||
if self.learnLv < 35:
|
if self.learnLv < 35:
|
||||||
|
|||||||
@@ -3488,7 +3488,7 @@ def stone_298(char: CharacterProperty):
|
|||||||
技能伤害+17%
|
技能伤害+17%
|
||||||
所有速度+25%
|
所有速度+25%
|
||||||
"""
|
"""
|
||||||
char.SetStatus(SkillAttack=0.17,SpeedA=0.25,SpeedM=0.25,SpeedR=0.25)
|
char.SetStatus(SkillAttack=0.185,SpeedA=0.25,SpeedM=0.25,SpeedR=0.25)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@@ -3512,7 +3512,7 @@ def stone_300(char: CharacterProperty):
|
|||||||
技能伤害+17%
|
技能伤害+17%
|
||||||
800px范围内的队员所受物理/魔法伤害-15%
|
800px范围内的队员所受物理/魔法伤害-15%
|
||||||
"""
|
"""
|
||||||
char.SetStatus(SkillAttack=0.17)
|
char.SetStatus(SkillAttack=0.185)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -3,6 +3,7 @@ import { computed, defineComponent, ref, renderList } from 'vue'
|
|||||||
import type { IEnchantingInfo } from '@/api/info/type'
|
import type { IEnchantingInfo } from '@/api/info/type'
|
||||||
import { useInfoStore, useConfigStore } from '@/stores'
|
import { useInfoStore, useConfigStore } from '@/stores'
|
||||||
import EquList from '@/components/dnf/Equipment/List/index.vue'
|
import EquList from '@/components/dnf/Equipment/List/index.vue'
|
||||||
|
import { getImageURL } from '@/utils/images'
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'Equip',
|
name: 'Equip',
|
||||||
setup(props) {
|
setup(props) {
|
||||||
@@ -24,7 +25,7 @@ export default defineComponent({
|
|||||||
)
|
)
|
||||||
/** 是否可以设置秘宝精度 */
|
/** 是否可以设置秘宝精度 */
|
||||||
const can_set_secret = computed(() => {
|
const can_set_secret = computed(() => {
|
||||||
return ['辅助装备', '魔法石','耳环'].includes(part.value as string)
|
return ['辅助装备', '魔法石', '耳环'].includes(part.value as string)
|
||||||
})
|
})
|
||||||
const basicInfoStore = useInfoStore()
|
const basicInfoStore = useInfoStore()
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ export default defineComponent({
|
|||||||
)
|
)
|
||||||
},
|
},
|
||||||
set(val) {
|
set(val) {
|
||||||
if (val == undefined) {
|
if (val == undefined && name !== 'weaponFusion') {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (name == 'emblem_1' && !has_emblem_1.value) {
|
if (name == 'emblem_1' && !has_emblem_1.value) {
|
||||||
@@ -65,7 +66,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
let parts: string[] = []
|
let parts: string[] = []
|
||||||
|
|
||||||
if (global_change.value) {
|
if (global_change.value && name !== 'weaponFusion') {
|
||||||
if (name === 'enchant') {
|
if (name === 'enchant') {
|
||||||
const enchant = basicInfoStore?.enchants?.find((item) => item.id == val) as
|
const enchant = basicInfoStore?.enchants?.find((item) => item.id == val) as
|
||||||
| IEnchantingInfo
|
| IEnchantingInfo
|
||||||
@@ -84,7 +85,7 @@ export default defineComponent({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (['reinforceType', 'reinforce','adaptation'].includes(name)) {
|
if (['reinforceType', 'reinforce', 'adaptation'].includes(name)) {
|
||||||
parts = basicInfoStore.parts.filter((e) => !['称号', '宠物'].includes(e))
|
parts = basicInfoStore.parts.filter((e) => !['称号', '宠物'].includes(e))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -92,7 +93,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
for (const part of parts) {
|
for (const part of parts) {
|
||||||
if (configStore.config.equips[part]) {
|
if (configStore.config.equips[part]) {
|
||||||
(configStore.config.equips[part] as Record<string, any>)[name] = val
|
;(configStore.config.equips[part] as Record<string, any>)[name] = val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -121,7 +122,10 @@ export default defineComponent({
|
|||||||
const adaptation = currentInfo<string | number>('adaptation')
|
const adaptation = currentInfo<string | number>('adaptation')
|
||||||
|
|
||||||
//精度
|
//精度
|
||||||
const precision = currentInfo<number>('precision',0)
|
const precision = currentInfo<number>('precision', 0)
|
||||||
|
|
||||||
|
// 武器融合
|
||||||
|
const weaponFusion = currentInfo<string | number>('weaponFusion', 0)
|
||||||
/**
|
/**
|
||||||
* 同步徽章1到徽章2
|
* 同步徽章1到徽章2
|
||||||
* @param val
|
* @param val
|
||||||
@@ -132,103 +136,139 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setWeaponFusion = (val: number) => {
|
||||||
|
if (val == weaponFusion.value) {
|
||||||
|
weaponFusion.value = 0
|
||||||
|
} else {
|
||||||
|
weaponFusion.value = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div class="h-150px flex justify-center items-center">
|
<div class="h-150px flex justify-center items-center">
|
||||||
<EquList v-model:part={part.value} withBg={false} withPet={false} with-sub-weapon={useInfoStore().infos?.alter.includes('vegabond')}/></div>
|
<EquList
|
||||||
|
v-model:part={part.value}
|
||||||
|
withBg={false}
|
||||||
|
withPet={false}
|
||||||
|
with-sub-weapon={useInfoStore().infos?.alter.includes('vegabond')}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-wrap equ-profile">
|
<div class="flex flex-wrap equ-profile">
|
||||||
<div class="equ-profile-item">
|
<div class="equ-profile-item">
|
||||||
<div class="mr-10px row-name">当前部位</div>
|
<div class="mr-10px row-name">当前部位</div>
|
||||||
<span> {part.value}</span>
|
<span> {part.value}</span>
|
||||||
{can_upgrade.value ? (
|
{can_upgrade.value ? (
|
||||||
<calc-checkbox
|
<calc-checkbox
|
||||||
style="margin-left:auto"
|
style="margin-left:auto"
|
||||||
v-model={global_change.value}
|
v-model={global_change.value}
|
||||||
label="全局修改"
|
label="全局修改"
|
||||||
></calc-checkbox>
|
></calc-checkbox>
|
||||||
|
) : (
|
||||||
|
<div></div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
{part.value == '武器' ? (
|
||||||
|
<div class="equ-profile-item">
|
||||||
|
<div class="row-name">武器融合</div>
|
||||||
|
<div class="flex">
|
||||||
|
{renderList(3, (i) => (
|
||||||
|
<img
|
||||||
|
onClick={() => setWeaponFusion(i)}
|
||||||
|
class="w-30px h-30px"
|
||||||
|
src={`${getImageURL(`/equipment/fusion/${i}.png`)}`}
|
||||||
|
style={weaponFusion.value == i ? '' : 'filter: grayscale(100%)'}
|
||||||
|
></img>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div></div>
|
<div></div>
|
||||||
)}
|
)}
|
||||||
</div>
|
{part.value == '副武器' ? (
|
||||||
{part.value == '副武器' ? (<>
|
<>
|
||||||
<div class="equ-profile-item">
|
<div class="equ-profile-item">
|
||||||
<div class="row-name">强化</div>
|
<div class="row-name">强化</div>
|
||||||
<calc-select v-model={reinforce.value} class="flex-1 !h-20px">
|
<calc-select v-model={reinforce.value} class="flex-1 !h-20px">
|
||||||
{renderList(31, (i) => (
|
{renderList(31, (i) => (
|
||||||
<calc-option value={i - 1}>{i - 1}</calc-option>
|
<calc-option value={i - 1}>{i - 1}</calc-option>
|
||||||
))}
|
))}
|
||||||
</calc-select>
|
</calc-select>
|
||||||
</div></>):(<>
|
</div>
|
||||||
{can_upgrade.value ? (
|
</>
|
||||||
<div class="equ-profile-item">
|
) : (
|
||||||
<div class="row-name">增幅</div>
|
<>
|
||||||
<calc-select v-model={reinforce_type.value} class="flex-1 !h-20px">
|
{can_upgrade.value ? (
|
||||||
<calc-option value={0}>强化</calc-option>
|
<div class="equ-profile-item">
|
||||||
<calc-option value={1}>增幅</calc-option>
|
<div class="row-name">增幅</div>
|
||||||
</calc-select>
|
<calc-select v-model={reinforce_type.value} class="flex-1 !h-20px">
|
||||||
<calc-select v-model={reinforce.value} class="flex-1 !h-20px">
|
<calc-option value={0}>强化</calc-option>
|
||||||
{renderList(31, (i) => (
|
<calc-option value={1}>增幅</calc-option>
|
||||||
<calc-option value={i - 1}>{i - 1}</calc-option>
|
</calc-select>
|
||||||
))}
|
<calc-select v-model={reinforce.value} class="flex-1 !h-20px">
|
||||||
</calc-select>
|
{renderList(31, (i) => (
|
||||||
{part.value == '武器' && (
|
<calc-option value={i - 1}>{i - 1}</calc-option>
|
||||||
<calc-select v-model={refine.value} class="flex-1 !h-20px">
|
))}
|
||||||
{renderList(9, (i) => (
|
</calc-select>
|
||||||
<calc-option value={i - 1}>锻造+ {i - 1}</calc-option>
|
{part.value == '武器' && (
|
||||||
))}
|
<calc-select v-model={refine.value} class="flex-1 !h-20px">
|
||||||
</calc-select>
|
{renderList(9, (i) => (
|
||||||
)}
|
<calc-option value={i - 1}>锻造+ {i - 1}</calc-option>
|
||||||
</div>
|
))}
|
||||||
) : (
|
</calc-select>
|
||||||
<div></div>
|
)}
|
||||||
)}
|
</div>
|
||||||
<div class="equ-profile-item">
|
) : (
|
||||||
<div class="row-name">附魔</div>
|
<div></div>
|
||||||
<calc-select v-model={enchant.value} class="flex-1 !h-20px">
|
)}
|
||||||
<calc-option value={""}>无</calc-option>
|
|
||||||
{renderList(enchant_list.value ?? [], (item) => (
|
|
||||||
<calc-option value={item.id}>{item.detail}</calc-option>
|
|
||||||
))}
|
|
||||||
</calc-select>
|
|
||||||
</div>
|
|
||||||
{has_socket.value ? (
|
|
||||||
<div class="equ-profile-item">
|
|
||||||
<div class="row-name">徽章</div>
|
|
||||||
<calc-select
|
|
||||||
onChange={changeSocket}
|
|
||||||
v-model={emblem_0.value}
|
|
||||||
class="flex-1 !h-20px"
|
|
||||||
>
|
|
||||||
<calc-option value={""}>无</calc-option>
|
|
||||||
{renderList(emblem_list.value ?? [], (item) => (
|
|
||||||
<calc-option
|
|
||||||
value={item.id}
|
|
||||||
key={item.id}
|
|
||||||
>{`${item.rarity}${item.categorize}徽章[${item.detail}]`}</calc-option>
|
|
||||||
))}
|
|
||||||
</calc-select>
|
|
||||||
{has_emblem_1.value && (
|
|
||||||
<calc-select v-model={emblem_1.value} class="flex-1 !h-20px">
|
|
||||||
<calc-option value={""}>无</calc-option>
|
|
||||||
{renderList(emblem_list.value ?? [], (item) => (
|
|
||||||
<calc-option
|
|
||||||
value={item.id}
|
|
||||||
key={item.id}
|
|
||||||
>{`${item.rarity}${item.categorize}徽章[${item.detail}]`}</calc-option>
|
|
||||||
))}
|
|
||||||
</calc-select>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<div></div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{can_upgrade.value ? (
|
<div class="equ-profile-item">
|
||||||
<div class="equ-profile-item">
|
<div class="row-name">附魔</div>
|
||||||
<div class="row-name">调适</div>
|
<calc-select v-model={enchant.value} class="flex-1 !h-20px">
|
||||||
{/* <calc-slider
|
<calc-option value={''}>无</calc-option>
|
||||||
|
{renderList(enchant_list.value ?? [], (item) => (
|
||||||
|
<calc-option value={item.id}>{item.detail}</calc-option>
|
||||||
|
))}
|
||||||
|
</calc-select>
|
||||||
|
</div>
|
||||||
|
{has_socket.value ? (
|
||||||
|
<div class="equ-profile-item">
|
||||||
|
<div class="row-name">徽章</div>
|
||||||
|
<calc-select
|
||||||
|
onChange={changeSocket}
|
||||||
|
v-model={emblem_0.value}
|
||||||
|
class="flex-1 !h-20px"
|
||||||
|
>
|
||||||
|
<calc-option value={''}>无</calc-option>
|
||||||
|
{renderList(emblem_list.value ?? [], (item) => (
|
||||||
|
<calc-option
|
||||||
|
value={item.id}
|
||||||
|
key={item.id}
|
||||||
|
>{`${item.rarity}${item.categorize}徽章[${item.detail}]`}</calc-option>
|
||||||
|
))}
|
||||||
|
</calc-select>
|
||||||
|
{has_emblem_1.value && (
|
||||||
|
<calc-select v-model={emblem_1.value} class="flex-1 !h-20px">
|
||||||
|
<calc-option value={''}>无</calc-option>
|
||||||
|
{renderList(emblem_list.value ?? [], (item) => (
|
||||||
|
<calc-option
|
||||||
|
value={item.id}
|
||||||
|
key={item.id}
|
||||||
|
>{`${item.rarity}${item.categorize}徽章[${item.detail}]`}</calc-option>
|
||||||
|
))}
|
||||||
|
</calc-select>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div></div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{can_upgrade.value ? (
|
||||||
|
<div class="equ-profile-item">
|
||||||
|
<div class="row-name">调适</div>
|
||||||
|
{/* <calc-slider
|
||||||
showValue={true}
|
showValue={true}
|
||||||
showPercent={false}
|
showPercent={false}
|
||||||
v-model={adaptation.value}
|
v-model={adaptation.value}
|
||||||
@@ -237,33 +277,36 @@ export default defineComponent({
|
|||||||
step={1}
|
step={1}
|
||||||
class="flex-1 !h-20px"
|
class="flex-1 !h-20px"
|
||||||
/> */}
|
/> */}
|
||||||
<calc-select v-model={adaptation.value} class="flex-1 !h-20px">
|
<calc-select v-model={adaptation.value} class="flex-1 !h-20px">
|
||||||
{renderList(4, (i) => (
|
{renderList(4, (i) => (
|
||||||
<calc-option value={i - 1}>{i - 1}</calc-option>
|
<calc-option value={i - 1}>{i - 1}</calc-option>
|
||||||
))}
|
))}
|
||||||
</calc-select>
|
</calc-select>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div></div>
|
<div></div>
|
||||||
)}
|
)}
|
||||||
{
|
{can_set_secret.value ? (
|
||||||
can_set_secret.value ? (<>
|
<>
|
||||||
<div class="equ-profile-item">
|
<div class="equ-profile-item">
|
||||||
<div class="row-name">秘宝</div>
|
<div class="row-name">秘宝</div>
|
||||||
<calc-slider
|
<calc-slider
|
||||||
showPercent={true}
|
showPercent={true}
|
||||||
showValue={false}
|
showValue={false}
|
||||||
v-model={precision.value}
|
v-model={precision.value}
|
||||||
min={0}
|
min={0}
|
||||||
max={100}
|
max={100}
|
||||||
step={1}
|
step={1}
|
||||||
class="flex-1 !h-20px"
|
class="flex-1 !h-20px"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</>) : <div></div>
|
</>
|
||||||
}
|
) : (
|
||||||
</>)}
|
<div></div>
|
||||||
</div>
|
)}
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ export interface IConfigEquip {
|
|||||||
adaptation: number
|
adaptation: number
|
||||||
fusion: string
|
fusion: string
|
||||||
precision: number
|
precision: number
|
||||||
|
weaponFusion: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IConfig {
|
export interface IConfig {
|
||||||
@@ -70,6 +71,7 @@ const defaultEqusConfig = {
|
|||||||
adaptation: 0,
|
adaptation: 0,
|
||||||
fusion: '',
|
fusion: '',
|
||||||
precision: 0,
|
precision: 0,
|
||||||
|
weaponFusion: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultAvatarConfig = {
|
const defaultAvatarConfig = {
|
||||||
|
|||||||
Reference in New Issue
Block a user