diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 33392ad877..9592e4ba29 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -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()); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 8850748124..4fc75ce36e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -5805,6 +5805,7 @@ void ObjectMgr::LoadQuestAreaTriggers() } _questAreaTriggerStore[trigger_ID] = quest_ID; + const_cast(quest)->SetStartAtAreaTrigger(); } while (result->NextRow()); diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index f2a34705e3..8a8c4f3525 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -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) diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 5ae209d0d3..5191508aca 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -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;