refactor(mission): 重构关卡结算与刷怪统计逻辑

1. 新增整局跨回合刷怪统计与重置能力,替换原小节统计
2. 修改奖励配置为整局5回合累计结算逻辑
3. 调整失败奖励判定为整局维度统计
4. 重构胜利/失败奖励计算逻辑,适配多回合关卡
This commit is contained in:
panFD
2026-09-13 10:28:55 +08:00
parent 328f6c83f3
commit da2caa6576
4 changed files with 79 additions and 59 deletions

View File

@@ -219,38 +219,40 @@ export function getLvColor(lv: number): Color {
export const RARITY_BG_COLORS: string[] = ["green", "blue", "purple", "yellow", "red"];
/**
* 战斗结算奖励配置(每节结束后发放:英雄碎片 + 金币 + 天赋经验)。
* 胜利奖励随关卡进度(怪物等级 = 大关号)线性增长,整体乘以 victory_multiplier。
* 战斗结算奖励配置(一关 5 回合累计,整关结算时一次性发放:英雄碎片 + 金币 + 天赋经验)。
* 通关奖励 = 每回合奖励 × 胜利回合数(wave_win_count),全员存活回合再 × per_wave 加成。
* Why: 一关一局 5 回合后,通关不再是单场,改按"5 回合累计"发放,
* 每回合基础奖励随关卡进度(怪物等级 = 大关号)增长。
*/
export const VICTORY_REWARD_SET = {
/** 金币:base + monLv × per_lv */
/** 金币:每回合 base + monLv × per_lv,× 胜利回合数累计 */
gold: { base: 100, per_lv: 50 },
/** 天赋经验:base + monLv × per_lv */
/** 天赋经验:每回合 base + monLv × per_lv,× 胜利回合数累计 */
talent_exp: { base: 20, per_lv: 10 },
/** 每个出场英雄保底碎片数 */
/** 每个出场英雄保底碎片数(× 胜利回合数累计) */
played_fragment: 1,
/** 随机英雄碎片数量(发放给随机抽中的 1 个英雄) */
/** 随机英雄碎片数量(发放给随机抽中的 1 个英雄,× 胜利回合数累计) */
random_fragment: 2,
/** 银币:固定发放,不分输赢 */
/** 银币:固定发放,不分输赢(通关时 × 胜利回合数累计) */
silver: 3,
/** 钻石:按输赢在 [min, max] 闭区间内随机(不参与 victory_multiplier) */
/** 钻石:按输赢在 [min, max] 闭区间内随机(通关时 × 胜利回合数累计,不参与 per_wave 加成) */
diamond: {
victory: { min: 5, max: 10 },
defeat: { min: 1, max: 3 },
},
/** 胜利加成系数(失败 1.0) */
victory_multiplier: 1.2,
/** 全员存活回合加成系数:每个全员存活回合额外 +20%(乘法叠乘于累计基础之上) */
per_wave_bonus: 0.2,
/**
* 失败奖励限制(不影响胜利):
* 坚持 < defeat_time_threshold 秒或本节一只怪未杀 → 无任何奖励;
* 达标后 = 坚持奖励(固定)+ 击杀比例奖励(基数 × 本节击杀比例)
* 坚持 < defeat_time_threshold 秒或本回合一只怪未杀 → 无任何奖励;
* 达标后 = 坚持奖励(固定)+ 击杀比例奖励(基数 × 本回合击杀比例)
*/
defeat: {
/** 坚持时间门槛(秒) */
time_threshold: 15,
/** 超门槛固定奖励("超 15 秒奖励") */
survive: { gold: 50, talent_exp: 10 },
/** 击杀比例奖励基数(本节怪物全灭时全额发放) */
/** 击杀比例奖励基数(本回合怪物全灭时全额发放) */
kill: { gold: 150, talent_exp: 30 },
},
};