aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/3.3.5/2025_06_10_05_world.sql33
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp22
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp27
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp69
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);