refactor: 重构复活机制,将复活逻辑整合到dead触发组
1. 新增SkillOverrides的revive_hp和revive_count配置项,替代原独立复活字段 2. 移除所有revive相关的旧配置、解析函数和UI展示逻辑 3. 调整战斗逻辑,从dead触发组的overrides中读取复活配置 4. 更新文档说明,统一复活机制的配置方式 5. 清理冗余的导入和类型定义
This commit is contained in:
@@ -22,7 +22,7 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec
|
||||
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
||||
import { oops } from "db://oops-framework/core/Oops";
|
||||
import { mLogger } from "../common/Logger";
|
||||
import { HeroInfo, HeroList, SkillTriggerType, LvFieldEntry, LvReviveEntry, LvTriggerEntry, TriggerGrouped, getHeroDisplayStats } from "../common/config/heroSet";
|
||||
import { HeroInfo, HeroList, SkillTriggerType, LvFieldEntry, LvTriggerEntry, TriggerGrouped, getHeroDisplayStats } from "../common/config/heroSet";
|
||||
import { buildHeroSkillDesc } from "../common/HeroSkillText";
|
||||
import { GameEvent } from "../common/config/GameEvent";
|
||||
import { HERO_UPGRADE_NEED_FRAGMENTS, RARITY_BG_COLORS } from "../common/config/GameSet";
|
||||
@@ -493,7 +493,6 @@ export class HerosListComp extends CCComp {
|
||||
SkillTriggerType.Field,
|
||||
SkillTriggerType.Atking,
|
||||
SkillTriggerType.Atked,
|
||||
SkillTriggerType.Revive,
|
||||
]
|
||||
|
||||
/**
|
||||
@@ -527,8 +526,6 @@ export class HerosListComp extends CCComp {
|
||||
for (const type of HerosListComp.PANEL_TRIGGER_TYPES) {
|
||||
if (type === SkillTriggerType.Field) {
|
||||
this.addFieldIcons(hero[SkillTriggerType.Field], lv)
|
||||
} else if (type === SkillTriggerType.Revive) {
|
||||
this.addReviveIcon(hero[SkillTriggerType.Revive], lv)
|
||||
} else {
|
||||
this.addTriggerIcons(hero[type] as TriggerGrouped | undefined, lv, type)
|
||||
}
|
||||
@@ -584,15 +581,9 @@ export class HerosListComp extends CCComp {
|
||||
}
|
||||
}
|
||||
|
||||
/** 复活技能:未激活取最低档预览,激活取 ≤lv 最大档 */
|
||||
private addReviveIcon(revive: LvReviveEntry[] | undefined, lv: number) {
|
||||
if (!revive?.length) return
|
||||
const sorted = [...revive].sort((a, b) => a.lv - b.lv)
|
||||
let active: LvReviveEntry | undefined
|
||||
for (const e of sorted) { if (e.lv <= lv) active = e }
|
||||
const pick = active ?? sorted[0]
|
||||
// 复活档位无 s_lv 概念,技能等级恒为 1(等级标签展示技能等级而非解锁的英雄等级)
|
||||
this.addSkillIcon(pick.s_uuid, 1, !active, false, SkillTriggerType.Revive)
|
||||
/** 复活技能已纳入 dead 触发组,通过 dead 配置展示(revive_hp / revive_count) */
|
||||
private addReviveIcon(_revive: unknown, _lv: number) {
|
||||
// 复活已纳入 dead 触发组,不再单独处理
|
||||
}
|
||||
|
||||
// ======================== 英雄动画 ========================
|
||||
|
||||
@@ -54,7 +54,7 @@ import { MissSkillsComp } from "./MissSkillsComp";
|
||||
import { oops } from "db://oops-framework/core/Oops";
|
||||
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { HeroInfo, HType, resolveTriggerByLv, resolveFieldByLv, resolveReviveByLv, resolveSkillOverrides, calcGrowBonus, getHeroQualityCoef, getEffectiveStats, HERO_LV12_SPECIAL_LV, HERO_LV12_BASE_LV, HERO_LV12_SPECIAL_ATTR } from "../common/config/heroSet";
|
||||
import { HeroInfo, HType, resolveTriggerByLv, resolveFieldByLv, resolveSkillOverrides, calcGrowBonus, getHeroQualityCoef, getEffectiveStats, HERO_LV12_SPECIAL_LV, HERO_LV12_BASE_LV, HERO_LV12_SPECIAL_ATTR } from "../common/config/heroSet";
|
||||
import { applyTalentBonuses } from "../common/config/TalentSet";
|
||||
import { HeroViewComp } from "../hero/HeroViewComp";
|
||||
import { FacSet, FightSet } from "../common/config/GameSet";
|
||||
@@ -2223,7 +2223,7 @@ export class MissionCardComp extends CCComp {
|
||||
model.runtime_atking = resolveTriggerByLv(model.atking, nextLv);
|
||||
model.runtime_atked = resolveTriggerByLv(model.atked, nextLv);
|
||||
model.runtime_field = resolveFieldByLv(model.field, nextLv);
|
||||
model.runtime_revive = resolveReviveByLv(model.revive, nextLv);
|
||||
// 复活已纳入 dead 触发组,无需单独解析 revive
|
||||
|
||||
model.skills = {};
|
||||
for (const key in hero.skills) {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
* 手感微调只改 MON_HP_MUL / MON_AP_MUL / BOSS_HP_BONUS_MUL 三个系数即可。
|
||||
*/
|
||||
|
||||
import { HeroInfo, MonType, MonTypeName, TriggerGrouped, LvReviveEntry } from "../common/config/heroSet";
|
||||
import { HeroInfo, MonType, MonTypeName, TriggerGrouped } from "../common/config/heroSet";
|
||||
import { SkillOverrides } from "../common/config/SkillSet";
|
||||
import { FacSet } from "../common/config/GameSet";
|
||||
|
||||
@@ -200,8 +200,6 @@ export interface MonSkillSet {
|
||||
dead?: TriggerGrouped;
|
||||
/** 战斗开始触发 */
|
||||
fstart?: TriggerGrouped;
|
||||
/** 复活 */
|
||||
revive?: LvReviveEntry[];
|
||||
/** 在技能池中的抽取权重 */
|
||||
weight: number;
|
||||
}
|
||||
@@ -357,7 +355,6 @@ export interface GeneratedMonster {
|
||||
atked?: TriggerGrouped;
|
||||
dead?: TriggerGrouped;
|
||||
fstart?: TriggerGrouped;
|
||||
revive?: LvReviveEntry[];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { CardTriggerType } from "../common/config/CardSet";
|
||||
import { SkillSet, FieldSkillSet } from "../common/config/SkillSet";
|
||||
import {
|
||||
FieldEntry, HeroInfo, TriggerGrouped, SkillTriggerType,
|
||||
getGroupedTriggerName, getFieldSkillName, getReviveSkillName,
|
||||
getGroupedTriggerName, getFieldSkillName,
|
||||
} from "../common/config/heroSet";
|
||||
import { UIID } from "../common/config/GameUIConfig";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
@@ -136,7 +136,7 @@ export class SSkillBoxComp extends CCComp {
|
||||
* 解析技能名称:
|
||||
* 1. 显式设置的卡牌名(最高优先级);
|
||||
* 2. 英雄图鉴模式(hero_uuid>0):从 heroSet 英雄配置解析英雄语境名
|
||||
* (普攻/大招 HSkillInfo.name、trigger 组名、光环 FieldEntry.name、复活 LvReviveEntry.name);
|
||||
* (普攻/大招 HSkillInfo.name、trigger 组名、光环 FieldEntry.name、复活走 dead 组名);
|
||||
* 3. 回退 SkillSet / FieldSkillSet 底座名。
|
||||
*/
|
||||
private resolveSkillName(): string {
|
||||
@@ -170,14 +170,12 @@ export class SSkillBoxComp extends CCComp {
|
||||
private resolveHeroSkillName(): string {
|
||||
const hero = HeroInfo[this.hero_uuid];
|
||||
if (!hero) return "";
|
||||
// 槽位指定:光环/复活/触发组各自取值,未命中直接回退
|
||||
// 槽位指定:光环/触发组各自取值,未命中直接回退(复活已纳入 dead)
|
||||
if (this.hero_slot !== undefined) {
|
||||
if (this.hero_slot === SkillTriggerType.Field) {
|
||||
return getFieldSkillName(hero, this.s_uuid);
|
||||
}
|
||||
if (this.hero_slot === SkillTriggerType.Revive) {
|
||||
return getReviveSkillName(hero, this.s_uuid);
|
||||
}
|
||||
// 复活走 dead 槽位
|
||||
const grouped = hero[this.hero_slot] as TriggerGrouped | undefined;
|
||||
if (grouped?.[this.s_uuid]?.length) return getGroupedTriggerName(grouped, this.s_uuid);
|
||||
return "";
|
||||
@@ -194,10 +192,7 @@ export class SSkillBoxComp extends CCComp {
|
||||
if (hero.field?.some(e => e.uuids.some(u => u.uuid === this.s_uuid))) {
|
||||
return getFieldSkillName(hero, this.s_uuid);
|
||||
}
|
||||
// 复活技能
|
||||
if (hero.revive?.some(e => e.s_uuid === this.s_uuid)) {
|
||||
return getReviveSkillName(hero, this.s_uuid);
|
||||
}
|
||||
// 复活已纳入 dead 触发组,上方 dead 循环已覆盖
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user