Core/Dungeon Finder: Fix instances unlock after level change
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user