diff options
-rw-r--r-- | sql/updates/world/3.3.5/2025_06_10_05_world.sql | 33 | ||||
-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 |
4 files changed, 151 insertions, 0 deletions
diff --git a/sql/updates/world/3.3.5/2025_06_10_05_world.sql b/sql/updates/world/3.3.5/2025_06_10_05_world.sql new file mode 100644 index 00000000000..4ca2e6d0e3c --- /dev/null +++ b/sql/updates/world/3.3.5/2025_06_10_05_world.sql @@ -0,0 +1,33 @@ +-- +DELETE FROM `spell_scripts` WHERE `id` IN (55770,36153); +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_cast_caster_to_target'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(55770, 'spell_gen_cast_caster_to_target'), +(36153, 'spell_gen_cast_caster_to_target'); + +DELETE FROM `spell_scripts` WHERE `id` IN (44876,48724,48726,48728,48730,54640); +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_cast_target_to_target'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(44876, 'spell_gen_cast_target_to_target'), +(48724, 'spell_gen_cast_target_to_target'), +(48726, 'spell_gen_cast_target_to_target'), +(48728, 'spell_gen_cast_target_to_target'), +(48730, 'spell_gen_cast_target_to_target'), +(54640, 'spell_gen_cast_target_to_target'); +UPDATE `smart_scripts` SET `action_type` = 11, `action_param2` = 2 WHERE `entryorguid` IN (27234,27235,27236,27237) AND `id` = 1; +UPDATE `conditions` SET `ConditionTypeOrReference`=32,`ConditionValue1`=144,`ConditionValue2`=0 WHERE `SourceEntry` IN (48724,48726,48728,48730) AND `SourceTypeOrReferenceId` = 13; + +DELETE FROM `spell_scripts` WHERE `id` IN (28698); +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_dreaming_glory'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(28698, 'spell_gen_dreaming_glory'); + +DELETE FROM `spell_scripts` WHERE `id` = 55048; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_storm_peaks_free_brunnhildar_prisoner'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(55048, 'spell_storm_peaks_free_brunnhildar_prisoner'); + +DELETE FROM `spell_scripts` WHERE `id` = 32580; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_bem_wicked_strong_fetish'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(32580, 'spell_bem_wicked_strong_fetish'); 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); |