conditions表是AzerothCore中的条件系统核心表格,用于定义各种游戏逻辑的触发条件。它可以与智能脚本、掉落系统、任务系统、法术系统等多个系统配合使用,提供灵活而强大的条件判断机制。
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| SourceTypeOrReferenceId | INT | 0 | 源类型或引用ID |
| SourceGroup | INT UNSIGNED | 0 | 源组别 |
| SourceEntry | INT | 0 | 源条目ID |
| SourceId | INT | 0 | 源ID |
| ElseGroup | INT UNSIGNED | 0 | 否则组(OR逻辑) |
| ConditionTypeOrReference | INT | 0 | 条件类型或引用 |
| ConditionTarget | TINYINT UNSIGNED | 0 | 条件目标 |
| ConditionValue1 | INT UNSIGNED | 0 | 条件值1 |
| ConditionValue2 | INT UNSIGNED | 0 | 条件值2 |
| ConditionValue3 | INT UNSIGNED | 0 | 条件值3 |
| NegativeCondition | TINYINT UNSIGNED | 0 | 负条件(取反) |
| ErrorType | INT UNSIGNED | 0 | 错误类型 |
| ErrorTextId | INT UNSIGNED | 0 | 错误文本ID |
| ScriptName | CHAR(64) | '' | 脚本名称 |
| Comment | VARCHAR(255) | '' | 条件注释说明 |
定义条件的应用范围和类型:
| 值 | 源类型 | 说明 |
|---|---|---|
| 0 | CONDITION_SOURCE_TYPE_NONE | 无源类型 |
| 1 | CONDITION_SOURCE_TYPE_CREATURE_LOOT_TEMPLATE | 生物掉落模板 |
| 2 | CONDITION_SOURCE_TYPE_DISENCHANT_LOOT_TEMPLATE | 分解掉落模板 |
| 3 | CONDITION_SOURCE_TYPE_FISHING_LOOT_TEMPLATE | 钓鱼掉落模板 |
| 4 | CONDITION_SOURCE_TYPE_GAMEOBJECT_LOOT_TEMPLATE | 游戏对象掉落模板 |
| 5 | CONDITION_SOURCE_TYPE_ITEM_LOOT_TEMPLATE | 物品掉落模板 |
| 6 | CONDITION_SOURCE_TYPE_MAIL_LOOT_TEMPLATE | 邮件掉落模板 |
| 7 | CONDITION_SOURCE_TYPE_MILLING_LOOT_TEMPLATE | 碾磨掉落模板 |
| 8 | CONDITION_SOURCE_TYPE_PICKPOCKETING_LOOT_TEMPLATE | 偷窃掉落模板 |
| 9 | CONDITION_SOURCE_TYPE_PROSPECTING_LOOT_TEMPLATE | 勘探掉落模板 |
| 10 | CONDITION_SOURCE_TYPE_REFERENCE_LOOT_TEMPLATE | 引用掉落模板 |
| 11 | CONDITION_SOURCE_TYPE_SKINNING_LOOT_TEMPLATE | 剥皮掉落模板 |
| 12 | CONDITION_SOURCE_TYPE_SPELL_LOOT_TEMPLATE | 法术掉落模板 |
| 13 | CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET | 法术隐式目标 |
| 14 | CONDITION_SOURCE_TYPE_GOSSIP_MENU | 对话菜单 |
| 15 | CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION | 对话菜单选项 |
| 16 | CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE | 生物模板载具 |
| 17 | CONDITION_SOURCE_TYPE_SPELL | 法术 |
| 18 | CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT | 法术点击事件 |
| 19 | CONDITION_SOURCE_TYPE_QUEST_ACCEPT | 任务接受 |
| 20 | CONDITION_SOURCE_TYPE_QUEST_SHOW_MARK | 任务显示标记 |
| 21 | CONDITION_SOURCE_TYPE_VEHICLE_SPELL | 载具法术 |
| 22 | CONDITION_SOURCE_TYPE_SMART_EVENT | 智能事件 |
| 23 | CONDITION_SOURCE_TYPE_NPC_VENDOR | NPC商人 |
| 24 | CONDITION_SOURCE_TYPE_SPELL_PROC | 法术触发 |
定义具体的条件判断类型:
| 值 | 条件类型 | 说明 |
|---|---|---|
| 0 | CONDITION_NONE | 无条件(总是真) |
| 1 | CONDITION_AURA | 光环/增益效果条件 |
| 2 | CONDITION_ITEM | 物品条件 |
| 3 | CONDITION_ITEM_EQUIPPED | 装备物品条件 |
| 4 | CONDITION_ZONEID | 区域ID条件 |
| 5 | CONDITION_REPUTATION_RANK | 声望等级条件 |
| 6 | CONDITION_TEAM | 阵营条件 |
| 7 | CONDITION_SKILL | 技能条件 |
| 8 | CONDITION_QUESTREWARDED | 任务已完成条件 |
| 9 | CONDITION_QUESTTAKEN | 任务已接受条件 |
| 10 | CONDITION_DRUNKENSTATE | 醉酒状态条件 |
| 11 | CONDITION_WORLD_STATE | 世界状态条件 |
| 12 | CONDITION_ACTIVE_EVENT | 活动事件条件 |
| 13 | CONDITION_INSTANCE_INFO | 副本信息条件 |
| 14 | CONDITION_QUEST_NONE | 无任务条件 |
| 15 | CONDITION_CLASS | 职业条件 |
| 16 | CONDITION_RACE | 种族条件 |
| 17 | CONDITION_ACHIEVEMENT | 成就条件 |
| 18 | CONDITION_TITLE | 头衔条件 |
| 19 | CONDITION_SPAWNMASK | 生成掩码条件 |
| 20 | CONDITION_GENDER | 性别条件 |
| 21 | CONDITION_UNIT_STATE | 单位状态条件 |
| 22 | CONDITION_MAPID | 地图ID条件 |
| 23 | CONDITION_AREAID | 区域ID条件 |
| 24 | CONDITION_CREATURE_TYPE | 生物类型条件 |
| 25 | CONDITION_SPELL | 法术条件 |
| 26 | CONDITION_PHASEMASK | 阶段掩码条件 |
| 27 | CONDITION_LEVEL | 等级条件 |
| 28 | CONDITION_QUEST_COMPLETE | 任务完成条件 |
| 29 | CONDITION_NEAR_CREATURE | 附近生物条件 |
| 30 | CONDITION_NEAR_GAMEOBJECT | 附近游戏对象条件 |
| 31 | CONDITION_OBJECT_ENTRY_GUID | 对象条目GUID条件 |
| 32 | CONDITION_TYPE_MASK | 类型掩码条件 |
| 33 | CONDITION_RELATION_TO | 关系条件 |
| 34 | CONDITION_REACTION_TO | 反应条件 |
| 35 | CONDITION_DISTANCE_TO | 距离条件 |
| 36 | CONDITION_ALIVE | 存活条件 |
| 37 | CONDITION_HP_VAL | 生命值条件 |
| 38 | CONDITION_HP_PCT | 生命值百分比条件 |
| 39 | CONDITION_REALM_ACHIEVEMENT | 服务器成就条件 |
| 40 | CONDITION_IN_WATER | 在水中条件 |
| 41 | CONDITION_TERRAIN_SWAP | 地形交换条件 |
| 42 | CONDITION_STAND_STATE | 站立状态条件 |
| 43 | CONDITION_DAILY_QUEST_DONE | 日常任务完成条件 |
| 44 | CONDITION_CHARMED | 魅惑状态条件 |
| 45 | CONDITION_PET_TYPE | 宠物类型条件 |
| 46 | CONDITION_TAXI | 飞行点条件 |
| 47 | CONDITION_QUESTSTATE | 任务状态条件 |
| 48 | CONDITION_QUEST_OBJECTIVE_COMPLETE | 任务目标完成条件 |
ElseGroup字段用于实现OR逻辑。相同ElseGroup值的条件使用AND逻辑组合,不同ElseGroup之间使用OR逻辑。
场景:玩家必须是法师或者术士,并且等级大于20
逻辑:(是法师 AND 等级>20) OR (是术士 AND 等级>20)
当设置为1时,条件结果会被取反。例如:
| 条件类型 | ConditionValue1 | ConditionValue2 | ConditionValue3 |
|---|---|---|---|
| CONDITION_AURA (1) | 法术ID | 效果索引(0-2) | 未使用 |
| CONDITION_ITEM (2) | 物品ID | 数量 | 是否包含银行(0/1) |
| CONDITION_ITEM_EQUIPPED (3) | 物品ID | 未使用 | 未使用 |
| CONDITION_ZONEID (4) | 区域ID | 未使用 | 未使用 |
| CONDITION_REPUTATION_RANK (5) | 阵营ID | 声望等级 | 未使用 |
| CONDITION_TEAM (6) | 队伍ID(469=联盟,67=部落) | 未使用 | 未使用 |
| CONDITION_SKILL (7) | 技能ID | 技能等级 | 未使用 |
| CONDITION_QUESTREWARDED (8) | 任务ID | 未使用 | 未使用 |
| CONDITION_QUESTTAKEN (9) | 任务ID | 未使用 | 未使用 |
| CONDITION_CLASS (15) | 职业掩码 | 未使用 | 未使用 |
| CONDITION_RACE (16) | 种族掩码 | 未使用 | 未使用 |
| CONDITION_LEVEL (27) | 等级 | 比较类型(0=等于,1=大于,2=小于,3=大于等于,4=小于等于) | 未使用 |
| CONDITION_NEAR_CREATURE (29) | 生物ID | 距离 | 是否存活(0=任意,1=存活,2=死亡) |
| CONDITION_HP_PCT (38) | 生命值百分比 | 比较类型 | 未使用 |
conditions表经常与以下表格配合使用: