Core/Spells Implement SpellScript needed for Achievement The Turkinator

Closes #3997
This commit is contained in:
sirikfoll
2016-01-12 15:24:55 -02:00
parent 8ef9ea9157
commit fc2a570d09
2 changed files with 90 additions and 0 deletions

View File

@@ -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();