aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellInfo.cpp
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2016-12-30 23:50:28 -0300
committerDoctorKraft <DoctorKraft@users.noreply.github.com>2018-03-18 00:19:46 +0100
commitbe4670250d769829e6210df540bbe79f2ead258a (patch)
treefc3cfbb8bc85b8efb9308536547bc09c198e8699 /src/server/game/Spells/SpellInfo.cpp
parent15b22590beb99fd1ac7f06564d5aa37a29ab127c (diff)
Core/Spell: added some helpers to SpellInfo to reduce code duplication
(cherry picked from commit 14c2b2d6cd2303609f1a1859e727ace7b8ea649c)
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r--src/server/game/Spells/SpellInfo.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index b900c670968..958bcc82f16 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -22,6 +22,7 @@
#include "DB2Stores.h"
#include "GameTables.h"
#include "InstanceScript.h"
+#include "Item.h"
#include "ItemTemplate.h"
#include "Log.h"
#include "Map.h"
@@ -1574,6 +1575,45 @@ bool SpellInfo::HasInitialAggro() const
return !(HasAttribute(SPELL_ATTR1_NO_THREAT) || HasAttribute(SPELL_ATTR3_NO_INITIAL_AGGRO));
}
+WeaponAttackType SpellInfo::GetAttackType() const
+{
+ WeaponAttackType result;
+ switch (DmgClass)
+ {
+ case SPELL_DAMAGE_CLASS_MELEE:
+ if (HasAttribute(SPELL_ATTR3_REQ_OFFHAND))
+ result = OFF_ATTACK;
+ else
+ result = BASE_ATTACK;
+ break;
+ case SPELL_DAMAGE_CLASS_RANGED:
+ result = IsRangedWeaponSpell() ? RANGED_ATTACK : BASE_ATTACK;
+ break;
+ default:
+ // Wands
+ if (IsAutoRepeatRangedSpell())
+ result = RANGED_ATTACK;
+ else
+ result = BASE_ATTACK;
+ break;
+ }
+
+ return result;
+}
+
+bool SpellInfo::IsItemFitToSpellRequirements(Item const* item) const
+{
+ // item neutral spell
+ if (EquippedItemClass == -1)
+ return true;
+
+ // item dependent spell
+ if (item && item->IsFitToSpellRequirements(this))
+ return true;
+
+ return false;
+}
+
bool SpellInfo::IsAffected(uint32 familyName, flag128 const& familyFlags) const
{
if (!familyName)