feat(skill): 优化技能描述与UI显示

1.  调整技能商店卡牌描述,添加"召唤"动作描述,适配多召唤数量逻辑
2.  更新技能描述模板,支持根据overrides.num动态计算召唤数量
3.  重构部分UI预制体布局与节点激活状态
4.  新增一批单体攻击技能配置模板
This commit is contained in:
pan
2026-08-03 10:50:22 +08:00
parent 5116bb01fd
commit 2535f638d9
8 changed files with 1553 additions and 493 deletions

View File

@@ -437,7 +437,7 @@ function buildChanceSuffix(skill: SkillConfig): string {
* - 药品/技能卡card.skill 有效)→ 查 SkillDescSet 模板渲染(计时模式取 BuffList 默认值兜底);
* 未入表技能回退 SkillSet.info / card.info整行不高亮。
* - 装备卡card.field 有效)→ 复用 buildEquipRich 逐词条渲染。
* - 触发节奏t_times/t_inv融入单行描述定时触发"每M秒释放一次「技能名」xxx共N次";即时触发仅显示效果。
* - 触发节奏t_times/t_inv融入单行描述定时触发"每M秒召唤K个「技能名」攻击敌人xxx共N次"K=overrides.num+1;即时触发仅显示效果。
*
* @param card 卡片配置SCardSet 技能卡 / ICardSet 药品卡 / EquipSet 装备卡)
* @returns 多行富文本串;无可描述内容时回退 card.info
@@ -470,7 +470,7 @@ export function buildCardDescRich(card: CardConfig): string {
return rich;
}
const rhythm = `每<color=${RICH_VALUE_COLOR}>${tInv}</color>秒释放一次「<color=${RICH_NAME_COLOR}>${skill.name}</color>」`;
const rhythm = `每<color=${RICH_VALUE_COLOR}>${tInv}</color>秒召唤<color=${RICH_VALUE_COLOR}>${(card.overrides?.num ?? 0) + 1}</color>个「<color=${RICH_NAME_COLOR}>${skill.name}</color>」攻击敌人`;
const times = `,共<color=${RICH_VALUE_COLOR}>${tTimes}</color>次`;
return `${rhythm}${rich}${times}`;
}

View File

