diff options
Diffstat (limited to 'src/game/SpellEffects.cpp')
| -rw-r--r-- | src/game/SpellEffects.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index b12b7797c03..8a60e9b4845 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -131,7 +131,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectThreat, // 63 SPELL_EFFECT_THREAT &Spell::EffectTriggerSpell, // 64 SPELL_EFFECT_TRIGGER_SPELL &Spell::EffectApplyAreaAura, // 65 SPELL_EFFECT_APPLY_AREA_AURA_RAID - &Spell::EffectUnused, // 66 SPELL_EFFECT_CREATE_MANA_GEM (possibly recharge it, misc - is item ID) + &Spell::EffectRechargeManaGem, // 66 SPELL_EFFECT_CREATE_MANA_GEM (possibly recharge it, misc - is item ID) &Spell::EffectHealMaxHealth, // 67 SPELL_EFFECT_HEAL_MAX_HEALTH &Spell::EffectInterruptCast, // 68 SPELL_EFFECT_INTERRUPT_CAST &Spell::EffectDistract, // 69 SPELL_EFFECT_DISTRACT @@ -7497,3 +7497,30 @@ void Spell::EffectCastButtons(uint32 i) } } } + +void Spell::EffectRechargeManaGem(uint32 i) +{ + if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + return; + + Player *player = (Player*)m_caster; + + if (!player) + return; + + uint32 item_id = m_spellInfo->EffectItemType[0]; + + ItemPrototype const *pProto = objmgr.GetItemPrototype(item_id); + if(!pProto) + { + player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL ); + return; + } + + if (Item* pItem = player->GetItemByEntry(item_id)) + { + for(int x = 0; x < MAX_ITEM_PROTO_SPELLS; ++x) + pItem->SetSpellCharges(x,pProto->Spells[x].SpellCharges); + pItem->SetState(ITEM_CHANGED,player); + } +} |
