Files
pixelheros/assets/script/game/map/RogueConfig.ts
panw e7b0d55e36 feat(rogue): 调整Boss占用槽位为3格并重构波次配置
- 将Boss默认占用槽位从2格改为3格,允许在任意连续三格空闲位置放置
- 简化波次配置,第1波改为2近战+1近战Boss,第2波改为2近战+1远程Boss
- 更新怪物池配置,调整近战Boss池包含6006和6105
- 重构怪物分配逻辑,统一处理所有类型怪物的槽位分配
- 优化远程Boss的放置策略,优先从后往前寻找空闲槽位
2026-04-08 10:31:20 +08:00

145 lines
5.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file RogueConfig.ts
* @description Roguelike 关卡配置 —— 怪物类型、成长值、波次刷怪方案
*
* 职责:
* 1. 定义怪物属性成长类型UpType和每种类型的 AP / HP 每阶段成长值。
* 2. 定义怪物分类MonType和对应的怪物 UUID 池。
* 3. 定义每一波Wave的怪物占位配置WaveSlotConfig / DefaultWaveSlot
* 4. 提供全局刷怪强度偏差系数SpawnPowerBias
*
* 设计说明:
* - 战场固定 5 个占位槽(索引 0-4
* - Boss 默认占 3 个槽位,只要有连续 3 格空闲即可放置。
* - MissionMonComp 在每波开始时读取本配置,决定刷怪组合。
*
* 注意:
* - StageGrow / StageBossGrow 的索引 [0] 为 AP 成长,[1] 为 HP 成长。
* - 实际计算公式base_stat + stage × grow_value × SpawnPowerBias。
*/
// ======================== 属性成长类型枚举 ========================
/** 怪物属性成长类型 */
export enum UpType {
/** 平衡型AP 和 HP 均匀成长 */
AP1_HP1 = 0,
/** 强 HP 型:以血量为主成长 */
HP2 = 1,
/** 强 AP 型:以攻击力为主成长 */
AP2 = 2
}
// ======================== 普通怪成长配置 ========================
/**
* 普通怪每阶段成长值:[AP 成长, HP 成长]
* 每经历一波stage +1怪物的 base_ap / base_hp 增加对应值。
*/
export const StageGrow = {
[UpType.AP1_HP1]: [4,10], // 平衡型:每波攻击+4 血量+10
[UpType.HP2]: [2,20], // 强HP型每波攻击+2 血量+20
[UpType.AP2]: [8,0], // 强AP型每波攻击+8 血量+0
}
// ======================== Boss 额外成长配置 ========================
/**
* Boss 在普通怪成长基础上的 **额外** 成长值:[AP 增量, HP 增量]
* 实际 Boss 成长 = StageGrow + StageBossGrow。
*/
export const StageBossGrow = {
[UpType.AP1_HP1]: [3,16], // 平衡型 Boss额外攻击+3 血量+16
[UpType.HP2]: [1,24], // 强HP型 Boss额外攻击+1 血量+24
[UpType.AP2]: [10,4], // 强AP型 Boss额外攻击+10 血量+4
}
// ======================== 怪物类型定义 ========================
/** 怪物类型常量(用于 WaveSlotConfig 中引用) */
export const MonType = {
/** 近战普通怪 */
Melee: 0,
/** 远程普通怪 */
Long: 1,
/** 辅助怪(支持类) */
Support: 2,
/** 近战 Boss */
MeleeBoss: 3,
/** 远程 Boss */
LongBoss: 4,
}
// ======================== 怪物 UUID 池 ========================
/** 各类型对应的怪物 UUID 列表(随机抽取) */
export const MonList = {
[MonType.Melee]: [6001,6002,6003], // 近战怪池
[MonType.Long]: [6004,6005], // 远程怪池
[MonType.Support]: [6005], // 辅助怪池
[MonType.MeleeBoss]:[6006,6105], // 近战 Boss 池
[MonType.LongBoss]:[6104], // 远程 Boss 池
}
// ======================== 全局刷怪强度系数 ========================
/**
* 全局刷怪强度偏差系数。
* 所有怪物的最终 AP / HP 会乘以此系数。
* 后期可根据玩家强度动态调整以实现自适应难度。
*/
export const SpawnPowerBias = 1
// ======================== 波次占位配置数据结构 ========================
/** 单条波次占位配置 */
export interface IWaveSlot {
/** 怪物类型(参考 MonType */
type: number;
/** 该类型的怪物数量 */
count: number;
/** (可选)每个怪物占用几个槽位,默认 1大型 Boss 设为 2 */
slotsPerMon?: number;
}
// =========================================================================================
// 【每波怪物占位与刷怪配置说明】
//
// 字段说明:
// - type: 怪物类型 (参考 MonType如近战 0远程 1Boss 3 等)。
// - count: 该类型的怪在场上同时存在几个。
// - slotsPerMon: (可选) 单个怪物体积占用几个占位坑,默认为 1。
// 大型 Boss 默认设为 3它会跨占位降落。
//
// 【规则约束】:
// - 全场固定 5 个槽位(索引 0-4
// - Boss 默认占用 3 个位置,只要有连续 3 格即可。
// - 每波怪物总槽位占用不能超过 5。
// =========================================================================================
/** 各波次的怪物占位配置key = 波次编号) */
export const WaveSlotConfig: { [wave: number]: IWaveSlot[] } = {
/** 第 1 波2 近战 + 1 近战Boss(默认占3格) */
1: [
{ type: MonType.Melee, count: 2 },
{ type: MonType.MeleeBoss, count: 1 }
],
/** 第 2波2 近战 + 1 远程Boss(默认占3格) */
2: [
{ type: MonType.Melee, count: 2 },
{ type: MonType.LongBoss, count: 1 }
],
}
/**
* 默认占位配置:
* 当 WaveSlotConfig 中找不到对应波次时使用此兜底配置。
* 默认 2 近战 + 3 远程。
*/
export const DefaultWaveSlot: IWaveSlot[] = [
{ type: MonType.Melee, count: 2 },
{ type: MonType.Long, count: 3 }
]