diff --git a/data/sql/updates/pending_db_world/rev_1653819851783034500.sql b/data/sql/updates/pending_db_world/rev_1653819851783034500.sql new file mode 100644 index 000000000..c4371af57 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1653819851783034500.sql @@ -0,0 +1,12 @@ +-- +UPDATE `spell_target_position` SET `PositionX`=-11688.5, `PositionY`=-1737.74, `PositionZ`=8.409842 WHERE `id` IN (24325, 24593); +DELETE FROM `event_scripts` WHERE `id`=9104; + +DELETE FROM `spell_script_names` WHERE `spell_id`=24325; +INSERT INTO `spell_script_names` VALUES +(24325, 'spell_pagles_point_cast'); + +DELETE FROM `waypoint_data` WHERE `id`=151140; +INSERT INTO `waypoint_data` VALUES +(151140,1,-11697.263,-1759.001,10.364448,0,0,0,0,100,0), +(151140,2,-11689.899,-1776.087,12.593142,6.098,0,0,0,100,0); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index 86e4c473d..4cf8348d0 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -32,7 +32,8 @@ enum Spells SPELL_FROSTBREATH = 16099, SPELL_MASSIVEGEYSER = 22421, SPELL_SLAM = 24326, - SPELL_THRASH = 3417 // Triggers 3391 + SPELL_THRASH = 3417, // Triggers 3391 + SPELL_SPLASH = 24593 }; enum Events @@ -42,6 +43,11 @@ enum Events EVENT_SLAM = 3 }; +enum Misc +{ + GAMEOBJECT_MUDSKUNK_LURE = 180346 +}; + class boss_gahzranka : public CreatureScript { public: @@ -51,6 +57,11 @@ public: { boss_gahzrankaAI(Creature* creature) : BossAI(creature, DATA_GAHZRANKA) { } + void IsSummonedBy(Unit* /*summoner*/) override + { + me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false); + } + void Reset() override { _Reset(); @@ -147,8 +158,45 @@ private: bool _wipeThreat = false; }; +class spell_pagles_point_cast : public SpellScript +{ + PrepareSpellScript(spell_pagles_point_cast); + + void OnEffect(SpellEffIndex /*effIndex*/) + { + if (Unit* caster = GetCaster()) + { + if (InstanceScript* instanceScript = caster->GetInstanceScript()) + { + if (!instanceScript->GetData(DATA_GAHZRANKA)) + { + caster->m_Events.AddEventAtOffset([caster]() + { + if (GameObject* lure = caster->SummonGameObject(GAMEOBJECT_MUDSKUNK_LURE, -11688.5f, -1737.74f, 10.409842f, 1.f, 0.f, 0.f, 0.f, 0.f, 30 * IN_MILLISECONDS)) + { + caster->m_Events.AddEventAtOffset([caster, lure]() + { + if (lure) + lure->DespawnOrUnsummon(); + caster->CastSpell(caster, SPELL_SPLASH, true); + caster->SummonCreature(NPC_GAHZRANKA, -11688.5f, -1723.74f, -5.78f, 0.f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5 * DAY * IN_MILLISECONDS); + }, 5s); + } + }, 2s); + } + } + } + } + + void Register() override + { + OnEffectLaunch += SpellEffectFn(spell_pagles_point_cast::OnEffect, EFFECT_1, SPELL_EFFECT_SEND_EVENT); + } +}; + void AddSC_boss_gahzranka() { new boss_gahzranka(); RegisterSpellScript(spell_gahzranka_slam); + RegisterSpellScript(spell_pagles_point_cast); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index dcffbd4ff..6e99c2fb6 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -79,6 +79,11 @@ public: marli->AI()->JustSummoned(creature); } break; + case NPC_GAHZRANKA: + _gahzrankaGUID = creature->GetGUID(); + break; + default: + break; } InstanceScript::OnCreatureCreate(creature); @@ -119,6 +124,16 @@ public: return ObjectGuid::Empty; } + uint32 GetData(uint32 type) const override + { + if (type == DATA_GAHZRANKA) + { + return _gahzrankaGUID || GetBossState(DATA_GAHZRANKA) == DONE; + } + + return 0; + } + std::string GetSaveData() override { OUT_SAVE_INST_DATA; @@ -170,6 +185,7 @@ public: ObjectGuid _arlokkGUID; ObjectGuid _goGongOfBethekkGUID; ObjectGuid _hakkarGUID; + ObjectGuid _gahzrankaGUID; }; InstanceScript* GetInstanceScript(InstanceMap* map) const override diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 6b290f3c4..8736e5d4d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -62,7 +62,8 @@ enum CreatureIds NPC_CHAINED_SPIRIT = 15117, // Mandokir Event NPC_HAKKAR = 14834, NPC_ZULGURUB_TIGER = 11361, - NPC_BRAIN_WASH_TOTEM = 15112 + NPC_BRAIN_WASH_TOTEM = 15112, + NPC_GAHZRANKA = 15114 }; enum GameobjectIds