Files
pixelheros/.qoder/repowiki/zh/content/奖励系统/奖励配置/战斗奖励配置.md
panw 4235e3b776 refactor(game): 移除已弃用的事件常量
- 删除 UpdateHero 和 UpdateFightHero 事件
- 移除 MISSION_UPDATE 事件常量
- 优化游戏事件枚举定义
2025-10-28 16:15:47 +08:00

11 KiB
Raw Blame History

战斗奖励配置

**本文档引用文件** - [Mission.ts](file://assets/script/game/common/config/Mission.ts) - [MissionComp.ts](file://assets/script/game/map/MissionComp.ts) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts) - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts) - [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts) - [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts) - [TalComp.ts](file://assets/script/game/hero/TalComp.ts) - [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts)

目录

  1. 战斗奖励机制概述
  2. FightSet枚举常量详解
  3. 奖励触发波次机制
  4. 奖励数值影响参数
  5. 奖励类型配置逻辑
  6. 配置加载与运行时访问
  7. 常见问题排查
  8. 代码示例

战斗奖励机制概述

本系统基于Mission.ts文件中的FightSet枚举实现战斗奖励触发机制通过波次常量控制奖励生成时机结合参数配置实现多样化的奖励效果。系统通过事件驱动模式在特定战斗阶段触发相应的奖励逻辑包括属性提升、金币获取和技能解锁等。

Section sources

FightSet枚举常量详解

FightSet枚举定义了战斗中的关键配置常量主要分为三类波次触发常量、数值影响常量和资源类型常量。

波次触发常量

常量名称 数值 业务含义
FRIEND_WAVE_UP 3 伙伴登场的战斗波次
BOSS_WAVE_UP_1 3 第一波BOSS登场波次
BOSS_WAVE_UP_2 5 第二波BOSS登场波次
BOSS_WAVE_UP_3 7 第三波BOSS登场波次
EQUIP_WAVE_UP_1 4 第一波装备登场波次
EQUIP_WAVE_UP_2 6 第二波装备登场波次
EQUIP_WAVE_UP_3 8 第三波装备登场波次
SKILL_WAVE_UP_1 2 第一波技能登场波次
SKILL_WAVE_UP_2 5 第二波技能登场波次
SKILL_WAVE_UP_3 7 第三波技能登场波次

数值影响常量

常量名称 数值 业务含义
ATK_ADD_COUNT 4 伙伴攻击力增加基数
ATK_ADD_GLOD 1 金币增加基数
CRIT_DAMAGE 50 暴击伤害百分比
DOUBLE_ATK_RATE 100 额外攻击默认概率
ATKED_TO_POWER 15 被攻击涨能量值
ATK_TO_POWER 10 攻击涨能量值

资源类型常量

常量名称 数值 业务含义
GREEN_GOLD 1 绿色金币类型
BLUE_GOLD 2 蓝色金币类型
PURPLE_GOLD 3 紫色金币类型
ORANGE_GOLD 4 橙色金币类型

Section sources

奖励触发波次机制

战斗奖励的触发与波次系统紧密关联通过FightSet中的波次常量控制不同奖励类型的出现时机。

sequenceDiagram
participant MissionComp as MissionComp
participant MissionMonComp as MissionMonComp
participant RogueConfig as RogueConfig
MissionComp->>MissionMonComp : dispatchEvent(FightStart)
MissionMonComp->>RogueConfig : getStageType(stage,level)
RogueConfig-->>MissionMonComp : 返回关卡类型
MissionMonComp->>RogueConfig : getStageMonsterConfigs()
RogueConfig-->>MissionMonComp : 返回怪物配置
MissionMonComp->>MissionMonComp : generateMonstersFromStageConfig()
MissionMonComp->>MissionMonComp : processRandomEvent()
alt 事件触发
MissionMonComp->>MissionMonComp : TREASURE事件
MissionMonComp->>MissionComp : 增加金币奖励
end

Diagram sources

波次与地图系统联动

波次常量与地图系统通过关卡配置实现联动,具体关系如下:

flowchart TD
A[开始战斗] --> B{判断关卡类型}
B --> |普通关卡| C[按波次生成怪物]
B --> |精英关卡| D[增加精英怪物]
B --> |BOSS关卡| E[生成BOSS怪物]
B --> |事件关卡| F[触发随机事件]
F --> G{随机事件类型}
G --> |宝箱事件| H[增加金币奖励]
G --> |陷阱事件| I[对玩家造成伤害]
G --> |增益事件| J[给予临时增益]
G --> |减益事件| K[给予临时减益]

Diagram sources

奖励数值影响参数

奖励数值通过FightSet中的参数进行配置影响各种奖励效果的强度。

攻击力与金币影响机制

classDiagram
class FightSet {
+FRIEND_WAVE_UP : number
+BOSS_WAVE_UP_1 : number
+EQUIP_WAVE_UP_1 : number
+SKILL_WAVE_UP_1 : number
+ATK_ADD_COUNT : number
+ATK_ADD_GLOD : number
+CRIT_DAMAGE : number
}
class HeroViewComp {
+Attrs : number[]
+base_ap : number
+hp : number
}
class TalComp {
+FStats : Stats
+checkTrigger(tal) : boolean
+doTalEffect(tal) : void
}
FightSet --> HeroViewComp : 影响属性计算
FightSet --> TalComp : 影响天赋触发
TalComp --> HeroViewComp : 修改英雄属性

Diagram sources

能量增长参数

参数 数值 触发条件
ATKED_TO_POWER 15 被攻击时增长能量
ATK_TO_POWER 10 攻击时增长能量
CRIT_TO_POWER 15 暴击时增长能量
DODGE_TO_POWER 15 闪避时增长能量

这些参数在英雄战斗过程中实时影响能量值的增长,进而影响技能释放频率。

Section sources

奖励类型配置逻辑

系统实现了多种奖励类型,每种类型都有特定的配置逻辑和触发条件。

属性提升奖励

属性提升通过天赋系统实现,当满足特定条件时触发:

flowchart LR
A[战斗开始] --> B{检查天赋触发条件}
B --> |等级提升| C[触发LEVEL_UP天赋]
B --> |行动次数| D[触发ACTION_COUNT天赋]
B --> |技能使用| E[触发SKILL_COUNT天赋]
B --> |受到伤害| F[触发DAMAGE_COUNT天赋]
C --> G[执行天赋效果]
D --> G
E --> G
F --> G
G --> H[属性提升]

Diagram sources

金币获取奖励

金币获取主要通过两种方式实现:

  1. 战斗掉落:怪物死亡时随机掉落金币
  2. 事件奖励:事件关卡触发宝箱事件获得固定金币
sequenceDiagram
participant Mon as Monster
participant MissionComp as MissionComp
participant TopComp as TopComp
Mon->>MissionComp : dispatchEvent(MonDead)
MissionComp->>MissionComp : do_mon_dead()
MissionComp->>MissionComp : 增加金币
MissionComp->>TopComp : dispatchEvent(GOLD_UPDATE)
TopComp->>TopComp : 更新金币UI显示

Diagram sources

技能解锁奖励

技能解锁通过技能波次常量控制,在特定波次解锁新技能:

  • SKILL_WAVE_UP_1=2第二波解锁第一个技能
  • SKILL_WAVE_UP_2=5第五波解锁第二个技能
  • SKILL_WAVE_UP_3=7第七波解锁第三个技能

Section sources

配置加载与运行时访问

系统通过模块化方式加载和访问配置数据,确保配置的可维护性和可扩展性。

配置加载流程

flowchart TD
A[游戏启动] --> B[加载Mission.ts配置]
B --> C[初始化FightSet常量]
C --> D[加载地图配置]
D --> E[初始化关卡数据]
E --> F[战斗开始]
F --> G[运行时访问配置]
G --> H[根据波次触发奖励]

运行时访问路径

配置数据在运行时通过以下路径访问:

  • FightSet常量import { FightSet } from "../common/config/Mission"
  • 关卡配置:import { getStageMonsterConfigs } from "./RogueConfig"
  • 事件配置:import { getRandomEvent } from "./RogueConfig"

Section sources

常见问题排查

奖励未触发的可能原因

  1. 波次配置错误

    • 检查FightSet中波次常量设置是否正确
    • 确认波次值与实际战斗进度匹配
  2. 事件监听缺失

    • 确保MissionComp正确监听FightStart事件
    • 检查事件派发是否正常
  3. 配置加载失败

    • 验证Mission.ts文件是否正确导入
    • 检查路径引用是否正确
  4. 条件未满足

    • 天赋触发条件未达到
    • 关卡类型不符合奖励条件

调试方法

  1. 日志输出

    • 在关键节点添加console.log输出
    • 监控波次变化和事件触发
  2. 断点调试

    • 在MissionMonComp的do_mon_wave方法设置断点
    • 检查怪物生成和事件处理逻辑
  3. 配置验证

    • 确认FightSet常量值在合理范围内
    • 验证关卡配置与波次设置的匹配性

Section sources

代码示例

调整奖励触发波次

// 修改技能登场波次
export enum FightSet {
    SKILL_WAVE_UP_1 = 1,  // 提前到第一波
    SKILL_WAVE_UP_2 = 4,  // 提前到第四波  
    SKILL_WAVE_UP_3 = 6,  // 提前到第六波
    // 其他配置...
}

修改奖励数值

// 增加金币奖励数值
export enum FightSet {
    ATK_ADD_GLOD = 2,    // 金币增加从1提升到2
    CRIT_DAMAGE = 75,    // 暴击伤害从50%提升到75%
    // 其他配置...
}

添加新的奖励类型

// 在Mission.ts中添加新的奖励常量
export enum FightSet {
    NEW_REWARD_TYPE = 5,  // 新的奖励类型
    REWARD_VALUE = 100,   // 奖励数值
    // 其他配置...
}

Section sources