TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
SpellEffectInfo Class Reference

#include <SpellInfo.h>

Classes

struct  ScalingInfo
 
struct  StaticData
 

Public Member Functions

 SpellEffectInfo ()
 
 SpellEffectInfo (SpellEntry const *spellEntry, SpellInfo const *spellInfo, uint8 effIndex, SpellEffectEntry const *effect)
 
bool IsEffect () const
 
bool IsEffect (SpellEffectName effectName) const
 
bool IsAura () const
 
bool IsAura (AuraType aura) const
 
bool IsTargetingArea () const
 
bool IsAreaAuraEffect () const
 
bool IsFarUnitTargetEffect () const
 
bool IsFarDestTargetEffect () const
 
bool IsUnitOwnedAuraEffect () const
 
int32 CalcValue (Unit const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, int32 itemLevel=-1) const
 
int32 CalcBaseValue (int32 value) const
 
float CalcValueMultiplier (Unit *caster, Spell *spell=NULL) const
 
float CalcDamageMultiplier (Unit *caster, Spell *spell=NULL) const
 
bool HasRadius () const
 
bool HasMaxRadius () const
 
float CalcRadius (Unit *caster=NULL, Spell *=NULL) const
 
uint32 GetProvidedTargetMask () const
 
uint32 GetMissingTargetMask (bool srcSet=false, bool destSet=false, uint32 mask=0) const
 
SpellEffectImplicitTargetTypes GetImplicitTargetType () const
 
SpellTargetObjectTypes GetUsedTargetObjectType () const
 

Public Attributes

uint32 EffectIndex
 
uint32 Effect
 
uint32 ApplyAuraName
 
uint32 ApplyAuraPeriod
 
int32 DieSides
 
float RealPointsPerLevel
 
int32 BasePoints
 
float PointsPerResource
 
float Amplitude
 
float ChainAmplitude
 
float BonusCoefficient
 
int32 MiscValue
 
int32 MiscValueB
 
Mechanics Mechanic
 
float PositionFacing
 
SpellImplicitTargetInfo TargetA
 
SpellImplicitTargetInfo TargetB
 
SpellRadiusEntry constRadiusEntry
 
SpellRadiusEntry constMaxRadiusEntry
 
uint32 ChainTargets
 
uint32 ItemType
 
uint32 TriggerSpell
 
flag128 SpellClassMask
 
float BonusCoefficientFromAP
 
std::vector< Condition * > * ImplicitTargetConditions
 
struct SpellEffectInfo::ScalingInfo Scaling
 

Private Attributes

SpellInfo const_spellInfo
 

Static Private Attributes

static StaticData _data [TOTAL_SPELL_EFFECTS]
 

Constructor & Destructor Documentation

