Conditions

Материал из World of WarCraft Developers Wiki
Перейти к навигации Перейти к поиску

Таблица conditions

Таблица conditions из базы данных world — центральная таблица системы условий TrinityCore (Condition System). Используется для задания требований (conditions) для разных источников: лут, gossip, спеллы, SAI, vendor, phase, areatrigger, conversation line и т.д.

Первичный ключ — составной и включает практически все поля источника и самих условий: (SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, ConditionValue1, ConditionValue2, ConditionValue3, ConditionStringValue1).

Field Type Attributes Key Null Default Extra
SourceTypeOrReferenceId int PRIMARY NO 0
SourceGroup int UNSIGNED PRIMARY NO 0
SourceEntry int PRIMARY NO 0
SourceId int PRIMARY NO 0
ElseGroup int UNSIGNED PRIMARY NO 0
ConditionTypeOrReference int PRIMARY NO 0
ConditionTarget tinyint UNSIGNED PRIMARY NO 0
ConditionValue1 int UNSIGNED PRIMARY NO 0
ConditionValue2 int UNSIGNED PRIMARY NO 0
ConditionValue3 int UNSIGNED PRIMARY NO 0
ConditionStringValue1 varchar(64) PRIMARY NO
NegativeCondition tinyint UNSIGNED NO 0
ErrorType int UNSIGNED NO 0
ErrorTextId int UNSIGNED NO 0
ScriptName varchar(64) NO
Comment varchar(255) YES NULL

SourceTypeOrReferenceId

Тип источника условия (если значение > 0) или ссылка на шаблон-референс (если значение < 0).

  • SourceTypeOrReferenceId < 0 — это Reference ID. В этом режиме строка описывает «шаблон условия», на который можно ссылаться из других строк через отрицательное значение в ConditionTypeOrReference.
  • SourceTypeOrReferenceId > 0 — это тип источника (Source Type), который определяет, как интерпретировать поля SourceGroup/SourceEntry/SourceId и какие цели допустимы для ConditionTarget.

Возможные значения (SourceType)

Value Name SourceGroup SourceEntry SourceId ConditionTarget Примечание
0 CONDITION_SOURCE_TYPE_NONE (не используется) (не используется) (не используется) (не используется) Используется только для reference templates
1 CONDITION_SOURCE_TYPE_CREATURE_LOOT_TEMPLATE creature_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Лут существ
2 CONDITION_SOURCE_TYPE_DISENCHANT_LOOT_TEMPLATE disenchant_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Дизэнчант
3 CONDITION_SOURCE_TYPE_FISHING_LOOT_TEMPLATE fishing_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Рыбалка
4 CONDITION_SOURCE_TYPE_GAMEOBJECT_LOOT_TEMPLATE gameobject_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Лут GO
5 CONDITION_SOURCE_TYPE_ITEM_LOOT_TEMPLATE item_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Лут из предметов
6 CONDITION_SOURCE_TYPE_MAIL_LOOT_TEMPLATE mail_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Вложения письма (loot templates)
7 CONDITION_SOURCE_TYPE_MILLING_LOOT_TEMPLATE milling_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Миллинг
8 CONDITION_SOURCE_TYPE_PICKPOCKETING_LOOT_TEMPLATE pickpocketing_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Обшаривание карманов
9 CONDITION_SOURCE_TYPE_PROSPECTING_LOOT_TEMPLATE prospecting_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Проспектинг
10 CONDITION_SOURCE_TYPE_REFERENCE_LOOT_TEMPLATE reference_loot_template.Entry Item ID 0 0 Reference loot
11 CONDITION_SOURCE_TYPE_SKINNING_LOOT_TEMPLATE skinning_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Снятие шкур
12 CONDITION_SOURCE_TYPE_SPELL_LOOT_TEMPLATE spell_loot_template.Entry / reference_loot_template.Entry Item ID 0 0 Лут от спеллов
13 CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET Маска эффектов (1=EFFECT_0,2=EFFECT_1,4=EFFECT_2,...) SpellID 0 0/1 Условия на неявные цели спелла
14 CONDITION_SOURCE_TYPE_GOSSIP_MENU gossip_menu.entry gossip_menu.text_id 0 0/1 Условия на меню gossip
15 CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION gossip_menu_option.menu_id gossip_menu_option.id 0 0/1 Условия на пункт gossip
16 CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE 0 creature_template.entry 0 0/1 Условия для vehicle-шаблонов
17 CONDITION_SOURCE_TYPE_SPELL 0 SpellID 0 0/1 Условия на каст (caster/explicit target)
22 CONDITION_SOURCE_TYPE_SMART_EVENT smart_scripts.id + 1 smart_scripts.entryorguid smart_scripts.source_type 0/1 Условия на SAI event
23 CONDITION_SOURCE_TYPE_NPC_VENDOR npc_vendor.entry npc_vendor.item 0 0/1 Условия на vendor-позиции
24 CONDITION_SOURCE_TYPE_SPELL_PROC 0 SpellID ауры-прока 0 0/1 Условия на proc
25 CONDITION_SOURCE_TYPE_TERRAIN_SWAP 0 terrain_swap_defaults.TerrainSwapMap 0 0 Terrain swap
26 CONDITION_SOURCE_TYPE_PHASE phase_area.PhaseId phase_area.AreaId (0=любой area) 0 0 Фаза
27 CONDITION_SOURCE_TYPE_GRAVEYARD graveyard_zone.GhostZone graveyard_zone.ID 0 0 Кладбища
28 CONDITION_SOURCE_TYPE_AREATRIGGER areatrigger_template.Id areatrigger_template.IsCustom 0 0 Areaatrigger template (server-side)
29 CONDITION_SOURCE_TYPE_CONVERSATION_LINE 0 conversation_line_template.Id 0 0 Условия на линию диалога (conversation line)
30 CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED 0 AreatriggerID 0 0 Client-triggered areatrigger
31 CONDITION_SOURCE_TYPE_TRAINER_SPELL trainer_spell.TrainerId trainer_spell.SpellId 0 0 Тренеры
32 CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY ObjectType (5=Unit, 8=GameObject) CreatureID/GameObjectID 0 0/1 Visibility по object id
33 CONDITION_SOURCE_TYPE_SPAWN_GROUP 0 spawn_group_template.groupId 0 0 Spawn groups
34 CONDITION_SOURCE_TYPE_PLAYER_CONDITION 0 PlayerConditionID 0 0 PlayerCondition.db2
35 CONDITION_SOURCE_TYPE_SKILL_LINE_ABILITY 0 ID из SkillLineAbility.db2 0 0 SkillLineAbility
36 CONDITION_SOURCE_TYPE_PLAYER_CHOICE_RESPONSE playerchoice_response.ChoiceId playerchoice_response.ResponseId 0 0 PlayerChoice response

