From db260914ae881177865f2221b2efd3f323cd5f27 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 17 Mar 2024 12:43:42 +0100 Subject: [PATCH 01/11] DB/Quest: Update A Suitable Disguise quest_poi_points from master closes #29812 by CraftedRO --- sql/updates/world/3.3.5/2024_03_17_00_world.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_17_00_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_17_00_world.sql b/sql/updates/world/3.3.5/2024_03_17_00_world.sql new file mode 100644 index 0000000000000..780b299ce6bc1 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_17_00_world.sql @@ -0,0 +1,6 @@ +-- Horde +UPDATE `quest_poi_points` SET `X`=5893, `Y`=471, `VerifiedBuild`=53007 WHERE `QuestID`=24556 AND `Idx1`=1; +UPDATE `quest_poi_points` SET `X`=5798, `Y`=696, `VerifiedBuild`=53007 WHERE `QuestID`=24556 AND `Idx1`=2; +-- Alliance +UPDATE `quest_poi_points` SET `X`=5745, `Y`=721, `VerifiedBuild`=53007 WHERE `QuestID`=20438 AND `Idx1`=1; +UPDATE `quest_poi_points` SET `X`=5798, `Y`=696, `VerifiedBuild`=53007 WHERE `QuestID`=20438 AND `Idx1`=2; From a41fe0758b94d74ddf545223a35d37f8614857b0 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 17 Mar 2024 12:45:01 +0100 Subject: [PATCH 02/11] DB/Quest: Update An Audience With The Arcanist quest_poi_points from master closes #29813 by CraftedRO --- sql/updates/world/3.3.5/2024_03_17_01_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_17_01_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_17_01_world.sql b/sql/updates/world/3.3.5/2024_03_17_01_world.sql new file mode 100644 index 0000000000000..bc7f97567af33 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_17_01_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `quest_poi_points` SET `X`=5893, `Y`=471, `VerifiedBuild`=53007 WHERE `QuestID`=24451; From 5d7ae76d6f2a0f6f6416ff754d2243f3aafcc7d5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 17 Mar 2024 15:24:28 +0100 Subject: [PATCH 03/11] Core/Spells: Improved spell explicit target fallback selection for unit targets when spell target comes from client Client only looks at target type of first spell effect to determine what additional target info to send in packet outside of Spell.dbc Targets column Closes #11566 Closes #29809 --- src/server/game/Handlers/PetHandler.cpp | 2 +- src/server/game/Spells/Spell.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 12d34a17cd631..12590139ea934 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -801,7 +801,7 @@ void WorldSession::HandlePetCastSpellOpcode(WorldPacket& recvPacket) Spell* spell = new Spell(caster, spellInfo, triggerCastFlags); spell->m_fromClient = true; spell->m_cast_count = castCount; // probably pending spell cast - spell->m_targets = targets; + spell->InitExplicitTargets(targets); SpellCastResult result = spell->CheckPetCast(nullptr); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 951890479160b..1305c975cbfee 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -671,7 +671,7 @@ void Spell::InitExplicitTargets(SpellCastTargets const& targets) unit = m_caster->ToCreature()->GetVictim(); // didn't find anything - let's use self as target - if (!unit && neededTargets & (TARGET_FLAG_UNIT_RAID | TARGET_FLAG_UNIT_PARTY | TARGET_FLAG_UNIT_ALLY)) + if (!unit && (neededTargets & (TARGET_FLAG_UNIT_ENEMY | TARGET_FLAG_UNIT_DEAD | TARGET_FLAG_UNIT_MINIPET | TARGET_FLAG_UNIT_PASSENGER)) == 0) unit = m_caster->ToUnit(); m_targets.SetUnitTarget(unit); From b2c723c6b4fb3494cb08522023791db6b2a096c0 Mon Sep 17 00:00:00 2001 From: Gildor Date: Sun, 17 Mar 2024 15:27:33 +0100 Subject: [PATCH 04/11] Core/Pets: Fix warlocks pet character selection screen and Soul Shard return reagent logout exploit (#29808) --- src/server/game/Entities/Player/Player.cpp | 14 -------------- src/server/game/Server/WorldSession.cpp | 2 +- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 46415664829f9..64f7e31888446 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -20585,20 +20585,6 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent) pet->CombatStop(); - if (returnreagent) - { - switch (pet->GetEntry()) - { - //warlock pets except imp are removed(?) when logging out - case 1860: - case 1863: - case 417: - case 17252: - mode = PET_SAVE_NOT_IN_SLOT; - break; - } - } - // only if current pet in slot pet->SavePetToDB(mode); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index d55a3a960a234..465e2efe683f0 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -559,7 +559,7 @@ void WorldSession::LogoutPlayer(bool save) guild->HandleMemberLogout(this); ///- Remove pet - _player->RemovePet(nullptr, PET_SAVE_AS_CURRENT, true); + _player->RemovePet(nullptr, PET_SAVE_AS_CURRENT); ///- Clear whisper whitelist _player->ClearWhisperWhiteList(); From 640674d902de5f177feb1353f8c456b839b31512 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 18 Mar 2024 00:27:34 +0100 Subject: [PATCH 05/11] DB/Quest: Update What The Dragons Know quest_poi_points closes #29814 by CraftedRO --- sql/updates/world/3.3.5/2024_03_18_00_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_18_00_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_18_00_world.sql b/sql/updates/world/3.3.5/2024_03_18_00_world.sql new file mode 100644 index 0000000000000..20a9591c11a3f --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_18_00_world.sql @@ -0,0 +1,4 @@ +-- Alliance +UPDATE quest_poi_points SET `X`=5745, `Y`=721, `VerifiedBuild`=19831 WHERE `QuestID`=14444; +-- Horde +UPDATE quest_poi_points SET `X`=5893, `Y`=471, `VerifiedBuild`=19831 WHERE `QuestID`=24555; From 501cb42cc61836b58365ce4ee8cb9e50702b0106 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 18 Mar 2024 00:56:54 +0100 Subject: [PATCH 06/11] DB/Quest: Update The Sunreaver Plan quest_poi_points closes #29815 by CraftedRO --- sql/updates/world/3.3.5/2024_03_18_01_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_18_01_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_18_01_world.sql b/sql/updates/world/3.3.5/2024_03_18_01_world.sql new file mode 100644 index 0000000000000..766d99d84f0ca --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_18_01_world.sql @@ -0,0 +1,3 @@ +-- +UPDATE `quest_poi_points` SET `X`=5745, `Y`=721, `VerifiedBuild`=19831 WHERE `QuestID`=14457 AND `Idx1`=1; +UPDATE `quest_poi_points` SET `X`=5917, `Y`=554, `VerifiedBuild`=19831 WHERE `QuestID`=14457 AND `Idx1`=2; From 2ecfb5fbd6a5342238f4c7d8548f44dafaa217bc Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 18 Mar 2024 02:30:11 +0100 Subject: [PATCH 07/11] DB/Quest: Update A Meeting With The Magister quest_poi_points closes #29816 by CraftedRO --- sql/updates/world/3.3.5/2024_03_18_02_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_18_02_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_18_02_world.sql b/sql/updates/world/3.3.5/2024_03_18_02_world.sql new file mode 100644 index 0000000000000..c9b97d5c3fe74 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_18_02_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `quest_poi_points` SET `X`=5745, `Y`=721, `VerifiedBuild`=53007 WHERE `QuestID`=20439; From 7a4674c5ace966ecc7f067ad7687bfcab2a1777f Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 18 Mar 2024 09:54:26 +0100 Subject: [PATCH 08/11] DB/Quest: Update The Silver Covenant's Scheme quest_poi_points closes #29817 by CraftedRO --- sql/updates/world/3.3.5/2024_03_18_03_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_18_03_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_18_03_world.sql b/sql/updates/world/3.3.5/2024_03_18_03_world.sql new file mode 100644 index 0000000000000..c843ad4fecf1c --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_18_03_world.sql @@ -0,0 +1,3 @@ +-- +UPDATE `quest_poi_points` SET `X`=5639, `Y`=764, `VerifiedBuild`=19831 WHERE `QuestID`=24557 AND `Idx1`=1; +UPDATE `quest_poi_points` SET `X`=5765, `Y`=718, `VerifiedBuild`=19831 WHERE `QuestID`=24557 AND `Idx1`=2; From 2dda901f9cec3f77a962bbcf766d1acd3fb7679a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 19 Mar 2024 02:45:42 +0100 Subject: [PATCH 09/11] Core/Spells: Behavior of TARGET_UNIT_NEARBY_ENTRY closes #12027 by Killyana --- sql/updates/world/3.3.5/2024_03_19_00_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_19_00_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_19_00_world.sql b/sql/updates/world/3.3.5/2024_03_19_00_world.sql new file mode 100644 index 0000000000000..f6660985a5588 --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_19_00_world.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `disables` WHERE `sourceType`=0 AND `flags`=64 AND `entry` IN (48188,69922,53038,52227,46171,45949,38729,32979); From 73fdf91a5b27ca4c8037665f0067e71c759c2710 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 19 Mar 2024 21:27:58 +0100 Subject: [PATCH 10/11] Spells: Additional spells with TARGET_UNIT_NEARBY_ENTRY that can be removed from disables closes #29820 by CraftedRO --- sql/updates/world/3.3.5/2024_03_19_01_world.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 sql/updates/world/3.3.5/2024_03_19_01_world.sql diff --git a/sql/updates/world/3.3.5/2024_03_19_01_world.sql b/sql/updates/world/3.3.5/2024_03_19_01_world.sql new file mode 100644 index 0000000000000..7dd5207241ccf --- /dev/null +++ b/sql/updates/world/3.3.5/2024_03_19_01_world.sql @@ -0,0 +1,8 @@ +-- Remove from disables unnedeed LOS spells with TARGET_UNIT_NEARBY_ENTRY +DELETE FROM `disables` WHERE `sourceType`=0 AND `flags`=64 AND `entry` IN ( +35113,-- Warp Measurement +36460,-- Ultra Deconsolodation Zapper +45323,-- Returning Vrykul Artifact +51964,-- Tormentor's Incense +58515,-- Burn Corpse +71024);-- Throw Bomb From 6a54dc5a34665e54937d1300e73a087b5938c1ab Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 20 Mar 2024 19:58:37 +0100 Subject: [PATCH 11/11] Core/Commands: Fixed crash in all commands expecting SpellInfo* arguments if they are given a chat link to not learned talent (at 0 rank) Closes #29823 --- .../game/Chat/ChatCommands/ChatCommandArgs.cpp | 5 +---- src/server/game/Chat/HyperlinkTags.cpp | 18 ++++-------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp index a19f9571d0e46..91af31cc41c6a 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -100,10 +100,7 @@ struct SpellInfoVisitor value_type operator()(Hyperlink enchant) const { return enchant; }; value_type operator()(Hyperlink glyph) const { return operator()(glyph->Glyph->SpellID); }; value_type operator()(Hyperlink spell) const { return *spell; } - value_type operator()(Hyperlink talent) const - { - return operator()(talent->Talent->SpellRank[talent->Rank - 1]); - }; + value_type operator()(Hyperlink talent) const { return talent->Spell; }; value_type operator()(Hyperlink trade) const { return trade->Spell; }; value_type operator()(uint32 spellId) const { return sSpellMgr->GetSpellInfo(spellId); } diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp index 5c343a9abe9db..84f1986cd9146 100644 --- a/src/server/game/Chat/HyperlinkTags.cpp +++ b/src/server/game/Chat/HyperlinkTags.cpp @@ -199,22 +199,12 @@ bool Trinity::Hyperlinks::LinkTags::talent::StoreTo(TalentLinkData& val, std::st if (rank < -1 || rank >= MAX_TALENT_RANK) return false; val.Talent = sTalentStore.LookupEntry(talentId); - val.Rank = rank+1; + val.Rank = rank + 1; if (!val.Talent) return false; - if (val.Rank > 0) - { - uint32 const spellId = val.Talent->SpellRank[val.Rank - 1]; - if (!spellId) - return false; - val.Spell = sSpellMgr->GetSpellInfo(spellId); - if (!val.Spell) - return false; - } - else - { - val.Spell = nullptr; - } + val.Spell = sSpellMgr->GetSpellInfo(val.Talent->SpellRank[std::max(rank, 0)]); + if (!val.Spell) + return false; return true; }