mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 09:44:45 +01:00
Scripts/Spells: Fixed arcane barrage + explosion
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
|
||||
enum MageSpells
|
||||
{
|
||||
SPELL_MAGE_ARCANE_BARRAGE_R3 = 321526,
|
||||
SPELL_MAGE_BLAZING_BARRIER_TRIGGER = 235314,
|
||||
SPELL_MAGE_CAUTERIZE_DOT = 87023,
|
||||
SPELL_MAGE_CAUTERIZED = 87024,
|
||||
@@ -64,7 +65,6 @@ enum MageSpells
|
||||
SPELL_MAGE_ICY_VEINS = 12472,
|
||||
SPELL_MAGE_CHAIN_REACTION_DUMMY = 278309,
|
||||
SPELL_MAGE_CHAIN_REACTION = 278310,
|
||||
SPELL_MAGE_TOUCH_OF_THE_MAGI_AURA = 210824,
|
||||
SPELL_MAGE_TOUCH_OF_THE_MAGI_EXPLODE = 210833,
|
||||
};
|
||||
|
||||
@@ -76,6 +76,80 @@ enum MiscSpells
|
||||
SPELL_MAGE_CHILLED = 205708
|
||||
};
|
||||
|
||||
// 44425 - Arcane Barrage
|
||||
class spell_mage_arcane_barrage : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_mage_arcane_barrage);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_MAGE_ARCANE_BARRAGE_R3 });
|
||||
}
|
||||
|
||||
void HandleEffectHitTarget(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
// Consume all arcane charges; for each charge add 30% additional damage
|
||||
Unit* caster = GetCaster();
|
||||
double charges = double(-caster->ConsumeAllPower(POWER_ARCANE_CHARGES));
|
||||
|
||||
double currDamage = double(GetHitDamage());
|
||||
double extraDamage = (charges * 0.3) * currDamage;
|
||||
SetHitDamage(int32(currDamage + extraDamage));
|
||||
|
||||
if (Aura const* aura = caster->GetAura(SPELL_MAGE_ARCANE_BARRAGE_R3))
|
||||
{
|
||||
if (AuraEffect const* auraEffect = aura->GetEffect(EFFECT_0))
|
||||
{
|
||||
double pct = charges * (double(auraEffect->GetAmount()) * 0.01);
|
||||
int32 maxMana = caster->GetMaxPower(POWER_MANA);
|
||||
|
||||
int32 extraMana = CalculatePct(double(maxMana), pct);
|
||||
caster->ModifyPower(POWER_MANA, extraMana);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_mage_arcane_barrage::HandleEffectHitTarget, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
// 1449 - Arcane Explosion
|
||||
class spell_mage_arcane_explosion : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_mage_arcane_explosion);
|
||||
|
||||
void PreventEnergize(SpellEffIndex effIndex)
|
||||
{
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
}
|
||||
|
||||
void HandleTargetHit(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (_once)
|
||||
{
|
||||
if (SpellEffectInfo const* effInfo = GetEffectInfo(EFFECT_0))
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
int32 value = effInfo->CalcValue(caster);
|
||||
caster->ModifyPower(Powers(effInfo->MiscValue), value);
|
||||
}
|
||||
_once = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_mage_arcane_explosion::PreventEnergize, EFFECT_0, SPELL_EFFECT_ENERGIZE);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_mage_arcane_explosion::PreventEnergize, EFFECT_2, SPELL_EFFECT_ENERGIZE);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_mage_arcane_explosion::HandleTargetHit, EFFECT_1, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
}
|
||||
|
||||
private:
|
||||
bool _once = true;
|
||||
};
|
||||
|
||||
// 235313 - Blazing Barrier
|
||||
class spell_mage_blazing_barrier : public AuraScript
|
||||
{
|
||||
@@ -868,6 +942,8 @@ class spell_mage_water_elemental_freeze : public SpellScript
|
||||
|
||||
void AddSC_mage_spell_scripts()
|
||||
{
|
||||
RegisterSpellScript(spell_mage_arcane_barrage);
|
||||
RegisterSpellScript(spell_mage_arcane_explosion);
|
||||
RegisterAuraScript(spell_mage_blazing_barrier);
|
||||
RegisterAuraScript(spell_mage_burning_determination);
|
||||
RegisterSpellAndAuraScriptPair(spell_mage_cauterize, spell_mage_cauterize_AuraScript);
|
||||
|
||||
Reference in New Issue
Block a user