diff --git a/data/sql/updates/pending_db_world/rev_1687180111436507500.sql b/data/sql/updates/pending_db_world/rev_1687180111436507500.sql new file mode 100644 index 000000000..b2db6d824 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1687180111436507500.sql @@ -0,0 +1,8 @@ +-- You need to kill Skartax +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 17) AND (`SourceGroup` = 0) AND (`SourceEntry` = 37285) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 29) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 21207) AND (`ConditionValue2` = 30) AND (`ConditionValue3` = 1); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 37285, 0, 0, 29, 0, 21207, 30, 1, 0, 0, 0, '', 'Disrupt the summoning of infernal souls within the summoning chamber of the Deathforge.'); + +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_disrupt_summoning_ritual'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(37285, 'spell_disrupt_summoning_ritual'); diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index 164a5513f..6f77224f4 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -1811,6 +1811,32 @@ class spell_calling_korkron_or_wildhammer : public SpellScript } }; +enum InfernalOversoul +{ + NPC_INFERNAL_OVERSOUL = 21735, + SPELL_DISRUPT_SUMMONING_RITUAL = 37285 +}; + +class spell_disrupt_summoning_ritual : public SpellScript +{ +public: + PrepareSpellScript(spell_disrupt_summoning_ritual); + + SpellCastResult CheckRequirement() + { + if (Unit* caster = GetCaster()) + if (Creature* infernal = caster->FindNearestCreature(NPC_INFERNAL_OVERSOUL, 100.0f)) + if (!infernal->HasAura(SPELL_DISRUPT_SUMMONING_RITUAL)) + return SPELL_FAILED_CASTER_AURASTATE; + return SPELL_CAST_OK; + } + + void Register() override + { + OnCheckCast += SpellCheckCastFn(spell_disrupt_summoning_ritual::CheckRequirement); + } +}; + void AddSC_shadowmoon_valley() { // Ours @@ -1834,4 +1860,5 @@ void AddSC_shadowmoon_valley() new npc_shadowmoon_tuber_node(); RegisterCreatureAI(npc_korkron_or_wildhammer); RegisterSpellScript(spell_calling_korkron_or_wildhammer); + RegisterSpellScript(spell_disrupt_summoning_ritual); }