diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DataStores/DBCStructure.h | 2 | ||||
-rw-r--r-- | src/server/game/Maps/PhaseMgr.cpp | 24 |
2 files changed, 11 insertions, 15 deletions
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index f3154d727e5..feb473958b5 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -2523,5 +2523,5 @@ typedef std::vector<TaxiPathNodeList> TaxiPathNodesByPath; #define TaxiMaskSize 114 typedef uint8 TaxiMask[TaxiMaskSize]; -typedef std::unordered_map<uint32, std::set<uint32> const&> PhaseGroupContainer; +typedef std::unordered_map<uint32, std::set<uint32>> PhaseGroupContainer; #endif diff --git a/src/server/game/Maps/PhaseMgr.cpp b/src/server/game/Maps/PhaseMgr.cpp index 0f542bf5948..13d357702ab 100644 --- a/src/server/game/Maps/PhaseMgr.cpp +++ b/src/server/game/Maps/PhaseMgr.cpp @@ -357,31 +357,27 @@ uint32 PhaseData::RemoveAuraInfo(uint32 spellId) PhaseInfoContainer::const_iterator rAura = spellPhaseInfo.find(spellId); if (rAura != spellPhaseInfo.end()) { - bool serverUpdated = false; - bool clientUpdated = false; uint32 updateflag = 0; for (auto phase = rAura->second.begin(); phase != rAura->second.end(); ++phase) { - if (!clientUpdated && phase->NeedsClientSideUpdate()) - { - clientUpdated = true; + if (phase->NeedsClientSideUpdate()) updateflag |= PHASE_UPDATE_FLAG_CLIENTSIDE_CHANGED; - } - if (!serverUpdated && phase->NeedsServerSideUpdate()) + if (phase->NeedsServerSideUpdate()) { - serverUpdated = true; _PhasemaskThroughAuras = 0; - updateflag |= PHASE_UPDATE_FLAG_SERVERSIDE_CHANGED; + } + } - spellPhaseInfo.erase(rAura); + if (updateflag & PHASE_UPDATE_FLAG_SERVERSIDE_CHANGED) + { + spellPhaseInfo.erase(rAura); - for (PhaseInfoContainer::const_iterator itr = spellPhaseInfo.begin(); itr != spellPhaseInfo.end(); ++itr) - for (auto ph = itr->second.begin(); ph != itr->second.end(); ++ph) - _PhasemaskThroughAuras |= ph->phasemask; - } + for (PhaseInfoContainer::const_iterator itr = spellPhaseInfo.begin(); itr != spellPhaseInfo.end(); ++itr) + for (auto ph = itr->second.begin(); ph != itr->second.end(); ++ph) + _PhasemaskThroughAuras |= ph->phasemask; } return updateflag; |