diff options
-rw-r--r-- | sql/updates/world/master/2025_08_22_00_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 37 |
2 files changed, 44 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_08_22_00_world.sql b/sql/updates/world/master/2025_08_22_00_world.sql new file mode 100644 index 00000000000..7586597a7d3 --- /dev/null +++ b/sql/updates/world/master/2025_08_22_00_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (372152); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(372152,0x00,7,0x00000040,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0,0,0,0); -- Dream of Cenarius + +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dru_dream_of_cenarius_guardian'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(372119,'spell_dru_dream_of_cenarius_guardian'); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 5c3fe103d10..abba7934f48 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -62,6 +62,8 @@ enum DruidSpells SPELL_DRUID_CULTIVATION_HEAL = 200389, SPELL_DRUID_CURIOUS_BRAMBLEPATCH = 330670, SPELL_DRUID_DREAMSTATE = 450346, + SPELL_DRUID_DREAM_OF_CENARIUS = 372152, + SPELL_DRUID_DREAM_OF_CENARIUS_COOLDOWN = 372523, SPELL_DRUID_EARTHWARDEN_AURA = 203975, SPELL_DRUID_ECLIPSE_DUMMY = 79577, SPELL_DRUID_ECLIPSE_LUNAR_AURA = 48518, @@ -475,6 +477,40 @@ class spell_dru_dash : public AuraScript } }; +// 372119 - Dream of Cenarius (Guardian) +class spell_dru_dream_of_cenarius_guardian : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DRUID_DREAM_OF_CENARIUS, SPELL_DRUID_DREAM_OF_CENARIUS_COOLDOWN }); + } + + bool CheckEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const + { + if (GetUnitOwner()->HasAura(SPELL_DRUID_DREAM_OF_CENARIUS_COOLDOWN)) + return false; + + return roll_chance_f(GetUnitOwner()->GetUnitCriticalChanceDone(BASE_ATTACK)); + } + + void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& /*procInfo*/) const + { + Unit* target = GetTarget(); + CastSpellExtraArgs args; + args.SetTriggeringAura(aurEff); + args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + + target->CastSpell(target, SPELL_DRUID_DREAM_OF_CENARIUS, args); + target->CastSpell(target, SPELL_DRUID_DREAM_OF_CENARIUS_COOLDOWN, args); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_dru_dream_of_cenarius_guardian::CheckEffectProc, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_dru_dream_of_cenarius_guardian::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 203974 - Earthwarden class spell_dru_earthwarden : public AuraScript { @@ -2390,6 +2426,7 @@ void AddSC_druid_spell_scripts() RegisterSpellScript(spell_dru_celestial_alignment); RegisterSpellScript(spell_dru_cultivation); RegisterSpellScript(spell_dru_dash); + RegisterSpellScript(spell_dru_dream_of_cenarius_guardian); RegisterSpellScript(spell_dru_earthwarden); RegisterSpellScript(spell_dru_eclipse_aura); RegisterSpellScript(spell_dru_eclipse_dummy); |