aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-02-18 16:32:03 +0100
committerShauren <shauren.trinity@gmail.com>2018-02-18 16:33:50 +0100
commit75603fe1a00f9aac36bfad1378447bea973001c1 (patch)
treecf8fea04151aa15c713704b6f324d0f61e304725 /src/server/game/Spells/Spell.cpp
parent4af15915bc8b780ef854c2e58d7ab5bb38f56758 (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.cpp21
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: