311 if (!damageInfo || !damageInfo->
GetDamage())
478 heal = std::max(heal, pctOfMaxHealth);
522 canBeRecalculated =
true;
600 for (Unit::AuraEffectList::const_iterator i = mPeriodic.begin(); i != mPeriodic.end(); ++i)
614 if (countMin < countMax)
888 auto powerItr = std::find_if(breathOfSindragosa->
PowerCosts.begin(), breathOfSindragosa->
PowerCosts.end(),
889 [](
SpellPowerEntry const* power) { return power->PowerType == POWER_RUNIC_POWER && power->PowerPctPerSecond > 0.0f; });
890 if (powerItr != breathOfSindragosa->
PowerCosts.end())
bool roll_chance_f(float chance)
bool roll_chance_i(int chance)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ SPELL_CUSTOM_ERROR_MUST_BE_DEATH_KNIGHT
@ SPELL_FAILED_CUSTOM_ERROR
@ SPELL_FAILED_SPELL_UNAVAILABLE
@ SPELLFAMILY_DEATHKNIGHT
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_SCHOOL_HEAL_ABSORB
@ SPELL_AURA_MOD_INCREASE_HEALTH_2
@ SPELL_AURA_MOD_VERSATILITY
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_PERIODIC_DUMMY
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define SpellCheckCastFn(F)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraCheckEffectProcFn(F, I, N)
#define AuraEffectUpdatePeriodicFn(F, I, N)
#define AuraEffectAbsorbFn(F, I)
#define AuraCheckProcFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ CR_VERSATILITY_DAMAGE_DONE
T CalculatePct(T base, U pct)
SpellInfo const * GetSpellInfo() const
ObjectGuid GetCasterGUID() const
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< CheckEffectProcHandler > DoCheckEffectProc
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
HookList< EffectProcHandler > AfterEffectProc
HookList< EffectAbsorbHandler > AfterEffectAbsorb
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
HookList< EffectUpdatePeriodicHandler > OnEffectUpdatePeriodic
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
HookList< CheckProcHandler > DoCheckProc
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
int32 GetMaxDuration() const
int32 GetDuration() const
void SetDuration(int32 duration, bool withMods=false)
void SetMaxDuration(int32 duration)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
uint32 GetRuneCooldown(uint8 index) const
Unit * GetActionTarget() const
Spell const * GetProcSpell() const
SpellInfo const * GetSpellInfo() const
DamageInfo * GetDamageInfo() const
Unit * GetProcTarget() const
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
std::array< SpellPowerEntry const *, MAX_POWERS_PER_SPELL > PowerCosts
uint64 GetAllEffectsMechanicMask() const
int32 GetMaxDuration() const
SpellSchoolMask GetSchoolMask() const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
HookList< CastHandler > AfterCast
HookList< CheckCastHandler > OnCheckCast
HookList< HitHandler > OnHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
int32 GetEffectValue() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
void SetCustomCastResultMessage(SpellCustomErrors result)
void SetHitDamage(int32 damage)
HookList< EffectHandler > OnEffectLaunch
Optional< int32 > GetPowerTypeCostAmount(Powers power) const
bool IsTriggeredByAura(SpellInfo const *auraSpellInfo) const
static uint32 DealDamage(Unit *attacker, Unit *victim, uint32 damage, CleanDamage const *cleanDamage=nullptr, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=nullptr, bool durabilityLoss=true)
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
std::forward_list< AuraEffect * > AuraEffectList
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
int32 GetMaxPower(Powers power) const
void SendSpellNonMeleeDamageLog(SpellNonMeleeDamage const *log)
uint64 GetMaxHealth() const
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HasUnitMovementFlag(uint32 f) const
uint64 CountPctFromMaxHealth(int32 pct) const
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool CheckProc(ProcEventInfo &eventInfo)
void CalculateAmount(AuraEffect const *, int32 &amount, bool &)
void Trigger(AuraEffect *aurEff, DamageInfo &, uint32 &absorbAmount)
spell_dk_anti_magic_shell()
void HandleEffectRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *spellInfo) override
void HandleOnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
void HandleDummyTick(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
void HandleScript(SpellEffIndex effIndex)
SpellCastResult CheckClass()
SpellCastResult CheckCast()
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
void HandleCalcAmount(AuraEffect const *, int32 &amount, bool &)
bool Validate(SpellInfo const *spellInfo) override
std::array< uint32, LAST_SECONDS > _damagePerSecond
void HandleCalcAmount(AuraEffect const *, int32 &amount, bool &canBeRecalculated)
void Update(AuraEffect *)
bool CheckProc(ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
static constexpr uint8 LAST_SECONDS
void TriggerRecentlyUsedDeathStrike()
bool Validate(SpellInfo const *spellInfo) override
void HandleDummy(SpellEffIndex)
void HandleScriptEffect(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleDamage(SpellEffIndex)
bool Validate(SpellInfo const *spellInfo) override
void Suicide(SpellEffIndex)
void HandleScriptEffect(SpellEffIndex)
void HandleFrostFever(SpellEffIndex)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *aurEff, ProcEventInfo &)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool CheckProc(ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool CheckProc(AuraEffect const *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *spellInfo) override
void HandleProc(AuraEffect *, ProcEventInfo &procInfo)
bool Validate(SpellInfo const *) override
void CalculateAmount(AuraEffect const *, int32 &amount, bool &)
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
@ NPC_DK_DANCING_RUNE_WEAPON
static uint32 const ArmyTransforms[]
@ SPELL_DK_DEATH_STRIKE_OFFHAND
@ SPELL_DK_UNHOLY_GROUND_TALENT
@ SPELL_DK_ARMY_SPIKED_GHOUL_TRANSFORM
@ SPELL_DK_ARMY_NORTHREND_SKELETON_TRANSFORM
@ SPELL_DK_ARMY_FLESH_BEAST_TRANSFORM
@ SPELL_DK_ARMY_SKELETON_TRANSFORM
@ SPELL_DK_MARK_OF_BLOOD_HEAL
@ SPELL_DK_FESTERING_WOUND
@ SPELL_DK_VOLATILE_SHIELDING_DAMAGE
@ SPELL_DK_DEATH_AND_DECAY_DAMAGE
@ SPELL_DK_TIGHTENING_GRASP
@ SPELL_DK_UNHOLY_GROUND_HASTE
@ SPELL_DK_RAISE_DEAD_SUMMON
@ SPELL_DK_VOLATILE_SHIELDING
@ SPELL_DK_DEATH_GRIP_JUMP
@ SPELL_DK_BLOOD_SHIELD_ABSORB
@ SPELL_DK_DEATH_GRIP_DUMMY
@ SPELL_DK_KILLING_MACHINE_PROC
@ SPELL_DK_DEATH_GRIP_TAUNT
@ SPELL_DK_PILLAR_OF_FROST
@ SPELL_DK_BLOOD_SHIELD_MASTERY
@ SPELL_DK_GLYPH_OF_FOUL_MENAGERIE
@ SPELL_DK_DEATH_STRIKE_HEAL
@ SPELL_DK_SLUDGE_BELCHER
@ SPELL_DK_NECROSIS_EFFECT
@ SPELL_DK_GLYPH_OF_THE_SKELETON
@ SPELL_DK_RUNIC_POWER_ENERGIZE
@ SPELL_DK_BLINDING_SLEET_SLOW
@ SPELL_DK_ARMY_SUPER_ZOMBIE_TRANSFORM
@ SPELL_DK_RECENTLY_USED_DEATH_STRIKE
@ SPELL_DK_SLUDGE_BELCHER_SUMMON
@ SPELL_DK_DEATH_STRIKE_ENABLER
@ SPELL_DK_ARMY_GEIST_TRANSFORM
@ SPELL_DK_GLYPH_OF_THE_GEIST
@ SPELL_DK_OBLITERATION_RUNE_ENERGIZE
@ SPELL_DK_BREATH_OF_SINDRAGOSA
@ SPELL_DK_DEATH_COIL_DAMAGE
@ SPELL_DK_CORPSE_EXPLOSION_TRIGGERED
void AddSC_deathknight_spell_scripts()
void OnUnitEnter(Unit *unit) override
void OnUnitExit(Unit *unit) override
at_dk_death_and_decay(AreaTrigger *areatrigger)