Merge pull request #15156 from LuqJensen/Ice-barrier

Core/Spells: Fix Shattered Barrier triggering on dispel
This commit is contained in:
joschiwald committed 2015-08-15 20:02:46 +02:00
commit c1e3fdc826
2 files changed
+25 -10

No files matched your search

@@ -1419,16 +1419,6 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b
default:
break;
}
if (!caster)
break;
// Ice barrier - dispel/absorb remove
if (removeMode == AURA_REMOVE_BY_ENEMY_SPELL && GetSpellInfo()->SpellFamilyFlags[1] & 0x1)
{
// Shattered Barrier
if (AuraEffect* dummy = caster->GetDummyAuraEffect(SPELLFAMILY_MAGE, 2945, 0))
if (roll_chance_i(dummy->GetSpellInfo()->ProcChance))
caster->CastSpell(target, 55080, true, NULL, GetEffect(0));
}
break;
case SPELLFAMILY_WARRIOR:
if (!caster)
+25
View File
@@ -45,11 +45,17 @@ enum MageSpells
SPELL_MAGE_WORGEN_FORM = 32819,
SPELL_MAGE_SHEEP_FORM = 32820,
SPELL_MAGE_GLYPH_OF_ETERNAL_WATER = 70937,
SPELL_MAGE_SHATTERED_BARRIER = 55080,
SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT = 70908,
SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY = 70907,
SPELL_MAGE_GLYPH_OF_BLAST_WAVE = 62126,
};
enum MageSpellIcons
{
SPELL_ICON_MAGE_SHATTERED_BARRIER = 2945
};
// Incanter's Absorbtion
class spell_mage_incanters_absorbtion_base_AuraScript : public AuraScript
{
@@ -321,6 +327,13 @@ class spell_mage_ice_barrier : public SpellScriptLoader
{
PrepareAuraScript(spell_mage_ice_barrier_AuraScript);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_SHATTERED_BARRIER))
return false;
return true;
}
void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)
{
canBeRecalculated = false;
@@ -341,10 +354,22 @@ class spell_mage_ice_barrier : public SpellScriptLoader
}
}
void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
// Shattered Barrier
// Procs only if removed by damage.
if (aurEff->GetAmount() <= 0)
if (Unit* caster = GetCaster())
if (AuraEffect* dummy = caster->GetDummyAuraEffect(SPELLFAMILY_MAGE, SPELL_ICON_MAGE_SHATTERED_BARRIER, EFFECT_0))
if (roll_chance_i(dummy->GetSpellInfo()->ProcChance))
caster->CastSpell(GetTarget(), SPELL_MAGE_SHATTERED_BARRIER, true, nullptr, aurEff);
}
void Register() override
{
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_ice_barrier_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
AfterEffectAbsorb += AuraEffectAbsorbFn(spell_mage_ice_barrier_AuraScript::Trigger, EFFECT_0);
AfterEffectRemove += AuraEffectRemoveFn(spell_mage_ice_barrier_AuraScript::AfterRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL);
}
};