refactor(game): 调整场上英雄数量机制为固定3人

1. 重构GameSet配置,移除HERO_MAX_NUM新增HERO_FIELD_NUM定义场上固定编制
2. 移除局内英雄上限相关的冗余数据与校验逻辑,玩家无法主动扩充英雄数量
3. 更新所有引用旧英雄上限配置的代码,统一使用新的固定编制常量
4. 调整抽卡、阵容计算等相关逻辑适配新的英雄数量规则
This commit is contained in:
panFD
2026-08-23 17:15:46 +08:00
parent fb2c67ccab
commit 8c81be7592
4 changed files with 13 additions and 50 deletions

View File

@@ -8,7 +8,7 @@ import { GameEvent } from "./config/GameEvent";
import { GameScoreStats } from "./config/HeroAttrs";
import { mLogger } from "./Logger";
import { gameDataSync } from "./GameDataSync";
import { FightSet, HERO_UPGRADE_NEED_FRAGMENTS } from "./config/GameSet";
import { HERO_UPGRADE_NEED_FRAGMENTS } from "./config/GameSet";
/**
* 用远程数据覆盖本地数据(统一方法)
@@ -121,8 +121,6 @@ export class SingletonModuleComp extends ecs.Comp {
pending_mon_num: 0,//待刷出怪物数量MissionMonComp 每帧写入,供回合结束检测与 HUD 进度)
wave_early_skip: 0,//本回合清场加速累计节省的秒数MissionComp 用于还原 DDA 判定口径)
hero_num: 0,//英雄数量
hero_max_num: FightSet.HERO_MAX_NUM,//英雄可召唤上限
hero_extend_max_num: FightSet.HERO_MAX_NUM + 1,//英雄可拓展上限
wave_time_num: 0,//回合时间
in_fight: false,
fight_time: 0,//战斗时间

View File

@@ -38,7 +38,8 @@ export enum FightSet {
CRIT_DAMAGE = 50,//暴击伤害
MORE_RC = 10,//更多次数 广告获取的次数
HEARTPOS = -320,//基地位置
HERO_MAX_NUM = 10,//英雄最大数量
/** 场上英雄编制数:由开局 3 次三选一固定,玩家无法扩充 */
HERO_FIELD_NUM = 3,
/** 英雄可升级到的最高等级(通过升级卡提升) */
HERO_MAX_LV = 6,
/** 英雄技能等级上限(无限升级下技能 5 级封顶,超出等级只长属性) */

View File

@@ -866,7 +866,7 @@ export const HeroList: number[] = [
/**
* 推荐阵容条目。
* Why: 场上最多 3 个英雄FightSet.HERO_MAX_NUM围绕"发动机 → 增益 → 主C"铁三角结构
* Why: 场上固定 3 个英雄FightSet.HERO_FIELD_NUM围绕"发动机 → 增益 → 主C"铁三角结构
* 预置官方配合组合,供抽卡引导、阵容推荐 UI 与 AI 自动布阵消费。
*/
export interface HeroComboInfo {
@@ -1048,7 +1048,7 @@ function getAttackCd(hero: heroInfo): number {
/** 计算目标群体范围系数 */
function calcScopeMul(group: TGroup): number {
return (group === TGroup.Ally || group === TGroup.Team) ? FightSet.HERO_MAX_NUM : 1;
return (group === TGroup.Ally || group === TGroup.Team) ? FightSet.HERO_FIELD_NUM : 1;
}
/** 计算目标时间窗内的普攻次数 */
@@ -1306,7 +1306,7 @@ function calcFieldPowerDetailed(entries: FieldEntry[] | undefined, hero: heroInf
const weights = HERO_POWER_WEIGHTS;
const { hp: hpEff, ap: apEff } = getEffectiveStats(hero, targetLv);
const cd = getAttackCd(hero);
const scopeMul = FightSet.HERO_MAX_NUM;
const scopeMul = FightSet.HERO_FIELD_NUM;
let total = 0;
const items: FieldSkillEval[] = [];