From e776533e248ec55dc316ff3fe49ea8f577970e4b Mon Sep 17 00:00:00 2001 From: grimgravy Date: Tue, 4 Mar 2025 17:53:44 -0300 Subject: [PATCH 1/6] fix(scripts/invisible): boss Captain Skarloc --- .../EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index 5eb5eeb084..9bd6f94f7f 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -58,6 +58,8 @@ struct boss_captain_skarloc : public BossAI { return !me->HasUnitState(UNIT_STATE_CASTING); }); + + creature->m_invisibilityDetect.AddFlag(INVISIBILITY_GENERAL); } SummonList summons; From 162fceeee1dc51618aa4447bb4fecffb63aa45e5 Mon Sep 17 00:00:00 2001 From: grimgravy Date: Tue, 4 Mar 2025 23:42:01 -0300 Subject: [PATCH 2/6] update --- .../EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index 9bd6f94f7f..7bf99350ca 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -59,7 +59,7 @@ struct boss_captain_skarloc : public BossAI return !me->HasUnitState(UNIT_STATE_CASTING); }); - creature->m_invisibilityDetect.AddFlag(INVISIBILITY_GENERAL); + me->SetReactState(REACT_PASSIVE); } SummonList summons; @@ -142,6 +142,7 @@ struct boss_captain_skarloc : public BossAI if (me->movespline->Finalized()) { + me->SetReactState(REACT_AGGRESSIVE); Talk(SAY_ENTER, 500ms); me->m_Events.AddEventAtOffset([this]() From b80bcd335d468c89e8648ac134f4a18d2aa37c27 Mon Sep 17 00:00:00 2001 From: Grimgravy Date: Tue, 15 Jul 2025 08:39:46 -0300 Subject: [PATCH 3/6] update --- .../EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index 7bf99350ca..405bd4b684 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -52,14 +52,12 @@ const Position startPath[WAYPOINTS_COUNT] = struct boss_captain_skarloc : public BossAI { - boss_captain_skarloc(Creature* creature) : BossAI(creature, DATA_CAPTAIN_SKARLOC), summons(me) + boss_captain_skarloc(Creature* creature) : BossAI(creature, DATA_CAPTAIN_SKARLOC), summons(me), _spawnedAdds(false) { scheduler.SetValidator([this] { return !me->HasUnitState(UNIT_STATE_CASTING); }); - - me->SetReactState(REACT_PASSIVE); } SummonList summons; @@ -80,6 +78,7 @@ struct boss_captain_skarloc : public BossAI thrall->AI()->JustSummoned(summon); } summon->SetImmuneToAll(true); + summon->SetReactState(REACT_PASSIVE); if (summon->GetEntry() == NPC_SKARLOC_MOUNT) return; @@ -104,6 +103,7 @@ struct boss_captain_skarloc : public BossAI } me->GetMotionMaster()->MoveSplinePath(&path); me->SetImmuneToAll(true); + me->SetReactState(REACT_PASSIVE); me->Mount(SKARLOC_MOUNT_MODEL); } @@ -142,12 +142,12 @@ struct boss_captain_skarloc : public BossAI if (me->movespline->Finalized()) { - me->SetReactState(REACT_AGGRESSIVE); Talk(SAY_ENTER, 500ms); me->m_Events.AddEventAtOffset([this]() { me->SetImmuneToAll(false); + me->SetReactState(REACT_AGGRESSIVE); me->SetInCombatWithZone(); summons.DoForAllSummons([&](WorldObject* summon) { @@ -156,6 +156,7 @@ struct boss_captain_skarloc : public BossAI if (adds->GetEntry() != NPC_SKARLOC_MOUNT) { adds->SetImmuneToAll(false); + adds->SetReactState(REACT_AGGRESSIVE); adds->SetInCombatWithZone(); } } From a90d7eabb69290c6983ebab9d3571b3d31f15afe Mon Sep 17 00:00:00 2001 From: Grimgravy Date: Fri, 5 Sep 2025 11:56:59 -0300 Subject: [PATCH 4/6] applied improvement --- .../boss_captain_skarloc.cpp | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index 405bd4b684..a4498bc4f3 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -62,12 +62,28 @@ struct boss_captain_skarloc : public BossAI SummonList summons; bool _spawnedAdds; + bool resetEscort; void Reset() override { _Reset(); summons.DespawnAll(); _spawnedAdds = false; + resetEscort = false; + } + + void MoveInLineOfSight(Unit* who) override + { + if (!who->IsPlayer()) + return; + + if (!me->IsInCombat() && me->movespline->Finalized() && !resetEscort) + { + me->GetInstanceScript()->SetData(DATA_CAPTAIN_SKARLOC, NOT_STARTED); + Reset(); + InitializeAI(); + resetEscort = true; + } } void JustSummoned(Creature* summon) override @@ -78,7 +94,6 @@ struct boss_captain_skarloc : public BossAI thrall->AI()->JustSummoned(summon); } summon->SetImmuneToAll(true); - summon->SetReactState(REACT_PASSIVE); if (summon->GetEntry() == NPC_SKARLOC_MOUNT) return; @@ -103,7 +118,6 @@ struct boss_captain_skarloc : public BossAI } me->GetMotionMaster()->MoveSplinePath(&path); me->SetImmuneToAll(true); - me->SetReactState(REACT_PASSIVE); me->Mount(SKARLOC_MOUNT_MODEL); } @@ -147,7 +161,6 @@ struct boss_captain_skarloc : public BossAI me->m_Events.AddEventAtOffset([this]() { me->SetImmuneToAll(false); - me->SetReactState(REACT_AGGRESSIVE); me->SetInCombatWithZone(); summons.DoForAllSummons([&](WorldObject* summon) { @@ -156,7 +169,6 @@ struct boss_captain_skarloc : public BossAI if (adds->GetEntry() != NPC_SKARLOC_MOUNT) { adds->SetImmuneToAll(false); - adds->SetReactState(REACT_AGGRESSIVE); adds->SetInCombatWithZone(); } } From 2ce05b4a334f48950c5bc3036064abb6d1ebf977 Mon Sep 17 00:00:00 2001 From: Grimgravy Date: Sat, 6 Sep 2025 00:10:20 -0300 Subject: [PATCH 5/6] update fix the boss --- .../game/Grids/Notifiers/GridNotifiers.cpp | 5 +++++ .../boss_captain_skarloc.cpp | 16 ---------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.cpp b/src/server/game/Grids/Notifiers/GridNotifiers.cpp index 586e1336b7..c3a8812a23 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.cpp +++ b/src/server/game/Grids/Notifiers/GridNotifiers.cpp @@ -152,6 +152,11 @@ inline void CreatureUnitRelocationWorker(Creature* c, Unit* u) return; } + if (c->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC) || c->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC)) + { + return; + } + if (!c->HasUnitState(UNIT_STATE_SIGHTLESS)) { if (c->IsAIEnabled && c->CanSeeOrDetect(u, false, true)) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index a4498bc4f3..b1c8e0612f 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -62,28 +62,12 @@ struct boss_captain_skarloc : public BossAI SummonList summons; bool _spawnedAdds; - bool resetEscort; void Reset() override { _Reset(); summons.DespawnAll(); _spawnedAdds = false; - resetEscort = false; - } - - void MoveInLineOfSight(Unit* who) override - { - if (!who->IsPlayer()) - return; - - if (!me->IsInCombat() && me->movespline->Finalized() && !resetEscort) - { - me->GetInstanceScript()->SetData(DATA_CAPTAIN_SKARLOC, NOT_STARTED); - Reset(); - InitializeAI(); - resetEscort = true; - } } void JustSummoned(Creature* summon) override From 266f4bac34c36e83d98e9cd360820cf1453d9b0a Mon Sep 17 00:00:00 2001 From: Grimgravy Date: Sat, 6 Sep 2025 00:32:54 -0300 Subject: [PATCH 6/6] update. --- src/server/game/Grids/Notifiers/GridNotifiers.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.cpp b/src/server/game/Grids/Notifiers/GridNotifiers.cpp index c3a8812a23..e02e9f12d9 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.cpp +++ b/src/server/game/Grids/Notifiers/GridNotifiers.cpp @@ -152,7 +152,8 @@ inline void CreatureUnitRelocationWorker(Creature* c, Unit* u) return; } - if (c->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC) || c->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC)) + // Prevents AI reaction when immunity flags are active + if (c->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC)) { return; }