20BonusMultiplier(0.0f),
MiscValue(0),
MiscValueB(0),
Mechanic(
Mechanics::
MECHANIC_NONE),
TargetA(0),
TargetB(0),
RadiusEntry(NULL),
MaxRadiusEntry(NULL),
ChainTarget(0),
ItemType(0),
51 if (!_effectScalingEntry)
132 float multiplier = gtScaling->value;
142 preciseBasePoints +=
frand(-delta, delta);
145 basePoints =
int32(preciseBasePoints);
162 basePoints +=
int32(level * basePointsPerLevel);
167 switch (randomPoints)
170 case 1: basePoints += 1;
break;
174 int32 randvalue = (randomPoints >= 1)
175 ? std::rand() % randomPoints + 1
176 : std::rand() % 1 + randomPoints;
178 basePoints += randvalue;
184 float value = float(basePoints);
192 value += comboDamage * comboPoints;
214 bool canEffectScale =
false;
229 canEffectScale =
true;
246 canEffectScale =
true;
348 return effImplicitTargetMask;
581 for (
uint8 i = 0; i < 2; ++i)
702 for (
uint8 i = 0; i < 2; ++i)
704 for (
uint8 i = 0; i < 2; ++i)
749 if (
Effects[i].IsEffect(effect))
765 if (
Effects[i].IsAreaAuraEffect())
845 for (SkillLineAbilityMap::const_iterator _spell_idx = bounds.first; _spell_idx != bounds.second; ++_spell_idx)
862 for (SkillLineAbilityMap::const_iterator _spell_idx = bounds.first; _spell_idx != bounds.second; ++_spell_idx)
863 if (_spell_idx->second->skillId ==
uint32(skillType))
916 mask |=
Effects[i].GetProvidedTargetMask();
1147 return spellSpec1 == spellSpec2;
1191 uint32 stanceMask = (form ? 1 << (form - 1) : 0);
1199 bool actAsShifted =
false;
1206 SF_LOG_ERROR(
"spells",
"GetErrorAtShapeshiftedCast: unknown shapeshift %u", form);
1209 actAsShifted = !(shapeInfo->
flags1 & 1);
1229 if (shapeInfo && shapeInfo->
flags1 & 0x400)
1248 if (groupEntry->
AreaId[i] == zone_id || groupEntry->
AreaId[i] == area_id)
1273 if (!mapEntry || mapEntry->
IsRaid())
1279 if (saBounds.first != saBounds.second)
1281 for (SpellAreaMap::const_iterator itr = saBounds.first; itr != saBounds.second; ++itr)
1283 if (itr->second.IsFitToRequirements(player, zone_id, area_id))
1362 switch (
Effects[i].ApplyAuraName)
1373 if (
uint32 mountType = spellShapeshiftForm->mount_type)
1417 if (caster != unitTarget)
1424 if (targetCreature->hasLootRecipient() && !targetCreature->isTappedBy(caster->
ToPlayer()))
1556 if (
Unit const* unitTarget = target->
ToUnit())
1572 if (unitTarget->IsOnVehicle(caster))
1595 if (shapeShiftFromEntry && (shapeShiftFromEntry->
flags1 & 1) == 0)
1609 && (vehicleSeat->
m_flags & checkMask) != checkMask)
1786 switch (
Effects[i].ApplyAuraName)
1814 switch (firstRankSpellInfo->
Id)
1855 if (
Id == 603 ||
Id == 980 ||
Id == 80240)
1894 if (
Id == 20184 ||
Id == 20185 ||
Id == 20186)
1914 if (
Id == 48266 ||
Id == 48263 ||
Id == 48265)
1923 switch (
Effects[i].ApplyAuraName)
1979 if (!level && spell)
2123 bool needRankSelection =
false;
2130 !
Effects[i].ScalingMultiplier)
2132 needRankSelection =
true;
2138 if (!needRankSelection)
2141 for (
SpellInfo const* nextSpellInfo =
this; nextSpellInfo != NULL; nextSpellInfo = nextSpellInfo->GetPrevRankSpell())
2144 if (
uint32(level + 10) >= nextSpellInfo->SpellLevel)
2145 return nextSpellInfo;
2161 if (
Id == spellInfo->
Id)
2178 bool srcSet =
false;
2179 bool dstSet =
false;
2187 targetMask |=
Effects[i].TargetA.GetExplicitTargetMask(srcSet, dstSet);
2188 targetMask |=
Effects[i].TargetB.GetExplicitTargetMask(srcSet, dstSet);
2195 uint32 effectTargetMask =
Effects[i].GetMissingTargetMask(srcSet, dstSet, targetMask);
2201 targetMask |= effectTargetMask;
2276 switch (
Effects[effIndex].Effect)
2302 switch (
Effects[effIndex].ApplyAuraName)
2311 if (
Effects[effIndex].CalcValue() < 0)
2315 if (
Effects[effIndex].CalcValue() > 0)
2320 if (
Effects[effIndex].CalcValue() > 0)
2334 if (!spellTriggeredProto->Effects[i].Effect)
2338 if (
_IsPositiveTarget(spellTriggeredProto->Effects[i].TargetA.GetTarget(), spellTriggeredProto->Effects[i].TargetB.GetTarget()) && !spellTriggeredProto->_IsPositiveEffect(i,
true))
2347 if (effIndex == 0 &&
Effects[1].Effect == 0 &&
Effects[2].Effect == 0)
2378 switch (
Effects[effIndex].MiscValue)
2404 if (!deep && !
Effects[effIndex].ApplyAuraName &&
Effects[effIndex].TriggerSpell)
2407 if (!spellTriggeredProto->_IsPositiveSpell())
2527 if (
Effects[j].ImplicitTargetConditions == cur)
2528 Effects[j].ImplicitTargetConditions = NULL;
std::list< Condition * > ConditionList
DB2Storage< SpellReagentsEntry > sSpellReagentsStore(SpellReagentsfmt)
#define MAX_SPELL_REAGENTS
@ VEHICLE_SEAT_FLAG_CAN_CAST_MOUNT_SPELL
@ VEHICLE_SEAT_FLAG_CAN_CONTROL
@ VEHICLE_SEAT_FLAG_UNCONTROLLED
@ VEHICLE_SEAT_FLAG_CAN_ATTACK
@ ABILITY_LEARNED_ON_GET_PROFESSION_SKILL
@ SPELL_CATEGORY_FLAG_COOLDOWN_STARTS_ON_EVENT
DBCStorage< SpellShapeshiftFormEntry > sSpellShapeshiftFormStore(SpellShapeshiftFormfmt)
DBCStorage< SpellRadiusEntry > sSpellRadiusStore(SpellRadiusfmt)
DBCStorage< SpellLevelsEntry > sSpellLevelsStore(SpellLevelsEntryfmt)
DBCStorage< SummonPropertiesEntry > sSummonPropertiesStore(SummonPropertiesfmt)
SpellEffectScallingByEffectId sSpellEffectScallingByEffectId
DBCStorage< SpellClassOptionsEntry > sSpellClassOptionsStore(SpellClassOptionsEntryfmt)
DBCStorage< SpellInterruptsEntry > sSpellInterruptsStore(SpellInterruptsEntryfmt)
DBCStorage< SpellAuraOptionsEntry > sSpellAuraOptionsStore(SpellAuraOptionsEntryfmt)
DBCStorage< SpellCategoryEntry > sSpellCategoryStore(SpellCategoryfmt)
DBCStorage< SpellCastTimesEntry > sSpellCastTimesStore(SpellCastTimefmt)
DBCStorage< SpellRangeEntry > sSpellRangeStore(SpellRangefmt)
DBCStorage< SpellMiscEntry > sSpellMiscStore(SpellMiscfmt)
uint32 GetTalentSpellCost(uint32 spellId)
DBCStorage< SpellTargetRestrictionsEntry > sSpellTargetRestrictionsStore(SpellTargetRestrictionsEntryfmt)
DBCStorage< SpellEquippedItemsEntry > sSpellEquippedItemsStore(SpellEquippedItemsEntryfmt)
DBCStorage< SpellTotemsEntry > sSpellTotemsStore(SpellTotemsEntryfmt)
uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId)
DBCStorage< SpellShapeshiftEntry > sSpellShapeshiftStore(SpellShapeshiftEntryfmt)
DBCStorage< SpellAuraRestrictionsEntry > sSpellAuraRestrictionsStore(SpellAuraRestrictionsEntryfmt)
DBCStorage< SpellCastingRequirementsEntry > sSpellCastingRequirementsStore(SpellCastingRequirementsEntryfmt)
DBCStorage< AreaGroupEntry > sAreaGroupStore(AreaGroupEntryfmt)
DBCStorage< GtSpellScalingEntry > sGtSpellScalingStore(GtSpellScalingfmt)
DBCStorage< SpellDurationEntry > sSpellDurationStore(SpellDurationfmt)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
DBCStorage< SpellCooldownsEntry > sSpellCooldownsStore(SpellCooldownsEntryfmt)
DBCStorage< SpellCategoriesEntry > sSpellCategoriesStore(SpellCategoriesEntryfmt)
DBCStorage< SpellEffectScalingEntry > sSpellEffectScalingStore(SpellEffectScalingfmt)
DBCStorage< SpellScalingEntry > sSpellScalingStore(SpellScalingEntryfmt)
#define MAX_GROUP_AREA_IDS
#define MAX_SPELL_EFFECTS
#define ITEM_SUBCLASS_MASK_WEAPON_RANGED
#define SF_LOG_ERROR(filterType__,...)
@ SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY
@ SPELL_ATTR0_DISABLED_WHILE_ACTIVE
@ SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION
@ SPELL_ATTR0_NOT_SHAPESHIFT
@ SPELL_ATTR0_CASTABLE_WHILE_MOUNTED
@ SPELL_ATTR0_CANT_USED_IN_COMBAT
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_POWER_BURN
@ SPELL_EFFECT_ENERGIZE_PCT
@ SPELL_EFFECT_TRIGGER_MISSILE_SPELL_WITH_VALUE
@ SPELL_EFFECT_APPLY_AREA_AURA_PARTY
@ SPELL_EFFECT_APPLY_AREA_AURA_FRIEND
@ SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE
@ SPELL_EFFECT_SELF_RESURRECT
@ SPELL_EFFECT_HEALTH_LEECH
@ SPELL_EFFECT_SUMMON_RAF_FRIEND
@ SPELL_EFFECT_WEAPON_DAMAGE
@ SPELL_EFFECT_NORMALIZED_WEAPON_DMG
@ SPELL_EFFECT_SUMMON_PLAYER
@ SPELL_EFFECT_APPLY_AREA_AURA_PET
@ SPELL_EFFECT_SKIN_PLAYER_CORPSE
@ SPELL_EFFECT_APPLY_AREA_AURA_RAID
@ SPELL_EFFECT_CREATE_ITEM_2
@ SPELL_EFFECT_PERSISTENT_AREA_AURA
@ SPELL_EFFECT_POWER_DRAIN
@ SPELL_EFFECT_RESURRECT_NEW
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ SPELL_EFFECT_LEARN_SPELL
@ SPELL_EFFECT_CREATE_RANDOM_ITEM
@ SPELL_EFFECT_APPLY_AREA_AURA_ENEMY
@ SPELL_EFFECT_TELEPORT_UNITS
@ SPELL_EFFECT_FORCE_CAST_WITH_VALUE
@ SPELL_EFFECT_SKILL_STEP
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_EFFECT_APPLY_AREA_AURA_OWNER
@ SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE
@ SPELL_ATTR1_NOT_BREAK_STEALTH
@ SPELL_ATTR1_UNAUTOCASTABLE_BY_PET
@ SPELL_ATTR1_CHANNELED_1
@ SPELL_ATTR1_CHANNELED_2
@ SPELL_ATTR1_REQ_COMBO_POINTS2
@ SPELL_ATTR1_REQ_COMBO_POINTS1
@ SPELL_ATTR1_CANT_TARGET_SELF
@ SPELL_ATTR1_CANT_TARGET_IN_COMBAT
@ TARGET_DEST_DYNOBJ_ENEMY
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_CONE_ENEMY_104
@ TARGET_UNIT_SRC_AREA_ENEMY
@ TARGET_DEST_TARGET_ENEMY
@ TARGET_UNIT_TARGET_ENEMY
@ TARGET_UNIT_CONE_ENEMY_24
@ TARGET_UNIT_NEARBY_ENEMY
@ SPELL_ATTR2_CANT_TARGET_TAPPED
@ SPELL_ATTR2_AUTOREPEAT_FLAG
@ SPELL_ATTR2_CAN_TARGET_DEAD
@ SPELL_ATTR2_NOT_NEED_SHAPESHIFT
@ SPELL_ATTR4_CAST_ONLY_IN_OUTLAND
@ SPELL_ATTR6_CAN_TARGET_INVISIBLE
@ SPELL_ATTR6_NOT_IN_RAID_INSTANCE
@ SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED
@ SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE
@ SPELL_ATTR3_STACK_FOR_DIFF_CASTERS
@ SPELL_ATTR3_DEATH_PERSISTENT
@ SPELL_ATTR3_NO_DONE_BONUS
@ SPELL_ATTR3_ONLY_TARGET_PLAYERS
@ SPELL_ATTR3_ONLY_TARGET_GHOSTS
@ SPELLFAMILY_DEATHKNIGHT
@ SPELL_ATTR5_SINGLE_TARGET_SPELL
uint32 const CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD
@ AURA_STATE_DEADLY_POISON
@ AURA_STATE_WARRIOR_VICTORY_RUSH
@ MECHANIC_INVULNERABILITY
@ SPELL_SCHOOL_MASK_FROST
@ SPELL_FAILED_TARGET_IS_PLAYER
@ SPELL_FAILED_TARGET_NOT_PLAYER
@ SPELL_FAILED_TARGET_AFFECTING_COMBAT
@ SPELL_FAILED_TARGET_NOT_GHOST
@ SPELL_FAILED_BAD_TARGETS
@ SPELL_FAILED_BM_OR_INVISGOD
@ SPELL_FAILED_TARGET_NO_WEAPONS
@ SPELL_FAILED_OUT_OF_RANGE
@ SPELL_FAILED_CANT_CAST_ON_TAPPED
@ SPELL_FAILED_TARGETS_DEAD
@ SPELL_FAILED_NOT_SHAPESHIFT
@ SPELL_FAILED_TARGET_NO_POCKETS
@ SPELL_FAILED_INCORRECT_AREA
@ SPELL_FAILED_REQUIRES_AREA
@ SPELL_FAILED_TARGET_CANNOT_BE_RESURRECTED
@ SPELL_FAILED_ONLY_SHAPESHIFT
@ SPELL_FAILED_TARGET_AURASTATE
@ SPELL_FAILED_NOT_IN_RAID_INSTANCE
@ SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW
@ SPELL_AURA_PREVENT_RESURRECTION
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_TRACK_RESOURCES
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_DAMAGE_SHIELD
@ SPELL_AURA_OBS_MOD_HEALTH
@ SPELL_AURA_PERIODIC_MANA_LEECH
@ SPELL_AURA_MOD_POSSESS_PET
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MOD_POWER_REGEN
@ SPELL_AURA_OBS_MOD_POWER
@ SPELL_AURA_TRACK_STEALTHED
@ SPELL_AURA_MOD_SPELL_CRIT_CHANCE
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_PERIODIC_DAMAGE_PERCENT
@ SPELL_AURA_MOD_DODGE_PERCENT
@ SPELL_AURA_ADD_TARGET_TRIGGER
@ SPELL_AURA_MOD_HEALING_DONE
@ SPELL_AURA_MOD_HEALING_PCT
@ SPELL_AURA_MOD_DAMAGE_PERCENT_DONE
@ SPELL_AURA_MECHANIC_IMMUNITY
@ SPELL_AURA_MOD_DAMAGE_TAKEN
@ SPELL_AURA_MOD_CRIT_PCT
@ SPELL_AURA_MOD_PACIFY_SILENCE
@ SPELL_AURA_MOD_DECREASE_SPEED
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_PERIODIC_LEECH
@ SPELL_AURA_PROC_TRIGGER_DAMAGE
@ SPELL_AURA_MOD_DAMAGE_DONE
@ SPELL_AURA_TRACK_CREATURES
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ SPELL_ATTR0_CU_NEGATIVE_EFF2
@ SPELL_ATTR0_CU_NEGATIVE_EFF1
@ SPELL_ATTR0_CU_NEGATIVE
@ SPELL_ATTR0_CU_NEGATIVE_EFF0
@ SPELL_ATTR0_CU_PICKPOCKET
@ SPELL_SPECIFIC_MAGE_ARMOR
@ SPELL_SPECIFIC_MAGE_ARCANE_BRILLANCE
@ 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
bool IsPrimaryProfessionSkill(uint32 skill)
bool IsProfessionOrRidingSkill(uint32 skill)
bool IsProfessionSkill(uint32 skill)
std::pair< SpellAreaMap::const_iterator, SpellAreaMap::const_iterator > SpellAreaMapBounds
std::pair< SkillLineAbilityMap::const_iterator, SkillLineAbilityMap::const_iterator > SkillLineAbilityMapBounds
uint32 GetTargetFlagMask(SpellTargetObjectTypes objType)
SpellEffectImplicitTargetTypes
@ EFFECT_IMPLICIT_TARGET_CASTER
@ EFFECT_IMPLICIT_TARGET_NONE
@ EFFECT_IMPLICIT_TARGET_EXPLICIT
@ TARGET_FLAG_CORPSE_ALLY
@ TARGET_FLAG_UNIT_MINIPET
@ TARGET_FLAG_UNIT_PASSENGER
@ TARGET_FLAG_GAMEOBJECT_ITEM
@ TARGET_FLAG_DEST_LOCATION
@ TARGET_FLAG_SOURCE_LOCATION
@ TARGET_FLAG_CORPSE_ENEMY
@ TARGET_FLAG_CORPSE_MASK
@ TARGET_FLAG_GAMEOBJECT_MASK
@ TARGET_OBJECT_TYPE_UNIT
@ TARGET_OBJECT_TYPE_ITEM
@ 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
@ AURA_INTERRUPT_FLAG_NOT_SEATED
@ SPELLMOD_BONUS_MULTIPLIER
@ SPELLMOD_VALUE_MULTIPLIER
@ SPELLMOD_DAMAGE_MULTIPLIER
@ UNIT_FIELD_VIRTUAL_ITEM_ID
float frand(float min, float max)
BattlegroundStatus GetStatus() const
static Player * FindPlayer(uint64)
uint32 GetUInt32Value(uint16 index) const
GameObject * ToGameObject()
int8 GetComboPoints() const
bool IsKnowHowFlyIn(uint32 mapid, uint32 zone) const
bool InBattleground() const
Battleground * GetBattleground() const
bool IsGameMaster() const
Item * GetWeaponForAttack(WeaponAttackType attackType, bool useable=false) const
bool IsUseEquipedWeapon(bool mainhand) const
float ComboScalingMultiplier
bool IsUnitOwnedAuraEffect() const
float CalcValueMultiplier(Unit *caster, Spell *spell=NULL) const
float PointsPerComboPoint
static StaticData _data[TOTAL_SPELL_EFFECTS]
std::list< Condition * > * ImplicitTargetConditions
float CalcDamageMultiplier(Unit *caster, Spell *spell=NULL) const
bool IsAreaAuraEffect() const
SpellInfo const * _spellInfo
uint32 GetMissingTargetMask(bool srcSet=false, bool destSet=false, uint32 mask=0) const
bool IsFarUnitTargetEffect() const
bool HasMaxRadius() const
bool IsTargetingArea() const
bool IsFarDestTargetEffect() const
float CalcBonusMultiplier(Unit *caster, Spell *spell=NULL) const
uint32 ApplyAuraTickCount
SpellEffectImplicitTargetTypes GetImplicitTargetType() const
float CalcRadius(Unit *caster=NULL, Spell *=NULL) const
float DeltaScalingMultiplier
SpellTargetObjectTypes GetUsedTargetObjectType() const
SpellRadiusEntry const * MaxRadiusEntry
SpellRadiusEntry const * RadiusEntry
uint32 GetProvidedTargetMask() const
SpellImplicitTargetInfo TargetA
int32 CalcBaseValue(int32 value) const
int32 CalcValue(Unit const *caster=NULL, int32 const *basePoints=NULL, Unit const *target=NULL) const
SpellImplicitTargetInfo TargetB
uint32 ChannelInterruptFlags
SpellInterruptsEntry const * GetSpellInterrupts() const
bool IsExplicitDiscovery() const
uint32 RequiresSpellFocus
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
bool _IsPositiveSpell() const
static bool _IsPositiveTarget(uint32 targetA, uint32 targetB)
SpellReagentsEntry const * GetSpellReagents() const
bool IsRankOf(SpellInfo const *spellInfo) const
uint32 GetMaxTicks() const
uint32 ExcludeTargetAuraSpell
uint32 GetEffectMechanicMask(uint8 effIndex) const
uint32 TargetAuraStateNot
bool IsProfessionOrRiding() const
SpellInfo const * GetFirstRankSpell() const
bool IsAutocastable() const
uint32 GetCategory() const
SpellCastResult CheckShapeshift(uint32 form) const
SpellScalingEntry const * GetSpellScaling() const
bool IsRequiringDeadTarget() const
uint32 ReagentCount[MAX_SPELL_REAGENTS]
bool IsAuraExclusiveBySpecificPerCasterWith(SpellInfo const *spellInfo) const
SpellInfo const * GetPrevRankSpell() const
bool IsDeathPersistent() const
SpellShapeshiftEntry const * GetSpellShapeshift() const
bool IsCooldownStartedOnEvent() const
uint32 SpellAuraRestrictionsId
uint32 CalcCastTime(uint8 level=0, Spell *spell=NULL) const
bool IsAuraExclusiveBySpecificWith(SpellInfo const *spellInfo) const
SpellRangeEntry const * RangeEntry
uint32 SpellTargetRestrictionsId
bool IsLootCrafting() const
SpellClassOptionsEntry const * GetSpellClassOptions() const
bool IsStackableOnOneSlotWithDifferentCasters() const
uint32 GetDispelMask() const
bool IsHighRankOf(SpellInfo const *spellInfo) const
SpellLevelsEntry const * GetSpellLevels() const
SpellInfo const * GetAuraRankForLevel(uint8 level) const
bool NeedsToBeTriggeredByCaster(SpellInfo const *triggeringSpell) const
uint32 GetRecoveryTime() const
SpellSpecificType GetSpellSpecific() const
bool IsMultiSlotAura() const
void _UnloadImplicitTargetConditionLists()
float GetMinRange(bool positive=false) const
int32 GetMaxDuration() const
SpellTotemsEntry const * GetSpellTotems() const
bool IsAbilityOfSkillType(uint32 skillType) const
SpellCategoriesEntry const * GetSpellCategories() const
bool IsAffectedBySpellMod(SpellModifier const *mod) const
bool CanPierceImmuneAura(SpellInfo const *aura) const
bool CheckTargetCreatureType(Unit const *target) const
bool IsStackableWithRanks() const
SpellCastResult CheckLocation(uint32 map_id, uint32 zone_id, uint32 area_id, Player const *player=NULL) const
bool CanBeUsedInCombat() const
SpellTargetRestrictionsEntry const * GetSpellTargetRestrictions() const
uint32 CategoryRecoveryTime
bool HasAnyEffectMechanic() const
uint32 GetSpellMechanicMaskByEffectMask(uint32 effectMask) const
SpellInfo(SpellEntry const *spellEntry, SpellEffectEntry const **effects)
uint32 ExplicitTargetMask
bool IsAbilityLearnedWithProfession() const
float GetMaxRange(bool positive=false, Unit *caster=NULL, Spell *spell=NULL) const
bool IsAllowingDeadTarget() const
uint32 CasterAuraStateNot
bool _IsPositiveEffect(uint8 effIndex, bool deep) const
Mechanics GetEffectMechanic(uint8 effIndex) const
SpellSchoolMask GetSchoolMask() const
bool IsPrimaryProfession() const
bool NeedsComboPoints() const
AuraStateType GetAuraState() const
SpellDurationEntry const * DurationEntry
bool IsPassiveStackableWithRanks() const
SpellCategoryEntry const * CategoryEntry
uint32 MaxAffectedTargets
int32 GetDuration() const
bool IsAffectedBySpellMods() const
SpellCastResult CheckVehicle(Unit const *caster) const
int32 EquippedItemSubClassMask
uint32 GetExplicitTargetMask() const
bool HasAreaAuraEffect() const
uint32 GetAllEffectsMechanicMask() const
SpellChainNode const * ChainEntry
uint32 SpellAuraOptionsId
SpellAuraRestrictionsEntry const * GetSpellAuraRestrictions() const
void _InitializeExplicitTargetMask()
bool IsDifferentRankOf(SpellInfo const *spellInfo) const
SpellInfo const * GetLastRankSpell() const
bool NeedsExplicitUnitTarget() const
SpellInfo const * GetNextRankSpell() const
SpellCastTimesEntry const * CastTimeEntry
int32 EquippedItemInventoryTypeMask
SpellCastResult CheckTarget(Unit const *caster, WorldObject const *target, bool implicit=true) const
SpellCastingRequirementsEntry const * GetSpellCastingRequirements() const
bool IsPrimaryProfessionFirstRank() const
bool HasEffect(SpellEffects effect) const
uint32 SpellClassOptionsId
bool IsAffectingArea() const
bool IsProfession() const
bool IsAutoRepeatRangedSpell() const
uint32 TargetCreatureType
uint32 SpellCastingRequirementsId
bool IsRangedWeaponSpell() const
bool CanDispelAura(SpellInfo const *aura) const
uint32 ExcludeCasterAuraSpell
bool HasAura(AuraType aura) const
bool IsTargetingArea() const
uint32 StartRecoveryCategory
int32 Reagent[MAX_SPELL_REAGENTS]
SpellCastResult CheckExplicitTarget(Unit const *caster, WorldObject const *target, Item const *itemTarget=NULL) const
SpellCooldownsEntry const * GetSpellCooldowns() const
uint32 AuraInterruptFlags
bool IsBreakingStealth() const
bool IsPositiveEffect(uint8 effIndex) const
bool IsSingleTarget() const
SpellEquippedItemsEntry const * GetSpellEquippedItems() const
SpellAuraOptionsEntry const * GetSpellAuraOptions() const
uint32 SpellEquippedItemsId
bool _IsValidAssistTarget(Unit const *target, SpellInfo const *bySpell) const
Vehicle * GetVehicle() const
bool HasAuraState(AuraStateType flag, SpellInfo const *spellProto=NULL, Unit const *Caster=NULL) const
Player * GetSpellModOwner() const
float ApplyEffectModifiers(SpellInfo const *spellProto, uint8 effect_index, float value) const
bool HasAura(uint32 spellId, uint64 casterGUID=0, uint64 itemCasterGUID=0, uint32 reqEffMask=0) const
bool _IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell, WorldObject const *obj=NULL) const
Unit * GetCharmerOrOwner() const
bool HasAuraType(AuraType auraType) const
bool HasUnitState(const uint32 f) const
bool IsInRaidWith(Unit const *unit) const
bool IsControlledByPlayer() const
uint32 GetCreatureTypeMask() const
MountCapabilityEntry const * GetMountCapability(uint32 mountType) const
uint64 GetCritterGUID() const
bool IsInPartyWith(Unit const *unit) const
void ModSpellCastTime(SpellInfo const *spellProto, int32 &castTime, Spell *spell=NULL)
VehicleSeatEntry const * GetSeatForPassenger(Unit const *passenger) const
Returns information on the seat of specified passenger, represented by the format in VehicleSeat....
float GetDistance(WorldObject const *obj) const
bool CanSeeOrDetect(WorldObject const *obj, bool ignoreStealth=false, bool distanceCheck=false) const
uint32 GetEffectIndexMask(uint32 effIndex)
uint32 CalculateMaxTicks(int32 duration, SpellTickEffectInfo const *effects, uint32 effectCount)
uint32 GetDispelMask(DispelType type)
int32 CalculateBaseCastTime(uint8 level, int32 castTimeMin, int32 castTimeMax, int32 castTimeMaxLevel, int32 fallbackCastTime)
uint32 CalculateRecoveryTime(uint32 recoveryTime, uint32 categoryRecoveryTime)
uint32 GetMechanicMask(uint32 mechanic)
int32 CalculateDuration(bool hasDurationEntry, int32 duration)
float SelectSpellRange(bool hasRangeEntry, float friendRange, float hostileRange, bool positive)
float CalculateRadius(SpellRadiusCalculationData const &data)
uint32 FinalizeCastTime(int32 castTime, bool addRangedAmmoDelay)
int32 CalculateEffectBaseValue(int32 value, int32 dieSides)
bool HasMechanic(uint32 mask, uint32 mechanic)
uint32 AreaId[MAX_GROUP_AREA_IDS]
bool IsBattleground() const
bool IsBattleArena() const
uint32 ApplyAuraTickCount
uint32 excludeTargetAuraSpell
uint32 excludeCasterAuraSpell
uint32 TargetAuraStateNot
uint32 CasterAuraStateNot
uint32 RequiresSpellFocus
uint32 StartRecoveryCategory
uint32 CategoryRecoveryTime
uint32 EffectApplyAuraName
float EffectValueMultiplier
float EffectRealPointsPerLevel
float EffectDamageMultiplier
uint32 EffectTriggerSpell
float EffectPointsPerComboPoint
uint32 EffectAuraTickCount
float EffectBonusMultiplier
uint32 EffectImplicitTargetA
flag128 EffectSpellClassMask
uint32 EffectRadiusMaxIndex
uint32 EffectImplicitTargetB
uint32 SpellCastingRequirementsId
uint32 SpellTargetRestrictionsId
uint32 SpellAuraOptionsId
uint32 SpellEquippedItemsId
uint32 SpellAuraRestrictionsId
uint32 SpellClassOptionsId
int32 EquippedItemSubClassMask
int32 EquippedItemInventoryTypeMask
uint32 AuraInterruptFlags
uint32 ChannelInterruptFlags
int32 Reagent[MAX_SPELL_REAGENTS]
uint32 ReagentCount[MAX_SPELL_REAGENTS2]
uint32 MaxAffectedTargets
uint32 TargetCreatureType
uint32 TotemCategory[MAX_SPELL_TOTEMS]
uint32 Totem[MAX_SPELL_TOTEMS]