AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
spell_mage_ice_barrier Class Reference
Inheritance diagram for spell_mage_ice_barrier:
SpellScript _SpellScript

Private Member Functions

 PrepareSpellScript (spell_mage_ice_barrier)
 
SpellCastResult CheckCast ()
 
void Register () override
 

Static Private Member Functions

static int32 CalculateSpellAmount (Unit *caster, int32 amount, SpellInfo const *spellInfo, const AuraEffect *aurEff)
 

Additional Inherited Members

- Public Member Functions inherited from SpellScript
bool _Validate (SpellInfo const *entry) override
 
bool _Load (Spell *spell)
 
void _InitHit ()
 
bool _IsEffectPrevented (SpellEffIndex effIndex)
 
bool _IsDefaultEffectPrevented (SpellEffIndex effIndex)
 
void _PrepareScriptCall (SpellScriptHookType hookType)
 
void _FinishScriptCall ()
 
bool IsInCheckCastHook () const
 
bool IsInTargetHook () const
 
bool IsInHitPhase () const
 
bool IsInEffectHook () const
 
UnitGetCaster ()
 
UnitGetOriginalCaster ()
 
SpellInfo const * GetSpellInfo ()
 
SpellValue const * GetSpellValue ()
 
WorldLocation const * GetExplTargetDest ()
 
void SetExplTargetDest (WorldLocation &loc)
 
WorldObjectGetExplTargetWorldObject ()
 
UnitGetExplTargetUnit ()
 
GameObjectGetExplTargetGObj ()
 
ItemGetExplTargetItem ()
 
UnitGetHitUnit ()
 
CreatureGetHitCreature ()
 
PlayerGetHitPlayer ()
 
ItemGetHitItem ()
 
GameObjectGetHitGObj ()
 
WorldLocationGetHitDest ()
 
int32 GetHitDamage ()
 
void SetHitDamage (int32 damage)
 
void PreventHitDamage ()
 
int32 GetHitHeal ()
 
void SetHitHeal (int32 heal)
 
void PreventHitHeal ()
 
SpellGetSpell ()
 
AuraGetHitAura ()
 
void PreventHitAura ()
 
void PreventHitEffect (SpellEffIndex effIndex)
 
void PreventHitDefaultEffect (SpellEffIndex effIndex)
 
int32 GetEffectValue () const
 
void SetEffectValue (int32 value)
 
ItemGetCastItem ()
 
void CreateItem (uint32 effIndex, uint32 itemId)
 
SpellInfo const * GetTriggeringSpell ()
 
void FinishCast (SpellCastResult result)
 
void Cancel ()
 
void SetCustomCastResultMessage (SpellCustomErrors result)
 
- Public Member Functions inherited from _SpellScript
 _SpellScript ()
 
virtual ~_SpellScript ()
 
virtual void _Register ()
 
virtual void _Unload ()
 
virtual void _Init (std::string const *scriptname, uint32 spellId)
 
std::string const * _GetScriptName () const
 
virtual void Register ()=0
 
virtual bool Validate (SpellInfo const *)
 
virtual bool Load ()
 
virtual void Unload ()
 
- Static Public Member Functions inherited from _SpellScript
static bool ValidateSpellInfo (std::initializer_list< uint32 > spellIds)
 
template<class T >
static bool ValidateSpellInfo (T const &spellIds)
 
- Public Attributes inherited from SpellScript
HookList< CastHandlerBeforeCast
 
HookList< CastHandlerOnCast
 
HookList< CastHandlerAfterCast
 
HookList< CheckCastHandlerOnCheckCast
 
HookList< EffectHandlerOnEffectLaunch
 
HookList< EffectHandlerOnEffectLaunchTarget
 
HookList< EffectHandlerOnEffectHit
 
HookList< EffectHandlerOnEffectHitTarget
 
HookList< BeforeHitHandlerBeforeHit
 
HookList< HitHandlerOnHit
 
HookList< HitHandlerAfterHit
 
HookList< ObjectAreaTargetSelectHandlerOnObjectAreaTargetSelect
 
HookList< ObjectTargetSelectHandlerOnObjectTargetSelect
 
HookList< DestinationTargetSelectHandlerOnDestinationTargetSelect
 
virtual bool _Validate (SpellInfo const *entry)
 
- Protected Attributes inherited from _SpellScript
uint8 m_currentScriptState
 
std::string const * m_scriptName
 
uint32 m_scriptSpellId
 

