10 KiB
10 KiB
天赋系统快速参考
📋 文件导览
| 文件 | 用途 |
|---|---|
TalSet.ts |
核心配置文件 - 定义所有天赋类型、接口和配置表 |
TalSet_USAGE.md |
详细使用文档 - 包含各天赋类型的详解和最佳实践 |
TalSet_Example.ts |
集成示例 - 完整的天赋系统实现代码 |
TalSet_QuickRef.md |
快速参考(本文件) - 常用代码片段速查 |
🚀 快速开始
1. 初始化英雄天赋
import { initHeroTalents } from "./TalSet_Example";
// 为英雄 ID=5001 初始化天赋 [7001, 7202]
initHeroTalents(5001, [7001, 7202]);
2. 监听英雄事件
import {
onHeroLevelUp,
onHeroAttack,
onHeroDamaged
} from "./TalSet_Example";
// 英雄升级到新等级
onHeroLevelUp(5001, 10);
// 英雄发动攻击
onHeroAttack(5001, 50);
// 英雄受到伤害
onHeroDamaged(5001, 30);
3. 查询天赋信息
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级 |
配置模板:
{
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次技能 |
配置模板:
{
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次受伤 |
配置模板:
{
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次技能 |
配置模板:
{
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,
}
🎯 属性类型速查
TalAttrType.HP // 最大生命值
TalAttrType.MP // 最大魔力值
TalAttrType.AP // 攻击力
TalAttrType.MAP // 魔法攻击力
TalAttrType.DEF // 防御力
TalAttrType.MDEF // 魔法防御力
TalAttrType.SPEED // 移动速度
TalAttrType.DODGE // 闪避率
TalAttrType.CRIT // 暴击率
💡 常见代码片段
获取所有某类型天赋
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);
获取某属性相关的所有天赋
import { TalentQueryHelper, TalAttrType } from "./TalSet_Example";
const hpTals = TalentQueryHelper.getTalentsByAttribute(TalAttrType.HP);
const apTals = TalentQueryHelper.getTalentsByAttribute(TalAttrType.AP);
获取某行为相关的所有天赋
import { TalentQueryHelper, TalActionType } from "./TalSet_Example";
const attackTals = TalentQueryHelper.getTalentsByAction(TalActionType.ATTACK);
const skillTals = TalentQueryHelper.getTalentsByAction(TalActionType.SKILL);
获取英雄的天赋状态
import { globalTalentManager } from "./TalSet_Example";
const talentInfo = globalTalentManager.getHeroTalentInfo(5001);
if (talentInfo) {
talentInfo.talents.forEach((instance, talId) => {
console.log(`天赋${talId}: 堆叠${instance.stackCount}`);
});
}
获取英雄的特定天赋实例
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 中添加配置:
// 示例:新增"生命吸取"天赋
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,
},
🔍 调试技巧
打印所有天赋信息
import { TalentQueryHelper } from "./TalSet_Example";
TalentQueryHelper.printAllTalents();
获取所有天赋ID
import { getAllTalIds } from "./TalSet";
const allIds = getAllTalIds();
console.log(allIds); // [7001, 7002, 7101, ...]
获取所有可堆叠天赋
import { TalentQueryHelper } from "./TalSet_Example";
const stackableTals = TalentQueryHelper.getStackableTalents();
获取所有技能触发类天赋
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 或增加触发频率
📦 导入速览
基础导入
import {
TalType, // 天赋类型枚举
TalAttrType, // 属性类型枚举
TalActionType, // 行为类型枚举
getTalConf, // 获取单个天赋
getTalConfByType, // 按类型获取天赋
getAllTalIds, // 获取所有天赋ID
} from "./TalSet";
高级导入
import {
TalentTriggerManager, // 天赋触发管理器
TalentQueryHelper, // 天赋查询助手
globalTalentManager, // 全局管理器实例
initHeroTalents, // 初始化天赋
onHeroLevelUp, // 升级事件
onHeroAttack, // 攻击事件
onHeroSkillCast, // 技能事件
onHeroDamaged, // 受伤事件
} from "./TalSet_Example";
🐛 常见问题速答
| 问题 | 答案 |
|---|---|
| 如何禁用某个天赋? | 在初始化时不添加该天赋ID |
| 天赋可以堆叠多少次? | 看 maxStack 配置,不设则无限 |
| 如何重置计数器? | 设置 resetPerLevel: true 按等级重置 |
| 如何添加新的属性类型? | 在 TalAttrType 枚举中添加 |
| 如何添加新的行为类型? | 在 TalActionType 枚举中添加 |
| 技能触发如何防止无限循环? | 设置 stackable: false |
📚 相关文件链接
版本: 1.0
最后更新: 2025-10-27
维护者: 开发团队