diff options
-rw-r--r-- | sql/base/world_database.sql | 3 | ||||
-rw-r--r-- | sql/updates/2011_01_08_0_world_spell_script_names.sql | 5 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp | 54 |
3 files changed, 62 insertions, 0 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 98c75052c89..270b8ae0262 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -26896,6 +26896,9 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES -- Ulduar ( 62717, 'spell_ignis_slag_pot'), ( 63477, 'spell_ignis_slag_pot'), +( 62521, 'spell_attuned_to_nature_dose_reduction'), +( 62524, 'spell_attuned_to_nature_dose_reduction'), +( 62525, 'spell_attuned_to_nature_dose_reduction'), -- quest ( 8913, 'spell_q55_sacred_cleansing'), ( 17271, 'spell_q5206_test_fetid_skull'), diff --git a/sql/updates/2011_01_08_0_world_spell_script_names.sql b/sql/updates/2011_01_08_0_world_spell_script_names.sql new file mode 100644 index 00000000000..8d3e7197b48 --- /dev/null +++ b/sql/updates/2011_01_08_0_world_spell_script_names.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN (62521,62524,62525); +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(62521,'spell_attuned_to_nature_dose_reduction'), +(62524,'spell_attuned_to_nature_dose_reduction'), +(62525,'spell_attuned_to_nature_dose_reduction'); diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp index d14dd47b2c0..0076ed9f55f 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp @@ -121,8 +121,62 @@ public: }; +enum eSpells +{ + SPELL_ATTUNED_TO_NATURE_2_DOSE_REDUCTION = 62524, + SPELL_ATTUNED_TO_NATURE_10_DOSE_REDUCTION = 62525, + SPELL_ATTUNED_TO_NATURE_25_DOSE_REDUCTION = 62521, +}; + +class spell_attuned_to_nature_dose_reduction : public SpellScriptLoader +{ +public: + spell_attuned_to_nature_dose_reduction() : SpellScriptLoader("spell_attuned_to_nature_dose_reduction") { } + + class spell_attuned_to_nature_dose_reduction_SpellScript : public SpellScript + { + PrepareSpellScript(spell_attuned_to_nature_dose_reduction_SpellScript) + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit * target = GetHitUnit(); + SpellEntry const * m_spellInfo = GetSpellInfo(); + switch (m_spellInfo->Id) + { + case SPELL_ATTUNED_TO_NATURE_2_DOSE_REDUCTION: + if (target->HasAura(GetEffectValue())) + for (uint8 n = 0; n < 2; n++) + target->RemoveAuraFromStack(GetEffectValue(), 0, AURA_REMOVE_BY_DEFAULT); + break; + case SPELL_ATTUNED_TO_NATURE_10_DOSE_REDUCTION: + if (target->HasAura(GetEffectValue())) + for (uint8 n = 0; n < 10; n++) + target->RemoveAuraFromStack(GetEffectValue(), 0, AURA_REMOVE_BY_DEFAULT); + break; + case SPELL_ATTUNED_TO_NATURE_25_DOSE_REDUCTION: + if (target->HasAura(GetEffectValue())) + for (uint8 n = 0; n < 25; n++) + target->RemoveAuraFromStack(GetEffectValue(), 0, AURA_REMOVE_BY_DEFAULT); + break; + default: + break; + } + } + + void Register() + { + OnEffect += SpellEffectFn(spell_attuned_to_nature_dose_reduction_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript * GetSpellScript() const + { + return new spell_attuned_to_nature_dose_reduction_SpellScript(); + } +}; void AddSC_boss_freya() { new boss_freya(); + new spell_attuned_to_nature_dose_reduction(); } |