38 std::list<AuraType>& auraImmunityList,
uint32& mechanicImmunityMask)
52 void AppendDefaultAuraStateImmunityTypes(
int32 miscValue, std::list<AuraType>& auraImmunityList)
58 for (
uint8 i = 0; i < auraTypeCount; ++i)
59 auraImmunityList.push_back(
AuraType(auraTypes[i]));
69 std::list <AuraType> aura_immunity_list;
70 uint32 mechanic_immunity_list = 0;
75 ApplyAuraStateImmunityRule(target,
GetId(), *immunityRule, apply, aura_immunity_list, mechanic_immunity_list);
77 if (aura_immunity_list.empty())
78 AppendDefaultAuraStateImmunityTypes(miscVal, aura_immunity_list);
81 for (std::list <AuraType>::iterator iter = aura_immunity_list.begin(); iter != aura_immunity_list.end(); ++iter)
87 for (std::list <AuraType>::iterator iter = aura_immunity_list.begin(); iter != aura_immunity_list.end(); ++iter)
104 for (
uint8 i = 0; i < immunityRule->MechanicCount; ++i)
136 bg->EventPlayerDroppedFlag(player);
171 bool banishFound =
false;
173 for (Unit::AuraEffectList::const_iterator i = banishAuras.begin(); i != banishAuras.end(); ++i)
199 for (Unit::AuraApplicationMap::iterator iter = Auras.begin(); iter != Auras.end();)
201 SpellInfo const* spell = iter->second->GetBase()->GetSpellInfo();
204 && !iter->second->IsPositive()
257 float value = float(
GetAmount() - amount);
408 SF_LOG_ERROR(
"spells",
"WARNING: Misc Value for SPELL_AURA_MOD_PERCENT_STAT not valid");
476 bool alive = target->
IsAlive();
565 double healthPercentage = (double)oldhealth / (
double)target->
GetMaxHealth();
721 for (
int i = 0; i < maxAttackType; ++i)
983 for (
int i = 0; i < maxAttackType; ++i)
1054 pet->UpdateAttackPowerAndDamage();
1070 for (
int i = 0; i < maxAttackType; ++i)
#define SF_LOG_ERROR(filterType__,...)
#define CLASSMASK_WAND_USERS
@ SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY
@ SPELL_ATTR2_DAMAGE_REDUCED_SHIELD
@ SPELL_SCHOOL_MASK_NORMAL
@ SPELL_SCHOOL_MASK_MAGIC
@ SPELL_SCHOOL_MASK_SPELL
@ SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT
@ SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE
@ AURA_EFFECT_HANDLE_STAT
@ AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK
@ AURA_EFFECT_HANDLE_REAL
@ AURA_INTERRUPT_FLAG_IMMUNE_OR_LOST_SELECTION
@ UNIT_MOD_DAMAGE_OFFHAND
@ UNIT_MOD_RESISTANCE_START
@ UNIT_MOD_DAMAGE_MAINHAND
@ UNIT_MOD_ATTACK_POWER_RANGED
#define MAX_COMBAT_RATING
@ OFFHAND_CRIT_PERCENTAGE
@ UNIT_FIELD_POWER_COST_MODIFIER
@ UNIT_FIELD_POWER_COST_MULTIPLIER
@ PLAYER_FIELD_MOD_DAMAGE_DONE_POS
@ PLAYER_FIELD_MOD_TARGET_RESISTANCE
@ PLAYER_FIELD_MOD_DAMAGE_DONE_PERCENT
@ PLAYER_FIELD_MOD_DAMAGE_DONE_NEG
@ PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE
T CalculatePct(T base, U pct)
void HandleAuraModBlockPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModHealingDone(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModRatingFromStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModDispelImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
SpellInfo const * GetSpellInfo() const
AuraType GetAuraType() const
void HandleModDamagePercentDone(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModEffectImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPowerCostPCT(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModCombatSpeedPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModRangedAttackPowerPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseHealthPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModResistanceExclusive(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModRangedAttackPower(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModDodgePercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModDmgImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModDamageDone(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModAttackPowerPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseHealth(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModSchoolImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModMeleeSpeedPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPowerRegen(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModWeaponCritPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModRating(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraIncreaseBaseHealthPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModRangedHaste(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModBaseResistance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPowerCost(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModStateImmunityMask(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPercentStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModStateImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetMiscValueB() const
void HandleAuraModExpertise(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModOffhandDamagePercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModMeleeRangedSpeedPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModCastingSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseMaxHealth(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModTargetResistance(AuraApplication const *aurApp, uint8 mode, bool apply) const
int32 GetMiscValue() const
void HandleModTotalPercentStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModSpellCritChance(AuraApplication const *aurApp, uint8 mode, bool apply) const
uint32 GetEffIndex() const
void HandleAuraModParryPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseMaxPowerFlat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModSpellDamagePercentFromStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleShieldBlockValue(AuraApplication const *aurApp, uint8 mode, bool apply) const
SpellInfo const *const m_spellInfo
void HandleAuraModAttackPower(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModBaseResistancePCT(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModSpellHealingPercentFromStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModSpellHitChance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModStat(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModRegenInterrupt(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModResistance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModResistancePercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModMechanicImmunity(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModPowerRegenPCT(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModAttackSpeed(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModCritPct(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleModHitChance(AuraApplication const *aurApp, uint8 mode, bool apply) const
void HandleAuraModIncreaseEnergyPercent(AuraApplication const *aurApp, uint8 mode, bool apply) const
void ApplyModSignedFloatValue(uint16 index, float val, bool apply)
void ApplyModInt32Value(uint16 index, int32 val, bool apply)
void ApplyModUInt32Value(uint16 index, int32 val, bool apply)
void ApplyPercentModFloatValue(uint16 index, float val, bool apply)
void UpdateParryPercentage()
void UpdateAllSpellCritChances()
void UpdateRuneRegen(RuneType rune)
void UpdateDodgePercentage()
void ApplyRatingMod(CombatRating cr, int32 value, bool apply)
void UpdateBlockPercentage()
bool InBattleground() const
void _ApplyWeaponDependentAuraDamageMod(Item *item, WeaponAttackType attackType, AuraEffect const *aura, bool apply)
void UpdateSpellHitChances()
void UpdateExpertise(WeaponAttackType attType)
void _ApplyWeaponDependentAuraCritMod(Item *item, WeaponAttackType attackType, AuraEffect const *aura, bool apply)
Battleground * GetBattleground() const
void UpdateSpellDamageAndHealingBonus()
void UpdateMeleeHitChances()
void UpdateRangedHitChances()
Item * GetWeaponForAttack(WeaponAttackType attackType, bool useable=false) const
void HandleBaseModValue(BaseModGroup modGroup, BaseModType modType, float amount, bool apply)
SpellSchoolMask GetSchoolMask() const
int32 ModifyHealth(int32 val)
void ClearUnitState(uint32 f)
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
float GetHealthPct() const
virtual void UpdateDamagePhysical(WeaponAttackType attType)=0
int32 GetMaxPositiveAuraModifierByMiscMask(AuraType auratype, uint32 misc_mask, const AuraEffect *except=NULL) const
void ApplyResistanceBuffModsPercentMod(SpellSchools school, bool positive, float val, bool apply)
void RemoveAurasWithMechanic(uint32 mechanic_mask, AuraRemoveMode removemode=AURA_REMOVE_BY_DEFAULT, uint32 except=0)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void RemoveAurasWithInterruptFlags(uint32 flag, uint32 except=0)
std::multimap< uint32, AuraApplication * > AuraApplicationMap
void ApplyStatBuffMod(Stats stat, float val, bool apply)
uint32 GetMaxHealth() const
float m_modRangedHitChance
void ApplyStatPercentBuffMod(Stats stat, float val, bool apply)
void ApplyAttackTimePercentMod(WeaponAttackType att, float val, bool apply)
void SetHealth(uint32 val)
void AddUnitState(uint32 f)
bool HandleStatModifier(UnitMods unitMod, UnitModifierType modifierType, float amount, bool apply)
int32 m_baseSpellCritChance
float m_modMeleeHitChance
int32 ModifyPowerPct(Powers power, float pct, bool apply=true)
void RemoveAurasByType(AuraType auraType, uint64 casterGUID=0, Aura *except=NULL, bool negative=true, bool positive=true)
void ApplyCastTimePercentMod(float val, bool apply)
void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply)
uint32 getClassMask() const
uint32 CountPctFromMaxHealth(int32 pct) const
AuraApplicationMap & GetAppliedAuras()
std::list< AuraEffect * > AuraEffectList
void ApplySpellDispelImmunity(const SpellInfo *spellProto, DispelType type, bool apply)
float m_modSpellHitChance
Guardian * GetGuardianPet() const
void ApplyResistanceBuffModsMod(SpellSchools school, bool positive, float val, bool apply)
uint8 GetDefaultAuraStateImmunityAuraTypes(int32 miscValue, uint32 *auraTypes, uint8 maxAuraTypes)
uint8 const MAX_AURA_IMMUNITY_AURA_TYPES
uint32 GetAuraImmunityMechanicMask(AuraImmunityMechanicMask mechanicMask)
MechanicImmunitySpellRule const * GetMechanicImmunitySpellRule(uint32 auraSpellId)
AuraStateImmunityRule const * GetAuraStateImmunityRule(int32 miscValue, uint32 auraSpellId, int32 amount)
AuraImmunityMechanicMask MechanicMask