diff options
-rw-r--r-- | sql/updates/world/master/2022_09_19_00_world_druid_glyph_of_stars.sql | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 18 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 32 |
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); |