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