From 456b1a086290be07d84ef74ca1bf3d70ccf9ea0e Mon Sep 17 00:00:00 2001 From: valens14 Date: Mon, 29 Nov 2021 06:14:02 -0500 Subject: [PATCH] fix(Raid/AQ40): Ouro not spawning (#9285) --- .../rev_1637594598317103800.sql | 4 ++ .../Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp | 57 ++++++++++++++++++- .../TempleOfAhnQiraj/temple_of_ahnqiraj.h | 3 +- 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1637594598317103800.sql diff --git a/data/sql/updates/pending_db_world/rev_1637594598317103800.sql b/data/sql/updates/pending_db_world/rev_1637594598317103800.sql new file mode 100644 index 000000000..d38303d69 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1637594598317103800.sql @@ -0,0 +1,4 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1637594598317103800'); +UPDATE `creature_template` SET `ScriptName`='npc_ouro_spawner' WHERE `entry`=15957; +UPDATE `creature_template` SET `flags_extra`='128' WHERE `entry`=15957; +UPDATE `creature_template` SET `InhabitType`='9' WHERE `entry`=15957; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index 6a252aba2..b0f951e49 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -22,8 +22,8 @@ SDComment: No model for submerging. Currently just invisible. SDCategory: Temple of Ahn'Qiraj EndScriptData */ -#include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "ScriptMgr.h" #include "temple_of_ahnqiraj.h" enum Spells @@ -32,7 +32,59 @@ enum Spells SPELL_SANDBLAST = 26102, SPELL_GROUND_RUPTURE = 26100, SPELL_BIRTH = 26262, // The Birth Animation - SPELL_DIRTMOUND_PASSIVE = 26092 + SPELL_DIRTMOUND_PASSIVE = 26092, + SPELL_SUMMON_OURO = 26061 +}; + +class npc_ouro_spawner : public CreatureScript +{ +public: + npc_ouro_spawner() : CreatureScript("npc_ouro_spawner") {} + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_ouro_spawnerAI(creature); + } + + struct npc_ouro_spawnerAI : public ScriptedAI + { + npc_ouro_spawnerAI(Creature* creature) : ScriptedAI(creature) + { + Reset(); + } + + bool hasSummoned; + + void Reset() override + { + hasSummoned = false; + DoCast(me, SPELL_DIRTMOUND_PASSIVE); + } + + void MoveInLineOfSight(Unit* who) override + { + // Spawn Ouro on LoS check + if (!hasSummoned && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 40.0f)) + { + DoCast(me, SPELL_SUMMON_OURO); + hasSummoned = true; + } + + ScriptedAI::MoveInLineOfSight(who); + } + + void JustSummoned(Creature* creature) override + { + // Despawn when Ouro is spawned + if (creature->GetEntry() == NPC_OURO) + { + creature->SetInCombatWithZone(); + creature->CastSpell(creature, SPELL_BIRTH, false); + me->DespawnOrUnsummon(); + } + } + + }; }; class boss_ouro : public CreatureScript @@ -145,5 +197,6 @@ public: void AddSC_boss_ouro() { + new npc_ouro_spawner(); new boss_ouro(); } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index 63a8abb61..e36714e1b 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -60,7 +60,8 @@ enum Creatures NPC_VEM = 15544, NPC_KRI = 15511, NPC_VEKLOR = 15276, - NPC_VEKNILASH = 15275 + NPC_VEKNILASH = 15275, + NPC_OURO = 15517 }; template