TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
SpellInfo.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
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 "DB2Structure.h"
25 #include "Object.h"
26 #include "SpellAuraDefines.h"
27 
28 class Unit;
29 class Player;
30 class Item;
31 class Spell;
32 class SpellInfo;
33 class WorldObject;
34 class AuraEffect;
35 struct SpellChainNode;
36 struct SpellTargetPosition;
37 struct SpellDurationEntry;
38 struct SpellModifier;
39 struct SpellRangeEntry;
40 struct SpellRadiusEntry;
41 struct SpellEntry;
42 struct SpellCastTimesEntry;
43 struct Condition;
44 
46 {
47  TARGET_FLAG_NONE = 0x00000000,
48  TARGET_FLAG_UNUSED_1 = 0x00000001, // not used
49  TARGET_FLAG_UNIT = 0x00000002, // pguid
50  TARGET_FLAG_UNIT_RAID = 0x00000004, // not sent, used to validate target (if raid member)
51  TARGET_FLAG_UNIT_PARTY = 0x00000008, // not sent, used to validate target (if party member)
52  TARGET_FLAG_ITEM = 0x00000010, // pguid
53  TARGET_FLAG_SOURCE_LOCATION = 0x00000020, // pguid, 3 float
54  TARGET_FLAG_DEST_LOCATION = 0x00000040, // pguid, 3 float
55  TARGET_FLAG_UNIT_ENEMY = 0x00000080, // not sent, used to validate target (if enemy)
56  TARGET_FLAG_UNIT_ALLY = 0x00000100, // not sent, used to validate target (if ally)
57  TARGET_FLAG_CORPSE_ENEMY = 0x00000200, // pguid
58  TARGET_FLAG_UNIT_DEAD = 0x00000400, // not sent, used to validate target (if dead creature)
59  TARGET_FLAG_GAMEOBJECT = 0x00000800, // pguid, used with TARGET_GAMEOBJECT_TARGET
60  TARGET_FLAG_TRADE_ITEM = 0x00001000, // pguid
61  TARGET_FLAG_STRING = 0x00002000, // string
62  TARGET_FLAG_GAMEOBJECT_ITEM = 0x00004000, // not sent, used with TARGET_GAMEOBJECT_ITEM_TARGET
63  TARGET_FLAG_CORPSE_ALLY = 0x00008000, // pguid
64  TARGET_FLAG_UNIT_MINIPET = 0x00010000, // pguid, used to validate target (if non combat pet)
65  TARGET_FLAG_GLYPH_SLOT = 0x00020000, // used in glyph spells
66  TARGET_FLAG_DEST_TARGET = 0x00040000, // sometimes appears with DEST_TARGET spells (may appear or not for a given spell)
67  TARGET_FLAG_EXTRA_TARGETS = 0x00080000, // uint32 counter, loop { vec3 - screen position (?), guid }, not used so far
68  TARGET_FLAG_UNIT_PASSENGER = 0x00100000, // guessed, used to validate target (if vehicle passenger)
69  TARGET_FLAG_UNK400000 = 0X00400000,
70  TARGET_FLAG_UNK1000000 = 0X01000000,
71  TARGET_FLAG_UNK4000000 = 0X04000000,
74 
80 };
81 
83 {
90 };
91 
93 {
100 };
101 
103 {
113  // only for effect target type
116 };
117 
119 {
128 };
129 
131 {
143 };
144 
146 {
150 };
151 
152 // Spell clasification
154 {
180 };
181 
183 {
192  SPELL_ATTR0_CU_CHARGE = 0x00000200,
201 
203 };
204 
206 
208 {
209 private:
211 public:
212  SpellImplicitTargetInfo() : _target(Targets(0)) { }
214 
215  bool IsArea() const;
216  SpellTargetSelectionCategories GetSelectionCategory() const;
217  SpellTargetReferenceTypes GetReferenceType() const;
218  SpellTargetObjectTypes GetObjectType() const;
219  SpellTargetCheckTypes GetCheckType() const;
220  SpellTargetDirectionTypes GetDirectionType() const;
221  float CalcDirectionAngle() const;
222 
223  Targets GetTarget() const;
224  uint32 GetExplicitTargetMask(bool& srcSet, bool& dstSet) const;
225 
226 private:
227  struct StaticData
228  {
229  SpellTargetObjectTypes ObjectType; // type of object returned by target type
230  SpellTargetReferenceTypes ReferenceType; // defines which object is used as a reference when selecting target
232  SpellTargetCheckTypes SelectionCheckType; // defines selection criteria
233  SpellTargetDirectionTypes DirectionType; // direction for cone and dest targets
234  };
236 };
237 
239 {
241 public:
250  float Amplitude;
266  std::vector<Condition*>* ImplicitTargetConditions;
267  // SpellScalingEntry
268  struct ScalingInfo
269  {
270  float Coefficient;
271  float Variance;
273  } Scaling;
274 
275  SpellEffectInfo() : _spellInfo(NULL), EffectIndex(0), Effect(0), ApplyAuraName(0), ApplyAuraPeriod(0), DieSides(0),
276  RealPointsPerLevel(0), BasePoints(0), PointsPerResource(0), Amplitude(0), ChainAmplitude(0),
277  BonusCoefficient(0), MiscValue(0), MiscValueB(0), Mechanic(MECHANIC_NONE), PositionFacing(0),
278  RadiusEntry(NULL), ChainTargets(0), ItemType(0), TriggerSpell(0), BonusCoefficientFromAP(0.0f), ImplicitTargetConditions(NULL) { }
279  SpellEffectInfo(SpellEntry const* spellEntry, SpellInfo const* spellInfo, uint8 effIndex, SpellEffectEntry const* effect);
280 
281  bool IsEffect() const;
282  bool IsEffect(SpellEffectName effectName) const;
283  bool IsAura() const;
284  bool IsAura(AuraType aura) const;
285  bool IsTargetingArea() const;
286  bool IsAreaAuraEffect() const;
287  bool IsFarUnitTargetEffect() const;
288  bool IsFarDestTargetEffect() const;
289  bool IsUnitOwnedAuraEffect() const;
290 
291  int32 CalcValue(Unit const* caster = nullptr, int32 const* basePoints = nullptr, Unit const* target = nullptr, float* variance = nullptr, int32 itemLevel = -1) const;
292  int32 CalcBaseValue(int32 value) const;
293  float CalcValueMultiplier(Unit* caster, Spell* spell = NULL) const;
294  float CalcDamageMultiplier(Unit* caster, Spell* spell = NULL) const;
295 
296  bool HasRadius() const;
297  bool HasMaxRadius() const;
298  float CalcRadius(Unit* caster = NULL, Spell* = NULL) const;
299 
300  uint32 GetProvidedTargetMask() const;
301  uint32 GetMissingTargetMask(bool srcSet = false, bool destSet = false, uint32 mask = 0) const;
302 
303  SpellEffectImplicitTargetTypes GetImplicitTargetType() const;
304  SpellTargetObjectTypes GetUsedTargetObjectType() const;
305 
306 private:
307  struct StaticData
308  {
309  SpellEffectImplicitTargetTypes ImplicitTargetType; // defines what target can be added to effect target list if there's no valid target type provided for effect
310  SpellTargetObjectTypes UsedTargetObjectType; // defines valid target object type for spell effect
311  };
313 };
314 
315 typedef std::vector<SpellEffectInfo const*> SpellEffectInfoVector;
316 typedef std::unordered_map<uint32, SpellEffectInfoVector> SpellEffectInfoMap;
317 
318 typedef std::vector<SpellEffectEntry const*> SpellEffectEntryVector;
319 typedef std::unordered_map<uint32, SpellEffectEntryVector> SpellEffectEntryMap;
320 
321 typedef std::vector<SpellXSpellVisualEntry const*> SpellVisualVector;
322 typedef std::unordered_map<uint32, SpellVisualVector> SpellVisualMap;
323 
324 typedef std::vector<AuraEffect*> AuraEffectVector;
325 
327 {
328 public:
377  std::vector<SpellPowerEntry const*> PowerCosts;
380  float Speed;
384  uint32 ReagentCount[MAX_SPELL_REAGENTS];
389  uint32 SpellVisual[2];
392  char* SpellName;
393  char* Rank;
419  // SpellScalingEntry
420  struct ScalingInfo
421  {
426  float NerfFactor;
430  } Scaling;
431 
434 
435  // struct access functions
436  SpellTargetRestrictionsEntry const* GetSpellTargetRestrictions() const;
437  SpellAuraOptionsEntry const* GetSpellAuraOptions() const;
438  SpellAuraRestrictionsEntry const* GetSpellAuraRestrictions() const;
439  SpellCastingRequirementsEntry const* GetSpellCastingRequirements() const;
440  SpellCategoriesEntry const* GetSpellCategories() const;
441  SpellClassOptionsEntry const* GetSpellClassOptions() const;
442  SpellCooldownsEntry const* GetSpellCooldowns() const;
443  SpellEquippedItemsEntry const* GetSpellEquippedItems() const;
444  SpellInterruptsEntry const* GetSpellInterrupts() const;
445  SpellLevelsEntry const* GetSpellLevels() const;
446  SpellReagentsEntry const* GetSpellReagents() const;
447  SpellScalingEntry const* GetSpellScaling() const;
448  SpellShapeshiftEntry const* GetSpellShapeshift() const;
449  SpellTotemsEntry const* GetSpellTotems() const;
450  SpellMiscEntry const* GetSpellMisc() const;
451 
452  SpellInfo(SpellEntry const* spellEntry, SpellEffectEntryMap const& effectsMap, SpellVisualMap&& visuals);
453  ~SpellInfo();
454 
455  uint32 GetCategory() const;
456  bool HasEffect(uint32 difficulty, SpellEffectName effect) const;
457  bool HasEffect(SpellEffectName effect) const;
458  bool HasAura(uint32 difficulty, AuraType aura) const;
459  bool HasAreaAuraEffect(uint32 difficulty) const;
460  bool HasAreaAuraEffect() const;
461 
462  inline bool HasAttribute(SpellAttr0 attribute) const { return !!(Attributes & attribute); }
463  inline bool HasAttribute(SpellAttr1 attribute) const { return !!(AttributesEx & attribute); }
464  inline bool HasAttribute(SpellAttr2 attribute) const { return !!(AttributesEx2 & attribute); }
465  inline bool HasAttribute(SpellAttr3 attribute) const { return !!(AttributesEx3 & attribute); }
466  inline bool HasAttribute(SpellAttr4 attribute) const { return !!(AttributesEx4 & attribute); }
467  inline bool HasAttribute(SpellAttr5 attribute) const { return !!(AttributesEx5 & attribute); }
468  inline bool HasAttribute(SpellAttr6 attribute) const { return !!(AttributesEx6 & attribute); }
469  inline bool HasAttribute(SpellAttr7 attribute) const { return !!(AttributesEx7 & attribute); }
470  inline bool HasAttribute(SpellAttr8 attribute) const { return !!(AttributesEx8 & attribute); }
471  inline bool HasAttribute(SpellAttr9 attribute) const { return !!(AttributesEx9 & attribute); }
472  inline bool HasAttribute(SpellAttr10 attribute) const { return !!(AttributesEx10 & attribute); }
473  inline bool HasAttribute(SpellAttr11 attribute) const { return !!(AttributesEx11 & attribute); }
474  inline bool HasAttribute(SpellAttr12 attribute) const { return !!(AttributesEx12 & attribute); }
475  inline bool HasAttribute(SpellAttr13 attribute) const { return !!(AttributesEx13 & attribute); }
476  inline bool HasAttribute(SpellCustomAttributes customAttribute) const { return !!(AttributesCu & customAttribute); }
477 
478  bool IsExplicitDiscovery() const;
479  bool IsLootCrafting() const;
480  bool IsQuestTame() const;
481  bool IsProfessionOrRiding(uint32 difficulty = DIFFICULTY_NONE) const;
482  bool IsProfession(uint32 difficulty = DIFFICULTY_NONE) const;
483  bool IsPrimaryProfession(uint32 difficulty = DIFFICULTY_NONE) const;
484  bool IsPrimaryProfessionFirstRank(uint32 difficulty = DIFFICULTY_NONE) const;
485  bool IsAbilityLearnedWithProfession() const;
486  bool IsAbilityOfSkillType(uint32 skillType) const;
487 
488  bool IsAffectingArea(uint32 difficulty) const;
489  bool IsTargetingArea(uint32 difficulty) const;
490  bool NeedsExplicitUnitTarget() const;
491  bool NeedsToBeTriggeredByCaster(SpellInfo const* triggeringSpell, uint32 difficulty) const;
492 
493  bool IsPassive() const;
494  bool IsAutocastable() const;
495  bool IsStackableWithRanks() const;
496  bool IsPassiveStackableWithRanks(uint32 difficulty) const;
497  bool IsMultiSlotAura() const;
498  bool IsStackableOnOneSlotWithDifferentCasters() const;
499  bool IsCooldownStartedOnEvent() const;
500  bool IsDeathPersistent() const;
501  bool IsRequiringDeadTarget() const;
502  bool IsAllowingDeadTarget() const;
503  bool CanBeUsedInCombat() const;
504  bool IsPositive() const;
505  bool IsPositiveEffect(uint8 effIndex) const;
506  bool IsChanneled() const;
507  bool NeedsComboPoints() const;
508  bool IsBreakingStealth() const;
509  bool IsRangedWeaponSpell() const;
510  bool IsAutoRepeatRangedSpell() const;
511 
512  bool IsAffectedBySpellMods() const;
513  bool IsAffectedBySpellMod(SpellModifier const* mod) const;
514 
515  bool CanPierceImmuneAura(SpellInfo const* aura) const;
516  bool CanDispelAura(SpellInfo const* aura) const;
517 
518  bool IsSingleTarget() const;
519  bool IsAuraExclusiveBySpecificWith(SpellInfo const* spellInfo) const;
520  bool IsAuraExclusiveBySpecificPerCasterWith(SpellInfo const* spellInfo) const;
521 
522  SpellCastResult CheckShapeshift(uint32 form) const;
523  SpellCastResult CheckLocation(uint32 map_id, uint32 zone_id, uint32 area_id, Player const* player = NULL) const;
524  SpellCastResult CheckTarget(Unit const* caster, WorldObject const* target, bool implicit = true) const;
525  SpellCastResult CheckExplicitTarget(Unit const* caster, WorldObject const* target, Item const* itemTarget = NULL) const;
526  SpellCastResult CheckVehicle(Unit const* caster) const;
527  bool CheckTargetCreatureType(Unit const* target) const;
528 
529  SpellSchoolMask GetSchoolMask() const;
530  uint32 GetAllEffectsMechanicMask() const;
531  uint32 GetEffectMechanicMask(uint32 effIndex) const;
532  uint32 GetSpellMechanicMaskByEffectMask(uint32 effectMask) const;
533  Mechanics GetEffectMechanic(uint32 effIndex, uint32 difficulty) const;
534  //bool HasAnyEffectMechanic() const;
535  uint32 GetDispelMask() const;
536  static uint32 GetDispelMask(DispelType type);
537  uint32 GetExplicitTargetMask() const;
538 
539  AuraStateType GetAuraState(uint32 difficulty) const;
540  SpellSpecificType GetSpellSpecific() const;
541 
542  float GetMinRange(bool positive = false) const;
543  float GetMaxRange(bool positive = false, Unit* caster = NULL, Spell* spell = NULL) const;
544 
545  int32 GetDuration() const;
546  int32 GetMaxDuration() const;
547 
548  uint32 GetMaxTicks(uint32 difficulty) const;
549 
550  uint32 CalcCastTime(uint8 level = 0, Spell* spell = NULL) const;
551  uint32 GetRecoveryTime() const;
552 
553  struct CostData
554  {
557  };
558 
559  std::vector<CostData> CalcPowerCost(Unit const* caster, SpellSchoolMask schoolMask) const;
560 
561  bool IsRanked() const;
562  uint8 GetRank() const;
563  SpellInfo const* GetFirstRankSpell() const;
564  SpellInfo const* GetLastRankSpell() const;
565  SpellInfo const* GetNextRankSpell() const;
566  SpellInfo const* GetPrevRankSpell() const;
567  SpellInfo const* GetAuraRankForLevel(uint8 level) const;
568  bool IsRankOf(SpellInfo const* spellInfo) const;
569  bool IsDifferentRankOf(SpellInfo const* spellInfo) const;
570  bool IsHighRankOf(SpellInfo const* spellInfo) const;
571 
572  uint32 GetSpellXSpellVisualId(Difficulty difficulty) const;
573  uint32 GetSpellVisual(Difficulty difficulty, Player* forPlayer = nullptr) const;
574 
575  // loading helpers
576  void _InitializeExplicitTargetMask();
577  bool _IsPositiveEffect(uint32 effIndex, bool deep) const;
578  bool _IsPositiveSpell() const;
579  static bool _IsPositiveTarget(uint32 targetA, uint32 targetB);
580 
581  // unloading helpers
582  void _UnloadImplicitTargetConditionLists();
583  void _UnloadSpellEffects();
584 
585  SpellEffectInfoVector GetEffectsForDifficulty(uint32 difficulty) const;
586  SpellEffectInfo const* GetEffect(uint32 difficulty, uint32 index) const;
587  SpellEffectInfo const* GetEffect(uint32 index) const { return GetEffect(DIFFICULTY_NONE, index); }
588  SpellEffectInfo const* GetEffect(WorldObject const* obj, uint32 index) const { return GetEffect(obj->GetMap()->GetDifficultyID(), index); }
589 
593 };
594 
595 #endif // _SPELLINFO_H
SpellAttr2
Definition: SharedDefines.h:426
AuraType
Definition: SpellAuraDefines.h:58
uint32 SpellCategoriesId
Definition: SpellInfo.h:408
Definition: DB2Structure.h:1306
Definition: SpellInfo.h:164
Definition: SpellAuraEffects.h:30
Definition: SpellInfo.h:61
int32 MiscValue
Definition: SpellInfo.h:253
Definition: SpellInfo.h:177
Targets
Definition: SharedDefines.h:1873
Definition: DBCEnums.h:404
Definition: SpellInfo.h:158
Definition: DBCStructure.h:1176
Difficulty
Definition: DBCEnums.h:402
uint32 Id
Definition: SpellInfo.h:329
int32 EquippedItemClass
Definition: SpellInfo.h:385
uint32 AttributesEx11
Definition: SpellInfo.h:344
SpellAttr8
Definition: SharedDefines.h:642
Definition: SpellInfo.h:64
Definition: SpellInfo.h:49
Definition: SpellInfo.h:194
Definition: DB2Structure.h:1273
Definition: SpellInfo.h:77
Definition: DBCStructure.h:1115
Definition: SpellInfo.h:161
SpellEffectInfo const * GetEffect(WorldObject const *obj, uint32 index) const
Definition: SpellInfo.h:588
Definition: SpellInfo.h:110
SpellAttr5
Definition: SharedDefines.h:534
uint32 AttributesEx12
Definition: SpellInfo.h:345
Definition: SpellInfo.h:173
Definition: SpellInfo.h:307
Definition: SpellInfo.h:114
Definition: SpellInfo.h:69
Definition: SpellInfo.h:99
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
Definition: SpellInfo.cpp:30
Definition: SpellInfo.h:126
uint32 CastTimeMaxLevel
Definition: SpellInfo.h:424
SpellAttr0
Definition: SharedDefines.h:354
SpellAttr1
Definition: SharedDefines.h:390
int32 Class
Definition: SpellInfo.h:425
Map * GetMap() const
Definition: Object.h:543
Definition: SpellInfo.h:68
Definition: SpellInfo.h:71
Definition: SpellInfo.h:48
Definition: SharedDefines.h:1262
Definition: ConditionMgr.h:194
uint32 TargetAuraState
Definition: SpellInfo.h:355
Definition: Player.h:167
Definition: DB2Structure.h:1264
Definition: SpellInfo.h:166
SpellEffectInfo()
Definition: SpellInfo.h:275
uint32 DmgClass
Definition: SpellInfo.h:398
Definition: SpellInfo.h:115
Definition: DB2Structure.h:1159
uint32 MaxLevel
Definition: SpellInfo.h:373
SpellSchoolMask
Definition: SharedDefines.h:285
uint32 SpellLevel
Definition: SpellInfo.h:375
float RealPointsPerLevel
Definition: SpellInfo.h:247
Definition: SpellInfo.h:326
Definition: SpellInfo.h:171
uint32 AttributesEx
Definition: SpellInfo.h:334
bool HasAttribute(SpellAttr9 attribute) const
Definition: SpellInfo.h:471
float Variance
Definition: SpellInfo.h:271
uint32 SpellAuraOptionsId
Definition: SpellInfo.h:405
Definition: SpellInfo.h:96
uint32 ProcCharges
Definition: SpellInfo.h:372
SpellCategoryEntry const * ChargeCategoryEntry
Definition: SpellInfo.h:402
Definition: SpellInfo.h:56
Definition: SpellInfo.h:192
Definition: SpellInfo.h:122
Difficulty GetDifficultyID() const
Definition: Map.h:390
Definition: SpellInfo.h:112
int32 EquippedItemSubClassMask
Definition: SpellInfo.h:386
Definition: DB2Structure.h:1186
Definition: SpellInfo.h:57
uint32 AttributesEx8
Definition: SpellInfo.h:341
Definition: DBCStructure.h:1148
float ChainAmplitude
Definition: SpellInfo.h:251
SpellTargetDirectionTypes DirectionType
Definition: SpellInfo.h:233
uint32 ApplyAuraName
Definition: SpellInfo.h:244
SpellEffectInfoMap _effects
Definition: SpellInfo.h:590
AuraStateType
Definition: SharedDefines.h:1754
Definition: SpellInfo.h:53
uint32 AttributesEx10
Definition: SpellInfo.h:343
flag128 SpellFamilyFlags
Definition: SpellInfo.h:397
uint32 ExcludeCasterAuraSpell
Definition: SpellInfo.h:360
uint32 SchoolMask
Definition: SpellInfo.h:401
Targets _target
Definition: SpellInfo.h:210
uint32 ActiveIconID
Definition: SpellInfo.h:391
uint32 Dispel
Definition: SpellInfo.h:331
uint32 ExcludeTargetAuraSpell
Definition: SpellInfo.h:361
Definition: SpellInfo.h:94
bool HasAttribute(SpellAttr5 attribute) const
Definition: SpellInfo.h:467
bool HasAttribute(SpellAttr1 attribute) const
Definition: SpellInfo.h:463
uint32 RequiresSpellFocus
Definition: SpellInfo.h:352
SpellEffectName
Definition: SharedDefines.h:1009
uint32 StartRecoveryCategory
Definition: SpellInfo.h:365
SpellTargetObjectTypes
Definition: SpellInfo.h:102
float Coefficient
Definition: SpellInfo.h:270
float ResourceCoefficient
Definition: SpellInfo.h:272
Definition: DB2Structure.h:1170
Definition: SpellInfo.h:109
SpellAttr11
Definition: SharedDefines.h:750
arena_t NULL
Definition: jemalloc_internal.h:624
uint32 SpellReagentsId
Definition: SpellInfo.h:414
uint32 AuraInterruptFlags
Definition: SpellInfo.h:368
Definition: DBCStructure.h:1126
float PositionFacing
Definition: SpellInfo.h:256
std::unordered_map< uint32, SpellEffectInfoVector > SpellEffectInfoMap
Definition: SpellInfo.h:316
uint32 Mechanic
Definition: SpellInfo.h:332
Definition: DBCStructure.h:995
Definition: SpellInfo.h:188
Definition: SpellInfo.h:179
Definition: SpellInfo.h:137
Definition: SpellInfo.h:67
uint32 Attributes
Definition: SpellInfo.h:333
float NerfFactor
Definition: SpellInfo.h:426
uint32 MaxTargetLevel
Definition: SpellInfo.h:394
bool HasAttribute(SpellAttr11 attribute) const
Definition: SpellInfo.h:473
SpellTargetObjectTypes UsedTargetObjectType
Definition: SpellInfo.h:310
Definition: SpellInfo.h:63
float PointsPerResource
Definition: SpellInfo.h:249
Definition: Object.h:423
Definition: SpellInfo.h:163
DispelType
Definition: SharedDefines.h:1836
Definition: DB2Structure.h:1287
Definition: SpellInfo.h:107
SpellEffectImplicitTargetTypes ImplicitTargetType
Definition: SpellInfo.h:309
int32 DieSides
Definition: SpellInfo.h:246
Definition: SpellInfo.h:227
Definition: SpellInfo.h:58
Definition: SpellInfo.h:79
Definition: SpellInfo.h:123
Definition: DBCStructure.h:1137
Definition: SpellInfo.h:553
Definition: SpellInfo.h:176
SpellAttr10
Definition: SharedDefines.h:714
int32 EquippedItemInventoryTypeMask
Definition: SpellInfo.h:387
bool HasAttribute(SpellAttr6 attribute) const
Definition: SpellInfo.h:468
Definition: SpellInfo.h:138
TotemCategory
Definition: SharedDefines.h:4156
Definition: System.cpp:71
SpellAttr13
Definition: SharedDefines.h:822
Definition: SpellInfo.h:73
SpellTargetReferenceTypes ReferenceType
Definition: SpellInfo.h:230
uint32 EffectIndex
Definition: SpellInfo.h:242
uint32 AttributesEx3
Definition: SpellInfo.h:336
Definition: SpellInfo.h:104
Definition: SpellInfo.h:108
SpellAttr9
Definition: SharedDefines.h:678
SpellRadiusEntry const * MaxRadiusEntry
Definition: SpellInfo.h:260
uint64 StancesNot
Definition: SpellInfo.h:349
bool HasAttribute(SpellAttr2 attribute) const
Definition: SpellInfo.h:464
Definition: SpellInfo.h:268
SpellAttr7
Definition: SharedDefines.h:606
float Amplitude
Definition: SpellInfo.h:250
Definition: SpellInfo.h:120
Definition: SpellInfo.h:121
SpellCastTimesEntry const * CastTimeEntry
Definition: SpellInfo.h:362
Definition: SpellInfo.h:147
Definition: SpellInfo.h:133
std::unordered_map< uint32, SpellVisualVector > SpellVisualMap
Definition: SpellInfo.h:322
Definition: SpellInfo.h:148
Definition: SpellInfo.h:157
SpellImplicitTargetInfo TargetA
Definition: SpellInfo.h:257
uint32 SpellMiscId
Definition: SpellInfo.h:418
Definition: Totem.h:38
uint32 NerfMaxLevel
Definition: SpellInfo.h:427
SpellTargetSelectionCategories SelectionCategory
Definition: SpellInfo.h:231
uint32 ProcFlags
Definition: SpellInfo.h:370
Definition: SpellInfo.h:187
Definition: SharedDefines.h:2016
uint32 AttributesEx7
Definition: SpellInfo.h:340
Definition: SpellInfo.h:124
Definition: SpellInfo.h:178
uint32 ScalesFromItemLevel
Definition: SpellInfo.h:429
uint32 SpellAuraRestrictionsId
Definition: SpellInfo.h:406
Definition: SpellInfo.h:186
bool HasAttribute(SpellAttr3 attribute) const
Definition: SpellInfo.h:465
Mechanics Mechanic
Definition: SpellInfo.h:255
uint32 TriggerSpell
Definition: SpellInfo.h:263
uint32 AttributesEx9
Definition: SpellInfo.h:342
Definition: SpellInfo.h:196
Powers
Definition: SharedDefines.h:246
uint32 ChainTargets
Definition: SpellInfo.h:261
Definition: SpellInfo.h:167
Powers Power
Definition: SpellInfo.h:555
Definition: SpellInfo.h:184
std::vector< SpellEffectInfo const * > SpellEffectInfoVector
Definition: SpellInfo.h:315
SpellRadiusEntry const * RadiusEntry
Definition: SpellInfo.h:259
bool HasAttribute(SpellAttr7 attribute) const
Definition: SpellInfo.h:469
Definition: SpellInfo.h:190
Definition: DBCStructure.h:1083
SpellRangeEntry const * RangeEntry
Definition: SpellInfo.h:379
uint32 RecoveryTime
Definition: SpellInfo.h:363
uint32 SpellScalingId
Definition: SpellInfo.h:404
uint32 AttributesEx2
Definition: SpellInfo.h:335
uint32 ExcludeCasterAuraState
Definition: SpellInfo.h:356
uint32 SpellCastingRequirementsId
Definition: SpellInfo.h:407
char * Rank
Definition: SpellInfo.h:393
uint32 SpellFamilyName
Definition: SpellInfo.h:396
Definition: SpellInfo.h:162
int32 RequiredAreasID
Definition: SpellInfo.h:400
Definition: SpellInfo.h:50
Definition: SpellInfo.h:70
uint32 SpellDifficultyId
Definition: SpellInfo.h:403
uint32 ProcChance
Definition: SpellInfo.h:371
Definition: SpellInfo.h:135
Definition: SpellInfo.h:202
std::vector< Condition * > * ImplicitTargetConditions
Definition: SpellInfo.h:266
uint32 MaxAffectedTargets
Definition: SpellInfo.h:395
Definition: SpellInfo.h:156
Definition: SpellInfo.h:95
uint32 SpellClassOptionsId
Definition: SpellInfo.h:409
bool HasAttribute(SpellAttr0 attribute) const
Definition: SpellInfo.h:462
Definition: SpellInfo.h:51
Definition: SpellInfo.h:55
bool HasAttribute(SpellAttr10 attribute) const
Definition: SpellInfo.h:472
uint32 ExplicitTargetMask
Definition: SpellInfo.h:432
Definition: Item.h:259
Definition: Util.h:362
Definition: DBCStructure.h:1097
SpellTargetSelectionCategories
Definition: SpellInfo.h:82
uint64 Stances
Definition: SpellInfo.h:348
Definition: SpellInfo.h:78
Definition: SpellInfo.h:134
int32 CastTimeMin
Definition: SpellInfo.h:422
SpellDurationEntry const * DurationEntry
Definition: SpellInfo.h:376
Definition: SpellInfo.h:238
uint32 Targets
Definition: SpellInfo.h:350
Definition: DB2Structure.h:1211
int32_t int32
Definition: Define.h:146
Definition: SpellInfo.h:132
char * SpellName
Definition: SpellInfo.h:392
uint32 SpellShapeshiftId
Definition: SpellInfo.h:415
Definition: SpellInfo.h:139
uint32 SpellEquippedItemsId
Definition: SpellInfo.h:411
uint32_t uint32
Definition: Define.h:150
Definition: SpellInfo.h:52
Definition: SpellInfo.h:125
uint64_t uint64
Definition: Define.h:149
Definition: SpellInfo.h:47
SpellAttr4
Definition: SharedDefines.h:498
SpellAttr3
Definition: SharedDefines.h:462
Definition: SpellInfo.h:159
Definition: SpellInfo.h:97
bool HasAttribute(SpellAttr4 attribute) const
Definition: SpellInfo.h:466
uint32 AttributesEx13
Definition: SpellInfo.h:346
SpellEffectImplicitTargetTypes
Definition: SpellInfo.h:145
Definition: SpellInfo.h:88
uint32 ItemType
Definition: SpellInfo.h:262
int32 Amount
Definition: SpellInfo.h:556
SpellTargetObjectTypes ObjectType
Definition: SpellInfo.h:229
uint32 SpellTotemsId
Definition: SpellInfo.h:417
Definition: SpellInfo.h:62
SpellAttr12
Definition: SharedDefines.h:786
Definition: SpellInfo.h:54
Definition: SpellInfo.h:87
Definition: SpellInfo.h:174
Definition: SpellInfo.h:165
uint32 AttributesCu
Definition: SpellInfo.h:347
uint32 PreventionType
Definition: SpellInfo.h:399
float BonusCoefficient
Definition: SpellInfo.h:252
Definition: SpellInfo.h:85
bool HasAttribute(SpellCustomAttributes customAttribute) const
Definition: SpellInfo.h:476
Definition: DBCStructure.h:1040
std::vector< SpellPowerEntry const * > PowerCosts
Definition: SpellInfo.h:377
float Speed
Definition: SpellInfo.h:380
Definition: SpellInfo.h:127
uint32 SpellInterruptsId
Definition: SpellInfo.h:412
uint32 CasterAuraState
Definition: SpellInfo.h:354
bool _hasPowerDifficultyData
Definition: SpellInfo.h:592
flag128 SpellClassMask
Definition: SpellInfo.h:264
SpellSpecificType
Definition: SpellInfo.h:153
Definition: SpellInfo.h:195
Definition: SpellInfo.h:207
Definition: SpellInfo.h:140
uint32 AttributesEx5
Definition: SpellInfo.h:338
int32 CastTimeMax
Definition: SpellInfo.h:423
std::vector< SpellEffectEntry const * > SpellEffectEntryVector
Definition: SpellInfo.h:318
std::unordered_map< uint32, SpellEffectEntryVector > SpellEffectEntryMap
Definition: SpellInfo.h:319
Mechanics
Definition: SharedDefines.h:1788
Definition: SpellInfo.h:89
bool HasAttribute(SpellAttr8 attribute) const
Definition: SpellInfo.h:470
Definition: SpellInfo.h:160
SpellTargetDirectionTypes
Definition: SpellInfo.h:130
Definition: DBCStructure.h:1054
Definition: SpellInfo.h:86
uint32 ChannelInterruptFlags
Definition: SpellInfo.h:369
SpellImplicitTargetInfo()
Definition: SpellInfo.h:212
Definition: SpellInfo.h:193
uint32 SpellLevelsId
Definition: SpellInfo.h:413
Definition: SpellInfo.h:111
SpellInfo const * _spellInfo
Definition: SpellInfo.h:240
Definition: SpellInfo.h:106
SpellEffectInfo const * GetEffect(uint32 index) const
Definition: SpellInfo.h:587
uint32 ExcludeTargetAuraState
Definition: SpellInfo.h:357
#define TC_GAME_API
Definition: Define.h:134
Definition: SpellInfo.h:60
Definition: SpellInfo.h:191
Definition: DBCStructure.h:1199
Definition: SpellInfo.h:59
uint32 BaseLevel
Definition: SpellInfo.h:374
Definition: DBCStructure.h:1185
SpellImplicitTargetInfo TargetB
Definition: SpellInfo.h:258
uint32 SpellIconID
Definition: SpellInfo.h:390
uint32 CasterAuraSpell
Definition: SpellInfo.h:358
uint32 MaxScalingLevel
Definition: SpellInfo.h:428
int32 BasePoints
Definition: SpellInfo.h:248
uint8_t uint8
Definition: Define.h:152
Definition: SpellInfo.h:168
Definition: SpellMgr.h:359
Definition: SpellInfo.h:98
uint32 AttributesEx6
Definition: SpellInfo.h:339
uint32 FacingCasterFlags
Definition: SpellInfo.h:353
float BonusCoefficientFromAP
Definition: SpellInfo.h:265
Definition: SpellInfo.h:149
SpellChainNode const * ChainEntry
Definition: SpellInfo.h:433
SpellCastResult
Definition: SharedDefines.h:1265
std::vector< SpellXSpellVisualEntry const * > SpellVisualVector
Definition: SpellInfo.h:321
const FieldDescriptor value
Definition: descriptor.h:1522
SpellTargetCheckTypes
Definition: SpellInfo.h:118
Definition: SpellInfo.h:75
#define MAX_SPELL_REAGENTS
Definition: DB2Structure.h:1285
Definition: SpellInfo.h:72
uint32 StackAmount
Definition: SpellInfo.h:381
Definition: SpellInfo.h:84
Definition: SpellInfo.h:66
Definition: DB2Structure.h:1178
uint32 TargetCreatureType
Definition: SpellInfo.h:351
uint32 Effect
Definition: SpellInfo.h:243
Definition: SpellInfo.h:197
uint32 CategoryRecoveryTime
Definition: SpellInfo.h:364
uint32 RuneCostID
Definition: SpellInfo.h:378
SpellAttr6
Definition: SharedDefines.h:570
uint32 StartRecoveryTime
Definition: SpellInfo.h:366
bool HasAttribute(SpellAttr13 attribute) const
Definition: SpellInfo.h:475
Definition: Unit.h:1305
Definition: SpellInfo.h:185
Definition: SpellInfo.h:172
Definition: SpellInfo.h:65
Definition: SpellInfo.h:136
bool HasAttribute(SpellAttr12 attribute) const
Definition: SpellInfo.h:474
Definition: SpellInfo.h:200
Definition: SpellInfo.h:142
SpellCastTargetFlags
Definition: SpellInfo.h:45
Definition: SpellInfo.h:141
Definition: SpellInfo.h:199
uint32 InterruptFlags
Definition: SpellInfo.h:367
Definition: SpellInfo.h:170
SpellCustomAttributes
Definition: SpellInfo.h:182
uint32 TargetAuraSpell
Definition: SpellInfo.h:359
Definition: SpellInfo.h:175
SpellCategoryEntry const * CategoryEntry
Definition: SpellInfo.h:330
SpellTargetCheckTypes SelectionCheckType
Definition: SpellInfo.h:232
uint32 AttributesEx4
Definition: SpellInfo.h:337
SpellTargetReferenceTypes
Definition: SpellInfo.h:92
uint32 SpellCooldownsId
Definition: SpellInfo.h:410
Definition: SharedDefines.h:1790
Definition: SpellInfo.h:420
SpellVisualMap _visuals
Definition: SpellInfo.h:591
Definition: SpellInfo.h:198
uint32 SpellTargetRestrictionsId
Definition: SpellInfo.h:416
std::vector< AuraEffect * > AuraEffectVector
Definition: SpellInfo.h:324
Definition: SpellMgr.h:507
Definition: SpellInfo.h:155
int32 MiscValueB
Definition: SpellInfo.h:254
Definition: SpellInfo.h:105
uint32 ApplyAuraPeriod
Definition: SpellInfo.h:245
Definition: DB2Structure.h:1146
Definition: SpellInfo.h:169
Definition: Spell.h:294
Definition: SpellInfo.h:189