chore(map): 移除两种怪物类型并更新相关配置
删除了Bomber自爆和Splitter分裂两种怪物类型,同步更新了怪物枚举注释、名称映射、怪物列表、属性配置、关卡配置、蓝图模板以及默认波次配置
This commit is contained in:
@@ -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 },
|
||||
]
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user