Misc/Script: Convert winter veil mistletoe event in sai

This commit is contained in:
Vincent_Michael
2012-12-18 22:27:48 +01:00
parent 3cf2600688
commit 7dd019e7bb
3 changed files with 79 additions and 44 deletions

View File

@@ -274,6 +274,69 @@ class spell_hallow_end_tricky_treat : public SpellScriptLoader
}
};
enum Mistletoe
{
SPELL_CREATE_MISTLETOE = 26206,
SPELL_CREATE_HOLLY = 26207,
SPELL_CREATE_SNOWFLAKES = 45036
};
class spell_winter_veil_mistletoe : public SpellScriptLoader
{
public:
spell_winter_veil_mistletoe() : SpellScriptLoader("spell_winter_veil_mistletoe") { }
class spell_winter_veil_mistletoe_SpellScript : public SpellScript
{
PrepareSpellScript(spell_winter_veil_mistletoe_SpellScript);
bool Validate(SpellInfo const* /*spell*/)
{
if (!sSpellMgr->GetSpellInfo(SPELL_CREATE_MISTLETOE) ||
!sSpellMgr->GetSpellInfo(SPELL_CREATE_HOLLY) ||
!sSpellMgr->GetSpellInfo(SPELL_CREATE_SNOWFLAKES))
return false;
return true;
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (Player* target = GetHitPlayer())
{
uint32 spellId = 0;
switch (urand(0, 2))
{
case 0:
spellId = SPELL_CREATE_MISTLETOE;
break;
case 1:
spellId = SPELL_CREATE_HOLLY;
break;
case 2:
spellId = SPELL_CREATE_SNOWFLAKES;
break;
default:
return;
}
caster->CastSpell(target, spellId, true);
}
}
void Register()
{
OnEffectHitTarget += SpellEffectFn(spell_winter_veil_mistletoe_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const
{
return new spell_winter_veil_mistletoe_SpellScript();
}
};
void AddSC_holiday_spell_scripts()
{
// Love is in the Air
@@ -282,4 +345,6 @@ void AddSC_holiday_spell_scripts()
new spell_hallow_end_trick();
new spell_hallow_end_trick_or_treat();
new spell_hallow_end_tricky_treat();
// Winter Veil
new spell_winter_veil_mistletoe();
}

View File

@@ -1586,49 +1586,6 @@ public:
}
};
/*####
## npc_winter_reveler
####*/
enum WinterReveler
{
SPELL_MISTLETOE_DEBUFF = 26218,
SPELL_CREATE_MISTLETOE = 26206,
SPELL_CREATE_HOLLY = 26207,
SPELL_CREATE_SNOWFLAKES = 45036,
};
class npc_winter_reveler : public CreatureScript
{
public:
npc_winter_reveler() : CreatureScript("npc_winter_reveler") { }
struct npc_winter_revelerAI : public ScriptedAI
{
npc_winter_revelerAI(Creature* creature) : ScriptedAI(creature) {}
void ReceiveEmote(Player* player, uint32 emote)
{
if (player->HasAura(SPELL_MISTLETOE_DEBUFF))
return;
if (!IsHolidayActive(HOLIDAY_FEAST_OF_WINTER_VEIL))
return;
if (emote == TEXT_EMOTE_KISS)
{
uint32 spellId = RAND<uint32>(SPELL_CREATE_MISTLETOE, SPELL_CREATE_HOLLY, SPELL_CREATE_SNOWFLAKES);
me->CastSpell(player, spellId, false);
me->CastSpell(player, SPELL_MISTLETOE_DEBUFF, false);
}
}
};
CreatureAI* GetAI(Creature* creature) const
{
return new npc_winter_revelerAI(creature);
}
};
/*####
## npc_snake_trap_serpents
@@ -3039,7 +2996,6 @@ void AddSC_npcs_special()
new npc_sayge();
new npc_steam_tonk();
new npc_tonk_mine();
new npc_winter_reveler();
new npc_brewfest_reveler();
new npc_snake_trap();
new npc_mirror_image();