Core/Dungeon Finder: Fix instances unlock after level change

This commit is contained in:
tobmaps
2011-05-29 22:49:05 +07:00
parent 14bc68a291
commit 42fc72447b
6 changed files with 13 additions and 10 deletions
+4 -2
View File
@@ -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);
}
+1 -1
View File
@@ -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);
+4 -3
View File
@@ -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()
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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);