diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-04-07 21:36:36 +0200 | 
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-04-07 21:36:36 +0200 | 
| commit | f4029faecee41ef9843362f993292a1576c19626 (patch) | |
| tree | e3483c5e20781a938e24888df1973ea6af07daef /src/server/game/Spells/SpellEffects.cpp | |
| parent | 8b1428cca634f9ad5e8a1e05479750dfd62f0304 (diff) | |
Core/Spells: Implemented spell effect 243 - SPELL_EFFECT_APPLY_ENCHANT_ILLUSION (and fixed enchant visuals, for real this time)
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 23 | 
1 files changed, 22 insertions, 1 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 11854bea0d6..c4f4d01f3ba 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -308,7 +308,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=      &Spell::EffectNULL,                                     //240 SPELL_EFFECT_240      &Spell::EffectNULL,                                     //241 SPELL_EFFECT_241      &Spell::EffectNULL,                                     //242 SPELL_EFFECT_242 -    &Spell::EffectNULL,                                     //243 SPELL_EFFECT_APPLY_ENCHANT_ILLUSION +    &Spell::EffectApplyEnchantIllusion,                     //243 SPELL_EFFECT_APPLY_ENCHANT_ILLUSION      &Spell::EffectNULL,                                     //244 SPELL_EFFECT_LEARN_FOLLOWER_ABILITY      &Spell::EffectUpgradeHeirloom,                          //245 SPELL_EFFECT_UPGRADE_HEIRLOOM      &Spell::EffectNULL,                                     //246 SPELL_EFFECT_FINISH_GARRISON_MISSION @@ -6005,3 +6005,24 @@ void Spell::EffectUpgradeHeirloom(SpellEffIndex /*effIndex*/)          if (CollectionMgr* collectionMgr = player->GetSession()->GetCollectionMgr())              collectionMgr->UpgradeHeirloom(m_misc.Raw.Data[0], m_castItemEntry);  } + +void Spell::EffectApplyEnchantIllusion(SpellEffIndex effIndex) +{ +    if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) +        return; + +    if (!itemTarget) +        return; + +    Player* player = m_caster->ToPlayer(); +    if (!player || player->GetGUID() != itemTarget->GetOwnerGUID()) +        return; + +    itemTarget->SetState(ITEM_CHANGED, player); +    itemTarget->SetModifier(ITEM_MODIFIER_ENCHANT_ILLUSION, effectInfo->MiscValue); +    if (itemTarget->IsEquipped()) +        player->SetUInt16Value(PLAYER_VISIBLE_ITEM + VISIBLE_ITEM_ENCHANTMENT_OFFSET + (itemTarget->GetSlot() * 2), 1, itemTarget->GetVisibleItemVisual()); + +    player->RemoveTradeableItem(itemTarget); +    itemTarget->ClearSoulboundTradeable(player); +}  | 
