[9507] Implement SPELL_EFFECT_RESTORE_ITEM_CHARGES

Also it application in special case of item 5513 and similar.
This commit is contained in:
VladimirMangos 2010-03-03 05:58:36 +03:00
parent d775eea9a4
commit 4c4629e861
11 changed files with 105 additions and 3 deletions

View file

@ -5614,6 +5614,19 @@ SpellCastResult Spell::CheckItems()
{
if (!m_IsTriggeredSpell && m_spellInfo->EffectItemType[i])
{
// Conjure Mana Gem
if (i == EFFECT_INDEX_0 && m_spellInfo->Effect[EFFECT_INDEX_1] == SPELL_EFFECT_DUMMY)
{
if (Item* item = p_caster->GetItemByEntry(m_spellInfo->EffectItemType[i]))
{
if (item->HasMaxCharges())
return SPELL_FAILED_ITEM_AT_MAX_CHARGES;
// will recharge in next effect
continue;
}
}
ItemPosCountVec dest;
uint8 msg = p_caster->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, m_spellInfo->EffectItemType[i], 1 );
if (msg != EQUIP_ERR_OK )
@ -5624,6 +5637,14 @@ SpellCastResult Spell::CheckItems()
}
break;
}
case SPELL_EFFECT_RESTORE_ITEM_CHARGES:
{
if (Item* item = p_caster->GetItemByEntry(m_spellInfo->EffectItemType[i]))
if (item->HasMaxCharges())
return SPELL_FAILED_ITEM_AT_MAX_CHARGES;
break;
}
case SPELL_EFFECT_ENCHANT_ITEM:
case SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC:
{