From d934824421c83598853487c5cc9e4cbb3c5d0006 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 5 Dec 2019 00:12:35 +0100 Subject: Core/Items: Implement azerite empowered items --- src/server/game/Spells/Spell.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index b29b6b7f2c2..7d4eadb32d4 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -17,6 +17,7 @@ */ #include "Spell.h" +#include "AzeriteEmpoweredItem.h" #include "Battlefield.h" #include "BattlefieldMgr.h" #include "Battleground.h" @@ -6717,6 +6718,37 @@ SpellCastResult Spell::CheckItems(uint32* param1 /*= nullptr*/, uint32* param2 / } break; } + case SPELL_EFFECT_RESPEC_AZERITE_EMPOWERED_ITEM: + { + Item const* item = m_targets.GetItemTarget(); + if (!item) + return SPELL_FAILED_AZERITE_EMPOWERED_ONLY; + + if (item->GetOwnerGUID() != m_caster->GetGUID()) + return SPELL_FAILED_DONT_REPORT; + + AzeriteEmpoweredItem const* azeriteEmpoweredItem = item->ToAzeriteEmpoweredItem(); + if (!azeriteEmpoweredItem) + return SPELL_FAILED_AZERITE_EMPOWERED_ONLY; + + bool hasSelections = false; + for (int32 tier = 0; tier < azeriteEmpoweredItem->GetMaxAzeritePowerTier(); ++tier) + { + if (azeriteEmpoweredItem->GetSelectedAzeritePower(tier)) + { + hasSelections = true; + break; + } + } + + if (!hasSelections) + return SPELL_FAILED_AZERITE_EMPOWERED_NO_CHOICES_TO_UNDO; + + if (!m_caster->ToPlayer()->HasEnoughMoney(azeriteEmpoweredItem->GetRespecCost())) + return SPELL_FAILED_DONT_REPORT; + + break; + } default: break; } -- cgit v1.2.3