feat(trigger): add 回合结束触发组支持

1. 新增fend触发组常量与默认英雄模板配置
2. 后端校验、渲染逻辑兼容新触发组
3. 更新文档说明fend触发组规范
4. 前端UI添加回合结束触发组编辑器
5. 兼容旧英雄数据补全fend空对象
This commit is contained in:
panFD
2026-09-14 17:09:31 +08:00
parent 923d81c2a0
commit b63572c383
4 changed files with 14 additions and 8 deletions

View File

@@ -130,7 +130,7 @@ app.post('/api/templates', (req, res) => {
return res.status(400).json({ error: 'triggerPresets 与 fieldPresets 必须为数组' })
}
// 触发预设必须绑定合法触发组
const groups = ['atking', 'atked', 'fstart', 'dead']
const groups = ['atking', 'atked', 'fstart', 'fend', 'dead']
const bad = triggerPresets.find((p) => !groups.includes(p.group))
if (bad) {
return res.status(400).json({ error: `触发预设 ${bad.id || bad.label} 的 group 非法:${bad.group}` })
@@ -203,7 +203,7 @@ function renderSingleHero(h) {
push(` },`)
// triggers
const triggerKeys = ['atking', 'atked', 'fstart', 'dead']
const triggerKeys = ['atking', 'atked', 'fstart', 'fend', 'dead']
for (const tk of triggerKeys) {
const grp = h[tk]
if (!grp || !Object.keys(grp).length) continue
@@ -413,6 +413,7 @@ function renderHeroCsv(heroes) {
rows.push(['atking[0]_lv4', ...sorted.map((h) => csvTrigger(h.atking))])
rows.push(['atked[0]_lv4', ...sorted.map((h) => csvTrigger(h.atked))])
rows.push(['fstart[0]_lv4', ...sorted.map((h) => csvTrigger(h.fstart))])
rows.push(['fend[0]_lv4', ...sorted.map((h) => csvTrigger(h.fend))])
rows.push(['dead[0]_lv4', ...sorted.map((h) => csvTrigger(h.dead))])
rows.push(['field[0]_lv4', ...sorted.map((h) => csvField(h.field))])
rows.push(['bonus', ...sorted.map((h) => csvBonus(h.bonus))])