Detailed Description

Member Function Documentation

◆ CalculateSpellAmount()

static int32 spell_mage_ice_barrier::CalculateSpellAmount ( Unit caster,
int32  amount,
SpellInfo const *  spellInfo,
const AuraEffect aurEff 
)
inlinestaticprivate
Todo:
: Rework
632 {
633 // +80.68% from sp bonus
634 float bonus = 0.8068f;
635
636 bonus *= caster->SpellBaseDamageBonusDone(spellInfo->GetSchoolMask());
637
638 // Glyph of Ice Barrier: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :)
639 // Glyph of Ice Barrier is only applied at the spell damage bonus because it was already applied to the base value in CalculateSpellDamage
640 bonus = caster->ApplyEffectModifiers(spellInfo, aurEff->GetEffIndex(), bonus);
641
642 bonus *= caster->CalculateLevelPenalty(spellInfo);
643
644 amount += int32(bonus);
645 return amount;
646 }
std::int32_t int32
Definition: Define.h:104
float ApplyEffectModifiers(SpellInfo const *spellProto, uint8 effect_index, float value) const
Definition: Unit.cpp:14721
int32 SpellBaseDamageBonusDone(SpellSchoolMask schoolMask)
Definition: Unit.cpp:11855
float CalculateLevelPenalty(SpellInfo const *spellProto) const
Definition: Unit.cpp:3002
uint32 GetEffIndex() const
Definition: SpellAuraEffects.h:56

References Unit::ApplyEffectModifiers(), Unit::CalculateLevelPenalty(), AuraEffect::GetEffIndex(), SpellInfo::GetSchoolMask(), and Unit::SpellBaseDamageBonusDone().

Referenced by CheckCast().

◆ CheckCast()

SpellCastResult spell_mage_ice_barrier::CheckCast ( )
inlineprivate
649 {
650 Unit* caster = GetCaster();
651
652 if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_AURA_SCHOOL_ABSORB, (SpellFamilyNames)GetSpellInfo()->SpellFamilyName, GetSpellInfo()->SpellIconID, EFFECT_0))
653 {
654 int32 newAmount = GetSpellInfo()->Effects[EFFECT_0].CalcValue(caster, nullptr, nullptr);
655 newAmount = CalculateSpellAmount(caster, newAmount, GetSpellInfo(), aurEff);
656
657 if (aurEff->GetAmount() > newAmount)
659 }
660
661 return SPELL_CAST_OK;
662 }
@ SPELL_AURA_SCHOOL_ABSORB
Definition: SpellAuraDefines.h:132
@ EFFECT_0
Definition: SharedDefines.h:30
SpellFamilyNames
Definition: SharedDefines.h:3499
@ SPELL_FAILED_AURA_BOUNCED
Definition: SharedDefines.h:930
@ SPELL_CAST_OK
Definition: SharedDefines.h:1110
Definition: Unit.h:1290
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
Definition: Unit.cpp:5412
Definition: SpellAuraEffects.h:39
std::array< SpellEffectInfo, MAX_SPELL_EFFECTS > Effects
Definition: SpellInfo.h:391
SpellInfo const * GetSpellInfo()
Definition: SpellScript.cpp:411
Unit * GetCaster()
Definition: SpellScript.cpp:401
static int32 CalculateSpellAmount(Unit *caster, int32 amount, SpellInfo const *spellInfo, const AuraEffect *aurEff)
Definition: spell_mage.cpp:631

References CalculateSpellAmount(), EFFECT_0, SpellInfo::Effects, Unit::GetAuraEffect(), SpellScript::GetCaster(), SpellScript::GetSpellInfo(), SPELL_AURA_SCHOOL_ABSORB, SPELL_CAST_OK, and SPELL_FAILED_AURA_BOUNCED.

Referenced by Register().

◆ PrepareSpellScript()

spell_mage_ice_barrier::PrepareSpellScript ( spell_mage_ice_barrier  )
private

◆ Register()

void spell_mage_ice_barrier::Register ( )
inlineoverrideprivatevirtual

Implements _SpellScript.

665 {
667 }
#define SpellCheckCastFn(F)
Definition: SpellScript.h:329
HookList< CheckCastHandler > OnCheckCast
Definition: SpellScript.h:328
SpellCastResult CheckCast()
Definition: spell_mage.cpp:648

References CheckCast(), SpellScript::OnCheckCast, and SpellCheckCastFn.