Quest objectives
Таблица quest_objectives
Таблица quest_objectives из базы данных world хранит цели (objectives) квестов: кого убить, что собрать, с кем поговорить, какой триггер активировать, прогресс-бар и т.д. Обычно на один квест (QuestID) приходится несколько строк целей.
| Field | Type | Attributes | Key | Null | Default | Extra |
|---|---|---|---|---|---|---|
| ID | int | UNSIGNED | PRIMARY | NO | 0 | |
| QuestID | int | UNSIGNED | NO | 0 | ||
| Type | tinyint | UNSIGNED | NO | 0 | ||
| Order | tinyint | UNSIGNED | NO | 0 | ||
| StorageIndex | tinyint | NO | 0 | |||
| ObjectID | int | NO | 0 | |||
| Amount | int | NO | 0 | |||
| SecondaryAmount | int | NO | 0 | |||
| Flags | int | UNSIGNED | NO | 0 | ||
| Flags2 | int | UNSIGNED | NO | 0 | ||
| ProgressBarWeight | float | NO | 0 | |||
| ParentObjectiveID | int | NO | 0 | |||
| Visible | tinyint | UNSIGNED | NO | 1 | ||
| Description | mediumtext | utf8mb4_unicode_ci | YES | |||
| VerifiedBuild | int | NO | 0 |
ID
Уникальный ID цели (ObjectiveId).
Пример: 900001
QuestID
ID квеста (ссылка на quest_template.ID).
Пример: 38819
Type
Тип цели. От него зависит смысл ObjectID и логика выполнения.
| Value | Name | ObjectID (если используется) |
|---|---|---|
| 0 | QUEST_OBJECTIVE_MONSTER | creature_template.entry |
| 1 | QUEST_OBJECTIVE_ITEM | ItemID (Item.db2) |
| 2 | QUEST_OBJECTIVE_GAMEOBJECT | gameobject_template.entry |
| 3 | QUEST_OBJECTIVE_TALKTO | creature_template.entry |
| 4 | QUEST_OBJECTIVE_CURRENCY | — |
| 5 | QUEST_OBJECTIVE_LEARNSPELL | SpellId (Spell.db2) |
| 6 | QUEST_OBJECTIVE_MIN_REPUTATION | Faction |
| 7 | QUEST_OBJECTIVE_MAX_REPUTATION | Faction |
| 8 | QUEST_OBJECTIVE_MONEY | Money |
| 9 | QUEST_OBJECTIVE_PLAYERKILLS | — |
| 10 | QUEST_OBJECTIVE_AREATRIGGER | — |
| 11 | QUEST_OBJECTIVE_WINPETBATTLEAGAINSTNPC | — |
| 12 | QUEST_OBJECTIVE_DEFEATBATTLEPET | — |
| 13 | QUEST_OBJECTIVE_WINPVPPETBATTLES | — |
| 14 | QUEST_OBJECTIVE_CRITERIA_TREE | — |
| 15 | QUEST_OBJECTIVE_PROGRESS_BAR | — |
| 16 | QUEST_OBJECTIVE_HAVE_CURRENCY | — |
| 17 | QUEST_OBJECTIVE_OBTAIN_CURRENCY | — |
Пример: 0
Order
Порядок цели в списке целей квеста (используется для сортировки/отображения).
Пример: 1
StorageIndex
Внутренний индекс хранения прогресса цели (ядро использует его для трекинга выполнения; поле signed, поэтому может быть и отрицательным в отдельных реализациях/типах).
Пример: 0
ObjectID
ID “объекта” цели. Смысл зависит от Type (см. таблицу типов выше). Для типов без ObjectID обычно ставят 0.
Пример: 29611
Amount
Требуемое количество (убить N, собрать N, выполнить N раз и т.п.). Для типов, где количество не требуется, обычно 0 или 1.
Пример: 8
SecondaryAmount
Дополнительное количество/второй счётчик (используется не всеми типами; если не нужен — 0).
Пример: 0
Flags
Битовая маска поведения цели (клиентское отображение/логика выполнения).
| Value | Name | Описание |
|---|---|---|
| 0 | QUEST_OBJECTIVE_FLAG_NONE | Нет флагов |
| 1 | QUEST_OBJECTIVE_FLAG_TRACKED_ON_MINIMAP | Клиент показывает большую жёлтую “область” на миникарте (для creature/gameobject) |
| 2 | QUEST_OBJECTIVE_FLAG_SEQUENCED | Цель не отображается, пока не выполнены все предыдущие |
| 4 | QUEST_OBJECTIVE_FLAG_OPTIONAL | Необязательная цель (не требуется для завершения квеста) |
| 8 | QUEST_OBJECTIVE_FLAG_HIDDEN | Никогда не отображается в журнале квестов |
| 16 | QUEST_OBJECTIVE_FLAG_HIDE_ITEM_GAINS | Не показывать прогресс предметной цели (item gains) |
| 32 | QUEST_OBJECTIVE_FLAG_PROGRESS_COUNTS_ITEMS_IN_INVENTORY | Прогресс предметной цели считается по предметам в инвентаре |
| 64 | QUEST_OBJECTIVE_FLAG_PART_OF_PROGRESS_BAR | Скрытая цель для расчёта процентов прогресс-бара (обычно одна на квест) |
Примечание: значения суммируются как битовая маска (например, 2 + 4).
Пример: 8
Flags2
Дополнительная битовая маска (в разных ветках ядра может использоваться по-разному). Если не знаете назначение — ставьте 0.
Пример: 0
ProgressBarWeight
Вес цели в прогресс-баре (используется для квестов с прогресс-баром и/или скрытыми целями под прогресс-бар). Если не используется — 0.
Пример: 1
ParentObjectiveID
Связь “дочерней” цели с “родительской” целью (для группировки/иерархии/условного отображения в некоторых реализациях). Если связи нет — 0.
Пример: 0
Visible
Флаг видимости цели:
0— цель скрыта (не показывать игроку);1— цель видима.
Пример: 1
Description
Текстовое описание цели (если задано). Может отображаться в UI как строка цели.
Пример: "Убейте 8 демонов"
VerifiedBuild
Служебное поле TrinityDB/DB-команды: отметка подтверждения данных конкретным билдом клиента (логика аналогична прочим таблицам с VerifiedBuild).
Пример: 0