From 5311717a89f3d1382d89c952bd29641d3e1f05cd Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Fri, 27 Jun 2025 14:14:04 +0200 Subject: [PATCH] =?UTF-8?q?fix(Player/Skills):=20Improve=20skill=20validat?= =?UTF-8?q?ion=20and=20logging=20in=20Player::=5F=E2=80=A6=20(#22369)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Entities/Player/Player.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 397af904b..799701736 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -13631,7 +13631,11 @@ void Player::_LoadSkills(PreparedQueryResult result) SkillRaceClassInfoEntry const* rcEntry = GetSkillRaceClassInfo(skill, getRace(), getClass()); if (!rcEntry) { - LOG_ERROR("entities.player", "Character {} has skill {} that does not exist.", GetGUID().ToString(), skill); + LOG_ERROR("entities.player", "Player {} (GUID: {}), has skill ({}) that is invalid for the race/class combination (Race: {}, Class: {}). Will be deleted.", + GetName(), GetGUID().GetCounter(), skill, getRace(), getClass()); + + // Mark skill for deletion in the database + mSkillStatus.insert(SkillStatusMap::value_type(skill, SkillStatusData(0, SKILL_DELETED))); continue; } @@ -13652,7 +13656,8 @@ void Player::_LoadSkills(PreparedQueryResult result) if (value == 0) { - LOG_ERROR("entities.player", "Character {} has skill {} with value 0. Will be deleted.", GetGUID().ToString(), skill); + LOG_ERROR("entities.player", "Player {} (GUID: {}), has skill ({}) with value 0. Will be deleted.", + GetName(), GetGUID().GetCounter(), skill); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_SKILL);