refactor(rogue配置): 调整全局词条、等级和蓝图配置

下调多数词条的最低解锁等级,调整各等级预算与生成权重,优化前期游戏节奏
This commit is contained in:
panw
2026-05-26 11:10:11 +08:00
parent 9a0b768be8
commit ceb40941c2

View File

@@ -82,47 +82,47 @@ export interface AffixConfig {
export const AffixConfigs: Record<AffixType, AffixConfig> = {
[AffixType.Elite]: {
name: "精英", hpMultiplier: 1.5, apMultiplier: 1.3,
cost: 20, tierMin: 3, description: "+50% HP, +30% AP",
cost: 20, tierMin: 2, description: "+50% HP, +30% AP",
},
[AffixType.Berserk]: {
name: "狂暴", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 15, tierMin: 3, description: "攻速 ×1.5 (行为层实现)",
cost: 15, tierMin: 2, description: "攻速 ×1.5 (行为层实现)",
},
[AffixType.Shield]: {
name: "护盾", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 25, tierMin: 3, description: "开局带 抵御2次 伤害吸收盾",
cost: 25, tierMin: 2, description: "开局带 抵御2次 伤害吸收盾",
},
[AffixType.Regen]: {
name: "再生", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 20, tierMin: 4, description: "每秒回复 2% HP",
cost: 20, tierMin: 3, description: "每秒回复 2% HP",
},
[AffixType.Swift]: {
name: "疾速", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 10, tierMin: 4, description: "移速 ×2",
cost: 10, tierMin: 3, description: "移速 ×2",
},
[AffixType.Giant]: {
name: "巨型", hpMultiplier: 2.0, apMultiplier: 1.5,
cost: 30, tierMin: 4, description: "×2 体型, +100% HP, +50% AP",
cost: 30, tierMin: 3, description: "×2 体型, +100% HP, +50% AP",
},
[AffixType.Chain]: {
name: "连锁", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 20, tierMin: 5, description: "攻击附带 50% 溅射伤害",
cost: 20, tierMin: 4, description: "攻击附带 50% 溅射伤害",
},
[AffixType.SummonerA]: {
name: "召唤", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 25, tierMin: 5, description: "每 8 秒召唤 1 个小怪",
cost: 25, tierMin: 4, description: "每 8 秒召唤 1 个小怪",
},
[AffixType.CritRes]: {
name: "坚韧", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 15, tierMin: 3, description: "+暴击抗性",
cost: 15, tierMin: 2, description: "+暴击抗性",
},
[AffixType.FreezeRes]: {
name: "防寒", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 15, tierMin: 3, description: "+冰冻抗性",
cost: 15, tierMin: 2, description: "+冰冻抗性",
},
[AffixType.KnockbackRes]: {
name: "稳固", hpMultiplier: 1.0, apMultiplier: 1.0,
cost: 15, tierMin: 3, description: "+击退抗性",
cost: 15, tierMin: 2, description: "+击退抗性",
},
}
@@ -252,11 +252,11 @@ const MAJOR_BOSS_TIERS = new Set([3, 5])
* 主线 15 波映射wave 1-3 → T1, wave 4-6 → T2, ..., wave 13-15 → T5
*/
export const TierConfigs: Record<number, TierConfig> = {
1: { multiplier: 1.0, budget: 300, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long], isBossTier: false },
2: { multiplier: 2.0, budget: 800, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support], isBossTier: true },
3: { multiplier: 3.5, budget: 1800, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin], isBossTier: true },
4: { multiplier: 5.5, budget: 3200, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
5: { multiplier: 8.5, budget: 5200, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
1: { multiplier: 1.0, budget: 200, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long], isBossTier: false },
2: { multiplier: 2.0, budget: 500, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support], isBossTier: true },
3: { multiplier: 3.5, budget: 1100, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin], isBossTier: true },
4: { multiplier: 5.5, budget: 2000, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
5: { multiplier: 8.5, budget: 3200, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
}
/**
@@ -293,7 +293,7 @@ export function getTierConfig(tier: number): TierConfig {
* 最终概率 = baseAffixChance × roleMultiplier
*/
export const BaseAffixChance: Record<number, number> = {
1: 0, 2: 0, 3: 0.15, 4: 0.30, 5: 0.50,
1: 0, 2: 0.10, 3: 0.25, 4: 0.40, 5: 0.60,
}
/**
@@ -362,96 +362,96 @@ export interface BlueprintTemplate {
*/
export const BlueprintTemplates: BlueprintTemplate[] = [
{ id: "R1", type: TemplateType.REST, tierMin: 1, allowAffix: false,
slots: [{ typePool: [MonType.Melee], countMin: 3, countMax: 5, weight: 1.0 }] },
slots: [{ typePool: [MonType.Melee], countMin: 2, countMax: 3, weight: 1.0 }] },
{ id: "R2", type: TemplateType.REST, tierMin: 2, allowAffix: false,
slots: [{ typePool: [MonType.Melee, MonType.Heavy], countMin: 4, countMax: 6, weight: 1.0 }] },
slots: [{ typePool: [MonType.Melee, MonType.Heavy], countMin: 2, countMax: 4, weight: 1.0 }] },
{ id: "R3", type: TemplateType.REST, tierMin: 3, allowAffix: false,
slots: [{ typePool: [MonType.Melee, MonType.Long], countMin: 5, countMax: 8, weight: 1.0 }] },
slots: [{ typePool: [MonType.Melee, MonType.Long], countMin: 3, countMax: 5, weight: 1.0 }] },
{ id: "N1", type: TemplateType.NORMAL, tierMin: 1, allowAffix: false,
slots: [{ typePool: [MonType.Melee], countMin: 3, countMax: 5, weight: 1.0 }] },
{ id: "N2", type: TemplateType.NORMAL, tierMin: 1, allowAffix: false,
slots: [{ typePool: [MonType.Melee], countMin: 2, countMax: 3, weight: 1.0 }] },
{ id: "N2", type: TemplateType.NORMAL, tierMin: 1, allowAffix: true,
slots: [
{ typePool: [MonType.Melee], countMin: 2, countMax: 4, weight: 0.6 },
{ typePool: [MonType.Long], countMin: 1, countMax: 3, weight: 0.4 },
{ typePool: [MonType.Melee], countMin: 1, countMax: 3, weight: 0.6 },
{ typePool: [MonType.Long], countMin: 1, countMax: 2, weight: 0.4 },
] },
{ id: "N3", type: TemplateType.NORMAL, tierMin: 2, allowAffix: true,
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 7, weight: 0.5 },
{ typePool: [MonType.Long], countMin: 2, countMax: 5, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 3, weight: 0.2 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 2, countMax: 4, weight: 0.5 },
{ typePool: [MonType.Long], countMin: 1, countMax: 3, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.2 },
] },
{ id: "N4", type: TemplateType.NORMAL, tierMin: 3, allowAffix: true,
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 4, countMax: 8, weight: 0.4 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 3, countMax: 6, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 2, countMax: 4, weight: 0.3 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.4 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.3 },
] },
{ id: "M1", type: TemplateType.MIXED, tierMin: 1, allowAffix: true,
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.4 },
{ typePool: [MonType.Long], countMin: 2, countMax: 3, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.3 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 2, countMax: 3, weight: 0.4 },
{ typePool: [MonType.Long], countMin: 1, countMax: 2, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 1, weight: 0.3 },
] },
{ id: "M2", type: TemplateType.MIXED, tierMin: 3, allowAffix: true,
{ id: "M2", type: TemplateType.MIXED, tierMin: 2, allowAffix: true,
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 5, countMax: 8, weight: 0.3 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 3, countMax: 6, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 2, countMax: 4, weight: 0.4 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.3 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.4 },
] },
{ id: "M3", type: TemplateType.MIXED, tierMin: 4, allowAffix: true,
{ id: "M3", type: TemplateType.MIXED, tierMin: 3, allowAffix: true,
slots: [
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 6, countMax: 10, weight: 0.3 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 4, countMax: 7, weight: 0.3 },
{ typePool: [MonType.Summoner], countMin: 2, countMax: 3, weight: 0.2 },
{ typePool: [MonType.Support], countMin: 2, countMax: 4, weight: 0.2 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 6, weight: 0.3 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.3 },
{ typePool: [MonType.Summoner], countMin: 1, countMax: 2, weight: 0.2 },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.2 },
] },
{ id: "E1", type: TemplateType.ELITE, tierMin: 3, allowAffix: true,
{ id: "E1", type: TemplateType.ELITE, tierMin: 2, allowAffix: true,
slots: [
{ typePool: [MonType.Heavy], countMin: 2, countMax: 4, weight: 0.5, forceAffix: true },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 5, weight: 0.5, forceAffix: true },
{ typePool: [MonType.Heavy], countMin: 1, countMax: 3, weight: 0.5, forceAffix: true },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 1, countMax: 3, weight: 0.5, forceAffix: true },
] },
{ id: "E2", type: TemplateType.ELITE, tierMin: 4, allowAffix: true,
{ id: "E2", type: TemplateType.ELITE, tierMin: 3, allowAffix: true,
slots: [
{ typePool: [MonType.Heavy], countMin: 2, countMax: 4, weight: 0.3, forceAffix: true },
{ typePool: [MonType.Assassin], countMin: 3, countMax: 5, weight: 0.4, forceAffix: true },
{ typePool: [MonType.Support], countMin: 2, countMax: 3, weight: 0.3, forceAffix: true },
{ typePool: [MonType.Heavy], countMin: 1, countMax: 3, weight: 0.3, forceAffix: true },
{ typePool: [MonType.Assassin], countMin: 2, countMax: 3, weight: 0.4, forceAffix: true },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.3, forceAffix: true },
] },
{ id: "B1", type: TemplateType.BOSS, tierMin: 2, allowAffix: true,
slots: [
{ typePool: [MonType.MeleeBoss], countMin: 1, countMax: 1, weight: 1.0 },
{ typePool: [MonType.Melee], countMin: 4, countMax: 6, weight: 0.5 },
{ typePool: [MonType.Long], countMin: 2, countMax: 4, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.2 },
{ typePool: [MonType.Melee], countMin: 2, countMax: 4, weight: 0.5 },
{ typePool: [MonType.Long], countMin: 1, countMax: 2, weight: 0.3 },
{ typePool: [MonType.Support], countMin: 1, countMax: 1, weight: 0.2 },
] },
{ id: "B2", type: TemplateType.BOSS, tierMin: 2, allowAffix: true,
slots: [
{ typePool: [MonType.MeleeBoss], countMin: 1, countMax: 1, weight: 1.0 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 5, countMax: 8, weight: 0.5 },
{ typePool: [MonType.Long, MonType.Support], countMin: 3, countMax: 5, weight: 0.3 },
{ typePool: [MonType.Assassin], countMin: 1, countMax: 3, weight: 0.2 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.5 },
{ typePool: [MonType.Long, MonType.Support], countMin: 1, countMax: 3, weight: 0.3 },
{ typePool: [MonType.Assassin], countMin: 1, countMax: 2, weight: 0.2 },
] },
{ id: "B3", type: TemplateType.BOSS, tierMin: 3, allowAffix: true,
slots: [
{ typePool: [MonType.MeleeBoss, MonType.LongBoss], countMin: 1, countMax: 1, weight: 1.0 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 5, countMax: 8, weight: 0.35 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 3, countMax: 6, weight: 0.35 },
{ typePool: [MonType.Support], countMin: 2, countMax: 4, weight: 0.3 },
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.35 },
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.35 },
{ typePool: [MonType.Support], countMin: 1, countMax: 2, 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: 4, countMax: 7, weight: 0.35 },
{ typePool: [MonType.Assassin], countMin: 3, countMax: 5, weight: 0.3 },
{ typePool: [MonType.Summoner, MonType.Support], countMin: 2, countMax: 5, weight: 0.2 },
{ typePool: [MonType.Melee], countMin: 3, countMax: 6, weight: 0.15 },
{ typePool: [MonType.Heavy], countMin: 2, countMax: 4, weight: 0.35 },
{ typePool: [MonType.Assassin], countMin: 2, countMax: 3, weight: 0.3 },
{ typePool: [MonType.Summoner, MonType.Support], countMin: 1, countMax: 3, weight: 0.2 },
{ typePool: [MonType.Melee], countMin: 2, countMax: 4, weight: 0.15 },
] },
{ id: "TUTORIAL", type: TemplateType.NORMAL, tierMin: 1, allowAffix: false,
slots: [{ typePool: [MonType.Melee], countMin: 3, countMax: 3, weight: 1.0 }] },
slots: [{ typePool: [MonType.Melee], countMin: 2, countMax: 2, weight: 1.0 }] },
]
// ======================== 自适应难度配置 ========================