18#ifndef TRINITYCORE_QUEST_H
19#define TRINITYCORE_QUEST_H
44#define MAX_QUEST_LOG_SIZE 35
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
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);
564 uint32 MaxMoneyValue()
const;
565 uint32 GetMaxMoneyReward()
const;
567 bool IsImportant()
const;
584 static bool IsTakingQuestEnabled(
uint32 questId);
638 uint32 GetRewMoneyMaxLevel()
const;
655 bool IsAutoAccept()
const;
656 bool IsTurnIn()
const;
679 bool IsRaidQuest(
Difficulty difficulty)
const;
680 bool IsAllowedInRaid(
Difficulty difficulty)
const;
684 bool CanIncreaseRewardedQuestCounters()
const;
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 = { };
715 void InitializeQueryData();
745 float _rewardXPMultiplier = 0.f;
747 float _rewardMoneyMultiplier = 0.f;
753 float _rewardArtifactXPMultiplier = 0.f;
769 int32 _questGiverPortraitModelSceneId = 0;
std::optional< T > Optional
Optional helper class to wrap optional values within.
@ QUEST_ERR_FAILED_EXPANSION
@ QUEST_ERR_FAILED_WRONG_RACE
@ QUEST_ERR_ONLY_ONE_TIMED
@ QUEST_ERR_ALREADY_DONE_DAILY
@ QUEST_ERR_FAILED_LOW_LEVEL
@ QUEST_ERR_FAILED_NOT_ENOUGH_MONEY
@ QUEST_ERR_FAILED_MISSING_ITEMS
@ QUEST_ERR_HAS_IN_PROGRESS
@ PrerequisiteToRecipient
@ NotGarrisonOwnerToRecipient
@ NewPlayerExperienceToRecipient
@ DifferentServerDailyToRecipient
@ WrongCovenantToRecipient
@ WrongFactionToRecipient
std::vector< QuestObjective > QuestObjectives
DEFINE_ENUM_FLAG(QuestGiverStatus)
@ QUEST_TRSKILL_BLACKSMITHING
@ QUEST_TRSKILL_TAILORING
@ QUEST_TRSKILL_HERBALISM
@ QUEST_TRSKILL_JEWELCRAFTING
@ QUEST_TRSKILL_ENGINEERING
@ QUEST_TRSKILL_ENCHANTING
@ QUEST_TRSKILL_LEATHERWORKING
@ QUEST_OBJECTIVE_DEFEATBATTLEPET
@ QUEST_OBJECTIVE_WINPVPPETBATTLES
@ QUEST_OBJECTIVE_INCREASE_REPUTATION
@ MAX_QUEST_OBJECTIVE_TYPE
@ QUEST_OBJECTIVE_HAVE_CURRENCY
@ QUEST_OBJECTIVE_WINPETBATTLEAGAINSTNPC
@ QUEST_OBJECTIVE_MONSTER
@ QUEST_OBJECTIVE_KILL_WITH_LABEL
@ QUEST_OBJECTIVE_CRITERIA_TREE
@ QUEST_OBJECTIVE_OBTAIN_CURRENCY
@ QUEST_OBJECTIVE_PROGRESS_BAR
@ QUEST_OBJECTIVE_PLAYERKILLS
@ QUEST_OBJECTIVE_MAX_REPUTATION
@ QUEST_OBJECTIVE_AREA_TRIGGER_EXIT
@ QUEST_OBJECTIVE_AREATRIGGER
@ QUEST_OBJECTIVE_CURRENCY
@ QUEST_OBJECTIVE_LEARNSPELL
@ QUEST_OBJECTIVE_AREA_TRIGGER_ENTER
@ QUEST_OBJECTIVE_GAMEOBJECT
@ QUEST_OBJECTIVE_MIN_REPUTATION
@ JourneyRewardCompletePOI
@ ImportantQuestRewardCompletePOI
@ CovenantCallingRewardCompletePOI
@ LegendaryRewardCompleteNoPOI
@ LegendaryRewardCompletePOI
@ ImportantQuestRewardCompleteNoPOI
@ TrivialRepeatableTurnin
@ JourneyRewardCompleteNoPOI
@ CovenantCallingRewardCompleteNoPOI
@ QUEST_OBJECTIVE_FLAG_2_QUEST_BOUND_ITEM
#define MAX_QUEST_LOG_SIZE
@ QUEST_OBJECTIVE_FLAG_SEQUENCED
@ QUEST_OBJECTIVE_FLAG_KILL_PLAYERS_SAME_FACTION
@ QUEST_OBJECTIVE_FLAG_IGNORE_SOULBOUND_ITEMS
@ QUEST_OBJECTIVE_FLAG_PRESERVE_QUEST_ITEMS
@ QUEST_OBJECTIVE_FLAG_HIDDEN
@ QUEST_OBJECTIVE_FLAG_PART_OF_PROGRESS_BAR
@ QUEST_OBJECTIVE_FLAG_TRACKED_ON_MINIMAP
@ QUEST_OBJECTIVE_FLAG_NO_SHARE_PROGRESS
@ QUEST_OBJECTIVE_FLAG_OPTIONAL
@ QUEST_OBJECTIVE_FLAG_HIDE_CREDIT_MSG
@ QUEST_FLAGS_EX_NO_ITEM_REMOVAL
@ QUEST_FLAGS_EX_LEGENDARY
@ QUEST_FLAGS_EX_DISPLAY_AS_OBJECTIVE
@ QUEST_FLAGS_EX_NO_SPELL_COMPLETE_EFFECTS
@ QUEST_FLAGS_EX_KEEP_PROGRESS_ON_FACTION_CHANGE
@ QUEST_FLAGS_EX_DISPLAY_QUEST_LINE
@ QUEST_FLAGS_EX_REWARDS_IGNORE_CAPS
@ QUEST_FLAGS_EX_DENY_PLAYER_QUESTGIVER
@ QUEST_FLAGS_EX_SUPPRESS_SPELL_LEARN_TEXT
@ QUEST_FLAGS_EX_AUTO_PUSH
@ QUEST_FLAGS_EX_DO_NOT_TOAST_HONOR_REWARD
@ QUEST_FLAGS_EX_SUPPRESS_GOSSIP_ACCEPT
@ QUEST_FLAGS_EX_DISPLAY_AS_DAILY
@ QUEST_FLAGS_EX_INTERNAL_BUILDS_ONLY
@ QUEST_FLAGS_EX_SUPPRESS_GREETINGS_ON_ACCEPT
@ QUEST_FLAGS_EX_REMOVE_ON_PERIODIC_RESET
@ QUEST_FLAGS_EX_PUSH_TEAM_QUEST_USING_MAP_CONTROLLER
@ QUEST_FLAGS_EX_NO_CREDIT_FOR_PROXY
@ QUEST_FLAGS_EX_UPDATE_ZONE_AURAS
@ QUEST_FLAGS_EX_IS_WORLD_QUEST
@ QUEST_FLAGS_EX_DISPLAY_CLASS_CHOICE_REWARDS
@ QUEST_FLAGS_EX_DISPLAY_SPEC_CHOICE_REWARDS
@ QUEST_FLAGS_EX_NO_ABANDON_ONCE_BEGUN
@ QUEST_FLAGS_EX_SUPPRESS_GOSSIP_COMPLETE
@ QUEST_FLAGS_EX_REMOVE_ON_WEEKLY_RESET
@ QUEST_FLAGS_EX_NO_GUILD_XP
@ QUEST_FLAGS_EX_RECAST_ACCEPT_SPELL_ON_LOGIN
@ QUEST_FLAGS_EX_NOT_IGNORABLE
@ QUEST_FLAGS_EX_RESET_CACHE_ON_ACCEPT
@ QUEST_FLAGS_EX_KEEP_REPEATABLE_QUEST_ON_FACTION_CHANGE
@ QUEST_FLAGS_EX_ALLOW_ALL_IN_GARRISON
@ QUEST_STATUS_INCOMPLETE
@ QUEST_FLAGS_EX2_HIDE_REQUIRED_ITEMS_PRE_TURN_IN
@ QUEST_FLAGS_EX2_DISPLAY_TIME_REMAINING
@ QUEST_FLAGS_EX2_RESET_ON_GAME_MILESTONE
@ QUEST_FLAGS_EX2_NOT_REPLAYABLE
@ QUEST_FLAGS_EX2_AWARD_HIGHEST_PROFESSION
@ QUEST_FLAGS_EX2_HIDE_REQUIRED_ITEMS_ON_TURN_IN
@ QUEST_FLAGS_EX2_SUPPRESS_GREETINGS_ON_COMPLETE
@ QUEST_FLAGS_EX2_SKIP_DISABLED_CHECK
@ QUEST_FLAGS_EX2_ENFORCE_MAXIMUM_QUEST_LEVEL
@ QUEST_FLAGS_EX2_HIDE_TASK_ON_MAIN_MAP
@ QUEST_FLAGS_EX2_NO_REPLAY_REWARDS
@ QUEST_FLAGS_EX2_DISABLE_WAYPOINT_PATHING
@ QUEST_FLAGS_EX2_IGNORE_SOULBOUND_ITEMS
@ QUEST_FLAGS_EX2_BONUS_LOOT_ALWAYS
@ QUEST_FLAGS_EX2_RESET_ON_MYTHIC_PLUS_SEASON
@ QUEST_FLAGS_EX2_FORCE_STARTING_LOC_ON_ZONE_MAP
@ QUEST_FLAGS_EX2_WAR_MODE_REWARDS_OPT_OUT
@ QUEST_FLAGS_EX2_CONTENT_ALERT
@ QUEST_FLAGS_EX2_RESET_ON_PVP_SEASON
@ QUEST_FLAGS_EX2_DONT_DEFER_START_EFFECTS
@ QUEST_FLAGS_EX2_HIDE_TASK_IN_TRACKER
@ QUEST_FLAGS_EX2_CLEAR_TASK_PROGRESS_WHEN_ABANDONED
@ QUEST_FLAGS_EX2_ENABLE_OVERRIDE_SORT_ORDER
@ QUEST_FLAGS_EX2_BONUS_LOOT_NEVER
@ QUEST_FLAGS_DISABLE_COMPLETION_TEXT
@ QUEST_FLAGS_HIDE_REWARD_POI
@ QUEST_FLAGS_AUTO_COMPLETE
@ QUEST_FLAGS_REMOVE_SURPLUS_ITEMS
@ QUEST_FLAGS_LAUNCH_GOSSIP_ACCEPT
@ QUEST_FLAGS_DISPLAY_ITEM_IN_TRACKER
@ QUEST_FLAGS_HAS_CONDITION
@ QUEST_FLAGS_COMPLETION_AREA_TRIGGER
@ QUEST_FLAGS_RAID_GROUP_OK
@ QUEST_FLAGS_AUTO_ACCEPT
@ QUEST_FLAGS_UPDATE_PHASESHIFT
@ QUEST_FLAGS_COMPLETION_NO_DEATH
@ QUEST_FLAGS_SOR_WHITELIST
@ QUEST_FLAGS_HIDE_REWARD
@ QUEST_FLAGS_WAR_MODE_REWARDS_OPT_IN
@ QUEST_FLAGS_SHOW_ITEM_WHEN_COMPLETED
@ QUEST_FLAGS_PORTRAIT_IN_QUEST_LOG
@ QUEST_FLAGS_PLAYER_CAST_COMPLETE
@ QUEST_FLAGS_DEPRECATE_REPUTATION
@ QUEST_FLAGS_COMPLETION_EVENT
@ QUEST_FLAGS_ITEMS_GLOW_WHEN_COMPLETE
@ QUEST_FLAGS_LAUNCH_GOSSIP_COMPLETE
@ QUEST_FLAGS_FAIL_ON_LOGOUT
@ QUEST_FLAGS_PLAYER_CAST_ACCEPT
@ QUEST_FLAGS_NO_MONEY_FOR_XP
@ QUEST_FLAGS_TRACKING_EVENT
@ QUEST_SPECIAL_FLAGS_SEQUENCED_OBJECTIVES
@ QUEST_SPECIAL_FLAGS_AUTO_ACCEPT
@ QUEST_SPECIAL_FLAGS_REPEATABLE
@ QUEST_SPECIAL_FLAGS_DB_ALLOWED
@ QUEST_SPECIAL_FLAGS_AUTO_PUSH_TO_PARTY
@ QUEST_SPECIAL_FLAGS_DF_QUEST
@ QUEST_SPECIAL_FLAGS_NONE
@ QUEST_SPECIAL_FLAGS_MONTHLY
@ QUEST_SORT_LOVE_IS_IN_THE_AIR
@ QUEST_SORT_LUNAR_FESTIVAL
Class used to access individual fields of database query result.
int32 GetRewArenaPoints() const
std::string _areaDescription
std::vector< QuestConditionalText > _conditionalRequestItemsText
std::string _portraitTurnInName
float GetXPMultiplier() const
uint32 GetRewSpell() const
uint16 GetEventIdForQuest() const
uint32 GetSpecialFlags() const
Trinity::unique_weak_ptr< Quest > _weakRef
uint32 GetFlagsEx2() const
uint32 GetRewMailSenderEntry() const
uint32 GetRewTitle() const
std::string const & GetQuestCompletionLog() const
std::vector< uint32 > DependentBreadcrumbQuests
uint32 GetRewardSkillId() const
uint32 GetSoundAccept() const
uint32 GetArtifactXPDifficulty() const
std::string const & GetPortraitGiverName() const
int32 GetQuestSessionBonus() const
uint32 GetRewMailTemplateId() const
bool HasQuestObjectiveType(QuestObjectiveType type) const
std::string const & GetPortraitTurnInName() const
bool HasSpecialFlag(QuestSpecialFlags flag) const
Trinity::RaceMask< uint64 > _allowableRaces
float GetArtifactXPMultiplier() const
uint32 GetMaxLevel() const
std::string const & GetRequestItemsText() const
int32 GetRequiredMaxRepValue() const
int32 GetRequiredMinRepValue() const
bool IsUnavailable() const
std::string _questDescription
int32 GetExpansion() const
std::vector< QuestConditionalText > const & GetConditionalQuestCompletionLog() const
uint32 GetContentTuningId() const
uint32 GetQuestPackageID() const
std::string _portraitGiverText
uint32 GetRewardReputationMask() const
uint32 GetQuestGiverPortrait() const
uint32 GetPOIContinent() const
uint32 GetSrcItemCount() const
uint32 GetQuestTurnInPortrait() const
QuestObjectives Objectives
uint32 GetXPDifficulty() const
bool IsPushedToPartyOnAccept() const
std::string _requestItemsText
uint32 GetSrcSpell() const
bool IsRepeatable() const
int32 GetZoneOrSort() const
int64 GetLimitTime() const
int32 GetManagedWorldStateId() const
uint32 _rewardReputationMask
uint32 GetRewKillHonor() const
std::bitset< MAX_QUEST_OBJECTIVE_TYPE > _usedQuestObjectiveTypes
std::vector< QuestConditionalText > _conditionalQuestDescription
uint32 GetArtifactCategoryId() const
uint32 GetRequiredMinRepFaction() const
std::string _portraitTurnInText
int32 GetPrevQuestId() const
std::string const & GetLogTitle() const
uint32 GetQuestType() const
std::vector< uint32 > DependentPreviousQuests
uint32 GetQuestId() const
std::string _logDescription
uint32 GetRequiredSkillValue() const
std::string _portraitGiverName
uint32 GetIncompleteEmoteDelay() const
std::string const & GetPortraitGiverText() const
bool HasFlagEx2(QuestFlagsEx2 flag) const
uint32 GetRewMailDelaySecs() const
uint32 GetQuestInfoID() const
int32 GetExclusiveGroup() const
std::vector< QuestConditionalText > const & GetConditionalOfferRewardText() const
uint32 GetCompleteEmoteDelay() const
std::vector< QuestConditionalText > _conditionalQuestCompletionLog
int32 GetBreadcrumbForQuestId() const
int32 GetQuestGiverPortraitMount() const
bool IsWorldQuest() const
std::array< WorldPacket, TOTAL_LOCALES > QueryData
std::string const & GetPortraitTurnInText() const
uint32 GetFlagsEx() const
uint32 GetAreaGroupID() const
std::string const & GetOfferRewardText() const
void SetEventIdForQuest(uint16 eventId)
int32 GetQuestGiverPortraitModelSceneId() const
std::vector< QuestConditionalText > const & GetConditionalRequestItemsText() const
uint32 GetSoundTurnIn() const
Trinity::unique_weak_ptr< Quest > GetWeakPtr() const
std::string const & GetLogDescription() const
void SetSpecialFlag(QuestSpecialFlags flag)
uint32 GetScriptId() const
uint32 GetRewItemsCount() const
std::string const & GetAreaDescription() const
float GetMoneyMultiplier() const
uint32 GetRequiredSkill() const
Trinity::RaceMask< uint64 > GetAllowableRaces() const
uint32 GetRewChoiceItemsCount() const
uint32 GetIncompleteEmote() const
uint32 GetRewHonor() const
uint32 GetSrcItemId() const
uint32 GetNextQuestId() const
std::vector< QuestConditionalText > _conditionalOfferRewardText
bool IsDailyOrWeekly() const
int32 GetTreasurePickerId() const
std::string _questCompletionLog
uint32 GetRewMoneyDifficulty() const
uint32 GetCompleteEmote() const
QuestObjectives const & GetObjectives() const
bool HasFlagEx(QuestFlagsEx flag) const
uint32 GetRewCurrencyCount() const
std::string const & GetQuestDescription() const
uint32 GetAllowableClasses() const
bool HasFlag(QuestFlags flag) const
std::string _offerRewardText
uint32 GetRewardSkillPoints() const
std::vector< QuestRewardDisplaySpell > RewardDisplaySpell
uint32 GetPOIPriority() const
std::vector< QuestConditionalText > const & GetConditionalQuestDescription() const
uint32 GetRequiredMaxRepFaction() const
uint32 GetNextQuestInChain() const
uint32 GetSuggestedPlayers() const
int32 QuestgiverCreatureId
std::vector< std::string > Text
std::vector< std::string > Greeting
QuestGreeting(uint16 emoteType, uint32 emoteDelay, std::string text)
Optional< uint32 > SpellId
Optional< uint32 > ConversationId
Optional< uint32 > GameEventId
bool IsStoringFlag() const
static constexpr bool CanAlwaysBeProgressedInRaid(QuestObjectiveType type)
QuestObjectiveAction * CompletionEffect
bool IsStoringValue() const
std::vector< int32 > VisualEffects
std::vector< std::string > Description
std::vector< std::string > RewardText
std::vector< std::string > CompletionText
QuestCompleteSpellType Type
QuestRewardDisplaySpell(uint32 spellId, uint32 playerConditionId, QuestCompleteSpellType type)
QuestRewardDisplaySpell()
std::vector< std::string > PortraitTurnInText
std::vector< std::string > QuestCompletionLog
std::vector< std::string > LogTitle
std::vector< std::string > PortraitGiverName
std::vector< std::string > PortraitTurnInName
std::vector< std::string > QuestDescription
std::vector< std::string > LogDescription
std::vector< std::string > PortraitGiverText
std::vector< std::string > AreaDescription