From a1c8f46c5090c032a4bacec896e53ada1b298359 Mon Sep 17 00:00:00 2001 From: panFD Date: Mon, 7 Sep 2026 21:57:07 +0800 Subject: [PATCH] feat(web/server): add dodge and accuracy stats support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 调整FieldEditor中光环档位默认等级为4级 2. 更新SUPPORT_ULT技能列表,新增6415、6416、6518、6519 3. 新增闪避(dodge)和命中(accuracy)属性配置: - 在常量中定义属性注释 - 在前端表单添加属性编辑控件 - 在后端渲染逻辑中支持属性导出 4. 新增测试英雄"闪避哥"用于展示新属性 --- put/server/data/heroes.json | 100 +++++++++++++++++++++++++ put/server/index.js | 4 + put/web/src/App.vue | 6 ++ put/web/src/components/FieldEditor.vue | 2 +- put/web/src/constants.js | 4 +- 5 files changed, 114 insertions(+), 2 deletions(-) diff --git a/put/server/data/heroes.json b/put/server/data/heroes.json index 82ed2192..7da7257a 100644 --- a/put/server/data/heroes.json +++ b/put/server/data/heroes.json @@ -1259,6 +1259,106 @@ "hp_bonus": [], "def_bonus": [], "info": "大招全体反伤 普攻暴击 暴击反伤辅助" + }, + { + "uuid": 5014, + "name": "闪避哥", + "comment": "", + "path": "hk4", + "rarity": 4, + "roleKey": "Warrior", + "growKey": "Warrior", + "typeKey": "Melee", + "statBase": { + "hp": 0, + "ap": 0, + "def": 0 + }, + "dis": null, + "speed": null, + "dodge": null, + "accuracy": null, + "skills": [ + { + "uuid": 6004, + "name": "普攻强化", + "cd": 1.05, + "cdExpr": "AtkSpeedSet[AtkSpeedLv.Normal].cd", + "overrides": {}, + "desc": "", + "lv_entries": [ + { + "lv": 2, + "s_lv": 2, + "overrides": { + "proc_skill": { + "s_uuid": 6518, + "chance": 20, + "overrides": { + "buff_value": 30 + } + } + }, + "desc": "" + } + ] + }, + { + "uuid": 6100, + "name": "寒冰斩", + "cd": 8, + "cdExpr": null, + "overrides": { + "ap": 200, + "timed_buff_id": 7030, + "buff_value": 50 + }, + "desc": "", + "lv_entries": [ + { + "lv": 8, + "s_lv": 2, + "overrides": { + "ap": 250, + "timed_buff_id": 7030, + "buff_value": 50 + }, + "desc": "" + }, + { + "lv": 16, + "s_lv": 3, + "overrides": { + "ap": 350, + "timed_buff_id": 7030, + "buff_value": 80 + }, + "desc": "" + } + ] + } + ], + "atking": {}, + "atked": {}, + "fstart": {}, + "dead": {}, + "field": [ + { + "lv": 4, + "uuids": [ + { + "uuid": 7023, + "value": 10, + "name": "" + } + ], + "desc": "" + } + ], + "ap_bonus": [], + "hp_bonus": [], + "def_bonus": [], + "info": "" } ] } \ No newline at end of file diff --git a/put/server/index.js b/put/server/index.js index 2bde3d81..09b418e8 100644 --- a/put/server/index.js +++ b/put/server/index.js @@ -131,6 +131,8 @@ function renderSingleHero(h) { ) if (h.dis != null) push(` dis: ${h.dis},`) if (h.speed != null) push(` speed: ${h.speed},`) + if (h.dodge != null) push(` dodge: ${h.dodge},`) + if (h.accuracy != null) push(` accuracy: ${h.accuracy},`) // skills push(` skills: {`) @@ -336,6 +338,8 @@ function renderHeroCsv(heroes) { rows.push(['ap', ...sorted.map((h) => csvStatLine(h, 'ap'))]) rows.push(['hp', ...sorted.map((h) => csvStatLine(h, 'hp'))]) rows.push(['def', ...sorted.map((h) => csvStatLine(h, 'def'))]) + rows.push(['dodge', ...sorted.map((h) => (h.dodge != null ? h.dodge : ''))]) + rows.push(['accuracy', ...sorted.map((h) => (h.accuracy != null ? h.accuracy : ''))]) rows.push(['skill[0]_lv1', ...sorted.map((h) => csvSkillLv1(h.skills?.[0], false))]) rows.push(['skill[0]_lv2', ...sorted.map((h) => csvSkillLvUp(h.skills?.[0], 2))]) rows.push(['skill[1]_lv1', ...sorted.map((h) => csvSkillLv1(h.skills?.[1], true))]) diff --git a/put/web/src/App.vue b/put/web/src/App.vue index 5c93cbb4..54e766b9 100644 --- a/put/web/src/App.vue +++ b/put/web/src/App.vue @@ -110,6 +110,12 @@ + + + + + + diff --git a/put/web/src/components/FieldEditor.vue b/put/web/src/components/FieldEditor.vue index 51180078..a2ceaa7a 100644 --- a/put/web/src/components/FieldEditor.vue +++ b/put/web/src/components/FieldEditor.vue @@ -27,7 +27,7 @@ - + 添加光环档位 + + 添加光环档位 diff --git a/put/web/src/constants.js b/put/web/src/constants.js index ed76778e..db5f0be0 100644 --- a/put/web/src/constants.js +++ b/put/web/src/constants.js @@ -52,7 +52,7 @@ export const ROLE_ULT_SKILL = { } // 辅助类技能(任意职业可用作大招) -export const SUPPORT_ULT = [6301, 6302, 6407, 6412, 6413, 6414, 6501, 6514, 6515, 6516, 6517] +export const SUPPORT_ULT = [6301, 6302, 6407, 6412, 6413, 6414, 6415, 6416, 6501, 6514, 6515, 6516, 6517, 6518, 6519] export function defaultHero() { return { @@ -67,6 +67,8 @@ export function defaultHero() { statBase: { hp: 0, ap: 0, def: 0 }, dis: null, speed: null, + dodge: null, // 闪避率(null = 全局默认 15,填值覆盖) + accuracy: null, // 命中率(null = 全局默认 10,填值覆盖) skills: [], // [{uuid,name,cd,cdExpr,overrides,desc,lv_entries:[{lv,s_lv,overrides,desc}]}] atking: {}, // {uuid:[{lv,s_lv,name,t_num,overrides,desc}]} atked: {},