SourceGroup

Параметр источника. Его смысл зависит от SourceTypeOrReferenceId (см. таблицу SourceType выше).

Пример: 50047

SourceEntry

Параметр источника. Его смысл зависит от SourceTypeOrReferenceId (см. таблицу SourceType выше).

Пример: 93072

SourceId

Дополнительный параметр источника (используется не всеми SourceType). Его смысл зависит от SourceTypeOrReferenceId.

Пример: 0

ElseGroup

Группировка условий в логические блоки:

  • Внутри одного блока (одинаковые SourceType/SourceGroup/SourceEntry/SourceId и одинаковый ElseGroup) условия объединяются как AND.
  • Между блоками с разными ElseGroup объединение как OR.

Пример: 1

ConditionTypeOrReference

Тип условия (если значение > 0) или ссылка на референс (если значение < 0).

  • ConditionTypeOrReference < 0 — ссылка на Reference ID (то есть на строку с SourceTypeOrReferenceId = отрицательное значение).
  • ConditionTypeOrReference > 0 — тип условия (Condition Type), который определяет смысл полей ConditionValue1..3 и ConditionStringValue1.

Возможные значения (ConditionType)

Value Name ConditionValue1 ConditionValue2 ConditionValue3 / Примечание
0 CONDITION_NONE (не используется) (не используется) (не используется)
1 CONDITION_AURA SpellID Index эффекта (0–31) 0
2 CONDITION_ITEM item_template.entry count 0=не в банке, 1=в банке
3 CONDITION_ITEM_EQUIPPED item_template.entry 0 0
4 CONDITION_ZONEID ZoneID 0 0
5 CONDITION_REPUTATION_RANK FactionTemplateID rankMask 0
6 CONDITION_TEAM TeamID (Alliance=469, Horde=67) 0 0
7 CONDITION_SKILL SkillLine (SkillLine.db2) rank 0
8 CONDITION_QUESTREWARDED QuestID 0 0
9 CONDITION_QUESTTAKEN QuestID 0 0
10 CONDITION_DRUNKENSTATE state (0..3) 0 0
11 CONDITION_WORLD_STATE WorldState index WorldState value 0
12 CONDITION_ACTIVE_EVENT game_event.eventEntry 0 0
13 CONDITION_INSTANCE_INFO entry data 0=DATA, 1=GUID_DATA, 2=BOSS_STATE, 3=DATA64
14 CONDITION_QUEST_NONE QuestID 0 0
15 CONDITION_CLASS ClassMask 0 0
16 CONDITION_RACE RaceMask 0 0
17 CONDITION_ACHIEVEMENT AchievementID 0 0
18 CONDITION_TITLE CharTitleID 0 0
19 CONDITION_SPAWNMASK_DEPRECATED UNUSED UNUSED UNUSED
20 CONDITION_GENDER 0=Male, 1=Female, 2=None 0 0
21 CONDITION_UNIT_STATE UnitState (enum Unit.h) 0 0
22 CONDITION_MAPID MapID 0 0
23 CONDITION_AREAID AreaID 0 0
24 CONDITION_CREATURE_TYPE creature_template.type 0 0
25 CONDITION_SPELL SpellID 0 0
26 CONDITION_PHASEID PhaseID 0 0
27 CONDITION_LEVEL level ComparisonType 0
28 CONDITION_QUEST_COMPLETE QuestID 0 0
29 CONDITION_NEAR_CREATURE creature_template.entry distance (yards) 0=alive, 1=dead
30 CONDITION_NEAR_GAMEOBJECT gameobject_template.entry distance (yards) 0
31 CONDITION_OBJECT_ENTRY_GUID_LEGACY TypeID entry guid / правила legacy
32 CONDITION_TYPE_MASK_LEGACY TypeMask 0 0
33 CONDITION_RELATION_TO Target (ConditionValue1) RelationType 0
34 CONDITION_REACTION_TO Target (ConditionValue1) rankMask 0
35 CONDITION_DISTANCE_TO Target (ConditionValue1) distance ComparisonType
36 CONDITION_ALIVE 0 0 Используйте NegativeCondition: 0=alive, 1=dead
37 CONDITION_HP_VAL HP value ComparisonType 0
38 CONDITION_HP_PCT HP percent ComparisonType 0
39 CONDITION_REALM_ACHIEVEMENT AchievementID 0 0
40 CONDITION_IN_WATER 0 0 Используйте NegativeCondition (см. описание в документации)
41 CONDITION_TERRAIN_SWAP terrainSwap 0 0
42 CONDITION_STAND_STATE stateType standState 0
43 CONDITION_DAILY_QUEST_DONE QuestID 0 0
44 CONDITION_CHARMED 0 0 0
45 CONDITION_PET_TYPE mask 0 0
46 CONDITION_TAXI 0 0 0
47 CONDITION_QUESTSTATE QuestID state_mask 0
48 CONDITION_QUEST_OBJECTIVE_PROGRESS QuestObjectiveID 0 Progress value
49 CONDITION_DIFFICULTY_ID DifficultyID 0 0
50 CONDITION_GAMEMASTER canBeGM 0 0
51 CONDITION_OBJECT_ENTRY_GUID TypeID entry guid
52 CONDITION_TYPE_MASK TypeMask 0 0
53 CONDITION_BATTLE_PET_COUNT SpeciesId count ComparisonType
54 CONDITION_SCENARIO_STEP ScenarioStepId 0 0
55 CONDITION_SCENE_IN_PROGRESS SceneScriptPackageId 0 0
56 CONDITION_PLAYER_CONDITION PlayerConditionId 0 0
57 CONDITION_PRIVATE_OBJECT 0 0 0
58 CONDITION_STRING_ID 0 0 Используется ConditionStringValue1
59 CONDITION_LABEL Label 0 0

