diff options
author | SnapperRy <snapperryen@gmail.com> | 2016-08-20 18:22:43 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-12 16:27:43 +0100 |
commit | f886788a672014bcdefbcd8661c9a97518a37611 (patch) | |
tree | e50acb0a17afa68cef4a5e85450728430ac9cea2 /src/server/game/Spells/SpellMgr.cpp | |
parent | 3a62ecb5160e9d564204f5070270227b10be5e35 (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.cpp | 11 |
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()); |