diff --git a/data/sql/updates/pending_db_world/rev_1576535250226124911.sql b/data/sql/updates/pending_db_world/rev_1576535250226124911.sql new file mode 100644 index 000000000..83b5a6e88 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1576535250226124911.sql @@ -0,0 +1,6 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1576535250226124911'); + +DELETE FROM `spell_script_names` WHERE `spell_id` = 70937; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) +VALUES +(70937, 'spell_mage_glyph_of_eternal_water'); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 3417ea75b..ca4d6563f 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -929,7 +929,18 @@ void WorldSession::SendPetNameQuery(uint64 petguid, uint32 petnumber) return; } - std::string name = pet->GetName(); + std::string name; + if (pet->GetEntry() == NPC_WATER_ELEMENTAL_PERM) + { + // Use localized creature name for the mage pet + LocaleConstant loc_idx = GetSessionDbLocaleIndex(); + if (loc_idx != DEFAULT_LOCALE) + name = pet->GetNameForLocaleIdx(loc_idx); + else + name = pet->GetCreatureTemplate()->Name; + } + else + name = pet->GetName(); WorldPacket data(SMSG_PET_NAME_QUERY_RESPONSE, (4+4+name.size()+1)); data << uint32(petnumber); diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 22a1e1e3c..a8f53556d 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -16,6 +16,7 @@ #include "Player.h" #include "SpellMgr.h" #include "TemporarySummon.h" +#include "Pet.h" enum MageSpells { @@ -465,6 +466,36 @@ class spell_mage_brain_freeze : public SpellScriptLoader } }; +class spell_mage_glyph_of_eternal_water : public SpellScriptLoader +{ + public: + spell_mage_glyph_of_eternal_water() : SpellScriptLoader("spell_mage_glyph_of_eternal_water") { } + + class spell_mage_glyph_of_eternal_water_AuraScript : public AuraScript + { + PrepareAuraScript(spell_mage_glyph_of_eternal_water_AuraScript); + + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Unit* target = GetTarget()) + if (Player* player = target->ToPlayer()) + if (Pet* pet = player->GetPet()) + if (pet->GetEntry() == NPC_WATER_ELEMENTAL_PERM) + pet->Remove(PET_SAVE_NOT_IN_SLOT); + } + + void Register() + { + OnEffectRemove += AuraEffectRemoveFn(spell_mage_glyph_of_eternal_water_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_mage_glyph_of_eternal_water_AuraScript(); + } +}; + // Theirs // Incanter's Absorbtion @@ -1091,6 +1122,7 @@ void AddSC_mage_spell_scripts() new spell_mage_burnout_trigger(); new spell_mage_pet_scaling(); new spell_mage_brain_freeze(); + new spell_mage_glyph_of_eternal_water(); // Theirs new spell_mage_blast_wave();