From e837fa84f3da80f471a8555966a495db9d70adbc Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Mon, 30 Dec 2024 23:23:46 +0100 Subject: [PATCH] fix(Scripts/ZulAman): Eagle Gauntlet behavior (#20947) --- .../rev_1734398393541318995.sql | 11 +++++ .../ZulAman/instance_zulaman.cpp | 4 ++ .../EasternKingdoms/ZulAman/zulaman.cpp | 42 ++++++------------- .../scripts/EasternKingdoms/ZulAman/zulaman.h | 1 + 4 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1734398393541318995.sql diff --git a/data/sql/updates/pending_db_world/rev_1734398393541318995.sql b/data/sql/updates/pending_db_world/rev_1734398393541318995.sql new file mode 100644 index 000000000..7694bee4e --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1734398393541318995.sql @@ -0,0 +1,11 @@ +-- +-- Eagle Trash Aggro Trigger +UPDATE `creature_template` SET `ScriptName` = '' WHERE (`entry` = 24223); +-- set spawntime to 30min Amani'shi Tempest +UPDATE `creature` SET `spawntimesecs` = 1800 WHERE (`id1` = 24549) AND (`guid` IN (89283)); +-- delete Amani'shi Wind Walker #5 next to Tempest +DELETE FROM `creature` WHERE (`id1` = 24179) AND (`guid` IN (1107)); +-- delete Amani'shi Protector #5 next to Tempest +DELETE FROM `creature` WHERE (`id1` = 24180) AND (`guid` IN (89311)); +DELETE FROM `creature_addon` WHERE `guid` IN (1107, 89311); +DELETE FROM `linked_respawn` WHERE `guid` IN (1107, 89311); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index abb733126..802fb0fdd 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -238,8 +238,12 @@ public: _akilzonGauntlet = NOT_STARTED; for (ObjectGuid guid : AkilzonTrash) if (Creature* creature = instance->GetCreature(guid)) + { if (!creature->IsAlive()) creature->Respawn(); + else if (creature->GetEntry() == NPC_AMINISHI_TEMPEST) + creature->AI()->DoAction(ACTION_RESET_AKILZON_GAUNTLET); + } if (Creature* creature = GetCreature(DATA_LOOKOUT)) if (creature->isMoving()) creature->Respawn(true); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 83034d117..97dde689d 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -590,7 +590,6 @@ private: enum AmanishiTempest { - ACTION_START_GAUNTLET = 1, GROUP_AKILZON_GAUNTLET = 1, SPELL_SUMMON_EAGLE = 43487, SPELL_SUMMON_WARRIOR = 43486, @@ -605,6 +604,11 @@ struct npc_amanishi_tempest : public ScriptedAI { _summons.DespawnAll(); scheduler.CancelAll(); + } + + void JustEngagedWith(Unit* /*who*/) override + { + scheduler.CancelGroup(GROUP_AKILZON_GAUNTLET); scheduler.Schedule(9s, 11s, [this](TaskContext context) { DoCastVictim(SPELL_THUNDERCLAP); @@ -627,8 +631,15 @@ struct npc_amanishi_tempest : public ScriptedAI void DoAction(int32 action) override { - if (action == ACTION_START_GAUNTLET) + if (action == ACTION_START_AKILZON_GAUNTLET) ScheduleEvents(); + else if (action == ACTION_RESET_AKILZON_GAUNTLET) + Reset(); + } + + void SummonedCreatureEvade(Creature* /*summon*/) override + { + EnterEvadeMode(EVADE_REASON_OTHER); } void EnterEvadeMode(EvadeReason why) override @@ -639,7 +650,6 @@ struct npc_amanishi_tempest : public ScriptedAI void ScheduleEvents() { - me->SetInCombatWithZone(); scheduler.Schedule(29s, 53s, GROUP_AKILZON_GAUNTLET, [this](TaskContext context) { for (uint8 i = 0; i < 5; ++i) @@ -656,11 +666,6 @@ struct npc_amanishi_tempest : public ScriptedAI void UpdateAI(uint32 diff) override { scheduler.Update(diff); - if (!me->IsEngaged()) - return; - Unit* victim = me->SelectVictim(); - if (!victim || me->GetExactDist(victim) > me->GetAggroRange(victim)) - return; ScriptedAI::UpdateAI(diff); } @@ -669,26 +674,6 @@ private: SummonList _summons; }; -struct npc_eagle_trash_aggro_trigger : public ScriptedAI -{ - npc_eagle_trash_aggro_trigger(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) {} - - void MoveInLineOfSight(Unit* who) override - { - if (!me->IsWithinDist(who, 10.0f, false)) // distance not confirmed - return; - - Player* player = who->GetCharmerOrOwnerPlayerOrPlayerItself(); - if (!player || player->IsGameMaster()) - return; - - if (_instance->GetData(TYPE_AKILZON_GAUNTLET) == NOT_STARTED) - _instance->SetData(TYPE_AKILZON_GAUNTLET, IN_PROGRESS); - } -private: - InstanceScript* _instance; -}; - void AddSC_zulaman() { RegisterZulAmanCreatureAI(npc_forest_frog); @@ -697,5 +682,4 @@ void AddSC_zulaman() RegisterSpellScript(spell_ritual_of_power); RegisterZulAmanCreatureAI(npc_amanishi_lookout); RegisterZulAmanCreatureAI(npc_amanishi_tempest); - RegisterZulAmanCreatureAI(npc_eagle_trash_aggro_trigger); } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index bebca990c..66e3b079a 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -92,6 +92,7 @@ enum MiscIds DATA_TIMED_RUN = 0, ACTION_START_TIMED_RUN = 0, ACTION_START_AKILZON_GAUNTLET = 1, + ACTION_RESET_AKILZON_GAUNTLET = 2, GROUP_TIMED_RUN = 1 };