From 08ff2f277baed94cec2e9a4eed20153de5e86ab5 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 6 Dec 2022 13:47:08 +0100 Subject: [PATCH] =?UTF-8?q?fix(Scripts/BlackwingLair):=20Razorgore=20the?= =?UTF-8?q?=20Untamed=20should=20not=20reset=20enco=E2=80=A6=20(#13782)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Raids/BlackwingLair): Razorgore the Untamed should not reset encounter upon casting Conflagrate when soloing. Fixes #13761 * Update. --- .../BlackwingLair/boss_razorgore.cpp | 23 +++++++++++++++---- .../ZulGurub/boss_gahzranka.cpp | 2 +- .../ZulGurub/boss_hazzarah.cpp | 14 +++++++++-- .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 14 +++++++++-- .../ZulGurub/boss_renataki.cpp | 14 +++++++++-- 5 files changed, 56 insertions(+), 11 deletions(-) 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; }