chore(map): 移除两种怪物类型并更新相关配置

删除了Bomber自爆和Splitter分裂两种怪物类型,同步更新了怪物枚举注释、名称映射、怪物列表、属性配置、关卡配置、蓝图模板以及默认波次配置
This commit is contained in:
panw
2026-05-21 09:26:25 +08:00
parent 7c313571ec
commit 5cdb50b760

View File

@@ -12,33 +12,29 @@
// ======================== 怪物类型枚举 ========================
/** 怪物类型(10 种) */
/** 怪物类型(8 种) */
export enum MonType {
Melee = 0,
Heavy = 1,
Long = 2,
Support = 3,
Bomber = 4,
Summoner = 5,
Assassin = 6,
Splitter = 7,
MeleeBoss = 8,
LongBoss = 9,
}
/**
* 怪物类型名称映射(调试/日志用)
* @example MonTypeName[MonType.Bomber] // => "自爆"
* @example MonTypeName[MonType.Melee] // => "近战"
*/
export const MonTypeName: Record<number, string> = {
[MonType.Melee]: "近战",
[MonType.Heavy]: "重型",
[MonType.Long]: "远程",
[MonType.Support]: "辅助",
[MonType.Bomber]: "自爆",
[MonType.Summoner]: "召唤师",
[MonType.Assassin]: "刺客",
[MonType.Splitter]: "分裂",
[MonType.MeleeBoss]: "近战Boss",
[MonType.LongBoss]: "远程Boss",
}
@@ -190,10 +186,8 @@ export const MonList: Record<number, number[]> = {
[MonType.Heavy]: [6003, 6103],
[MonType.Long]: [6004, 6102],
[MonType.Support]: [6005],
[MonType.Bomber]: [6201, 6202],
[MonType.Summoner]: [6203],
[MonType.Assassin]: [6204],
[MonType.Splitter]: [6205],
[MonType.MeleeBoss]: [6006, 6105],
[MonType.LongBoss]: [6104],
}
@@ -225,10 +219,8 @@ export const MonsterStats: Record<MonType, MonsterBaseStats> = {
[MonType.Heavy]: { hp: 1050, ap: 30, cost: 50, isBoss: false },
[MonType.Long]: { hp: 240, ap: 45, cost: 40, isBoss: false },
[MonType.Support]: { hp: 240, ap: 20, cost: 50, isBoss: false },
[MonType.Bomber]: { hp: 180, ap: 80, cost: 35, isBoss: false },
[MonType.Summoner]: { hp: 300, ap: 15, cost: 60, isBoss: false },
[MonType.Assassin]: { hp: 270, ap: 55, cost: 45, isBoss: false },
[MonType.Splitter]: { hp: 450, ap: 20, cost: 55, isBoss: false },
[MonType.MeleeBoss]: { hp: 4500, ap: 20, cost: 200, isBoss: true },
[MonType.LongBoss]: { hp: 1050, ap: 30, cost: 200, isBoss: true },
}
@@ -262,9 +254,9 @@ const MAJOR_BOSS_TIERS = new Set([3, 5])
export const TierConfigs: Record<number, TierConfig> = {
1: { multiplier: 1.0, budget: 500, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long], isBossTier: false },
2: { multiplier: 1.6, budget: 1000, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support], isBossTier: true },
3: { multiplier: 2.5, budget: 1800, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Bomber, MonType.Assassin], isBossTier: true },
4: { multiplier: 3.8, budget: 3000, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Bomber, MonType.Assassin, MonType.Summoner, MonType.Splitter], isBossTier: true },
5: { multiplier: 5.5, budget: 5000, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Bomber, MonType.Assassin, MonType.Summoner, MonType.Splitter], isBossTier: true },
3: { multiplier: 2.5, budget: 1800, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin], isBossTier: true },
4: { multiplier: 3.8, budget: 3000, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
5: { multiplier: 5.5, budget: 5000, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
}
/**
@@ -282,7 +274,7 @@ export function getTierConfig(tier: number): TierConfig {
const growthRate = InfiniteModeConfig.tierGrowthRate
const allTypes: MonType[] = [
MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support,
MonType.Bomber, MonType.Assassin, MonType.Summoner, MonType.Splitter,
MonType.Assassin, MonType.Summoner,
]
return {
multiplier: Math.round(prev.multiplier * growthRate * 100) / 100,
@@ -395,7 +387,7 @@ export const BlueprintTemplates: BlueprintTemplate[] = [
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 10, countMax: 20, weight: 0.4 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 5, countMax: 15, weight: 0.3 },
{ typePool: [MonType.Support, MonType.Bomber], countMin: 5, countMax: 10, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 5, countMax: 10, weight: 0.3 },
] },
// ---- MIXED 类 ----
@@ -409,15 +401,14 @@ export const BlueprintTemplates: BlueprintTemplate[] = [
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 10, countMax: 20, weight: 0.3 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 10, countMax: 15, weight: 0.3 },
{ typePool: [MonType.Bomber], countMin: 5, countMax: 10, weight: 0.2 },
{ typePool: [MonType.Support], countMin: 5, countMax: 5, weight: 0.2 },
{ typePool: [MonType.Support], countMin: 5, countMax: 5, weight: 0.4 },
] },
{ id: "M3", type: TemplateType.MIXED, tierMin: 4, allowAffix: true,
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 15, countMax: 20, weight: 0.3 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 10, countMax: 15, weight: 0.25 },
{ typePool: [MonType.Summoner, MonType.Splitter], countMin: 5, countMax: 10, weight: 0.25 },
{ typePool: [MonType.Bomber, MonType.Support], countMin: 5, countMax: 10, weight: 0.2 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 10, countMax: 15, weight: 0.3 },
{ typePool: [MonType.Summoner], countMin: 5, countMax: 10, weight: 0.2 },
{ typePool: [MonType.Support], countMin: 5, countMax: 10, weight: 0.2 },
] },
// ---- ELITE 类 ----
@@ -429,8 +420,8 @@ export const BlueprintTemplates: BlueprintTemplate[] = [
{ id: "E2", type: TemplateType.ELITE, tierMin: 4, allowAffix: true,
slots: [
{ typePool: [MonType.Heavy], countMin: 5, countMax: 10, weight: 0.3, forceAffix: true },
{ typePool: [MonType.Assassin, MonType.Splitter], countMin: 5, countMax: 10, weight: 0.4, forceAffix: true },
{ typePool: [MonType.Bomber], countMin: 5, countMax: 10, weight: 0.3, forceAffix: true },
{ typePool: [MonType.Assassin], countMin: 5, countMax: 10, weight: 0.4, forceAffix: true },
{ typePool: [MonType.Support], countMin: 5, countMax: 10, weight: 0.3, forceAffix: true },
] },
// ---- BOSS 类 ----
@@ -451,15 +442,14 @@ export const BlueprintTemplates: BlueprintTemplate[] = [
{ typePool: [MonType.MeleeBoss, MonType.LongBoss], countMin: 1, countMax: 1, weight: 1.0 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 10, countMax: 20, weight: 0.4 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 5, countMax: 15, weight: 0.3 },
{ typePool: [MonType.Bomber, MonType.Support], countMin: 5, countMax: 10, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 5, countMax: 10, weight: 0.3 },
] },
{ id: "B4", type: TemplateType.BOSS, tierMin: 4, allowAffix: true,
slots: [
{ typePool: [MonType.MeleeBoss, MonType.LongBoss], countMin: 1, countMax: 1, weight: 1.0 },
{ typePool: [MonType.Heavy], countMin: 10, countMax: 15, weight: 0.3 },
{ typePool: [MonType.Assassin, MonType.Splitter], countMin: 5, countMax: 10, weight: 0.3 },
{ typePool: [MonType.Summoner, MonType.Support], countMin: 5, countMax: 10, weight: 0.2 },
{ typePool: [MonType.Bomber], countMin: 5, countMax: 10, weight: 0.2 },
{ typePool: [MonType.Heavy], countMin: 10, countMax: 15, weight: 0.4 },
{ typePool: [MonType.Assassin], countMin: 5, countMax: 10, weight: 0.3 },
{ typePool: [MonType.Summoner, MonType.Support], countMin: 5, countMax: 10, weight: 0.3 },
] },
// ---- 教程专用 ----
@@ -1026,13 +1016,12 @@ export function getWaveSlotConfig(waveNumber: number): IWaveSlot[] {
/**
* 向后兼容:默认占位配置(波次 > 15 或异常时的兜底配置)
* 20 个 Melee + 15 个 Long + 5 个 Support + 5 个 Bomber
* 20 个 Melee + 15 个 Long + 5 个 Support
*/
export const DefaultWaveSlot: IWaveSlot[] = [
{ type: MonType.Melee, count: 20 },
{ type: MonType.Long, count: 15 },
{ type: MonType.Support, count: 5 },
{ type: MonType.Bomber, count: 5 },
]
/**