fix(Scripts/ZulAman): prevent early engaging of door guardians to skip timed event (#21177)

This commit is contained in:
Jelle Meeus
2025-01-15 23:52:10 +01:00
committed by GitHub
parent a37e0c9717
commit aefd3a5a3f
4 changed files with 28 additions and 15 deletions
@@ -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)');
@@ -65,7 +65,7 @@ ObjectData const creatureData[] =
{ NPC_JANALAI, DATA_JANALAI }, { NPC_JANALAI, DATA_JANALAI },
{ NPC_SPIRIT_LYNX, DATA_SPIRIT_LYNX }, { NPC_SPIRIT_LYNX, DATA_SPIRIT_LYNX },
{ NPC_HARRISON_JONES, DATA_HARRISON_JONES }, { NPC_HARRISON_JONES, DATA_HARRISON_JONES },
{ NPC_AMINISHI_LOOKOUT, DATA_LOOKOUT }, { NPC_AMANISHI_LOOKOUT, DATA_LOOKOUT },
{ 0, 0 } { 0, 0 }
}; };
@@ -127,13 +127,18 @@ public:
{ {
switch (creature->GetEntry()) switch (creature->GetEntry())
{ {
case NPC_AMANISHI_GUARDIAN:
case NPC_AMANISHI_SAVAGE:
if (creature->GetPositionY() >= 1500.0f) // gate
creature->SetImmuneToAll(true);
break;
// Akil'zon gauntlet // Akil'zon gauntlet
case NPC_AMINISHI_TEMPEST: case NPC_AMANISHI_TEMPEST:
if (creature->GetPositionZ() >= 50.0f) // excludes Tempest in Hexlord Malacrass' trash if (creature->GetPositionZ() >= 50.0f) // excludes Tempest in Hexlord Malacrass' trash
AkilzonTrash.insert(creature->GetGUID()); AkilzonTrash.insert(creature->GetGUID());
break; break;
case NPC_AMINISHI_LOOKOUT: case NPC_AMANISHI_LOOKOUT:
case NPC_AMINISHI_PROTECTOR: case NPC_AMANISHI_PROTECTOR:
case NPC_EAGLE_TRASH_AGGRO_TRIGGER: case NPC_EAGLE_TRASH_AGGRO_TRIGGER:
AkilzonTrash.insert(creature->GetGUID()); AkilzonTrash.insert(creature->GetGUID());
break; break;
@@ -226,8 +231,8 @@ public:
case NPC_EAGLE_TRASH_AGGRO_TRIGGER: case NPC_EAGLE_TRASH_AGGRO_TRIGGER:
creature->DisappearAndDie(); creature->DisappearAndDie();
break; break;
case NPC_AMINISHI_LOOKOUT: case NPC_AMANISHI_LOOKOUT:
case NPC_AMINISHI_TEMPEST: case NPC_AMANISHI_TEMPEST:
creature->AI()->DoAction(ACTION_START_AKILZON_GAUNTLET); creature->AI()->DoAction(ACTION_START_AKILZON_GAUNTLET);
break; break;
default: default:
@@ -243,7 +248,7 @@ public:
{ {
if (!creature->IsAlive()) if (!creature->IsAlive())
creature->Respawn(); creature->Respawn();
else if (creature->GetEntry() == NPC_AMINISHI_TEMPEST) else if (creature->GetEntry() == NPC_AMANISHI_TEMPEST)
creature->AI()->DoAction(ACTION_RESET_AKILZON_GAUNTLET); creature->AI()->DoAction(ACTION_RESET_AKILZON_GAUNTLET);
} }
if (Creature* creature = GetCreature(DATA_LOOKOUT)) if (Creature* creature = GetCreature(DATA_LOOKOUT))
@@ -259,7 +264,7 @@ public:
switch (creature->GetEntry()) switch (creature->GetEntry())
{ {
case NPC_AMINISHI_PROTECTOR: case NPC_AMANISHI_PROTECTOR:
case NPC_AMANISHI_WIND_WALKER: case NPC_AMANISHI_WIND_WALKER:
if (_akilzonGauntlet == NOT_STARTED && AkilzonTrash.contains(creature->GetGUID())) if (_akilzonGauntlet == NOT_STARTED && AkilzonTrash.contains(creature->GetGUID()))
creature->DespawnOrUnsummon(30s, 1s); creature->DespawnOrUnsummon(30s, 1s);
@@ -272,8 +277,8 @@ public:
{ {
switch (creature->GetEntry()) switch (creature->GetEntry())
{ {
case NPC_AMINISHI_TEMPEST: case NPC_AMANISHI_TEMPEST:
case NPC_AMINISHI_PROTECTOR: case NPC_AMANISHI_PROTECTOR:
case NPC_AMANISHI_WIND_WALKER: case NPC_AMANISHI_WIND_WALKER:
if (AkilzonTrash.contains(creature->GetGUID())) if (AkilzonTrash.contains(creature->GetGUID()))
ResetAkilzonGauntlet(); ResetAkilzonGauntlet();
@@ -358,8 +358,7 @@ enum DisplayIds
enum EntryIds enum EntryIds
{ {
NPC_HARRISON_JONES_1 = 24375, NPC_HARRISON_JONES_1 = 24375,
NPC_HARRISON_JONES_2 = 24365, NPC_HARRISON_JONES_2 = 24365
NPC_AMANISHI_GUARDIAN = 23597,
}; };
enum Weapons enum Weapons
@@ -417,7 +416,10 @@ struct npc_harrison_jones : public ScriptedAI
std::list<Creature*> creatures; std::list<Creature*> creatures;
me->GetCreatureListWithEntryInGrid(creatures, NPC_AMANISHI_SAVAGE, 100.0f); me->GetCreatureListWithEntryInGrid(creatures, NPC_AMANISHI_SAVAGE, 100.0f);
for (Creature* creature : creatures) for (Creature* creature : creatures)
{
creature->SetImmuneToAll(false);
creature->SetInCombatWithZone(); creature->SetInCombatWithZone();
}
}); });
_instance->StorePersistentData(DATA_TIMED_RUN, 21); _instance->StorePersistentData(DATA_TIMED_RUN, 21);
_instance->DoAction(ACTION_START_TIMED_RUN); _instance->DoAction(ACTION_START_TIMED_RUN);
@@ -60,11 +60,12 @@ enum CreatureIds
NPC_AMANISHI_MEDICINE_MAN = 23581, NPC_AMANISHI_MEDICINE_MAN = 23581,
NPC_AMANISHI_AXE_THROWER = 23542, NPC_AMANISHI_AXE_THROWER = 23542,
NPC_AMANI_HATCHLING = 23598, // 42493 NPC_AMANI_HATCHLING = 23598, // 42493
NPC_AMANISHI_GUARDIAN = 23597,
// Akil'zon gauntlet // Akil'zon gauntlet
NPC_AMANISHI_WIND_WALKER = 24179, NPC_AMANISHI_WIND_WALKER = 24179,
NPC_AMINISHI_LOOKOUT = 24175, NPC_AMANISHI_LOOKOUT = 24175,
NPC_AMINISHI_PROTECTOR = 24180, NPC_AMANISHI_PROTECTOR = 24180,
NPC_AMINISHI_TEMPEST = 24549, NPC_AMANISHI_TEMPEST = 24549,
NPC_EAGLE_TRASH_AGGRO_TRIGGER = 24223 NPC_EAGLE_TRASH_AGGRO_TRIGGER = 24223
}; };