mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 17:27:36 +01:00
Misc/Script: Convert winter veil mistletoe event in sai
This commit is contained in:
14
sql/updates/world/2012_12_18_02_world_misc.sql
Normal file
14
sql/updates/world/2012_12_18_02_world_misc.sql
Normal 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');
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user