diff options
-rw-r--r-- | sql/updates/world/cata_classic/2024_11_05_01_world.sql | 3 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.cpp | 35 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.h | 4 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.h | 4 |
6 files changed, 39 insertions, 24 deletions
diff --git a/sql/updates/world/cata_classic/2024_11_05_01_world.sql b/sql/updates/world/cata_classic/2024_11_05_01_world.sql new file mode 100644 index 00000000000..cb75b9c65d8 --- /dev/null +++ b/sql/updates/world/cata_classic/2024_11_05_01_world.sql @@ -0,0 +1,3 @@ +ALTER TABLE `quest_template` + DROP COLUMN `ManagedWorldStateID`, + DROP COLUMN `QuestSessionBonus`; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index e4e06525335..9a2fad1b506 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4303,9 +4303,9 @@ void ObjectMgr::LoadQuests() "RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " //93 94 95 96 97 98 99 100 "RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " - //101 102 103 104 105 106 107 108 - "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, Expansion, ManagedWorldStateID, QuestSessionBonus, " - //109 110 111 112 113 114 115 116 117 + //101 102 103 104 105 106 + "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, Expansion, " + //107 108 109 110 111 112 113 114 115 "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog " "FROM quest_template"); if (!result) diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index beddc00ba99..c327c2fb057 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -119,18 +119,16 @@ Quest::Quest(Field* questRecord) _limitTime = questRecord[104].GetInt64(); _allowableRaces.RawValue = questRecord[105].GetUInt64(); _expansion = questRecord[106].GetInt32(); - _managedWorldStateID = questRecord[107].GetInt32(); - _questSessionBonus = questRecord[108].GetInt32(); - _logTitle = questRecord[109].GetString(); - _logDescription = questRecord[110].GetString(); - _questDescription = questRecord[111].GetString(); - _areaDescription = questRecord[112].GetString(); - _portraitGiverText = questRecord[113].GetString(); - _portraitGiverName = questRecord[114].GetString(); - _portraitTurnInText = questRecord[115].GetString(); - _portraitTurnInName = questRecord[116].GetString(); - _questCompletionLog = questRecord[117].GetString(); + _logTitle = questRecord[107].GetString(); + _logDescription = questRecord[108].GetString(); + _questDescription = questRecord[109].GetString(); + _areaDescription = questRecord[110].GetString(); + _portraitGiverText = questRecord[111].GetString(); + _portraitGiverName = questRecord[112].GetString(); + _portraitTurnInText = questRecord[113].GetString(); + _portraitTurnInName = questRecord[114].GetString(); + _questCompletionLog = questRecord[115].GetString(); } Quest::~Quest() @@ -658,6 +656,19 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const response.Info.PortraitGiverName = GetPortraitGiverName(); response.Info.PortraitTurnInText = GetPortraitTurnInText(); response.Info.PortraitTurnInName = GetPortraitTurnInName(); + std::transform(GetConditionalQuestDescription().begin(), GetConditionalQuestDescription().end(), std::back_inserter(response.Info.ConditionalQuestDescription), [loc](QuestConditionalText const& text) + { + std::string_view content = text.Text[LOCALE_enUS]; + ObjectMgr::GetLocaleString(text.Text, loc, content); + return WorldPackets::Quest::ConditionalQuestText { text.PlayerConditionId, text.QuestgiverCreatureId, content }; + }); + + std::transform(GetConditionalQuestCompletionLog().begin(), GetConditionalQuestCompletionLog().end(), std::back_inserter(response.Info.ConditionalQuestCompletionLog), [loc](QuestConditionalText const& text) + { + std::string_view content = text.Text[LOCALE_enUS]; + ObjectMgr::GetLocaleString(text.Text, loc, content); + return WorldPackets::Quest::ConditionalQuestText { text.PlayerConditionId, text.QuestgiverCreatureId, content }; + }); if (loc != LOCALE_enUS) { @@ -758,8 +769,6 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc, Player* player) const response.Info.AllowableRaces = GetAllowableRaces(); response.Info.TreasurePickerID = GetTreasurePickerId(); response.Info.Expansion = GetExpansion(); - response.Info.ManagedWorldStateID = GetManagedWorldStateId(); - response.Info.QuestSessionBonus = 0; //GetQuestSessionBonus(); // this is only sent while quest session is active response.Info.QuestGiverCreatureID = 0; // only sent during npc interaction for (QuestObjective const& questObjective : GetObjectives()) diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 4934b838a97..a772769d983 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -665,8 +665,6 @@ class TC_GAME_API Quest uint32 GetRewardReputationMask() const { return _rewardReputationMask; } std::vector<int32> const& GetTreasurePickerId() const { return _treasurePickerID; } int32 GetExpansion() const { return _expansion; } - int32 GetManagedWorldStateId() const { return _managedWorldStateID; } - int32 GetQuestSessionBonus() const { return _questSessionBonus; } uint32 GetQuestGiverPortrait() const { return _questGiverPortrait; } int32 GetQuestGiverPortraitMount() const { return _questGiverPortraitMount; } int32 GetQuestGiverPortraitModelSceneId() const { return _questGiverPortraitModelSceneId; } @@ -779,8 +777,6 @@ class TC_GAME_API Quest Trinity::RaceMask<uint64> _allowableRaces; std::vector<int32> _treasurePickerID; int32 _expansion = 0; - int32 _managedWorldStateID = 0; - int32 _questSessionBonus = 0; std::string _logTitle; std::string _logDescription; std::string _questDescription; diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 1b5878981cb..2ce71c08c88 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -188,10 +188,11 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << uint32(Info.TreasurePickerID.size()); _worldPacket << uint32(Info.TreasurePickerID2.size()); _worldPacket << int32(Info.Expansion); - _worldPacket << int32(Info.ManagedWorldStateID); - _worldPacket << int32(Info.QuestSessionBonus); _worldPacket << int32(Info.QuestGiverCreatureID); + _worldPacket << uint32(Info.ConditionalQuestDescription.size()); + _worldPacket << uint32(Info.ConditionalQuestCompletionLog.size()); + if (!Info.TreasurePickerID.empty()) _worldPacket.append(Info.TreasurePickerID.data(), Info.TreasurePickerID.size()); @@ -240,6 +241,12 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket.WriteString(Info.PortraitTurnInText); _worldPacket.WriteString(Info.PortraitTurnInName); _worldPacket.WriteString(Info.QuestCompletionLog); + + for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestDescription) + _worldPacket << conditionalQuestText; + + for (ConditionalQuestText const& conditionalQuestText : Info.ConditionalQuestCompletionLog) + _worldPacket << conditionalQuestText; } return &_worldPacket; diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 127b3f5c9ab..20690631866 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -191,10 +191,10 @@ namespace WorldPackets std::span<int32 const> TreasurePickerID; std::span<int32 const> TreasurePickerID2; // unknown purpose, used only sometimes and only if TreasurePickerID is empty int32 Expansion = 0; - int32 ManagedWorldStateID = 0; - int32 QuestSessionBonus = 0; int32 QuestGiverCreatureID = 0; // used to select ConditionalQuestText std::vector<QuestObjective> Objectives; + std::vector<ConditionalQuestText> ConditionalQuestDescription; + std::vector<ConditionalQuestText> ConditionalQuestCompletionLog; int32 RewardItems[QUEST_REWARD_ITEM_COUNT] = { }; int32 RewardAmount[QUEST_REWARD_ITEM_COUNT] = { }; int32 ItemDrop[QUEST_ITEM_DROP_COUNT] = { }; |