SpellEffectInfo::SpellEffectInfo ( )
inline
int32 MiscValue
Definition: SpellInfo.h:253
float RealPointsPerLevel
Definition: SpellInfo.h:247
float ChainAmplitude
Definition: SpellInfo.h:251
uint32 ApplyAuraName
Definition: SpellInfo.h:244
arena_t NULL
Definition: jemalloc_internal.h:624
float PositionFacing
Definition: SpellInfo.h:256
float PointsPerResource
Definition: SpellInfo.h:249
int32 DieSides
Definition: SpellInfo.h:246
uint32 EffectIndex
Definition: SpellInfo.h:242
float Amplitude
Definition: SpellInfo.h:250
Mechanics Mechanic
Definition: SpellInfo.h:255
uint32 TriggerSpell
Definition: SpellInfo.h:263
uint32 ChainTargets
Definition: SpellInfo.h:261
SpellRadiusEntry const * RadiusEntry
Definition: SpellInfo.h:259
std::vector< Condition * > * ImplicitTargetConditions
Definition: SpellInfo.h:266
uint32 ItemType
Definition: SpellInfo.h:262
float BonusCoefficient
Definition: SpellInfo.h:252
SpellInfo const * _spellInfo
Definition: SpellInfo.h:240
int32 BasePoints
Definition: SpellInfo.h:248
float BonusCoefficientFromAP
Definition: SpellInfo.h:265
uint32 Effect
Definition: SpellInfo.h:243
Definition: SharedDefines.h:1790
int32 MiscValueB
Definition: SpellInfo.h:254
uint32 ApplyAuraPeriod
Definition: SpellInfo.h:245
SpellEffectInfo::SpellEffectInfo ( SpellEntry const spellEntry,
SpellInfo const spellInfo,
uint8  effIndex,
SpellEffectEntry const effect 
)
363 {
364  _spellInfo = spellInfo;
365  EffectIndex = _effect ? _effect->EffectIndex : effIndex;
366  Effect = _effect ? _effect->Effect : 0;
367  ApplyAuraName = _effect ? _effect->EffectAura : 0;
368  ApplyAuraPeriod = _effect ? _effect->EffectAuraPeriod : 0;
369  DieSides = _effect ? _effect->EffectDieSides : 0;
370  RealPointsPerLevel = _effect ? _effect->EffectRealPointsPerLevel : 0.0f;
371  BasePoints = _effect ? _effect->EffectBasePoints : 0;
372  PointsPerResource = _effect ? _effect->EffectPointsPerResource : 0.0f;
373  Amplitude = _effect ? _effect->EffectAmplitude : 0.0f;
374  ChainAmplitude = _effect ? _effect->EffectChainAmplitude : 0.0f;
375  BonusCoefficient = _effect ? _effect->EffectBonusCoefficient : 0.0f;
376  MiscValue = _effect ? _effect->EffectMiscValue : 0;
377  MiscValueB = _effect ? _effect->EffectMiscValueB : 0;
378  Mechanic = Mechanics(_effect ? _effect->EffectMechanic : 0);
379  PositionFacing = _effect ? _effect->EffectPosFacing : 0.0f;
380  TargetA = SpellImplicitTargetInfo(_effect ? _effect->ImplicitTarget[0] : 0);
381  TargetB = SpellImplicitTargetInfo(_effect ? _effect->ImplicitTarget[1] : 0);
382  RadiusEntry = _effect && _effect->EffectRadiusIndex ? sSpellRadiusStore.LookupEntry(_effect->EffectRadiusIndex) : NULL;
383  MaxRadiusEntry = _effect && _effect->EffectRadiusMaxIndex ? sSpellRadiusStore.LookupEntry(_effect->EffectRadiusMaxIndex) : NULL;
384  ChainTargets = _effect ? _effect->EffectChainTargets : 0;
385  ItemType = _effect ? _effect->EffectItemType : 0;
386  TriggerSpell = _effect ? _effect->EffectTriggerSpell : 0;
387  SpellClassMask = _effect ? _effect->EffectSpellClassMask : flag128();
388  BonusCoefficientFromAP = _effect ? _effect->BonusCoefficientFromAP : 0.0f;
390 
391  uint32 _effectScalingId = _effect ? sSpellEffectScallingByEffectId.find(_effect->ID) != sSpellEffectScallingByEffectId.end() ? sSpellEffectScallingByEffectId[_effect->ID] : 0 : 0;
392  SpellEffectScalingEntry const* _effectScalingEntry = sSpellEffectScalingStore.LookupEntry(_effectScalingId);
393 
394  Scaling.Coefficient = _effectScalingEntry ? _effectScalingEntry->Coefficient : 0.0f;
395  Scaling.Variance = _effectScalingEntry ? _effectScalingEntry->Variance : 0.0f;
396  Scaling.ResourceCoefficient = _effectScalingEntry ? _effectScalingEntry->ResourceCoefficient : 0.0f;
397 }
int32 MiscValue
Definition: SpellInfo.h:253
DB2Storage< SpellRadiusEntry > sSpellRadiusStore("SpellRadius.db2", SpellRadiusFormat, HOTFIX_SEL_SPELL_RADIUS)
Definition: DBCStructure.h:1030
float RealPointsPerLevel
Definition: SpellInfo.h:247
float Variance
Definition: SpellInfo.h:271
float ChainAmplitude
Definition: SpellInfo.h:251
uint32 ApplyAuraName
Definition: SpellInfo.h:244
float Coefficient
Definition: SpellInfo.h:270
float ResourceCoefficient
Definition: SpellInfo.h:272
arena_t NULL
Definition: jemalloc_internal.h:624
float PositionFacing
Definition: SpellInfo.h:256
SpellEffectScallingByEffectId sSpellEffectScallingByEffectId
Definition: DBCStores.cpp:136
float PointsPerResource
Definition: SpellInfo.h:249
int32 DieSides
Definition: SpellInfo.h:246
uint32 EffectIndex
Definition: SpellInfo.h:242
SpellRadiusEntry const * MaxRadiusEntry
Definition: SpellInfo.h:260
float Amplitude
Definition: SpellInfo.h:250
float Variance
Definition: DBCStructure.h:1034
SpellImplicitTargetInfo TargetA
Definition: SpellInfo.h:257
Mechanics Mechanic
Definition: SpellInfo.h:255
uint32 TriggerSpell
Definition: SpellInfo.h:263
uint32 ChainTargets
Definition: SpellInfo.h:261
SpellRadiusEntry const * RadiusEntry
Definition: SpellInfo.h:259
std::vector< Condition * > * ImplicitTargetConditions
Definition: SpellInfo.h:266
Definition: Util.h:362
uint32_t uint32
Definition: Define.h:150
struct SpellEffectInfo::ScalingInfo Scaling
uint32 ItemType
Definition: SpellInfo.h:262
float BonusCoefficient
Definition: SpellInfo.h:252
flag128 SpellClassMask
Definition: SpellInfo.h:264
Definition: SpellInfo.h:207
Mechanics
Definition: SharedDefines.h:1788
DBCStorage< SpellEffectScalingEntry > sSpellEffectScalingStore(SpellEffectScalingfmt)
SpellInfo const * _spellInfo
Definition: SpellInfo.h:240
SpellImplicitTargetInfo TargetB
Definition: SpellInfo.h:258
int32 BasePoints
Definition: SpellInfo.h:248
float BonusCoefficientFromAP
Definition: SpellInfo.h:265
float Coefficient
Definition: DBCStructure.h:1033
float ResourceCoefficient
Definition: DBCStructure.h:1035
uint32 Effect
Definition: SpellInfo.h:243
int32 MiscValueB
Definition: SpellInfo.h:254
uint32 ApplyAuraPeriod
Definition: SpellInfo.h:245

