mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 19:06:49 +01:00
Core/Spell: Fixed mage Ice/Prismatic/Blazing Barrier spells
Closes #19138
This commit is contained in:
9
sql/updates/world/master/2017_03_11_02_world.sql
Normal file
9
sql/updates/world/master/2017_03_11_02_world.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_mage_prismatic_barrier', 'spell_mage_blazing_barrier');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(235450, 'spell_mage_prismatic_barrier'),
|
||||
(235313, 'spell_mage_blazing_barrier');
|
||||
|
||||
DELETE FROM `spell_proc_event` WHERE `entry` IN (11426, 235313);
|
||||
INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `spellFamilyMask3`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
|
||||
(11426, 0, 3, 0, 0, 0, 0, 0, 1024, 0, 0, 0),
|
||||
(235313, 0, 3, 0, 0, 0, 0, 0, 1024, 0, 0, 0);
|
||||
@@ -35,6 +35,7 @@ enum MageSpells
|
||||
SPELL_ARCANCE_POTENCY_RANK_2 = 31572,
|
||||
SPELL_ARCANCE_POTENCY_TRIGGER_RANK_1 = 57529,
|
||||
SPELL_ARCANCE_POTENCY_TRIGGER_RANK_2 = 57531,
|
||||
SPELL_MAGE_BLAZING_BARRIER_TRIGGER = 235314,
|
||||
SPELL_MAGE_BLAZING_SPEED = 31643,
|
||||
SPELL_MAGE_BURNOUT = 29077,
|
||||
SPELL_MAGE_COLD_SNAP = 11958,
|
||||
@@ -71,11 +72,6 @@ enum MageSpells
|
||||
SPELL_MAGE_CONE_OF_COLD_TRIGGER_R1 = 83301,
|
||||
SPELL_MAGE_CONE_OF_COLD_TRIGGER_R2 = 83302,
|
||||
|
||||
SPELL_MAGE_SHATTERED_BARRIER_R1 = 44745,
|
||||
SPELL_MAGE_SHATTERED_BARRIER_R2 = 54787,
|
||||
SPELL_MAGE_SHATTERED_BARRIER_FREEZE_R1 = 55080,
|
||||
SPELL_MAGE_SHATTERED_BARRIER_FREEZE_R2 = 83073,
|
||||
|
||||
SPELL_MAGE_IMPROVED_MANA_GEM_TRIGGERED = 83098,
|
||||
|
||||
SPELL_MAGE_RING_OF_FROST_SUMMON = 82676,
|
||||
@@ -232,6 +228,54 @@ class spell_mage_blast_wave : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
// 235313 - Blazing Barrier
|
||||
class spell_mage_blazing_barrier : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_mage_blazing_barrier() : SpellScriptLoader("spell_mage_blazing_barrier") { }
|
||||
|
||||
class spell_mage_blazing_barrier_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mage_blazing_barrier_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
SPELL_MAGE_BLAZING_BARRIER_TRIGGER
|
||||
});
|
||||
}
|
||||
|
||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
|
||||
{
|
||||
canBeRecalculated = false;
|
||||
if (Unit* caster = GetCaster())
|
||||
amount = int32(caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()) * 7.0f);
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
Unit* caster = eventInfo.GetDamageInfo()->GetVictim();
|
||||
Unit* target = eventInfo.GetDamageInfo()->GetAttacker();
|
||||
|
||||
if (caster && target)
|
||||
caster->CastSpell(target, SPELL_MAGE_BLAZING_BARRIER_TRIGGER, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_blazing_barrier_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
|
||||
OnEffectProc += AuraEffectProcFn(spell_mage_blazing_barrier_AuraScript::HandleProc, EFFECT_1, SPELL_AURA_PROC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_mage_blazing_barrier_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 11958 - Cold Snap
|
||||
class spell_mage_cold_snap : public SpellScriptLoader
|
||||
{
|
||||
@@ -617,7 +661,6 @@ class spell_mage_living_bomb : public SpellScriptLoader
|
||||
};
|
||||
|
||||
// 11426 - Ice Barrier
|
||||
/// Updated 4.3.4
|
||||
class spell_mage_ice_barrier : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -627,28 +670,34 @@ class spell_mage_ice_barrier : public SpellScriptLoader
|
||||
{
|
||||
PrepareAuraScript(spell_mage_ice_barrier_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
SPELL_MAGE_CHILLED
|
||||
});
|
||||
}
|
||||
|
||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
|
||||
{
|
||||
canBeRecalculated = false;
|
||||
if (Unit* caster = GetCaster())
|
||||
amount += int32(4.95f * caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()));
|
||||
amount += int32(caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()) * 10.0f);
|
||||
}
|
||||
|
||||
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
|
||||
{
|
||||
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_ENEMY_SPELL)
|
||||
return;
|
||||
Unit* caster = eventInfo.GetDamageInfo()->GetVictim();
|
||||
Unit* target = eventInfo.GetDamageInfo()->GetAttacker();
|
||||
|
||||
if (GetTarget()->HasAura(SPELL_MAGE_SHATTERED_BARRIER_R1))
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_MAGE_SHATTERED_BARRIER_FREEZE_R1, true);
|
||||
else if (GetTarget()->HasAura(SPELL_MAGE_SHATTERED_BARRIER_R2))
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_MAGE_SHATTERED_BARRIER_FREEZE_R2, true);
|
||||
if (caster && target)
|
||||
caster->CastSpell(target, SPELL_MAGE_CHILLED, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_ice_barrier_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_mage_ice_barrier_AuraScript::AfterRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectProc += AuraEffectProcFn(spell_mage_ice_barrier_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1025,6 +1074,35 @@ uint32 const spell_mage_polymorph_cast_visual::spell_mage_polymorph_cast_visual_
|
||||
SPELL_MAGE_SHEEP_FORM
|
||||
};
|
||||
|
||||
// 235450 - Prismatic Barrier
|
||||
class spell_mage_prismatic_barrier : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_mage_prismatic_barrier() : SpellScriptLoader("spell_mage_prismatic_barrier") { }
|
||||
|
||||
class spell_mage_prismatic_barrier_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mage_prismatic_barrier_AuraScript);
|
||||
|
||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
|
||||
{
|
||||
canBeRecalculated = false;
|
||||
if (Unit* caster = GetCaster())
|
||||
amount += int32(caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()) * 7.0f);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_prismatic_barrier_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_mage_prismatic_barrier_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 5405 - Replenish Mana (Mana Gem)
|
||||
/// Updated 4.3.4
|
||||
class spell_mage_replenish_mana : public SpellScriptLoader
|
||||
@@ -1361,6 +1439,7 @@ void AddSC_mage_spell_scripts()
|
||||
{
|
||||
new spell_mage_arcane_potency();
|
||||
new spell_mage_blast_wave();
|
||||
new spell_mage_blazing_barrier();
|
||||
new spell_mage_cold_snap();
|
||||
new spell_mage_cone_of_cold();
|
||||
new spell_mage_conjure_refreshment();
|
||||
@@ -1379,6 +1458,7 @@ void AddSC_mage_spell_scripts()
|
||||
new spell_mage_permafrost();
|
||||
new spell_mage_polymorph();
|
||||
new spell_mage_polymorph_cast_visual();
|
||||
new spell_mage_prismatic_barrier();
|
||||
new spell_mage_replenish_mana();
|
||||
new spell_mage_ring_of_frost();
|
||||
new spell_mage_ring_of_frost_freeze();
|
||||
|
||||
Reference in New Issue
Block a user