fix(Scripts/ZulGurub): Improvements to Gah'zranka: (#11908)

Summoned Mudskunk Lure object and added visual splash.
Added pathing to Gahzranka
Corrected visual coordinates.
Gahzranka can be summoned only once per instance.
Fixes #11560
This commit is contained in:
UltraNix
2022-06-14 04:33:35 +02:00
committed by GitHub
parent f0eb0647f4
commit f9368ed00d
4 changed files with 79 additions and 2 deletions

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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