diff options
author | Spp <spp@jorge.gr> | 2012-10-30 10:30:05 +0100 |
---|---|---|
committer | Spp <spp@jorge.gr> | 2012-10-30 10:30:05 +0100 |
commit | c97fc99e1683edc4a5b177119ba7a775cf7a19a1 (patch) | |
tree | 16007f950c058d3c6963e2924981d7bbe5a3c898 /src/server/game/Combat/ThreatManager.cpp | |
parent | 59a828b49ed1e07bd5d705e3d3aa1a6d110be8fc (diff) | |
parent | cd8e9dfb5213f6e299065cc1f87535a26c2f2936 (diff) |
Merge branch 'master' into 4.3.4
Note: What a bad automatic merge!!! needed to fix a lot of stuff... grrr
Conflicts:
src/server/game/AI/EventAI/CreatureEventAI.cpp
src/server/game/AI/EventAI/CreatureEventAIMgr.cpp
src/server/game/Achievements/AchievementMgr.cpp
src/server/game/Entities/Creature/GossipDef.cpp
src/server/game/Entities/Pet/Pet.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Globals/ObjectMgr.cpp
src/server/game/Guilds/Guild.cpp
src/server/game/Guilds/Guild.h
src/server/game/Guilds/GuildMgr.h
src/server/game/Handlers/AuctionHouseHandler.cpp
src/server/game/Handlers/BattleGroundHandler.cpp
src/server/game/Handlers/ChannelHandler.cpp
src/server/game/Handlers/CharacterHandler.cpp
src/server/game/Handlers/ChatHandler.cpp
src/server/game/Handlers/GroupHandler.cpp
src/server/game/Handlers/LFGHandler.cpp
src/server/game/Handlers/MiscHandler.cpp
src/server/game/Handlers/QuestHandler.cpp
src/server/game/Handlers/TradeHandler.cpp
src/server/game/Quests/QuestDef.h
src/server/game/Server/Protocol/Opcodes.cpp
src/server/game/Server/WorldSession.cpp
src/server/game/Server/WorldSession.h
src/server/game/Spells/Spell.cpp
src/server/scripts/Commands/cs_debug.cpp
src/server/scripts/Commands/cs_titles.cpp
src/server/scripts/Kalimdor/boss_azuregos.cpp
src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp
Diffstat (limited to 'src/server/game/Combat/ThreatManager.cpp')
-rwxr-xr-x | src/server/game/Combat/ThreatManager.cpp | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 7a4c6b6bdce..383c8c14186 100755 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -253,25 +253,29 @@ Unit* HostileReference::getSourceUnit() void ThreatContainer::clearReferences() { - for (std::list<HostileReference*>::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i) + for (ThreatContainer::StorageType::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i) { (*i)->unlink(); delete (*i); } + iThreatList.clear(); } //============================================================ // Return the HostileReference of NULL, if not found -HostileReference* ThreatContainer::getReferenceByTarget(Unit* victim) +HostileReference* ThreatContainer::getReferenceByTarget(Unit* victim) const { if (!victim) return NULL; - uint64 guid = victim->GetGUID(); - for (std::list<HostileReference*>::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i) - if ((*i) && (*i)->getUnitGuid() == guid) - return (*i); + uint64 const guid = victim->GetGUID(); + for (ThreatContainer::StorageType::const_iterator i = iThreatList.begin(); i != iThreatList.end(); ++i) + { + HostileReference *ref = (*i); + if (ref && ref->getUnitGuid() == guid) + return ref; + } return NULL; } @@ -310,16 +314,16 @@ void ThreatContainer::update() // return the next best victim // could be the current victim -HostileReference* ThreatContainer::selectNextVictim(Creature* attacker, HostileReference* currentVictim) +HostileReference* ThreatContainer::selectNextVictim(Creature* attacker, HostileReference* currentVictim) const { HostileReference* currentRef = NULL; bool found = false; bool noPriorityTargetFound = false; - std::list<HostileReference*>::const_iterator lastRef = iThreatList.end(); + ThreatContainer::StorageType::const_iterator lastRef = iThreatList.end(); --lastRef; - for (std::list<HostileReference*>::const_iterator iter = iThreatList.begin(); iter != iThreatList.end() && !found;) + for (ThreatContainer::StorageType::const_iterator iter = iThreatList.begin(); iter != iThreatList.end() && !found;) { currentRef = (*iter); @@ -577,17 +581,15 @@ bool ThreatManager::isNeedUpdateToClient(uint32 time) return false; } -// Reset all aggro without modifying the threadlist. +// Reset all aggro without modifying the threatlist. void ThreatManager::resetAllAggro() { - std::list<HostileReference*> &threatList = getThreatList(); + ThreatContainer::StorageType &threatList = iThreatContainer.iThreatList; if (threatList.empty()) return; - for (std::list<HostileReference*>::iterator itr = threatList.begin(); itr != threatList.end(); ++itr) - { + for (ThreatContainer::StorageType::iterator itr = threatList.begin(); itr != threatList.end(); ++itr) (*itr)->setThreat(0); - } setDirty(true); } |