Member Function Documentation

int32 SpellEffectInfo::CalcBaseValue ( int32  value) const
622 {
623  if (DieSides == 0)
624  return value;
625  else
626  return value - 1;
627 }
int32 DieSides
Definition: SpellInfo.h:246
const FieldDescriptor value
Definition: descriptor.h:1522
float SpellEffectInfo::CalcDamageMultiplier ( Unit caster,
Spell spell = NULL 
) const
638 {
639  float multiplier = ChainAmplitude;
640  if (Player* modOwner = (caster ? caster->GetSpellModOwner() : NULL))
641  modOwner->ApplySpellMod(_spellInfo->Id, SPELLMOD_DAMAGE_MULTIPLIER, multiplier, spell);
642  return multiplier;
643 }
uint32 Id
Definition: SpellInfo.h:329
float ChainAmplitude
Definition: SpellInfo.h:251
arena_t NULL
Definition: jemalloc_internal.h:624
Definition: Unit.h:106
Player * GetSpellModOwner() const
Definition: Unit.cpp:12691
SpellInfo const * _spellInfo
Definition: SpellInfo.h:240

+ Here is the call graph for this function:

float SpellEffectInfo::CalcRadius ( Unit caster = NULL,
Spell spell = NULL 
) const
656 {
657  const SpellRadiusEntry* entry = RadiusEntry;
658  if (!HasRadius() && HasMaxRadius())
659  entry = MaxRadiusEntry;
660 
661  if (!entry)
662  return 0.0f;
663 
664  float radius = entry->RadiusMin;
665 
666  // Client uses max if min is 0
667  if (radius == 0.0f)
668  radius = entry->RadiusMax;
669 
670  if (caster)
671  {
672  radius += entry->RadiusPerLevel * caster->getLevel();
673  radius = std::min(radius, entry->RadiusMax);
674  if (Player* modOwner = caster->GetSpellModOwner())
675  modOwner->ApplySpellMod(_spellInfo->Id, SPELLMOD_RADIUS, radius, spell);
676  }
677 
678  return radius;
679 }
uint32 Id
Definition: SpellInfo.h:329
Definition: Unit.h:92
float RadiusMax
Definition: DB2Structure.h:1270
Definition: DB2Structure.h:1264
float RadiusMin
Definition: DB2Structure.h:1269
float RadiusPerLevel
Definition: DB2Structure.h:1268
SpellRadiusEntry const * MaxRadiusEntry
Definition: SpellInfo.h:260
uint8 getLevel() const
Definition: Unit.h:1408
bool HasRadius() const
Definition: SpellInfo.cpp:645
T min(const T &x, const T &y)
Definition: g3dmath.h:305
SpellRadiusEntry const * RadiusEntry
Definition: SpellInfo.h:259
bool HasMaxRadius() const
Definition: SpellInfo.cpp:650
Player * GetSpellModOwner() const
Definition: Unit.cpp:12691
SpellInfo const * _spellInfo
Definition: SpellInfo.h:240

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int32 SpellEffectInfo::CalcValue ( Unit const caster = nullptr,
int32 const basePoints = nullptr,
Unit const target = nullptr,
float *  variance = nullptr,
int32  itemLevel = -1 
) const
456 {
457  float basePointsPerLevel = RealPointsPerLevel;
458  int32 basePoints = bp ? *bp : BasePoints;
459  float comboDamage = PointsPerResource;
460 
461  // base amount modification based on spell lvl vs caster lvl
462  if (Scaling.Coefficient != 0.0f)
463  {
464  uint32 level = _spellInfo->SpellLevel;
466  level = target->getLevel();
467  else if (caster)
468  level = caster->getLevel();
469 
471  level = _spellInfo->BaseLevel;
472 
475 
476  float value = 0.0f;
477  if (level > 0)
478  {
479  if (!_spellInfo->Scaling.Class)
480  return 0;
481 
483  {
485  {
486  if (GtSpellScalingEntry const* gtScaling = sGtSpellScalingStore.EvaluateTable(level - 1, (_spellInfo->Scaling.Class > 0 ? _spellInfo->Scaling.Class : ((MAX_CLASSES - 1 /*last class*/) - _spellInfo->Scaling.Class)) - 1))
487  value = gtScaling->value;
488  }
489  else
490  value = GetRandomPropertyPoints(itemLevel != -1 ? uint32(itemLevel) : 1u, ITEM_QUALITY_RARE, INVTYPE_CHEST, 0);
491  }
492  else
494 
495  if (level < _spellInfo->Scaling.CastTimeMaxLevel && _spellInfo->Scaling.CastTimeMax)
497 
498  if (level < _spellInfo->Scaling.NerfMaxLevel)
499  value *= ((((1.0f - _spellInfo->Scaling.NerfFactor) * (level - 1)) / (_spellInfo->Scaling.NerfMaxLevel - 1)) + _spellInfo->Scaling.NerfFactor);
500  }
501 
502  value *= Scaling.Coefficient;
503  if (value != 0.0f && value < 1.0f)
504  value = 1.0f;
505 
506  if (Scaling.Variance)
507  {
508  float delta = fabs(Scaling.Variance * 0.5f);
509  float valueVariance = frand(-delta, delta);
510  value += value * valueVariance;
511 
512  if (variance)
513  *variance = valueVariance;
514  }
515 
516  basePoints = int32(value);
517 
519  comboDamage = Scaling.ResourceCoefficient * value;
520  }
521  else
522  {
523  if (caster)
524  {
525  int32 level = int32(caster->getLevel());
526  if (level > int32(_spellInfo->MaxLevel) && _spellInfo->MaxLevel > 0)
527  level = int32(_spellInfo->MaxLevel);
528  else if (level < int32(_spellInfo->BaseLevel))
529  level = int32(_spellInfo->BaseLevel);
530  level -= int32(_spellInfo->SpellLevel);
531  basePoints += int32(level * basePointsPerLevel);
532  }
533 
534  // roll in a range <1;EffectDieSides> as of patch 3.3.3
535  int32 randomPoints = int32(DieSides);
536  switch (randomPoints)
537  {
538  case 0: break;
539  case 1: basePoints += 1; break; // range 1..1
540  default:
541  {
542  // range can have positive (1..rand) and negative (rand..1) values, so order its for irand
543  int32 randvalue = (randomPoints >= 1)
544  ? irand(1, randomPoints)
545  : irand(randomPoints, 1);
546 
547  basePoints += randvalue;
548  break;
549  }
550  }
551  }
552 
553  float value = float(basePoints);
554 
555  // random damage
556  if (caster)
557  {
558  // bonus amount from combo points
559  if (caster->m_movedPlayer && comboDamage)
560  if (uint32 comboPoints = caster->m_movedPlayer->GetComboPoints())
561  value += comboDamage * comboPoints;
562 
563  value = caster->ApplyEffectModifiers(_spellInfo, EffectIndex, value);
564 
565  // amount multiplication based on caster's level
566  if (!caster->IsControlledByPlayer() &&
567  _spellInfo->SpellLevel && _spellInfo->SpellLevel != caster->getLevel() &&
569  {
570  bool canEffectScale = false;
571  switch (Effect)
572  {
574  case SPELL_EFFECT_DUMMY:
577  case SPELL_EFFECT_HEAL:
585  canEffectScale = true;
586  break;
587  default:
588  break;
589  }
590 
591  switch (ApplyAuraName)
592  {
594  case SPELL_AURA_DUMMY:
602  canEffectScale = true;
603  break;
604  default:
605  break;
606  }
607 
608  if (canEffectScale)
609  {
610  GtNPCManaCostScalerEntry const* spellScaler = sGtNPCManaCostScalerStore.EvaluateTable(_spellInfo->SpellLevel - 1, 0);
611  GtNPCManaCostScalerEntry const* casterScaler = sGtNPCManaCostScalerStore.EvaluateTable(caster->getLevel() - 1, 0);
612  if (spellScaler && casterScaler)
613  value *= casterScaler->ratio / spellScaler->ratio;
614  }
615  }
616  }
617 
618  return int32(value);
619 }
GameTable< GtSpellScalingEntry > sGtSpellScalingStore(GtSpellScalingfmt)
Definition: SpellAuraDefines.h:68
Definition: SpellAuraDefines.h:63
float ratio
Definition: DBCStructure.h:554
Definition: SpellAuraDefines.h:287
uint32 CastTimeMaxLevel
Definition: SpellInfo.h:424
int32 Class
Definition: SpellInfo.h:425
struct SpellInfo::ScalingInfo Scaling
uint32 MaxLevel
Definition: SpellInfo.h:373
uint32 SpellLevel
Definition: SpellInfo.h:375
float RealPointsPerLevel
Definition: SpellInfo.h:247
Definition: SharedDefines.h:1152
Definition: SharedDefines.h:1019
float Variance
Definition: SpellInfo.h:271
Definition: SharedDefines.h:1072
bool IsPositiveEffect(uint8 effIndex) const
Definition: SpellInfo.cpp:1500
double frand()
Definition: Vector3.cpp:170
uint32 ApplyAuraName
Definition: SpellInfo.h:244
Definition: SharedDefines.h:1018
float Coefficient
Definition: SpellInfo.h:270
float ResourceCoefficient
Definition: SpellInfo.h:272
Definition: SharedDefines.h:375
float NerfFactor
Definition: SpellInfo.h:426
Definition: SharedDefines.h:728
Definition: SharedDefines.h:1016
float PointsPerResource
Definition: SpellInfo.h:249
int32 DieSides
Definition: SpellInfo.h:246
Definition: SpellAuraDefines.h:75
Definition: SharedDefines.h:1158
uint32 EffectIndex
Definition: SpellInfo.h:242
uint32 NerfMaxLevel
Definition: SpellInfo.h:427
int32 irand(int32 min, int32 max)
Definition: Random.cpp:39
uint32 ScalesFromItemLevel
Definition: SpellInfo.h:429
Definition: DBCStructure.h:552
bool HasAttribute(SpellAttr0 attribute) const
Definition: SpellInfo.h:462
int32 CastTimeMin
Definition: SpellInfo.h:422
int32_t int32
Definition: Define.h:146
uint32_t uint32
Definition: Define.h:150
struct SpellEffectInfo::ScalingInfo Scaling
Definition: SharedDefines.h:1068
Definition: ItemTemplate.h:337
GameTable< GtNPCManaCostScalerEntry > sGtNPCManaCostScalerStore(GtNPCManaCostScalerfmt)
Definition: SharedDefines.h:1020
Definition: SpellAuraDefines.h:124
#define MAX_CLASSES
Definition: SharedDefines.h:181
int32 CastTimeMax
Definition: SpellInfo.h:423
Definition: SharedDefines.h:1013
SpellInfo const * _spellInfo
Definition: SpellInfo.h:240
Definition: DBCStructure.h:622
int32_t int32
Definition: g3dmath.h:167
uint32 BaseLevel
Definition: SpellInfo.h:374
Definition: SpellAuraDefines.h:64
uint32 MaxScalingLevel
Definition: SpellInfo.h:428
Definition: SharedDefines.h:754
int32 BasePoints
Definition: SpellInfo.h:248
Definition: SharedDefines.h:1151
TC_GAME_API uint32 GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subClass)
Definition: ItemEnchantmentMgr.cpp:133
const FieldDescriptor value
Definition: descriptor.h:1522
Definition: SharedDefines.h:323
uint32_t uint32
Definition: g3dmath.h:168
Definition: SpellAuraDefines.h:113
Definition: SharedDefines.h:1087
uint32 Effect
Definition: SpellInfo.h:243
Definition: SharedDefines.h:1012
Definition: SpellAuraDefines.h:129
Definition: SharedDefines.h:1131
Definition: SpellAuraDefines.h:103

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

