aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/cata_classic/2024_11_05_01_world.sql3
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp6
-rw-r--r--src/server/game/Quests/QuestDef.cpp35
-rw-r--r--src/server/game/Quests/QuestDef.h4
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp11
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h4
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] = { };