diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2016-12-30 23:50:28 -0300 |
|---|---|---|
| committer | DoctorKraft <DoctorKraft@users.noreply.github.com> | 2018-03-18 00:19:46 +0100 |
| commit | be4670250d769829e6210df540bbe79f2ead258a (patch) | |
| tree | fc3cfbb8bc85b8efb9308536547bc09c198e8699 /src/server/game/Spells/SpellInfo.cpp | |
| parent | 15b22590beb99fd1ac7f06564d5aa37a29ab127c (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.cpp | 40 |
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) |