float SpellEffectInfo::CalcValueMultiplier ( Unit caster,
Spell spell = NULL 
) const
630 {
631  float multiplier = Amplitude;
632  if (Player* modOwner = (caster ? caster->GetSpellModOwner() : NULL))
633  modOwner->ApplySpellMod(_spellInfo->Id, SPELLMOD_VALUE_MULTIPLIER, multiplier, spell);
634  return multiplier;
635 }
uint32 Id
Definition: SpellInfo.h:329
arena_t NULL
Definition: jemalloc_internal.h:624
float Amplitude
Definition: SpellInfo.h:250
Definition: Unit.h:113
Player * GetSpellModOwner() const
Definition: Unit.cpp:12691
SpellInfo const * _spellInfo
Definition: SpellInfo.h:240

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

SpellEffectImplicitTargetTypes SpellEffectInfo::GetImplicitTargetType ( ) const
711 {
713 }
SpellEffectImplicitTargetTypes ImplicitTargetType
Definition: SpellInfo.h:309
static StaticData _data[TOTAL_SPELL_EFFECTS]
Definition: SpellInfo.h:312
uint32 Effect
Definition: SpellInfo.h:243

+ Here is the caller graph for this function:

uint32 SpellEffectInfo::GetMissingTargetMask ( bool  srcSet = false,
bool  destSet = false,
uint32  mask = 0 
) const
687 {
688  uint32 effImplicitTargetMask = GetTargetFlagMask(GetUsedTargetObjectType());
690 
691  // remove all flags covered by effect target mask
692  if (providedTargetMask & TARGET_FLAG_UNIT_MASK)
693  effImplicitTargetMask &= ~(TARGET_FLAG_UNIT_MASK);
694  if (providedTargetMask & TARGET_FLAG_CORPSE_MASK)
695  effImplicitTargetMask &= ~(TARGET_FLAG_UNIT_MASK | TARGET_FLAG_CORPSE_MASK);
696  if (providedTargetMask & TARGET_FLAG_GAMEOBJECT_ITEM)
697  effImplicitTargetMask &= ~(TARGET_FLAG_GAMEOBJECT_ITEM | TARGET_FLAG_GAMEOBJECT | TARGET_FLAG_ITEM);
698  if (providedTargetMask & TARGET_FLAG_GAMEOBJECT)
699  effImplicitTargetMask &= ~(TARGET_FLAG_GAMEOBJECT | TARGET_FLAG_GAMEOBJECT_ITEM);
700  if (providedTargetMask & TARGET_FLAG_ITEM)
701  effImplicitTargetMask &= ~(TARGET_FLAG_ITEM | TARGET_FLAG_GAMEOBJECT_ITEM);
702  if (dstSet || providedTargetMask & TARGET_FLAG_DEST_LOCATION)
703  effImplicitTargetMask &= ~(TARGET_FLAG_DEST_LOCATION);
704  if (srcSet || providedTargetMask & TARGET_FLAG_SOURCE_LOCATION)
705  effImplicitTargetMask &= ~(TARGET_FLAG_SOURCE_LOCATION);
706 
707  return effImplicitTargetMask;
708 }
Definition: SpellInfo.h:53
SpellImplicitTargetInfo TargetA
Definition: SpellInfo.h:257
Definition: SpellInfo.h:78
uint32_t uint32
Definition: Define.h:150
Definition: SpellInfo.h:52
Definition: SpellInfo.h:62
Definition: SpellInfo.h:54
SpellTargetObjectTypes GetObjectType() const
Definition: SpellInfo.cpp:79
Definition: SpellInfo.h:59
SpellImplicitTargetInfo TargetB
Definition: SpellInfo.h:258
SpellTargetObjectTypes GetUsedTargetObjectType() const
Definition: SpellInfo.cpp:715
Definition: SpellInfo.h:75
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
Definition: SpellInfo.cpp:30

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32 SpellEffectInfo::GetProvidedTargetMask ( ) const
682 {
684 }
SpellImplicitTargetInfo TargetA
Definition: SpellInfo.h:257
SpellTargetObjectTypes GetObjectType() const
Definition: SpellInfo.cpp:79
SpellImplicitTargetInfo TargetB
Definition: SpellInfo.h:258
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
Definition: SpellInfo.cpp:30

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

