Files
heros/assets/script/game/common/config/TalSet_QuickRef.md
2025-10-27 11:17:15 +08:00

446 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 天赋系统快速参考
## 📋 文件导览
| 文件 | 用途 |
|------|------|
| `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
**维护者**: 开发团队