11 KiB
11 KiB
战斗奖励配置
**本文档引用文件** - [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)目录
战斗奖励机制概述
本系统基于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
金币获取奖励
金币获取主要通过两种方式实现:
- 战斗掉落:怪物死亡时随机掉落金币
- 事件奖励:事件关卡触发宝箱事件获得固定金币
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
常见问题排查
奖励未触发的可能原因
-
波次配置错误
- 检查FightSet中波次常量设置是否正确
- 确认波次值与实际战斗进度匹配
-
事件监听缺失
- 确保MissionComp正确监听FightStart事件
- 检查事件派发是否正常
-
配置加载失败
- 验证Mission.ts文件是否正确导入
- 检查路径引用是否正确
-
条件未满足
- 天赋触发条件未达到
- 关卡类型不符合奖励条件
调试方法
-
日志输出
- 在关键节点添加console.log输出
- 监控波次变化和事件触发
-
断点调试
- 在MissionMonComp的do_mon_wave方法设置断点
- 检查怪物生成和事件处理逻辑
-
配置验证
- 确认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