SpellTargetObjectTypes SpellEffectInfo::GetUsedTargetObjectType ( ) const
716 {
718 }
SpellTargetObjectTypes UsedTargetObjectType
Definition: SpellInfo.h:310
static StaticData _data[TOTAL_SPELL_EFFECTS]
Definition: SpellInfo.h:312
uint32 Effect
Definition: SpellInfo.h:243

+ Here is the caller graph for this function:

bool SpellEffectInfo::HasMaxRadius ( ) const
651 {
652  return MaxRadiusEntry != NULL;
653 }
arena_t NULL
Definition: jemalloc_internal.h:624
SpellRadiusEntry const * MaxRadiusEntry
Definition: SpellInfo.h:260

+ Here is the caller graph for this function:

bool SpellEffectInfo::HasRadius ( ) const
646 {
647  return RadiusEntry != NULL;
648 }
arena_t NULL
Definition: jemalloc_internal.h:624
SpellRadiusEntry const * RadiusEntry
Definition: SpellInfo.h:259

+ Here is the caller graph for this function:

bool SpellEffectInfo::IsAreaAuraEffect ( ) const
425 {
432  return true;
433  return false;
434 }
Definition: SharedDefines.h:1153
Definition: SharedDefines.h:1139
Definition: SharedDefines.h:1138
Definition: SharedDefines.h:1075
Definition: SharedDefines.h:1045
uint32 Effect
Definition: SpellInfo.h:243
Definition: SharedDefines.h:1129

