129 TC_LOG_ERROR(
"sql.sql",
"Table `quest_details` has non-existing Emote{} ({}) set for quest {}. Skipped.", 1+i, fields[1+i].GetUInt16(), fields[0].GetUInt32());
146 TC_LOG_ERROR(
"sql.sql",
"Table `quest_request_items` has non-existing EmoteOnComplete ({}) set for quest {}.",
_emoteOnComplete, fields[0].GetUInt32());
149 TC_LOG_ERROR(
"sql.sql",
"Table `quest_request_items` has non-existing EmoteOnIncomplete ({}) set for quest {}.",
_emoteOnIncomplete, fields[0].GetUInt32());
160 TC_LOG_ERROR(
"sql.sql",
"Table `quest_offer_reward` has non-existing Emote{} ({}) set for quest {}. Skipped.", 1 + i, fields[1 + i].GetUInt16(), fields[0].GetUInt32());
211 int32 diffFactor = 2 * (quest_level - player->
GetLevel()) + 20;
214 else if (diffFactor > 10)
221 xp = std::max(minScaledXP, xp);
249 displayID = itemTemplate->DisplayInfoID;
261 displayID = itemTemplate->DisplayInfoID;
386 std::string locQuestTitle =
GetTitle();
491 return response.
Move();
499 std::stringstream questTitlePretty;
500 questTitlePretty <<
"[" << level <<
"] " << title;
501 title = questTitlePretty.str();
507 return 5 * ((xp + 2) / 5);
509 return 10 * ((xp + 5) / 10);
511 return 25 * ((xp + 12) / 25);
513 return 50 * ((xp + 25) / 50);
#define RAID_DIFFICULTY_MASK_25MAN
DBCStorage< QuestXPEntry > sQuestXPStore(QuestXPfmt)
DBCStorage< TeamContributionPointsEntry > sTeamContributionPointsStore(TeamContributionPointsfmt)
DBCStorage< EmotesEntry > sEmotesStore(EmotesEntryfmt)
#define TC_LOG_ERROR(filterType__,...)
#define QUEST_REWARDS_COUNT
#define QUEST_ITEM_OBJECTIVES_COUNT
#define QUEST_EMOTE_COUNT
#define QUEST_OBJECTIVES_COUNT
@ QUEST_FLAGS_NO_MONEY_FROM_XP
@ QUEST_FLAGS_HIDDEN_REWARDS
@ QUEST_FLAGS_AUTO_ACCEPT
@ QUEST_FLAGS_AUTOCOMPLETE
#define QUEST_REPUTATIONS_COUNT
#define QUEST_SOURCE_ITEM_IDS_COUNT
#define QUEST_REWARD_CHOICES_COUNT
@ QUEST_SPECIAL_FLAGS_AUTO_ACCEPT
Class used to access individual fields of database query result.
std::string GetString() const
static std::string_view GetLocaleString(std::vector< std::string > const &data, size_t locale)
int32 GetQuestLevel(Quest const *quest) const
uint32 _emoteOnIncomplete
int32 GetRewArenaPoints() const
std::string _areaDescription
uint32 ItemDropQuantity[QUEST_SOURCE_ITEM_IDS_COUNT]
int32 GetRepObjectiveValue() const
bool HasFlag(uint32 flag) const
uint32 DetailsEmote[QUEST_EMOTE_COUNT]
uint32 OfferRewardEmote[QUEST_EMOTE_COUNT]
uint32 GetRewSpell() const
uint32 GetRewMoneyMaxLevel() const
uint32 _requiredSkillPoints
int32 RequiredNpcOrGo[QUEST_OBJECTIVES_COUNT]
WorldPacket BuildQueryData(LocaleConstant loc) const
int32 GetRepObjectiveValue2() const
uint32 GetRepObjectiveFaction() const
uint32 GetXPReward(Player const *player) const
int32 _breadcrumbForQuestId
uint32 RequiredNpcOrGoCount[QUEST_OBJECTIVES_COUNT]
void LoadQuestDetails(Field *fields)
uint32 _requiredFactionId2
static void AddQuestLevelToTitle(std::string &title, int32 level)
static bool IsTakingQuestEnabled(uint32 questId)
uint32 GetRepObjectiveFaction2() const
Quest(Field *questRecord)
uint32 GetCharTitleId() const
uint32 RewardItemIdCount[QUEST_REWARDS_COUNT]
void LoadQuestRequestItems(Field *fields)
uint32 GetMinLevel() const
WorldPacket QueryData[TOTAL_LOCALES]
uint32 _requiredMinRepFaction
std::string const & GetObjectives() const
int32 _requiredMinRepValue
uint32 RewardChoiceItemId[QUEST_REWARD_CHOICES_COUNT]
uint32 _rewChoiceItemsCount
static uint32 RoundXPValue(uint32 xp)
uint32 GetPOIContinent() const
uint32 ItemDrop[QUEST_SOURCE_ITEM_IDS_COUNT]
void LoadQuestMailSender(Field *fields)
int32 RewardFactionValueIdOverride[QUEST_REPUTATIONS_COUNT]
uint32 _rewardXPDifficulty
std::string _requestItemsText
uint32 DetailsEmoteDelay[QUEST_EMOTE_COUNT]
std::string const & GetDetails() const
int32 _requiredFactionValue2
bool IsRepeatable() const
int32 GetZoneOrSort() const
int32 GetQuestLevel() const
float GetRewHonorMultiplier() const
bool IsAutoComplete() const
uint32 GetRewHonorAddition() const
uint32 _requiredFactionId1
uint32 RewardChoiceItemCount[QUEST_REWARD_CHOICES_COUNT]
int32 _requiredMaxRepValue
uint32 GetPlayersSlain() const
void BuildQuestRewards(WorldPackets::Quest::QuestRewards &rewards, Player *player, bool sendHiddenRewards=false) const
std::string const & GetCompletedText() const
uint32 CalculateHonorGain(uint8 level) const
uint32 _requiredMaxRepFaction
uint32 OfferRewardEmoteDelay[QUEST_EMOTE_COUNT]
uint32 GetQuestId() const
uint32 _reqCreatureOrGOcount
std::string ObjectiveText[QUEST_OBJECTIVES_COUNT]
void LoadQuestOfferReward(Field *fields)
uint32 _requiredPlayerKills
bool IsAutoAccept() const
uint32 RequiredItemCount[QUEST_ITEM_OBJECTIVES_COUNT]
uint32 GetPointOpt() const
bool IsRaidQuest(Difficulty difficulty) const
uint32 _rewardDisplaySpell
uint32 RequiredItemId[QUEST_ITEM_OBJECTIVES_COUNT]
int32 GetRewOrReqMoney(Player const *player=nullptr) const
void InitializeQueryData()
std::string const & GetAreaDescription() const
bool IsAllowedInRaid(Difficulty difficulty) const
uint32 GetSrcItemId() const
uint32 RewardFactionId[QUEST_REPUTATIONS_COUNT]
std::string const & GetTitle() const
int32 _requiredFactionValue1
int32 RewardFactionValueId[QUEST_REPUTATIONS_COUNT]
uint32 _rewardMailSenderEntry
int32 GetRewSpellCast() const
std::string _completedText
uint32 RewardItemId[QUEST_REWARDS_COUNT]
uint32 GetBonusTalents() const
std::string _offerRewardText
uint32 GetQuestMethod() const
uint32 _rewardMailTemplateId
void LoadQuestTemplateAddon(Field *fields)
uint32 GetNextQuestInChain() const
bool CanIncreaseRewardedQuestCounters() const
uint32 GetSuggestedPlayers() const
WorldPacket const * Write() override
@ CONFIG_MIN_QUEST_SCALED_XP_RATIO
@ RATE_MONEY_MAX_LEVEL_QUEST
@ CONFIG_QUEST_IGNORE_AUTO_COMPLETE
@ CONFIG_QUEST_IGNORE_RAID
@ CONFIG_QUEST_IGNORE_AUTO_ACCEPT
int32 RewardFactionValueOverride[QUEST_REPUTATIONS_COUNT]
uint32 RewardAmount[QUEST_REWARDS_COUNT]
uint32 ItemDrop[QUEST_SOURCE_ITEM_IDS_COUNT]
uint32 RequiredNpcOrGoCount[QUEST_OBJECTIVES_COUNT]
uint32 RewardDisplaySpell
std::string ObjectiveText[QUEST_OBJECTIVES_COUNT]
uint32 RewardFactionID[QUEST_REPUTATIONS_COUNT]
std::string AreaDescription
uint32 RewardItems[QUEST_REWARDS_COUNT]
uint32 RequiredItemCount[QUEST_ITEM_OBJECTIVES_COUNT]
int32 RequiredFactionValue[PVP_TEAMS_COUNT]
std::string CompletedText
uint32 RequiredPlayerKills
QuestInfoChoiceItem UnfilteredChoiceItems[QUEST_REWARD_CHOICES_COUNT]
int32 RewardFactionValue[QUEST_REPUTATIONS_COUNT]
uint32 RewardXPDifficulty
uint32 RequiredItemId[QUEST_ITEM_OBJECTIVES_COUNT]
int32 RequiredNpcOrGo[QUEST_OBJECTIVES_COUNT]
uint32 RequiredFactionId[PVP_TEAMS_COUNT]
std::array< int32, QUEST_REPUTATIONS_COUNT > RewardFactionValueOverride
std::vector< QuestChoiceItem > RewardItems
std::array< uint32, QUEST_REPUTATIONS_COUNT > RewardFactionID
uint32 RewardDisplaySpell
std::vector< QuestChoiceItem > UnfilteredChoiceItems
std::array< int32, QUEST_REPUTATIONS_COUNT > RewardFactionValue
uint32 RewardXPDifficulty