表概述

conditions 表通过 SourceTypeOrReferenceId 指定条件应用的目标系统,通过 ConditionTypeOrReference 定义具体的判断条件,通过 ConditionValue1-3 设定条件参数。ElseGroup 实现 OR 逻辑分组,NegativeCondition 实现条件取反。

该表使用复合主键,几乎涵盖了游戏中所有需要条件判断的场景,是 AzerothCore 的核心功能表之一。

SourceTypeOrReferenceId
int, 主键
源类型/引用 ID
ConditionTypeOrReference
int, 主键
条件类型/引用
ElseGroup
int unsigned
OR 逻辑分组
NegativeCondition
tinyint unsigned
条件取反

表结构

字段名数据类型默认值说明
SourceTypeOrReferenceIdint0源类型编号,定义条件应用于哪个系统
SourceGroupint UNSIGNED0源分组,含义根据源类型而定
SourceEntryint0源条目 ID,通常为法术/物品/任务 ID
SourceIdint0源 ID,用于更细粒度的定位
ElseGroupint UNSIGNED0OR 逻辑组(相同 ElseGroup 内 AND,不同组间 OR)
ConditionTypeOrReferenceint0条件类型编号
ConditionTargettinyint UNSIGNED0条件目标(0=自身, 1=目标)
ConditionValue1int UNSIGNED0条件值1
ConditionValue2int UNSIGNED0条件值2
ConditionValue3int UNSIGNED0条件值3
NegativeConditiontinyint UNSIGNED0是否取反(0=正常, 1=取反)
ErrorTypeint UNSIGNED0条件不满足时显示的错误类型
ErrorTextIdint UNSIGNED0错误文本 ID
ScriptNamechar(64)''关联的脚本名称
Commentvarchar(255)NULL条件注释说明

主键: (SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3) | 引擎: InnoDB | 字符集: utf8mb4

重要字段详解

SourceTypeOrReferenceId (源类型) - 常用值
  • 1 生物掉落模板 (CREATURE_LOOT_TEMPLATE)
  • 4 游戏对象掉落模板 (GAMEOBJECT_LOOT_TEMPLATE)
  • 14 对话菜单 (GOSSIP_MENU)
  • 15 对话菜单选项 (GOSSIP_MENU_OPTION)
  • 17 法术 (SPELL)
  • 19 任务接受 (QUEST_ACCEPT)
  • 22 SmartAI 事件 (SMART_EVENT)
  • 23 NPC 商人 (NPC_VENDOR)
ConditionTypeOrReference (条件类型) - 常用值
  • 1 AURA - 光环/增益效果
  • 2 ITEM - 拥有物品
  • 3 ITEM_EQUIPPED - 装备物品
  • 5 REPUTATION_RANK - 声望等级
  • 6 TEAM - 阵营(469=联盟, 67=部落)
  • 7 SKILL - 技能
  • 8 QUESTREWARDED - 任务已完成
  • 9 QUESTTAKEN - 任务已接受
  • 14 QUEST_NONE - 未接受/完成某任务
  • 15 CLASS - 职业
  • 16 RACE - 种族
  • 17 ACHIEVEMENT - 成就
  • 20 GENDER - 性别(0=男, 1=女, 2=无)
  • 22 MAPID - 地图 ID
  • 23 AREAID - 区域 ID
  • 27 LEVEL - 等级
  • 38 HP_PCT - 生命值百分比
  • 47 QUESTSTATE - 任务状态
ElseGroup (逻辑分组)

相同 Source 条目下:

  • 相同 ElseGroup 值的条件使用 AND 逻辑(全部满足)
  • 不同 ElseGroup 之间使用 OR 逻辑(任一满足)

示例:"是法师 AND 等级≥20" OR "是术士 AND 等级≥20"

ConditionValue1-3 (条件参数)

参数含义取决于 ConditionTypeOrReference:

条件类型Value1Value2Value3
AURA (1)法术 ID效果索引-
ITEM (2)物品 ID数量含银行(0/1)
REPUTATION_RANK (5)阵营 ID声望等级-
TEAM (6)阵营 ID--
SKILL (7)技能 ID技能等级-
CLASS (15)职业掩码--
RACE (16)种族掩码--
LEVEL (27)等级值比较类型-
HP_PCT (38)百分比比较类型-

比较类型:0=等于, 1=大于, 2=小于, 3=大于等于, 4=小于等于

实战案例

案例1:只有法师才能获得法师装备掉落

INSERT INTO conditions (SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, Comment)
VALUES (1, 12345, 67890, 0, 0, 15, 0, 128, 0, 0, 0, '法师装备只能被法师获得');
-- 职业掩码: 1=战士, 2=圣骑, 4=猎人, 8=潜行者, 16=牧师, 32=死骑, 64=萨满, 128=法师, 256=术士, 1024=德鲁伊

案例2:任务接受条件 - 完成前置任务且等级≥25

INSERT INTO conditions (SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, Comment)
VALUES
(19, 0, 12345, 0, 0, 8, 0, 11111, 0, 0, 0, '前置任务已完成'),
(19, 0, 12345, 0, 0, 27, 0, 25, 3, 0, 0, '等级≥25');

案例3:对话选项需要崇拜声望

INSERT INTO conditions (SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, Comment)
VALUES (15, 5000, 0, 0, 0, 5, 0, 72, 7, 0, 0, '需要暴风城崇拜声望');
-- 声望等级: 0=仇恨, 1=敌对, 2=冷淡, 3=中立, 4=友善, 5=尊敬, 6=崇敬, 7=崇拜

案例4:OR 逻辑 - 联盟或部落可见

INSERT INTO conditions (SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, Comment)
VALUES
(14, 5000, 0, 0, 0, 6, 0, 469, 0, 0, 0, '联盟可见'),
(14, 5000, 0, 0, 1, 6, 0, 67, 0, 0, 0, '部落可见');

常见问题

Q: 条件不生效怎么办?
  • 检查 SourceTypeOrReferenceId 是否匹配目标系统
  • 确认 SourceGroup/SourceEntry/SourceId 定位是否正确
  • 验证 ConditionValue 参数是否符合条件类型的要求
  • 注意 NegativeCondition 的取反逻辑
Q: ElseGroup 如何使用?

ElseGroup=0 的条件是必须满足的基础条件。相同 ElseGroup 内 AND,不同 ElseGroup 间 OR。例如:

ElseGroup=0: 等级≥10  (AND)
ElseGroup=0: 声望≥友善 (AND)
以上全部满足 → 通过
或
ElseGroup=1: 等级≥50 → 也能通过
Q: 重载命令是什么?
.reload conditions

相关表格