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
+42 -166
View File
@@ -53,14 +53,9 @@ enum SupplySentrySay
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() : 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)
npc_love_in_air_supply_sentry(Creature* creature) : ScriptedAI(creature), lock(0)
{
}
@@ -97,12 +92,6 @@ public:
{
lock += diff;
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_supply_sentryAI(creature);
}
};
enum hotOnTrail
@@ -120,16 +109,9 @@ enum hotOnTrail
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() : CreatureScript("npc_love_in_air_snivel") { }
struct npc_love_in_air_snivelAI : public NullCreatureAI
{
npc_love_in_air_snivelAI(Creature* creature) : NullCreatureAI(creature)
{
}
npc_love_in_air_snivel(Creature* creature) : NullCreatureAI(creature) { }
int32 delay;
@@ -171,12 +153,6 @@ public:
if (delay > 0)
delay -= std::min<int32>(delay, diff);
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_snivelAI(creature);
}
};
enum SnivelRealSay
@@ -187,14 +163,9 @@ enum SnivelRealSay
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() : 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)
npc_love_in_air_snivel_real(Creature* creature) : ScriptedAI(creature)
{
actionTimer = 7000;
actionCounter = 0;
@@ -281,12 +252,6 @@ public:
}
}
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_snivel_realAI(creature);
}
};
///////////////////////////////////////
@@ -330,16 +295,9 @@ enum HummelSay
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() : 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)
{
}
npc_love_in_air_hummel(Creature* creature) : ScriptedAI(creature), summons(me) { }
SummonList summons;
EventMap events;
@@ -458,20 +416,6 @@ public:
DoMeleeAttackIfReady();
}
};
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
@@ -479,16 +423,9 @@ enum HummelHelperSay
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() : 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)
{
}
npc_love_in_air_hummel_helper(Creature* creature) : ScriptedAI(creature) { }
EventMap events;
@@ -566,22 +503,15 @@ public:
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_love_in_air_hummel_helperAI(creature);
}
};
class spell_love_in_air_perfume_immune : public SpellScriptLoader
{
public:
spell_love_in_air_perfume_immune() : SpellScriptLoader("spell_love_in_air_perfume_immune") { }
///////////////////////////////////////
////// SPELLS
///////////////////////////////////////
class spell_love_in_air_perfume_immune_AuraScript : public AuraScript
{
PrepareAuraScript(spell_love_in_air_perfume_immune_AuraScript);
class spell_love_in_air_perfume_immune : public AuraScript
{
PrepareAuraScript(spell_love_in_air_perfume_immune);
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -619,25 +549,14 @@ public:
void Register() override
{
OnEffectApply += AuraEffectApplyFn(spell_love_in_air_perfume_immune_AuraScript::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);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_love_in_air_perfume_immune_AuraScript();
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::HandleEffectRemove, EFFECT_2, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
class spell_love_in_air_periodic_perfumes : public SpellScriptLoader
class spell_love_in_air_periodic_perfumes : public AuraScript
{
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);
PrepareAuraScript(spell_love_in_air_periodic_perfumes);
void PeriodicTick(AuraEffect const* /*aurEff*/)
{
@@ -654,20 +573,10 @@ public:
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_love_in_air_periodic_perfumes_AuraScript::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_love_in_air_periodic_perfumes_AuraScript();
OnEffectPeriodic += AuraEffectPeriodicFn(spell_love_in_air_periodic_perfumes::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
///////////////////////////////////////
////// SPELLS
///////////////////////////////////////
enum CreateHeartCandy
{
SPELL_CREATE_HEART_CANDY_1 = 26668,
@@ -688,14 +597,9 @@ std::array<uint32, 8> constexpr CreateHeartCandySpells =
};
// 26678 - Create Heart Candy
class spell_item_create_heart_candy : public SpellScriptLoader
class spell_item_create_heart_candy : public SpellScript
{
public:
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);
PrepareSpellScript(spell_item_create_heart_candy);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
@@ -714,13 +618,7 @@ public:
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_item_create_heart_candy_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const override
{
return new spell_item_create_heart_candy_SpellScript();
OnEffectHitTarget += SpellEffectFn(spell_item_create_heart_candy::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
@@ -735,14 +633,9 @@ enum SpellsPicnic
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:
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);
PrepareAuraScript(spell_love_is_in_the_air_romantic_picnic);
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -795,14 +688,8 @@ public:
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);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_love_is_in_the_air_romantic_picnic_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_love_is_in_the_air_romantic_picnic_AuraScript();
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::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
@@ -814,14 +701,9 @@ enum ServiceUniform
MODEL_GOBLIN_FEMALE = 31003
};
class spell_gen_aura_service_uniform : public SpellScriptLoader
class spell_gen_aura_service_uniform : public AuraScript
{
public:
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);
PrepareAuraScript(spell_gen_aura_service_uniform);
bool Validate(SpellInfo const* /*spell*/) override
{
@@ -850,32 +732,26 @@ public:
void Register() override
{
AfterEffectApply += AuraEffectApplyFn(spell_gen_aura_service_uniform_AuraScript::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);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_gen_aura_service_uniform_AuraScript();
AfterEffectApply += AuraEffectApplyFn(spell_gen_aura_service_uniform::OnApply, 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);
}
};
void AddSC_event_love_in_the_air()
{
// Npcs
new npc_love_in_air_supply_sentry();
new npc_love_in_air_snivel();
new npc_love_in_air_snivel_real();
RegisterCreatureAI(npc_love_in_air_supply_sentry);
RegisterCreatureAI(npc_love_in_air_snivel);
RegisterCreatureAI(npc_love_in_air_snivel_real);
// Boss
new npc_love_in_air_hummel();
new npc_love_in_air_hummel_helper();
new spell_love_in_air_perfume_immune();
new spell_love_in_air_periodic_perfumes();
RegisterCreatureAI(npc_love_in_air_hummel);
RegisterCreatureAI(npc_love_in_air_hummel_helper);
// Spells
new spell_item_create_heart_candy();
new spell_love_is_in_the_air_romantic_picnic();
new spell_gen_aura_service_uniform();
RegisterSpellScript(spell_love_in_air_perfume_immune);
RegisterSpellScript(spell_love_in_air_periodic_perfumes);
RegisterSpellScript(spell_item_create_heart_candy);
RegisterSpellScript(spell_love_is_in_the_air_romantic_picnic);
RegisterSpellScript(spell_gen_aura_service_uniform);
}