@@ -37,34 +37,34 @@ interface SkillCardRaw {
const SkillCardData: SkillCardRaw[] = [
// ==================== card_lv 1 · 基础单体ap:150附加差异化效果 ====================
// --- 刀剑系:暴击 ---
{ uuid: 8101, skill: 6001, card_lv: 1, icon: "Sword-FA_WP_Main_Sword_003_PurpleSilver", name: "飞剑", info: "造成攻击力150%的伤害25%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 25 } },
{ uuid: 8102, skill: 6002, card_lv: 1, icon: "Sword-FA_WP_Main_Sword_009_GraySilver", name: "飞刀", info: "造成攻击力150%的伤害25%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 25 } },
{ uuid: 8103, skill: 6003, card_lv: 1, icon: "Sword-FA_WP_Main_Sword_019_WoodSilver", name: "匕首", info: "造成攻击力150%的伤害25%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 25 } },
{ uuid: 8101, skill: 6001, card_lv: 1, icon: "Sword-FA_WP_Main_Sword_003_PurpleSilver", name: "飞剑卷轴", info: "召唤飞剑攻击敌人,造成攻击力150%的伤害25%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 25 } },
{ uuid: 8102, skill: 6002, card_lv: 1, icon: "Sword-FA_WP_Main_Sword_009_GraySilver", name: "飞刀卷轴", info: "召唤飞刀攻击敌人,造成攻击力150%的伤害25%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 25 } },
{ uuid: 8103, skill: 6003, card_lv: 1, icon: "Sword-FA_WP_Main_Sword_019_WoodSilver", name: "匕首卷轴", info: "召唤匕首攻击敌人,造成攻击力150%的伤害25%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 25 } },
// --- 斧锤系:击退 ---
{ uuid: 8104, skill: 6004, card_lv: 1, icon: "Axe-FA_WP_Main_Axe_004_WoodGray", name: "飞斧", info: "造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
{ uuid: 8107, skill: 6007, card_lv: 1, icon: "Blunt-FA_WP_Main_Blunt_002_Wood", name: "飞棒", info: "造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
{ uuid: 8111, skill: 6011, card_lv: 1, icon: "Blunt-FA_WP_Main_Blunt_005_Gray", name: "飞锤", info: "造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
{ uuid: 8112, skill: 6012, card_lv: 1, icon: "Axe-FA_WP_Main_Axe_002_WoodGray", name: "飞斧·重", info: "造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
{ uuid: 8104, skill: 6004, card_lv: 1, icon: "Axe-FA_WP_Main_Axe_004_WoodGray", name: "飞斧卷轴", info: "召唤飞斧攻击敌人,造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
{ uuid: 8107, skill: 6007, card_lv: 1, icon: "Blunt-FA_WP_Main_Blunt_002_Wood", name: "飞棒卷轴", info: "召唤飞棒攻击敌人,造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
{ uuid: 8111, skill: 6011, card_lv: 1, icon: "Blunt-FA_WP_Main_Blunt_005_Gray", name: "飞锤卷轴", info: "召唤飞锤攻击敌人,造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
{ uuid: 8112, skill: 6012, card_lv: 1, icon: "Axe-FA_WP_Main_Axe_002_WoodGray", name: "飞斧·重卷轴", info: "召唤飞斧·重攻击敌人,造成攻击力150%的伤害25%击退", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, bck: 25 } },
// --- 枪矛系穿透多命中1次 ---
{ uuid: 8105, skill: 6005, card_lv: 1, icon: "Spear-FA_WP_Main_Spear_010_MetalBlue", name: "飞枪", info: "造成攻击力150%的伤害可贯穿2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, hit_count: 2 } },
{ uuid: 8106, skill: 6006, card_lv: 2, icon: "Stat_Attack_01", name: "突刺·双", info: "一次释放2发造成攻击力180%的伤害可贯穿2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 180, hit_count: 2, num: 1 } },
{ uuid: 8105, skill: 6005, card_lv: 1, icon: "Spear-FA_WP_Main_Spear_010_MetalBlue", name: "飞枪卷轴", info: "召唤飞枪攻击敌人,造成攻击力150%的伤害可贯穿2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, hit_count: 2 } },
{ uuid: 8106, skill: 6006, card_lv: 2, icon: "Stat_Attack_01", name: "突刺·双卷轴", info: "召唤突刺·双攻击敌人,一次释放2发造成攻击力180%的伤害可贯穿2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 180, hit_count: 2, num: 1 } },
// --- 远程射击系:高暴击 ---
{ uuid: 8108, skill: 6008, card_lv: 1, icon: "Stat_RangedAttack", name: "射击", info: "造成攻击力150%的伤害30%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 30 } },
{ uuid: 8109, skill: 6009, card_lv: 1, icon: "Stat_RangedAttack", name: "蓝箭", info: "造成攻击力150%的伤害30%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 30 } },
{ uuid: 8110, skill: 6010, card_lv: 1, icon: "Stat_RangedAttack", name: "火箭", info: "造成攻击力150%的伤害30%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 30 } },
{ uuid: 8108, skill: 6008, card_lv: 1, icon: "Stat_RangedAttack", name: "射击卷轴", info: "召唤射击攻击敌人,造成攻击力150%的伤害30%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 30 } },
{ uuid: 8109, skill: 6009, card_lv: 1, icon: "Stat_RangedAttack", name: "蓝箭卷轴", info: "召唤蓝箭攻击敌人,造成攻击力150%的伤害30%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 30 } },
{ uuid: 8110, skill: 6010, card_lv: 1, icon: "Stat_RangedAttack", name: "火箭卷轴", info: "召唤火箭攻击敌人,造成攻击力150%的伤害30%暴击", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, crt: 30 } },
// --- 魔球系:击晕 ---
{ uuid: 8113, skill: 6013, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_MagicBall_001_Blue", name: "蓝魔球", info: "造成攻击力150%的伤害25%击晕", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, stun: 25 } },
{ uuid: 8114, skill: 6014, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_MagicBall_001_Purple", name: "紫魔球", info: "造成攻击力150%的伤害25%击晕", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, stun: 25 } },
{ uuid: 8113, skill: 6013, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_MagicBall_001_Blue", name: "蓝魔球卷轴", info: "召唤蓝魔球攻击敌人,造成攻击力150%的伤害25%击晕", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, stun: 25 } },
{ uuid: 8114, skill: 6014, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_MagicBall_001_Purple", name: "紫魔球卷轴", info: "召唤紫魔球攻击敌人,造成攻击力150%的伤害25%击晕", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, stun: 25 } },
// --- 药瓶系:冰冻 ---
{ uuid: 8115, skill: 6015, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_Potion_001_Green", name: "绿药瓶", info: "造成攻击力150%的伤害25%冰冻", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, frz: 25 } },
{ uuid: 8116, skill: 6016, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_Potion_001_Red", name: "红药瓶", info: "造成攻击力150%的伤害25%冰冻", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, frz: 25 } },
{ uuid: 8115, skill: 6015, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_Potion_001_Green", name: "绿药瓶卷轴", info: "召唤绿药瓶攻击敌人,造成攻击力150%的伤害25%冰冻", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, frz: 25 } },
{ uuid: 8116, skill: 6016, card_lv: 1, icon: "Sub_Item-FA_WP_Sub_Potion_001_Red", name: "红药瓶卷轴", info: "召唤红药瓶攻击敌人,造成攻击力150%的伤害25%冰冻", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 150, frz: 25 } },
// ==================== card_lv 2 · 中阶范围ap:200群体附加 ====================
{ uuid: 8201, skill: 6101, card_lv: 2, icon: "Stat_FireDamage", name: "火球·双", info: "一次释放2发造成攻击力200%的伤害30%暴击可命中2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 200, crt: 30, num: 1 } },
{ uuid: 8202, skill: 6102, card_lv: 2, icon: "Stat_Mana", name: "飓风", info: "造成攻击力200%的伤害30%击晕可命中2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 200, stun: 30 } },
{ uuid: 8201, skill: 6101, card_lv: 2, icon: "Stat_FireDamage", name: "火球·双卷轴", info: "召唤火球·双攻击敌人,一次释放2发造成攻击力200%的伤害30%暴击可命中2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 200, crt: 30, num: 1 } },
{ uuid: 8202, skill: 6102, card_lv: 2, icon: "Stat_Mana", name: "飓风卷轴", info: "召唤飓风攻击敌人,造成攻击力200%的伤害30%击晕可命中2个目标", is_inst: false, t_times: 3, t_inv: 5, trigger_type: CardTriggerType.Interval, overrides: { ap: 200, stun: 30 } },
// ==================== card_lv 3 · 高阶范围ap:250群体附加 ====================
{ uuid: 8301, skill: 6201, card_lv: 3, icon: "Stat_SplashDamage", name: "陨石雨", info: "一次释放3发每发造成攻击力250%的范围伤害40%击晕", is_inst: false, t_times: 4, t_inv: 4, trigger_type: CardTriggerType.Interval, overrides: { ap: 250, stun: 40, num: 2 } },
{ uuid: 8301, skill: 6201, card_lv: 3, icon: "Stat_SplashDamage", name: "陨石雨卷轴", info: "召唤陨石雨攻击敌人,一次释放3发每发造成攻击力250%的范围伤害40%击晕", is_inst: false, t_times: 4, t_inv: 4, trigger_type: CardTriggerType.Interval, overrides: { ap: 250, stun: 40, num: 2 } },
];
/**

View File

@@ -100,6 +100,82 @@ export const SkillDescSet: Record<number, SkillDescConfig> = {
templPerm: "{target}以{value}%生命复活",
},
// ==================== 技能商店单体攻击卡6001-6016ap = 攻击力%伤害 ====================
// 注:暴击/冰冻/击晕/击退等附加概率由 buildCardDescRich 扫描 crt/frz/stun/bck 动态追加,不在模板写死
6001: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6002: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6003: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6004: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6005: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6006: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6007: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6008: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6009: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6010: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6011: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6012: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6013: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6014: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6015: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6016: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
// ==================== 技能商店中阶攻击卡6101-6102ap = 攻击力%伤害 ====================
6101: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
6102: {
verb: "", unit: "%", permField: "ap",
templPerm: "造成攻击力{value}{unit}的伤害",
},
// ==================== 技能商店范围攻击卡6201-6206ap = 单段伤害 ====================
// 注:暴击/冰冻/击晕/击退等附加概率由 buildCardDescRich 扫描 crt/frz/stun/bck 动态追加,不在模板写死
6201: {
@@ -208,23 +284,23 @@ export interface FieldDescConfig {
* 数值永远取 FieldSkillConfig.value 实时渲染,替代手写 info杜绝漂移。
*/
export const FieldDescSet: Record<number, FieldDescConfig> = {
[FieldSkillType.SummonCount]: { verb: "召唤触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.DeadCount]: { verb: "死亡触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.StartCount]: { verb: "战斗开始触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.EndCount]: { verb: "战斗结束触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.WaveGold]: { verb: "每回合金币收益", fmt: FieldValueFmt.Int },
[FieldSkillType.SellGold]: { verb: "卖出英雄金币", fmt: FieldValueFmt.Int },
[FieldSkillType.WaveHeal]: { verb: "战斗结束生命回复量", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroAtk]: { verb: "英雄攻击力", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroStun]: { verb: "英雄击晕概率", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroCrit]: { verb: "英雄暴击率", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroCritDamage]: { verb: "英雄暴击伤害", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroSpeed]: { verb: "英雄攻击速度", fmt: FieldValueFmt.Percent },
[FieldSkillType.BuyDiscount]: { verb: "购买卡牌费用", fmt: FieldValueFmt.IntMinus },
[FieldSkillType.SummonCount]: { verb: "召唤触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.DeadCount]: { verb: "死亡触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.StartCount]: { verb: "战斗开始触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.EndCount]: { verb: "战斗结束触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.WaveGold]: { verb: "每回合金币收益", fmt: FieldValueFmt.Int },
[FieldSkillType.SellGold]: { verb: "卖出英雄金币", fmt: FieldValueFmt.Int },
[FieldSkillType.WaveHeal]: { verb: "战斗结束生命回复量", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroAtk]: { verb: "英雄攻击力", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroStun]: { verb: "英雄击晕概率", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroCrit]: { verb: "英雄暴击率", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroCritDamage]: { verb: "英雄暴击伤害", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroSpeed]: { verb: "英雄攻击速度", fmt: FieldValueFmt.Percent },
[FieldSkillType.BuyDiscount]: { verb: "购买卡牌费用", fmt: FieldValueFmt.IntMinus },
[FieldSkillType.RefreshDiscount]: { verb: "刷新卡牌费用", fmt: FieldValueFmt.IntMinus },
[FieldSkillType.HeroHp]: { verb: "英雄最大生命", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroWindFury]: { verb: "英雄风怒概率", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroPuncture]: { verb: "英雄穿刺概率", fmt: FieldValueFmt.Percent },
[FieldSkillType.AtkCount]: { verb: "攻击触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.BeAtkCount]: { verb: "被攻击触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.HeroHp]: { verb: "英雄最大生命", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroWindFury]: { verb: "英雄风怒概率", fmt: FieldValueFmt.Percent },
[FieldSkillType.HeroPuncture]: { verb: "英雄穿刺概率", fmt: FieldValueFmt.Percent },
[FieldSkillType.AtkCount]: { verb: "攻击触发技能次数", fmt: FieldValueFmt.Int },
[FieldSkillType.BeAtkCount]: { verb: "被攻击触发技能次数", fmt: FieldValueFmt.Int },
};