aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellMgr.cpp
diff options
context:
space:
mode:
authorSnapperRy <snapperryen@gmail.com>2016-08-20 18:22:43 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-02-12 16:27:43 +0100
commitf886788a672014bcdefbcd8661c9a97518a37611 (patch)
treee50acb0a17afa68cef4a5e85450728430ac9cea2 /src/server/game/Spells/SpellMgr.cpp
parent3a62ecb5160e9d564204f5070270227b10be5e35 (diff)
Core/SpellArea: only check against spell_area entries for the current quest when updating quest status
Closes #17804 (cherry picked from commit 0b4b0ea3486192dfdf55d057edad913750f57186)
Diffstat (limited to 'src/server/game/Spells/SpellMgr.cpp')
-rw-r--r--src/server/game/Spells/SpellMgr.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 514185803e1..c3d03a009da 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -1158,6 +1158,11 @@ SpellAreaForAreaMapBounds SpellMgr::GetSpellAreaForAreaMapBounds(uint32 area_id)
return mSpellAreaForAreaMap.equal_range(area_id);
}
+SpellAreaForQuestAreaMapBounds SpellMgr::GetSpellAreaForQuestAreaMapBounds(uint32 area_id, uint32 quest_id) const
+{
+ return mSpellAreaForQuestAreaMap.equal_range(std::pair<uint32, uint32>(area_id, quest_id));
+}
+
bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32 newArea) const
{
if (gender != GENDER_NONE) // is not expected gender
@@ -2625,6 +2630,12 @@ void SpellMgr::LoadSpellAreas()
if (spellArea.auraSpell)
mSpellAreaForAuraMap.insert(SpellAreaForAuraMap::value_type(abs(spellArea.auraSpell), sa));
+ if (spellArea.areaId && spellArea.questStart)
+ mSpellAreaForQuestAreaMap.insert(SpellAreaForQuestAreaMap::value_type(std::pair<uint32, uint32>(spellArea.areaId, spellArea.questStart), sa));
+
+ if (spellArea.areaId && spellArea.questEnd)
+ mSpellAreaForQuestAreaMap.insert(SpellAreaForQuestAreaMap::value_type(std::pair<uint32, uint32>(spellArea.areaId, spellArea.questEnd), sa));
+
++count;
} while (result->NextRow());