diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/zone_storm_peaks.cpp | 22 | ||||
-rw-r--r-- | src/server/scripts/Outland/zone_blades_edge_mountains.cpp | 27 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 69 |
3 files changed, 118 insertions, 0 deletions
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index 8011dee62a3..ef09f518892 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -97,6 +97,27 @@ struct npc_brunnhildar_prisoner : public ScriptedAI } }; +// 55048 - Free Brunnhildar Prisoner +class spell_storm_peaks_free_brunnhildar_prisoner : public SpellScript +{ + PrepareSpellScript(spell_storm_peaks_free_brunnhildar_prisoner); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ICE_PRISON }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->RemoveAurasDueToSpell(SPELL_ICE_PRISON); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_storm_peaks_free_brunnhildar_prisoner::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + /*###### ## npc_freed_protodrake ######*/ @@ -1250,6 +1271,7 @@ class spell_storm_peaks_call_of_earth : public SpellScript void AddSC_storm_peaks() { RegisterCreatureAI(npc_brunnhildar_prisoner); + RegisterSpellScript(spell_storm_peaks_free_brunnhildar_prisoner); RegisterCreatureAI(npc_freed_protodrake); RegisterCreatureAI(npc_icefang); RegisterCreatureAI(npc_hyldsmeet_protodrake); diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index d91c3d320bb..84da3ebedde 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -1043,6 +1043,32 @@ class spell_bem_dispelling_analysis : public SpellScript } }; +/*###### +## Quest 10544: A Curse Upon Both of Your Clans! +######*/ + +enum ACurseUponBothOfYourClans +{ + NPC_OGRE_BUILDING_BUNNY_LARGE = 21351 +}; + +// 32580 - Wicked Strong Fetish +class spell_bem_wicked_strong_fetish : public SpellScript +{ + PrepareSpellScript(spell_bem_wicked_strong_fetish); + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->SummonCreature(NPC_OGRE_BUILDING_BUNNY_LARGE, caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30s); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_bem_wicked_strong_fetish::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_blades_edge_mountains() { new npc_nether_drake(); @@ -1053,4 +1079,5 @@ void AddSC_blades_edge_mountains() new npc_oscillating_frequency_scanner_master_bunny(); new spell_oscillating_field(); RegisterSpellScript(spell_bem_dispelling_analysis); + RegisterSpellScript(spell_bem_wicked_strong_fetish); } diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index b1ab38a8020..e019cb9cc8e 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -723,6 +723,46 @@ class spell_gen_cancel_aura : public SpellScript } }; +class spell_gen_cast_caster_to_target : public SpellScript +{ + PrepareSpellScript(spell_gen_cast_caster_to_target); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue())); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_cast_caster_to_target::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +class spell_gen_cast_target_to_target : public SpellScript +{ + PrepareSpellScript(spell_gen_cast_target_to_target); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), uint32(GetEffectValue())); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_cast_target_to_target::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + enum CannibalizeSpells { SPELL_CANNIBALIZE_TRIGGERED = 20578 @@ -1453,6 +1493,32 @@ class spell_gen_divine_storm_cd_reset : public SpellScript } }; +enum DreamingGlory +{ + SPELL_DREAMING_GLORY = 28694 +}; + +// 28698 - Dreaming Glory +class spell_gen_dreaming_glory : public SpellScript +{ + PrepareSpellScript(spell_gen_dreaming_glory); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DREAMING_GLORY }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_DREAMING_GLORY, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_dreaming_glory::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + class spell_gen_ds_flush_knockback : public SpellScript { PrepareSpellScript(spell_gen_ds_flush_knockback); @@ -4606,6 +4672,8 @@ void AddSC_generic_spell_scripts() RegisterSpellScriptWithArgs(spell_gen_break_shield, "spell_gen_tournament_counterattack"); RegisterSpellScript(spell_gen_burning_depths_necrolyte_image); RegisterSpellScript(spell_gen_cancel_aura); + RegisterSpellScript(spell_gen_cast_caster_to_target); + RegisterSpellScript(spell_gen_cast_target_to_target); RegisterSpellScript(spell_gen_cannibalize); RegisterSpellScript(spell_gen_chains_of_ice); RegisterSpellScript(spell_gen_chaos_blast); @@ -4628,6 +4696,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_despawn_self); RegisterSpellScript(spell_gen_despawn_target); RegisterSpellScript(spell_gen_divine_storm_cd_reset); + RegisterSpellScript(spell_gen_dreaming_glory); RegisterSpellScript(spell_gen_ds_flush_knockback); RegisterSpellScript(spell_gen_dungeon_credit); RegisterSpellScript(spell_ethereal_pet_aura); |