From aefd3a5a3f79f4c4594aa94b7796b650dc26eed0 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Wed, 15 Jan 2025 23:52:10 +0100 Subject: [PATCH] fix(Scripts/ZulAman): prevent early engaging of door guardians to skip timed event (#21177) --- .../rev_1736947882353306449.sql | 5 ++++ .../ZulAman/instance_zulaman.cpp | 25 +++++++++++-------- .../EasternKingdoms/ZulAman/zulaman.cpp | 6 +++-- .../scripts/EasternKingdoms/ZulAman/zulaman.h | 7 +++--- 4 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1736947882353306449.sql diff --git a/data/sql/updates/pending_db_world/rev_1736947882353306449.sql b/data/sql/updates/pending_db_world/rev_1736947882353306449.sql new file mode 100644 index 000000000..7f9d22b2f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1736947882353306449.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 23597) AND (`source_type` = 0) AND (`id` IN (12, 18)); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(23597, 0, 12, 0, 1, 1, 100, 515, 6200, 6200, 6200, 6200, 0, 0, 19, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Guardian - Out of Combat - Remove Flags Immune To Players & Immune To NPC\'s (Phase 1) (No Repeat) (Normal Dungeon)'), +(23597, 0, 18, 0, 1, 2, 100, 515, 7600, 7600, 7600, 7600, 0, 0, 19, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Guardian - Out of Combat - Remove Flags Immune To Players & Immune To NPC\'s (Phase 2) (No Repeat) (Normal Dungeon)'); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index 4ac563b7b..685b749c6 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -65,7 +65,7 @@ ObjectData const creatureData[] = { NPC_JANALAI, DATA_JANALAI }, { NPC_SPIRIT_LYNX, DATA_SPIRIT_LYNX }, { NPC_HARRISON_JONES, DATA_HARRISON_JONES }, - { NPC_AMINISHI_LOOKOUT, DATA_LOOKOUT }, + { NPC_AMANISHI_LOOKOUT, DATA_LOOKOUT }, { 0, 0 } }; @@ -127,13 +127,18 @@ public: { switch (creature->GetEntry()) { + case NPC_AMANISHI_GUARDIAN: + case NPC_AMANISHI_SAVAGE: + if (creature->GetPositionY() >= 1500.0f) // gate + creature->SetImmuneToAll(true); + break; // Akil'zon gauntlet - case NPC_AMINISHI_TEMPEST: + case NPC_AMANISHI_TEMPEST: if (creature->GetPositionZ() >= 50.0f) // excludes Tempest in Hexlord Malacrass' trash AkilzonTrash.insert(creature->GetGUID()); break; - case NPC_AMINISHI_LOOKOUT: - case NPC_AMINISHI_PROTECTOR: + case NPC_AMANISHI_LOOKOUT: + case NPC_AMANISHI_PROTECTOR: case NPC_EAGLE_TRASH_AGGRO_TRIGGER: AkilzonTrash.insert(creature->GetGUID()); break; @@ -226,8 +231,8 @@ public: case NPC_EAGLE_TRASH_AGGRO_TRIGGER: creature->DisappearAndDie(); break; - case NPC_AMINISHI_LOOKOUT: - case NPC_AMINISHI_TEMPEST: + case NPC_AMANISHI_LOOKOUT: + case NPC_AMANISHI_TEMPEST: creature->AI()->DoAction(ACTION_START_AKILZON_GAUNTLET); break; default: @@ -243,7 +248,7 @@ public: { if (!creature->IsAlive()) creature->Respawn(); - else if (creature->GetEntry() == NPC_AMINISHI_TEMPEST) + else if (creature->GetEntry() == NPC_AMANISHI_TEMPEST) creature->AI()->DoAction(ACTION_RESET_AKILZON_GAUNTLET); } if (Creature* creature = GetCreature(DATA_LOOKOUT)) @@ -259,7 +264,7 @@ public: switch (creature->GetEntry()) { - case NPC_AMINISHI_PROTECTOR: + case NPC_AMANISHI_PROTECTOR: case NPC_AMANISHI_WIND_WALKER: if (_akilzonGauntlet == NOT_STARTED && AkilzonTrash.contains(creature->GetGUID())) creature->DespawnOrUnsummon(30s, 1s); @@ -272,8 +277,8 @@ public: { switch (creature->GetEntry()) { - case NPC_AMINISHI_TEMPEST: - case NPC_AMINISHI_PROTECTOR: + case NPC_AMANISHI_TEMPEST: + case NPC_AMANISHI_PROTECTOR: case NPC_AMANISHI_WIND_WALKER: if (AkilzonTrash.contains(creature->GetGUID())) ResetAkilzonGauntlet(); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index bbe60ba86..7e1f7465c 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -358,8 +358,7 @@ enum DisplayIds enum EntryIds { NPC_HARRISON_JONES_1 = 24375, - NPC_HARRISON_JONES_2 = 24365, - NPC_AMANISHI_GUARDIAN = 23597, + NPC_HARRISON_JONES_2 = 24365 }; enum Weapons @@ -417,7 +416,10 @@ struct npc_harrison_jones : public ScriptedAI std::list creatures; me->GetCreatureListWithEntryInGrid(creatures, NPC_AMANISHI_SAVAGE, 100.0f); for (Creature* creature : creatures) + { + creature->SetImmuneToAll(false); creature->SetInCombatWithZone(); + } }); _instance->StorePersistentData(DATA_TIMED_RUN, 21); _instance->DoAction(ACTION_START_TIMED_RUN); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index 444da72d0..097e4cbde 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -60,11 +60,12 @@ enum CreatureIds NPC_AMANISHI_MEDICINE_MAN = 23581, NPC_AMANISHI_AXE_THROWER = 23542, NPC_AMANI_HATCHLING = 23598, // 42493 + NPC_AMANISHI_GUARDIAN = 23597, // Akil'zon gauntlet NPC_AMANISHI_WIND_WALKER = 24179, - NPC_AMINISHI_LOOKOUT = 24175, - NPC_AMINISHI_PROTECTOR = 24180, - NPC_AMINISHI_TEMPEST = 24549, + NPC_AMANISHI_LOOKOUT = 24175, + NPC_AMANISHI_PROTECTOR = 24180, + NPC_AMANISHI_TEMPEST = 24549, NPC_EAGLE_TRASH_AGGRO_TRIGGER = 24223 };