204 .TriggeringAura = aurEff
232 AddPct(absorb, calmingCoalescence->GetAmount());
233 calmingCoalescence->GetBase()->Remove();
384 return singleTargetExplicitResult;
520 .TriggeringAura = aurEff
557 if (caster->IsValidAttackTarget(unit))
621 float newAmount = (base / (base + K));
622 newAmount *= multiplier;
625 float absorbAmount = float(dmgInfo.
GetDamage()) * newAmount;
626 if (absorbAmount > 0)
648 if (!effStaggerRemaining)
655 auraStagger->RefreshDuration();
656 effStaggerRemaining->
ChangeAmount(newAmount,
false,
true );
671 constexpr double StaggerHeavy = 0.6;
672 constexpr double StaggerModerate = 0.3;
704 totalEffect->ChangeAmount(total - tickDamage);
775 eff->ChangeAmount(tickDamage);
T GetEntry(std::unordered_map< uint32, T > const &map, CriteriaTreeEntry const *tree)
bool roll_chance(T chance)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_DEST_AREA_ALLY
@ TARGET_UNIT_TARGET_ENEMY
@ SPELL_EFFECT_TRIGGER_SPELL
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_FAILED_BAD_TARGETS
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_ENEMY_SPELL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MECHANIC_IMMUNITY
@ SPELL_AURA_MOD_MINIMUM_SPEED
@ SPELL_AURA_SCHOOL_ABSORB
@ SPELL_AURA_MOD_SPEED_NO_CONTROL
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED
double SpellEffectValue
This is a double instead of float to be able to store full range of int32.
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will not check if a current cast is in progress.
@ TRIGGERED_IGNORE_POWER_COST
Will ignore power and reagent cost.
@ TRIGGERED_IGNORE_GCD
Will ignore GCD.
@ TRIGGERED_DONT_REPORT_CAST_ERROR
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
@ TRIGGERED_IGNORE_CAST_TIME
Will always be instantly cast.
#define SpellObjectTargetSelectFn(F, I, N)
#define SpellCheckCastFn(F)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraCheckEffectProcFn(F, I, N)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraCheckProcFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ CURRENT_CHANNELED_SPELL
@ CR_VERSATILITY_HEALING_DONE
T CalculatePct(T base, U pct)
AreaTriggerAI(AreaTrigger *a, uint32 scriptId={}) noexcept
void InitSplines(std::vector< G3D::Vector3 > const &splinePoints, Optional< float > overrideSpeed={}, Optional< bool > speedIsTimeInSeconds={})
uint32 GetSpellId() const
AuraRemoveMode GetRemoveMode() const
void ChangeAmount(SpellEffectValue newAmount, bool mark=true, bool onStackOrReapply=false, AuraEffect const *triggeredBy=nullptr)
SpellInfo const * GetSpellInfo() const
int32 GetAmountAsInt() const
SpellEffectValue GetAmount() const
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
int32 GetDuration() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< CheckEffectProcHandler > DoCheckEffectProc
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
AuraEffect * GetEffect(uint8 effIndex) const
HookList< EffectAbsorbHandler > OnEffectAbsorb
Difficulty GetCastDifficulty() const
HookList< CheckProcHandler > DoCheckProc
HookList< EffectProcHandler > OnEffectProc
AuraEffect * GetEffect(uint32 index) const
void AbsorbDamage(uint32 amount)
SpellInfo const * GetSpellInfo() const
Movement::PointsArray const & GetPath() const
bool CalculatePath(float srcX, float srcY, float srcZ, float destX, float destY, float destZ, bool forceDest=false)
Unit * GetActionTarget() const
float GetMaxRange(bool positive=false, WorldObject const *caster=nullptr, Spell *spell=nullptr) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
uint32 GetExplicitTargetMask() const
SpellCastResult CheckExplicitTarget(WorldObject const *caster, WorldObject const *target, Item const *itemTarget=nullptr) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
HookList< CheckCastHandler > OnCheckCast
SpellEffectValue GetEffectValue() const
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
SpellValue const * GetSpellValue() const
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
HookList< EffectHandler > OnEffectLaunchTarget
Difficulty GetCastDifficulty() const
HookList< EffectHandler > OnEffectLaunch
Unit * GetExplTargetUnit() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellInfo const * GetSpellInfo() const
void SetSpellValue(CastSpellExtraArgsInit::SpellValueOverride const &value)
uint64 CountPctFromMaxHealth(float pct) const
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void UpdateSpeed(UnitMoveType mtype)
void SetSpeed(UnitMoveType mtype, float newValue)
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
uint64 GetMaxHealth() const
bool HasAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid caster=ObjectGuid::Empty) const
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HealthBelowPct(float pct) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
float GetStat(Stats stat) const
void RemoveMovementImpairingAuras(bool withRoot)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Position GetFirstCollisionPosition(float dist, float angle)
void FilterTargets(std::list< WorldObject * > &targets) const
bool Validate(SpellInfo const *) override
void AfterRemove(AuraEffect const *aurEff, AuraEffectHandleModes) const
bool Validate(SpellInfo const *) override
bool CheckProc(ProcEventInfo &eventInfo)
void HandleProc(AuraEffect *, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) override
void OnTick(AuraEffect const *)
void HandlePeriodicTick(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void CalculateAbsorb(SpellEffIndex)
void HandleEffectApply(SpellEffIndex) const
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
bool CheckProc(AuraEffect const *, ProcEventInfo &)
void HandlePeriodic(AuraEffect const *)
bool Validate(SpellInfo const *) override
void HandleProc(AuraEffect *, ProcEventInfo &)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *spellInfo) override
static void PreventDispel(SpellScript const &, WorldObject *&target)
void HandleDummy(SpellEffIndex effIndex)
static uint32 const BlackOxStatusEntry
bool Validate(SpellInfo const *spellInfo) override
SpellCastResult CheckExplicitTarget()
void HandleOnHit(SpellEffIndex) const
bool Validate(SpellInfo const *) override
void RestoreRunBackSpeed(AuraEffect const *, AuraEffectHandleModes)
void CalcImmunityAmount(AuraEffect const *, SpellEffectValue &amount, bool &)
void CalcMovementAmount(AuraEffect const *, SpellEffectValue &amount, bool &)
void ChangeRunBackSpeed(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
SpellCastResult CheckCast()
void HandleDummy(SpellEffIndex)
void HandleProc(AuraEffect const *aurEff, ProcEventInfo const &) const
bool CheckProc(ProcEventInfo const &eventInfo) const
bool Validate(SpellInfo const *spellInfo) override
bool Validate(SpellInfo const *) override
void OnPeriodicDamage(AuraEffect const *aurEff)
void OnReapply(AuraEffect const *aurEff, AuraEffectHandleModes)
void CastOrChangeTickDamage(SpellEffectValue tickDamage)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes mode)
void AbsorbMagic(AuraEffect *, DamageInfo &dmgInfo, uint32 &)
void Absorb(DamageInfo &dmgInfo, float multiplier)
void AbsorbNormal(AuraEffect *, DamageInfo &dmgInfo, uint32 &)
static void AddNewStagger(Unit *unit, uint32 staggerSpellId, SpellEffectValue staggerAmount)
bool Validate(SpellInfo const *) override
static uint32 GetStaggerSpellId(Unit const *unit, SpellEffectValue amount)
void AddAndRefreshStagger(float amount) const
void HandleRemoveImpairingAuras(SpellEffIndex)
void SelectRandomInjuredTargets(std::list< WorldObject * > &targets, size_t maxTargets, bool prioritizePlayers, Unit const *prioritizeGroupMembersOf)
void AddSC_monk_spell_scripts()
Aura * FindExistingStaggerEffect(Unit *unit)
@ SPELL_MONK_NO_FEATHER_FALL
@ SPELL_MONK_RENEWING_MIST
@ SPELL_MONK_STAGGER_LIGHT
@ SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD
@ SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK
@ SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHANNEL
@ SPELL_MONK_POWER_STRIKE_ENERGIZE
@ SPELL_MONK_BURST_OF_LIFE_HEAL
@ SPELL_MONK_PRESSURE_POINTS
@ SPELL_MONK_MISTS_OF_LIFE
@ SPELL_MONK_STAGGER_HEAVY
@ SPELL_MONK_OPEN_PALM_STRIKES_TALENT
@ SPELL_MONK_ROLL_BACKWARD
@ SPELL_MONK_BURST_OF_LIFE_TALENT
@ SPELL_MONK_SAVE_THEM_ALL_HEAL_BONUS
@ SPELL_MONK_STAGGER_MODERATE
@ SPELL_MONK_PROVOKE_SINGLE_TARGET
@ SPELL_MONK_STAGGER_DAMAGE_AURA
@ SPELL_MONK_MORTAL_WOUNDS
@ SPELL_MONK_POWER_STRIKE_PROC
@ SPELL_MONK_SONG_OF_CHI_JI_STUN
@ SPELL_MONK_SURGING_MIST_HEAL
@ SPELL_MONK_ROLL_FORWARD
@ SPELL_MONK_CALMING_COALESCENCE
@ SPELL_MONK_STANCE_OF_THE_SPIRITED_CRANE
@ SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC
@ SPELL_MONK_ENVELOPING_MIST
@ SPELL_MONK_COMBAT_CONDITIONING
@ SPELL_MONK_SOOTHING_MIST
static constexpr SpellEffIndex AuraStaggerEffectTick
static constexpr SpellEffIndex AuraStaggerEffectTotal
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetPositionZ() const
void OnUnitEnter(Unit *unit) override
void OnInitialize() override