aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-01-09 16:31:12 +0100
committerShauren <shauren.trinity@gmail.com>2022-01-09 16:31:12 +0100
commit241193cd0287c3d7a2cbaf7f2c5775d414b4d0b3 (patch)
tree01b863fd5bf6bbfdc048293f4d7c181315f2ae11 /src/server/game/Spells
parent6df3cb0995d6bcb28998ca14fd39c9afe9d939b2 (diff)
Core/Items: Implemented many new enchantment flags
Diffstat (limited to 'src/server/game/Spells')
-rw-r--r--src/server/game/Spells/Spell.cpp8
-rw-r--r--src/server/game/Spells/SpellMgr.cpp41
-rw-r--r--src/server/game/Spells/SpellMgr.h4
3 files changed, 8 insertions, 45 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 8a3c26bd7b2..ad8e6d3191f 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -7087,7 +7087,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*=
{
if (!enchantEntry)
return SPELL_FAILED_ERROR;
- if (enchantEntry->Flags & ENCHANTMENT_CAN_SOULBOUND)
+ if (enchantEntry->GetFlags().HasFlag(SpellItemEnchantmentFlags::Soulbound))
return SPELL_FAILED_NOT_TRADEABLE;
}
break;
@@ -7101,10 +7101,10 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*=
if (item->GetOwner() != player)
{
uint32 enchant_id = spellEffectInfo.MiscValue;
- SpellItemEnchantmentEntry const* pEnchant = sSpellItemEnchantmentStore.LookupEntry(enchant_id);
- if (!pEnchant)
+ SpellItemEnchantmentEntry const* enchantEntry = sSpellItemEnchantmentStore.LookupEntry(enchant_id);
+ if (!enchantEntry)
return SPELL_FAILED_ERROR;
- if (pEnchant->Flags & ENCHANTMENT_CAN_SOULBOUND)
+ if (enchantEntry->GetFlags().HasFlag(SpellItemEnchantmentFlags::Soulbound))
return SPELL_FAILED_NOT_TRADEABLE;
}
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index e3b2e9b00d4..5599e0cea39 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -634,7 +634,10 @@ SpellEnchantProcEntry const* SpellMgr::GetSpellEnchantProcEvent(uint32 enchId) c
bool SpellMgr::IsArenaAllowedEnchancment(uint32 ench_id) const
{
- return mEnchantCustomAttr[ench_id];
+ if (SpellItemEnchantmentEntry const* enchantment = sSpellItemEnchantmentStore.LookupEntry(ench_id))
+ return enchantment->GetFlags().HasFlag(SpellItemEnchantmentFlags::AllowEnteringArena);
+
+ return false;
}
std::vector<int32> const* SpellMgr::GetSpellLinked(int32 spell_id) const
@@ -1988,42 +1991,6 @@ void SpellMgr::LoadSpellPetAuras()
TC_LOG_INFO("server.loading", ">> Loaded %u spell pet auras in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
-// Fill custom data about enchancments
-void SpellMgr::LoadEnchantCustomAttr()
-{
- uint32 oldMSTime = getMSTime();
-
- uint32 size = sSpellItemEnchantmentStore.GetNumRows();
- mEnchantCustomAttr.resize(size);
-
- for (uint32 i = 0; i < size; ++i)
- mEnchantCustomAttr[i] = false;
-
- uint32 count = 0;
- for (SpellInfo const& spellInfo : mSpellInfoMap)
- {
- /// @todo find a better check
- if (!spellInfo.HasAttribute(SPELL_ATTR2_PRESERVE_ENCHANT_IN_ARENA) || !spellInfo.HasAttribute(SPELL_ATTR0_NOT_SHAPESHIFT))
- continue;
-
- for (SpellEffectInfo const& spellEffectInfo : spellInfo.GetEffects())
- {
- if (spellEffectInfo.Effect == SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY)
- {
- uint32 enchId = spellEffectInfo.MiscValue;
- SpellItemEnchantmentEntry const* ench = sSpellItemEnchantmentStore.LookupEntry(enchId);
- if (!ench)
- continue;
- mEnchantCustomAttr[enchId] = true;
- ++count;
- break;
- }
- }
- }
-
- TC_LOG_INFO("server.loading", ">> Loaded %u custom enchant attributes in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
-}
-
void SpellMgr::LoadSpellEnchantProcData()
{
uint32 oldMSTime = getMSTime();
diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h
index ee5399ab202..00b93cb18fd 100644
--- a/src/server/game/Spells/SpellMgr.h
+++ b/src/server/game/Spells/SpellMgr.h
@@ -578,8 +578,6 @@ struct PetDefaultSpellsEntry
// < 0 for petspelldata id, > 0 for creature_id
typedef std::map<int32, PetDefaultSpellsEntry> PetDefaultSpellsMap;
-typedef std::vector<bool> EnchantCustomAttribute;
-
typedef std::unordered_map<int32, std::vector<int32>> SpellLinkedMap;
bool IsPrimaryProfessionSkill(uint32 skill);
@@ -739,7 +737,6 @@ class TC_GAME_API SpellMgr
void LoadSpellThreats();
void LoadSkillLineAbilityMap();
void LoadSpellPetAuras();
- void LoadEnchantCustomAttr();
void LoadSpellEnchantProcData();
void LoadSpellLinked();
void LoadPetLevelupSpellMap();
@@ -772,7 +769,6 @@ class TC_GAME_API SpellMgr
SpellPetAuraMap mSpellPetAuraMap;
SpellLinkedMap mSpellLinkedMap;
SpellEnchantProcEventMap mSpellEnchantProcEventMap;
- EnchantCustomAttribute mEnchantCustomAttr;
SpellAreaMap mSpellAreaMap;
SpellAreaForQuestMap mSpellAreaForQuestMap;
SpellAreaForQuestMap mSpellAreaForQuestEndMap;