diff options
| author | Shauren <shauren.trinity@gmail.com> | 2018-02-18 16:32:03 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2018-02-18 16:33:50 +0100 |
| commit | 75603fe1a00f9aac36bfad1378447bea973001c1 (patch) | |
| tree | cf8fea04151aa15c713704b6f324d0f61e304725 /src/server/game/Spells/Spell.cpp | |
| parent | 4af15915bc8b780ef854c2e58d7ab5bb38f56758 (diff) | |
Core/DataStores: Updated db2 structures to 7.3.5.25996
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d132fa50d07..47f43ad532c 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6540,30 +6540,23 @@ SpellCastResult Spell::CheckItems(uint32* param1 /*= nullptr*/, uint32* param2 / break; case SPELL_EFFECT_DISENCHANT: { - if (!m_targets.GetItemTarget()) + Item const* item = m_targets.GetItemTarget(); + if (!item) return SPELL_FAILED_CANT_BE_DISENCHANTED; // prevent disenchanting in trade slot - if (m_targets.GetItemTarget()->GetOwnerGUID() != m_caster->GetGUID()) + if (item->GetOwnerGUID() != m_caster->GetGUID()) return SPELL_FAILED_CANT_BE_DISENCHANTED; - ItemTemplate const* itemProto = m_targets.GetItemTarget()->GetTemplate(); + ItemTemplate const* itemProto = item->GetTemplate(); if (!itemProto) return SPELL_FAILED_CANT_BE_DISENCHANTED; - uint32 item_quality = itemProto->GetQuality(); - // 2.0.x addon: Check player enchanting level against the item disenchanting requirements - uint32 item_disenchantskilllevel = itemProto->RequiredDisenchantSkill; - if (item_disenchantskilllevel == uint32(-1)) + ItemDisenchantLootEntry const* itemDisenchantLoot = item->GetDisenchantLoot(m_caster->ToPlayer()); + if (!itemDisenchantLoot) return SPELL_FAILED_CANT_BE_DISENCHANTED; - if (item_disenchantskilllevel > player->GetSkillValue(SKILL_ENCHANTING)) + if (itemDisenchantLoot->RequiredDisenchantSkill > player->GetSkillValue(SKILL_ENCHANTING)) return SPELL_FAILED_LOW_CASTLEVEL; - if (item_quality > 4 || item_quality < 2) - return SPELL_FAILED_CANT_BE_DISENCHANTED; - if (itemProto->GetClass() != ITEM_CLASS_WEAPON && itemProto->GetClass() != ITEM_CLASS_ARMOR) - return SPELL_FAILED_CANT_BE_DISENCHANTED; - if (!itemProto->DisenchantID) - return SPELL_FAILED_CANT_BE_DISENCHANTED; break; } case SPELL_EFFECT_PROSPECTING: |
