aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Chat/Commands/Level3.cpp6
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.cpp2
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.h2
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp7
-rwxr-xr-xsrc/server/game/Scripting/ScriptMgr.cpp4
-rwxr-xr-xsrc/server/game/Scripting/ScriptMgr.h2
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);