spell_linked_spell表

概述

spell_linked_spell表是AzerothCore中定义法术之间链接关系的重要表格。它控制着当一个法术被施放、移除或触发时,自动施放或移除其他相关法术的机制,是实现复杂法术组合和连锁效果的核心系统。

表格作用

表格结构

字段名 数据类型 默认值 说明
spell_trigger INT 0 触发法术ID
详细说明:触发链接效果的法术ID。可以是正值或负值。
正值:当法术被施放时触发链接
负值:当法术被移除时触发链接
应用场景:
  • 技能组合:某个技能触发其他技能
  • 状态管理:状态变化时的自动处理
  • 效果链:一个效果引发另一个效果
spell_effect INT 0 效果法术ID
详细说明:被触发的法术ID。可以是正值或负值。
正值:施放指定的法术
负值:移除指定的法术
效果类型:
  • 增益效果:自动施放增益法术
  • 伤害效果:自动造成伤害
  • 治疗效果:自动进行治疗
  • 移除效果:自动移除特定状态
type TINYINT UNSIGNED 0 链接类型
详细说明:定义链接的触发时机和条件。
类型值:
  • 0:施放时触发(默认)
  • 1:移除时触发
  • 2:施放和移除时都触发
  • 3:学会法术时触发
  • 4:忘记法术时触发

触发时机:
  • 即时触发:法术施放的瞬间
  • 延迟触发:法术效果结束时
  • 学习触发:玩家学会法术时
  • 遗忘触发:玩家忘记法术时

链接机制详解

触发条件

不同类型的触发机制:

效果执行

链接效果的执行方式:

使用示例

查看所有法术链接

-- 查看所有法术链接关系
SELECT spell_trigger, spell_effect, type,
       CASE type
           WHEN 0 THEN '施放时触发'
           WHEN 1 THEN '移除时触发'
           WHEN 2 THEN '施放和移除时触发'
           WHEN 3 THEN '学会时触发'
           WHEN 4 THEN '忘记时触发'
       END as trigger_type
FROM spell_linked_spell
ORDER BY spell_trigger;

添加法术链接

-- 设置变形术链接:施放变形术时自动移除所有增益
INSERT INTO spell_linked_spell (spell_trigger, spell_effect, type)
VALUES 
(118, -1234, 0),  -- 施放变形术时移除法术1234
(118, -5678, 0);  -- 施放变形术时移除法术5678

-- 设置死亡链接:死亡时自动移除所有临时效果
INSERT INTO spell_linked_spell (spell_trigger, spell_effect, type)
VALUES 
(-15007, -12345, 1);  -- 移除复活疾病时移除临时增益

创建技能组合

-- 创建战士技能组合:使用冲锋时自动获得攻击速度加成
INSERT INTO spell_linked_spell (spell_trigger, spell_effect, type)
VALUES 
(100, 12345, 0);  -- 施放冲锋时自动获得攻击速度增益

-- 创建法师护盾链接:施放法师护甲时移除其他护甲
INSERT INTO spell_linked_spell (spell_trigger, spell_effect, type)
VALUES 
(1459, -7301, 0),   -- 施放奥术智慧时移除冰甲术
(1459, -6143, 0);   -- 施放奥术智慧时移除火焰护体

常见应用场景

职业技能组合

状态管理

装备效果

高级链接技巧

条件链接

-- 复杂的条件链接示例
-- 当玩家血量低于30%时,治疗法术自动触发护盾
INSERT INTO spell_linked_spell (spell_trigger, spell_effect, type)
VALUES 
(2061, 12345, 0);  -- 快速治疗触发护盾效果

链式反应

-- 创建链式反应:A触发B,B触发C
INSERT INTO spell_linked_spell (spell_trigger, spell_effect, type)
VALUES 
(1000, 2000, 0),  -- 法术1000触发法术2000
(2000, 3000, 0);  -- 法术2000触发法术3000

双向链接

-- 创建双向链接:施放和移除都有效果
INSERT INTO spell_linked_spell (spell_trigger, spell_effect, type)
VALUES 
(1234, 5678, 0),   -- 施放时触发
(-1234, -5678, 1); -- 移除时触发移除

平衡设计考虑

性能影响

游戏平衡

调试和测试

测试链接效果

常见问题排查

相关表格