+ Here is the caller graph for this function:

bool SpellEffectInfo::IsAura ( ) const
410 {
412 }
bool IsUnitOwnedAuraEffect() const
Definition: SpellInfo.cpp:450
uint32 ApplyAuraName
Definition: SpellInfo.h:244
Definition: SharedDefines.h:1037
uint32 Effect
Definition: SpellInfo.h:243

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SpellEffectInfo::IsAura ( AuraType  aura) const
415 {
416  return IsAura() && ApplyAuraName == uint32(aura);
417 }
uint32 ApplyAuraName
Definition: SpellInfo.h:244
bool IsAura() const
Definition: SpellInfo.cpp:409
uint32_t uint32
Definition: g3dmath.h:168

+ Here is the call graph for this function:

bool SpellEffectInfo::IsEffect ( ) const
400 {
401  return Effect != 0;
402 }
uint32 Effect
Definition: SpellInfo.h:243

+ Here is the caller graph for this function:

bool SpellEffectInfo::IsEffect ( SpellEffectName  effectName) const
405 {
406  return Effect == uint32(effectName);
407 }
uint32_t uint32
Definition: g3dmath.h:168
uint32 Effect
Definition: SpellInfo.h:243
bool SpellEffectInfo::IsFarDestTargetEffect ( ) const
446 {
448 }
Definition: SharedDefines.h:1015
uint32 Effect
Definition: SpellInfo.h:243
bool SpellEffectInfo::IsFarUnitTargetEffect ( ) const
437 {
443 }
Definition: SharedDefines.h:1028
Definition: SharedDefines.h:1123
Definition: SharedDefines.h:1162
uint32 Effect
Definition: SpellInfo.h:243
Definition: SharedDefines.h:1126
Definition: SharedDefines.h:1095
bool SpellEffectInfo::IsTargetingArea ( ) const
420 {
421  return TargetA.IsArea() || TargetB.IsArea();
422 }
bool IsArea() const
Definition: SpellInfo.cpp:64
SpellImplicitTargetInfo TargetA
Definition: SpellInfo.h:257
SpellImplicitTargetInfo TargetB
Definition: SpellInfo.h:258

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SpellEffectInfo::IsUnitOwnedAuraEffect ( ) const
451 {
453 }
Definition: SharedDefines.h:1016
bool IsAreaAuraEffect() const
Definition: SpellInfo.cpp:424
uint32 Effect
Definition: SpellInfo.h:243

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

