187 float CalcDirectionAngle()
const;
190 uint32 GetExplicitTargetMask(
bool& srcSet,
bool& dstSet)
const;
201 static std::array<StaticData, TOTAL_SPELL_TARGETS> _data;
240 bool IsEffect() const;
244 bool IsTargetingArea() const;
245 bool IsAreaAuraEffect() const;
246 bool IsUnitOwnedAuraEffect() const;
250 float CalcValueMultiplier(
WorldObject* caster,
Spell* spell =
nullptr) const;
251 float CalcDamageMultiplier(
WorldObject* caster,
Spell* spell =
nullptr) const;
253 bool HasRadius() const;
256 uint32 GetProvidedTargetMask() const;
257 uint32 GetMissingTargetMask(
bool srcSet = false,
bool destSet = false,
uint32 mask = 0) const;
263 ImmunityInfo const* GetImmunityInfo()
const {
return _immunityInfo.get(); }
271 static std::array<StaticData, TOTAL_SPELL_EFFECTS> _data;
342 std::array<int32, MAX_SPELL_REAGENTS>
Reagent;
353 std::array<char const*, 16>
Rank;
362 std::array<SpellEffectInfo, MAX_SPELL_EFFECTS>
_effects;
369 uint32 GetCategory()
const;
372 bool HasAreaAuraEffect()
const;
373 bool HasOnlyDamageEffects()
const;
385 bool IsExplicitDiscovery()
const;
386 bool IsLootCrafting()
const;
387 bool IsProfessionOrRiding()
const;
388 bool IsProfession()
const;
389 bool IsPrimaryProfession()
const;
390 bool IsPrimaryProfessionFirstRank()
const;
391 bool IsAbilityLearnedWithProfession()
const;
392 bool IsAbilityOfSkillType(
uint32 skillType)
const;
394 bool IsAffectingArea()
const;
395 bool IsTargetingArea()
const;
396 bool NeedsExplicitUnitTarget()
const;
397 bool NeedsToBeTriggeredByCaster(
SpellInfo const* triggeringSpell)
const;
398 bool IsSelfCast()
const;
400 bool IsPassive()
const;
401 bool IsAutocastable()
const;
402 bool IsStackableWithRanks()
const;
403 bool IsPassiveStackableWithRanks()
const;
404 bool IsMultiSlotAura()
const;
405 bool IsStackableOnOneSlotWithDifferentCasters()
const;
406 bool IsCooldownStartedOnEvent()
const;
407 bool IsDeathPersistent()
const;
408 bool IsRequiringDeadTarget()
const;
409 bool IsAllowingDeadTarget()
const;
410 bool IsGroupBuff()
const;
411 bool CanBeUsedInCombat()
const;
412 bool IsPositive()
const;
413 bool IsPositiveEffect(
uint8 effIndex)
const;
414 bool IsChanneled()
const;
415 bool IsMoveAllowedChannel()
const;
416 bool NeedsComboPoints()
const;
417 bool IsNextMeleeSwingSpell()
const;
418 bool IsBreakingStealth()
const;
419 bool IsRangedWeaponSpell()
const;
420 bool IsAutoRepeatRangedSpell()
const;
421 bool HasInitialAggro()
const;
425 bool IsItemFitToSpellRequirements(
Item const* item)
const;
427 bool IsAffected(
uint32 familyName,
flag96 const& familyFlags)
const;
429 bool IsAffectedBySpellMods()
const;
432 bool CanPierceImmuneAura(
SpellInfo const* auraSpellInfo)
const;
433 bool CanDispelAura(
SpellInfo const* auraSpellInfo)
const;
435 bool IsSingleTarget()
const;
436 bool IsAuraExclusiveBySpecificWith(
SpellInfo const* spellInfo)
const;
437 bool IsAuraExclusiveBySpecificPerCasterWith(
SpellInfo const* spellInfo)
const;
444 bool CheckTargetCreatureType(
Unit const* target)
const;
447 uint32 GetAllEffectsMechanicMask()
const;
449 uint32 GetSpellMechanicMaskByEffectMask(
uint32 effectMask)
const;
451 uint32 GetDispelMask()
const;
453 uint32 GetExplicitTargetMask()
const;
458 float GetMinRange(
bool positive =
false)
const;
459 float GetMaxRange(
bool positive =
false,
WorldObject* caster =
nullptr,
Spell* spell =
nullptr)
const;
461 int32 GetDuration()
const;
462 int32 GetMaxDuration()
const;
464 uint32 GetMaxTicks()
const;
467 uint32 GetRecoveryTime()
const;
471 bool IsRanked()
const;
472 uint8 GetRank()
const;
473 SpellInfo const* GetFirstRankSpell()
const;
474 SpellInfo const* GetLastRankSpell()
const;
475 SpellInfo const* GetNextRankSpell()
const;
476 SpellInfo const* GetPrevRankSpell()
const;
478 bool IsRankOf(
SpellInfo const* spellInfo)
const;
479 bool IsDifferentRankOf(
SpellInfo const* spellInfo)
const;
480 bool IsHighRankOf(
SpellInfo const* spellInfo)
const;
482 std::array<SpellEffectInfo, MAX_SPELL_EFFECTS>
const&
GetEffects()
const {
return _effects; }
489 int32 GetDiminishingReturnsLimitDuration(
bool triggered)
const;
492 void ApplyAllSpellImmunitiesTo(
Unit* target,
SpellEffectInfo const& spellEffectInfo,
bool apply)
const;
493 bool CanSpellProvideImmunityAgainstAura(
SpellInfo const* auraSpellInfo)
const;
494 bool SpellCancelsAuraEffect(
AuraEffect const* aurEff)
const;
496 uint32 GetAllowedMechanicMask()
const;
498 uint32 GetMechanicImmunityMask(
Unit* caster)
const;
502 void _InitializeExplicitTargetMask();
503 void _InitializeSpellPositivity();
504 void _LoadSpellSpecific();
505 void _LoadAuraState();
506 void _LoadSpellDiminishInfo();
507 void _LoadImmunityInfo();
509 std::array<SpellEffectInfo, MAX_SPELL_EFFECTS>&
_GetEffects() {
return _effects; }
513 void _UnloadImplicitTargetConditionLists();
@ DIMINISHING_LEVEL_IMMUNE
@ TARGET_CHECK_RAID_CLASS
SpellEffectImplicitTargetTypes
@ EFFECT_IMPLICIT_TARGET_CASTER
@ EFFECT_IMPLICIT_TARGET_NONE
@ EFFECT_IMPLICIT_TARGET_EXPLICIT
SpellTargetSelectionCategories
@ TARGET_SELECT_CATEGORY_CONE
@ TARGET_SELECT_CATEGORY_AREA
@ TARGET_SELECT_CATEGORY_DEFAULT
@ TARGET_SELECT_CATEGORY_NEARBY
@ TARGET_SELECT_CATEGORY_NYI
@ TARGET_SELECT_CATEGORY_TRAJ
@ TARGET_SELECT_CATEGORY_CHANNEL
SpellTargetDirectionTypes
@ TARGET_OBJECT_TYPE_UNIT
@ TARGET_OBJECT_TYPE_ITEM
@ TARGET_OBJECT_TYPE_CORPSE
@ TARGET_OBJECT_TYPE_UNIT_AND_DEST
@ TARGET_OBJECT_TYPE_NONE
@ TARGET_OBJECT_TYPE_DEST
@ TARGET_OBJECT_TYPE_GOBJ
@ TARGET_OBJECT_TYPE_CORPSE_ALLY
@ TARGET_OBJECT_TYPE_CORPSE_ENEMY
@ TARGET_OBJECT_TYPE_GOBJ_ITEM
@ SPELL_ATTR0_CU_IGNORE_ARMOR
@ SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER
@ SPELL_ATTR0_CU_CAN_TARGET_ANY_PRIVATE_OBJECT
@ SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET
@ SPELL_ATTR0_CU_ENCHANT_PROC
@ SPELL_ATTR0_CU_ROLLING_PERIODIC
@ SPELL_ATTR0_CU_DIRECT_DAMAGE
@ SPELL_ATTR0_CU_CAN_CRIT
@ SPELL_ATTR0_CU_DONT_BREAK_STEALTH
@ SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET
@ SPELL_ATTR0_CU_CONE_BACK
@ SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED
@ SPELL_ATTR0_CU_NEGATIVE_EFF2
@ SPELL_ATTR0_CU_NEGATIVE_EFF1
@ SPELL_ATTR0_CU_NEGATIVE
@ SPELL_ATTR0_CU_NEEDS_AMMO_DATA
@ SPELL_ATTR0_CU_NEGATIVE_EFF0
@ SPELL_ATTR0_CU_BINARY_SPELL
@ SPELL_ATTR0_CU_SHARE_DAMAGE
@ SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC
@ SPELL_ATTR0_CU_PICKPOCKET
@ SPELL_ATTR0_CU_CONE_LINE
@ SPELL_ATTR0_CU_NO_INITIAL_THREAT
@ SPELL_ATTR0_CU_IS_TALENT
@ SPELL_ATTR0_CU_DEPRECATED_LIQUID_AURA
@ SPELL_SPECIFIC_MAGE_ARMOR
@ SPELL_SPECIFIC_MAGE_ARCANE_BRILLANCE
@ SPELL_SPECIFIC_PRIEST_DIVINE_SPIRIT
@ SPELL_SPECIFIC_ELEMENTAL_SHIELD
@ SPELL_SPECIFIC_WARLOCK_CORRUPTION
@ SPELL_SPECIFIC_PRESENCE
@ SPELL_SPECIFIC_JUDGEMENT
@ SPELL_SPECIFIC_WARRIOR_ENRAGE
@ SPELL_SPECIFIC_WARLOCK_ARMOR
@ SPELL_SPECIFIC_MAGE_POLYMORPH
@ SPELL_SPECIFIC_FOOD_AND_DRINK
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
SpellTargetReferenceTypes
@ TARGET_REFERENCE_TYPE_SRC
@ TARGET_REFERENCE_TYPE_TARGET
@ TARGET_REFERENCE_TYPE_LAST
@ TARGET_REFERENCE_TYPE_NONE
@ TARGET_REFERENCE_TYPE_CASTER
@ TARGET_REFERENCE_TYPE_DEST
float PointsPerComboPoint
SpellEffectInfo(SpellEffectInfo &&) noexcept
std::unique_ptr< ImmunityInfo > _immunityInfo
SpellInfo const * _spellInfo
SpellEffectInfo(SpellEffectInfo const &)=delete
std::vector< Condition * > * ImplicitTargetConditions
SpellRadiusEntry const * RadiusEntry
SpellEffIndex EffectIndex
SpellImplicitTargetInfo TargetA
SpellImplicitTargetInfo TargetB
SpellImplicitTargetInfo()
uint32 ChannelInterruptFlags
uint32 RequiresSpellFocus
std::array< int32, MAX_SPELL_REAGENTS > Reagent
uint32 ExcludeTargetAuraSpell
bool HasAttribute(SpellAttr2 attribute) const
bool HasAttribute(SpellAttr7 attribute) const
SpellEffectInfo & _GetEffect(SpellEffIndex index)
SpellDiminishInfo _diminishInfoNonTriggered
uint32 ManaPerSecondPerLevel
std::array< uint32, 2 > TotemCategory
SpellRangeEntry const * RangeEntry
bool HasAttribute(SpellAttr5 attribute) const
uint32 ExcludeCasterAuraState
std::array< uint32, 2 > Totem
uint32 _allowedMechanicMask
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > & _GetEffects()
std::array< uint32, 2 > SpellVisual
SpellDiminishInfo _diminishInfoTriggered
uint32 CategoryRecoveryTime
uint32 ExplicitTargetMask
bool HasAttribute(SpellAttr6 attribute) const
std::array< uint32, MAX_SPELL_REAGENTS > ReagentCount
bool HasAttribute(SpellCustomAttributes customAttribute) const
bool HasAttribute(SpellAttr0 attribute) const
SpellDurationEntry const * DurationEntry
bool HasAttribute(SpellAttr1 attribute) const
SpellCategoryEntry const * CategoryEntry
uint32 MaxAffectedTargets
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
uint32 ManaCostPercentage
int32 EquippedItemSubClassMask
SpellSpecificType _spellSpecific
bool HasAttribute(SpellAttr3 attribute) const
SpellChainNode const * ChainEntry
bool HasAttribute(SpellAttr4 attribute) const
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > _effects
SpellCastTimesEntry const * CastTimeEntry
int32 EquippedItemInventoryTypeMask
uint32 ExcludeTargetAuraState
uint32 TargetCreatureType
uint32 ExcludeCasterAuraSpell
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > const & GetEffects() const
uint32 StartRecoveryCategory
std::array< char const *, 16 > SpellName
uint32 AuraInterruptFlags
std::array< char const *, 16 > Rank
SpellTargetObjectTypes UsedTargetObjectType
SpellEffectImplicitTargetTypes ImplicitTargetType
SpellTargetObjectTypes ObjectType
SpellTargetCheckTypes SelectionCheckType
SpellTargetReferenceTypes ReferenceType
SpellTargetSelectionCategories SelectionCategory
SpellTargetDirectionTypes DirectionType