ConditionTarget

Цель, к которой применяется условие (выбор объекта проверки). Допустимые значения зависят от SourceType.

Пример: 0

ConditionValue1

Значение №1 условия. Смысл зависит от ConditionTypeOrReference.

Пример: 94562

ConditionValue2

Значение №2 условия. Смысл зависит от ConditionTypeOrReference.

Пример: 0

ConditionValue3

Значение №3 условия. Смысл зависит от ConditionTypeOrReference.

Пример: 0

ConditionStringValue1

Строковый параметр условия (используется некоторыми ConditionType, например CONDITION_STRING_ID). Так как поле входит в PRIMARY KEY, строки с разными ConditionStringValue1 считаются разными условиями даже при совпадении всех остальных полей.

Пример: "my_string_id"

NegativeCondition

Инверсия условия:

Value Описание
0 Условие проверяется «как есть»
1 Условие инвертируется (NOT)

Пример: 1

ErrorType

Тип ошибки (Spell Failed Reason), который клиент должен показать, если условие не выполнено. Отображается только для SourceType: CONDITION_SOURCE_TYPE_SPELL (17).

Пример: 211

ErrorTextId

ID кастомной строки ошибки (Spell Custom Error). Отображается только для SourceType: CONDITION_SOURCE_TYPE_SPELL (17), причём ErrorType должен быть SPELL_FAILED_CUSTOM_ERROR (211), иначе ставится 0.

Пример: 123

ScriptName

Имя скрипта, если условие связано с логикой скрипта (используется ядром при необходимости).

Пример: MyConditionScript

Comment

Комментарий/пояснение (для разработчиков/DB team). На логику не влияет.

Пример: "Show option only if player has quest"