# 战斗奖励配置 **本文档引用文件** - [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枚举常量详解](#fightset枚举常量详解) 3. [奖励触发波次机制](#奖励触发波次机制) 4. [奖励数值影响参数](#奖励数值影响参数) 5. [奖励类型配置逻辑](#奖励类型配置逻辑) 6. [配置加载与运行时访问](#配置加载与运行时访问) 7. [常见问题排查](#常见问题排查) 8. [代码示例](#代码示例) ## 战斗奖励机制概述 本系统基于Mission.ts文件中的FightSet枚举实现战斗奖励触发机制,通过波次常量控制奖励生成时机,结合参数配置实现多样化的奖励效果。系统通过事件驱动模式,在特定战斗阶段触发相应的奖励逻辑,包括属性提升、金币获取和技能解锁等。 **Section sources** - [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35) - [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L0-L33) - [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts#L0-L69) ## 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** - [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35) ## 奖励触发波次机制 战斗奖励的触发与波次系统紧密关联,通过FightSet中的波次常量控制不同奖励类型的出现时机。 ```mermaid 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** - [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L66-L116) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L102-L136) - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L129-L168) ### 波次与地图系统联动 波次常量与地图系统通过关卡配置实现联动,具体关系如下: ```mermaid 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** - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L86-L132) - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L135-L169) ## 奖励数值影响参数 奖励数值通过FightSet中的参数进行配置,影响各种奖励效果的强度。 ### 攻击力与金币影响机制 ```mermaid 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** - [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35) - [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L0-L22) - [TalComp.ts](file://assets/script/game/hero/TalComp.ts#L102-L139) ### 能量增长参数 | 参数 | 数值 | 触发条件 | |------|------|---------| | ATKED_TO_POWER | 15 | 被攻击时增长能量 | | ATK_TO_POWER | 10 | 攻击时增长能量 | | CRIT_TO_POWER | 15 | 暴击时增长能量 | | DODGE_TO_POWER | 15 | 闪避时增长能量 | 这些参数在英雄战斗过程中实时影响能量值的增长,进而影响技能释放频率。 **Section sources** - [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35) - [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L582-L622) ## 奖励类型配置逻辑 系统实现了多种奖励类型,每种类型都有特定的配置逻辑和触发条件。 ### 属性提升奖励 属性提升通过天赋系统实现,当满足特定条件时触发: ```mermaid 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** - [TalComp.ts](file://assets/script/game/hero/TalComp.ts#L134-L169) - [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L281-L316) ### 金币获取奖励 金币获取主要通过两种方式实现: 1. **战斗掉落**:怪物死亡时随机掉落金币 2. **事件奖励**:事件关卡触发宝箱事件获得固定金币 ```mermaid 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** - [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L32-L70) - [TopComp.ts](file://assets/script/game/map/TopComp.ts#L0-L28) ### 技能解锁奖励 技能解锁通过技能波次常量控制,在特定波次解锁新技能: - SKILL_WAVE_UP_1=2:第二波解锁第一个技能 - SKILL_WAVE_UP_2=5:第五波解锁第二个技能 - SKILL_WAVE_UP_3=7:第七波解锁第三个技能 **Section sources** - [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35) - [TalComp.ts](file://assets/script/game/hero/TalComp.ts#L102-L139) ## 配置加载与运行时访问 系统通过模块化方式加载和访问配置数据,确保配置的可维护性和可扩展性。 ### 配置加载流程 ```mermaid 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** - [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L0-L33) - [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L246-L281) ## 常见问题排查 ### 奖励未触发的可能原因 1. **波次配置错误** - 检查FightSet中波次常量设置是否正确 - 确认波次值与实际战斗进度匹配 2. **事件监听缺失** - 确保MissionComp正确监听FightStart事件 - 检查事件派发是否正常 3. **配置加载失败** - 验证Mission.ts文件是否正确导入 - 检查路径引用是否正确 4. **条件未满足** - 天赋触发条件未达到 - 关卡类型不符合奖励条件 ### 调试方法 1. **日志输出** - 在关键节点添加console.log输出 - 监控波次变化和事件触发 2. **断点调试** - 在MissionMonComp的do_mon_wave方法设置断点 - 检查怪物生成和事件处理逻辑 3. **配置验证** - 确认FightSet常量值在合理范围内 - 验证关卡配置与波次设置的匹配性 **Section sources** - [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L69-L105) - [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L114-L150) ## 代码示例 ### 调整奖励触发波次 ```typescript // 修改技能登场波次 export enum FightSet { SKILL_WAVE_UP_1 = 1, // 提前到第一波 SKILL_WAVE_UP_2 = 4, // 提前到第四波 SKILL_WAVE_UP_3 = 6, // 提前到第六波 // 其他配置... } ``` ### 修改奖励数值 ```typescript // 增加金币奖励数值 export enum FightSet { ATK_ADD_GLOD = 2, // 金币增加从1提升到2 CRIT_DAMAGE = 75, // 暴击伤害从50%提升到75% // 其他配置... } ``` ### 添加新的奖励类型 ```typescript // 在Mission.ts中添加新的奖励常量 export enum FightSet { NEW_REWARD_TYPE = 5, // 新的奖励类型 REWARD_VALUE = 100, // 奖励数值 // 其他配置... } ``` **Section sources** - [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35) - [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L0-L74)