diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
commit | e59eef5432c7b70679d33f4911c88d0f7d75fd39 (patch) | |
tree | fe9bce9c82496589facec3719b3f2943d8295e76 /src/server/game/Quests | |
parent | 7fb9168d57f378075b0f6692ea7ad822c1d8e43d (diff) |
Core/PacketIO: Updated to 11.0.0
Diffstat (limited to 'src/server/game/Quests')
-rw-r--r-- | src/server/game/Quests/QuestDef.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.h | 97 |
2 files changed, 81 insertions, 40 deletions
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index cfe33834173..8faef90d6dc 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -115,7 +115,7 @@ Quest::Quest(Field* questRecord) _areaGroupID = questRecord[100].GetUInt32(); _limitTime = questRecord[101].GetInt64(); _allowableRaces.RawValue = questRecord[102].GetUInt64(); - _treasurePickerID = questRecord[103].GetInt32(); + _resetByScheduler = questRecord[103].GetBool(); _expansion = questRecord[104].GetInt32(); _managedWorldStateID = questRecord[105].GetInt32(); _questSessionBonus = questRecord[106].GetInt32(); @@ -398,6 +398,11 @@ void Quest::LoadConditionalConditionalQuestCompletionLog(Field* fields) ObjectMgr::AddLocaleString(fields[3].GetStringView(), locale, text.Text); } +void Quest::LoadTreasurePickers(Field* fields) +{ + _treasurePickerID.push_back(fields[1].GetInt32()); +} + uint32 Quest::XPValue(Player const* player) const { return XPValue(player, GetContentTuningId(), _rewardXPDifficulty, _rewardXPMultiplier, _expansion); @@ -487,6 +492,14 @@ bool Quest::IsImportant() const return false; } +bool Quest::IsMeta() const +{ + if (QuestInfoEntry const* questInfo = sQuestInfoStore.LookupEntry(GetQuestInfoID())) + return (questInfo->Modifiers & 0x800) != 0; + + return false; +} + void Quest::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player* player) const { rewards.ChoiceItemCount = GetRewChoiceItemsCount(); @@ -521,8 +534,8 @@ void Quest::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) { - rewards.ItemID[i] = RewardItemId[i]; - rewards.ItemQty[i] = RewardItemCount[i]; + rewards.Items[i].ItemID = RewardItemId[i]; + rewards.Items[i].ItemQty = RewardItemCount[i]; } for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) @@ -535,8 +548,8 @@ void Quest::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) { - rewards.CurrencyID[i] = RewardCurrencyId[i]; - rewards.CurrencyQty[i] = RewardCurrencyCount[i]; + rewards.Currencies[i].CurrencyID = RewardCurrencyId[i]; + rewards.Currencies[i].CurrencyQty = RewardCurrencyCount[i]; } } @@ -779,6 +792,7 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const response.Info.CompleteSoundKitID = GetSoundTurnIn(); response.Info.AreaGroupID = GetAreaGroupID(); response.Info.TimeAllowed = GetLimitTime(); + response.Info.ResetByScheduler = IsResetByScheduler(); response.Write(); response.ShrinkToFit(); diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 39fc4862638..3d34b4d2565 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -154,39 +154,53 @@ enum QuestStatus : uint8 enum class QuestGiverStatus : uint64 { - None = 0x000000000, - Future = 0x000000002, - Trivial = 0x000000004, - TrivialRepeatableTurnin = 0x000000008, - TrivialDailyQuest = 0x000000010, - Reward = 0x000000020, - JourneyReward = 0x000000040, - CovenantCallingReward = 0x000000080, - RepeatableTurnin = 0x000000100, - DailyQuest = 0x000000200, - Quest = 0x000000400, - RewardCompleteNoPOI = 0x000000800, - RewardCompletePOI = 0x000001000, - LegendaryQuest = 0x000002000, - LegendaryRewardCompleteNoPOI = 0x000004000, - LegendaryRewardCompletePOI = 0x000008000, - JourneyQuest = 0x000010000, - JourneyRewardCompleteNoPOI = 0x000020000, - JourneyRewardCompletePOI = 0x000040000, - CovenantCallingQuest = 0x000080000, - CovenantCallingRewardCompleteNoPOI = 0x000100000, - CovenantCallingRewardCompletePOI = 0x000200000, - TrivialLegendaryQuest = 0x000400000, - FutureLegendaryQuest = 0x000800000, - LegendaryReward = 0x001000000, - ImportantReward = 0x002000000, - ImportantQuest = 0x004000000, - TrivialImportantQuest = 0x008000000, - FutureImportantQuest = 0x010000000, - ImportantQuestRewardCompleteNoPOI = 0x020000000, - ImportantQuestRewardCompletePOI = 0x040000000, - TrivialJourneyQuest = 0x080000000, - FutureJourneyQuest = 0x100000000, + None = 0x000000000000, + Future = 0x000000000002, + FutureJourneyQuest = 0x000000000004, + FutureLegendaryQuest = 0x000000000008, + FutureImportantQuest = 0x000000000010, + TrivialRepeatableTurnin = 0x000000000020, + Trivial = 0x000000000040, + TrivialDailyQuest = 0x000000000080, + TrivialRepeatableQuest = 0x000000000100, + TrivialMetaQuest = 0x000000000200, + TrivialJourneyQuest = 0x000000000400, + TrivialLegendaryQuest = 0x000000000800, + TrivialImportantQuest = 0x000000001000, + Reward = 0x000000002000, + RepeatableReward = 0x000000004000, + MetaReward = 0x000000008000, + JourneyReward = 0x000000010000, + CovenantCallingReward = 0x000000020000, + LegendaryReward = 0x000000040000, + ImportantReward = 0x000000080000, + RepeatableTurnin = 0x000000100000, + QuestAccountCompleted = 0x000000200000, + Quest = 0x000000400000, + DailyQuest = 0x000000800000, + RepeatableQuest = 0x000001000000, + MetaQuest = 0x000002000000, + CovenantCallingQuest = 0x000004000000, + JourneyQuestAccountCompleted = 0x000008000000, + JourneyQuest = 0x000010000000, + LegendaryQuestAccountCompleted = 0x000020000000, + LegendaryQuest = 0x000040000000, + ImportantQuestAccountCompleted = 0x000080000000, + ImportantQuest = 0x000100000000, + RewardCompleteNoPOI = 0x000200000000, + RewardCompletePOI = 0x000400000000, + RepeatableRewardCompleteNoPOI = 0x000800000000, + RepeatableRewardCompletePOI = 0x001000000000, + MetaQuestRewardCompleteNoPOI = 0x002000000000, + MetaQuestRewardCompletePOI = 0x004000000000, + CovenantCallingRewardCompleteNoPOI = 0x008000000000, + CovenantCallingRewardCompletePOI = 0x010000000000, + JourneyRewardCompleteNoPOI = 0x020000000000, + JourneyRewardCompletePOI = 0x040000000000, + LegendaryRewardCompleteNoPOI = 0x080000000000, + LegendaryRewardCompletePOI = 0x100000000000, + ImportantQuestRewardCompleteNoPOI = 0x200000000000, + ImportantQuestRewardCompletePOI = 0x400000000000, }; DEFINE_ENUM_FLAG(QuestGiverStatus); @@ -292,6 +306,8 @@ enum QuestFlagsEx2 : uint32 QUEST_FLAGS_EX2_IGNORE_SOULBOUND_ITEMS = 0x00200000, QUEST_FLAGS_EX2_DONT_DEFER_START_EFFECTS = 0x00400000, QUEST_FLAGS_EX2_HIDE_REQUIRED_ITEMS_PRE_TURN_IN = 0x00800000, + + QUEST_FLAGS_EX2_ABANDON_ON_DISABLE = 0x04000000, }; enum QuestSpecialFlags @@ -390,6 +406,13 @@ enum class QuestCompleteSpellType : uint32 Max }; +enum class QuestRewardContextFlags : int32 +{ + None = 0x0, + FirstCompletionBonus = 0x1, + RepeatCompletionBonus = 0x2 +}; + struct QuestGreeting { uint16 EmoteType; @@ -560,6 +583,7 @@ class TC_GAME_API Quest void LoadConditionalConditionalRequestItemsText(Field* fields); void LoadConditionalConditionalOfferRewardText(Field* fields); void LoadConditionalConditionalQuestCompletionLog(Field* fields); + void LoadTreasurePickers(Field* fields); uint32 XPValue(Player const* player) const; static uint32 XPValue(Player const* player, uint32 contentTuningId, uint32 xpDifficulty, float xpMultiplier = 1.0f, int32 expansion = -1); @@ -568,6 +592,7 @@ class TC_GAME_API Quest uint32 GetMaxMoneyReward() const; Optional<QuestTagType> GetQuestTag() const; bool IsImportant() const; + bool IsMeta() const; bool HasFlag(QuestFlags flag) const { return (_flags & uint32(flag)) != 0; } bool HasFlagEx(QuestFlagsEx flag) const { return (_flagsEx & uint32(flag)) != 0; } @@ -666,7 +691,7 @@ class TC_GAME_API Quest uint32 GetRewardSkillId() const { return _rewardSkillId; } uint32 GetRewardSkillPoints() const { return _rewardSkillPoints; } uint32 GetRewardReputationMask() const { return _rewardReputationMask; } - int32 GetTreasurePickerId() const { return _treasurePickerID; } + std::vector<int32> const& GetTreasurePickerId() const { return _treasurePickerID; } int32 GetExpansion() const { return _expansion; } int32 GetManagedWorldStateId() const { return _managedWorldStateID; } int32 GetQuestSessionBonus() const { return _questSessionBonus; } @@ -685,6 +710,7 @@ class TC_GAME_API Quest bool IsPushedToPartyOnAccept() const { return HasSpecialFlag(QUEST_SPECIAL_FLAGS_AUTO_PUSH_TO_PARTY); } uint32 CalculateHonorGain(uint8 level) const; bool CanIncreaseRewardedQuestCounters() const; + bool IsResetByScheduler() const { return _resetByScheduler; } // multiple values std::vector<QuestRewardDisplaySpell> RewardDisplaySpell; @@ -777,7 +803,7 @@ class TC_GAME_API Quest uint32 _areaGroupID = 0; int64 _limitTime = 0; Trinity::RaceMask<uint64> _allowableRaces; - int32 _treasurePickerID = 0; + std::vector<int32> _treasurePickerID; int32 _expansion = 0; int32 _managedWorldStateID = 0; int32 _questSessionBonus = 0; @@ -790,6 +816,7 @@ class TC_GAME_API Quest std::string _portraitTurnInText; std::string _portraitTurnInName; std::string _questCompletionLog; + bool _resetByScheduler; // quest_description_conditional std::vector<QuestConditionalText> _conditionalQuestDescription; |