aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-04-07 21:36:36 +0200
committerShauren <shauren.trinity@gmail.com>2016-04-07 21:36:36 +0200
commitf4029faecee41ef9843362f993292a1576c19626 (patch)
treee3483c5e20781a938e24888df1973ea6af07daef /src/server/game/Spells/SpellEffects.cpp
parent8b1428cca634f9ad5e8a1e05479750dfd62f0304 (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.cpp23
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);
+}