343 lines
11 KiB
Markdown
343 lines
11 KiB
Markdown
# 战斗奖励配置
|
||
|
||
<cite>
|
||
**本文档引用文件**
|
||
- [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)
|
||
</cite>
|
||
|
||
## 目录
|
||
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) |