fix(Scripts/ZulDrak): Fix Ghymer not being healed by storm clouds (#22302)

This commit is contained in:
Andrew
2025-06-18 10:47:10 -03:00
committed by GitHub
parent 4d2fe013fd
commit d94fbb1609
3 changed files with 15 additions and 54 deletions

View File

@@ -0,0 +1,3 @@
--
UPDATE `creature_template_addon` SET `auras` = '55708' WHERE `entry` = 29939;
UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` = 29939;

View File

@@ -819,54 +819,6 @@ public:
}
};
enum StormCloud
{
STORM_COULD = 29939,
HEALING_WINDS = 55549,
STORM_VISUAL = 55708,
GYMERS_GRAB = 55516,
RIDE_VEHICLE = 43671
};
class npc_storm_cloud : public CreatureScript
{
public:
npc_storm_cloud() : CreatureScript("npc_storm_cloud") { }
struct npc_storm_cloudAI : public ScriptedAI
{
npc_storm_cloudAI(Creature* creature) : ScriptedAI(creature) { }
void Reset() override
{
me->CastSpell(me, STORM_VISUAL, true);
}
void JustRespawned() override
{
Reset();
}
void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id != GYMERS_GRAB)
return;
if (Vehicle* veh = caster->GetVehicleKit())
if (veh->GetAvailableSeatCount() != 0)
{
me->CastSpell(caster, RIDE_VEHICLE, true);
me->CastSpell(caster, HEALING_WINDS, true);
}
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_storm_cloudAI(creature);
}
};
enum ScourgeDisguiseInstability
{
SCOURGE_DISGUISE_FAILING_MESSAGE_1 = 28552, // Scourge Disguise Failing! Find a safe place!
@@ -922,7 +874,6 @@ void AddSC_zuldrak()
new npc_released_offspring_harkoa();
new npc_crusade_recruit();
new go_scourge_enclosure();
new npc_storm_cloud();
RegisterSpellScript(spell_scourge_disguise_instability);
}

View File

@@ -2269,7 +2269,10 @@ class spell_q12619_emblazon_runeblade_effect : public SpellScript
enum Quest_The_Storm_King
{
SPELL_RIDE_GYMER = 43671,
SPELL_GRABBED = 55424
SPELL_GRABBED = 55424,
SPELL_HEALING_WINDS = 55549,
NPC_STORM_CLOUD = 29939
};
class spell_q12919_gymers_grab : public SpellScript
@@ -2284,10 +2287,14 @@ class spell_q12919_gymers_grab : public SpellScript
void HandleScript(SpellEffIndex /*effIndex*/)
{
int8 seatId = 2;
if (!GetHitCreature())
return;
GetHitCreature()->CastCustomSpell(SPELL_RIDE_GYMER, SPELLVALUE_BASE_POINT0, seatId, GetCaster(), true);
GetHitCreature()->CastSpell(GetHitCreature(), SPELL_GRABBED, true);
if (Creature* creature = GetHitCreature())
{
creature->CastCustomSpell(SPELL_RIDE_GYMER, SPELLVALUE_BASE_POINT0, seatId, GetCaster(), true);
creature->CastSpell(creature, SPELL_GRABBED, true);
if (creature->GetEntry() == NPC_STORM_CLOUD)
creature->CastSpell(GetCaster(), SPELL_HEALING_WINDS, true);
}
}
void Register() override