From a0b945afcdc8053172fab5fcaf3bd1d09828de50 Mon Sep 17 00:00:00 2001 From: ElderShell Date: Sun, 3 May 2026 02:40:01 -0600 Subject: [PATCH] fixed xp reduction at max level --- src/server/game/Entities/Player/Player.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7973b0193..7579a6f7c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -40,6 +40,7 @@ #include "ConditionMgr.h" #include "Config.h" #include "CreatureAI.h" +#include "DBCEnums.h" #include "DatabaseEnv.h" #include "DatabaseEnvFwd.h" #include "DisableMgr.h" @@ -4936,6 +4937,21 @@ void Player::RepopAtGraveyard() TeleportTo(m_homebindMapId, m_homebindX, m_homebindY, m_homebindZ, GetOrientation()); uint32 nextLevelXp = GetUInt32Value(PLAYER_NEXT_LEVEL_XP); + + if (GetLevel() == DEFAULT_MAX_LEVEL) + { + QueryResult xpResult = WorldDatabase.Query( + "SELECT Experience FROM player_xp_for_level WHERE Level = {} LIMIT 1", + GetLevel() - 1 + ); + + if (xpResult) + { + Field* fields = xpResult->Fetch(); + nextLevelXp = fields[0].Get(); + } + } + uint32 reduction = nextLevelXp / 10; uint32 currentXp = GetUInt32Value(PLAYER_XP);