aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_holiday.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp
index 94f12d8cda4..7fe1f54a594 100644
--- a/src/server/scripts/Spells/spell_holiday.cpp
+++ b/src/server/scripts/Spells/spell_holiday.cpp
@@ -410,6 +410,80 @@ class spell_pilgrims_bounty_buff_food : public SpellScriptLoader
}
};
+enum TheTurkinator
+{
+ SPELL_KILL_COUNTER_VISUAL = 62015,
+ SPELL_KILL_COUNTER_VISUAL_MAX = 62021,
+ EMOTE_TURKEY_HUNTER = 0,
+ EMOTE_TURKEY_DOMINATION = 1,
+ EMOTE_TURKEY_SLAUGHTER = 2,
+ EMOTE_TURKEY_TRIUMPH = 3
+};
+
+class spell_pilgrims_bounty_turkey_tracker : public SpellScriptLoader
+{
+ public:
+ spell_pilgrims_bounty_turkey_tracker() : SpellScriptLoader("spell_pilgrims_bounty_turkey_tracker") { }
+
+ class spell_pilgrims_bounty_turkey_tracker_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_pilgrims_bounty_turkey_tracker_SpellScript);
+
+ bool Validate(SpellInfo const* /*spell*/)
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_KILL_COUNTER_VISUAL) || !sSpellMgr->GetSpellInfo(SPELL_KILL_COUNTER_VISUAL_MAX))
+ return false;
+ return true;
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Creature* caster = GetCaster()->ToCreature();
+ Unit* target = GetHitUnit();
+
+ if (!target || !caster)
+ return;
+
+ if (target->HasAura(SPELL_KILL_COUNTER_VISUAL_MAX))
+ return;
+
+ if (Aura const* aura = target->GetAura(GetSpellInfo()->Id))
+ {
+ switch (aura->GetStackAmount())
+ {
+ case 10:
+ caster->AI()->Talk(EMOTE_TURKEY_HUNTER, target);
+ break;
+ case 20:
+ caster->AI()->Talk(EMOTE_TURKEY_DOMINATION, target);
+ break;
+ case 30:
+ caster->AI()->Talk(EMOTE_TURKEY_SLAUGHTER, target);
+ break;
+ case 40:
+ caster->AI()->Talk(EMOTE_TURKEY_TRIUMPH, target);
+ target->CastSpell(target, SPELL_KILL_COUNTER_VISUAL_MAX, true);
+ target->RemoveAurasDueToSpell(GetSpellInfo()->Id);
+ break;
+ default:
+ return;
+ }
+ target->CastSpell(target, SPELL_KILL_COUNTER_VISUAL, true);
+ }
+ }
+
+ void Register()
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pilgrims_bounty_turkey_tracker_SpellScript::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_pilgrims_bounty_turkey_tracker_SpellScript();
+ }
+};
+
enum Mistletoe
{
SPELL_CREATE_MISTLETOE = 26206,
@@ -973,6 +1047,7 @@ void AddSC_holiday_spell_scripts()
new spell_pilgrims_bounty_buff_food("spell_gen_spice_bread_stuffing", SPELL_WELL_FED_HIT_TRIGGER);
new spell_pilgrims_bounty_buff_food("spell_gen_pumpkin_pie", SPELL_WELL_FED_SPIRIT_TRIGGER);
new spell_pilgrims_bounty_buff_food("spell_gen_candied_sweet_potato", SPELL_WELL_FED_HASTE_TRIGGER);
+ new spell_pilgrims_bounty_turkey_tracker();
// Winter Veil
new spell_winter_veil_mistletoe();
new spell_winter_veil_px_238_winter_wondervolt();