aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2022_09_19_00_world_druid_glyph_of_stars.sql3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp18
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp32
3 files changed, 47 insertions, 6 deletions
diff --git a/sql/updates/world/master/2022_09_19_00_world_druid_glyph_of_stars.sql b/sql/updates/world/master/2022_09_19_00_world_druid_glyph_of_stars.sql
new file mode 100644
index 00000000000..2b36c4fcb28
--- /dev/null
+++ b/sql/updates/world/master/2022_09_19_00_world_druid_glyph_of_stars.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dru_glyph_of_stars';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(24858,'spell_dru_glyph_of_stars');
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index a0d14ec192e..f90815ac414 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -11843,12 +11843,18 @@ uint32 Unit::GetModelForForm(ShapeshiftForm form, uint32 spellId) const
// Hardcoded cases
switch (spellId)
{
- case 7090: // Bear Form
- return 29414;
- case 35200: // Roc Form
- return 4877;
- default:
- break;
+ case 7090: // Bear Form
+ return 29414;
+ case 35200: // Roc Form
+ return 4877;
+ case 24858: // Moonkin Form
+ {
+ if (HasAura(114301)) // Glyph of Stars
+ return 0;
+ break;
+ }
+ default:
+ break;
}
if (Player const* player = ToPlayer())
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index d194420a8a2..00146e17e91 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -66,6 +66,8 @@ enum DruidSpells
SPELL_DRUID_FORMS_TRINKET_NONE = 37344,
SPELL_DRUID_FORMS_TRINKET_TREE = 37342,
SPELL_DRUID_GALACTIC_GUARDIAN_AURA = 213708,
+ SPELL_DRUID_GLYPH_OF_STARS = 114301,
+ SPELL_DRUID_GLYPH_OF_STARS_VISUAL = 114302,
SPELL_DRUID_GORE_PROC = 93622,
SPELL_DRUID_GROWL = 6795,
SPELL_DRUID_IDOL_OF_FERAL_SHADOWS = 34241,
@@ -627,6 +629,35 @@ class spell_dru_galactic_guardian : public AuraScript
}
};
+// 24858 - Moonkin Form
+class spell_dru_glyph_of_stars : public AuraScript
+{
+ PrepareAuraScript(spell_dru_glyph_of_stars);
+
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DRUID_GLYPH_OF_STARS, SPELL_DRUID_GLYPH_OF_STARS_VISUAL });
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ if (target->HasAura(SPELL_DRUID_GLYPH_OF_STARS))
+ target->CastSpell(target, SPELL_DRUID_GLYPH_OF_STARS_VISUAL, true);
+ }
+
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_GLYPH_OF_STARS_VISUAL);
+ }
+
+ void Register() override
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_dru_glyph_of_stars::OnApply, EFFECT_1, SPELL_AURA_MOD_SHAPESHIFT, AURA_EFFECT_HANDLE_REAL);
+ OnEffectRemove += AuraEffectRemoveFn(spell_dru_glyph_of_stars::OnRemove, EFFECT_1, SPELL_AURA_MOD_SHAPESHIFT, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
// 210706 - Gore
class spell_dru_gore : public AuraScript
{
@@ -1595,6 +1626,7 @@ void AddSC_druid_spell_scripts()
RegisterSpellScript(spell_dru_ferocious_bite);
RegisterSpellScript(spell_dru_forms_trinket);
RegisterSpellScript(spell_dru_galactic_guardian);
+ RegisterSpellScript(spell_dru_glyph_of_stars);
RegisterSpellScript(spell_dru_gore);
RegisterSpellScript(spell_dru_incapacitating_roar);
RegisterSpellScript(spell_dru_innervate);