diff --git a/data/sql/updates/pending_db_world/rev_1785749167609908400.sql b/data/sql/updates/pending_db_world/rev_1785749167609908400.sql new file mode 100644 index 0000000000..7b296bbc31 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1785749167609908400.sql @@ -0,0 +1,2 @@ +-- Runic Colossus and Ancient Rune Giant spawn immune to players until activated (sniff build 68887) +UPDATE `creature_template` SET `unit_flags` = `unit_flags` | 256, `VerifiedBuild` = 68887 WHERE `entry` IN (32872, 32873); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 4cd6b94967..01748f8058 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -457,11 +457,11 @@ struct boss_thorim : public BossAI if (GameObject* go = GetThorimObject(DATA_THORIM_LEVER)) go->RemoveGameObjectFlag((GameObjectFlags)48); - // Iron Ring Guard / Iron Honor Guard spawn with UNIT_FLAG_IMMUNE_TO_PC + // Iron Ring Guards and the Runic Colossus spawn with UNIT_FLAG_IMMUNE_TO_PC until the arena event starts summons.DoForAllSummons([](WorldObject* obj) { if (Creature* c = obj->ToCreature()) - if (c->GetEntry() == NPC_IRON_RING_GUARD || c->GetEntry() == NPC_IRON_HONOR_GUARD) + if (c->EntryEquals(NPC_IRON_RING_GUARD, NPC_RUNIC_COLOSSUS)) c->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); }); @@ -1288,6 +1288,10 @@ struct boss_thorim_runic_colossus : public ScriptedAI if (Creature* cr = me->GetInstanceScript()->GetCreature(BOSS_THORIM)) cr->AI()->Talk(SAY_SPECIAL_2); } + + // The Ancient Rune Giant stays immune to players until the colossus falls + if (Creature* giant = me->FindNearestCreature(NPC_ANCIENT_RUNE_GIANT, 200.0f)) + giant->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); } void JustEngagedWith(Unit*) override