From ce5fc6ebdfad8faeb3c9497e8f0b637be9b36b31 Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Sat, 22 Jan 2022 16:22:49 -0300 Subject: [PATCH] fix(Core/Stratholme): Some adjustments to Jarien and Sothos fight (#10269) --- .../rev_1642692898569257400.sql | 3 +++ .../Stratholme/boss_jarien_and_sothos.cpp | 23 +++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1642692898569257400.sql diff --git a/data/sql/updates/pending_db_world/rev_1642692898569257400.sql b/data/sql/updates/pending_db_world/rev_1642692898569257400.sql new file mode 100644 index 000000000..3f682f036 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1642692898569257400.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1642692898569257400'); + +UPDATE `gameobject_template` SET `Data15` = 1 WHERE `entry` = 181083; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_jarien_and_sothos.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_jarien_and_sothos.cpp index 933dee3b3..13f306d8a 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_jarien_and_sothos.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_jarien_and_sothos.cpp @@ -110,6 +110,8 @@ struct boss_jarien : public BossAI return !me->HasUnitState(UNIT_STATE_CASTING); }); + me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC); _talked = false; _phase = PHASE_TALK; } @@ -131,8 +133,6 @@ struct boss_jarien : public BossAI void IsSummonedBy(Unit* /*summoner*/) override { - me->SetReactState(REACT_PASSIVE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); Talk(SAY_JARIEN_ON_SUMMON_0); _scheduler.Schedule(6s, [this](TaskContext /*context*/) @@ -145,7 +145,7 @@ struct boss_jarien : public BossAI _talked = true; _phase = PHASE_FIGHT; me->SetReactState(REACT_AGGRESSIVE); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC); }); } @@ -171,7 +171,10 @@ struct boss_jarien : public BossAI { me->SetFullHealth(); DoCastSelf(SPELL_VENGEANCE); - Talk(EMOTE_JARIEN_VENGEANCE); + if (Creature* sothos = me->FindNearestCreature(NPC_SOTHOS, 200.f, false)) + { + Talk(EMOTE_JARIEN_VENGEANCE, sothos); + } _sothosDied = true; } } @@ -230,6 +233,8 @@ struct boss_sothos : public BossAI return !me->HasUnitState(UNIT_STATE_CASTING); }); + me->SetReactState(REACT_PASSIVE); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC); _talked = false; _phase = PHASE_TALK; } @@ -251,15 +256,12 @@ struct boss_sothos : public BossAI void IsSummonedBy(Unit* /*summoner*/) override { - me->SetReactState(REACT_PASSIVE); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - _scheduler.Schedule(12s, [this](TaskContext /*context*/) { _talked = true; _phase = PHASE_FIGHT; me->SetReactState(REACT_AGGRESSIVE); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC); }) .Schedule(3s, [this](TaskContext /*context*/) { @@ -293,7 +295,10 @@ struct boss_sothos : public BossAI { me->SetFullHealth(); DoCastSelf(SPELL_VENGEANCE); - Talk(EMOTE_SOTHOS_VENGEANCE); + if (Creature* jarien = me->FindNearestCreature(NPC_JARIEN, 200.f, false)) + { + Talk(EMOTE_SOTHOS_VENGEANCE, jarien); + } _jarienDied = true; } }