refactor(skill): 重构大招CD配置体系,统一档位管理
1. 新增大招CD档位配置ULT_CDS/ULT_CD_MAP,与普攻档位分离 2. 为职业默认值添加大招CD档配置,支持按职业类型适配 3. 改造技能编辑器与英雄向导,支持选择大招CD档位 4. 批量更新现有英雄数据与配置文件,统一使用档位化CD配置 5. 补充文档说明,规范大招CD配置规则
This commit is contained in:
@@ -12,9 +12,9 @@
|
||||
<el-form-item label="显示名">
|
||||
<el-input v-model="skill.name" placeholder="对外展示名(可选)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="攻速档位">
|
||||
<el-select v-model="cdSpeedKey" @change="onSpeedChange">
|
||||
<el-option v-for="s in ATK_SPEEDS" :key="s.key" :label="s.label" :value="s.key" />
|
||||
<el-form-item :label="isUlt ? '大招CD档位' : '攻速档位'">
|
||||
<el-select v-model="cdTierKey" @change="onTierChange">
|
||||
<el-option v-for="s in (isUlt ? ULT_CDS : ATK_SPEEDS)" :key="s.key" :label="s.label" :value="s.key" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="CD(秒)">
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
<script setup>
|
||||
import { computed } from 'vue'
|
||||
import { ATK_SPEEDS } from '../constants'
|
||||
import { ATK_SPEEDS, ATK_SPEED_MAP, ULT_CDS, ULT_CD_MAP } from '../constants'
|
||||
import OverrideEditor from './OverrideEditor.vue'
|
||||
|
||||
const props = defineProps({
|
||||
@@ -89,27 +89,24 @@ if (props.basicLv2) {
|
||||
}
|
||||
}
|
||||
|
||||
const cdSpeedKey = refFromCd(props.skill)
|
||||
|
||||
function refFromCd(skill) {
|
||||
// 简单映射回攻速档
|
||||
return computed({
|
||||
get() {
|
||||
const found = ATK_SPEEDS.find((s) => Math.abs(cdOf(s.key) - skill.cd) < 0.001)
|
||||
return found?.key || 'Normal'
|
||||
},
|
||||
set() {},
|
||||
})
|
||||
// 档位配置:大招(isUlt)走 UltCdSet 档(6~10s),普攻走 AtkSpeedSet 档(0.75~1.5s),两档数值不重叠可按 cd 反查
|
||||
function tierConf(key) {
|
||||
return (props.isUlt ? ULT_CD_MAP : ATK_SPEED_MAP)[key]
|
||||
}
|
||||
|
||||
function cdOf(key) {
|
||||
const map = { VeryFast: 0.75, Fast: 0.9, Normal: 1.05, Slow: 1.2, VerySlow: 1.5 }
|
||||
return map[key] ?? 1.05
|
||||
}
|
||||
const cdTierKey = computed({
|
||||
get() {
|
||||
const list = props.isUlt ? ULT_CDS : ATK_SPEEDS
|
||||
const found = list.find((s) => Math.abs(tierConf(s.key).cd - props.skill.cd) < 0.001)
|
||||
return found?.key || 'Normal'
|
||||
},
|
||||
set() {},
|
||||
})
|
||||
|
||||
function onSpeedChange(key) {
|
||||
props.skill.cd = cdOf(key)
|
||||
props.skill.cdExpr = `AtkSpeedSet[AtkSpeedLv.${key}].cd`
|
||||
function onTierChange(key) {
|
||||
const conf = tierConf(key)
|
||||
props.skill.cd = conf.cd
|
||||
props.skill.cdExpr = conf.cdExpr
|
||||
}
|
||||
function onCdManual() {
|
||||
props.skill.cdExpr = null
|
||||
|
||||
Reference in New Issue
Block a user