diff --git a/data/sql/updates/pending_db_world/rev_1685547548027950300.sql b/data/sql/updates/pending_db_world/rev_1685547548027950300.sql new file mode 100644 index 000000000..53ee97e6a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1685547548027950300.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` IN (34246, 60779) AND `ScriptName` = 'spell_dru_idol_lifebloom'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(34246, 'spell_dru_idol_lifebloom'), +(60779, 'spell_dru_idol_lifebloom'); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e835febb3..c9c3127d0 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12465,32 +12465,6 @@ uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, ui switch (spellProto->SpellFamilyName) { - case SPELLFAMILY_DRUID: - { - // Nourish vs Idol of the Flourishing Life - if (spellProto->SpellFamilyFlags[1] & 0x02000000) - { - if (AuraEffect const* relicAurEff = GetAuraEffect(64949, EFFECT_0)) - { - DoneAdvertisedBenefit += relicAurEff->GetAmount(); - } - } - - // Lifebloom vs Idol of Lush Moss/Increased Lifebloom Periodic - if (spellProto->SpellFamilyFlags[1] & 00000010) - { - if (AuraEffect const* relicAurEff = GetAuraEffect(60779, EFFECT_0)) - { - DoneAdvertisedBenefit += relicAurEff->GetAmount(); - } - - if (AuraEffect const* relicAurEff = GetAuraEffect(34246, EFFECT_0)) - { - DoneAdvertisedBenefit += relicAurEff->GetAmount(); - } - } - break; - } case SPELLFAMILY_DEATHKNIGHT: { // Impurity diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index e37231d02..cc3db3b01 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -439,6 +439,13 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].SpellClassMask = flag96(0x00000040, 0x00000000, 0x00000000); }); + // Idol of the Flourishing Life + ApplySpellFix({ 64949 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_0].SpellClassMask = flag96(0x00000000, 0x02000000, 0x00000000); + spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_ADD_FLAT_MODIFIER; + }); + ApplySpellFix({ 34231, // Libram of the Lightbringer 60792, // Libram of Tolerance diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index e6218430f..d7da1c33c 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -500,6 +500,31 @@ class spell_dru_glyph_of_starfire : public SpellScript } }; +// 34246 - Idol of the Emerald Queen +// 60779 - Idol of Lush Moss +class spell_dru_idol_lifebloom : public AuraScript +{ + PrepareAuraScript(spell_dru_idol_lifebloom); + + void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod) + { + if (!spellMod) + { + spellMod = new SpellModifier(GetAura()); + spellMod->op = SPELLMOD_DOT; + spellMod->type = SPELLMOD_FLAT; + spellMod->spellId = GetId(); + spellMod->mask = aurEff->GetSpellInfo()->Effects[aurEff->GetEffIndex()].SpellClassMask; + } + spellMod->value = aurEff->GetAmount() / 7; + } + + void Register() override + { + DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_dru_idol_lifebloom::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 29166 - Innervate class spell_dru_innervate : public AuraScript { @@ -1158,6 +1183,7 @@ void AddSC_druid_spell_scripts() RegisterSpellScript(spell_dru_dash); RegisterSpellScript(spell_dru_enrage); RegisterSpellScript(spell_dru_glyph_of_starfire); + RegisterSpellScript(spell_dru_idol_lifebloom); RegisterSpellScript(spell_dru_innervate); RegisterSpellScript(spell_dru_lifebloom); RegisterSpellScript(spell_dru_living_seed);