49 for (
uint8 i = 0; i < spellCount; ++i)
51 uint32 spellId = spellIds[i];
57 target->
CastSpell(target, spellId,
true, NULL,
this);
65 for (PlayerSpellMap::const_iterator itr = sp_list.begin(); itr != sp_list.end(); ++itr)
70 bool isShapeshiftBoostSpell =
false;
71 for (
uint8 i = 0; i < spellCount; ++i)
73 if (itr->first == spellIds[i])
75 isShapeshiftBoostSpell =
true;
80 if (isShapeshiftBoostSpell)
91 target->
CastSpell(target, itr->first,
true, NULL,
this);
106 target->
CastSpell(target, glyph->SpellId,
true, NULL,
this);
117 target->
CastSpell(target, triggeredSpellId,
true, NULL,
this);
127 target->
CastSpell(target, spellId,
true, NULL,
this);
136 for (
uint8 i = 0; i < spellCount; ++i)
143 for (Unit::AuraEffectList::const_iterator itr = shapeshifts.begin(); itr != shapeshifts.end(); ++itr)
153 for (Unit::AuraApplicationMap::iterator itr = tAuras.begin(); itr != tAuras.end();)
159 if (itr->second->GetBase()->IsRemovedOnShapeLost(target) && !(itr->second->GetBase()->GetSpellInfo()->Stances & newStance))
232 for (Unit::AuraEffectList::const_iterator i = invisAuras.begin(); i != invisAuras.end(); ++i)
414 player->UpdatePhasing();
428 for (
auto phase : phases)
440 player->UpdatePhasing();
597 target->
CastSpell(target, 37316,
true, NULL, dummy);
602 target->
CastSpell(target, 37325,
true, NULL, dummy);
677 SF_LOG_ERROR(
"spells",
"Auras: unknown creature id = %d (only need its modelid) From Spell Aura Transform in Spell ID = %d",
GetMiscValue(),
GetId());
739 sObjectMgr->GetCreatureModelRandomGender(&displayID);
770 if (!caster || caster == target)
807 for (UnitList::iterator iter = targets.begin(); iter != targets.end(); ++iter)
814 if ((*iter)->GetCurrentSpell(i)
815 && (*iter)->GetCurrentSpell(i)->m_targets.GetUnitTargetGUID() == target->
GetGUID())
855 creature->InitializeReactState();
1154 pet->InitTalentForLevel();
DBCStorage< SpellShapeshiftFormEntry > sSpellShapeshiftFormStore(SpellShapeshiftFormfmt)
std::set< uint32 > const & GetPhasesForGroup(uint32 group)
DBCStorage< GlyphPropertiesEntry > sGlyphPropertiesStore(GlyphPropertiesfmt)
#define MAX_SHAPESHIFT_SPELLS
#define SF_LOG_ERROR(filterType__,...)
bool IS_PLAYER_GUID(uint64 guid)
UNORDERED_MAP< uint32, PlayerSpell * > PlayerSpellMap
@ PLAYER_FIELD_BYTE_TRACK_STEALTHED
@ PLAYER_FLAGS_ALLOW_ONLY_ABILITY
@ EQUIPMENT_SLOT_MAINHAND
#define INVENTORY_SLOT_BAG_0
@ SERVERSIDE_VISIBILITY_GHOST
@ SPELL_ATTR0_HIDDEN_CLIENTSIDE
@ SPELL_PREVENTION_TYPE_SILENCE
@ UNIT_DYNFLAG_TRACK_UNIT
#define MAX_GLYPH_SLOT_INDEX
@ SPELL_ATTR8_MASTERY_SPECIALIZATION
@ SPELL_AURA_MOD_DISARM_RANGED
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_MOD_STEALTH_DETECT
@ SPELL_AURA_MOD_INVISIBILITY
@ SPELL_AURA_MOD_DISARM_OFFHAND
@ SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT
@ SPELL_AURA_ALLOW_ONLY_ABILITY
@ SPELL_AURA_MOD_PACIFY_SILENCE
@ SPELL_AURA_MOD_INVISIBILITY_DETECT
@ SPELL_AURA_MOD_UNATTACKABLE
@ SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED
@ SPELL_AURA_MOD_SKILL_TALENT
@ AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK
@ AURA_EFFECT_HANDLE_CHANGE_AMOUNT_SEND_FOR_CLIENT_MASK
@ AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK
@ AURA_EFFECT_HANDLE_REAL
@ AURA_EFFECT_HANDLE_SKILL
@ AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION
#define CURRENT_FIRST_NON_MELEE_SPELL
@ UNIT_STAND_FLAGS_UNTRACKABLE
#define CURRENT_MAX_SPELL
@ FORM_SPIRITOFREDEMPTION
std::list< Unit * > UnitList
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_DISABLE_POWERS
@ UNIT_FLAG2_MIRROR_IMAGE
@ UNIT_FLAG2_DISARM_OFFHAND
@ UNIT_FLAG2_DISARM_RANGED
@ UNIT_FIELD_MOUNT_DISPLAY_ID
@ OBJECT_FIELD_DYNAMIC_FLAGS
@ PLAYER_FIELD_TRACK_RESOURCE_MASK
@ PLAYER_FIELD_LIFETIME_MAX_RANK
@ PLAYER_FIELD_TRACK_CREATURE_MASK
@ PLAYER_FIELD_PLAYER_FLAGS
void ApplyPercentModFloatVar(float &var, float val, bool apply)
AuraRemoveMode GetRemoveMode() const
void HandleAuraModShapeshift(AuraApplication const *aurApp, uint8 mode, bool apply) const
SpellInfo const * GetSpellInfo() const
AuraType GetAuraType() const
void HandleAuraTrackResources(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraCloneCaster(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModPetTalentsPoints(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleSpiritOfRedemption(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModInvisibilityDetect(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleShapeshiftBoosts(Unit *target, bool apply) const
void HandleAuraModSkill(AuraApplication const *aurApp, uint8 mode, bool apply) const
AuraEffect(Aura *base, uint8 effIndex, int32 *baseAmount, Unit *caster)
void HandleAuraGhost(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraAllowOnlyAbility(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetMiscValueB() const
void HandleAuraTransform(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModDisarm(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraTrackStealthed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModUnattackable(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModStealthLevel(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetMiscValue() const
void HandleModStealthDetect(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModScale(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModStalked(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleFeignDeath(AuraApplication const *aurApp, uint8 mode, bool apply) const
SpellInfo const *const m_spellInfo
void HandleAuraModSilence(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraUntrackable(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModPacifyAndSilence(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePhase(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModStealth(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint64 GetCasterGUID() const
void HandleAuraModPacify(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraTrackCreatures(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandlePhaseGroup(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModInvisibility(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint8 GetCurrentEquipmentId() const
void AddFlag(FLAG_TYPE flag)
void DelFlag(FLAG_TYPE flag)
void AddValue(FLAG_TYPE flag, T_VALUES value)
void SetValue(FLAG_TYPE flag, T_VALUES value)
float GetVisibilityRange() const
float GetObjectScale() const
void SetFlag(uint16 index, uint32 newFlag)
void RemoveFlag(uint16 index, uint32 oldFlag)
void ApplyModFlag(uint16 index, uint32 flag, bool apply)
void RemoveByteFlag(uint16 index, uint8 offset, uint8 newFlag)
virtual void SetObjectScale(float scale)
void SetUInt32Value(uint16 index, uint32 value)
void SetByteFlag(uint16 index, uint8 offset, uint8 newFlag)
static uint32 ChooseDisplayId(CreatureTemplate const *cinfo, CreatureData const *data=NULL)
void AddTemporarySpell(uint32 spellId)
void setRegenTimerCount(uint32 time)
void RemoveTemporarySpell(uint32 spellId)
void _ApplyWeaponDamage(uint8 slot, ItemTemplate const *proto, ScalingStatValuesEntry const *ssv, bool apply)
Item * GetItemByPos(uint16 pos) const
uint32 GetGlyph(uint8 spec, uint8 slot) const
bool IsCurrentSpecMasterySpell(SpellInfo const *spellInfo) const
PlayerSpellMap const & GetSpellMap() const
void InitDataForForm(bool reapplyMods=false)
void _ApplyWeaponDependentAuraMods(Item *item, WeaponAttackType attackType, bool apply)
void ModifySkillBonus(uint32 skillid, int32 val, bool talent)
uint8 GetActiveSpec() const
bool HasSpell(uint32 spell) const override
void RemoveSpellCooldown(uint32 spell_id, bool update=false)
static WeaponAttackType GetAttackBySlot(uint8 slot)
void ClearUnitState(uint32 f)
void RemoveOwnedAura(AuraMap::iterator &i, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
virtual void UpdateDamagePhysical(WeaponAttackType attType)=0
void CombatStop(bool includingCast=false)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void UpdateObjectVisibility(bool forced=true) override
bool SetPhased(uint32 id, bool update, bool apply) OVERRIDE
uint32 GetModelForForm(ShapeshiftForm form) const
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void RemoveAurasWithInterruptFlags(uint32 flag, uint32 except=0)
void SetPower(Powers power, int32 val)
void RemoveAurasDueToSpell(uint32 spellId, uint64 casterGUID=0, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
std::multimap< uint32, AuraApplication * > AuraApplicationMap
bool IsPolymorphed() const
ShapeshiftForm GetShapeshiftForm() const
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
void SetHealth(uint32 val)
bool IsStandState() const
bool HasAura(uint32 spellId, uint64 casterGUID=0, uint64 itemCasterGUID=0, uint32 reqEffMask=0) const
void AddUnitState(uint32 f)
bool CanUseAttackType(WeaponAttackType attacktype) const
uint32 GetDisplayId() const
uint32 GetNativeDisplayId() const
void RemoveStandFlags(uint8 flags)
bool HasAuraType(AuraType auraType) const
void setTransForm(uint32 spellid)
HostileRefManager & getHostileRefManager()
void RemoveAurasByType(AuraType auraType, uint64 casterGUID=0, Aura *except=NULL, bool negative=true, bool positive=true)
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, uint64 casterGUID=0) const
virtual void SetDisplayId(uint32 modelId)
int32 GetPower(Powers power) const
void FinishSpell(CurrentSpellTypes spellType, bool ok=true)
bool IsInFeralForm() const
uint32 GetMountID() const
uint32 getTransForm() const
Powers getPowerType() const
virtual void setDeathState(DeathState s)
AuraApplicationMap & GetAppliedAuras()
std::list< AuraEffect * > AuraEffectList
void setPowerType(Powers power)
void SetStandState(uint8 state)
void SetShapeshiftForm(ShapeshiftForm form)
void SetStandFlags(uint8 flags)
void RemoveMovementImpairingAuras()
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true)
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibility
FlaggedValuesArray32< int32, uint32, InvisibilityType, TOTAL_INVISIBILITY_TYPES > m_invisibilityDetect
void VisitNearbyObject(float const &radius, NOTIFIER ¬ifier) const
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealthDetect
FlaggedValuesArray32< int32, uint32, StealthType, TOTAL_STEALTH_TYPES > m_stealth
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibilityDetect
FlaggedValuesArray32< int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES > m_serverSideVisibility
uint32 GetGlyphOfPenguinDisplayId()
uint32 GetLeaderOfThePackTriggeredSpellId()
bool IsNonAttackablePacifyAura(uint32 auraSpellId)
uint8 GetShapeshiftBoostSpellIds(uint32 shapeshiftForm, uint32 *spellIds, uint8 maxSpellIds)
bool TransformDisplayRequiresPlayerRace(uint32 auraSpellId)
uint32 GetShadowFocusTriggeredSpellId()
uint32 GetDragonmawIllusionAuraSpellId()
uint32 GetShadowFocusAuraSpellId()
uint32 GetGlyphOfPenguinAuraSpellId()
uint32 GetNurturingInstinctTriggeredSpellId(uint32 auraSpellId)
uint32 GetUnknownTransformFallbackDisplayId()
uint32 GetDragonmawIllusionMountDisplayId()
uint32 GetTransformDisplayId(uint32 auraSpellId, uint8 race, uint8 gender)
uint32 GetLeaderOfThePackSpellId()
uint8 const MAX_SHAPESHIFT_BOOST_SPELLS
uint32 GetRandomValidModelId() const
uint32 stanceSpell[MAX_SHAPESHIFT_SPELLS]