refactor(Scripts/Events): convert love_in_air to new system (#9609)

This commit is contained in:
Kitzunu
2021-12-13 09:22:16 +01:00
committed by GitHub
parent 562c6a42f5
commit 2af6e0ee20
+41 -165
View File
@@ -53,14 +53,9 @@ enum SupplySentrySay
SAY_SUPPLY_SENTRY_0 = 0 SAY_SUPPLY_SENTRY_0 = 0
}; };
class npc_love_in_air_supply_sentry : public CreatureScript struct npc_love_in_air_supply_sentry : public ScriptedAI
{ {
public: npc_love_in_air_supply_sentry(Creature* creature) : ScriptedAI(creature), lock(0)
npc_love_in_air_supply_sentry() : CreatureScript("npc_love_in_air_supply_sentry") { }
struct npc_love_in_air_supply_sentryAI : public ScriptedAI
{
npc_love_in_air_supply_sentryAI(Creature* creature) : ScriptedAI(creature), lock(0)
{ {
} }
@@ -99,12 +94,6 @@ public:
} }
}; };
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_supply_sentryAI(creature);
}
};
enum hotOnTrail enum hotOnTrail
{ {
QUEST_HOT_ON_TRAIL_ALLY = 24849, QUEST_HOT_ON_TRAIL_ALLY = 24849,
@@ -120,16 +109,9 @@ enum hotOnTrail
const uint32 spellTable[6] = {71713, 71745, 71752, 71759, 71760, 71758}; const uint32 spellTable[6] = {71713, 71745, 71752, 71759, 71760, 71758};
class npc_love_in_air_snivel : public CreatureScript struct npc_love_in_air_snivel : public NullCreatureAI
{ {
public: npc_love_in_air_snivel(Creature* creature) : NullCreatureAI(creature) { }
npc_love_in_air_snivel() : CreatureScript("npc_love_in_air_snivel") { }
struct npc_love_in_air_snivelAI : public NullCreatureAI
{
npc_love_in_air_snivelAI(Creature* creature) : NullCreatureAI(creature)
{
}
int32 delay; int32 delay;
@@ -173,12 +155,6 @@ public:
} }
}; };
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_snivelAI(creature);
}
};
enum SnivelRealSay enum SnivelRealSay
{ {
SAY_SNIVEL_REAL_0 = 0, SAY_SNIVEL_REAL_0 = 0,
@@ -187,14 +163,9 @@ enum SnivelRealSay
SAY_SNIVEL_REAL_3 = 3 SAY_SNIVEL_REAL_3 = 3
}; };
class npc_love_in_air_snivel_real : public CreatureScript struct npc_love_in_air_snivel_real : public ScriptedAI
{ {
public: npc_love_in_air_snivel_real(Creature* creature) : ScriptedAI(creature)
npc_love_in_air_snivel_real() : CreatureScript("npc_love_in_air_snivel_real") { }
struct npc_love_in_air_snivel_realAI : public ScriptedAI
{
npc_love_in_air_snivel_realAI(Creature* creature) : ScriptedAI(creature)
{ {
actionTimer = 7000; actionTimer = 7000;
actionCounter = 0; actionCounter = 0;
@@ -283,12 +254,6 @@ public:
} }
}; };
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_snivel_realAI(creature);
}
};
/////////////////////////////////////// ///////////////////////////////////////
////// BOSS ////// BOSS
/////////////////////////////////////// ///////////////////////////////////////
@@ -330,16 +295,9 @@ enum HummelSay
SAY_HUMMEL_5 = 5 SAY_HUMMEL_5 = 5
}; };
class npc_love_in_air_hummel : public CreatureScript struct npc_love_in_air_hummel : public ScriptedAI
{ {
public: npc_love_in_air_hummel(Creature* creature) : ScriptedAI(creature), summons(me) { }
npc_love_in_air_hummel() : CreatureScript("npc_love_in_air_hummel") { }
struct npc_love_in_air_hummelAI : public ScriptedAI
{
npc_love_in_air_hummelAI(Creature* creature) : ScriptedAI(creature), summons(me)
{
}
SummonList summons; SummonList summons;
EventMap events; EventMap events;
@@ -460,35 +418,14 @@ public:
} }
}; };
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_hummelAI(creature);
}
bool OnQuestReward(Player* /*player*/, Creature* creature, const Quest* _Quest, uint32 /*slot*/) override
{
if (_Quest->GetQuestId() == QUEST_YOUVE_BEEN_SERVED)
creature->AI()->DoAction(ACTION_START_EVENT);
return true;
}
};
enum HummelHelperSay enum HummelHelperSay
{ {
SAY_HUMMEL_HELPER_SAY_5 = 5, SAY_HUMMEL_HELPER_SAY_5 = 5,
}; };
class npc_love_in_air_hummel_helper : public CreatureScript struct npc_love_in_air_hummel_helper : public ScriptedAI
{ {
public: npc_love_in_air_hummel_helper(Creature* creature) : ScriptedAI(creature) { }
npc_love_in_air_hummel_helper() : CreatureScript("npc_love_in_air_hummel_helper") { }
struct npc_love_in_air_hummel_helperAI : public ScriptedAI
{
npc_love_in_air_hummel_helperAI(Creature* creature) : ScriptedAI(creature)
{
}
EventMap events; EventMap events;
@@ -568,20 +505,13 @@ public:
} }
}; };
CreatureAI* GetAI(Creature* creature) const override ///////////////////////////////////////
{ ////// SPELLS
return new npc_love_in_air_hummel_helperAI(creature); ///////////////////////////////////////
}
};
class spell_love_in_air_perfume_immune : public SpellScriptLoader class spell_love_in_air_perfume_immune : public AuraScript
{ {
public: PrepareAuraScript(spell_love_in_air_perfume_immune);
spell_love_in_air_perfume_immune() : SpellScriptLoader("spell_love_in_air_perfume_immune") { }
class spell_love_in_air_perfume_immune_AuraScript : public AuraScript
{
PrepareAuraScript(spell_love_in_air_perfume_immune_AuraScript);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{ {
@@ -619,25 +549,14 @@ public:
void Register() override void Register() override
{ {
OnEffectApply += AuraEffectApplyFn(spell_love_in_air_perfume_immune_AuraScript::HandleEffectApply, EFFECT_2, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); OnEffectApply += AuraEffectApplyFn(spell_love_in_air_perfume_immune::HandleEffectApply, EFFECT_2, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_love_in_air_perfume_immune_AuraScript::HandleEffectRemove, EFFECT_2, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); OnEffectRemove += AuraEffectRemoveFn(spell_love_in_air_perfume_immune::HandleEffectRemove, EFFECT_2, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
} }
}; };
AuraScript* GetAuraScript() const override class spell_love_in_air_periodic_perfumes : public AuraScript
{ {
return new spell_love_in_air_perfume_immune_AuraScript(); PrepareAuraScript(spell_love_in_air_periodic_perfumes);
}
};
class spell_love_in_air_periodic_perfumes : public SpellScriptLoader
{
public:
spell_love_in_air_periodic_perfumes() : SpellScriptLoader("spell_love_in_air_periodic_perfumes") { }
class spell_love_in_air_periodic_perfumes_AuraScript : public AuraScript
{
PrepareAuraScript(spell_love_in_air_periodic_perfumes_AuraScript);
void PeriodicTick(AuraEffect const* /*aurEff*/) void PeriodicTick(AuraEffect const* /*aurEff*/)
{ {
@@ -654,20 +573,10 @@ public:
void Register() override void Register() override
{ {
OnEffectPeriodic += AuraEffectPeriodicFn(spell_love_in_air_periodic_perfumes_AuraScript::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); OnEffectPeriodic += AuraEffectPeriodicFn(spell_love_in_air_periodic_perfumes::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
} }
}; };
AuraScript* GetAuraScript() const override
{
return new spell_love_in_air_periodic_perfumes_AuraScript();
}
};
///////////////////////////////////////
////// SPELLS
///////////////////////////////////////
enum CreateHeartCandy enum CreateHeartCandy
{ {
SPELL_CREATE_HEART_CANDY_1 = 26668, SPELL_CREATE_HEART_CANDY_1 = 26668,
@@ -688,14 +597,9 @@ std::array<uint32, 8> constexpr CreateHeartCandySpells =
}; };
// 26678 - Create Heart Candy // 26678 - Create Heart Candy
class spell_item_create_heart_candy : public SpellScriptLoader class spell_item_create_heart_candy : public SpellScript
{ {
public: PrepareSpellScript(spell_item_create_heart_candy);
spell_item_create_heart_candy() : SpellScriptLoader("spell_item_create_heart_candy") { }
class spell_item_create_heart_candy_SpellScript : public SpellScript
{
PrepareSpellScript(spell_item_create_heart_candy_SpellScript);
bool Validate(SpellInfo const* /*spellInfo*/) override bool Validate(SpellInfo const* /*spellInfo*/) override
{ {
@@ -714,13 +618,7 @@ public:
void Register() override void Register() override
{ {
OnEffectHitTarget += SpellEffectFn(spell_item_create_heart_candy_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); OnEffectHitTarget += SpellEffectFn(spell_item_create_heart_candy::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
{
return new spell_item_create_heart_candy_SpellScript();
} }
}; };
@@ -735,14 +633,9 @@ enum SpellsPicnic
SPELL_ROMANTIC_PICNIC_ACHIEV = 45123, // Romantic Picnic periodic = 5000 SPELL_ROMANTIC_PICNIC_ACHIEV = 45123, // Romantic Picnic periodic = 5000
}; };
class spell_love_is_in_the_air_romantic_picnic : public SpellScriptLoader class spell_love_is_in_the_air_romantic_picnic : public AuraScript
{ {
public: PrepareAuraScript(spell_love_is_in_the_air_romantic_picnic);
spell_love_is_in_the_air_romantic_picnic() : SpellScriptLoader("spell_love_is_in_the_air_romantic_picnic") { }
class spell_love_is_in_the_air_romantic_picnic_AuraScript : public AuraScript
{
PrepareAuraScript(spell_love_is_in_the_air_romantic_picnic_AuraScript);
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{ {
@@ -795,14 +688,8 @@ public:
void Register() override void Register() override
{ {
AfterEffectApply += AuraEffectApplyFn(spell_love_is_in_the_air_romantic_picnic_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL); AfterEffectApply += AuraEffectApplyFn(spell_love_is_in_the_air_romantic_picnic::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_love_is_in_the_air_romantic_picnic_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); OnEffectPeriodic += AuraEffectPeriodicFn(spell_love_is_in_the_air_romantic_picnic::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_love_is_in_the_air_romantic_picnic_AuraScript();
} }
}; };
@@ -814,14 +701,9 @@ enum ServiceUniform
MODEL_GOBLIN_FEMALE = 31003 MODEL_GOBLIN_FEMALE = 31003
}; };
class spell_gen_aura_service_uniform : public SpellScriptLoader class spell_gen_aura_service_uniform : public AuraScript
{ {
public: PrepareAuraScript(spell_gen_aura_service_uniform);
spell_gen_aura_service_uniform() : SpellScriptLoader("spell_gen_aura_service_uniform") { }
class spell_gen_aura_service_uniform_AuraScript : public AuraScript
{
PrepareAuraScript(spell_gen_aura_service_uniform_AuraScript);
bool Validate(SpellInfo const* /*spell*/) override bool Validate(SpellInfo const* /*spell*/) override
{ {
@@ -850,32 +732,26 @@ public:
void Register() override void Register() override
{ {
AfterEffectApply += AuraEffectApplyFn(spell_gen_aura_service_uniform_AuraScript::OnApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); AfterEffectApply += AuraEffectApplyFn(spell_gen_aura_service_uniform::OnApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_gen_aura_service_uniform_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); AfterEffectRemove += AuraEffectRemoveFn(spell_gen_aura_service_uniform::OnRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_gen_aura_service_uniform_AuraScript();
} }
}; };
void AddSC_event_love_in_the_air() void AddSC_event_love_in_the_air()
{ {
// Npcs // Npcs
new npc_love_in_air_supply_sentry(); RegisterCreatureAI(npc_love_in_air_supply_sentry);
new npc_love_in_air_snivel(); RegisterCreatureAI(npc_love_in_air_snivel);
new npc_love_in_air_snivel_real(); RegisterCreatureAI(npc_love_in_air_snivel_real);
// Boss // Boss
new npc_love_in_air_hummel(); RegisterCreatureAI(npc_love_in_air_hummel);
new npc_love_in_air_hummel_helper(); RegisterCreatureAI(npc_love_in_air_hummel_helper);
new spell_love_in_air_perfume_immune();
new spell_love_in_air_periodic_perfumes();
// Spells // Spells
new spell_item_create_heart_candy(); RegisterSpellScript(spell_love_in_air_perfume_immune);
new spell_love_is_in_the_air_romantic_picnic(); RegisterSpellScript(spell_love_in_air_periodic_perfumes);
new spell_gen_aura_service_uniform(); RegisterSpellScript(spell_item_create_heart_candy);
RegisterSpellScript(spell_love_is_in_the_air_romantic_picnic);
RegisterSpellScript(spell_gen_aura_service_uniform);
} }