diff options
| author | SnapperRy <snapperryen@gmail.com> | 2016-07-15 18:32:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-07-15 18:32:16 +0200 |
| commit | d7e47de264a20dc689b4b30663c2de09613b791f (patch) | |
| tree | 3fe20cb06067fa96e3646cf029543ac4330a2bda /src | |
| parent | a732749d721eefe7558d23e44c5f8dc18194e6d4 (diff) | |
Core/SpellArea: iterate spell_area entries by player's current area instead of quest id. (#17509)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 33 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 |
2 files changed, 14 insertions, 21 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f9f5d3dc218..51daf6f9b98 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14819,7 +14819,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_QUEST, quest_id); - SendQuestUpdate(quest_id); + SendQuestUpdate(); if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER)) // check if Quest Tracker is enabled { @@ -15058,7 +15058,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, UpdatePvPState(); } - SendQuestUpdate(quest_id); + SendQuestUpdate(); SendQuestGiverStatusMultiple(); @@ -15704,7 +15704,7 @@ void Player::SetQuestStatus(uint32 questId, QuestStatus status, bool update /*= } if (update) - SendQuestUpdate(questId); + SendQuestUpdate(); sScriptMgr->OnQuestStatusChange(this, questId, status); } @@ -15719,7 +15719,7 @@ void Player::RemoveActiveQuest(uint32 questId, bool update /*= true*/) } if (update) - SendQuestUpdate(questId); + SendQuestUpdate(); } void Player::RemoveRewardedQuest(uint32 questId, bool update /*= true*/) @@ -15732,33 +15732,26 @@ void Player::RemoveRewardedQuest(uint32 questId, bool update /*= true*/) } if (update) - SendQuestUpdate(questId); + SendQuestUpdate(); } -void Player::SendQuestUpdate(uint32 questId) +void Player::SendQuestUpdate() { uint32 zone = 0, area = 0; + GetZoneAndAreaId(zone, area); - SpellAreaForQuestMapBounds saBounds = sSpellMgr->GetSpellAreaForQuestMapBounds(questId); - if (saBounds.first != saBounds.second) - { - GetZoneAndAreaId(zone, area); - - for (SpellAreaForAreaMap::const_iterator itr = saBounds.first; itr != saBounds.second; ++itr) - if (itr->second->autocast && itr->second->IsFitToRequirements(this, zone, area)) - if (!HasAura(itr->second->spellId)) - CastSpell(this, itr->second->spellId, true); - } + SpellAreaForQuestMapBounds saBounds = sSpellMgr->GetSpellAreaForAreaMapBounds(area); - saBounds = sSpellMgr->GetSpellAreaForQuestEndMapBounds(questId); if (saBounds.first != saBounds.second) { - if (!zone || !area) - GetZoneAndAreaId(zone, area); - for (SpellAreaForAreaMap::const_iterator itr = saBounds.first; itr != saBounds.second; ++itr) + { if (!itr->second->IsFitToRequirements(this, zone, area)) RemoveAurasDueToSpell(itr->second->spellId); + else if (itr->second->autocast) + if (!HasAura(itr->second->spellId)) + CastSpell(this, itr->second->spellId, true); + } } UpdateForQuestWorldObjects(); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 80c14b3fbae..82e261c6a45 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1363,7 +1363,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void SetQuestStatus(uint32 questId, QuestStatus status, bool update = true); void RemoveActiveQuest(uint32 questId, bool update = true); void RemoveRewardedQuest(uint32 questId, bool update = true); - void SendQuestUpdate(uint32 questId); + void SendQuestUpdate(); QuestGiverStatus GetQuestDialogStatus(Object* questGiver); void SetDailyQuestStatus(uint32 quest_id); |
