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

View File

@@ -37,49 +37,38 @@ enum DeathlyUsher
SPELL_TELEPORT_GROUP = 27686
};
class spell_razelikh_teleport_group : public SpellScriptLoader
class spell_razelikh_teleport_group : public SpellScript
{
public:
spell_razelikh_teleport_group() : SpellScriptLoader("spell_razelikh_teleport_group") { }
PrepareSpellScript(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 });
}
void HandleScriptEffect(SpellEffIndex /* effIndex */)
{
if (Player* player = GetHitPlayer())
if (Group* group = player->GetGroup())
{
if (Group* group = player->GetGroup())
{
for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
if (Player* member = itr->GetSource())
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);
for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
if (Player* member = itr->GetSource())
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);
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_razelikh_teleport_group_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
void Register() 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()
{
new spell_razelikh_teleport_group();
RegisterSpellScript(spell_razelikh_teleport_group);
}

View File

@@ -457,31 +457,20 @@ enum PurificationIds
NPC_AURIC = 37765,
};
class spell_bh_cleanse_quel_delar : public SpellScriptLoader
class spell_bh_cleanse_quel_delar : public SpellScript
{
public:
spell_bh_cleanse_quel_delar() : SpellScriptLoader("spell_bh_cleanse_quel_delar") { }
PrepareSpellScript(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*/)
{
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
void Register() 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:
new npc_bh_thalorien_dawnseeker();
new spell_bh_cleanse_quel_delar();
RegisterSpellScript(spell_bh_cleanse_quel_delar);
new npc_grand_magister_rommath();
// THEIR:

View File

@@ -2223,36 +2223,25 @@ public:
######*/
// - 61123 - Ingest
class spell_blight_worm_ingest : public SpellScriptLoader
class spell_blight_worm_ingest : public SpellScript
{
public:
spell_blight_worm_ingest() : SpellScriptLoader("spell_blight_worm_ingest") { }
PrepareSpellScript(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
{
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
void HandleScript(SpellEffIndex /*effIndex*/)
{
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_lady_sylvanas_windrunner_bfu();
new boss_blight_worm();
new spell_blight_worm_ingest();
RegisterSpellScript(spell_blight_worm_ingest);
}