diff options
Diffstat (limited to 'src/server/scripts/Spells')
| -rw-r--r-- | src/server/scripts/Spells/spell_dk.cpp | 29 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 35 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_item.cpp | 142 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 58 |
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); |
