表概述

pet_aura 表存储宠物(猎人宠物、术士恶魔等)身上的光环效果(Buff/Debuff)。结构与 character_aura 类似,但专门服务于宠物。

核心概念:宠物身上的所有增益/减益效果数据都存储在此表。包括光环的施法者、持续时间、叠加层数、effect数值等。

表结构

字段名数据类型默认值说明
guidINT UNSIGNED0宠物GUID → character_pet.id
casterGuidBIGINT UNSIGNED0施法者完整GUID
spellINT UNSIGNED0光环技能ID → Spell.dbc
effectMaskTINYINT UNSIGNED0生效的效果掩码
recalculateMaskTINYINT UNSIGNED0需要重新计算的效果掩码
stackCountTINYINT UNSIGNED1叠加层数
amount0/1/2INT0/NULL效果0/1/2的当前数值
base_amount0/1/2INT0/NULL效果0/1/2的基础数值
maxDurationINT0最大持续时间(毫秒)
remainTimeINT0剩余时间(毫秒)
remainChargesTINYINT UNSIGNED0剩余充能次数

重要字段详解

effectMask / recalculateMask

详细说明:按位标记控制光环效果。按位运算
  • effectMask:标记哪些技能效果正在生效(位0=效果0 位1=效果1 位2=效果2)
  • recalculateMask:标记哪些效果需要重新计算(属性变化时)
  • 例如 effectMask=7 表示三个效果全部生效

amount / base_amount

详细说明:每个技能最多3个效果(amount0-2)。
  • base_amount:基础数值(不受加成影响)
  • amount:当前实际数值(受法术强度/属性加成后)
  • 例如一个Buff增加100力量(base_amount0=100),由于天赋加成变为115(amount0=115)
SQL示例:查看宠物光环 → SELECT * FROM pet_aura WHERE guid=宠物GUID;

SQL查询示例

-- 查看某宠物的所有光环列表 SELECT pa.spell, pa.stackCount, pa.remainTime / 1000 AS remain_seconds FROM pet_aura pa WHERE pa.guid = 宠物GUID ORDER BY pa.remainTime DESC;
-- 清除宠物的所有光环 DELETE FROM pet_aura WHERE guid = 宠物GUID;
-- 查找有特定光环的所有宠物 SELECT DISTINCT guid FROM pet_aura WHERE spell = 光环技能ID;

常见问题

Q: pet_aura 和 character_aura 有什么区别?

结构相同但作用对象不同。pet_aura 存储宠物(guid→character_pet.id)的光环,character_aura 存储角色(guid→characters.guid)的光环。

Q: 宠物消失后光环数据会不会残留?

正常情况下宠物解散/死亡时会清除光环。如果出现残留,可手动清理:DELETE FROM pet_aura WHERE guid NOT IN (SELECT id FROM character_pet);