From db34f6480fa6a84cce3fa2ee76dbe79fce9699c6 Mon Sep 17 00:00:00 2001 From: ariel- Date: Sat, 7 Jan 2017 13:22:58 -0300 Subject: DB/Script: The Only Cure is More Green Glow Closes #1723 SQL by Staleness89, corrections by Killyana Script by Keader, corrections by sirikfoll and me --- .../world/3.3.5/2017_01_07_03_world_335.sql | 19 +++++++++ .../EasternKingdoms/Gnomeregan/gnomeregan.cpp | 48 ++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 sql/updates/world/3.3.5/2017_01_07_03_world_335.sql diff --git a/sql/updates/world/3.3.5/2017_01_07_03_world_335.sql b/sql/updates/world/3.3.5/2017_01_07_03_world_335.sql new file mode 100644 index 00000000000..ac9d66a98b3 --- /dev/null +++ b/sql/updates/world/3.3.5/2017_01_07_03_world_335.sql @@ -0,0 +1,19 @@ +DELETE FROM `conditions` WHERE `SourceEntry`= 11513 AND (`SourceTypeOrReferenceId`=17 OR `SourceTypeOrReferenceId`=13); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 11513, 0, 0, 29, 0, 6213, 5, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 11513, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 11513, 0, 1, 29, 0, 6329, 5, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 11513, 0, 1, 36, 0, 0, 0, 0, 0, 0, 0, '', 'Must be near NPC to cast'); + +DELETE FROM `conditions` WHERE `SourceEntry`= 12709 AND (`SourceTypeOrReferenceId`=17 OR `SourceTypeOrReferenceId`=13); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 12709, 0, 0, 29, 0, 6218, 5, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 12709, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 12709, 0, 1, 29, 0, 6220, 5, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 12709, 0, 1, 36, 0, 0, 0, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 12709, 0, 2, 29, 0, 6219, 5, 0, 0, 0, 0, '', 'Must be near NPC to cast'), +(17, 0, 12709, 0, 2, 36, 0, 0, 0, 0, 0, 0, 0, '', 'Must be near NPC to cast'); + +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_collecting_fallout'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(12709, 'spell_collecting_fallout'); diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp index bf1fa7b3dde..ed754c68202 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp @@ -545,8 +545,56 @@ public: }; +// 12709 - Collecting Fallout +class spell_collecting_fallout : public SpellScriptLoader +{ + public: + spell_collecting_fallout() : SpellScriptLoader("spell_collecting_fallout") { } + + class spell_collecting_fallout_SpellScript : public SpellScript + { + PrepareSpellScript(spell_collecting_fallout_SpellScript); + + bool Load() override + { + _spellFail = true; + return true; + } + + void OnLaunch(SpellEffIndex effIndex) + { + // estimated 25% chance of success + if (roll_chance_i(25)) + _spellFail = false; + else + PreventHitDefaultEffect(effIndex); + } + + void HandleFail(SpellEffIndex effIndex) + { + if (!_spellFail) + PreventHitDefaultEffect(effIndex); + } + + void Register() override + { + OnEffectLaunch += SpellEffectFn(spell_collecting_fallout_SpellScript::OnLaunch, EFFECT_0, SPELL_EFFECT_TRIGGER_SPELL); + OnEffectLaunch += SpellEffectFn(spell_collecting_fallout_SpellScript::HandleFail, EFFECT_1, SPELL_EFFECT_TRIGGER_SPELL); + } + + bool _spellFail; + }; + + SpellScript* GetSpellScript() const override + { + return new spell_collecting_fallout_SpellScript(); + } +}; + void AddSC_gnomeregan() { new npc_blastmaster_emi_shortfuse(); new boss_grubbis(); + + new spell_collecting_fallout(); } -- cgit v1.2.3