diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-06-12 16:07:48 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-06-20 01:19:55 +0200 |
commit | 7d5a7470ae958f9f7eba00b0380d959b97f2e2ba (patch) | |
tree | 7e613d482f637aa8561ff411d62efa9607184b3e /src/server/game/Spells/SpellEffects.cpp | |
parent | d0c37cba22667c6a2d5f9753216b94f2f50e5e23 (diff) |
Core/Spells: Implemented SPELL_ATTR9_ITEM_CAST_GRANTS_SKILL_GAIN
(cherry picked from commit 00efee9ca12d6e625e9954a39768bbec029d0459)
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index f255b272120..74262ac15c4 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1397,7 +1397,8 @@ void Spell::DoCreateItem(uint32 itemId, ItemContext context /*= ItemContext::NON } // we succeeded in creating at least one item, so a levelup is possible - player->UpdateCraftSkill(m_spellInfo); + if (!m_CastItem) + player->UpdateCraftSkill(m_spellInfo); } } @@ -1426,7 +1427,8 @@ void Spell::EffectCreateItem2() if (m_spellInfo->IsLootCrafting()) { player->AutoStoreLoot(m_spellInfo->Id, LootTemplates_Spell, context, false, true); - player->UpdateCraftSkill(m_spellInfo); + if (!m_CastItem) + player->UpdateCraftSkill(m_spellInfo); } else // If there's no random loot entries for this spell, pick the item associated with this spell { @@ -2357,7 +2359,7 @@ void Spell::EffectEnchantItemPerm() else { // do not increase skill if vellum used - if (!(m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST))) + if (!m_CastItem) player->UpdateCraftSkill(m_spellInfo); uint32 enchant_id = effectInfo->MiscValue; @@ -3403,7 +3405,9 @@ void Spell::EffectDisEnchant() if (Player* caster = m_caster->ToPlayer()) { - caster->UpdateCraftSkill(m_spellInfo); + if (!m_CastItem) + caster->UpdateCraftSkill(m_spellInfo); + itemTarget->m_loot.reset(new Loot(caster->GetMap(), itemTarget->GetGUID(), LOOT_DISENCHANTING, nullptr)); itemTarget->m_loot->FillLoot(ASSERT_NOTNULL(itemTarget->GetDisenchantLoot(caster))->ID, LootTemplates_Disenchant, caster, true); caster->SendLoot(*itemTarget->m_loot); |