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:
@@ -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);
|
||||||
@@ -32,7 +32,8 @@ enum Spells
|
|||||||
SPELL_FROSTBREATH = 16099,
|
SPELL_FROSTBREATH = 16099,
|
||||||
SPELL_MASSIVEGEYSER = 22421,
|
SPELL_MASSIVEGEYSER = 22421,
|
||||||
SPELL_SLAM = 24326,
|
SPELL_SLAM = 24326,
|
||||||
SPELL_THRASH = 3417 // Triggers 3391
|
SPELL_THRASH = 3417, // Triggers 3391
|
||||||
|
SPELL_SPLASH = 24593
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Events
|
enum Events
|
||||||
@@ -42,6 +43,11 @@ enum Events
|
|||||||
EVENT_SLAM = 3
|
EVENT_SLAM = 3
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Misc
|
||||||
|
{
|
||||||
|
GAMEOBJECT_MUDSKUNK_LURE = 180346
|
||||||
|
};
|
||||||
|
|
||||||
class boss_gahzranka : public CreatureScript
|
class boss_gahzranka : public CreatureScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -51,6 +57,11 @@ public:
|
|||||||
{
|
{
|
||||||
boss_gahzrankaAI(Creature* creature) : BossAI(creature, DATA_GAHZRANKA) { }
|
boss_gahzrankaAI(Creature* creature) : BossAI(creature, DATA_GAHZRANKA) { }
|
||||||
|
|
||||||
|
void IsSummonedBy(Unit* /*summoner*/) override
|
||||||
|
{
|
||||||
|
me->GetMotionMaster()->MovePath(me->GetEntry() * 10, false);
|
||||||
|
}
|
||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
_Reset();
|
_Reset();
|
||||||
@@ -147,8 +158,45 @@ private:
|
|||||||
bool _wipeThreat = false;
|
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()
|
void AddSC_boss_gahzranka()
|
||||||
{
|
{
|
||||||
new boss_gahzranka();
|
new boss_gahzranka();
|
||||||
RegisterSpellScript(spell_gahzranka_slam);
|
RegisterSpellScript(spell_gahzranka_slam);
|
||||||
|
RegisterSpellScript(spell_pagles_point_cast);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,11 @@ public:
|
|||||||
marli->AI()->JustSummoned(creature);
|
marli->AI()->JustSummoned(creature);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case NPC_GAHZRANKA:
|
||||||
|
_gahzrankaGUID = creature->GetGUID();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
InstanceScript::OnCreatureCreate(creature);
|
InstanceScript::OnCreatureCreate(creature);
|
||||||
@@ -119,6 +124,16 @@ public:
|
|||||||
return ObjectGuid::Empty;
|
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
|
std::string GetSaveData() override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
OUT_SAVE_INST_DATA;
|
||||||
@@ -170,6 +185,7 @@ public:
|
|||||||
ObjectGuid _arlokkGUID;
|
ObjectGuid _arlokkGUID;
|
||||||
ObjectGuid _goGongOfBethekkGUID;
|
ObjectGuid _goGongOfBethekkGUID;
|
||||||
ObjectGuid _hakkarGUID;
|
ObjectGuid _hakkarGUID;
|
||||||
|
ObjectGuid _gahzrankaGUID;
|
||||||
};
|
};
|
||||||
|
|
||||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||||
|
|||||||
@@ -62,7 +62,8 @@ enum CreatureIds
|
|||||||
NPC_CHAINED_SPIRIT = 15117, // Mandokir Event
|
NPC_CHAINED_SPIRIT = 15117, // Mandokir Event
|
||||||
NPC_HAKKAR = 14834,
|
NPC_HAKKAR = 14834,
|
||||||
NPC_ZULGURUB_TIGER = 11361,
|
NPC_ZULGURUB_TIGER = 11361,
|
||||||
NPC_BRAIN_WASH_TOTEM = 15112
|
NPC_BRAIN_WASH_TOTEM = 15112,
|
||||||
|
NPC_GAHZRANKA = 15114
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GameobjectIds
|
enum GameobjectIds
|
||||||
|
|||||||
Reference in New Issue
Block a user