diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp index 25de4ec9d..a08644405 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp @@ -108,7 +108,25 @@ public: bool CanAIAttack(Unit const* target) const override { - return !(target->GetTypeId() == TYPEID_UNIT && !secondPhase) && !target->HasAura(SPELL_CONFLAGRATION); + if (target->GetTypeId() == TYPEID_UNIT && !secondPhase) + { + return false; + } + + if (me->GetThreatMgr().GetThreatListSize() > 1) + { + ThreatContainer::StorageType::const_iterator lastRef = me->GetThreatMgr().GetOnlineContainer().GetThreatList().end(); + --lastRef; + if (Unit* lastTarget = (*lastRef)->getTarget()) + { + if (lastTarget != target) + { + return !target->HasAura(SPELL_CONFLAGRATION); + } + } + } + + return true; } void EnterCombat(Unit* /*victim*/) override @@ -244,9 +262,6 @@ public: break; case EVENT_CONFLAGRATION: DoCastVictim(SPELL_CONFLAGRATION); - if (me->GetVictim() && me->GetVictim()->HasAura(SPELL_CONFLAGRATION)) - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) - me->TauntApply(target); events.ScheduleEvent(EVENT_CONFLAGRATION, 30000); break; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index 6b4a19674..cc52c0eea 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -130,7 +130,7 @@ class spell_gahzranka_slam : public SpellScript { if (Unit* caster = GetCaster()) { - _wipeThreat = targets.size() < caster->GetThreatMgr().GetThreatListSize();; + _wipeThreat = targets.size() < caster->GetThreatMgr().GetThreatListSize(); } } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index 648057c56..c842bc2b1 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -80,8 +80,18 @@ struct boss_hazzarah : public BossAI bool CanAIAttack(Unit const* target) const override { - if (me->GetThreatMgr().GetThreatListSize() > 1 && me->GetThreatMgr().GetOnlineContainer().getMostHated()->getTarget() == target) - return !target->HasAura(SPELL_SLEEP); + if (me->GetThreatMgr().GetThreatListSize() > 1) + { + ThreatContainer::StorageType::const_iterator lastRef = me->GetThreatMgr().GetOnlineContainer().GetThreatList().end(); + --lastRef; + if (Unit* lastTarget = (*lastRef)->getTarget()) + { + if (lastTarget != target) + { + return !target->HasAura(SPELL_SLEEP); + } + } + } return true; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 0c69b7a29..bc85b98fc 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -154,8 +154,18 @@ struct boss_jindo : public BossAI bool CanAIAttack(Unit const* target) const override { - if (me->GetThreatMgr().GetThreatListSize() > 1 && me->GetThreatMgr().GetOnlineContainer().getMostHated()->getTarget() == target) - return !target->HasAura(SPELL_HEX); + if (me->GetThreatMgr().GetThreatListSize() > 1) + { + ThreatContainer::StorageType::const_iterator lastRef = me->GetThreatMgr().GetOnlineContainer().GetThreatList().end(); + --lastRef; + if (Unit* lastTarget = (*lastRef)->getTarget()) + { + if (lastTarget != target) + { + return !target->HasAura(SPELL_HEX); + } + } + } return true; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index 570369938..09b7a57f1 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -85,8 +85,18 @@ public: bool CanAIAttack(Unit const* target) const override { - if (me->GetThreatMgr().GetThreatListSize() > 1 && me->GetThreatMgr().GetOnlineContainer().getMostHated()->getTarget() == target) - return !target->HasAura(SPELL_GOUGE); + if (me->GetThreatMgr().GetThreatListSize() > 1) + { + ThreatContainer::StorageType::const_iterator lastRef = me->GetThreatMgr().GetOnlineContainer().GetThreatList().end(); + --lastRef; + if (Unit* lastTarget = (*lastRef)->getTarget()) + { + if (lastTarget != target) + { + return !target->HasAura(SPELL_GOUGE); + } + } + } return true; }