aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-06-12 16:07:48 +0200
committerShauren <shauren.trinity@gmail.com>2024-06-12 16:07:48 +0200
commit00efee9ca12d6e625e9954a39768bbec029d0459 (patch)
tree61f8a1c940ebed8f02dc98b7253adc50c1b18a2f /src/server/game/Spells/SpellEffects.cpp
parent8142ab20b7495ca87a135e08e473f5a33a40e5a4 (diff)
Core/Spells: Implemented SPELL_ATTR9_ITEM_CAST_GRANTS_SKILL_GAIN
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 9ca92f6e577..a0ce224c9cc 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1385,7 +1385,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);
}
}
@@ -1414,7 +1415,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
{
@@ -2345,7 +2347,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;
@@ -3391,7 +3393,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);