diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_item.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index d1d8620b028..43589c68180 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -804,6 +804,51 @@ enum eGenericData SPELL_MITHRIL_MECHANICAL_DRAGONLING = 12749, }; +enum CreateHeartCandy +{ + ITEM_HEART_CANDY_1 = 21818, + ITEM_HEART_CANDY_2 = 21817, + ITEM_HEART_CANDY_3 = 21821, + ITEM_HEART_CANDY_4 = 21819, + ITEM_HEART_CANDY_5 = 21816, + ITEM_HEART_CANDY_6 = 21823, + ITEM_HEART_CANDY_7 = 21822, + ITEM_HEART_CANDY_8 = 21820, +}; + +class spell_item_create_heart_candy : public SpellScriptLoader +{ + public: + spell_item_create_heart_candy() : SpellScriptLoader("spell_item_create_heart_candy") { } + + class spell_item_create_heart_candy_SpellScript : public SpellScript + { + PrepareSpellScript(spell_item_create_heart_candy_SpellScript); + + void HandleScript(SpellEffIndex effIndex) + { + if (!GetHitUnit() || !GetHitUnit()->ToPlayer()) + return; + + Player* target = GetHitUnit()->ToPlayer(); + + static const uint32 items[] = {ITEM_HEART_CANDY_1,ITEM_HEART_CANDY_2,ITEM_HEART_CANDY_3,ITEM_HEART_CANDY_4,ITEM_HEART_CANDY_5,ITEM_HEART_CANDY_6,ITEM_HEART_CANDY_7,ITEM_HEART_CANDY_8}; + + target->AddItem(items[urand(0,7)],1); + } + + void Register() + { + OnEffect += SpellEffectFn(spell_item_create_heart_candy_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_item_create_heart_candy_SpellScript(); + } +}; + void AddSC_item_spell_scripts() { // 23074 Arcanite Dragonling @@ -827,4 +872,6 @@ void AddSC_item_spell_scripts() new spell_item_underbelly_elixir(); new spell_item_shadowmourne(); new spell_item_red_rider_air_rifle(); + + new spell_item_create_heart_candy(); } |