aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-12-05 00:12:35 +0100
committerShauren <shauren.trinity@gmail.com>2019-12-05 00:12:35 +0100
commitd934824421c83598853487c5cc9e4cbb3c5d0006 (patch)
treea63415c891a43c417747edeae37ac15ecb4a2389 /src/server/game/Spells/Spell.cpp
parent65b91375e0a3b01eaacab77f973429b544c63a61 (diff)
Core/Items: Implement azerite empowered items
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp32
1 files changed, 32 insertions, 0 deletions
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;
}