diff options
| -rw-r--r-- | src/server/game/Spells/Spell.h | 1 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 19 | 
2 files changed, 19 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 9ddcc221e21..4190cca0ab4 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -367,6 +367,7 @@ class Spell          void EffectResurrectWithAura(SpellEffIndex effIndex);          void EffectCreateAreaTrigger(SpellEffIndex effIndex);          void EffectRemoveTalent(SpellEffIndex effIndex); +        void EffectDestroyItem(SpellEffIndex effIndex);          typedef std::set<Aura*> UsedSpellMods; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 49314333f5b..6063a97d2ca 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -242,7 +242,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=      &Spell::EffectGiveCurrency,                             //166 SPELL_EFFECT_GIVE_CURRENCY      &Spell::EffectNULL,                                     //167 SPELL_EFFECT_167      &Spell::EffectNULL,                                     //168 SPELL_EFFECT_ALLOW_CONTROL_PET -    &Spell::EffectNULL,                                     //169 SPELL_EFFECT_DESTROY_ITEM +    &Spell::EffectDestroyItem,                              //169 SPELL_EFFECT_DESTROY_ITEM      &Spell::EffectNULL,                                     //170 SPELL_EFFECT_UPDATE_ZONE_AURAS_AND_PHASES      &Spell::EffectNULL,                                     //171 SPELL_EFFECT_171      &Spell::EffectResurrectWithAura,                        //172 SPELL_EFFECT_RESURRECT_WITH_AURA @@ -5786,3 +5786,20 @@ void Spell::EffectRemoveTalent(SpellEffIndex /*effIndex*/)      player->RemoveTalent(talent);      player->SendTalentsInfoData();  } + +void Spell::EffectDestroyItem(SpellEffIndex effIndex) +{ +    if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) +        return; + +    if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) +        return; + +    Player* player = unitTarget->ToPlayer(); +    if (SpellEffectInfo const* effect = GetEffect(effIndex)) +    { +        uint32 itemId = effect->ItemType; +        if (Item* item = player->GetItemByEntry(itemId)) +            player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); +    } +}  | 
