From fdcd81c083aa825781dbab81cfb9d3b71ab173e3 Mon Sep 17 00:00:00 2001 From: pan Date: Mon, 21 Sep 2026 16:03:10 +0800 Subject: [PATCH] =?UTF-8?q?docs(server/data,script):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E8=A7=A6=E5=8F=91=E7=BB=84=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E4=B8=8E=E6=96=87=E6=9C=AC=E6=B8=B2=E6=9F=93=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 补充技能触发组desc占位符使用说明 2. 新增触发概率与保底叠加值的参数传递 3. 优化技能文本渲染,避免概率描述重复展示 --- assets/script/game/common/HeroSkillText.ts | 10 +++++++--- put/server/data/heroes.json编辑指引.md | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/assets/script/game/common/HeroSkillText.ts b/assets/script/game/common/HeroSkillText.ts index 834be55f..de557965 100644 --- a/assets/script/game/common/HeroSkillText.ts +++ b/assets/script/game/common/HeroSkillText.ts @@ -518,9 +518,13 @@ function collectTriggerTiers(hero: heroInfo, type: SkillTriggerType, skillUuid: desc: e.desc ?? inherit, ownDesc: e.desc, tNum: e.t_num, + tChance: e.t_chance ?? 100, + pityAdd: e.pity_add ?? 0, }; }); - const label = buildTriggerLabel(type, sorted[0].t_num, sorted[0].t_chance); + // slv1 模板已显式使用 {t_chance} 时不再自动追加概率后缀,避免同一行重复展示 + const firstTmpl = tiers[0]?.desc; + const label = buildTriggerLabel(type, sorted[0].t_num, firstTmpl?.includes("{t_chance}") ? undefined : sorted[0].t_chance); return { tiers, label }; } @@ -531,11 +535,11 @@ function buildTierLines(tiers: ISkillTierInfo[], triggerLabel: string): HeroSkil const t = tiers[i]; if (i === 0) { // 技能 1 级:完整能力 + 数值 - const text = t.desc ? renderDesc(t.desc, t.skill) : fallbackDesc(t.skill); + const text = t.desc ? renderDesc(t.desc, t.skill, tierExtras(t)) : fallbackDesc(t.skill); lines.push({ sLv: t.sLv, heroLv: t.heroLv, text: triggerLabel ? `${triggerLabel}, ${text}` : text }); } else if (t.ownDesc) { // 提升档:该档显式配置了模板(如护盾/治疗等 diff 标签语义不达的技能),策划表述优先 - lines.push({ sLv: t.sLv, heroLv: t.heroLv, text: renderDesc(t.ownDesc, t.skill) }); + lines.push({ sLv: t.sLv, heroLv: t.heroLv, text: renderDesc(t.ownDesc, t.skill, tierExtras(t)) }); } else { // 提升档:未配置模板,给相对上一级的提升 const diff = buildTierDiff(tiers[i - 1], t); diff --git a/put/server/data/heroes.json编辑指引.md b/put/server/data/heroes.json编辑指引.md index 65329204..45bfa074 100644 --- a/put/server/data/heroes.json编辑指引.md +++ b/put/server/data/heroes.json编辑指引.md @@ -75,6 +75,7 @@ - `t_num`:每 n 次普攻(atking)/受击(atked)触发一次;fstart/fend 为每回合开始/结束固定触发 1 次,`t_num` 恒填 1; - `t_chance`:触发概率(百分点 0~100,**仅 atking/atked 生效**,其余组忽略);缺省/100 = 必触发。示例 30 表示次数条件达成后掷骰 30%; - `pity_add`:保底叠加(百分点,仅 atking/atked 生效);未触发时为该技能累积下次概率增量,触发成功后清零、封顶 100。示例 `t_chance:30, pity_add:20` → 30/50/70/90/100 递进; +- 触发组 `desc` 模板可额外使用 `{t_chance}`(触发概率,缺省渲染 100)与 `{pity_add}`(保底叠加,缺省渲染 0)占位符;模板显式使用 `{t_chance}` 时触发语境不再自动追加"(N%概率)"后缀,避免重复; - `name` 为组对外展示名(写在该组首档),留空回退底座名; - 复活:在 `dead` 某条目 `overrides` 配 `revive_hp`(回血%)+ `revive_count`(次数上限); - 无触发组时写空对象 `{}`,**不要省略字段**。