diff options
author | treeston <treeston.mmoc@gmail.com> | 2016-02-22 23:00:15 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-04-08 20:38:22 +0200 |
commit | 4726116dbc07e49d854c2805af1dcf4485d662f9 (patch) | |
tree | 6ac2230960c8e587beed17e9cbe42759705827ca /src/server/game/Combat | |
parent | 8046d5a94f9b4cea88e0042fb2adf2f74de5d942 (diff) |
Core/Threat: Prevent bosses (and other stuff using DoZoneInCombat) from switching off of the person pulling if they are pulled without generating threat.
(cherry picked from commit b5b7ce44cfeb98bf47eb6c9e0c926994ad53ede8)
Diffstat (limited to 'src/server/game/Combat')
-rw-r--r-- | src/server/game/Combat/ThreatManager.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Combat/ThreatManager.h | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 9d43d10005c..b309203b80e 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -336,7 +336,7 @@ HostileReference* ThreatContainer::selectNextVictim(Creature* attacker, HostileR { // current victim is a second choice target, so don't compare threat with it below if (currentRef == currentVictim) - currentVictim = NULL; + currentVictim = nullptr; ++iter; continue; } @@ -438,12 +438,15 @@ void ThreatManager::_addThreat(Unit* victim, float threat) if (!ref) // there was no ref => create a new one { + bool isFirst = iThreatContainer.empty(); // threat has to be 0 here HostileReference* hostileRef = new HostileReference(victim, this, 0); iThreatContainer.addReference(hostileRef); hostileRef->addThreat(threat); // now we add the real threat if (victim->GetTypeId() == TYPEID_PLAYER && victim->ToPlayer()->IsGameMaster()) hostileRef->setOnlineOfflineState(false); // GM is always offline + else if (isFirst) + setCurrentVictim(hostileRef); } } diff --git a/src/server/game/Combat/ThreatManager.h b/src/server/game/Combat/ThreatManager.h index 8b28779569a..a68d803304d 100644 --- a/src/server/game/Combat/ThreatManager.h +++ b/src/server/game/Combat/ThreatManager.h @@ -169,7 +169,7 @@ class TC_GAME_API ThreatContainer HostileReference* getMostHated() const { - return iThreatList.empty() ? NULL : iThreatList.front(); + return iThreatList.empty() ? nullptr : iThreatList.front(); } HostileReference* getReferenceByTarget(Unit* victim) const; |