TrinityCore
Loading...
Searching...
No Matches
SpellInfo.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef _SPELLINFO_H
19#define _SPELLINFO_H
20
21#include "SharedDefines.h"
22#include "Util.h"
23#include "DBCStructure.h"
24#include "Object.h"
25#include "SpellAuraDefines.h"
26
27class AuraEffect;
28class Item;
29class Player;
30class Spell;
31class SpellMgr;
32class SpellInfo;
33class Unit;
34class WorldObject;
35struct Condition;
36struct SpellChainNode;
37struct SpellModifier;
39
50
60
76
88
103
110
111// Spell clasification
138
140{
163 SPELL_ATTR0_CU_DEPRECATED_LIQUID_AURA = 0x00400000, // DO NOT REUSE
164 SPELL_ATTR0_CU_IS_TALENT = 0x00800000, // reserved for master branch
166 SPELL_ATTR0_CU_CAN_TARGET_ANY_PRIVATE_OBJECT = 0x02000000, // reserved for master branch
167
170
172
174{
175private:
177public:
180
181 bool IsArea() const;
182 SpellTargetSelectionCategories GetSelectionCategory() const;
183 SpellTargetReferenceTypes GetReferenceType() const;
184 SpellTargetObjectTypes GetObjectType() const;
185 SpellTargetCheckTypes GetCheckType() const;
186 SpellTargetDirectionTypes GetDirectionType() const;
187 float CalcDirectionAngle() const;
188
189 Targets GetTarget() const;
190 uint32 GetExplicitTargetMask(bool& srcSet, bool& dstSet) const;
191
192private:
194 {
195 SpellTargetObjectTypes ObjectType; // type of object returned by target type
196 SpellTargetReferenceTypes ReferenceType; // defines which object is used as a reference when selecting target
198 SpellTargetCheckTypes SelectionCheckType; // defines selection criteria
199 SpellTargetDirectionTypes DirectionType; // direction for cone and dest targets
200 };
201 static std::array<StaticData, TOTAL_SPELL_TARGETS> _data;
202};
203
205{
206 friend class SpellInfo;
208public:
230 std::vector<Condition*>* ImplicitTargetConditions;
231
233 explicit SpellEffectInfo(SpellEntry const* spellEntry, SpellInfo const* spellInfo, uint8 effIndex);
236 SpellEffectInfo& operator=(SpellEffectInfo const&) = delete;
237 SpellEffectInfo& operator=(SpellEffectInfo&&) noexcept;
239
240 bool IsEffect() const;
241 bool IsEffect(SpellEffects effectName) const;
242 bool IsAura() const;
243 bool IsAura(AuraType aura) const;
244 bool IsTargetingArea() const;
245 bool IsAreaAuraEffect() const;
246 bool IsUnitOwnedAuraEffect() const;
247
248 int32 CalcValue(WorldObject const* caster = nullptr, int32 const* basePoints = nullptr) const;
249 int32 CalcBaseValue(int32 value) const;
250 float CalcValueMultiplier(WorldObject* caster, Spell* spell = nullptr) const;
251 float CalcDamageMultiplier(WorldObject* caster, Spell* spell = nullptr) const;
252
253 bool HasRadius() const;
254 float CalcRadius(WorldObject* caster = nullptr, Spell* = nullptr) const;
255
256 uint32 GetProvidedTargetMask() const;
257 uint32 GetMissingTargetMask(bool srcSet = false, bool destSet = false, uint32 mask = 0) const;
258
259 SpellEffectImplicitTargetTypes GetImplicitTargetType() const;
260 SpellTargetObjectTypes GetUsedTargetObjectType() const;
261
262 struct ImmunityInfo;
263 ImmunityInfo const* GetImmunityInfo() const { return _immunityInfo.get(); }
264
265private:
267 {
268 SpellEffectImplicitTargetTypes ImplicitTargetType; // defines what target can be added to effect target list if there's no valid target type provided for effect
269 SpellTargetObjectTypes UsedTargetObjectType; // defines valid target object type for spell effect
270 };
271 static std::array<StaticData, TOTAL_SPELL_EFFECTS> _data;
272
273 std::unique_ptr<ImmunityInfo> _immunityInfo;
274};
275
277{
281 int32 DiminishDurationLimit = 0;
282};
283
285{
286 friend class SpellMgr;
287
288 public:
339 float Speed;
341 std::array<uint32, 2> Totem;
342 std::array<int32, MAX_SPELL_REAGENTS> Reagent;
343 std::array<uint32, MAX_SPELL_REAGENTS> ReagentCount;
347 std::array<uint32, 2> TotemCategory;
348 std::array<uint32, 2> SpellVisual;
352 std::array<char const*, 16> SpellName;
353 std::array<char const*, 16> Rank;
362 std::array<SpellEffectInfo, MAX_SPELL_EFFECTS> _effects;
365
366 SpellInfo(SpellEntry const* spellEntry);
367 ~SpellInfo();
368
369 uint32 GetCategory() const;
370 bool HasEffect(SpellEffects effect) const;
371 bool HasAura(AuraType aura) const;
372 bool HasAreaAuraEffect() const;
373 bool HasOnlyDamageEffects() const;
374
375 inline bool HasAttribute(SpellAttr0 attribute) const { return !!(Attributes & attribute); }
376 inline bool HasAttribute(SpellAttr1 attribute) const { return !!(AttributesEx & attribute); }
377 inline bool HasAttribute(SpellAttr2 attribute) const { return !!(AttributesEx2 & attribute); }
378 inline bool HasAttribute(SpellAttr3 attribute) const { return !!(AttributesEx3 & attribute); }
379 inline bool HasAttribute(SpellAttr4 attribute) const { return !!(AttributesEx4 & attribute); }
380 inline bool HasAttribute(SpellAttr5 attribute) const { return !!(AttributesEx5 & attribute); }
381 inline bool HasAttribute(SpellAttr6 attribute) const { return !!(AttributesEx6 & attribute); }
382 inline bool HasAttribute(SpellAttr7 attribute) const { return !!(AttributesEx7 & attribute); }
383 inline bool HasAttribute(SpellCustomAttributes customAttribute) const { return !!(AttributesCu & customAttribute); }
384
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;
393
394 bool IsAffectingArea() const;
395 bool IsTargetingArea() const;
396 bool NeedsExplicitUnitTarget() const;
397 bool NeedsToBeTriggeredByCaster(SpellInfo const* triggeringSpell) const;
398 bool IsSelfCast() const;
399
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;
422
423 WeaponAttackType GetAttackType() const;
424
425 bool IsItemFitToSpellRequirements(Item const* item) const;
426
427 bool IsAffected(uint32 familyName, flag96 const& familyFlags) const;
428
429 bool IsAffectedBySpellMods() const;
430 bool IsAffectedBySpellMod(SpellModifier const* mod) const;
431
432 bool CanPierceImmuneAura(SpellInfo const* auraSpellInfo) const;
433 bool CanDispelAura(SpellInfo const* auraSpellInfo) const;
434
435 bool IsSingleTarget() const;
436 bool IsAuraExclusiveBySpecificWith(SpellInfo const* spellInfo) const;
437 bool IsAuraExclusiveBySpecificPerCasterWith(SpellInfo const* spellInfo) const;
438
439 SpellCastResult CheckShapeshift(uint32 form) const;
440 SpellCastResult CheckLocation(uint32 map_id, uint32 zone_id, uint32 area_id, Player const* player = nullptr, bool strict = true) const;
441 SpellCastResult CheckTarget(WorldObject const* caster, WorldObject const* target, bool implicit = true) const;
442 SpellCastResult CheckExplicitTarget(WorldObject const* caster, WorldObject const* target, Item const* itemTarget = nullptr) const;
443 SpellCastResult CheckVehicle(Unit const* caster) const;
444 bool CheckTargetCreatureType(Unit const* target) const;
445
446 SpellSchoolMask GetSchoolMask() const;
447 uint32 GetAllEffectsMechanicMask() const;
448 uint32 GetEffectMechanicMask(SpellEffIndex effIndex) const;
449 uint32 GetSpellMechanicMaskByEffectMask(uint32 effectMask) const;
450 Mechanics GetEffectMechanic(SpellEffIndex effIndex) const;
451 uint32 GetDispelMask() const;
452 static uint32 GetDispelMask(DispelType type);
453 uint32 GetExplicitTargetMask() const;
454
455 AuraStateType GetAuraState() const;
456 SpellSpecificType GetSpellSpecific() const;
457
458 float GetMinRange(bool positive = false) const;
459 float GetMaxRange(bool positive = false, WorldObject* caster = nullptr, Spell* spell = nullptr) const;
460
461 int32 GetDuration() const;
462 int32 GetMaxDuration() const;
463
464 uint32 GetMaxTicks() const;
465
466 uint32 CalcCastTime(Spell* spell = nullptr) const;
467 uint32 GetRecoveryTime() const;
468
469 int32 CalcPowerCost(WorldObject const* caster, SpellSchoolMask schoolMask, Spell* spell = nullptr) const;
470
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;
477 SpellInfo const* GetAuraRankForLevel(uint8 level) const;
478 bool IsRankOf(SpellInfo const* spellInfo) const;
479 bool IsDifferentRankOf(SpellInfo const* spellInfo) const;
480 bool IsHighRankOf(SpellInfo const* spellInfo) const;
481
482 std::array<SpellEffectInfo, MAX_SPELL_EFFECTS> const& GetEffects() const { return _effects; }
483 SpellEffectInfo const& GetEffect(SpellEffIndex index) const { ASSERT(index < _effects.size()); return _effects[index]; }
484
485 // spell diminishing returns
486 DiminishingGroup GetDiminishingReturnsGroupForSpell(bool triggered) const;
487 DiminishingReturnsType GetDiminishingReturnsGroupType(bool triggered) const;
488 DiminishingLevels GetDiminishingReturnsMaxLevel(bool triggered) const;
489 int32 GetDiminishingReturnsLimitDuration(bool triggered) const;
490
491 // spell immunities
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;
495
496 uint32 GetAllowedMechanicMask() const;
497
498 uint32 GetMechanicImmunityMask(Unit* caster) const;
499
500 private:
501 // loading helpers
502 void _InitializeExplicitTargetMask();
503 void _InitializeSpellPositivity();
504 void _LoadSpellSpecific();
505 void _LoadAuraState();
506 void _LoadSpellDiminishInfo();
507 void _LoadImmunityInfo();
508
509 std::array<SpellEffectInfo, MAX_SPELL_EFFECTS>& _GetEffects() { return _effects; }
510 SpellEffectInfo& _GetEffect(SpellEffIndex index) { ASSERT(index < _effects.size()); return _effects[index]; }
511
512 // unloading helpers
513 void _UnloadImplicitTargetConditionLists();
514
517
520
522};
523
524#endif // _SPELLINFO_H
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
int32_t int32
Definition Define.h:129
uint64_t uint64
Definition Define.h:132
uint32_t uint32
Definition Define.h:133
#define ASSERT
Definition Errors.h:68
SpellEffIndex
SpellAttr7
SpellEffects
SpellAttr5
Targets
SpellSchoolMask
SpellAttr2
SpellAttr1
SpellAttr3
WeaponAttackType
Mechanics
Powers
SpellAttr0
DiminishingLevels
@ DIMINISHING_LEVEL_IMMUNE
DiminishingGroup
@ DIMINISHING_NONE
AuraStateType
DiminishingReturnsType
@ DRTYPE_NONE
DispelType
SpellCastResult
SpellAttr4
SpellAttr6
SpellTargetCheckTypes
Definition SpellInfo.h:78
@ TARGET_CHECK_PASSENGER
Definition SpellInfo.h:86
@ TARGET_CHECK_PARTY
Definition SpellInfo.h:83
@ TARGET_CHECK_ENEMY
Definition SpellInfo.h:81
@ TARGET_CHECK_DEFAULT
Definition SpellInfo.h:79
@ TARGET_CHECK_ENTRY
Definition SpellInfo.h:80
@ TARGET_CHECK_RAID_CLASS
Definition SpellInfo.h:85
@ TARGET_CHECK_ALLY
Definition SpellInfo.h:82
@ TARGET_CHECK_RAID
Definition SpellInfo.h:84
SpellEffectImplicitTargetTypes
Definition SpellInfo.h:105
@ EFFECT_IMPLICIT_TARGET_CASTER
Definition SpellInfo.h:108
@ EFFECT_IMPLICIT_TARGET_NONE
Definition SpellInfo.h:106
@ EFFECT_IMPLICIT_TARGET_EXPLICIT
Definition SpellInfo.h:107
SpellTargetSelectionCategories
Definition SpellInfo.h:41
@ TARGET_SELECT_CATEGORY_CONE
Definition SpellInfo.h:46
@ TARGET_SELECT_CATEGORY_AREA
Definition SpellInfo.h:47
@ TARGET_SELECT_CATEGORY_DEFAULT
Definition SpellInfo.h:43
@ TARGET_SELECT_CATEGORY_NEARBY
Definition SpellInfo.h:45
@ TARGET_SELECT_CATEGORY_NYI
Definition SpellInfo.h:42
@ TARGET_SELECT_CATEGORY_TRAJ
Definition SpellInfo.h:48
@ TARGET_SELECT_CATEGORY_CHANNEL
Definition SpellInfo.h:44
SpellTargetDirectionTypes
Definition SpellInfo.h:90
@ TARGET_DIR_FRONT_RIGHT
Definition SpellInfo.h:96
@ TARGET_DIR_NONE
Definition SpellInfo.h:91
@ TARGET_DIR_BACK
Definition SpellInfo.h:93
@ TARGET_DIR_BACK_RIGHT
Definition SpellInfo.h:97
@ TARGET_DIR_RIGHT
Definition SpellInfo.h:94
@ TARGET_DIR_FRONT_LEFT
Definition SpellInfo.h:99
@ TARGET_DIR_FRONT
Definition SpellInfo.h:92
@ TARGET_DIR_LEFT
Definition SpellInfo.h:95
@ TARGET_DIR_ENTRY
Definition SpellInfo.h:101
@ TARGET_DIR_BACK_LEFT
Definition SpellInfo.h:98
@ TARGET_DIR_RANDOM
Definition SpellInfo.h:100
SpellTargetObjectTypes
Definition SpellInfo.h:62
@ TARGET_OBJECT_TYPE_UNIT
Definition SpellInfo.h:66
@ TARGET_OBJECT_TYPE_ITEM
Definition SpellInfo.h:70
@ TARGET_OBJECT_TYPE_CORPSE
Definition SpellInfo.h:71
@ TARGET_OBJECT_TYPE_UNIT_AND_DEST
Definition SpellInfo.h:67
@ TARGET_OBJECT_TYPE_NONE
Definition SpellInfo.h:63
@ TARGET_OBJECT_TYPE_DEST
Definition SpellInfo.h:65
@ TARGET_OBJECT_TYPE_GOBJ
Definition SpellInfo.h:68
@ TARGET_OBJECT_TYPE_CORPSE_ALLY
Definition SpellInfo.h:74
@ TARGET_OBJECT_TYPE_CORPSE_ENEMY
Definition SpellInfo.h:73
@ TARGET_OBJECT_TYPE_GOBJ_ITEM
Definition SpellInfo.h:69
@ TARGET_OBJECT_TYPE_SRC
Definition SpellInfo.h:64
SpellCustomAttributes
Definition SpellInfo.h:140
@ SPELL_ATTR0_CU_IGNORE_ARMOR
Definition SpellInfo.h:156
@ SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER
Definition SpellInfo.h:157
@ SPELL_ATTR0_CU_CAN_TARGET_ANY_PRIVATE_OBJECT
Definition SpellInfo.h:166
@ SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET
Definition SpellInfo.h:159
@ SPELL_ATTR0_CU_ENCHANT_PROC
Definition SpellInfo.h:141
@ SPELL_ATTR0_CU_ROLLING_PERIODIC
Definition SpellInfo.h:152
@ SPELL_ATTR0_CU_DIRECT_DAMAGE
Definition SpellInfo.h:149
@ SPELL_ATTR0_CU_CAN_CRIT
Definition SpellInfo.h:148
@ SPELL_ATTR0_CU_DONT_BREAK_STEALTH
Definition SpellInfo.h:147
@ SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET
Definition SpellInfo.h:158
@ SPELL_ATTR0_CU_CONE_BACK
Definition SpellInfo.h:142
@ SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED
Definition SpellInfo.h:165
@ SPELL_ATTR0_CU_NEGATIVE_EFF2
Definition SpellInfo.h:155
@ SPELL_ATTR0_CU_AURA_CC
Definition SpellInfo.h:146
@ SPELL_ATTR0_CU_NEGATIVE_EFF1
Definition SpellInfo.h:154
@ SPELL_ATTR0_CU_CHARGE
Definition SpellInfo.h:150
@ SPELL_ATTR0_CU_NEGATIVE
Definition SpellInfo.h:168
@ SPELL_ATTR0_CU_NEEDS_AMMO_DATA
Definition SpellInfo.h:160
@ SPELL_ATTR0_CU_NEGATIVE_EFF0
Definition SpellInfo.h:153
@ SPELL_ATTR0_CU_BINARY_SPELL
Definition SpellInfo.h:161
@ SPELL_ATTR0_CU_SHARE_DAMAGE
Definition SpellInfo.h:144
@ SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC
Definition SpellInfo.h:162
@ SPELL_ATTR0_CU_PICKPOCKET
Definition SpellInfo.h:151
@ SPELL_ATTR0_CU_CONE_LINE
Definition SpellInfo.h:143
@ SPELL_ATTR0_CU_NO_INITIAL_THREAT
Definition SpellInfo.h:145
@ SPELL_ATTR0_CU_IS_TALENT
Definition SpellInfo.h:164
@ SPELL_ATTR0_CU_DEPRECATED_LIQUID_AURA
Definition SpellInfo.h:163
SpellSpecificType
Definition SpellInfo.h:113
@ SPELL_SPECIFIC_FOOD
Definition SpellInfo.h:127
@ SPELL_SPECIFIC_MAGE_ARMOR
Definition SpellInfo.h:122
@ SPELL_SPECIFIC_NORMAL
Definition SpellInfo.h:114
@ SPELL_SPECIFIC_STING
Definition SpellInfo.h:117
@ SPELL_SPECIFIC_MAGE_ARCANE_BRILLANCE
Definition SpellInfo.h:133
@ SPELL_SPECIFIC_ASPECT
Definition SpellInfo.h:119
@ SPELL_SPECIFIC_PRIEST_DIVINE_SPIRIT
Definition SpellInfo.h:135
@ SPELL_SPECIFIC_ELEMENTAL_SHIELD
Definition SpellInfo.h:123
@ SPELL_SPECIFIC_WARLOCK_CORRUPTION
Definition SpellInfo.h:126
@ SPELL_SPECIFIC_PRESENCE
Definition SpellInfo.h:130
@ SPELL_SPECIFIC_CURSE
Definition SpellInfo.h:118
@ SPELL_SPECIFIC_JUDGEMENT
Definition SpellInfo.h:125
@ SPELL_SPECIFIC_DRINK
Definition SpellInfo.h:128
@ SPELL_SPECIFIC_HAND
Definition SpellInfo.h:136
@ SPELL_SPECIFIC_AURA
Definition SpellInfo.h:116
@ SPELL_SPECIFIC_WARRIOR_ENRAGE
Definition SpellInfo.h:134
@ SPELL_SPECIFIC_WARLOCK_ARMOR
Definition SpellInfo.h:121
@ SPELL_SPECIFIC_SCROLL
Definition SpellInfo.h:132
@ SPELL_SPECIFIC_MAGE_POLYMORPH
Definition SpellInfo.h:124
@ SPELL_SPECIFIC_TRACKER
Definition SpellInfo.h:120
@ SPELL_SPECIFIC_SEAL
Definition SpellInfo.h:115
@ SPELL_SPECIFIC_FOOD_AND_DRINK
Definition SpellInfo.h:129
@ SPELL_SPECIFIC_CHARM
Definition SpellInfo.h:131
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
Definition SpellInfo.cpp:35
SpellTargetReferenceTypes
Definition SpellInfo.h:52
@ TARGET_REFERENCE_TYPE_SRC
Definition SpellInfo.h:57
@ TARGET_REFERENCE_TYPE_TARGET
Definition SpellInfo.h:55
@ TARGET_REFERENCE_TYPE_LAST
Definition SpellInfo.h:56
@ TARGET_REFERENCE_TYPE_NONE
Definition SpellInfo.h:53
@ TARGET_REFERENCE_TYPE_CASTER
Definition SpellInfo.h:54
@ TARGET_REFERENCE_TYPE_DEST
Definition SpellInfo.h:58
Definition Item.h:62
Mechanics Mechanic
Definition SpellInfo.h:222
float PointsPerComboPoint
Definition SpellInfo.h:216
AuraType ApplyAuraName
Definition SpellInfo.h:211
SpellEffectInfo(SpellEffectInfo &&) noexcept
uint32 TriggerSpell
Definition SpellInfo.h:228
SpellEffects Effect
Definition SpellInfo.h:210
std::unique_ptr< ImmunityInfo > _immunityInfo
Definition SpellInfo.h:273
flag96 SpellClassMask
Definition SpellInfo.h:229
SpellInfo const * _spellInfo
Definition SpellInfo.h:207
uint32 ChainTargets
Definition SpellInfo.h:226
SpellEffectInfo(SpellEffectInfo const &)=delete
float BonusCoefficient
Definition SpellInfo.h:219
float ChainAmplitude
Definition SpellInfo.h:218
uint32 ApplyAuraPeriod
Definition SpellInfo.h:212
std::vector< Condition * > * ImplicitTargetConditions
Definition SpellInfo.h:230
float RealPointsPerLevel
Definition SpellInfo.h:214
SpellRadiusEntry const * RadiusEntry
Definition SpellInfo.h:225
SpellEffIndex EffectIndex
Definition SpellInfo.h:209
SpellImplicitTargetInfo TargetA
Definition SpellInfo.h:223
SpellImplicitTargetInfo TargetB
Definition SpellInfo.h:224
uint32 ChannelInterruptFlags
Definition SpellInfo.h:323
uint32 RequiresSpellFocus
Definition SpellInfo.h:306
uint32 BaseLevel
Definition SpellInfo.h:328
uint32 MaxLevel
Definition SpellInfo.h:327
uint32 SpellLevel
Definition SpellInfo.h:329
uint32 TargetAuraState
Definition SpellInfo.h:309
std::array< int32, MAX_SPELL_REAGENTS > Reagent
Definition SpellInfo.h:342
uint32 ExcludeTargetAuraSpell
Definition SpellInfo.h:315
uint32 Priority
Definition SpellInfo.h:351
uint32 PreventionType
Definition SpellInfo.h:359
uint32 CasterAuraSpell
Definition SpellInfo.h:312
uint32 RuneCostID
Definition SpellInfo.h:337
uint32 MaxTargetLevel
Definition SpellInfo.h:354
bool HasAttribute(SpellAttr2 attribute) const
Definition SpellInfo.h:377
uint32 ManaCostPerlevel
Definition SpellInfo.h:333
flag96 SpellFamilyFlags
Definition SpellInfo.h:357
bool HasAttribute(SpellAttr7 attribute) const
Definition SpellInfo.h:382
uint32 AttributesCu
Definition SpellInfo.h:301
uint32 RecoveryTime
Definition SpellInfo.h:317
SpellEffectInfo & _GetEffect(SpellEffIndex index)
Definition SpellInfo.h:510
SpellDiminishInfo _diminishInfoNonTriggered
Definition SpellInfo.h:518
uint32 ManaPerSecondPerLevel
Definition SpellInfo.h:335
std::array< uint32, 2 > TotemCategory
Definition SpellInfo.h:347
uint64 Stances
Definition SpellInfo.h:302
uint32 StackAmount
Definition SpellInfo.h:340
uint32 Mechanic
Definition SpellInfo.h:292
uint32 Id
Definition SpellInfo.h:289
SpellRangeEntry const * RangeEntry
Definition SpellInfo.h:338
uint32 ProcCharges
Definition SpellInfo.h:326
int32 RequiredAreasID
Definition SpellInfo.h:360
bool HasAttribute(SpellAttr5 attribute) const
Definition SpellInfo.h:380
AuraStateType _auraState
Definition SpellInfo.h:516
uint32 Dispel
Definition SpellInfo.h:291
Powers PowerType
Definition SpellInfo.h:331
uint32 ExcludeCasterAuraState
Definition SpellInfo.h:310
uint32 ActiveIconID
Definition SpellInfo.h:350
float Speed
Definition SpellInfo.h:339
int32 EquippedItemClass
Definition SpellInfo.h:344
uint32 SchoolMask
Definition SpellInfo.h:361
std::array< uint32, 2 > Totem
Definition SpellInfo.h:341
uint32 _allowedMechanicMask
Definition SpellInfo.h:521
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > & _GetEffects()
Definition SpellInfo.h:509
uint32 CasterAuraState
Definition SpellInfo.h:308
std::array< uint32, 2 > SpellVisual
Definition SpellInfo.h:348
uint32 ProcFlags
Definition SpellInfo.h:324
SpellDiminishInfo _diminishInfoTriggered
Definition SpellInfo.h:519
uint32 CategoryRecoveryTime
Definition SpellInfo.h:318
uint64 StancesNot
Definition SpellInfo.h:303
uint32 ExplicitTargetMask
Definition SpellInfo.h:363
uint32 AttributesEx3
Definition SpellInfo.h:296
bool HasAttribute(SpellAttr6 attribute) const
Definition SpellInfo.h:381
uint32 ManaPerSecond
Definition SpellInfo.h:334
std::array< uint32, MAX_SPELL_REAGENTS > ReagentCount
Definition SpellInfo.h:343
bool HasAttribute(SpellCustomAttributes customAttribute) const
Definition SpellInfo.h:383
bool HasAttribute(SpellAttr0 attribute) const
Definition SpellInfo.h:375
uint32 InterruptFlags
Definition SpellInfo.h:321
SpellDurationEntry const * DurationEntry
Definition SpellInfo.h:330
bool HasAttribute(SpellAttr1 attribute) const
Definition SpellInfo.h:376
uint32 Attributes
Definition SpellInfo.h:293
uint32 AttributesEx
Definition SpellInfo.h:294
SpellCategoryEntry const * CategoryEntry
Definition SpellInfo.h:290
uint32 MaxAffectedTargets
Definition SpellInfo.h:355
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
Definition SpellInfo.h:483
uint32 ManaCostPercentage
Definition SpellInfo.h:336
uint32 AttributesEx6
Definition SpellInfo.h:299
uint32 AttributesEx7
Definition SpellInfo.h:300
int32 EquippedItemSubClassMask
Definition SpellInfo.h:345
SpellSpecificType _spellSpecific
Definition SpellInfo.h:515
uint32 FacingCasterFlags
Definition SpellInfo.h:307
bool HasAttribute(SpellAttr3 attribute) const
Definition SpellInfo.h:378
uint32 StartRecoveryTime
Definition SpellInfo.h:320
uint32 TargetAuraSpell
Definition SpellInfo.h:313
uint32 SpellIconID
Definition SpellInfo.h:349
SpellChainNode const * ChainEntry
Definition SpellInfo.h:364
bool HasAttribute(SpellAttr4 attribute) const
Definition SpellInfo.h:379
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > _effects
Definition SpellInfo.h:362
uint32 Targets
Definition SpellInfo.h:304
SpellCastTimesEntry const * CastTimeEntry
Definition SpellInfo.h:316
int32 EquippedItemInventoryTypeMask
Definition SpellInfo.h:346
uint32 ExcludeTargetAuraState
Definition SpellInfo.h:311
uint32 TargetCreatureType
Definition SpellInfo.h:305
uint32 ProcChance
Definition SpellInfo.h:325
uint32 AttributesEx2
Definition SpellInfo.h:295
uint32 DmgClass
Definition SpellInfo.h:358
uint32 AttributesEx5
Definition SpellInfo.h:298
uint32 AttributesEx4
Definition SpellInfo.h:297
uint32 ExcludeCasterAuraSpell
Definition SpellInfo.h:314
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > const & GetEffects() const
Definition SpellInfo.h:482
uint32 StartRecoveryCategory
Definition SpellInfo.h:319
uint32 SpellFamilyName
Definition SpellInfo.h:356
uint32 ManaCost
Definition SpellInfo.h:332
std::array< char const *, 16 > SpellName
Definition SpellInfo.h:352
uint32 AuraInterruptFlags
Definition SpellInfo.h:322
std::array< char const *, 16 > Rank
Definition SpellInfo.h:353
Definition Spell.h:152
Definition Unit.h:769
Definition Util.h:412
SpellTargetObjectTypes UsedTargetObjectType
Definition SpellInfo.h:269
SpellEffectImplicitTargetTypes ImplicitTargetType
Definition SpellInfo.h:268
SpellTargetObjectTypes ObjectType
Definition SpellInfo.h:195
SpellTargetCheckTypes SelectionCheckType
Definition SpellInfo.h:198
SpellTargetReferenceTypes ReferenceType
Definition SpellInfo.h:196
SpellTargetSelectionCategories SelectionCategory
Definition SpellInfo.h:197
SpellTargetDirectionTypes DirectionType
Definition SpellInfo.h:199