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

@@ -0,0 +1,14 @@
UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=15760;
DELETE FROM `smart_scripts` WHERE `entryorguid`=15760 AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(15760, 0, 0, 0, 22, 0, 100, 0, 58, 0, 0, 0, 11, 26218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Winter Reveler - Cast Mistletoe on /kiss');
DELETE FROM `spell_script_names` WHERE `spell_id`=26218;
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(26218,'spell_winter_veil_mistletoe');
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=15760;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(22, 1, 15760, 0, 0, 1, 0, 26218, 1, 0, 1, 0, 0, '', 'execute sai only if player has not Mistletoe Debuff'),
(22, 1, 15760, 0, 0, 12, 0, 2, 0, 0, 0, 0, 0, '', 'execute sai only if Winter Veil');

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