Core/Quests: cache areatrigger relationship in Quest object and send client correct data
This commit is contained in:
1 parent
0923870dfb
commit
ceb2b94e0b
4 files changed
+12
-9
No files matched your search
@@ -381,10 +381,10 @@ void PlayerMenu::SendQuestGiverStatus(uint32 questStatus, ObjectGuid npcGUID) co
|
||||
|
||||
void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGUID, bool activateAccept) const
|
||||
{
|
||||
std::string questTitle = quest->GetTitle();
|
||||
std::string questDetails = quest->GetDetails();
|
||||
std::string questObjectives = quest->GetObjectives();
|
||||
std::string questAreaDescription = quest->GetAreaDescription();
|
||||
std::string questTitle = quest->GetTitle();
|
||||
std::string questDetails = quest->GetDetails();
|
||||
std::string questObjectives = quest->GetObjectives();
|
||||
std::string questAreaDescription = quest->GetAreaDescription();
|
||||
std::string questGiverTextWindow = quest->GetQuestGiverTextWindow();
|
||||
std::string questGiverTargetName = quest->GetQuestGiverTargetName();
|
||||
std::string questTurnTextWindow = quest->GetQuestTurnTextWindow();
|
||||
@@ -409,10 +409,6 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
|
||||
if (sWorld->getBoolConfig(CONFIG_UI_QUESTLEVELS_IN_DIALOGS))
|
||||
AddQuestLevelToTitle(questTitle, quest->GetQuestLevel());
|
||||
|
||||
uint8 ExtraQuestWindow = 0;
|
||||
if (quest->HasFlag(QUEST_FLAGS_AUTO_ACCEPT) && !quest->HasSpecialFlag(QUEST_SPECIAL_FLAGS_AUTO_ACCEPT))
|
||||
ExtraQuestWindow = 1;
|
||||
|
||||
WorldPacket data(SMSG_QUESTGIVER_QUEST_DETAILS, 100); // guess size
|
||||
data << uint64(npcGUID);
|
||||
data << uint64(_session->GetPlayer()->GetDivider());
|
||||
@@ -430,7 +426,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
|
||||
data << uint32(quest->GetFlags()); // 3.3.3 questFlags
|
||||
data << uint32(quest->GetSuggestedPlayers());
|
||||
data << uint8(0); // IsFinished? value is sent back to server in quest accept packet
|
||||
data << uint8(ExtraQuestWindow); // "0 = normal, 1 = gives extra ! symbol (Quest window on right side"
|
||||
data << uint8(quest->IsStartAtAreaTrigger() ? 1 : 0); // 4.x Starts at AreaTrigger?
|
||||
data << uint32(quest->GetRequiredSpell()); // 4.x
|
||||
|
||||
quest->BuildExtraQuestInfo(data, _session->GetPlayer());
|
||||
|
||||
@@ -5805,6 +5805,7 @@ void ObjectMgr::LoadQuestAreaTriggers()
|
||||
}
|
||||
|
||||
_questAreaTriggerStore[trigger_ID] = quest_ID;
|
||||
const_cast<Quest*>(quest)->SetStartAtAreaTrigger();
|
||||
|
||||
} while (result->NextRow());
|
||||
|
||||
|
||||
@@ -162,6 +162,8 @@ Quest::Quest(Field* questRecord)
|
||||
QuestTurnTargetName = questRecord[129].GetString();
|
||||
SoundAccept = questRecord[130].GetUInt16();
|
||||
SoundTurnIn = questRecord[131].GetUInt16();
|
||||
|
||||
StartsAtAreaTrigger = false;
|
||||
}
|
||||
|
||||
void Quest::LoadQuestDetails(Field* fields)
|
||||
|
||||
@@ -304,6 +304,7 @@ class Quest
|
||||
bool IsDFQuest() const { return (SpecialFlags & QUEST_SPECIAL_FLAGS_DF_QUEST) != 0; }
|
||||
uint32 CalculateHonorGain(uint8 level) const;
|
||||
bool CanIncreaseRewardedQuestCounters() const;
|
||||
bool IsStartAtAreaTrigger() const { return StartsAtAreaTrigger; }
|
||||
|
||||
// multiple values
|
||||
std::string ObjectiveText[QUEST_OBJECTIVES_COUNT];
|
||||
@@ -409,6 +410,9 @@ class Quest
|
||||
std::string QuestTurnTargetName;
|
||||
uint32 SoundAccept;
|
||||
uint32 SoundTurnIn;
|
||||
bool StartsAtAreaTrigger;
|
||||
|
||||
void SetStartAtAreaTrigger() { StartsAtAreaTrigger = true; }
|
||||
|
||||
// quest_template_addon table (custom data)
|
||||
uint32 MaxLevel = 0;
|
||||
|
||||
Reference in new issue
Block a user