Quest template
DataBase
Таблица `quest_template`
Таблица для всех существующих квестов.
| Поле | Тип | Атрибуты | Пусто | Дефолт | Экстра
|
| entry | mediumint(8) | unsigned | NO | 0 |
|
| ZoneOrSort | smallint(6) | unsigned | NO | 0 |
|
| ClassOrSkill | smallint(6) | unsigned | NO | 0 |
|
| MinLevel | tinyint(3) | unsigned | NO | 0 |
|
| QuestLevel | tinyint(3) | unsigned | NO | 0 |
|
| Type | smallint(5) | unsigned | NO | 0 |
|
| RequiredRaces | smallint(5) | unsigned | NO | 0 |
|
| RequiredSkillValue | smallint(5) | unsigned | NO | 1 |
|
| RequiredMinRepFaction | smallint(5) | unsigned | NO | 0 |
|
| RequiredMinRepValue | mediumint(9) | unsigned | NO | 0 |
|
| RequiredMaxRepFaction | smallint(5) | unsigned | NO | 0 |
|
| RequiredMaxRepValue | mediumint(9) | unsigned | NO | 0 |
|
| SuggestedPlayers | tinyint(3) | unsigned | NO | 0 |
|
| LimitTime | int(10) | unsigned | NO | 0 |
|
| QuestFlags | smallint(5) | unsigned | NO | 0 |
|
| SpecialFlags | tinyint(3) | unsigned | NO | 0 |
|
| CharTitleId | tinyint(3) | | NO | 0 |
|
| PrevQuestId | mediumint(9) | | NO | 0 |
|
| NextQuestId | mediumint(9) | | NO | 0 |
|
| ExclusiveGroup | mediumint(9) | unsigned | NO | 0 |
|
| NextQuestInChain | mediumint(8) | unsigned | NO | 0 |
|
| SrcItemId | mediumint(8) | unsigned | NO | 0 |
|
| SrcItemCount | tinyint(3) | unsigned | NO | 0 |
|
| SrcSpell | mediumint(8) | unsigned | NO | 0 |
|
| Title | text | | YES | |
|
| Details | text | | YES | |
|
| Objectives | text | | YES | |
|
| OfferRewardText | text | | YES | |
|
| RequestItemsText | text | | YES | |
|
| EndText | text | | YES | |
|
| ObjectiveText1 | text | | YES | |
|
| ObjectiveText2 | text | | YES | |
|
| ObjectiveText3 | text | | YES | |
|
| ObjectiveText4 | text | | YES | |
|
| ReqItemId1 | mediumint(8) | unsigned | NO | 0 |
|
| ReqItemId2 | mediumint(8) | unsigned | NO | 0 |
|
| ReqItemId3 | mediumint(8) | unsigned | NO | 0 |
|
| ReqItemId4 | mediumint(8) | unsigned | NO | 0 |
|
| ReqItemCount1 | smallint(5) | unsigned | NO | 0 |
|
| ReqItemCount2 | smallint(5) | unsigned | NO | 0 |
|
| ReqItemCount3 | smallint(5) | unsigned | NO | 0 |
|
| ReqItemCount4 | smallint(5) | unsigned | NO | 0 |
|
| ReqSourceId1 | mediumint(8) | unsigned | NO | 0 |
|
| ReqSourceId2 | mediumint(8) | unsigned | NO | 0 |
|
| ReqSourceId3 | mediumint(8) | unsigned | NO | 0 |
|
| ReqSourceId4 | mediumint(8) | unsigned | NO | 0 |
|
| ReqSourceCount1 | smallint(5) | unsigned | NO | 0 |
|
| ReqSourceCount2 | smallint(5) | unsigned | NO | 0 |
|
| ReqSourceCount3 | smallint(5) | unsigned | NO | 0 |
|
| ReqSourceCount4 | smallint(5) | unsigned | NO | 0 |
|
| ReqSourceRef1 | tinyint(3) | unsigned | NO | 0 |
|
| ReqSourceRef2 | tinyint(3) | unsigned | NO | 0 |
|
| ReqSourceRef3 | tinyint(3) | unsigned | NO | 0 |
|
| ReqSourceRef4 | tinyint(3) | unsigned | NO | 0 |
|
| ReqCreatureOrGOId1 | mediumint(9) | | NO | 0 |
|
| ReqCreatureOrGOId2 | mediumint(9) | | NO | 0 |
|
| ReqCreatureOrGOId3 | mediumint(9) | | NO | 0 |
|
| ReqCreatureOrGOId4 | mediumint(9) | | NO | 0 |
|
| ReqCreatureOrGOCount1 | smallint(5) | unsigned | NO | 0 |
|
| ReqCreatureOrGOCount2 | smallint(5) | unsigned | NO | 0 |
|
| ReqCreatureOrGOCount3 | smallint(5) | unsigned | NO | 0 |
|
| ReqCreatureOrGOCount4 | smallint(5) | unsigned | NO | 0 |
|
| ReqSpellCast1 | mediumint(8) | unsigned | NO | 0 |
|
| ReqSpellCast2 | mediumint(8) | unsigned | NO | 0 |
|
| ReqSpellCast3 | mediumint(8) | unsigned | NO | 0 |
|
| ReqSpellCast4 | mediumint(8) | unsigned | NO | 0 |
|
| RewChoiceItemId1 | mediumint(8) | unsigned | NO | 0 |
|
| RewChoiceItemId2 | mediumint(8) | unsigned | NO | 0 |
|
| RewChoiceItemId3 | mediumint(8) | unsigned | NO | 0 |
|
| RewChoiceItemId4 | mediumint(8) | unsigned | NO | 0 |
|
| RewChoiceItemId5 | mediumint(8) | unsigned | NO | 0 |
|
| RewChoiceItemId6 | mediumint(8) | unsigned | NO | 0 |
|
| RewChoiceItemCount1 | smallint(5) | unsigned | NO | 0 |
|
| RewChoiceItemCount2 | smallint(5) | unsigned | NO | 0 |
|
| RewChoiceItemCount3 | smallint(5) | unsigned | NO | 0 |
|
| RewChoiceItemCount4 | smallint(5) | unsigned | NO | 0 |
|
| RewChoiceItemCount5 | smallint(5) | unsigned | NO | 0 |
|
| RewChoiceItemCount6 | smallint(5) | unsigned | NO | 0 |
|
| RewItemId1 | mediumint(8) | unsigned | NO | 0 |
|
| RewItemId2 | mediumint(8) | unsigned | NO | 0 |
|
| RewItemId3 | mediumint(8) | unsigned | NO | 0 |
|
| RewItemId4 | mediumint(8) | unsigned | NO | 0 |
|
| RewItemCount1 | smallint(5) | unsigned | NO | 0 |
|
| RewItemCount2 | smallint(5) | unsigned | NO | 0 |
|
| RewItemCount3 | smallint(5) | unsigned | NO | 0 |
|
| RewItemCount4 | smallint(5) | unsigned | NO | 0 |
|
| RewRepFaction1 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case
|
| RewRepFaction2 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case
|
| RewRepFaction3 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case
|
| RewRepFaction4 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case
|
| RewRepFaction5 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case
|
| RewRepValue1 | mediumint(9) | | NO | 0 |
|
| RewRepValue2 | mediumint(9) | | NO | 0 |
|
| RewRepValue3 | mediumint(9) | | NO | 0 |
|
| RewRepValue4 | mediumint(9) | | NO | 0 |
|
| RewRepValue5 | mediumint(9) | | NO | 0 |
|
| RewOrReqMoney | int(11) | | NO | 0 |
|
| RewMoneyMaxLevel | int(10) | unsigned | NO | 0 |
|
| RewSpell | mediumint(8) | unsigned | NO | 0 |
|
| RewSpellCast | mediumint(8) | unsigned | NO | 0 |
|
| PointMapId | smallint(5) | unsigned | NO | 0 |
|
| PointX | float | | NO | 0 |
|
| PointY | float | | NO | 0 |
|
| PointOpt | mediumint(8) | unsigned | NO | 0 |
|
| DetailsEmote1 | smallint(5) | | NO | 0 |
|
| DetailsEmote2 | smallint(5) | | NO | 0 |
|
| DetailsEmote3 | smallint(5) | | NO | 0 |
|
| DetailsEmote4 | smallint(5) | | NO | 0 |
|
| IncompleteEmote | smallint(5) | unsigned | NO | 0 |
|
| CompleteEmote | smallint(5) | unsigned | NO | 1 |
|
| OfferRewardEmote1 | smallint(5) | | NO | 0 |
|
| OfferRewardEmote2 | smallint(5) | | NO | 0 |
|
| OfferRewardEmote3 | smallint(5) | | NO | 0 |
|
| OfferRewardEmote4 | smallint(5) | | NO | 0 |
|
| StartScript | mediumint(8) | unsigned | NO | 0 |
|
| CompleteScript | mediumint(8) | unsigned | NO | 0 |
|
Описание полей таблицы
entry
Уникальный Id квеста.
ZoneOrSort
Если значение поля > 0, то это идентификатор Зоны (См. AreaTable.dbc).
Если значение поля < 0, то это идентификатор сортировки квеста (См. QuestSort.dbc).
ClassOrSkill
Определяет, какой класс или владелец какой профессии может взять квест.
Классы:
| Class | ID | Name | ID
|
| 61 | Warlock | 81 | Warrior
|
| 82 | Shaman | 141 | Paladin
|
| 161 | Mage | 162 | Rogue
|
| 261 | Hunter | 262 | Priest
|
| 263 | Druid
|
Профессии:
| Professions | ID | Name | ID
|
| 24 | Herbalism | 101 | Fishing
|
| 121 | Blacksmithing | 181 | Alchemy
|
| 182 | Leatherworking | 201 | Engineering
|
| 264 | Tailoring | 304 | Cooking
|
| 324 | First aid | 762 | Riding
|
MinLevel
Минимальный уровень необходимый для того, чтобы получить квест.
QuestLevel
Уровень квеста. Игрок получает весь опыт за квест лишь в том случае, если его уровень меньше либо равен значению QuestLevel+5.
Type
Тип квеста.
| Значение | Тип
|
| 1 | Group
|
| 21 | Life
|
| 41 | PvP
|
| 62 | Raid
|
| 81 | Dungeon
|
| 82 | World Event
|
| 83 | Legendary
|
| 84 | Escort
|
| 85 | Heroic
|
| 87 | Daily
|
RequiredRaces
Расы, которые могут взять квест. Поставьте 0 чтобы разрешить квест всем расам.
| 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 512 | 1024
|
| Human | Orc | Dwarf | NightElf | Undead | Tauren | Gnome | Troll | Blood Elves | Draenei
|
Например: чтобы сделать квест для Humans и Dwarves, сложите 1 и 4, получите 5, это и надо записывать в поле.
Альянс = 1101 , Орда = 690
RequiredSkillValue
Требуемое значение для номера скила из ячейки RequiredSkill.
RequiredMinRepFaction
Номер фракции, требуемой для взятия квеста.
RequiredMinRepValue
Игрок должен иметь значение репутации выше или равным тому, что в этом поле.
RequiredMaxRepFaction
Номер фракции, требуемой для взятия квеста.
RequiredMaxRepValue
Игрок должен иметь значение репутации меньше или равным тому, что в этом поле.
SuggestedPlayers
Количество игроков требуемых для выполнения квеста в группе (пока не реализованно в мангосе).
LimitTime
Если квест содержит временные рамки, то сюда вписывают время в секундах.
QuestFlags
QUEST_SPECIAL_FLAGS_NONE = 0
QUEST_SPECIAL_FLAGS_DELIVER = 1 // квест на доставку предмета
QUEST_SPECIAL_FLAGS_EXPLORATION = 2 // квест на открытие карты
QUEST_SPECIAL_FLAGS_SPEAKTO = 4 // квест на разговор
QUEST_SPECIAL_FLAGS_KILL_OR_CAST = 8 // квест на убийство мобов или каст спелла
QUEST_SPECIAL_FLAGS_TIMED = 16 // квест на время
QUEST_SPECIAL_FLAGS_UNK0 = 32
QUEST_SPECIAL_FLAGS_REPUTATION = 64 // квест на доп. репутацию
QUEST_SPECIAL_FLAGS_UNK1 = 128 // квесты появившиеся с аддоном BC
QUEST_SPECIAL_FLAGS_UNK2 = 256
QUEST_SPECIAL_FLAGS_UNK3 = 512
QUEST_SPECIAL_FLAGS_UNK4 = 1024
QUEST_SPECIAL_FLAGS_UNK5 = 2048
QUEST_SPECIAL_FLAGS_DAILY = 4096
SpecialFlags
Значение SpecialFlags в БД если требуется, но используется только сервером.
| Значение | Описание
|
| 0x010000 (1) | QUEST_MANGOS_FLAGS_REPEATABLE
Повторяемый квест
|
| 0x020000 (2) | QUEST_MANGOS_FLAGS_EXPLORATION_OR_EVENT
Используется в SpecialFlags если квест на открытие территории,
требуется каст спелла с эффектом SPELL_EFFECT_QUEST_COMPLETE,
есть соответствующая запись в таблице `*_script` при использовании SCRIPT_COMMAND_QUEST_EXPLORED,
устанавливается для библиотеки внешних скриптов)
|
| 0xFFFF (3) | QUEST_MANGOS_FLAGS_DB_ALLOWED
Используется, если 1 и 2
|
CharTitleId
!Нет описания!
PrevQuestId
Если значение > 0: то содержит id предыдущего квеста, который должен быть завершен перед началом этого квеста.
Если значение < 0: то содержит id начального квеста, который должен быть активен перед тем как этот квест может быть начат.
Если квест имеет много альтернативных предыдущих квестов ячейка NextQuestId может использоваться для урегулирования этой зависимости.
NextQuestId
Если значение > 0: то содержит id следующего квеста, если PrevQuestId для этого квеста неустановлен.
Если значение < 0: то содержит id подквеста, если PrevQuestId для этого квеста неустановлен.
Если квест имеет много альтернативных следующих квестов то ячейка PrevQuestId в следующем квесте может устранить эту проблему.
ExclusiveGroup
Позволяет определить группу квестов, для которой только один из группы может быть выбран и выполнен.
Например, если из квестов 1200, 1201 и 1202 надо позволить выбрать только один, вставьте 1200 в ExclusiveGroup для всех трех квестов.
NextQuestInChain
Определяет цепочки квестов. Детали введенного в это поле квеста автоматически открываются, когда данный квест завершится.
Работает, только если следующий квест начинается у этого же NPC или объекта.
srcItemId
Id вещи которую дает квестгивер при начале квеста.
вещи будут удалены если от квеста отказались.
srcItemCount
Кол-во вещей получаемое при начале квеста.
SrcSpell
Спел кастуемый на игрока при начале квеста. Может быть как бафом так и обучающим спелом.
Title
Заголовок квеста.
Details
Длинное описание квеста.
Objectives
Задачи квеста.
Если пусто, то квест считаеться автоматически выполненным и его можно сдать без выполнения условий.
OfferRewardText
Первый текст отправляемый игроку NPC-ом при завершении квеста.
RequestItemsText
Этот текст отправляется игроку, если он не выполнил все задачи квеста!
EndText
Этот текст отображается у игрока при открытии Questlog'а.
ObjectiveText1-4
Используется для нестандартного текста.
ReqItemId1-4
Номера требуемых предметов для завершения квеста (См. mangos.item_template.entry).
ReqItemCount1-4
Количество требуемых предметов соответственно.
ReqSourceId1-4
Эти поля используются логике ядра, отвечающей за квестовый дроп. Они позволяют игрокам получать квестовый дроп который не является предметами, требуемыми для завершения квеста (ReqItem предназначен для этого), но необходимы игроку для создания предмета доставки или для каста ReqSpellCasts.
ReqSourceId1 это ID из item_template предмета, являющегося источником для создания ReqItemX или каста ReqSpellCastX. X это значение ReqSourceRef1.
Только те предметы у которых есть шанс квестового дропа (QuestChance > 0 в *_loot_template) должны использоваться здесь как источники.
То же самое для ReqSourceId2-4.
Вы можете определить 1, 2, 3 или даже все 4 источника для одного и того же ReqItem/ReqSpellCast или использовать 4 источника для 4 ReqItems/ReqSpellCasts.
ReqSourceCount1-4
Количество предметов ReqSourceId1-4, которое игрок сможет собрать до завершения квеста.
ReqSourceRef1-4
Должно быть 0 или 1..4. смотрите описание ReqSourceId.
ReqCreatureOrGOId1-4
Значение > 0: 1.-4. Идентификаторы мобов, которых игрок должен убить/кастануть (См. mangos.creature_template.entry).
Значение < 0: 1.-4. Идентификаторы объектов, на которых игрок должен кастануть (См. mangos.gameobject_template.entry).
[ReqCreatureOrGOCount1-4
Число убитых/кастов соответственно, необходимых для завершения квеста.
ReqSpellCast1-4
Номер спелла, который должен быть скастован. (См. Spell.dbc)
Если ReqSpellCastN > 0, тогда на ReqCreatureOrGOIdN должен быть скастован спелл ReqSpellCastN,
Если ReqSpellCastN = 0, тогда они должны быть убиты.
RewChoiceItemId1-6
Идентификаторы предметов доступных для выбора при получении награды за квест. (См. mangos.item_template.entry)
RewChoiceItemCount1-6
Количество предметов для RewChoiceItemId1-6.
RewItemId1-4
Идентификаторы предметов предоставляемых в качестве награды. (См. mangos.item_template.entry).
RewItemCount1-4
Количество предметов для RewItemId1-4.
RewRepFaction1-5
Идентификаторы фракций, для которых квест предоставляет репутацию.
RewRepValue1-5
Число на которое увеличиться/уменьшится число репутации у Фракций1-5 при завершении квеста.
RewOrReqMoney
Деньги получаемые за сдачу квеста (если число > 0).
RewMoneyMaxLevel
Деньги, получаемые персонажем на 70 за выполнение квеста. Так же хранит в себе значение опыта за квест, для персонажей меньше 70 уровня, который вычисляется по нижеприведённой формуле. Если квест повторяемый, ХР получается лишь один раз (первый). Общее количество получаемого опытат так же зависит от разницы между уровнем персонажа и уровнем квеста.
Формула расчёта ХР из значения в данном поле:
QuestLevel >= 65: XP = RewMoneyMaxLevel / 6.0
QuestLevel == 64: XP = RewMoneyMaxLevel / 4.8
QuestLevel == 63: XP = RewMoneyMaxLevel / 3.6
QuestLevel == 62: XP = RewMoneyMaxLevel / 2.4
QuestLevel == 61: XP = RewMoneyMaxLevel / 1.2
QuestLevel <= 60: XP = RewMoneyMaxLevel / 0.6
Спел кастуемый на игрока после завершения квеста.
Это может быть изучение спела и в результате игрок изучит спел, или баф к примеру.
RewSpellCast
!Нет описания!
PointMapId
MapId точки квеста (POI).
POI будут показаны на карте когда квест активен.
PointX
X координата POI.
PointY
Y координата POI.
PointOpt
!!! Неизвестно: если вы знаете добавьте сюда информацию. !!!
DetailsEmote1-4
!!! Неизвестно: если вы знаете добавьте сюда информацию. !!!
IncompleteEmote
Эмоция показываемая игроку если квест не завершен (См. Emotes.dbc).
CompleteEmote
Эмоция показываемая игроку при завершении квеста (См. Emotes.dbc).
OfferRewardEmote1-4
!!! Неизвестно: если вы знаете добавьте сюда информацию. !!!
StartScript
Выполняет скрипт в начале квеста (См. quest_start_scripts).
CompleteScript
Выполняет скрипт при окончании квеста (См. quest_start_scripts).
|