feat(map, skill): 新增HInfoComp的cd_node属性并统一技能描述分隔符
为HInfoComp组件新增cd_node序列化节点引用 修正HeroSkillDesc中的技能描述分隔符,将→替换为:以对齐文档与实际输出格式
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -7,14 +7,14 @@
|
||||
* 供 HInfoComp 的 info_node 显示。每行一个技能,用换行符连接。
|
||||
*
|
||||
* 生成格式:
|
||||
* {触发条件} → {技能名} {效果描述}
|
||||
* 例: "受击2次 → 护盾 护盾2次"
|
||||
* 例: "攻击1次 → 攻击强化 全体友方攻击力提升5点,持续1次"
|
||||
* 例: "场上存活 → 攻击加成 英雄攻击力+20%"
|
||||
* {触发条件}:{技能名} {效果描述}
|
||||
* 例: "受击2次:护盾 护盾2次"
|
||||
* 例: "攻击1次:攻击强化 全体友方攻击力提升5点,持续1次"
|
||||
* 例: "场上存活:攻击加成 英雄攻击力+20%"
|
||||
*
|
||||
* 依赖:
|
||||
* - heroSet → SkillTriggerDesc(触发条件模板)、SkillTriggerType(触发类型枚举)、heroInfo
|
||||
* - SkillSet → SkillSet(技能基础配置)、mergeSkillParams(合并覆盖参数)、SkillKind(技能类型枚举)
|
||||
* - heroSet :SkillTriggerDesc(触发条件模板)、SkillTriggerType(触发类型枚举)、heroInfo
|
||||
* - SkillSet :SkillSet(技能基础配置)、mergeSkillParams(合并覆盖参数)、SkillKind(技能类型枚举)
|
||||
* - FieldSkillSet(驻场技能配置)
|
||||
*/
|
||||
import { heroInfo, SkillTriggerDesc, SkillTriggerType } from "./heroSet";
|
||||
@@ -22,8 +22,8 @@ import { FieldSkillSet, mergeSkillParams, SkillKind, SkillOverrides, SkillSet }
|
||||
|
||||
/**
|
||||
* 需要遍历的触发技能类型列表(不含 Field 和 Revive,这两者结构不同需单独处理)
|
||||
* Field → number[](驻场技能 uuid 列表)
|
||||
* Revive → { s_uuid, r_num, upr }(单个对象)
|
||||
* Field:number[](驻场技能 uuid 列表)
|
||||
* Revive:{ s_uuid, r_num, upr }(单个对象)
|
||||
*/
|
||||
const TRIGGER_KEYS: SkillTriggerType[] = [
|
||||
SkillTriggerType.Call, // 召唤时触发
|
||||
@@ -38,11 +38,11 @@ const TRIGGER_KEYS: SkillTriggerType[] = [
|
||||
* 根据合并后的技能配置生成效果描述文本
|
||||
*
|
||||
* 按 SkillKind 分类输出:
|
||||
* - Heal → "治疗伙伴{ap}"
|
||||
* - Shield → "护盾{ap}次"(ap 表示可抵挡次数)
|
||||
* - Gold → "金币+{gold}"
|
||||
* - Support → 直接使用技能自身的 info 字段(如"全体友方攻击力提升5点,持续1次")
|
||||
* - Damage → "伤害{ap}%" + 可选的暴击/冰冻/击退/多段附加描述
|
||||
* - Heal :"治疗伙伴{ap}"
|
||||
* - Shield :"护盾{ap}次"(ap 表示可抵挡次数)
|
||||
* - Gold :"金币+{gold}"
|
||||
* - Support :直接使用技能自身的 info 字段(如"全体友方攻击力提升5点,持续1次")
|
||||
* - Damage :"伤害{ap}%" + 可选的暴击/冰冻/击退/多段附加描述
|
||||
*
|
||||
* @param skill 经过 mergeSkillParams 合并 overrides 后的完整技能配置
|
||||
* @returns 效果描述字符串,各部分用空格连接
|
||||
@@ -90,8 +90,8 @@ function buildEffectDesc(skill: ReturnType<typeof mergeSkillParams>): string {
|
||||
* 3. 单独处理 revive(复活技能):结构与上述不同,是单个对象而非数组。
|
||||
*
|
||||
* 输出示例(5006 疾风刺客):
|
||||
* "攻击1次 → 攻击强化 全体友方攻击力提升5点,持续1次
|
||||
* 死亡时 → 攻击强化 全体友方攻击力提升8点,持续1次"
|
||||
* "攻击1次:攻击强化 全体友方攻击力提升5点,持续1次
|
||||
* 死亡时:攻击强化 全体友方攻击力提升8点,持续1次"
|
||||
*
|
||||
* @param hero 英雄静态配置(HeroInfo 中的条目)
|
||||
* @returns 多行技能描述文本,每行一个技能,用 \n 分隔
|
||||
@@ -113,7 +113,7 @@ export function buildSkillDesc(hero: heroInfo): string {
|
||||
const skill = mergeSkillParams(base, item.overrides);
|
||||
// 将模板中的 "n" 替换为实际触发次数
|
||||
const trigger = tpl.replace("n", String(item.t_num));
|
||||
lines.push(`${trigger} → ${base.name} ${buildEffectDesc(skill)}`);
|
||||
lines.push(`${trigger}:${base.name} ${buildEffectDesc(skill)}`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ export function buildSkillDesc(hero: heroInfo): string {
|
||||
const tpl = SkillTriggerDesc[SkillTriggerType.Field] ?? "场上存活";
|
||||
for (const uuid of fieldUuids) {
|
||||
const fs = FieldSkillSet[uuid];
|
||||
if (fs) lines.push(`${tpl} → ${fs.name} ${fs.info}`);
|
||||
if (fs) lines.push(`${tpl}:${fs.name} ${fs.info}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -79,6 +79,9 @@ export class HInfoComp extends CCComp {
|
||||
@property(Node)
|
||||
hp_node=null!
|
||||
|
||||
@property(Node)
|
||||
cd_node=null!
|
||||
|
||||
/** 绑定的英雄 ECS 实体 ID */
|
||||
private eid: number = 0;
|
||||
/** 绑定的英雄属性数据模型引用 */
|
||||
|
||||
Reference in New Issue
Block a user