Core/Quests: cache areatrigger relationship in Quest object and send client correct data

This commit is contained in:
ariel- committed 2016-07-23 05:19:08 -03:00
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());
+1
View File
@@ -5805,6 +5805,7 @@ void ObjectMgr::LoadQuestAreaTriggers()
}
_questAreaTriggerStore[trigger_ID] = quest_ID;
const_cast<Quest*>(quest)->SetStartAtAreaTrigger();
} while (result->NextRow());
+2
View File
@@ -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)
+4
View File
@@ -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;