refactor(Scripts/EasternKingdoms): RegisterSpellScript macro (#19241)

* zone_undercity spell:spell_blight_worm_ingest

* zone_blasted_lands spell:spell_razelikh_teleport_group

* zone_isle_of_queldanas spell:spell_bh_cleanse_quel_delar
This commit is contained in:
Jelle Meeus
2024-07-01 23:28:03 +02:00
committed by GitHub
parent f9dc7dfe5e
commit 47ad691c92
3 changed files with 44 additions and 77 deletions
@@ -37,49 +37,38 @@ enum DeathlyUsher
SPELL_TELEPORT_GROUP = 27686 SPELL_TELEPORT_GROUP = 27686
}; };
class spell_razelikh_teleport_group : public SpellScriptLoader class spell_razelikh_teleport_group : public SpellScript
{ {
public: PrepareSpellScript(spell_razelikh_teleport_group);
spell_razelikh_teleport_group() : SpellScriptLoader("spell_razelikh_teleport_group") { }
class spell_razelikh_teleport_group_SpellScript : public SpellScript bool Validate(SpellInfo const* /*spell*/) override
{ {
PrepareSpellScript(spell_razelikh_teleport_group_SpellScript); return ValidateSpellInfo({ SPELL_TELEPORT_SINGLE, SPELL_TELEPORT_SINGLE_IN_GROUP });
}
bool Validate(SpellInfo const* /*spell*/) override void HandleScriptEffect(SpellEffIndex /* effIndex */)
{
if (Player* player = GetHitPlayer())
{ {
return ValidateSpellInfo({ SPELL_TELEPORT_SINGLE, SPELL_TELEPORT_SINGLE_IN_GROUP }); if (Group* group = player->GetGroup())
}
void HandleScriptEffect(SpellEffIndex /* effIndex */)
{
if (Player* player = GetHitPlayer())
{ {
if (Group* group = player->GetGroup()) for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
{ if (Player* member = itr->GetSource())
for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) if (member->IsWithinDistInMap(player, 20.0f) && !member->isDead())
if (Player* member = itr->GetSource()) member->CastSpell(member, SPELL_TELEPORT_SINGLE_IN_GROUP, true);
if (member->IsWithinDistInMap(player, 20.0f) && !member->isDead())
member->CastSpell(member, SPELL_TELEPORT_SINGLE_IN_GROUP, true);
}
else
player->CastSpell(player, SPELL_TELEPORT_SINGLE, true);
} }
else
player->CastSpell(player, SPELL_TELEPORT_SINGLE, true);
} }
}
void Register() override void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_razelikh_teleport_group_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
{ {
return new spell_razelikh_teleport_group_SpellScript(); OnEffectHitTarget += SpellEffectFn(spell_razelikh_teleport_group::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
} }
}; };
void AddSC_blasted_lands() void AddSC_blasted_lands()
{ {
new spell_razelikh_teleport_group(); RegisterSpellScript(spell_razelikh_teleport_group);
} }
@@ -457,31 +457,20 @@ enum PurificationIds
NPC_AURIC = 37765, NPC_AURIC = 37765,
}; };
class spell_bh_cleanse_quel_delar : public SpellScriptLoader class spell_bh_cleanse_quel_delar : public SpellScript
{ {
public: PrepareSpellScript(spell_bh_cleanse_quel_delar);
spell_bh_cleanse_quel_delar() : SpellScriptLoader("spell_bh_cleanse_quel_delar") { }
class spell_bh_cleanse_quel_delar_SpellScript : public SpellScript void OnEffect(SpellEffIndex /*effIndex*/)
{ {
PrepareSpellScript(spell_bh_cleanse_quel_delar_SpellScript); if (Unit* caster = GetCaster())
if (Creature* c = caster->FindNearestCreature(NPC_ROMMATH, 50.0f, true))
c->AI()->DoAction(-1);
}
void OnEffect(SpellEffIndex /*effIndex*/) void Register() override
{
if (Unit* caster = GetCaster())
if (Creature* c = caster->FindNearestCreature(NPC_ROMMATH, 50.0f, true))
c->AI()->DoAction(-1);
}
void Register() override
{
OnEffectLaunch += SpellEffectFn(spell_bh_cleanse_quel_delar_SpellScript::OnEffect, EFFECT_0, SPELL_EFFECT_SEND_EVENT);
}
};
SpellScript* GetSpellScript() const override
{ {
return new spell_bh_cleanse_quel_delar_SpellScript(); OnEffectLaunch += SpellEffectFn(spell_bh_cleanse_quel_delar::OnEffect, EFFECT_0, SPELL_EFFECT_SEND_EVENT);
} }
}; };
@@ -692,7 +681,7 @@ void AddSC_isle_of_queldanas()
{ {
// OUR: // OUR:
new npc_bh_thalorien_dawnseeker(); new npc_bh_thalorien_dawnseeker();
new spell_bh_cleanse_quel_delar(); RegisterSpellScript(spell_bh_cleanse_quel_delar);
new npc_grand_magister_rommath(); new npc_grand_magister_rommath();
// THEIR: // THEIR:
@@ -2223,36 +2223,25 @@ public:
######*/ ######*/
// - 61123 - Ingest // - 61123 - Ingest
class spell_blight_worm_ingest : public SpellScriptLoader class spell_blight_worm_ingest : public SpellScript
{ {
public: PrepareSpellScript(spell_blight_worm_ingest);
spell_blight_worm_ingest() : SpellScriptLoader("spell_blight_worm_ingest") { }
class spell_blight_worm_ingest_SpellScript : public SpellScript bool Validate(SpellInfo const* /*spellInfo*/) override
{ {
PrepareSpellScript(spell_blight_worm_ingest_SpellScript); return ValidateSpellInfo({ SPELL_INGEST });
}
bool Validate(SpellInfo const* /*spellInfo*/) override void HandleScript(SpellEffIndex /*effIndex*/)
{
return ValidateSpellInfo({ SPELL_INGEST });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
if (Unit* target = GetHitUnit())
if (Unit* caster = GetCaster())
target->CastSpell(caster, SPELL_INGEST_TRIGGER, true);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_blight_worm_ingest_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
{ {
return new spell_blight_worm_ingest_SpellScript(); if (Unit* target = GetHitUnit())
if (Unit* caster = GetCaster())
target->CastSpell(caster, SPELL_INGEST_TRIGGER, true);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_blight_worm_ingest::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
} }
}; };
@@ -4082,5 +4071,5 @@ void AddSC_undercity()
new npc_jaina_proudmoore_bfu(); new npc_jaina_proudmoore_bfu();
new npc_lady_sylvanas_windrunner_bfu(); new npc_lady_sylvanas_windrunner_bfu();
new boss_blight_worm(); new boss_blight_worm();
new spell_blight_worm_ingest(); RegisterSpellScript(spell_blight_worm_ingest);
} }