diff options
author | offl <11556157+offl@users.noreply.github.com> | 2022-06-22 22:37:52 +0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-09-05 19:26:59 +0200 |
commit | 6fb332d935ebe84b5728d5496173c8b7109e08db (patch) | |
tree | 992101910d7e8ae2c072d7159372e86a30fb62e2 | |
parent | c8d56b8c6741b237ebf6c7f8f023c4b5ebd0d0ca (diff) |
Scripts/Spells: Get rid of several DB spell scripts (#28048)
(cherry picked from commit 3808e614d9760a2588fec0c1b0b4c30feda36dcc)
7 files changed, 330 insertions, 9 deletions
diff --git a/sql/updates/world/master/2022_09_05_11_world_2022_06_22_00_world.sql b/sql/updates/world/master/2022_09_05_11_world_2022_06_22_00_world.sql new file mode 100644 index 00000000000..6cf67c2ba99 --- /dev/null +++ b/sql/updates/world/master/2022_09_05_11_world_2022_06_22_00_world.sql @@ -0,0 +1,37 @@ +-- +DELETE FROM `spell_scripts` WHERE `id` IN (23645,23725,24194,24195,38358,45185,47097,47958,57082,47703,47724,50252); + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ( +'spell_item_hourglass_sand', +'spell_item_lifegiving_gem', +'spell_quest_uther_grom_tribute', +'spell_fathomlord_karathress_tidal_surge', +'spell_brutallus_stomp', +'spell_dragonblight_surge_needle_teleporter', +'spell_ormorok_summon_crystal_spikes', +'spell_dragonblight_fill_blood_unholy_frost_gem'); +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(23645,'spell_item_hourglass_sand'), +(23725,'spell_item_lifegiving_gem'), +(24194,'spell_quest_uther_grom_tribute'), +(24195,'spell_quest_uther_grom_tribute'), +(38358,'spell_fathomlord_karathress_tidal_surge'), +(45185,'spell_brutallus_stomp'), +(47097,'spell_dragonblight_surge_needle_teleporter'), +(47958,'spell_ormorok_summon_crystal_spikes'), +(57082,'spell_ormorok_summon_crystal_spikes'), +(47703,'spell_dragonblight_fill_blood_unholy_frost_gem'), +(47724,'spell_dragonblight_fill_blood_unholy_frost_gem'), +(50252,'spell_dragonblight_fill_blood_unholy_frost_gem'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 17 AND `SourceEntry` IN +(24101,24102,24103,24104,69530,24105,24106,24107,24108,69533,47324,47325); + +-- DELETE FROM `spelldifficulty_dbc` WHERE `id` IN (47954,47955,47956,47957); +-- INSERT INTO `spelldifficulty_dbc` (`id`, `spellid0`, `spellid1`, `spellid2`, `spellid3`) VALUES +-- (47954,47954,57077,0,0), +-- (47955,47955,57078,0,0), +-- (47956,47956,57080,0,0), +-- (47957,47957,57081,0,0); + +UPDATE `spell_script_names` SET `ScriptName` = 'spell_ormorok_crystal_spike' WHERE `ScriptName` = 'spell_crystal_spike'; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index ee0104f9b0f..09aff3b741f 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -362,8 +362,30 @@ class spell_brutallus_burn : public AuraScript } }; +// 45185 - Stomp +class spell_brutallus_stomp : public SpellScript +{ + PrepareSpellScript(spell_brutallus_stomp); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BURN }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->RemoveAurasDueToSpell(SPELL_BURN); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_brutallus_stomp::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_boss_brutallus() { new boss_brutallus(); RegisterSpellScript(spell_brutallus_burn); + RegisterSpellScript(spell_brutallus_stomp); } diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index 8ee87833f93..fb3a8007270 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -17,6 +17,7 @@ #include "ScriptMgr.h" #include "GameObject.h" +#include "Map.h" #include "nexus.h" #include "ScriptedCreature.h" #include "SpellScript.h" @@ -28,7 +29,18 @@ enum Spells SPELL_FRENZY = 48017, SPELL_SUMMON_CRYSTALLINE_TANGLER = 61564, SPELL_CRYSTAL_SPIKES = 47958, + + SPELL_SUMMON_CRYSTAL_SPIKE_1 = 47954, + SPELL_SUMMON_CRYSTAL_SPIKE_2 = 47955, + SPELL_SUMMON_CRYSTAL_SPIKE_3 = 47956, + SPELL_SUMMON_CRYSTAL_SPIKE_4 = 47957, + + SPELL_SUMMON_CRYSTAL_SPIKE_1_H = 57077, + SPELL_SUMMON_CRYSTAL_SPIKE_2_H = 57078, + SPELL_SUMMON_CRYSTAL_SPIKE_3_H = 57080, + SPELL_SUMMON_CRYSTAL_SPIKE_4_H = 57081 }; + enum Yells { SAY_AGGRO = 1, @@ -243,10 +255,43 @@ private: }; +std::array<uint32, 4> const SummonSpells = +{ + SPELL_SUMMON_CRYSTAL_SPIKE_1, SPELL_SUMMON_CRYSTAL_SPIKE_2, SPELL_SUMMON_CRYSTAL_SPIKE_3, SPELL_SUMMON_CRYSTAL_SPIKE_4 +}; + +std::array<uint32, 4> const SummonSpellsHeroic = +{ + SPELL_SUMMON_CRYSTAL_SPIKE_1_H, SPELL_SUMMON_CRYSTAL_SPIKE_2_H, SPELL_SUMMON_CRYSTAL_SPIKE_3_H, SPELL_SUMMON_CRYSTAL_SPIKE_4_H +}; + +// 47958, 57082 - Crystal Spikes +class spell_ormorok_summon_crystal_spikes : public SpellScript +{ + PrepareSpellScript(spell_ormorok_summon_crystal_spikes); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo(SummonSpells) && ValidateSpellInfo(SummonSpellsHeroic); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + for (uint32 spells : (caster->GetMap()->IsHeroic() ? SummonSpellsHeroic : SummonSpells)) + caster->CastSpell(caster, spells); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_ormorok_summon_crystal_spikes::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + // 47941 - Crystal Spike -class spell_crystal_spike : public AuraScript +class spell_ormorok_crystal_spike : public AuraScript { - PrepareAuraScript(spell_crystal_spike); + PrepareAuraScript(spell_ormorok_crystal_spike); void HandlePeriodic(AuraEffect const* /*aurEff*/) { @@ -262,7 +307,7 @@ class spell_crystal_spike : public AuraScript void Register() override { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_crystal_spike::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_ormorok_crystal_spike::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); } }; @@ -270,5 +315,6 @@ void AddSC_boss_ormorok() { RegisterNexusCreatureAI(boss_ormorok); RegisterNexusCreatureAI(npc_crystal_spike_trigger); - RegisterSpellScript(spell_crystal_spike); + RegisterSpellScript(spell_ormorok_summon_crystal_spikes); + RegisterSpellScript(spell_ormorok_crystal_spike); } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 00645b16f8b..75689833ab1 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -879,6 +879,78 @@ class spell_dragonblight_bombard_the_ballistae_fx_master : public SpellScript } }; +/*###### +## Quest 12060, 12061: Projections and Plans +######*/ + +enum ProjectionsAndPlans +{ + SPELL_TELE_MOONREST_GARDENS = 47324, + SPELL_TELE_SURGE_NEEDLE = 47325, + + AREA_SURGE_NEEDLE = 4156, + AREA_MOONREST_GARDENS = 4157 +}; + +// 47097 - Surge Needle Teleporter +class spell_dragonblight_surge_needle_teleporter : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_surge_needle_teleporter); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TELE_MOONREST_GARDENS, SPELL_TELE_SURGE_NEEDLE }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + switch (caster->GetAreaId()) + { + case AREA_SURGE_NEEDLE: + caster->CastSpell(caster, SPELL_TELE_MOONREST_GARDENS); + break; + case AREA_MOONREST_GARDENS: + caster->CastSpell(caster, SPELL_TELE_SURGE_NEEDLE); + break; + default: + break; + } + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_surge_needle_teleporter::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12125, 12126, 12127: In Service of Blood & In Service of the Unholy & In Service of Frost +######*/ + +// 47703 - Unholy Union +// 47724 - Frost Draw +// 50252 - Blood Draw +class spell_dragonblight_fill_blood_unholy_frost_gem : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue())); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_fill_blood_unholy_frost_gem::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_dragonblight() { RegisterCreatureAI(npc_commander_eligor_dawnbringer); @@ -894,4 +966,6 @@ void AddSC_dragonblight() RegisterSpellScript(spell_dragonblight_scarlet_raven_priest_image_master); RegisterSpellScript(spell_dragonblight_cancel_scarlet_raven_priest_image); RegisterSpellScript(spell_dragonblight_bombard_the_ballistae_fx_master); + RegisterSpellScript(spell_dragonblight_surge_needle_teleporter); + RegisterSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem); } diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp index d70b9ecb6ed..f7d921875f9 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp @@ -27,6 +27,7 @@ EndScriptData */ #include "MotionMaster.h" #include "ObjectAccessor.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "serpent_shrine.h" #include "TemporarySummon.h" @@ -69,7 +70,7 @@ enum FathomlordKarathress //Caribdis Spells SPELL_WATER_BOLT_VOLLEY = 38335, SPELL_TIDAL_SURGE = 38358, - SPELL_TIDAL_SURGE_FREEZE = 38357, + SPELL_TIDAL_SURGE_EFFECT = 38353, SPELL_HEAL = 38330, SPELL_SUMMON_CYCLONE = 38337, SPELL_CYCLONE_CYCLONE = 29538, @@ -648,10 +649,7 @@ public: //TidalSurge_Timer if (TidalSurge_Timer <= diff) { - DoCastVictim(SPELL_TIDAL_SURGE); - // Hacky way to do it - won't trigger elseways - if (me->GetVictim()) - me->EnsureVictim()->CastSpell(me->GetVictim(), SPELL_TIDAL_SURGE_FREEZE, true); + DoCastSelf(SPELL_TIDAL_SURGE); TidalSurge_Timer = 15000 + rand32() % 5000; } else TidalSurge_Timer -= diff; @@ -714,10 +712,32 @@ public: }; }; +// 38358 - Tidal Surge +class spell_fathomlord_karathress_tidal_surge : public SpellScript +{ + PrepareSpellScript(spell_fathomlord_karathress_tidal_surge); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TIDAL_SURGE_EFFECT }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TIDAL_SURGE_EFFECT, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_fathomlord_karathress_tidal_surge::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_boss_fathomlord_karathress() { new boss_fathomlord_karathress(); new boss_fathomguard_sharkkis(); new boss_fathomguard_tidalvess(); new boss_fathomguard_caribdis(); + RegisterSpellScript(spell_fathomlord_karathress_tidal_surge); } diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 5b5a7e1e9b3..6b555393878 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -1314,6 +1314,32 @@ class spell_item_heartpierce : public SpellScriptLoader } }; +enum HourglassSand +{ + SPELL_BROOD_AFFLICTION_BRONZE = 23170 +}; + +// 23645 - Hourglass Sand +class spell_item_hourglass_sand : public SpellScript +{ + PrepareSpellScript(spell_item_hourglass_sand); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BROOD_AFFLICTION_BRONZE }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + GetCaster()->RemoveAurasDueToSpell(SPELL_BROOD_AFFLICTION_BRONZE); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_item_hourglass_sand::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + // 40971 - Bonus Healing (Crystal Spire of Karabor) class spell_item_crystal_spire_of_karabor : public AuraScript { @@ -3016,6 +3042,35 @@ class spell_item_impale_leviroth : public SpellScript } }; +enum LifegivingGem +{ + SPELL_GIFT_OF_LIFE_1 = 23782, + SPELL_GIFT_OF_LIFE_2 = 23783 +}; + +// 23725 - Gift of Life +class spell_item_lifegiving_gem : public SpellScript +{ + PrepareSpellScript(spell_item_lifegiving_gem); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_GIFT_OF_LIFE_1, SPELL_GIFT_OF_LIFE_2 }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_GIFT_OF_LIFE_1, true); + caster->CastSpell(caster, SPELL_GIFT_OF_LIFE_2, true); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_item_lifegiving_gem::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + enum NitroBoosts { SPELL_NITRO_BOOSTS_SUCCESS = 54861, @@ -4419,6 +4474,7 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_harm_prevention_belt); new spell_item_heartpierce<SPELL_INVIGORATION_ENERGY, SPELL_INVIGORATION_MANA, SPELL_INVIGORATION_RAGE, SPELL_INVIGORATION_RP>("spell_item_heartpierce"); new spell_item_heartpierce<SPELL_INVIGORATION_ENERGY_HERO, SPELL_INVIGORATION_MANA_HERO, SPELL_INVIGORATION_RAGE_HERO, SPELL_INVIGORATION_RP_HERO>("spell_item_heartpierce_hero"); + RegisterSpellScript(spell_item_hourglass_sand); RegisterSpellScript(spell_item_crystal_spire_of_karabor); RegisterSpellScript(spell_item_make_a_wish); RegisterSpellScript(spell_item_mark_of_conquest); @@ -4463,6 +4519,7 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_demon_broiled_surprise); RegisterSpellScript(spell_item_complete_raptor_capture); RegisterSpellScript(spell_item_impale_leviroth); + RegisterSpellScript(spell_item_lifegiving_gem); RegisterSpellScript(spell_item_nitro_boosts); RegisterSpellScript(spell_item_nitro_boosts_backfire); RegisterSpellScript(spell_item_rocket_boots); diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 454dc6bb33f..51baea50382 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1911,6 +1911,70 @@ class spell_quest_portal_with_condition : public SpellScript } }; +enum TributeSpells +{ + SPELL_GROMS_TROLL_TRIBUTE = 24101, + SPELL_GROMS_TAUREN_TRIBUTE = 24102, + SPELL_GROMS_UNDEAD_TRIBUTE = 24103, + SPELL_GROMS_ORC_TRIBUTE = 24104, + SPELL_GROMS_BLOODELF_TRIBUTE = 69530, + SPELL_UTHERS_HUMAN_TRIBUTE = 24105, + SPELL_UTHERS_GNOME_TRIBUTE = 24106, + SPELL_UTHERS_DWARF_TRIBUTE = 24107, + SPELL_UTHERS_NIGHTELF_TRIBUTE = 24108, + SPELL_UTHERS_DRAENEI_TRIBUTE = 69533 +}; + +// 24194 - Uther's Tribute +// 24195 - Grom's Tribute +class spell_quest_uther_grom_tribute : public SpellScript +{ + PrepareSpellScript(spell_quest_uther_grom_tribute); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_GROMS_TROLL_TRIBUTE, SPELL_UTHERS_HUMAN_TRIBUTE, + SPELL_GROMS_TAUREN_TRIBUTE, SPELL_UTHERS_GNOME_TRIBUTE, + SPELL_GROMS_UNDEAD_TRIBUTE, SPELL_UTHERS_DWARF_TRIBUTE, + SPELL_GROMS_ORC_TRIBUTE, SPELL_UTHERS_NIGHTELF_TRIBUTE, + SPELL_GROMS_BLOODELF_TRIBUTE, SPELL_UTHERS_DRAENEI_TRIBUTE + }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Player* caster = GetCaster()->ToPlayer(); + if (!caster) + return; + + uint32 spell = 0; + switch (caster->GetRace()) + { + case RACE_TROLL: spell = SPELL_GROMS_TROLL_TRIBUTE; break; + case RACE_TAUREN: spell = SPELL_GROMS_TAUREN_TRIBUTE; break; + case RACE_UNDEAD_PLAYER: spell = SPELL_GROMS_UNDEAD_TRIBUTE; break; + case RACE_ORC: spell = SPELL_GROMS_ORC_TRIBUTE; break; + case RACE_BLOODELF: spell = SPELL_GROMS_BLOODELF_TRIBUTE; break; + case RACE_HUMAN: spell = SPELL_UTHERS_HUMAN_TRIBUTE; break; + case RACE_GNOME: spell = SPELL_UTHERS_GNOME_TRIBUTE; break; + case RACE_DWARF: spell = SPELL_UTHERS_DWARF_TRIBUTE; break; + case RACE_NIGHTELF: spell = SPELL_UTHERS_NIGHTELF_TRIBUTE; break; + case RACE_DRAENEI: spell = SPELL_UTHERS_DRAENEI_TRIBUTE; break; + default: break; + } + + if (spell) + caster->CastSpell(caster, spell); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_quest_uther_grom_tribute::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + /*###### ## Quest 14386 Leader of the Pack ######*/ @@ -2005,5 +2069,6 @@ void AddSC_quest_spell_scripts() RegisterSpellScript(spell_q11306_failed_mix_43378); RegisterSpellScript(spell_quest_taming_the_beast); RegisterSpellScript(spell_quest_portal_with_condition); + RegisterSpellScript(spell_quest_uther_grom_tribute); RegisterSpellScript(spell_q14386_call_attack_mastiffs); } |