2011-07-26 23:00:23 +02:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
|
|
|
|
|
*
|
|
|
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
|
|
|
* under the terms of the GNU General Public License as published by the
|
|
|
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
|
|
|
* option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
|
|
* more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef _SPELLINFO_H
|
|
|
|
|
#define _SPELLINFO_H
|
|
|
|
|
|
|
|
|
|
#include "SharedDefines.h"
|
|
|
|
|
|
|
|
|
|
class Unit;
|
2011-08-16 20:08:13 +02:00
|
|
|
class Player;
|
2011-07-26 23:00:23 +02:00
|
|
|
class Spell;
|
|
|
|
|
class SpellInfo;
|
|
|
|
|
struct SpellChainNode;
|
|
|
|
|
struct SpellTargetPosition;
|
|
|
|
|
struct SpellDurationEntry;
|
2011-08-16 20:08:13 +02:00
|
|
|
struct SpellModifier;
|
2011-07-26 23:00:23 +02:00
|
|
|
struct SpellRangeEntry;
|
|
|
|
|
struct SpellRadiusEntry;
|
|
|
|
|
struct SpellEntry;
|
|
|
|
|
struct SpellCastTimesEntry;
|
|
|
|
|
|
|
|
|
|
enum SpellEffectTargetTypes
|
|
|
|
|
{
|
|
|
|
|
SPELL_REQUIRE_NONE,
|
|
|
|
|
SPELL_REQUIRE_UNIT,
|
|
|
|
|
SPELL_REQUIRE_DEST,
|
|
|
|
|
SPELL_REQUIRE_ITEM,
|
|
|
|
|
SPELL_REQUIRE_CASTER,
|
|
|
|
|
SPELL_REQUIRE_GOBJECT,
|
|
|
|
|
};
|
|
|
|
|
|
2011-08-17 11:30:05 +02:00
|
|
|
enum SpellTargetSelectionCategories
|
|
|
|
|
{
|
|
|
|
|
TARGET_SELECT_CATEGORY_NYI,
|
|
|
|
|
TARGET_SELECT_CATEGORY_DEFAULT,
|
|
|
|
|
TARGET_SELECT_CATEGORY_CHANNEL,
|
|
|
|
|
TARGET_SELECT_CATEGORY_NEARBY,
|
|
|
|
|
TARGET_SELECT_CATEGORY_CONE,
|
|
|
|
|
TARGET_SELECT_CATEGORY_AREA,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum SpellTargetReferenceTypes
|
|
|
|
|
{
|
|
|
|
|
TARGET_REFERENCE_TYPE_NONE,
|
|
|
|
|
TARGET_REFERENCE_TYPE_CASTER,
|
|
|
|
|
TARGET_REFERENCE_TYPE_TARGET,
|
|
|
|
|
TARGET_REFERENCE_TYPE_LAST,
|
|
|
|
|
TARGET_REFERENCE_TYPE_SRC,
|
|
|
|
|
TARGET_REFERENCE_TYPE_DEST,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum SpellTargetObjectTypes
|
|
|
|
|
{
|
|
|
|
|
TARGET_OBJECT_TYPE_NONE,
|
|
|
|
|
TARGET_OBJECT_TYPE_SRC,
|
|
|
|
|
TARGET_OBJECT_TYPE_DEST,
|
|
|
|
|
TARGET_OBJECT_TYPE_UNIT,
|
|
|
|
|
TARGET_OBJECT_TYPE_GOBJ,
|
|
|
|
|
TARGET_OBJECT_TYPE_GOBJ_ITEM,
|
|
|
|
|
TARGET_OBJECT_TYPE_ITEM,
|
|
|
|
|
TARGET_OBJECT_TYPE_CORPSE,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum SpellTargetSelectionCheckTypes
|
|
|
|
|
{
|
|
|
|
|
TARGET_SELECT_CHECK_DEFAULT,
|
|
|
|
|
TARGET_SELECT_CHECK_ENTRY,
|
|
|
|
|
TARGET_SELECT_CHECK_ENEMY,
|
|
|
|
|
TARGET_SELECT_CHECK_ALLY,
|
|
|
|
|
TARGET_SELECT_CHECK_PARTY,
|
|
|
|
|
TARGET_SELECT_CHECK_RAID,
|
|
|
|
|
TARGET_SELECT_CHECK_PASSENGER,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum SpellTargetDirectionTypes
|
|
|
|
|
{
|
|
|
|
|
TARGET_DIR_NONE,
|
|
|
|
|
TARGET_DIR_FRONT,
|
|
|
|
|
TARGET_DIR_BACK,
|
|
|
|
|
TARGET_DIR_RIGHT,
|
|
|
|
|
TARGET_DIR_LEFT,
|
|
|
|
|
TARGET_DIR_FRONT_RIGHT,
|
|
|
|
|
TARGET_DIR_BACK_RIGHT,
|
|
|
|
|
TARGET_DIR_BACK_LEFT,
|
|
|
|
|
TARGET_DIR_FRONT_LEFT,
|
|
|
|
|
TARGET_DIR_RANDOM,
|
|
|
|
|
TARGET_DIR_ENTRY,
|
|
|
|
|
};
|
|
|
|
|
|
2011-07-26 23:00:23 +02:00
|
|
|
enum SpellSelectTargetTypes
|
|
|
|
|
{
|
|
|
|
|
TARGET_TYPE_DEFAULT,
|
|
|
|
|
TARGET_TYPE_UNIT_CASTER,
|
|
|
|
|
TARGET_TYPE_UNIT_TARGET,
|
|
|
|
|
TARGET_TYPE_UNIT_NEARBY,
|
|
|
|
|
TARGET_TYPE_AREA_SRC,
|
|
|
|
|
TARGET_TYPE_AREA_DST,
|
|
|
|
|
TARGET_TYPE_AREA_CONE,
|
|
|
|
|
TARGET_TYPE_DEST_CASTER,
|
|
|
|
|
TARGET_TYPE_DEST_TARGET,
|
|
|
|
|
TARGET_TYPE_DEST_DEST,
|
|
|
|
|
TARGET_TYPE_DEST_SPECIAL,
|
|
|
|
|
TARGET_TYPE_CHANNEL,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Spell clasification
|
|
|
|
|
enum SpellSpecificType
|
|
|
|
|
{
|
2011-08-15 11:46:48 +02:00
|
|
|
SPELL_SPECIFIC_NORMAL = 0,
|
|
|
|
|
SPELL_SPECIFIC_SEAL = 1,
|
|
|
|
|
SPELL_SPECIFIC_AURA = 3,
|
|
|
|
|
SPELL_SPECIFIC_STING = 4,
|
|
|
|
|
SPELL_SPECIFIC_CURSE = 5,
|
|
|
|
|
SPELL_SPECIFIC_ASPECT = 6,
|
|
|
|
|
SPELL_SPECIFIC_TRACKER = 7,
|
|
|
|
|
SPELL_SPECIFIC_WARLOCK_ARMOR = 8,
|
|
|
|
|
SPELL_SPECIFIC_MAGE_ARMOR = 9,
|
|
|
|
|
SPELL_SPECIFIC_ELEMENTAL_SHIELD = 10,
|
|
|
|
|
SPELL_SPECIFIC_MAGE_POLYMORPH = 11,
|
|
|
|
|
SPELL_SPECIFIC_JUDGEMENT = 13,
|
|
|
|
|
SPELL_SPECIFIC_WARLOCK_CORRUPTION = 17,
|
|
|
|
|
SPELL_SPECIFIC_FOOD = 19,
|
|
|
|
|
SPELL_SPECIFIC_DRINK = 20,
|
|
|
|
|
SPELL_SPECIFIC_FOOD_AND_DRINK = 21,
|
|
|
|
|
SPELL_SPECIFIC_PRESENCE = 22,
|
|
|
|
|
SPELL_SPECIFIC_CHARM = 23,
|
|
|
|
|
SPELL_SPECIFIC_SCROLL = 24,
|
|
|
|
|
SPELL_SPECIFIC_MAGE_ARCANE_BRILLANCE = 25,
|
|
|
|
|
SPELL_SPECIFIC_WARRIOR_ENRAGE = 26,
|
|
|
|
|
SPELL_SPECIFIC_PRIEST_DIVINE_SPIRIT = 27,
|
|
|
|
|
SPELL_SPECIFIC_HAND = 28,
|
|
|
|
|
SPELL_SPECIFIC_PHASE = 29,
|
2011-07-26 23:00:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum SpellCustomAttributes
|
|
|
|
|
{
|
2011-08-15 11:46:48 +02:00
|
|
|
SPELL_ATTR0_CU_ENCHANT_PROC = 0x00000001,
|
|
|
|
|
SPELL_ATTR0_CU_CONE_BACK = 0x00000002,
|
|
|
|
|
SPELL_ATTR0_CU_CONE_LINE = 0x00000004,
|
|
|
|
|
SPELL_ATTR0_CU_SHARE_DAMAGE = 0x00000008,
|
|
|
|
|
SPELL_ATTR0_CU_NONE1 = 0x00000010, // UNUSED
|
|
|
|
|
SPELL_ATTR0_CU_NONE2 = 0x00000020, // UNUSED
|
|
|
|
|
SPELL_ATTR0_CU_AURA_CC = 0x00000040,
|
|
|
|
|
SPELL_ATTR0_CU_DIRECT_DAMAGE = 0x00000100,
|
|
|
|
|
SPELL_ATTR0_CU_CHARGE = 0x00000200,
|
|
|
|
|
SPELL_ATTR0_CU_PICKPOCKET = 0x00000400,
|
|
|
|
|
SPELL_ATTR0_CU_EXCLUDE_SELF = 0x00000800,
|
|
|
|
|
SPELL_ATTR0_CU_NEGATIVE_EFF0 = 0x00001000,
|
|
|
|
|
SPELL_ATTR0_CU_NEGATIVE_EFF1 = 0x00002000,
|
|
|
|
|
SPELL_ATTR0_CU_NEGATIVE_EFF2 = 0x00004000,
|
|
|
|
|
SPELL_ATTR0_CU_IGNORE_ARMOR = 0x00008000,
|
|
|
|
|
SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER = 0x00010000,
|
|
|
|
|
SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET = 0x00020000,
|
|
|
|
|
|
|
|
|
|
SPELL_ATTR0_CU_NEGATIVE = SPELL_ATTR0_CU_NEGATIVE_EFF0 | SPELL_ATTR0_CU_NEGATIVE_EFF1 | SPELL_ATTR0_CU_NEGATIVE_EFF2,
|
2011-07-26 23:00:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class SpellImplicitTargetInfo
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
Targets _target;
|
|
|
|
|
public:
|
|
|
|
|
SpellImplicitTargetInfo() {}
|
|
|
|
|
SpellImplicitTargetInfo(uint32 target);
|
|
|
|
|
|
|
|
|
|
bool IsArea() const;
|
|
|
|
|
SpellSelectTargetTypes GetType() const;
|
2011-08-17 11:30:05 +02:00
|
|
|
SpellTargetSelectionCategories GetSelectionCategory() const;
|
|
|
|
|
SpellTargetReferenceTypes GetReferenceType() const;
|
|
|
|
|
SpellTargetObjectTypes GetObjectType() const;
|
|
|
|
|
SpellTargetSelectionCheckTypes GetSelectionCheckType() const;
|
|
|
|
|
SpellTargetDirectionTypes GetDirectionType() const;
|
|
|
|
|
float CalcDirectionAngle() const;
|
2011-07-26 23:00:23 +02:00
|
|
|
|
2011-07-27 12:35:59 +02:00
|
|
|
Targets GetTarget() const;
|
2011-07-26 23:00:23 +02:00
|
|
|
|
|
|
|
|
// temporarily avalible to public
|
|
|
|
|
static bool IsPosition(uint32 targetType);
|
|
|
|
|
static SpellSelectTargetTypes Type[TOTAL_SPELL_TARGETS];
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
static bool InitStaticData();
|
|
|
|
|
static void InitTypeData();
|
|
|
|
|
|
|
|
|
|
static bool Init;
|
2011-08-17 11:30:05 +02:00
|
|
|
|
|
|
|
|
struct StaticData
|
|
|
|
|
{
|
|
|
|
|
SpellTargetObjectTypes ObjectType;
|
|
|
|
|
SpellTargetReferenceTypes ReferenceType;
|
|
|
|
|
SpellTargetSelectionCategories SelectionCategory;
|
|
|
|
|
SpellTargetSelectionCheckTypes SelectionCheckType;
|
|
|
|
|
SpellTargetDirectionTypes DirectionType;
|
|
|
|
|
};
|
|
|
|
|
static StaticData _data[TOTAL_SPELL_TARGETS];
|
2011-07-26 23:00:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class SpellEffectInfo
|
|
|
|
|
{
|
|
|
|
|
SpellInfo const* _spellInfo;
|
|
|
|
|
uint8 _effIndex;
|
|
|
|
|
public:
|
|
|
|
|
uint32 Effect;
|
|
|
|
|
uint32 ApplyAuraName;
|
|
|
|
|
uint32 Amplitude;
|
|
|
|
|
int32 DieSides;
|
|
|
|
|
float RealPointsPerLevel;
|
|
|
|
|
int32 BasePoints;
|
|
|
|
|
float PointsPerComboPoint;
|
|
|
|
|
float ValueMultiplier;
|
|
|
|
|
float DamageMultiplier;
|
|
|
|
|
float BonusMultiplier;
|
|
|
|
|
int32 MiscValue;
|
|
|
|
|
int32 MiscValueB;
|
|
|
|
|
Mechanics Mechanic;
|
|
|
|
|
SpellImplicitTargetInfo TargetA;
|
|
|
|
|
SpellImplicitTargetInfo TargetB;
|
|
|
|
|
SpellRadiusEntry const* RadiusEntry;
|
|
|
|
|
uint32 ChainTarget;
|
|
|
|
|
uint32 ItemType;
|
|
|
|
|
uint32 TriggerSpell;
|
|
|
|
|
flag96 SpellClassMask;
|
|
|
|
|
|
|
|
|
|
SpellEffectInfo() {}
|
|
|
|
|
SpellEffectInfo(SpellEntry const* spellEntry, SpellInfo const* spellInfo, uint8 effIndex);
|
|
|
|
|
|
|
|
|
|
bool IsEffect() const;
|
|
|
|
|
bool IsEffect(SpellEffects effectName) const;
|
|
|
|
|
bool IsAura() const;
|
|
|
|
|
bool IsAura(AuraType aura) const;
|
|
|
|
|
bool IsArea() const;
|
|
|
|
|
bool IsAreaAuraEffect() const;
|
|
|
|
|
bool IsFarUnitTargetEffect() const;
|
|
|
|
|
bool IsFarDestTargetEffect() const;
|
|
|
|
|
bool IsUnitOwnedAuraEffect() const;
|
|
|
|
|
|
|
|
|
|
int32 CalcValue(Unit const* caster = NULL, int32 const* basePoints = NULL, Unit const* target = NULL) 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;
|
|
|
|
|
float CalcRadius(Unit* caster = NULL, Spell* = NULL) const;
|
|
|
|
|
|
|
|
|
|
SpellEffectTargetTypes GetRequiredTargetType() const;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
static bool InitStaticData();
|
|
|
|
|
static void InitRequiredTargetTypeData();
|
|
|
|
|
|
|
|
|
|
static bool Init;
|
|
|
|
|
static SpellEffectTargetTypes RequiredTargetType[TOTAL_SPELL_EFFECTS];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class SpellInfo
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
uint32 Id;
|
|
|
|
|
uint32 Category;
|
|
|
|
|
uint32 Dispel;
|
|
|
|
|
uint32 Mechanic;
|
|
|
|
|
uint32 Attributes;
|
|
|
|
|
uint32 AttributesEx;
|
|
|
|
|
uint32 AttributesEx2;
|
|
|
|
|
uint32 AttributesEx3;
|
|
|
|
|
uint32 AttributesEx4;
|
|
|
|
|
uint32 AttributesEx5;
|
|
|
|
|
uint32 AttributesEx6;
|
|
|
|
|
uint32 AttributesEx7;
|
|
|
|
|
uint32 AttributesCu;
|
|
|
|
|
uint32 Stances;
|
|
|
|
|
uint32 StancesNot;
|
|
|
|
|
uint32 Targets;
|
|
|
|
|
uint32 TargetCreatureType;
|
|
|
|
|
uint32 RequiresSpellFocus;
|
|
|
|
|
uint32 FacingCasterFlags;
|
|
|
|
|
uint32 CasterAuraState;
|
|
|
|
|
uint32 TargetAuraState;
|
|
|
|
|
uint32 CasterAuraStateNot;
|
|
|
|
|
uint32 TargetAuraStateNot;
|
|
|
|
|
uint32 CasterAuraSpell;
|
|
|
|
|
uint32 TargetAuraSpell;
|
|
|
|
|
uint32 ExcludeCasterAuraSpell;
|
|
|
|
|
uint32 ExcludeTargetAuraSpell;
|
|
|
|
|
SpellCastTimesEntry const* CastTimeEntry;
|
|
|
|
|
uint32 RecoveryTime;
|
|
|
|
|
uint32 CategoryRecoveryTime;
|
|
|
|
|
uint32 StartRecoveryCategory;
|
|
|
|
|
uint32 StartRecoveryTime;
|
|
|
|
|
uint32 InterruptFlags;
|
|
|
|
|
uint32 AuraInterruptFlags;
|
|
|
|
|
uint32 ChannelInterruptFlags;
|
|
|
|
|
uint32 ProcFlags;
|
|
|
|
|
uint32 ProcChance;
|
|
|
|
|
uint32 ProcCharges;
|
|
|
|
|
uint32 MaxLevel;
|
|
|
|
|
uint32 BaseLevel;
|
|
|
|
|
uint32 SpellLevel;
|
|
|
|
|
SpellDurationEntry const* DurationEntry;
|
|
|
|
|
uint32 PowerType;
|
|
|
|
|
uint32 ManaCost;
|
|
|
|
|
uint32 ManaCostPerlevel;
|
|
|
|
|
uint32 ManaPerSecond;
|
|
|
|
|
uint32 ManaPerSecondPerLevel;
|
|
|
|
|
uint32 ManaCostPercentage;
|
|
|
|
|
uint32 RuneCostID;
|
|
|
|
|
SpellRangeEntry const* RangeEntry;
|
|
|
|
|
float Speed;
|
|
|
|
|
uint32 StackAmount;
|
|
|
|
|
uint32 Totem[2];
|
|
|
|
|
int32 Reagent[MAX_SPELL_REAGENTS];
|
|
|
|
|
uint32 ReagentCount[MAX_SPELL_REAGENTS];
|
|
|
|
|
int32 EquippedItemClass;
|
|
|
|
|
int32 EquippedItemSubClassMask;
|
|
|
|
|
int32 EquippedItemInventoryTypeMask;
|
|
|
|
|
uint32 TotemCategory[2];
|
|
|
|
|
uint32 SpellVisual[2];
|
|
|
|
|
uint32 SpellIconID;
|
|
|
|
|
uint32 ActiveIconID;
|
|
|
|
|
char* SpellName[16];
|
|
|
|
|
char* Rank[16];
|
|
|
|
|
uint32 MaxTargetLevel;
|
|
|
|
|
uint32 MaxAffectedTargets;
|
|
|
|
|
uint32 SpellFamilyName;
|
|
|
|
|
flag96 SpellFamilyFlags;
|
|
|
|
|
uint32 DmgClass;
|
|
|
|
|
uint32 PreventionType;
|
|
|
|
|
int32 AreaGroupId;
|
|
|
|
|
uint32 SchoolMask;
|
|
|
|
|
SpellEffectInfo Effects[MAX_SPELL_EFFECTS];
|
|
|
|
|
SpellChainNode const* ChainEntry;
|
|
|
|
|
|
|
|
|
|
SpellInfo(SpellEntry const* spellEntry);
|
|
|
|
|
|
|
|
|
|
bool HasEffect(SpellEffects effect) const;
|
|
|
|
|
bool HasAura(AuraType aura) const;
|
|
|
|
|
bool HasAreaAuraEffect() const;
|
|
|
|
|
|
|
|
|
|
bool IsExplicitDiscovery() const;
|
|
|
|
|
bool IsLootCrafting() const;
|
|
|
|
|
bool IsQuestTame() const;
|
|
|
|
|
bool IsProfessionOrRiding() const;
|
|
|
|
|
bool IsProfession() const;
|
|
|
|
|
bool IsPrimaryProfession() const;
|
|
|
|
|
bool IsPrimaryProfessionFirstRank() const;
|
|
|
|
|
bool IsAbilityLearnedWithProfession() const;
|
|
|
|
|
bool IsAbilityOfSkillType(uint32 skillType) const;
|
|
|
|
|
|
|
|
|
|
bool IsAOE() const;
|
|
|
|
|
bool IsRequiringSelectedTarget() const;
|
|
|
|
|
|
|
|
|
|
bool IsPassive() const;
|
|
|
|
|
bool IsAutocastable() const;
|
|
|
|
|
bool IsStackableWithRanks() const;
|
|
|
|
|
bool IsPassiveStackableWithRanks() const;
|
|
|
|
|
bool IsMultiSlotAura() const;
|
|
|
|
|
bool IsDeathPersistent() const;
|
|
|
|
|
bool IsRequiringDeadTarget() const;
|
|
|
|
|
bool IsAllowingDeadTarget() const;
|
|
|
|
|
bool CanBeUsedInCombat() const;
|
|
|
|
|
bool IsPositive() const;
|
|
|
|
|
bool IsPositiveEffect(uint8 effIndex) const;
|
|
|
|
|
bool IsChanneled() const;
|
|
|
|
|
bool NeedsComboPoints() const;
|
|
|
|
|
bool IsBreakingStealth() const;
|
|
|
|
|
bool IsRangedWeaponSpell() const;
|
|
|
|
|
bool IsAutoRepeatRangedSpell() const;
|
|
|
|
|
|
|
|
|
|
bool IsAffectedBySpellMod(SpellModifier* mod) const;
|
|
|
|
|
|
|
|
|
|
bool CanPierceImmuneAura(SpellInfo const* aura) const;
|
|
|
|
|
bool CanDispelAura(SpellInfo const* aura) const;
|
|
|
|
|
|
|
|
|
|
bool IsSingleTarget() const;
|
|
|
|
|
bool IsSingleTargetWith(SpellInfo const* spellInfo) const;
|
|
|
|
|
bool IsAuraExclusiveBySpecificWith(SpellInfo const* spellInfo) const;
|
|
|
|
|
bool IsAuraExclusiveBySpecificPerCasterWith(SpellInfo const* spellInfo) const;
|
|
|
|
|
|
|
|
|
|
SpellCastResult CheckShapeshift(uint32 form) const;
|
|
|
|
|
SpellCastResult CheckLocation(uint32 map_id, uint32 zone_id, uint32 area_id, Player const* player = NULL) const;
|
|
|
|
|
|
|
|
|
|
SpellSchoolMask GetSchoolMask() const;
|
|
|
|
|
uint32 GetAllEffectsMechanicMask() const;
|
|
|
|
|
uint32 GetEffectMechanicMask(uint8 effIndex) const;
|
|
|
|
|
Mechanics GetEffectMechanic(uint8 effIndex) const;
|
|
|
|
|
uint32 GetDispelMask() const;
|
|
|
|
|
static uint32 GetDispelMask(DispelType type);
|
|
|
|
|
|
|
|
|
|
AuraStateType GetAuraState() const;
|
|
|
|
|
SpellSpecificType GetSpellSpecific() const;
|
|
|
|
|
|
|
|
|
|
float GetMinRange(bool positive = false) const;
|
|
|
|
|
float GetMaxRange(bool positive = false) const;
|
|
|
|
|
|
|
|
|
|
int32 GetDuration() const;
|
|
|
|
|
int32 GetMaxDuration() const;
|
|
|
|
|
|
|
|
|
|
uint32 CalcCastTime(Unit* caster = NULL, Spell* spell = NULL) const;
|
|
|
|
|
uint32 GetRecoveryTime() const;
|
|
|
|
|
|
|
|
|
|
uint32 CalcPowerCost(Unit const* caster, SpellSchoolMask schoolMask) const;
|
|
|
|
|
|
|
|
|
|
bool IsRanked() const;
|
|
|
|
|
uint8 GetRank() const;
|
|
|
|
|
SpellInfo const* GetFirstRankSpell() const;
|
|
|
|
|
SpellInfo const* GetLastRankSpell() const;
|
|
|
|
|
SpellInfo const* GetNextRankSpell() const;
|
|
|
|
|
SpellInfo const* GetPrevRankSpell() const;
|
|
|
|
|
SpellInfo const* GetAuraRankForLevel(uint8 level) const;
|
|
|
|
|
bool IsRankOf(SpellInfo const* spellInfo) const;
|
|
|
|
|
bool IsDifferentRankOf(SpellInfo const* spellInfo) const;
|
|
|
|
|
bool IsHighRankOf(SpellInfo const* spellInfo) const;
|
|
|
|
|
|
|
|
|
|
// loading helpers
|
|
|
|
|
bool _IsPositiveEffect(uint8 effIndex, bool deep) const;
|
|
|
|
|
bool _IsPositiveSpell() const;
|
|
|
|
|
static bool _IsPositiveTarget(uint32 targetA, uint32 targetB);
|
|
|
|
|
};
|
|
|
|
|
|
2011-08-15 11:46:48 +02:00
|
|
|
#endif // _SPELLINFO_H
|