关卡调整

This commit is contained in:
2025-08-17 21:12:35 +08:00
parent 1a25a566c8
commit b6ec65741a
3 changed files with 39 additions and 17 deletions

View File

@@ -218,27 +218,40 @@ export function getMonsterEnhancement(monsterType: MonsterType, useRandom: boole
}
/**
* 根据关卡号判断关卡类型
* 根据关卡号和等级判断关卡类型
* @param stageNumber 关卡号从1开始
* @param level 等级1-5
* @returns 关卡类型
*/
export function getStageType(stageNumber: number): StageType {
export function getStageType(stageNumber: number, level: number = 1): StageType {
// 第10关的特殊规则
if (stageNumber % 10 === 0) {
return StageType.BOSS; // 每10关为Boss关
} else if (stageNumber % 5 === 0) {
return StageType.ELITE; // 每5关非10的倍数为精英关
} else {
return StageType.NORMAL; // 其他关卡为普通关
if (level === 5) {
return StageType.BOSS; // 第10关第5级为Boss关
} else if (level === 4) {
return StageType.ELITE; // 第10关第4级为精英关
} else {
return StageType.NORMAL; // 第10关1-3级为普通关
}
}
// 1-9关的规则
else {
if (level === 5) {
return StageType.ELITE; // 1-9关第5级为精英关
} else {
return StageType.NORMAL; // 1-9关1-4级为普通关
}
}
}
/**
* 生成关卡配置
* @param stageNumber 关卡号从1开始
* @param level 等级1-5
* @returns MonsterType数组格式
*/
export function generateStageConfig(stageNumber: number): MonsterType[] {
const stageType = getStageType(stageNumber);
export function generateStageConfig(stageNumber: number, level: number = 1): MonsterType[] {
const stageType = getStageType(stageNumber, level);
const rule = StageConfigRules[stageType];
const monsterArray: MonsterType[] = [];
@@ -249,7 +262,7 @@ export function generateStageConfig(stageNumber: number): MonsterType[] {
}
});
return monsterArray;
return monsterArray;
}
/**
@@ -276,10 +289,11 @@ export function getMonsterUUIDsByType(monsterType: MonsterType): number[] {
/**
* 获取当前关卡对应的所有怪物UUID数组
* @param stageNumber 关卡号
* @param level 等级1-5
* @returns 怪物UUID数组按关卡配置顺序排列
*/
export function getStageMonsterUUIDs(stageNumber: number): number[] {
const monsterTypes = generateStageConfig(stageNumber);
export function getStageMonsterUUIDs(stageNumber: number, level: number = 1): number[] {
const monsterTypes = generateStageConfig(stageNumber, level);
const monsterUUIDs: number[] = [];
monsterTypes.forEach(monsterType => {
@@ -297,11 +311,12 @@ export function getStageMonsterUUIDs(stageNumber: number): number[] {
/**
* 获取关卡怪物配置包含UUID和增强属性
* @param stageNumber 关卡号
* @param level 等级1-5
* @param useRandomBuff 是否使用随机buff
* @returns 完整的怪物配置数组
*/
export function getStageMonsterConfigs(stageNumber: number, useRandomBuff: boolean = true) {
const monsterTypes = generateStageConfig(stageNumber);
export function getStageMonsterConfigs(stageNumber: number, level: number = 1, useRandomBuff: boolean = true) {
const monsterTypes = generateStageConfig(stageNumber, level);
const stageMultipliers = getStageAllMultipliers(stageNumber);
const monsterConfigs = [];
@@ -312,10 +327,11 @@ export function getStageMonsterConfigs(stageNumber: number, useRandomBuff: boole
const enhancement = getMonsterEnhancement(monsterType, useRandomBuff);
monsterConfigs.push({
id: `stage_${stageNumber}_${index}`,
id: `stage_${stageNumber}_level_${level}_${index}`,
uuid: randomUUID,
type: monsterType,
stageNumber: stageNumber,
level: level,
enhancement: enhancement,
stageMultipliers: stageMultipliers
});