表概述

instance_encounters表属于副本遭遇战记录系统,关联DungeonEncounter.dbc数据。每个entry对应一个Boss遭遇战,creditType和creditEntry定义了击败的条件,lastEncounterDungeon标记该副本的最终Boss。

主键为 entry,该值来自DungeonEncounter.dbc的ID列,与客户端DBC数据保持一致。

表结构

字段名数据类型默认值说明
entryINT UNSIGNEDNOT NULLDungeonEncounter.dbc唯一ID(主键)
creditTypeTINYINT UNSIGNED0触发类型:0=击杀生物 1=施法
creditEntryINT UNSIGNED0关联生物ID或法术ID
lastEncounterDungeonSMALLINT UNSIGNED0该副本最终Boss对应的LfgDungeon.dbc ID
commentVARCHAR(255)''Boss名称/注释

重要字段详解

creditType (触发类型)

定义击败Boss的条件类型:

  • 0 - 击杀生物:creditEntry为creature_template的entry
  • 1 - 施放法术:creditEntry为spell ID

一个Boss可能有多条记录,用于同时追踪击杀和施法条件。

lastEncounterDungeon (最终Boss标记)

非0时,表示该遭遇战是某个LFD副本的最终Boss。值对应LfgDungeon.dbc的ID。这个标记用于:

  • 随机副本完成判定
  • "随机副本奖励"的发放条件
  • 成就"击败XXX"的追踪

实战案例

查询某个副本的所有Boss遭遇
-- 查询乌特加德城堡(LFD ID=214)的所有Boss
SELECT e.entry, e.comment, e.creditType, e.creditEntry,
       CASE WHEN e.lastEncounterDungeon > 0 THEN '最终Boss' ELSE '' END AS boss_type
FROM instance_encounters e
WHERE e.creditEntry IN (
    SELECT id FROM creature_template
    WHERE map = 574  -- 乌特加德的地图ID
);
查找所有副本的最终Boss
SELECT entry, comment, lastEncounterDungeon
FROM instance_encounters
WHERE lastEncounterDungeon > 0
ORDER BY lastEncounterDungeon;

常见问题

Q: 为什么击败Boss后成就未触发?

A: 检查instance_encounters中该Boss的entry是否与DungeonEncounter.dbc的ID一致,creditType和creditEntry是否正确。如果creditType=0,确保creditEntry是实际的Boss生物entry。

Q: lastEncounterDungeon未设置会有什么影响?

A: 该副本通过LFD排队时,系统无法判定副本是否"完成",玩家将无法获得随机副本奖励。所有副本的最终Boss必须设置lastEncounterDungeon。