446 lines
10 KiB
Markdown
446 lines
10 KiB
Markdown
# 天赋系统快速参考
|
||
|
||
## 📋 文件导览
|
||
|
||
| 文件 | 用途 |
|
||
|------|------|
|
||
| `TalSet.ts` | 核心配置文件 - 定义所有天赋类型、接口和配置表 |
|
||
| `TalSet_USAGE.md` | 详细使用文档 - 包含各天赋类型的详解和最佳实践 |
|
||
| `TalSet_Example.ts` | 集成示例 - 完整的天赋系统实现代码 |
|
||
| `TalSet_QuickRef.md` | 快速参考(本文件) - 常用代码片段速查 |
|
||
|
||
---
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 初始化英雄天赋
|
||
|
||
```typescript
|
||
import { initHeroTalents } from "./TalSet_Example";
|
||
|
||
// 为英雄 ID=5001 初始化天赋 [7001, 7202]
|
||
initHeroTalents(5001, [7001, 7202]);
|
||
```
|
||
|
||
### 2. 监听英雄事件
|
||
|
||
```typescript
|
||
import {
|
||
onHeroLevelUp,
|
||
onHeroAttack,
|
||
onHeroDamaged
|
||
} from "./TalSet_Example";
|
||
|
||
// 英雄升级到新等级
|
||
onHeroLevelUp(5001, 10);
|
||
|
||
// 英雄发动攻击
|
||
onHeroAttack(5001, 50);
|
||
|
||
// 英雄受到伤害
|
||
onHeroDamaged(5001, 30);
|
||
```
|
||
|
||
### 3. 查询天赋信息
|
||
|
||
```typescript
|
||
import { getTalConf, getTalConfByType, TalType } from "./TalSet";
|
||
|
||
// 获取单个天赋配置
|
||
const talConfig = getTalConf(7001);
|
||
|
||
// 获取某类型的所有天赋
|
||
const levelTals = getTalConfByType(TalType.LEVEL_ATTR);
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 天赋类型速查
|
||
|
||
### 等级类天赋 (LEVEL_ATTR)
|
||
|
||
**ID范围**: 7001-7099
|
||
|
||
| ID | 名称 | 描述 | 触发条件 |
|
||
|---|------|------|--------|
|
||
| 7001 | 剑意提升 | 攻击力 +10% | 每5级 |
|
||
| 7002 | 法力修炼 | 魔力 +15 | 每3级 |
|
||
|
||
**配置模板**:
|
||
```typescript
|
||
{
|
||
talId: 7001,
|
||
name: "天赋名",
|
||
desc: "效果描述",
|
||
talType: TalType.LEVEL_ATTR,
|
||
trigger: { type: "level", level: 5 } as ILevelTrigger,
|
||
effect: {
|
||
type: "attrModify",
|
||
attr: TalAttrType.AP,
|
||
value: 10,
|
||
percent: true,
|
||
} as IAttrModifyEffect,
|
||
stackable: true,
|
||
maxStack: 20,
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 行为计数类天赋 (ACTION_COUNT_ATTR)
|
||
|
||
**ID范围**: 7101-7199
|
||
|
||
| ID | 名称 | 描述 | 触发条件 |
|
||
|---|------|------|--------|
|
||
| 7101 | 强化闪避 | 闪避率 +1% | 每10次攻击 |
|
||
| 7102 | 暴击强化 | 暴击率 +2% | 每15次攻击 |
|
||
| 7103 | 连击精通 | 攻击力 +5% | 每8次技能 |
|
||
|
||
**配置模板**:
|
||
```typescript
|
||
{
|
||
talId: 7101,
|
||
name: "天赋名",
|
||
desc: "效果描述",
|
||
talType: TalType.ACTION_COUNT_ATTR,
|
||
trigger: {
|
||
type: "actionCount",
|
||
actionType: TalActionType.ATTACK,
|
||
count: 10,
|
||
resetPerLevel: false,
|
||
} as IActionCountTrigger,
|
||
effect: {
|
||
type: "attrModify",
|
||
attr: TalAttrType.DODGE,
|
||
value: 1,
|
||
percent: true,
|
||
} as IAttrModifyEffect,
|
||
stackable: true,
|
||
maxStack: 20,
|
||
}
|
||
```
|
||
|
||
**行为类型**:
|
||
- `TalActionType.ATTACK` - 攻击
|
||
- `TalActionType.SKILL` - 技能
|
||
- `TalActionType.DAMAGED` - 受伤
|
||
|
||
---
|
||
|
||
### 受伤计数类天赋 (DAMAGE_COUNT_ATTR)
|
||
|
||
**ID范围**: 7201-7299
|
||
|
||
| ID | 名称 | 描述 | 触发条件 |
|
||
|---|------|------|--------|
|
||
| 7201 | 坚甲护体 | 生命 +100 | 每10次受伤 |
|
||
| 7202 | 防御强化 | 防御 +3% | 每12次受伤 |
|
||
| 7203 | 魔抗修炼 | 魔防 +5 | 每15次受伤 |
|
||
|
||
**配置模板**:
|
||
```typescript
|
||
{
|
||
talId: 7201,
|
||
name: "天赋名",
|
||
desc: "效果描述",
|
||
talType: TalType.DAMAGE_COUNT_ATTR,
|
||
trigger: {
|
||
type: "damageCount",
|
||
count: 10,
|
||
resetPerLevel: false,
|
||
} as IDamageCountTrigger,
|
||
effect: {
|
||
type: "attrModify",
|
||
attr: TalAttrType.HP,
|
||
value: 100,
|
||
percent: false,
|
||
} as IAttrModifyEffect,
|
||
stackable: true,
|
||
maxStack: 15,
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 技能触发类天赋 (ACTION_TRIGGER_SKILL)
|
||
|
||
**ID范围**: 7301-7399
|
||
|
||
| ID | 名称 | 描述 | 触发条件 |
|
||
|---|------|------|--------|
|
||
| 7301 | 连击反击 | 释放技能6010 | 每15次攻击 |
|
||
| 7302 | 受伤反制 | 释放技能6011 | 每8次受伤 |
|
||
| 7303 | 技能链接 | 释放技能6012 | 每5次技能 |
|
||
|
||
**配置模板**:
|
||
```typescript
|
||
{
|
||
talId: 7301,
|
||
name: "天赋名",
|
||
desc: "效果描述",
|
||
talType: TalType.ACTION_TRIGGER_SKILL,
|
||
trigger: {
|
||
type: "actionCount",
|
||
actionType: TalActionType.ATTACK,
|
||
count: 15,
|
||
resetPerLevel: true,
|
||
} as IActionCountTrigger,
|
||
effect: {
|
||
type: "skillTrigger",
|
||
skillId: 6010,
|
||
} as ISkillTriggerEffect,
|
||
stackable: false,
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 属性类型速查
|
||
|
||
```typescript
|
||
TalAttrType.HP // 最大生命值
|
||
TalAttrType.MP // 最大魔力值
|
||
TalAttrType.AP // 攻击力
|
||
TalAttrType.MAP // 魔法攻击力
|
||
TalAttrType.DEF // 防御力
|
||
TalAttrType.MDEF // 魔法防御力
|
||
TalAttrType.SPEED // 移动速度
|
||
TalAttrType.DODGE // 闪避率
|
||
TalAttrType.CRIT // 暴击率
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 常见代码片段
|
||
|
||
### 获取所有某类型天赋
|
||
|
||
```typescript
|
||
import { getTalConfByType, TalType } from "./TalSet";
|
||
|
||
const levelTals = getTalConfByType(TalType.LEVEL_ATTR);
|
||
const actionTals = getTalConfByType(TalType.ACTION_COUNT_ATTR);
|
||
const damageTals = getTalConfByType(TalType.DAMAGE_COUNT_ATTR);
|
||
const skillTals = getTalConfByType(TalType.ACTION_TRIGGER_SKILL);
|
||
```
|
||
|
||
### 获取某属性相关的所有天赋
|
||
|
||
```typescript
|
||
import { TalentQueryHelper, TalAttrType } from "./TalSet_Example";
|
||
|
||
const hpTals = TalentQueryHelper.getTalentsByAttribute(TalAttrType.HP);
|
||
const apTals = TalentQueryHelper.getTalentsByAttribute(TalAttrType.AP);
|
||
```
|
||
|
||
### 获取某行为相关的所有天赋
|
||
|
||
```typescript
|
||
import { TalentQueryHelper, TalActionType } from "./TalSet_Example";
|
||
|
||
const attackTals = TalentQueryHelper.getTalentsByAction(TalActionType.ATTACK);
|
||
const skillTals = TalentQueryHelper.getTalentsByAction(TalActionType.SKILL);
|
||
```
|
||
|
||
### 获取英雄的天赋状态
|
||
|
||
```typescript
|
||
import { globalTalentManager } from "./TalSet_Example";
|
||
|
||
const talentInfo = globalTalentManager.getHeroTalentInfo(5001);
|
||
if (talentInfo) {
|
||
talentInfo.talents.forEach((instance, talId) => {
|
||
console.log(`天赋${talId}: 堆叠${instance.stackCount}`);
|
||
});
|
||
}
|
||
```
|
||
|
||
### 获取英雄的特定天赋实例
|
||
|
||
```typescript
|
||
import { globalTalentManager } from "./TalSet_Example";
|
||
|
||
const talInstance = globalTalentManager.getHeroTalentInstance(5001, 7001);
|
||
if (talInstance) {
|
||
console.log(`堆叠层数: ${talInstance.stackCount}`);
|
||
console.log(`行为计数: ${talInstance.actionCounter}`);
|
||
console.log(`受伤计数: ${talInstance.damageCounter}`);
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 添加新天赋步骤
|
||
|
||
### 步骤 1: 确定天赋类型
|
||
|
||
选择以下之一:
|
||
- `LEVEL_ATTR` - 等级触发
|
||
- `ACTION_COUNT_ATTR` - 行为计数触发
|
||
- `DAMAGE_COUNT_ATTR` - 受伤次数触发
|
||
- `ACTION_TRIGGER_SKILL` - 技能自动释放
|
||
|
||
### 步骤 2: 分配 ID
|
||
|
||
遵循命名规范:
|
||
- `70xx` - 等级类
|
||
- `71xx` - 行为计数类
|
||
- `72xx` - 受伤计数类
|
||
- `73xx` - 技能触发类
|
||
|
||
### 步骤 3: 配置天赋
|
||
|
||
在 `TalSet.ts` 的 `talConf` 中添加配置:
|
||
|
||
```typescript
|
||
// 示例:新增"生命吸取"天赋
|
||
7104: {
|
||
talId: 7104,
|
||
name: "生命吸取",
|
||
desc: "每使用技能10次,最大生命值增加50点",
|
||
talType: TalType.ACTION_COUNT_ATTR,
|
||
trigger: {
|
||
type: "actionCount",
|
||
actionType: TalActionType.SKILL,
|
||
count: 10,
|
||
resetPerLevel: false,
|
||
} as IActionCountTrigger,
|
||
effect: {
|
||
type: "attrModify",
|
||
attr: TalAttrType.HP,
|
||
value: 50,
|
||
percent: false,
|
||
} as IAttrModifyEffect,
|
||
stackable: true,
|
||
maxStack: 10,
|
||
},
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 调试技巧
|
||
|
||
### 打印所有天赋信息
|
||
|
||
```typescript
|
||
import { TalentQueryHelper } from "./TalSet_Example";
|
||
|
||
TalentQueryHelper.printAllTalents();
|
||
```
|
||
|
||
### 获取所有天赋ID
|
||
|
||
```typescript
|
||
import { getAllTalIds } from "./TalSet";
|
||
|
||
const allIds = getAllTalIds();
|
||
console.log(allIds); // [7001, 7002, 7101, ...]
|
||
```
|
||
|
||
### 获取所有可堆叠天赋
|
||
|
||
```typescript
|
||
import { TalentQueryHelper } from "./TalSet_Example";
|
||
|
||
const stackableTals = TalentQueryHelper.getStackableTalents();
|
||
```
|
||
|
||
### 获取所有技能触发类天赋
|
||
|
||
```typescript
|
||
import { TalentQueryHelper } from "./TalSet_Example";
|
||
|
||
const skillTriggerTals = TalentQueryHelper.getSkillTriggerTalents();
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ 配置最佳实践
|
||
|
||
### 等级间隔建议
|
||
|
||
| 间隔 | 用途 | 示例 |
|
||
|------|------|------|
|
||
| 1 级 | 极高频触发(谨慎使用) | 特殊被动 |
|
||
| 2-3 级 | 高频触发 | 关键属性增长 |
|
||
| 4-5 级 | 常规触发 | 通用属性增长 |
|
||
| 6-10 级 | 低频触发 | 强力效果 |
|
||
|
||
### 堆叠层数建议
|
||
|
||
| 效果类型 | 建议上限 | 原因 |
|
||
|---------|---------|------|
|
||
| 固定值 (+100 HP) | 10-20 | 总收益 1000-2000 |
|
||
| 小百分比 (+1%) | 15-30 | 防止过度膨胀 |
|
||
| 大百分比 (+5%) | 5-10 | 数值平衡 |
|
||
| 技能触发 | 1 (false) | 防止无限触发 |
|
||
|
||
### 数值平衡公式
|
||
|
||
```
|
||
最终增益 = 基础值 × 最大堆叠 × 触发频率
|
||
|
||
例: 攻击力 +10% × 20 堆叠 = 200% 增加
|
||
调整建议: 减少堆叠 maxStack 或增加触发频率
|
||
```
|
||
|
||
---
|
||
|
||
## 📦 导入速览
|
||
|
||
### 基础导入
|
||
|
||
```typescript
|
||
import {
|
||
TalType, // 天赋类型枚举
|
||
TalAttrType, // 属性类型枚举
|
||
TalActionType, // 行为类型枚举
|
||
getTalConf, // 获取单个天赋
|
||
getTalConfByType, // 按类型获取天赋
|
||
getAllTalIds, // 获取所有天赋ID
|
||
} from "./TalSet";
|
||
```
|
||
|
||
### 高级导入
|
||
|
||
```typescript
|
||
import {
|
||
TalentTriggerManager, // 天赋触发管理器
|
||
TalentQueryHelper, // 天赋查询助手
|
||
globalTalentManager, // 全局管理器实例
|
||
initHeroTalents, // 初始化天赋
|
||
onHeroLevelUp, // 升级事件
|
||
onHeroAttack, // 攻击事件
|
||
onHeroSkillCast, // 技能事件
|
||
onHeroDamaged, // 受伤事件
|
||
} from "./TalSet_Example";
|
||
```
|
||
|
||
---
|
||
|
||
## 🐛 常见问题速答
|
||
|
||
| 问题 | 答案 |
|
||
|------|------|
|
||
| 如何禁用某个天赋? | 在初始化时不添加该天赋ID |
|
||
| 天赋可以堆叠多少次? | 看 `maxStack` 配置,不设则无限 |
|
||
| 如何重置计数器? | 设置 `resetPerLevel: true` 按等级重置 |
|
||
| 如何添加新的属性类型? | 在 `TalAttrType` 枚举中添加 |
|
||
| 如何添加新的行为类型? | 在 `TalActionType` 枚举中添加 |
|
||
| 技能触发如何防止无限循环? | 设置 `stackable: false` |
|
||
|
||
---
|
||
|
||
## 📚 相关文件链接
|
||
|
||
- [详细使用文档](./TalSet_USAGE.md) - 完整的天赋系统说明
|
||
- [集成示例代码](./TalSet_Example.ts) - 天赋系统实现示例
|
||
- [核心配置文件](./TalSet.ts) - 所有类型定义和配置表
|
||
|
||
---
|
||
|
||
**版本**: 1.0
|
||
**最后更新**: 2025-10-27
|
||
**维护者**: 开发团队
|