SpellEffectInfo::StaticData SpellEffectInfo::_data
staticprivate
SpellInfo const* SpellEffectInfo::_spellInfo
private
float SpellEffectInfo::Amplitude
uint32 SpellEffectInfo::ApplyAuraName
uint32 SpellEffectInfo::ApplyAuraPeriod
int32 SpellEffectInfo::BasePoints
float SpellEffectInfo::BonusCoefficient
float SpellEffectInfo::BonusCoefficientFromAP
float SpellEffectInfo::ChainAmplitude
uint32 SpellEffectInfo::ChainTargets
int32 SpellEffectInfo::DieSides
uint32 SpellEffectInfo::Effect
uint32 SpellEffectInfo::EffectIndex
std::vector<Condition*>* SpellEffectInfo::ImplicitTargetConditions
uint32 SpellEffectInfo::ItemType
SpellRadiusEntry const* SpellEffectInfo::MaxRadiusEntry
Mechanics SpellEffectInfo::Mechanic
int32 SpellEffectInfo::MiscValue
int32 SpellEffectInfo::MiscValueB
float SpellEffectInfo::PointsPerResource
float SpellEffectInfo::PositionFacing
SpellRadiusEntry const* SpellEffectInfo::RadiusEntry
float SpellEffectInfo::RealPointsPerLevel
struct SpellEffectInfo::ScalingInfo SpellEffectInfo::Scaling
flag128 SpellEffectInfo::SpellClassMask
SpellImplicitTargetInfo SpellEffectInfo::TargetA
SpellImplicitTargetInfo SpellEffectInfo::TargetB
uint32 SpellEffectInfo::TriggerSpell

The documentation for this class was generated from the following files: