aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2024-08-19 22:32:52 +0200
committerGitHub <noreply@github.com>2024-08-19 22:32:52 +0200
commitafa16f4fdaba7ff16c28cc9684e2d57c0f08263f (patch)
tree7fc3ed2e0564a514aa4c8580243d4c3299099ea0
parent296f7a8cf1950ebe3ae9fbd47a2c8fc3c7c82dfb (diff)
Scripts/Spells: Implement druid talent New Moon (#30136)
-rw-r--r--sql/updates/world/master/2024_08_19_03_world.sql5
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp45
2 files changed, 50 insertions, 0 deletions
diff --git a/sql/updates/world/master/2024_08_19_03_world.sql b/sql/updates/world/master/2024_08_19_03_world.sql
new file mode 100644
index 00000000000..9d0b83fc182
--- /dev/null
+++ b/sql/updates/world/master/2024_08_19_03_world.sql
@@ -0,0 +1,5 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_new_moon', 'spell_dru_half_moon', 'spell_dru_full_moon');
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(274281, 'spell_dru_new_moon'),
+(274282, 'spell_dru_half_moon'),
+(274283, 'spell_dru_full_moon');
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index 0515c7bf421..cd75086c51c 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -81,12 +81,15 @@ enum DruidSpells
SPELL_DRUID_FORMS_TRINKET_MOONKIN = 37343,
SPELL_DRUID_FORMS_TRINKET_NONE = 37344,
SPELL_DRUID_FORMS_TRINKET_TREE = 37342,
+ SPELL_DRUID_FULL_MOON = 274283,
SPELL_DRUID_GALACTIC_GUARDIAN_AURA = 213708,
SPELL_DRUID_GERMINATION = 155675,
SPELL_DRUID_GLYPH_OF_STARS = 114301,
SPELL_DRUID_GLYPH_OF_STARS_VISUAL = 114302,
SPELL_DRUID_GORE_PROC = 93622,
SPELL_DRUID_GROWL = 6795,
+ SPELL_DRUID_HALF_MOON = 274282,
+ SPELL_DRUID_HALF_MOON_OVERRIDE = 274297,
SPELL_DRUID_IDOL_OF_FERAL_SHADOWS = 34241,
SPELL_DRUID_IDOL_OF_WORSHIP = 60774,
SPELL_DRUID_INCARNATION = 117679,
@@ -102,6 +105,8 @@ enum DruidSpells
SPELL_DRUID_MANGLE = 33917,
SPELL_DRUID_MASS_ENTANGLEMENT = 102359,
SPELL_DRUID_MOONFIRE_DAMAGE = 164812,
+ SPELL_DRUID_NEW_MOON = 274281,
+ SPELL_DRUID_NEW_MOON_OVERRIDE = 274295,
SPELL_DRUID_POWER_OF_THE_ARCHDRUID = 392302,
SPELL_DRUID_PROWL = 5215,
SPELL_DRUID_REGROWTH = 8936,
@@ -1292,6 +1297,43 @@ class spell_dru_moonfire : public SpellScript
}
};
+// 274283 - Full Moon
+// 274282 - Half Moon
+// 274281 - New Moon
+class spell_dru_new_moon : public SpellScript
+{
+public:
+ explicit spell_dru_new_moon(Optional<uint32> newOverrideSpell, Optional<uint32> removeOverrideSpell)
+ : _newOverrideSpell(newOverrideSpell), _removeOverrideSpell(removeOverrideSpell) { }
+
+private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return (!_newOverrideSpell || ValidateSpellInfo({ *_newOverrideSpell }))
+ && (!_removeOverrideSpell || ValidateSpellInfo({ *_removeOverrideSpell }));
+ }
+
+ void OverrideMoon() const
+ {
+ Unit* caster = GetCaster();
+ if (_newOverrideSpell)
+ caster->CastSpell(caster, *_newOverrideSpell, CastSpellExtraArgs()
+ .SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR)
+ .SetTriggeringSpell(GetSpell()));
+
+ if (_removeOverrideSpell)
+ caster->RemoveAurasDueToSpell(*_removeOverrideSpell);
+ }
+
+ void Register() override
+ {
+ AfterCast += SpellCastFn(spell_dru_new_moon::OverrideMoon);
+ }
+
+ Optional<uint32> _newOverrideSpell;
+ Optional<uint32> _removeOverrideSpell;
+};
+
// 16864 - Omen of Clarity
class spell_dru_omen_of_clarity : public AuraScript
{
@@ -2200,6 +2242,9 @@ void AddSC_druid_spell_scripts()
RegisterSpellScript(spell_dru_lunar_inspiration);
RegisterSpellScript(spell_dru_luxuriant_soil);
RegisterSpellScript(spell_dru_moonfire);
+ RegisterSpellScriptWithArgs(spell_dru_new_moon, "spell_dru_full_moon", Optional<DruidSpells>(), Optional<DruidSpells>(SPELL_DRUID_HALF_MOON_OVERRIDE));
+ RegisterSpellScriptWithArgs(spell_dru_new_moon, "spell_dru_half_moon", Optional<DruidSpells>(SPELL_DRUID_HALF_MOON_OVERRIDE), Optional<DruidSpells>(SPELL_DRUID_NEW_MOON_OVERRIDE));
+ RegisterSpellScriptWithArgs(spell_dru_new_moon, "spell_dru_new_moon", Optional<DruidSpells>(SPELL_DRUID_NEW_MOON_OVERRIDE), Optional<DruidSpells>());
RegisterSpellScript(spell_dru_omen_of_clarity);
RegisterSpellScript(spell_dru_power_of_the_archdruid);
RegisterSpellScript(spell_dru_prowl);