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

10 KiB
Raw Blame History

天赋系统快速参考

📋 文件导览

文件 用途
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.tstalConf 中添加配置:

// 示例:新增"生命吸取"天赋
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
维护者: 开发团队