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: {},