diff options
-rwxr-xr-x | src/server/game/Chat/Commands/Level3.cpp | 6 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGScripts.cpp | 2 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGScripts.h | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 7 | ||||
-rwxr-xr-x | src/server/game/Scripting/ScriptMgr.cpp | 4 | ||||
-rwxr-xr-x | src/server/game/Scripting/ScriptMgr.h | 2 |
6 files changed, 13 insertions, 10 deletions
diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp index e5a351fb05e..b4c0f0f32ce 100755 --- a/src/server/game/Chat/Commands/Level3.cpp +++ b/src/server/game/Chat/Commands/Level3.cpp @@ -2529,13 +2529,13 @@ bool ChatHandler::HandleResetLevelCommand(const char * args) if (!HandleResetStatsOrLevelHelper(target)) return false; + uint8 oldLevel = target->getLevel(); + // set starting level uint32 start_level = target->getClass() != CLASS_DEATH_KNIGHT ? sWorld->getIntConfig(CONFIG_START_PLAYER_LEVEL) : sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL); - sScriptMgr->OnPlayerLevelChanged(target, start_level); - target->_ApplyAllLevelScaleItemMods(false); target->SetLevel(start_level); target->InitRunes(); @@ -2551,6 +2551,8 @@ bool ChatHandler::HandleResetLevelCommand(const char * args) if (Pet* pet = target->GetPet()) pet->SynchronizeLevelWithOwner(); + sScriptMgr->OnPlayerLevelChanged(target, oldLevel); + return true; } diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp index 4d6f90dca4c..b582a869f51 100644 --- a/src/server/game/DungeonFinding/LFGScripts.cpp +++ b/src/server/game/DungeonFinding/LFGScripts.cpp @@ -140,7 +140,7 @@ void LFGScripts::OnInviteMember(Group* group, uint64 guid) sLFGMgr->Leave(NULL, group); } -void LFGScripts::OnLevelChanged(Player* player, uint8 /*newLevel*/) +void LFGScripts::OnLevelChanged(Player* player, uint8 /*oldLevel*/) { sLFGMgr->InitializeLockedDungeons(player); } diff --git a/src/server/game/DungeonFinding/LFGScripts.h b/src/server/game/DungeonFinding/LFGScripts.h index 03bd23574c9..0547a3fad34 100644 --- a/src/server/game/DungeonFinding/LFGScripts.h +++ b/src/server/game/DungeonFinding/LFGScripts.h @@ -39,7 +39,7 @@ class LFGScripts: public GroupScript, public PlayerScript void OnInviteMember(Group* group, uint64 guid); // Player Hooks - void OnLevelChanged(Player* player, uint8 newLevel); + void OnLevelChanged(Player* player, uint8 oldLevel); void OnLogout(Player* player); void OnLogin(Player* player); void OnBindToInstance(Player* player, Difficulty difficulty, uint32 mapId, bool permanent); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 15ad742aa63..6d0d8aee1bf 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2968,11 +2968,10 @@ void Player::GiveXP(uint32 xp, Unit *victim, float group_rate) // Current player experience not update (must be update by caller) void Player::GiveLevel(uint8 level) { - if (level == getLevel()) + uint8 oldLevel = getLevel(); + if (level == oldLevel) return; - sScriptMgr->OnPlayerLevelChanged(this, level); - PlayerLevelInfo info; sObjectMgr->GetPlayerLevelInfo(getRace(), getClass(), level, &info); @@ -3048,6 +3047,8 @@ void Player::GiveLevel(uint8 level) } GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL); + + sScriptMgr->OnPlayerLevelChanged(this, oldLevel); } void Player::InitTalentForLevel() diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index e6426051d96..41820652808 100755 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1089,9 +1089,9 @@ void ScriptMgr::OnPlayerKilledByCreature(Creature *killer, Player *killed) FOREACH_SCRIPT(PlayerScript)->OnPlayerKilledByCreature(killer, killed); } -void ScriptMgr::OnPlayerLevelChanged(Player *player, uint8 newLevel) +void ScriptMgr::OnPlayerLevelChanged(Player *player, uint8 oldLevel) { - FOREACH_SCRIPT(PlayerScript)->OnLevelChanged(player, newLevel); + FOREACH_SCRIPT(PlayerScript)->OnLevelChanged(player, oldLevel); } void ScriptMgr::OnPlayerFreeTalentPointsChanged(Player *player, uint32 points) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 28d21ae0645..3fa4fa9f1a0 100755 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -931,7 +931,7 @@ class ScriptMgr void OnPVPKill(Player *killer, Player *killed); void OnCreatureKill(Player *killer, Creature *killed); void OnPlayerKilledByCreature(Creature *killer, Player *killed); - void OnPlayerLevelChanged(Player *player, uint8 newLevel); + void OnPlayerLevelChanged(Player *player, uint8 oldLevel); void OnPlayerFreeTalentPointsChanged(Player *player, uint32 newPoints); void OnPlayerTalentsReset(Player *player, bool no_cost); void OnPlayerMoneyChanged(Player *player, int32& amount); |