aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Spells
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Spells')
-rw-r--r--src/server/scripts/Spells/spell_dk.cpp29
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp35
-rw-r--r--src/server/scripts/Spells/spell_item.cpp142
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp58
4 files changed, 260 insertions, 4 deletions
diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp
index a3f06959d5b..bf023b9b6a6 100644
--- a/src/server/scripts/Spells/spell_dk.cpp
+++ b/src/server/scripts/Spells/spell_dk.cpp
@@ -74,6 +74,7 @@ enum DeathKnightSpells
SPELL_DK_IMPROVED_UNHOLY_PRESENCE_TRIGGERED = 63622,
SPELL_DK_ITEM_SIGIL_VENGEFUL_HEART = 64962,
SPELL_DK_ITEM_T8_MELEE_4P_BONUS = 64736,
+ SPELL_DK_LICHBORNE = 50397,
SPELL_DK_MASTER_OF_GHOULS = 52143,
SPELL_DK_BLOOD_PLAGUE = 55078,
SPELL_DK_RAISE_DEAD_USE_REAGENT = 48289,
@@ -1299,6 +1300,33 @@ class spell_dk_improved_unholy_presence : public AuraScript
}
};
+// 49039 - Lichborne
+class spell_dk_lichborne : public AuraScript
+{
+ PrepareAuraScript(spell_dk_lichborne);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DK_LICHBORNE });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_DK_LICHBORNE, true);
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DK_LICHBORNE);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_dk_lichborne::AfterApply, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dk_lichborne::AfterRemove, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
// 61257 - Runic Power Back on Snare/Root
class spell_dk_pvp_4p_bonus : public AuraScript
{
@@ -2751,6 +2779,7 @@ void AddSC_deathknight_spell_scripts()
RegisterSpellScript(spell_dk_improved_blood_presence_triggered);
RegisterSpellScript(spell_dk_improved_frost_presence);
RegisterSpellScript(spell_dk_improved_unholy_presence);
+ RegisterSpellScript(spell_dk_lichborne);
RegisterSpellScript(spell_dk_pvp_4p_bonus);
RegisterSpellScript(spell_dk_mark_of_blood);
RegisterSpellScript(spell_dk_necrosis);
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 006ccf2fb4c..213c847f063 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -2194,9 +2194,36 @@ private:
}
};
-class spell_gen_lifeblood : public AuraScript
+enum GenericLifeblood
{
- PrepareAuraScript(spell_gen_lifeblood);
+ SPELL_GROW_FLOWER_PATCH = 55475
+};
+
+// -55428 - Lifeblood
+class spell_gen_lifeblood : public SpellScript
+{
+ PrepareSpellScript(spell_gen_lifeblood);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_GROW_FLOWER_PATCH });
+ }
+
+ void HandleAfterCast()
+ {
+ GetCaster()->CastSpell(GetCaster(), SPELL_GROW_FLOWER_PATCH, true);
+ }
+
+ void Register() override
+ {
+ AfterCast += SpellCastFn(spell_gen_lifeblood::HandleAfterCast);
+ }
+};
+
+// -55428 - Lifeblood
+class spell_gen_lifeblood_aura : public AuraScript
+{
+ PrepareAuraScript(spell_gen_lifeblood_aura);
void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)
{
@@ -2209,7 +2236,7 @@ class spell_gen_lifeblood : public AuraScript
void Register() override
{
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_lifeblood::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_lifeblood_aura::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
}
};
@@ -4778,7 +4805,7 @@ void AddSC_generic_spell_scripts()
RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_100", 100); // 10101
RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_50", 50); // 18670, 18945
RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_25", 25); // 18813, 25778
- RegisterSpellScript(spell_gen_lifeblood);
+ RegisterSpellAndAuraScriptPair(spell_gen_lifeblood, spell_gen_lifeblood_aura);
RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_hexlord_lifebloom", SPELL_HEXLORD_MALACRASS_LIFEBLOOM_FINAL_HEAL);
RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_tur_ragepaw_lifebloom", SPELL_TUR_RAGEPAW_LIFEBLOOM_FINAL_HEAL);
RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_cenarion_scout_lifebloom", SPELL_CENARION_SCOUT_LIFEBLOOM_FINAL_HEAL);
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index ed6ab9f3c60..27eee95782b 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -4230,6 +4230,143 @@ class spell_item_titanium_seal_of_dalaran_catch : public SpellScript
}
};
+enum RunescrollOfFortitude
+{
+ SPELL_FORTITUDE = 72590
+};
+
+// 69377 - Fortitude
+class spell_item_runescroll_of_fortitude : public SpellScript
+{
+ PrepareSpellScript(spell_item_runescroll_of_fortitude);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_FORTITUDE });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_FORTITUDE, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_item_runescroll_of_fortitude::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+enum DrumsOfForgottenKings
+{
+ SPELL_BLESSING_OF_FORGOTTEN_KINGS = 72586
+};
+
+// 69378 - Blessing of Forgotten Kings
+class spell_item_drums_of_forgotten_kings : public SpellScript
+{
+ PrepareSpellScript(spell_item_drums_of_forgotten_kings);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_BLESSING_OF_FORGOTTEN_KINGS });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_BLESSING_OF_FORGOTTEN_KINGS, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_item_drums_of_forgotten_kings::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+enum DrumsOfTheWild
+{
+ SPELL_GIFT_OF_THE_WILD = 72588
+};
+
+// 69381 - Gift of the Wild
+class spell_item_drums_of_the_wild : public SpellScript
+{
+ PrepareSpellScript(spell_item_drums_of_the_wild);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_GIFT_OF_THE_WILD });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_GIFT_OF_THE_WILD, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_item_drums_of_the_wild::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+enum ThrallmarAndHonorHoldFavor
+{
+ SPELL_BUFFBOT_BUFF_EFFECT = 32172
+};
+
+// 32096 - Thrallmar's Favor
+// 32098 - Honor Hold's Favor
+class spell_item_thrallmar_and_honor_hold_favor : public AuraScript
+{
+ PrepareAuraScript(spell_item_thrallmar_and_honor_hold_favor);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_BUFFBOT_BUFF_EFFECT });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_BUFFBOT_BUFF_EFFECT);
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_BUFFBOT_BUFF_EFFECT);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_item_thrallmar_and_honor_hold_favor::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_item_thrallmar_and_honor_hold_favor::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+enum DarkmoonCardIllusion
+{
+ SPELL_DARKMOON_CARD_ILLUSION = 60242
+};
+
+// 57350 - Illusionary Barrier
+class spell_item_darkmoon_card_illusion : public AuraScript
+{
+ PrepareAuraScript(spell_item_darkmoon_card_illusion);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DARKMOON_CARD_ILLUSION });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_DARKMOON_CARD_ILLUSION, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_item_darkmoon_card_illusion::AfterRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_item_spell_scripts()
{
// 23074 Arcanite Dragonling
@@ -4364,4 +4501,9 @@ void AddSC_item_spell_scripts()
RegisterSpellScript(spell_item_eggnog);
RegisterSpellScript(spell_item_titanium_seal_of_dalaran_toss);
RegisterSpellScript(spell_item_titanium_seal_of_dalaran_catch);
+ RegisterSpellScript(spell_item_runescroll_of_fortitude);
+ RegisterSpellScript(spell_item_drums_of_forgotten_kings);
+ RegisterSpellScript(spell_item_drums_of_the_wild);
+ RegisterSpellScript(spell_item_thrallmar_and_honor_hold_favor);
+ RegisterSpellScript(spell_item_darkmoon_card_illusion);
}
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 781bbe1cda7..b73cbe8ad17 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -37,12 +37,15 @@
enum PriestSpells
{
SPELL_PRIEST_BLESSED_RECOVERY_R1 = 27813,
+ SPELL_PRIEST_DISPERSION_IMMUNITY = 63230,
+ SPELL_PRIEST_DISPERSION_MOD_POWER = 60069,
SPELL_PRIEST_DIVINE_AEGIS = 47753,
SPELL_PRIEST_EMPOWERED_RENEW = 63544,
SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING = 55675,
SPELL_PRIEST_GLYPH_OF_LIGHTWELL = 55673,
SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL = 56161,
SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153,
+ SPELL_PRIEST_HOLY_NOVA_HEAL_R1 = 23455,
SPELL_PRIEST_ITEM_EFFICIENCY = 37595,
SPELL_PRIEST_LIGHTWELL_CHARGES = 59907,
SPELL_PRIEST_MANA_LEECH_PROC = 34650,
@@ -292,6 +295,37 @@ class spell_pri_circle_of_healing : public SpellScript
}
};
+// 47585 - Dispersion
+class spell_pri_dispersion : public AuraScript
+{
+ PrepareAuraScript(spell_pri_dispersion);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_DISPERSION_MOD_POWER, SPELL_PRIEST_DISPERSION_IMMUNITY });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_PRIEST_DISPERSION_MOD_POWER, true);
+ target->CastSpell(target, SPELL_PRIEST_DISPERSION_IMMUNITY, true);
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->RemoveAurasDueToSpell(SPELL_PRIEST_DISPERSION_MOD_POWER);
+ target->RemoveAurasDueToSpell(SPELL_PRIEST_DISPERSION_IMMUNITY);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_pri_dispersion::AfterApply, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_pri_dispersion::AfterRemove, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
// -47509 - Divine Aegis
class spell_pri_divine_aegis : public AuraScript
{
@@ -472,6 +506,28 @@ class spell_pri_guardian_spirit : public AuraScript
}
};
+// -15237 - Holy Nova
+class spell_pri_holy_nova : public SpellScript
+{
+ PrepareSpellScript(spell_pri_holy_nova);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_HOLY_NOVA_HEAL_R1 });
+ }
+
+ void HandleAfterCast()
+ {
+ uint32 triggerSpellId = sSpellMgr->GetSpellWithRank(SPELL_PRIEST_HOLY_NOVA_HEAL_R1, GetSpellInfo()->GetRank());
+ GetCaster()->CastSpell(GetCaster(), triggerSpellId, true);
+ }
+
+ void Register() override
+ {
+ AfterCast += SpellCastFn(spell_pri_holy_nova::HandleAfterCast);
+ }
+};
+
// 64904 - Hymn of Hope
class spell_pri_hymn_of_hope : public SpellScript
{
@@ -1308,11 +1364,13 @@ void AddSC_priest_spell_scripts()
RegisterSpellScript(spell_pri_blessed_recovery);
RegisterSpellScript(spell_pri_body_and_soul);
RegisterSpellScript(spell_pri_circle_of_healing);
+ RegisterSpellScript(spell_pri_dispersion);
RegisterSpellScript(spell_pri_divine_aegis);
RegisterSpellScript(spell_pri_divine_hymn);
RegisterSpellScript(spell_pri_glyph_of_dispel_magic);
RegisterSpellScript(spell_pri_glyph_of_prayer_of_healing);
RegisterSpellScript(spell_pri_guardian_spirit);
+ RegisterSpellScript(spell_pri_holy_nova);
RegisterSpellScript(spell_pri_hymn_of_hope);
RegisterSpellScript(spell_pri_imp_shadowform);
RegisterSpellScript(spell_pri_improved_spirit_tap);