aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2025_08_22_00_world.sql7
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp37
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);