mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 23:50:44 +01:00
Core/Unit: Big cleanup in Unit::CalcAbsorbResist
Core/AuraScript: Fix compile time check for AuraScript functions Remove AuraApplication from hook functions parameter list, use GetTarget() and GetTargetApplication() instead Add OnEffectAbsorb hook Scripts: move handlers of Spell Deflection, Savage Defense, Primal Tenacity, Nerves of Steel, Astral shift from core to scripts. --HG-- branch : trunk
This commit is contained in:
@@ -144,7 +144,7 @@ class spell_ex_66244 : public SpellScriptLoader
|
||||
// checks if script has data required for it to work
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
// check if spellid 70522 exists in dbc, we will trigger it later
|
||||
// check if spellid exists in dbc, we will trigger it later
|
||||
if (!sSpellStore.LookupEntry(SPELL_TRIGGERED))
|
||||
return false;
|
||||
return true;
|
||||
@@ -161,18 +161,18 @@ class spell_ex_66244 : public SpellScriptLoader
|
||||
return false;
|
||||
}
|
||||
|
||||
void HandleEffectApply(AuraEffect const * /*aurEff*/, AuraApplication const * aurApp, AuraEffectHandleModes /*mode*/)
|
||||
void HandleEffectApply(AuraEffect const * /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
sLog->outString("Aura Effect is about to be applied on target!");
|
||||
Unit * target = aurApp->GetTarget();
|
||||
Unit * target = GetTarget();
|
||||
// cast spell on target on aura apply
|
||||
target->CastSpell(target, SPELL_TRIGGERED, true);
|
||||
}
|
||||
|
||||
void HandleEffectRemove(AuraEffect const * /*aurEff*/, AuraApplication const * aurApp, AuraEffectHandleModes /*mode*/)
|
||||
void HandleEffectRemove(AuraEffect const * /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
sLog->outString("Aura Effect is just removed on target!");
|
||||
Unit * target = aurApp->GetTarget();
|
||||
Unit * target = GetTarget();
|
||||
Unit * caster = GetCaster();
|
||||
// caster may be not avalible (logged out for example)
|
||||
if (!caster)
|
||||
@@ -181,10 +181,10 @@ class spell_ex_66244 : public SpellScriptLoader
|
||||
target->CastSpell(caster, SPELL_TRIGGERED, true);
|
||||
}
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const * /*aurEff*/, AuraApplication const * aurApp)
|
||||
void HandleEffectPeriodic(AuraEffect const * /*aurEff*/)
|
||||
{
|
||||
sLog->outString("Perioidic Aura Effect is does a tick on target!");
|
||||
Unit * target = aurApp->GetTarget();
|
||||
Unit * target = GetTarget();
|
||||
// aura targets damage self on tick
|
||||
target->DealDamage(target, 100);
|
||||
}
|
||||
@@ -199,7 +199,7 @@ class spell_ex_66244 : public SpellScriptLoader
|
||||
void HandleEffectCalcAmount(AuraEffect const * /*aurEff*/, int32 & amount, bool & canBeRecalculated)
|
||||
{
|
||||
sLog->outString("Amount of Aura Effect is being calculated now!");
|
||||
// we're setting amount to 0
|
||||
// we're setting amount to 100
|
||||
amount = 100;
|
||||
// amount will be never recalculated due to applying passive aura
|
||||
canBeRecalculated = false;
|
||||
@@ -213,7 +213,7 @@ class spell_ex_66244 : public SpellScriptLoader
|
||||
amplitude = 2 * IN_MILLISECONDS;
|
||||
}
|
||||
|
||||
void HandleEffectCalcSpellMod(AuraEffect * const /*aurEff*/, SpellModifier *& spellMod)
|
||||
void HandleEffectCalcSpellMod(AuraEffect const * /*aurEff*/, SpellModifier *& spellMod)
|
||||
{
|
||||
sLog->outString("SpellMod data of Aura Effect is being calculated now!");
|
||||
// we don't want spellmod for example
|
||||
@@ -242,10 +242,25 @@ class spell_ex_66244 : public SpellScriptLoader
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_ex_66244AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_ex_66244AuraScript::HandleEffectPeriodic,EFFECT_0, SPELL_AURA_DUMMY);
|
||||
OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_ex_66244AuraScript::HandleEffectPeriodicUpdate, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
OnEffectCalcAmount += AuraEffectCalcAmountFn(spell_ex_66244AuraScript::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
OnEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_ex_66244AuraScript::HandleEffectCalcPeriodic, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
OnEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_ex_66244AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_ex_66244AuraScript::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_ex_66244AuraScript::HandleEffectCalcPeriodic, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_ex_66244AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
/*OnApply += AuraEffectApplyFn();
|
||||
OnRemove += AuraEffectRemoveFn();
|
||||
DoCheckAreaTarget += AuraCheckAreaTargetFn();*/
|
||||
}
|
||||
/*
|
||||
void OnApply()
|
||||
{
|
||||
}
|
||||
|
||||
void OnRemove()
|
||||
{
|
||||
}
|
||||
|
||||
bool DoCheckAreaTarget(Unit * proposedTarget)
|
||||
{
|
||||
}*/
|
||||
};
|
||||
|
||||
// function which creates AuraScript
|
||||
@@ -253,6 +268,56 @@ class spell_ex_66244 : public SpellScriptLoader
|
||||
{
|
||||
return new spell_ex_66244AuraScript();
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
class spell_ex_absorb_aura : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_ex_absorb_aura() : SpellScriptLoader("spell_ex_absorb_aura") { }
|
||||
|
||||
class spell_ex_absorb_auraAuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_ex_absorb_auraAuraScript)
|
||||
enum Spells
|
||||
{
|
||||
SPELL_TRIGGERED = 18282
|
||||
};
|
||||
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
// check if spellid exists in dbc, we will trigger it later
|
||||
if (!sSpellStore.LookupEntry(SPELL_TRIGGERED))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleOnEffectAbsorb(AuraEffect * aurEff, DamageInfo & dmgInfo, uint32 & absorbAmount)
|
||||
{
|
||||
sLog->outString("Our aura is now absorbing damage done to us!");
|
||||
// absorb whole damage done to us
|
||||
absorbAmount = dmgInfo.GetDamage();
|
||||
}
|
||||
|
||||
/*void HandleAfterAbsorb(DamageInfo & dmgInfo)
|
||||
{
|
||||
sLog->outString("Our auras have just absorbed damage done to us!");
|
||||
}*/
|
||||
|
||||
// function registering
|
||||
void Register()
|
||||
{
|
||||
OnEffectAbsorb += AuraEffectAbsorbFn(spell_ex_absorb_auraAuraScript::HandleOnEffectAbsorb, EFFECT_0);
|
||||
//AfterAbsorb += AuraAbsorbFn(spell_ex_absorb_auraAuraScript::HandleAfterAbsorb);
|
||||
}
|
||||
};
|
||||
|
||||
// function which creates AuraScript
|
||||
AuraScript *GetAuraScript() const
|
||||
{
|
||||
return new spell_ex_absorb_auraAuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -261,6 +326,7 @@ void AddSC_example_spell_scripts()
|
||||
{
|
||||
new spell_ex_5581;
|
||||
new spell_ex_66244;
|
||||
new spell_ex_absorb_aura;
|
||||
}
|
||||
|
||||
/* empty script for copypasting
|
||||
@@ -303,13 +369,13 @@ class spell_ex : public SpellScriptLoader
|
||||
//bool Load(){return true;}
|
||||
//void Unload(){}
|
||||
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, AuraApplication const * aurApp, AuraEffectHandleModes mode) //OnEffectApply += AuraEffectApplyFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, AuraApplication const * aurApp, AuraEffectHandleModes mode) //OnEffectRemove += AuraEffectRemoveFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, AuraApplication const * aurApp) //OnEffectPeriodic += AuraEffectPeriodicFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, AuraEffectHandleModes mode) //OnEffectApply += AuraEffectApplyFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, AuraEffectHandleModes mode) //OnEffectRemove += AuraEffectRemoveFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff) //OnEffectPeriodic += AuraEffectPeriodicFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect * aurEff) //OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, int32 & amount, bool & canBeRecalculated) //OnEffectCalcAmount += AuraEffectCalcAmountFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, int32 & amount, bool & canBeRecalculated) //DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, bool & isPeriodic, int32 & amplitude) //OnEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect * const aurEff, SpellModifier *& spellMod) //OnEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
//void spell_ex_SpellScript::Function(AuraEffect const * aurEff, SpellModifier *& spellMod) //OnEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_ex_SpellScript::Function, EFFECT_ANY, SPELL_AURA_ANY);
|
||||
void Register()
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user