TrinityCore
QuestDef.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITYCORE_QUEST_H
19#define TRINITYCORE_QUEST_H
20
21#include "Common.h"
22#include "DatabaseEnvFwd.h"
23#include "EnumFlag.h"
24#include "LootItemType.h"
25#include "Optional.h"
26#include "RaceMask.h"
27#include "SharedDefines.h"
28#include "UniqueTrackablePtr.h"
29#include "WorldPacket.h"
30#include <bitset>
31#include <vector>
32
33class Player;
34enum Difficulty : uint8;
35
36namespace WorldPackets
37{
38 namespace Quest
39 {
40 struct QuestRewards;
41 }
42}
43
44#define MAX_QUEST_LOG_SIZE 35
45
46#define QUEST_ITEM_DROP_COUNT 4
47#define QUEST_REWARD_CHOICES_COUNT 6
48#define QUEST_REWARD_ITEM_COUNT 4
49#define QUEST_DEPLINK_COUNT 10
50#define QUEST_REWARD_REPUTATIONS_COUNT 5
51#define QUEST_EMOTE_COUNT 4
52#define QUEST_REWARD_CURRENCY_COUNT 4
53#define QUEST_REWARD_DISPLAY_SPELL_COUNT 3
54
55// EnumUtils: DESCRIBE THIS
57{
59 QUEST_ERR_FAILED_LOW_LEVEL = 1, // DESCRIPTION "You are not high enough level for that quest.""
60 QUEST_ERR_FAILED_WRONG_RACE = 6, // DESCRIPTION "That quest is not available to your race."
61 QUEST_ERR_ALREADY_DONE = 7, // DESCRIPTION "You have completed that daily quest today."
62 QUEST_ERR_ONLY_ONE_TIMED = 12, // DESCRIPTION "You can only be on one timed quest at a time"
63 QUEST_ERR_ALREADY_ON1 = 13, // DESCRIPTION "You are already on that quest"
64 QUEST_ERR_FAILED_EXPANSION = 16, // DESCRIPTION "This quest requires an expansion enabled account."
65 QUEST_ERR_ALREADY_ON2 = 18, // DESCRIPTION "You are already on that quest"
66 QUEST_ERR_FAILED_MISSING_ITEMS = 21, // DESCRIPTION "You don't have the required items with you. Check storage."
67 QUEST_ERR_FAILED_NOT_ENOUGH_MONEY = 23, // DESCRIPTION "You don't have enough money for that quest"
68 QUEST_ERR_FAILED_CAIS = 24, // DESCRIPTION "You cannot complete quests once you have reached tired time"
69 QUEST_ERR_ALREADY_DONE_DAILY = 26, // DESCRIPTION "You have completed that daily quest today."
70 QUEST_ERR_FAILED_SPELL = 28, // DESCRIPTION "You haven't learned the required spell."
71 QUEST_ERR_HAS_IN_PROGRESS = 30 // DESCRIPTION "Progress Bar objective not completed"
72};
73
74// EnumUtils: DESCRIBE THIS
76{
77 Success = 0, // "Sharing quest with %s..."
78 Invalid = 1, // "%s is not eligible for that quest"
79 InvalidToRecipient = 2, // "%s's attempt to share quest "%s" failed. You are not eligible for that quest."
80 Accepted = 3, // "%s has accepted your quest"
81 Declined = 4, // "%s has declined your quest"
82 Busy = 5, // "%s is busy"
83 Dead = 6, // "%s is dead."
84 DeadToRecipient = 7, // "%s's attempt to share quest "%s" failed. You are dead."
85 LogFull = 8, // "%s's quest log is full"
86 LogFullToRecipient = 9, // "%s's attempt to share quest "%s" failed. Your quest log is full."
87 OnQuest = 10, // "%s is already on that quest"
88 OnQuestToRecipient = 11, // "%s's attempt to share quest "%s" failed. You are already on that quest."
89 AlreadyDone = 12, // "%s has completed that quest"
90 AlreadyDoneToRecipient = 13, // "%s's attempt to share quest "%s" failed. You have completed that quest."
91 NotDaily = 14, // "That quest cannot be shared today"
92 TimerExpired = 15, // "Quest sharing timer has expired"
93 NotInParty = 16, // "You are not in a party"
94 DifferentServerDaily = 17, // "%s is not eligible for that quest today"
95 DifferentServerDailyToRecipient = 18, // "%s's attempt to share quest "%s" failed. You are not eligible for that quest today."
96 NotAllowed = 19, // "That quest cannot be shared"
97 Prerequisite = 20, // "%s hasn't completed all of the prerequisite quests required for that quest."
98 PrerequisiteToRecipient = 21, // "%s's attempt to share quest "%s" failed. You must complete all of the prerequisite quests first."
99 LowLevel = 22, // "%s is too low level for that quest."
100 LowLevelToRecipient = 23, // "%s's attempt to share quest "%s" failed. You are too low level for that quest."
101 HighLevel = 24, // "%s is too high level for that quest."
102 HighLevelToRecipient = 25, // "%s's attempt to share quest "%s" failed. You are too high level for that quest."
103 Class = 26, // "%s is the wrong class for that quest."
104 ClassToRecipient = 27, // "%s's attempt to share quest "%s" failed. You are the wrong class for that quest."
105 Race = 28, // "%s is the wrong race for that quest."
106 RaceToRecipient = 29, // "%s's attempt to share quest "%s" failed. You are the wrong race for that quest."
107 LowFaction = 30, // "%s's reputation is too low for that quest."
108 LowFactionToRecipient = 31, // "%s's attempt to share quest "%s" failed. Your reputation is too low for that quest."
109 Expansion = 32, // "%s doesn't own the required expansion for that quest."
110 ExpansionToRecipient = 33, // "%s's attempt to share quest "%s" failed. You do not own the required expansion for that quest."
111 NotGarrisonOwner = 34, // "%s must own a garrison to accept that quest."
112 NotGarrisonOwnerToRecipient = 35, // "%s's attempt to share quest "%s" failed. You must own a garrison to accept that quest."
113 WrongCovenant = 36, // "%s is in the wrong covenant for that quest."
114 WrongCovenantToRecipient = 37, // "%s's attempt to share quest "%s" failed. You are in the wrong covenant for that quest."
115 NewPlayerExperience = 38, // "%s must complete Exile's Reach to accept that quest."
116 NewPlayerExperienceToRecipient = 39, // "%s's attempt to share quest "%s" failed. You must complete Exile's Reach to accept that quest."
117 WrongFaction = 40, // "%s is the wrong faction for that quest."
118 WrongFactionToRecipient = 41 // "%s's attempt to share quest "%s" failed. You are the wrong faction for that quest."
119};
120
122{
139
141{
144 //QUEST_STATUS_UNAVAILABLE = 2,
146 //QUEST_STATUS_AVAILABLE = 4,
148 QUEST_STATUS_REWARDED = 6, // Not used in DB
151
153{
154 None = 0x000000000,
155 Future = 0x000000002,
156 Trivial = 0x000000004,
157 TrivialRepeatableTurnin = 0x000000008,
158 TrivialDailyQuest = 0x000000010,
159 Reward = 0x000000020,
160 JourneyReward = 0x000000040,
161 CovenantCallingReward = 0x000000080,
162 RepeatableTurnin = 0x000000100,
163 DailyQuest = 0x000000200,
164 Quest = 0x000000400,
165 RewardCompleteNoPOI = 0x000000800,
166 RewardCompletePOI = 0x000001000,
167 LegendaryQuest = 0x000002000,
168 LegendaryRewardCompleteNoPOI = 0x000004000,
169 LegendaryRewardCompletePOI = 0x000008000,
170 JourneyQuest = 0x000010000,
171 JourneyRewardCompleteNoPOI = 0x000020000,
172 JourneyRewardCompletePOI = 0x000040000,
173 CovenantCallingQuest = 0x000080000,
176 TrivialLegendaryQuest = 0x000400000,
177 FutureLegendaryQuest = 0x000800000,
178 LegendaryReward = 0x001000000,
179 ImportantQuest = 0x002000000,
180 ImportantReward = 0x004000000,
181 TrivialImportantQuest = 0x008000000,
182 FutureImportantQuest = 0x010000000,
185 TrivialJourneyQuest = 0x080000000,
186 FutureJourneyQuest = 0x100000000,
187};
188
190
192{
193 QUEST_FLAGS_NONE = 0x00000000,
197 QUEST_FLAGS_SHARABLE = 0x00000008, // Can be shared: Player::CanShareQuest()
198 QUEST_FLAGS_HAS_CONDITION = 0x00000010, // Not used currently
199 QUEST_FLAGS_HIDE_REWARD_POI = 0x00000020, // Hides questgiver turn-in minimap icon
200 QUEST_FLAGS_RAID_GROUP_OK = 0x00000040, // Can be completed while in raid
201 QUEST_FLAGS_WAR_MODE_REWARDS_OPT_IN = 0x00000080, // Not used currently
202 QUEST_FLAGS_NO_MONEY_FOR_XP = 0x00000100, // Experience is not converted to gold at max level
203 QUEST_FLAGS_HIDE_REWARD = 0x00000200, // Items and money rewarded only sent in SMSG_QUESTGIVER_OFFER_REWARD (not in SMSG_QUEST_GIVER_QUEST_DETAILS or in client quest log(SMSG_QUEST_QUERY_RESPONSE))
204 QUEST_FLAGS_TRACKING_EVENT = 0x00000400, // These quests are automatically rewarded on quest complete and they will never appear in quest log client side.
205 QUEST_FLAGS_DEPRECATE_REPUTATION = 0x00000800, // Not used currently
206 QUEST_FLAGS_DAILY = 0x00001000, // Used to know quest is Daily one
207 QUEST_FLAGS_FLAGS_PVP = 0x00002000, // Having this quest in log forces PvP flag
208 QUEST_FLAGS_DEPRECATED = 0x00004000, // Used on quests that are not generally available
209 QUEST_FLAGS_WEEKLY = 0x00008000,
210 QUEST_FLAGS_AUTO_COMPLETE = 0x00010000, // Quests with this flag player submit automatically by special button in player gui
211 QUEST_FLAGS_DISPLAY_ITEM_IN_TRACKER = 0x00020000, // Displays usable item in quest tracker
212 QUEST_FLAGS_DISABLE_COMPLETION_TEXT = 0x00040000, // use Objective text as Complete text
213 QUEST_FLAGS_AUTO_ACCEPT = 0x00080000, // The client recognizes this flag as auto-accept.
214 QUEST_FLAGS_PLAYER_CAST_ACCEPT = 0x00100000, // Accept Spell Player Cast
215 QUEST_FLAGS_PLAYER_CAST_COMPLETE = 0x00200000, // Complete Spell Player Cast
216 QUEST_FLAGS_UPDATE_PHASESHIFT = 0x00400000, // Update Phase Shift
217 QUEST_FLAGS_SOR_WHITELIST = 0x00800000, // Scroll of Resurrection Whitelist
218 QUEST_FLAGS_LAUNCH_GOSSIP_COMPLETE = 0x01000000, // Gossip on Quest Completion - Force Gossip
219 QUEST_FLAGS_REMOVE_SURPLUS_ITEMS = 0x02000000, // Remove all items from inventory that have the same id as the objective, not just the amount required by quest
220 QUEST_FLAGS_WELL_KNOWN = 0x04000000, // Well-Known
221 QUEST_FLAGS_PORTRAIT_IN_QUEST_LOG = 0x08000000, // Portrait from Log
222 QUEST_FLAGS_SHOW_ITEM_WHEN_COMPLETED = 0x10000000, // Show Item When Completed
223 QUEST_FLAGS_LAUNCH_GOSSIP_ACCEPT = 0x20000000, // Gossip on Quest Accept - Force Gossip
224 QUEST_FLAGS_ITEMS_GLOW_WHEN_COMPLETE = 0x40000000, // Items Glow When Done
225 QUEST_FLAGS_FAIL_ON_LOGOUT = 0x80000000 // Fail on Logout
227
228// last checked in 19802
230{
232 QUEST_FLAGS_EX_NO_ITEM_REMOVAL = 0x00000001, // Keep Additional Items
233 QUEST_FLAGS_EX_SUPPRESS_GOSSIP_COMPLETE = 0x00000002, // Gossip on Quest Completion - Suppress Gossip
234 QUEST_FLAGS_EX_SUPPRESS_GOSSIP_ACCEPT = 0x00000004, // Gossip on Quest Accept - Suppress Gossip
235 QUEST_FLAGS_EX_DENY_PLAYER_QUESTGIVER = 0x00000008, // Disallow Player as Questgiver (advanced)
236 QUEST_FLAGS_EX_DISPLAY_CLASS_CHOICE_REWARDS = 0x00000010, // Choice Reward Filter - Matches Class
237 QUEST_FLAGS_EX_DISPLAY_SPEC_CHOICE_REWARDS = 0x00000020, // Choice Reward Filter - Matches Spec
238 QUEST_FLAGS_EX_REMOVE_ON_PERIODIC_RESET = 0x00000040, // Remove from Log on Periodic Reset
239 QUEST_FLAGS_EX_ACCOUNT = 0x00000080, // Account-Level Quest
240 QUEST_FLAGS_EX_LEGENDARY = 0x00000100, // Legendary Quest
241 QUEST_FLAGS_EX_NO_GUILD_XP = 0x00000200, // No Guild XP
242 QUEST_FLAGS_EX_RESET_CACHE_ON_ACCEPT = 0x00000400, // Reset Cache on Accept (internal)
243 QUEST_FLAGS_EX_NO_ABANDON_ONCE_BEGUN = 0x00000800, // No Abandon Once Any Objective Complete
244 QUEST_FLAGS_EX_RECAST_ACCEPT_SPELL_ON_LOGIN = 0x00001000, // Recast accept spell on login
245 QUEST_FLAGS_EX_UPDATE_ZONE_AURAS = 0x00002000, // Update Zone Auras
246 QUEST_FLAGS_EX_NO_CREDIT_FOR_PROXY = 0x00004000, // No Credit for Proxy Creatures
247 QUEST_FLAGS_EX_DISPLAY_AS_DAILY = 0x00008000, // Display As Daily Quest
249 QUEST_FLAGS_EX_INTERNAL_BUILDS_ONLY = 0x00020000, // Quest for Internal Builds ONLY
250 QUEST_FLAGS_EX_SUPPRESS_SPELL_LEARN_TEXT = 0x00040000, // Suppress spell learn text line (for followers)
251 QUEST_FLAGS_EX_DISPLAY_AS_OBJECTIVE = 0x00080000, // Display Header as Objective for Tasks
252 QUEST_FLAGS_EX_ALLOW_ALL_IN_GARRISON = 0x00100000, // Garrison non-owners allowed
253 QUEST_FLAGS_EX_REMOVE_ON_WEEKLY_RESET = 0x00200000, // Remove quest on weekly reset
254 QUEST_FLAGS_EX_SUPPRESS_GREETINGS_ON_ACCEPT = 0x00400000, // Suppress farewell audio after quest accept
255 QUEST_FLAGS_EX_REWARDS_IGNORE_CAPS = 0x00800000, // Rewards bypass weekly caps and Season Total
256 QUEST_FLAGS_EX_IS_WORLD_QUEST = 0x01000000, // Is a World Quest
257 QUEST_FLAGS_EX_NOT_IGNORABLE = 0x02000000, // Not Ignorable
258 QUEST_FLAGS_EX_AUTO_PUSH = 0x04000000, // Auto Push
259 QUEST_FLAGS_EX_NO_SPELL_COMPLETE_EFFECTS = 0x08000000, // No Complete Quest Spell Effect
260 QUEST_FLAGS_EX_DO_NOT_TOAST_HONOR_REWARD = 0x10000000, // Do Not Toast Honor Reward
261 QUEST_FLAGS_EX_KEEP_REPEATABLE_QUEST_ON_FACTION_CHANGE = 0x20000000, // Keep repeatable quest on faction change
262 QUEST_FLAGS_EX_KEEP_PROGRESS_ON_FACTION_CHANGE = 0x40000000, // Keep quest progress on faction change
265
267{
292};
293
295{
297 // Trinity flags for set SpecialFlags in DB if required but used only at server
298 QUEST_SPECIAL_FLAGS_REPEATABLE = 0x001, // Set by 1 in SpecialFlags from DB
299 QUEST_SPECIAL_FLAGS_AUTO_PUSH_TO_PARTY = 0x002, // Set by 2 in SpecialFlags from DB will make quest be pushed to entire party when one member accepts it
300 QUEST_SPECIAL_FLAGS_AUTO_ACCEPT = 0x004, // Set by 4 in SpecialFlags in DB if the quest is to be auto-accepted.
301 QUEST_SPECIAL_FLAGS_DF_QUEST = 0x008, // Set by 8 in SpecialFlags in DB if the quest is used by Dungeon Finder.
302 QUEST_SPECIAL_FLAGS_MONTHLY = 0x010, // Set by 16 in SpecialFlags in DB if the quest is reset at the begining of the month
303 // room for more custom flags
304
306
307 QUEST_SPECIAL_FLAGS_SEQUENCED_OBJECTIVES = 0x020, // Internal flag computed only
308};
309
310enum class QuestTagType
311{
312 Tag,
314 Normal,
315 Pvp,
316 PetBattle,
317 Bounty,
318 Dungeon,
319 Invasion,
320 Raid,
325 Islands,
326 Threat,
328};
329
331{
348 QUEST_OBJECTIVE_HAVE_CURRENCY = 16, // requires the player to have X currency when turning in but does not consume it
349 QUEST_OBJECTIVE_OBTAIN_CURRENCY = 17, // requires the player to gain X currency after starting the quest but not required to keep it until the end (does not consume)
350 QUEST_OBJECTIVE_INCREASE_REPUTATION = 18, // requires the player to gain X reputation with a faction
354
357
359{
360 QUEST_OBJECTIVE_FLAG_TRACKED_ON_MINIMAP = 0x0001, // client displays large yellow blob on minimap for creature/gameobject
361 QUEST_OBJECTIVE_FLAG_SEQUENCED = 0x0002, // client will not see the objective displayed until all previous objectives are completed
362 QUEST_OBJECTIVE_FLAG_OPTIONAL = 0x0004, // not required to complete the quest
363 QUEST_OBJECTIVE_FLAG_HIDDEN = 0x0008, // never displayed in quest log
364 QUEST_OBJECTIVE_FLAG_HIDE_CREDIT_MSG = 0x0010, // skip showing item objective progress
366 QUEST_OBJECTIVE_FLAG_PART_OF_PROGRESS_BAR = 0x0040, // hidden objective used to calculate progress bar percent (quests are limited to a single progress bar objective)
370};
371
373{
374 QUEST_OBJECTIVE_FLAG_2_QUEST_BOUND_ITEM = 0x1 // Item is bound to a single objective, only increments the counter for one quest if multiple require the same item and is not stored in inventory
376
378{
379 LegacyBehavior = 0,
380 Follower = 1,
381 Tradeskill = 2,
382 Ability = 3,
383 Aura = 4,
384 Spell = 5,
385 Unlock = 6,
386 Companion = 7,
387 Max
388};
389
391{
394 std::string Text;
395
397 QuestGreeting(uint16 emoteType, uint32 emoteDelay, std::string text)
398 : EmoteType(emoteType), EmoteDelay(emoteDelay), Text(std::move(text)) { }
399};
400
402{
403 std::vector<std::string> Greeting;
404};
405
407{
408 std::vector<std::string> LogTitle;
409 std::vector<std::string> LogDescription;
410 std::vector<std::string> QuestDescription;
411 std::vector<std::string> AreaDescription;
412 std::vector<std::string> PortraitGiverText;
413 std::vector<std::string> PortraitGiverName;
414 std::vector<std::string> PortraitTurnInText;
415 std::vector<std::string> PortraitTurnInName;
416 std::vector<std::string> QuestCompletionLog;
417};
418
420{
421 std::vector<std::string> CompletionText;
422};
423
425{
426 std::vector<std::string> Description;
427};
428
430{
431 std::vector<std::string> RewardText;
432};
433
435{
439 bool UpdatePhaseShift = false;
440 bool UpdateZoneAuras = false;
441};
442
444{
453 float ProgressBarWeight = 0.0f;
454 std::string Description;
455 std::vector<int32> VisualEffects;
457
458 bool IsStoringValue() const
459 {
460 switch (Type)
461 {
472 return true;
473 default:
474 break;
475 }
476 return false;
477 }
478
479 bool IsStoringFlag() const
480 {
481 switch (Type)
482 {
489 return true;
490 default:
491 break;
492 }
493 return false;
494 }
495
497 {
498 switch (type)
499 {
508 return true;
509 default:
510 break;
511 }
512 return false;
513 }
514};
515
516using QuestObjectives = std::vector<QuestObjective>;
517
519{
521 QuestRewardDisplaySpell(uint32 spellId, uint32 playerConditionId, QuestCompleteSpellType type) : SpellId(spellId), PlayerConditionId(playerConditionId), Type(type) { }
522
526};
527
529{
532 std::vector<std::string> Text;
533};
534
535// This Quest class provides a convenient way to access a few pretotaled (cached) quest details,
536// all base quest information, and any utility functions such as generating the amount of
537// xp to give
539{
540 friend class ObjectMgr;
541 friend class Player;
542 friend class PlayerMenu;
543 public:
544 // Loading data. All queries are in ObjectMgr::LoadQuests()
545 explicit Quest(Field* questRecord);
546 ~Quest();
547 void LoadRewardDisplaySpell(Field* fields);
548 void LoadRewardChoiceItems(Field* fields);
549 void LoadQuestDetails(Field* fields);
550 void LoadQuestRequestItems(Field* fields);
551 void LoadQuestOfferReward(Field* fields);
552 void LoadQuestTemplateAddon(Field* fields);
553 void LoadQuestMailSender(Field* fields);
554 void LoadQuestObjective(Field* fields);
555 void LoadQuestObjectiveVisualEffect(Field* fields);
556 void LoadConditionalConditionalQuestDescription(Field* fields);
557 void LoadConditionalConditionalRequestItemsText(Field* fields);
558 void LoadConditionalConditionalOfferRewardText(Field* fields);
559 void LoadConditionalConditionalQuestCompletionLog(Field* fields);
560
561 uint32 XPValue(Player const* player) const;
562 static uint32 XPValue(Player const* player, uint32 contentTuningId, uint32 xpDifficulty, float xpMultiplier = 1.0f, int32 expansion = -1);
563 uint32 MoneyValue(Player const* player) const;
564 uint32 MaxMoneyValue() const;
565 uint32 GetMaxMoneyReward() const;
566 Optional<QuestTagType> GetQuestTag() const;
567 bool IsImportant() const;
568
569 bool HasFlag(QuestFlags flag) const { return (_flags & uint32(flag)) != 0; }
570 bool HasFlagEx(QuestFlagsEx flag) const { return (_flagsEx & uint32(flag)) != 0; }
571 bool HasFlagEx2(QuestFlagsEx2 flag) const { return (_flagsEx2 & uint32(flag)) != 0; }
572
573 bool HasSpecialFlag(QuestSpecialFlags flag) const { return (_specialFlags & flag) != 0; }
574 void SetSpecialFlag(QuestSpecialFlags flag) { _specialFlags |= flag; }
575 bool HasQuestObjectiveType(QuestObjectiveType type) const { return _usedQuestObjectiveTypes[type]; }
576
577 bool IsAutoPush() const { return HasFlagEx(QUEST_FLAGS_EX_AUTO_PUSH); }
578 bool IsWorldQuest() const { return HasFlagEx(QUEST_FLAGS_EX_IS_WORLD_QUEST); }
579
580 // Possibly deprecated flag
581 bool IsUnavailable() const { return HasFlag(QUEST_FLAGS_DEPRECATED); }
582
583 // whether the quest is globally enabled (spawned by pool, game event active etc.)
584 static bool IsTakingQuestEnabled(uint32 questId);
585
586 // table data accessors:
587 uint32 GetQuestId() const { return _id; }
588 uint32 GetQuestType() const { return _type; }
589 uint32 GetQuestPackageID() const { return _packageID; }
590 uint32 GetContentTuningId() const { return _contentTuningID; }
591 int32 GetZoneOrSort() const { return _questSortID; }
592 uint32 GetMaxLevel() const { return _maxLevel; }
593 uint32 GetQuestInfoID() const { return _questInfoID; }
594 uint32 GetAllowableClasses() const { return _allowableClasses; }
595 Trinity::RaceMask<uint64> GetAllowableRaces() const { return _allowableRaces; }
596 uint32 GetRequiredSkill() const { return _requiredSkillId; }
597 uint32 GetRequiredSkillValue() const { return _requiredSkillPoints; }
598 uint32 GetRequiredMinRepFaction() const { return _requiredMinRepFaction; }
599 int32 GetRequiredMinRepValue() const { return _requiredMinRepValue; }
600 uint32 GetRequiredMaxRepFaction() const { return _requiredMaxRepFaction; }
601 int32 GetRequiredMaxRepValue() const { return _requiredMaxRepValue; }
602 uint32 GetSuggestedPlayers() const { return _suggestedPlayers; }
603 int64 GetLimitTime() const { return _limitTime; }
604 int32 GetPrevQuestId() const { return _prevQuestID; }
605 uint32 GetNextQuestId() const { return _nextQuestID; }
606 int32 GetExclusiveGroup() const { return _exclusiveGroup; }
607 int32 GetBreadcrumbForQuestId() const { return _breadcrumbForQuestId; }
608 uint32 GetNextQuestInChain() const { return _nextQuestInChain; }
609 int32 GetRewArenaPoints() const {return _rewardArenaPoints; }
610 uint32 GetXPDifficulty() const { return _rewardXPDifficulty; }
611 float GetXPMultiplier() const { return _rewardXPMultiplier; }
612 float GetMoneyMultiplier() const { return _rewardMoneyMultiplier; }
613 uint32 GetSrcItemId() const { return _sourceItemId; }
614 uint32 GetSrcItemCount() const { return _sourceItemIdCount; }
615 uint32 GetSrcSpell() const { return _sourceSpellID; }
616 std::string const& GetLogTitle() const { return _logTitle; }
617 std::string const& GetLogDescription() const { return _logDescription; }
618 std::string const& GetQuestDescription() const { return _questDescription; }
619 std::vector<QuestConditionalText> const& GetConditionalQuestDescription() const { return _conditionalQuestDescription; }
620 std::string const& GetAreaDescription() const { return _areaDescription; }
621 std::string const& GetOfferRewardText() const { return _offerRewardText; }
622 std::vector<QuestConditionalText> const& GetConditionalOfferRewardText() const { return _conditionalOfferRewardText; }
623 std::string const& GetRequestItemsText() const { return _requestItemsText; }
624 std::vector<QuestConditionalText> const& GetConditionalRequestItemsText() const { return _conditionalRequestItemsText; }
625 std::string const& GetQuestCompletionLog() const { return _questCompletionLog; }
626 std::vector<QuestConditionalText> const& GetConditionalQuestCompletionLog() const { return _conditionalQuestCompletionLog; }
627 std::string const& GetPortraitGiverText() const { return _portraitGiverText; }
628 std::string const& GetPortraitGiverName() const { return _portraitGiverName; }
629 std::string const& GetPortraitTurnInText() const { return _portraitTurnInText; }
630 std::string const& GetPortraitTurnInName() const { return _portraitTurnInName; }
631 QuestObjectives const& GetObjectives() const { return Objectives; }
632 uint32 GetRewMoneyDifficulty() const { return _rewardMoneyDifficulty; }
633 uint32 GetRewHonor() const { return _rewardHonor; }
634 uint32 GetRewKillHonor() const { return _rewardKillHonor; }
635 uint32 GetArtifactXPDifficulty() const { return _rewardArtifactXPDifficulty; }
636 float GetArtifactXPMultiplier() const { return _rewardArtifactXPMultiplier; }
637 uint32 GetArtifactCategoryId() const { return _rewardArtifactCategoryID; }
638 uint32 GetRewMoneyMaxLevel() const; // use in XP calculation at client
639 uint32 GetRewSpell() const { return _rewardSpell; }
640 uint32 GetRewMailTemplateId() const { return _rewardMailTemplateId; }
641 uint32 GetRewMailDelaySecs() const { return _rewardMailDelay; }
642 uint32 GetRewMailSenderEntry() const { return _rewardMailSenderEntry; }
643 uint32 GetRewTitle() const { return _rewardTitleId; }
644 uint32 GetPOIContinent() const { return _poiContinent; }
645 float GetPOIx() const { return _poix; }
646 float GetPOIy() const { return _poiy; }
647 uint32 GetPOIPriority() const { return _poiPriority; }
648 uint32 GetSoundAccept() const { return _soundAccept; }
649 uint32 GetSoundTurnIn() const { return _soundTurnIn; }
650 uint32 GetIncompleteEmote() const { return _emoteOnIncomplete; }
651 uint32 GetCompleteEmote() const { return _emoteOnComplete; }
652 uint32 GetIncompleteEmoteDelay() const { return _emoteOnIncompleteDelay; }
653 uint32 GetCompleteEmoteDelay() const { return _emoteOnCompleteDelay; }
654 bool IsRepeatable() const { return _specialFlags & QUEST_SPECIAL_FLAGS_REPEATABLE; }
655 bool IsAutoAccept() const;
656 bool IsTurnIn() const;
657 uint32 GetFlags() const { return _flags; }
658 uint32 GetFlagsEx() const { return _flagsEx; }
659 uint32 GetFlagsEx2() const { return _flagsEx2; }
660 uint32 GetSpecialFlags() const { return _specialFlags; }
661 uint32 GetScriptId() const { return _scriptId; }
662 uint32 GetAreaGroupID() const { return _areaGroupID; }
663 uint32 GetRewardSkillId() const { return _rewardSkillId; }
664 uint32 GetRewardSkillPoints() const { return _rewardSkillPoints; }
665 uint32 GetRewardReputationMask() const { return _rewardReputationMask; }
666 int32 GetTreasurePickerId() const { return _treasurePickerID; }
667 int32 GetExpansion() const { return _expansion; }
668 int32 GetManagedWorldStateId() const { return _managedWorldStateID; }
669 int32 GetQuestSessionBonus() const { return _questSessionBonus; }
670 uint32 GetQuestGiverPortrait() const { return _questGiverPortrait; }
671 int32 GetQuestGiverPortraitMount() const { return _questGiverPortraitMount; }
672 int32 GetQuestGiverPortraitModelSceneId() const { return _questGiverPortraitModelSceneId; }
673 uint32 GetQuestTurnInPortrait() const { return _questTurnInPortrait; }
674 bool IsDaily() const { return (_flags & QUEST_FLAGS_DAILY) != 0; }
675 bool IsWeekly() const { return (_flags & QUEST_FLAGS_WEEKLY) != 0; }
676 bool IsMonthly() const { return (_specialFlags & QUEST_SPECIAL_FLAGS_MONTHLY) != 0; }
677 bool IsSeasonal() const { return (_questSortID == -QUEST_SORT_SEASONAL || _questSortID == -QUEST_SORT_SPECIAL || _questSortID == -QUEST_SORT_LUNAR_FESTIVAL || _questSortID == -QUEST_SORT_MIDSUMMER || _questSortID == -QUEST_SORT_BREWFEST || _questSortID == -QUEST_SORT_LOVE_IS_IN_THE_AIR || _questSortID == -QUEST_SORT_NOBLEGARDEN) && !IsRepeatable(); }
678 bool IsDailyOrWeekly() const { return (_flags & (QUEST_FLAGS_DAILY | QUEST_FLAGS_WEEKLY)) != 0; }
679 bool IsRaidQuest(Difficulty difficulty) const;
680 bool IsAllowedInRaid(Difficulty difficulty) const;
681 bool IsDFQuest() const { return (_specialFlags & QUEST_SPECIAL_FLAGS_DF_QUEST) != 0; }
683 uint32 CalculateHonorGain(uint8 level) const;
684 bool CanIncreaseRewardedQuestCounters() const;
685
686 // multiple values
687 std::vector<QuestRewardDisplaySpell> RewardDisplaySpell;
688 std::array<uint32, QUEST_REWARD_ITEM_COUNT> RewardItemId = { };
689 std::array<uint32, QUEST_REWARD_ITEM_COUNT> RewardItemCount = { };
690 std::array<uint32, QUEST_ITEM_DROP_COUNT> ItemDrop = { };
691 std::array<uint32, QUEST_ITEM_DROP_COUNT> ItemDropQuantity = { };
692 std::array<LootItemType, QUEST_REWARD_CHOICES_COUNT> RewardChoiceItemType = { };
693 std::array<uint32, QUEST_REWARD_CHOICES_COUNT> RewardChoiceItemId = { };
694 std::array<uint32, QUEST_REWARD_CHOICES_COUNT> RewardChoiceItemCount = { };
695 std::array<uint32, QUEST_REWARD_CHOICES_COUNT> RewardChoiceItemDisplayId = { };
696 std::array<uint32, QUEST_REWARD_REPUTATIONS_COUNT> RewardFactionId = { };
697 std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> RewardFactionValue = { };
698 std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> RewardFactionOverride = { };
699 std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> RewardFactionCapIn = { };
700 std::array<uint32, QUEST_REWARD_CURRENCY_COUNT> RewardCurrencyId = { };
701 std::array<uint32, QUEST_REWARD_CURRENCY_COUNT> RewardCurrencyCount = { };
703 std::array<uint32, QUEST_EMOTE_COUNT> DetailsEmote = { };
704 std::array<uint32, QUEST_EMOTE_COUNT> DetailsEmoteDelay = { };
705 std::array<int32, QUEST_EMOTE_COUNT> OfferRewardEmote = { };
706 std::array<uint32, QUEST_EMOTE_COUNT> OfferRewardEmoteDelay = { };
707
708 uint32 GetRewChoiceItemsCount() const { return _rewChoiceItemsCount; }
709 uint32 GetRewItemsCount() const { return _rewItemsCount; }
710 uint32 GetRewCurrencyCount() const { return _rewCurrencyCount; }
711
712 void SetEventIdForQuest(uint16 eventId) { _eventIdForQuest = eventId; }
713 uint16 GetEventIdForQuest() const { return _eventIdForQuest; }
714
715 void InitializeQueryData();
716 WorldPacket BuildQueryData(LocaleConstant loc, Player* player) const;
717
718 void BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player* player) const;
719
720 // Helpers
721 static uint32 RoundXPValue(uint32 xp);
722
723 Trinity::unique_weak_ptr<Quest> GetWeakPtr() const { return _weakRef; }
724
725 std::vector<uint32> DependentPreviousQuests;
726 std::vector<uint32> DependentBreadcrumbQuests;
727 std::array<WorldPacket, TOTAL_LOCALES> QueryData;
728
729 private:
730 uint32 _rewChoiceItemsCount = 0;
731 uint32 _rewItemsCount = 0;
732 uint16 _eventIdForQuest = 0;
733 uint32 _rewCurrencyCount = 0;
734
735 // wdb data (quest query response)
736 uint32 _id = 0;
737 uint32 _type = 0;
738 uint32 _packageID = 0;
739 uint32 _contentTuningID = 0;
740 int32 _questSortID = 0;
741 uint32 _questInfoID = 0;
742 uint32 _suggestedPlayers = 0;
743 uint32 _nextQuestInChain = 0;
744 uint32 _rewardXPDifficulty = 0;
745 float _rewardXPMultiplier = 0.f;
746 uint32 _rewardMoneyDifficulty = 0;
747 float _rewardMoneyMultiplier = 0.f;
748 uint32 _rewardBonusMoney = 0;
749 uint32 _rewardSpell = 0;
750 uint32 _rewardHonor = 0;
751 uint32 _rewardKillHonor = 0;
752 uint32 _rewardArtifactXPDifficulty = 0;
753 float _rewardArtifactXPMultiplier = 0.f;
754 uint32 _rewardArtifactCategoryID = 0;
755 uint32 _sourceItemId = 0;
756 uint32 _flags = 0;
757 uint32 _flagsEx = 0;
758 uint32 _flagsEx2 = 0;
759 uint32 _poiContinent = 0;
760 float _poix = 0.f;
761 float _poiy = 0.f;
762 uint32 _poiPriority = 0;
763 uint32 _rewardTitleId = 0;
764 int32 _rewardArenaPoints = 0;
765 uint32 _rewardSkillId = 0;
766 uint32 _rewardSkillPoints = 0;
767 uint32 _questGiverPortrait = 0;
768 int32 _questGiverPortraitMount = 0;
769 int32 _questGiverPortraitModelSceneId = 0;
770 uint32 _questTurnInPortrait = 0;
772 uint32 _soundAccept = 0;
773 uint32 _soundTurnIn = 0;
774 uint32 _areaGroupID = 0;
775 int64 _limitTime = 0;
777 int32 _treasurePickerID = 0;
778 int32 _expansion = 0;
779 int32 _managedWorldStateID = 0;
780 int32 _questSessionBonus = 0;
781 std::string _logTitle;
782 std::string _logDescription;
783 std::string _questDescription;
784 std::string _areaDescription;
790
791 // quest_description_conditional
792 std::vector<QuestConditionalText> _conditionalQuestDescription;
793
794 // quest_completion_log_conditional
795 std::vector<QuestConditionalText> _conditionalQuestCompletionLog;
796
797 // quest_request_items table
798 uint32 _emoteOnComplete = 0;
799 uint32 _emoteOnIncomplete = 0;
800 uint32 _emoteOnCompleteDelay = 0;
801 uint32 _emoteOnIncompleteDelay = 0;
802 std::string _requestItemsText;
803
804 // quest_request_items_conditional
805 std::vector<QuestConditionalText> _conditionalRequestItemsText;
806
807 // quest_offer_reward table
808 std::string _offerRewardText;
809
810 // quest_offer_reward_conditional
811 std::vector<QuestConditionalText> _conditionalOfferRewardText;
812
813 // quest_template_addon table (custom data)
814 uint32 _maxLevel = 0;
815 uint32 _allowableClasses = 0;
816 uint32 _sourceSpellID = 0;
817 int32 _prevQuestID = 0;
818 uint32 _nextQuestID = 0;
819 int32 _exclusiveGroup = 0;
820 int32 _breadcrumbForQuestId = 0;
821 uint32 _rewardMailTemplateId = 0;
822 uint32 _rewardMailDelay = 0;
823 uint32 _requiredSkillId = 0;
824 uint32 _requiredSkillPoints = 0;
825 uint32 _requiredMinRepFaction = 0;
826 int32 _requiredMinRepValue = 0;
827 uint32 _requiredMaxRepFaction = 0;
828 int32 _requiredMaxRepValue = 0;
829 uint32 _sourceItemIdCount = 0;
830 uint32 _rewardMailSenderEntry = 0;
831 uint32 _specialFlags = 0; // custom flags, not sniffed/WDB
832 std::bitset<MAX_QUEST_OBJECTIVE_TYPE> _usedQuestObjectiveTypes;
833 uint32 _scriptId = 0;
834
836};
837
839{
842 time_t AcceptTime = time_t(0);
844 bool Explored = false;
845};
846
847#endif
LocaleConstant
Definition: Common.h:48
Difficulty
Definition: DBCEnums.h:873
#define TC_GAME_API
Definition: Define.h:123
uint8_t uint8
Definition: Define.h:144
int64_t int64
Definition: Define.h:137
int8_t int8
Definition: Define.h:140
int32_t int32
Definition: Define.h:138
uint64_t uint64
Definition: Define.h:141
uint16_t uint16
Definition: Define.h:143
uint32_t uint32
Definition: Define.h:142
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:25
QuestCompleteSpellType
Definition: QuestDef.h:378
QuestTagType
Definition: QuestDef.h:311
QuestFailedReason
Definition: QuestDef.h:57
@ QUEST_ERR_ALREADY_DONE
Definition: QuestDef.h:61
@ QUEST_ERR_FAILED_EXPANSION
Definition: QuestDef.h:64
@ QUEST_ERR_FAILED_WRONG_RACE
Definition: QuestDef.h:60
@ QUEST_ERR_ALREADY_ON2
Definition: QuestDef.h:65
@ QUEST_ERR_ONLY_ONE_TIMED
Definition: QuestDef.h:62
@ QUEST_ERR_ALREADY_DONE_DAILY
Definition: QuestDef.h:69
@ QUEST_ERR_FAILED_LOW_LEVEL
Definition: QuestDef.h:59
@ QUEST_ERR_FAILED_NOT_ENOUGH_MONEY
Definition: QuestDef.h:67
@ QUEST_ERR_FAILED_MISSING_ITEMS
Definition: QuestDef.h:66
@ QUEST_ERR_NONE
Definition: QuestDef.h:58
@ QUEST_ERR_HAS_IN_PROGRESS
Definition: QuestDef.h:71
@ QUEST_ERR_FAILED_SPELL
Definition: QuestDef.h:70
@ QUEST_ERR_ALREADY_ON1
Definition: QuestDef.h:63
@ QUEST_ERR_FAILED_CAIS
Definition: QuestDef.h:68
QuestPushReason
Definition: QuestDef.h:76
@ NewPlayerExperienceToRecipient
@ DifferentServerDailyToRecipient
std::vector< QuestObjective > QuestObjectives
Definition: QuestDef.h:516
DEFINE_ENUM_FLAG(QuestGiverStatus)
QuestTradeSkill
Definition: QuestDef.h:122
@ QUEST_TRSKILL_ALCHEMY
Definition: QuestDef.h:124
@ QUEST_TRSKILL_FISHING
Definition: QuestDef.h:135
@ QUEST_TRSKILL_BLACKSMITHING
Definition: QuestDef.h:125
@ QUEST_TRSKILL_TAILORING
Definition: QuestDef.h:133
@ QUEST_TRSKILL_MINING
Definition: QuestDef.h:134
@ QUEST_TRSKILL_HERBALISM
Definition: QuestDef.h:130
@ QUEST_TRSKILL_JEWELCRAFTING
Definition: QuestDef.h:137
@ QUEST_TRSKILL_SKINNING
Definition: QuestDef.h:136
@ QUEST_TRSKILL_COOKING
Definition: QuestDef.h:126
@ QUEST_TRSKILL_NONE
Definition: QuestDef.h:123
@ QUEST_TRSKILL_ENGINEERING
Definition: QuestDef.h:128
@ QUEST_TRSKILL_FIRSTAID
Definition: QuestDef.h:129
@ QUEST_TRSKILL_ENCHANTING
Definition: QuestDef.h:127
@ QUEST_TRSKILL_LEATHERWORKING
Definition: QuestDef.h:131
@ QUEST_TRSKILL_POISONS
Definition: QuestDef.h:132
QuestObjectiveType
Definition: QuestDef.h:331
@ QUEST_OBJECTIVE_DEFEATBATTLEPET
Definition: QuestDef.h:344
@ QUEST_OBJECTIVE_WINPVPPETBATTLES
Definition: QuestDef.h:345
@ QUEST_OBJECTIVE_INCREASE_REPUTATION
Definition: QuestDef.h:350
@ MAX_QUEST_OBJECTIVE_TYPE
Definition: QuestDef.h:355
@ QUEST_OBJECTIVE_HAVE_CURRENCY
Definition: QuestDef.h:348
@ QUEST_OBJECTIVE_WINPETBATTLEAGAINSTNPC
Definition: QuestDef.h:343
@ QUEST_OBJECTIVE_MONSTER
Definition: QuestDef.h:332
@ QUEST_OBJECTIVE_TALKTO
Definition: QuestDef.h:335
@ QUEST_OBJECTIVE_KILL_WITH_LABEL
Definition: QuestDef.h:353
@ QUEST_OBJECTIVE_CRITERIA_TREE
Definition: QuestDef.h:346
@ QUEST_OBJECTIVE_OBTAIN_CURRENCY
Definition: QuestDef.h:349
@ QUEST_OBJECTIVE_PROGRESS_BAR
Definition: QuestDef.h:347
@ QUEST_OBJECTIVE_PLAYERKILLS
Definition: QuestDef.h:341
@ QUEST_OBJECTIVE_ITEM
Definition: QuestDef.h:333
@ QUEST_OBJECTIVE_MONEY
Definition: QuestDef.h:340
@ QUEST_OBJECTIVE_MAX_REPUTATION
Definition: QuestDef.h:339
@ QUEST_OBJECTIVE_AREA_TRIGGER_EXIT
Definition: QuestDef.h:352
@ QUEST_OBJECTIVE_AREATRIGGER
Definition: QuestDef.h:342
@ QUEST_OBJECTIVE_CURRENCY
Definition: QuestDef.h:336
@ QUEST_OBJECTIVE_LEARNSPELL
Definition: QuestDef.h:337
@ QUEST_OBJECTIVE_AREA_TRIGGER_ENTER
Definition: QuestDef.h:351
@ QUEST_OBJECTIVE_GAMEOBJECT
Definition: QuestDef.h:334
@ QUEST_OBJECTIVE_MIN_REPUTATION
Definition: QuestDef.h:338
QuestGiverStatus
Definition: QuestDef.h:153
@ ImportantQuestRewardCompletePOI
@ CovenantCallingRewardCompletePOI
@ ImportantQuestRewardCompleteNoPOI
@ CovenantCallingRewardCompleteNoPOI
QuestObjectiveFlags2
Definition: QuestDef.h:373
@ QUEST_OBJECTIVE_FLAG_2_QUEST_BOUND_ITEM
Definition: QuestDef.h:374
#define MAX_QUEST_LOG_SIZE
Definition: QuestDef.h:44
QuestObjectiveFlags
Definition: QuestDef.h:359
@ QUEST_OBJECTIVE_FLAG_SEQUENCED
Definition: QuestDef.h:361
@ QUEST_OBJECTIVE_FLAG_KILL_PLAYERS_SAME_FACTION
Definition: QuestDef.h:367
@ QUEST_OBJECTIVE_FLAG_IGNORE_SOULBOUND_ITEMS
Definition: QuestDef.h:369
@ QUEST_OBJECTIVE_FLAG_PRESERVE_QUEST_ITEMS
Definition: QuestDef.h:365
@ QUEST_OBJECTIVE_FLAG_HIDDEN
Definition: QuestDef.h:363
@ QUEST_OBJECTIVE_FLAG_PART_OF_PROGRESS_BAR
Definition: QuestDef.h:366
@ QUEST_OBJECTIVE_FLAG_TRACKED_ON_MINIMAP
Definition: QuestDef.h:360
@ QUEST_OBJECTIVE_FLAG_NO_SHARE_PROGRESS
Definition: QuestDef.h:368
@ QUEST_OBJECTIVE_FLAG_OPTIONAL
Definition: QuestDef.h:362
@ QUEST_OBJECTIVE_FLAG_HIDE_CREDIT_MSG
Definition: QuestDef.h:364
QuestFlagsEx
Definition: QuestDef.h:230
@ QUEST_FLAGS_EX_NO_ITEM_REMOVAL
Definition: QuestDef.h:232
@ QUEST_FLAGS_EX_LEGENDARY
Definition: QuestDef.h:240
@ QUEST_FLAGS_EX_DISPLAY_AS_OBJECTIVE
Definition: QuestDef.h:251
@ QUEST_FLAGS_EX_NO_SPELL_COMPLETE_EFFECTS
Definition: QuestDef.h:259
@ QUEST_FLAGS_EX_KEEP_PROGRESS_ON_FACTION_CHANGE
Definition: QuestDef.h:262
@ QUEST_FLAGS_EX_DISPLAY_QUEST_LINE
Definition: QuestDef.h:248
@ QUEST_FLAGS_EX_ACCOUNT
Definition: QuestDef.h:239
@ QUEST_FLAGS_EX_REWARDS_IGNORE_CAPS
Definition: QuestDef.h:255
@ QUEST_FLAGS_EX_DENY_PLAYER_QUESTGIVER
Definition: QuestDef.h:235
@ QUEST_FLAGS_EX_SUPPRESS_SPELL_LEARN_TEXT
Definition: QuestDef.h:250
@ QUEST_FLAGS_EX_AUTO_PUSH
Definition: QuestDef.h:258
@ QUEST_FLAGS_EX_DO_NOT_TOAST_HONOR_REWARD
Definition: QuestDef.h:260
@ QUEST_FLAGS_EX_SUPPRESS_GOSSIP_ACCEPT
Definition: QuestDef.h:234
@ QUEST_FLAGS_EX_DISPLAY_AS_DAILY
Definition: QuestDef.h:247
@ QUEST_FLAGS_EX_INTERNAL_BUILDS_ONLY
Definition: QuestDef.h:249
@ QUEST_FLAGS_EX_SUPPRESS_GREETINGS_ON_ACCEPT
Definition: QuestDef.h:254
@ QUEST_FLAGS_EX_REMOVE_ON_PERIODIC_RESET
Definition: QuestDef.h:238
@ QUEST_FLAGS_EX_PUSH_TEAM_QUEST_USING_MAP_CONTROLLER
Definition: QuestDef.h:263
@ QUEST_FLAGS_EX_NO_CREDIT_FOR_PROXY
Definition: QuestDef.h:246
@ QUEST_FLAGS_EX_UPDATE_ZONE_AURAS
Definition: QuestDef.h:245
@ QUEST_FLAGS_EX_IS_WORLD_QUEST
Definition: QuestDef.h:256
@ QUEST_FLAGS_EX_NONE
Definition: QuestDef.h:231
@ QUEST_FLAGS_EX_DISPLAY_CLASS_CHOICE_REWARDS
Definition: QuestDef.h:236
@ QUEST_FLAGS_EX_DISPLAY_SPEC_CHOICE_REWARDS
Definition: QuestDef.h:237
@ QUEST_FLAGS_EX_NO_ABANDON_ONCE_BEGUN
Definition: QuestDef.h:243
@ QUEST_FLAGS_EX_SUPPRESS_GOSSIP_COMPLETE
Definition: QuestDef.h:233
@ QUEST_FLAGS_EX_REMOVE_ON_WEEKLY_RESET
Definition: QuestDef.h:253
@ QUEST_FLAGS_EX_NO_GUILD_XP
Definition: QuestDef.h:241
@ QUEST_FLAGS_EX_RECAST_ACCEPT_SPELL_ON_LOGIN
Definition: QuestDef.h:244
@ QUEST_FLAGS_EX_NOT_IGNORABLE
Definition: QuestDef.h:257
@ QUEST_FLAGS_EX_RESET_CACHE_ON_ACCEPT
Definition: QuestDef.h:242
@ QUEST_FLAGS_EX_KEEP_REPEATABLE_QUEST_ON_FACTION_CHANGE
Definition: QuestDef.h:261
@ QUEST_FLAGS_EX_ALLOW_ALL_IN_GARRISON
Definition: QuestDef.h:252
QuestStatus
Definition: QuestDef.h:141
@ QUEST_STATUS_REWARDED
Definition: QuestDef.h:148
@ QUEST_STATUS_FAILED
Definition: QuestDef.h:147
@ QUEST_STATUS_INCOMPLETE
Definition: QuestDef.h:145
@ QUEST_STATUS_NONE
Definition: QuestDef.h:142
@ MAX_QUEST_STATUS
Definition: QuestDef.h:149
@ QUEST_STATUS_COMPLETE
Definition: QuestDef.h:143
QuestFlagsEx2
Definition: QuestDef.h:267
@ QUEST_FLAGS_EX2_HIDE_REQUIRED_ITEMS_PRE_TURN_IN
Definition: QuestDef.h:291
@ QUEST_FLAGS_EX2_DISPLAY_TIME_REMAINING
Definition: QuestDef.h:285
@ QUEST_FLAGS_EX2_RESET_ON_GAME_MILESTONE
Definition: QuestDef.h:268
@ QUEST_FLAGS_EX2_NOT_REPLAYABLE
Definition: QuestDef.h:271
@ QUEST_FLAGS_EX2_AWARD_HIGHEST_PROFESSION
Definition: QuestDef.h:270
@ QUEST_FLAGS_EX2_HIDE_REQUIRED_ITEMS_ON_TURN_IN
Definition: QuestDef.h:288
@ QUEST_FLAGS_EX2_SUPPRESS_GREETINGS_ON_COMPLETE
Definition: QuestDef.h:287
@ QUEST_FLAGS_EX2_SKIP_DISABLED_CHECK
Definition: QuestDef.h:282
@ QUEST_FLAGS_EX2_ENFORCE_MAXIMUM_QUEST_LEVEL
Definition: QuestDef.h:283
@ QUEST_FLAGS_EX2_HIDE_TASK_ON_MAIN_MAP
Definition: QuestDef.h:280
@ QUEST_FLAGS_EX2_NO_REPLAY_REWARDS
Definition: QuestDef.h:272
@ QUEST_FLAGS_EX2_DISABLE_WAYPOINT_PATHING
Definition: QuestDef.h:273
@ QUEST_FLAGS_EX2_IGNORE_SOULBOUND_ITEMS
Definition: QuestDef.h:289
@ QUEST_FLAGS_EX2_BONUS_LOOT_ALWAYS
Definition: QuestDef.h:279
@ QUEST_FLAGS_EX2_RESET_ON_MYTHIC_PLUS_SEASON
Definition: QuestDef.h:274
@ QUEST_FLAGS_EX2_FORCE_STARTING_LOC_ON_ZONE_MAP
Definition: QuestDef.h:277
@ QUEST_FLAGS_EX2_WAR_MODE_REWARDS_OPT_OUT
Definition: QuestDef.h:269
@ QUEST_FLAGS_EX2_CONTENT_ALERT
Definition: QuestDef.h:284
@ QUEST_FLAGS_EX2_RESET_ON_PVP_SEASON
Definition: QuestDef.h:275
@ QUEST_FLAGS_EX2_DONT_DEFER_START_EFFECTS
Definition: QuestDef.h:290
@ QUEST_FLAGS_EX2_HIDE_TASK_IN_TRACKER
Definition: QuestDef.h:281
@ QUEST_FLAGS_EX2_CLEAR_TASK_PROGRESS_WHEN_ABANDONED
Definition: QuestDef.h:286
@ QUEST_FLAGS_EX2_ENABLE_OVERRIDE_SORT_ORDER
Definition: QuestDef.h:276
@ QUEST_FLAGS_EX2_BONUS_LOOT_NEVER
Definition: QuestDef.h:278
QuestFlags
Definition: QuestDef.h:192
@ QUEST_FLAGS_DISABLE_COMPLETION_TEXT
Definition: QuestDef.h:212
@ QUEST_FLAGS_FLAGS_PVP
Definition: QuestDef.h:207
@ QUEST_FLAGS_DAILY
Definition: QuestDef.h:206
@ QUEST_FLAGS_NONE
Definition: QuestDef.h:193
@ QUEST_FLAGS_HIDE_REWARD_POI
Definition: QuestDef.h:199
@ QUEST_FLAGS_AUTO_COMPLETE
Definition: QuestDef.h:210
@ QUEST_FLAGS_REMOVE_SURPLUS_ITEMS
Definition: QuestDef.h:219
@ QUEST_FLAGS_LAUNCH_GOSSIP_ACCEPT
Definition: QuestDef.h:223
@ QUEST_FLAGS_DEPRECATED
Definition: QuestDef.h:208
@ QUEST_FLAGS_WEEKLY
Definition: QuestDef.h:209
@ QUEST_FLAGS_DISPLAY_ITEM_IN_TRACKER
Definition: QuestDef.h:211
@ QUEST_FLAGS_HAS_CONDITION
Definition: QuestDef.h:198
@ QUEST_FLAGS_COMPLETION_AREA_TRIGGER
Definition: QuestDef.h:196
@ QUEST_FLAGS_RAID_GROUP_OK
Definition: QuestDef.h:200
@ QUEST_FLAGS_AUTO_ACCEPT
Definition: QuestDef.h:213
@ QUEST_FLAGS_UPDATE_PHASESHIFT
Definition: QuestDef.h:216
@ QUEST_FLAGS_COMPLETION_NO_DEATH
Definition: QuestDef.h:194
@ QUEST_FLAGS_SOR_WHITELIST
Definition: QuestDef.h:217
@ QUEST_FLAGS_HIDE_REWARD
Definition: QuestDef.h:203
@ QUEST_FLAGS_WAR_MODE_REWARDS_OPT_IN
Definition: QuestDef.h:201
@ QUEST_FLAGS_SHOW_ITEM_WHEN_COMPLETED
Definition: QuestDef.h:222
@ QUEST_FLAGS_PORTRAIT_IN_QUEST_LOG
Definition: QuestDef.h:221
@ QUEST_FLAGS_SHARABLE
Definition: QuestDef.h:197
@ QUEST_FLAGS_PLAYER_CAST_COMPLETE
Definition: QuestDef.h:215
@ QUEST_FLAGS_DEPRECATE_REPUTATION
Definition: QuestDef.h:205
@ QUEST_FLAGS_COMPLETION_EVENT
Definition: QuestDef.h:195
@ QUEST_FLAGS_ITEMS_GLOW_WHEN_COMPLETE
Definition: QuestDef.h:224
@ QUEST_FLAGS_LAUNCH_GOSSIP_COMPLETE
Definition: QuestDef.h:218
@ QUEST_FLAGS_FAIL_ON_LOGOUT
Definition: QuestDef.h:225
@ QUEST_FLAGS_WELL_KNOWN
Definition: QuestDef.h:220
@ QUEST_FLAGS_PLAYER_CAST_ACCEPT
Definition: QuestDef.h:214
@ QUEST_FLAGS_NO_MONEY_FOR_XP
Definition: QuestDef.h:202
@ QUEST_FLAGS_TRACKING_EVENT
Definition: QuestDef.h:204
QuestSpecialFlags
Definition: QuestDef.h:295
@ QUEST_SPECIAL_FLAGS_SEQUENCED_OBJECTIVES
Definition: QuestDef.h:307
@ QUEST_SPECIAL_FLAGS_AUTO_ACCEPT
Definition: QuestDef.h:300
@ QUEST_SPECIAL_FLAGS_REPEATABLE
Definition: QuestDef.h:298
@ QUEST_SPECIAL_FLAGS_DB_ALLOWED
Definition: QuestDef.h:305
@ QUEST_SPECIAL_FLAGS_AUTO_PUSH_TO_PARTY
Definition: QuestDef.h:299
@ QUEST_SPECIAL_FLAGS_DF_QUEST
Definition: QuestDef.h:301
@ QUEST_SPECIAL_FLAGS_NONE
Definition: QuestDef.h:296
@ QUEST_SPECIAL_FLAGS_MONTHLY
Definition: QuestDef.h:302
@ QUEST_SORT_LOVE_IS_IN_THE_AIR
@ QUEST_SORT_SPECIAL
@ QUEST_SORT_BREWFEST
@ QUEST_SORT_NOBLEGARDEN
@ QUEST_SORT_MIDSUMMER
@ QUEST_SORT_LUNAR_FESTIVAL
@ QUEST_SORT_SEASONAL
Class used to access individual fields of database query result.
Definition: Field.h:90
int32 GetRewArenaPoints() const
Definition: QuestDef.h:609
std::string _areaDescription
Definition: QuestDef.h:784
std::vector< QuestConditionalText > _conditionalRequestItemsText
Definition: QuestDef.h:805
std::string _portraitTurnInName
Definition: QuestDef.h:788
float GetXPMultiplier() const
Definition: QuestDef.h:611
uint32 GetRewSpell() const
Definition: QuestDef.h:639
uint16 GetEventIdForQuest() const
Definition: QuestDef.h:713
uint32 GetSpecialFlags() const
Definition: QuestDef.h:660
Trinity::unique_weak_ptr< Quest > _weakRef
Definition: QuestDef.h:835
uint32 GetFlagsEx2() const
Definition: QuestDef.h:659
uint32 GetRewMailSenderEntry() const
Definition: QuestDef.h:642
uint32 GetRewTitle() const
Definition: QuestDef.h:643
std::string const & GetQuestCompletionLog() const
Definition: QuestDef.h:625
std::vector< uint32 > DependentBreadcrumbQuests
Definition: QuestDef.h:726
uint32 GetRewardSkillId() const
Definition: QuestDef.h:663
uint32 GetSoundAccept() const
Definition: QuestDef.h:648
uint32 GetArtifactXPDifficulty() const
Definition: QuestDef.h:635
std::string const & GetPortraitGiverName() const
Definition: QuestDef.h:628
int32 GetQuestSessionBonus() const
Definition: QuestDef.h:669
uint32 GetRewMailTemplateId() const
Definition: QuestDef.h:640
bool HasQuestObjectiveType(QuestObjectiveType type) const
Definition: QuestDef.h:575
std::string const & GetPortraitTurnInName() const
Definition: QuestDef.h:630
bool HasSpecialFlag(QuestSpecialFlags flag) const
Definition: QuestDef.h:573
Trinity::RaceMask< uint64 > _allowableRaces
Definition: QuestDef.h:776
float GetArtifactXPMultiplier() const
Definition: QuestDef.h:636
uint32 GetMaxLevel() const
Definition: QuestDef.h:592
std::string const & GetRequestItemsText() const
Definition: QuestDef.h:623
int32 GetRequiredMaxRepValue() const
Definition: QuestDef.h:601
float GetPOIy() const
Definition: QuestDef.h:646
int32 GetRequiredMinRepValue() const
Definition: QuestDef.h:599
bool IsUnavailable() const
Definition: QuestDef.h:581
std::string _questDescription
Definition: QuestDef.h:783
int32 GetExpansion() const
Definition: QuestDef.h:667
std::vector< QuestConditionalText > const & GetConditionalQuestCompletionLog() const
Definition: QuestDef.h:626
uint32 GetContentTuningId() const
Definition: QuestDef.h:590
uint32 GetQuestPackageID() const
Definition: QuestDef.h:589
std::string _portraitGiverText
Definition: QuestDef.h:785
uint32 GetRewardReputationMask() const
Definition: QuestDef.h:665
uint32 GetQuestGiverPortrait() const
Definition: QuestDef.h:670
uint32 GetPOIContinent() const
Definition: QuestDef.h:644
uint32 GetSrcItemCount() const
Definition: QuestDef.h:614
uint32 GetQuestTurnInPortrait() const
Definition: QuestDef.h:673
bool IsDFQuest() const
Definition: QuestDef.h:681
QuestObjectives Objectives
Definition: QuestDef.h:702
uint32 GetXPDifficulty() const
Definition: QuestDef.h:610
bool IsPushedToPartyOnAccept() const
Definition: QuestDef.h:682
std::string _requestItemsText
Definition: QuestDef.h:802
uint32 GetSrcSpell() const
Definition: QuestDef.h:615
bool IsRepeatable() const
Definition: QuestDef.h:654
int32 GetZoneOrSort() const
Definition: QuestDef.h:591
int64 GetLimitTime() const
Definition: QuestDef.h:603
int32 GetManagedWorldStateId() const
Definition: QuestDef.h:668
uint32 _rewardReputationMask
Definition: QuestDef.h:771
uint32 GetRewKillHonor() const
Definition: QuestDef.h:634
std::bitset< MAX_QUEST_OBJECTIVE_TYPE > _usedQuestObjectiveTypes
Definition: QuestDef.h:832
std::vector< QuestConditionalText > _conditionalQuestDescription
Definition: QuestDef.h:792
uint32 GetArtifactCategoryId() const
Definition: QuestDef.h:637
uint32 GetRequiredMinRepFaction() const
Definition: QuestDef.h:598
std::string _portraitTurnInText
Definition: QuestDef.h:787
uint32 GetFlags() const
Definition: QuestDef.h:657
int32 GetPrevQuestId() const
Definition: QuestDef.h:604
std::string const & GetLogTitle() const
Definition: QuestDef.h:616
uint32 GetQuestType() const
Definition: QuestDef.h:588
std::vector< uint32 > DependentPreviousQuests
Definition: QuestDef.h:725
uint32 GetQuestId() const
Definition: QuestDef.h:587
std::string _logTitle
Definition: QuestDef.h:781
std::string _logDescription
Definition: QuestDef.h:782
uint32 GetRequiredSkillValue() const
Definition: QuestDef.h:597
std::string _portraitGiverName
Definition: QuestDef.h:786
uint32 GetIncompleteEmoteDelay() const
Definition: QuestDef.h:652
std::string const & GetPortraitGiverText() const
Definition: QuestDef.h:627
bool HasFlagEx2(QuestFlagsEx2 flag) const
Definition: QuestDef.h:571
uint32 GetRewMailDelaySecs() const
Definition: QuestDef.h:641
bool IsDaily() const
Definition: QuestDef.h:674
uint32 GetQuestInfoID() const
Definition: QuestDef.h:593
int32 GetExclusiveGroup() const
Definition: QuestDef.h:606
std::vector< QuestConditionalText > const & GetConditionalOfferRewardText() const
Definition: QuestDef.h:622
uint32 GetCompleteEmoteDelay() const
Definition: QuestDef.h:653
std::vector< QuestConditionalText > _conditionalQuestCompletionLog
Definition: QuestDef.h:795
int32 GetBreadcrumbForQuestId() const
Definition: QuestDef.h:607
int32 GetQuestGiverPortraitMount() const
Definition: QuestDef.h:671
bool IsWorldQuest() const
Definition: QuestDef.h:578
std::array< WorldPacket, TOTAL_LOCALES > QueryData
Definition: QuestDef.h:727
std::string const & GetPortraitTurnInText() const
Definition: QuestDef.h:629
uint32 GetFlagsEx() const
Definition: QuestDef.h:658
uint32 GetAreaGroupID() const
Definition: QuestDef.h:662
std::string const & GetOfferRewardText() const
Definition: QuestDef.h:621
void SetEventIdForQuest(uint16 eventId)
Definition: QuestDef.h:712
int32 GetQuestGiverPortraitModelSceneId() const
Definition: QuestDef.h:672
std::vector< QuestConditionalText > const & GetConditionalRequestItemsText() const
Definition: QuestDef.h:624
uint32 GetSoundTurnIn() const
Definition: QuestDef.h:649
Trinity::unique_weak_ptr< Quest > GetWeakPtr() const
Definition: QuestDef.h:723
std::string const & GetLogDescription() const
Definition: QuestDef.h:617
void SetSpecialFlag(QuestSpecialFlags flag)
Definition: QuestDef.h:574
uint32 GetScriptId() const
Definition: QuestDef.h:661
uint32 GetRewItemsCount() const
Definition: QuestDef.h:709
std::string const & GetAreaDescription() const
Definition: QuestDef.h:620
float GetMoneyMultiplier() const
Definition: QuestDef.h:612
uint32 GetRequiredSkill() const
Definition: QuestDef.h:596
Trinity::RaceMask< uint64 > GetAllowableRaces() const
Definition: QuestDef.h:595
uint32 GetRewChoiceItemsCount() const
Definition: QuestDef.h:708
uint32 GetIncompleteEmote() const
Definition: QuestDef.h:650
uint32 GetRewHonor() const
Definition: QuestDef.h:633
uint32 GetSrcItemId() const
Definition: QuestDef.h:613
bool IsWeekly() const
Definition: QuestDef.h:675
uint32 GetNextQuestId() const
Definition: QuestDef.h:605
std::vector< QuestConditionalText > _conditionalOfferRewardText
Definition: QuestDef.h:811
bool IsSeasonal() const
Definition: QuestDef.h:677
bool IsDailyOrWeekly() const
Definition: QuestDef.h:678
int32 GetTreasurePickerId() const
Definition: QuestDef.h:666
bool IsAutoPush() const
Definition: QuestDef.h:577
std::string _questCompletionLog
Definition: QuestDef.h:789
uint32 GetRewMoneyDifficulty() const
Definition: QuestDef.h:632
float GetPOIx() const
Definition: QuestDef.h:645
uint32 GetCompleteEmote() const
Definition: QuestDef.h:651
QuestObjectives const & GetObjectives() const
Definition: QuestDef.h:631
bool HasFlagEx(QuestFlagsEx flag) const
Definition: QuestDef.h:570
uint32 GetRewCurrencyCount() const
Definition: QuestDef.h:710
std::string const & GetQuestDescription() const
Definition: QuestDef.h:618
bool IsMonthly() const
Definition: QuestDef.h:676
uint32 GetAllowableClasses() const
Definition: QuestDef.h:594
bool HasFlag(QuestFlags flag) const
Definition: QuestDef.h:569
std::string _offerRewardText
Definition: QuestDef.h:808
uint32 GetRewardSkillPoints() const
Definition: QuestDef.h:664
std::vector< QuestRewardDisplaySpell > RewardDisplaySpell
Definition: QuestDef.h:687
uint32 GetPOIPriority() const
Definition: QuestDef.h:647
std::vector< QuestConditionalText > const & GetConditionalQuestDescription() const
Definition: QuestDef.h:619
uint32 GetRequiredMaxRepFaction() const
Definition: QuestDef.h:600
uint32 GetNextQuestInChain() const
Definition: QuestDef.h:608
uint32 GetSuggestedPlayers() const
Definition: QuestDef.h:602
Definition: Spell.h:255
STL namespace.
int32 QuestgiverCreatureId
Definition: QuestDef.h:531
std::vector< std::string > Text
Definition: QuestDef.h:532
std::vector< std::string > Greeting
Definition: QuestDef.h:403
uint32 EmoteDelay
Definition: QuestDef.h:393
QuestGreeting(uint16 emoteType, uint32 emoteDelay, std::string text)
Definition: QuestDef.h:397
uint16 EmoteType
Definition: QuestDef.h:392
std::string Text
Definition: QuestDef.h:394
Optional< uint32 > SpellId
Definition: QuestDef.h:437
Optional< uint32 > ConversationId
Definition: QuestDef.h:438
Optional< uint32 > GameEventId
Definition: QuestDef.h:436
bool IsStoringFlag() const
Definition: QuestDef.h:479
static constexpr bool CanAlwaysBeProgressedInRaid(QuestObjectiveType type)
Definition: QuestDef.h:496
QuestObjectiveAction * CompletionEffect
Definition: QuestDef.h:456
int32 ObjectID
Definition: QuestDef.h:449
uint32 Flags2
Definition: QuestDef.h:452
bool IsStoringValue() const
Definition: QuestDef.h:458
std::string Description
Definition: QuestDef.h:454
int8 StorageIndex
Definition: QuestDef.h:448
std::vector< int32 > VisualEffects
Definition: QuestDef.h:455
uint32 Flags
Definition: QuestDef.h:451
uint32 QuestID
Definition: QuestDef.h:446
int32 Amount
Definition: QuestDef.h:450
float ProgressBarWeight
Definition: QuestDef.h:453
std::vector< std::string > Description
Definition: QuestDef.h:426
std::vector< std::string > RewardText
Definition: QuestDef.h:431
std::vector< std::string > CompletionText
Definition: QuestDef.h:421
QuestCompleteSpellType Type
Definition: QuestDef.h:525
QuestRewardDisplaySpell(uint32 spellId, uint32 playerConditionId, QuestCompleteSpellType type)
Definition: QuestDef.h:521
uint32 Timer
Definition: QuestDef.h:843
QuestStatus Status
Definition: QuestDef.h:841
time_t AcceptTime
Definition: QuestDef.h:842
std::vector< std::string > PortraitTurnInText
Definition: QuestDef.h:414
std::vector< std::string > QuestCompletionLog
Definition: QuestDef.h:416
std::vector< std::string > LogTitle
Definition: QuestDef.h:408
std::vector< std::string > PortraitGiverName
Definition: QuestDef.h:413
std::vector< std::string > PortraitTurnInName
Definition: QuestDef.h:415
std::vector< std::string > QuestDescription
Definition: QuestDef.h:410
std::vector< std::string > LogDescription
Definition: QuestDef.h:409
std::vector< std::string > PortraitGiverText
Definition: QuestDef.h:412
std::vector< std::string > AreaDescription
Definition: QuestDef.h:411