Quest objectives

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

Таблица 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