Core/Achiev: Warning if GM mode enabled (#1028)
* Core: Achievements warning if GM mode enabled Added a warning ingame and in console when you're a GM testing achievements (else it was confusing). Added an extra type check in UpdateAchievementCriteria, ported from TrinityCore.
This commit is contained in:
@@ -493,7 +493,17 @@ void AchievementMgr::Reset()
|
|||||||
|
|
||||||
void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaCondition condition, uint32 value, bool evenIfCriteriaComplete)
|
void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaCondition condition, uint32 value, bool evenIfCriteriaComplete)
|
||||||
{
|
{
|
||||||
AchievementCriteriaEntryList const* achievementCriteriaList = sAchievementMgr->GetAchievementCriteriaByCondition(condition, value);
|
// disable for gamemasters with GM-mode enabled
|
||||||
|
if (m_player->IsGameMaster())
|
||||||
|
{
|
||||||
|
sLog->outString("Not available in GM mode.");
|
||||||
|
ChatHandler(m_player->GetSession()).PSendSysMessage("Not available in GM mode");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "AchievementMgr::ResetAchievementCriteria(%u, %u, %u)", condition, value, evenIfCriteriaComplete);
|
||||||
|
|
||||||
|
AchievementCriteriaEntryList const* achievementCriteriaList = sAchievementMgr->GetAchievementCriteriaByCondition(condition, value);
|
||||||
if (!achievementCriteriaList)
|
if (!achievementCriteriaList)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -745,13 +755,24 @@ static const uint32 achievIdForDungeon[][4] =
|
|||||||
*/
|
*/
|
||||||
void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= NULL*/)
|
void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= NULL*/)
|
||||||
{
|
{
|
||||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
||||||
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "AchievementMgr::UpdateAchievementCriteria(%u, %u, %u)", type, miscValue1, miscValue2);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// disable for gamemasters with GM-mode enabled
|
// disable for gamemasters with GM-mode enabled
|
||||||
if (m_player->IsGameMaster())
|
if (m_player->IsGameMaster())
|
||||||
|
{
|
||||||
|
sLog->outString("Not available in GM mode.");
|
||||||
|
ChatHandler(m_player->GetSession()).PSendSysMessage("Not available in GM mode");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||||
|
if (type >= ACHIEVEMENT_CRITERIA_TYPE_TOTAL)
|
||||||
|
{
|
||||||
|
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "UpdateAchievementCriteria: Wrong criteria type %u", type);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "AchievementMgr::UpdateAchievementCriteria(%u, %u, %u)", type, miscValue1, miscValue2);
|
||||||
|
#endif
|
||||||
|
|
||||||
AchievementCriteriaEntryList const* achievementCriteriaList = NULL;
|
AchievementCriteriaEntryList const* achievementCriteriaList = NULL;
|
||||||
|
|
||||||
@@ -2132,17 +2153,21 @@ void AchievementMgr::RemoveTimedAchievement(AchievementCriteriaTimedTypes type,
|
|||||||
|
|
||||||
void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
|
void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
|
||||||
{
|
{
|
||||||
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
|
||||||
sLog->outDetail("AchievementMgr::CompletedAchievement(%u)", achievement->ID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// disable for gamemasters with GM-mode enabled
|
// disable for gamemasters with GM-mode enabled
|
||||||
if (m_player->IsGameMaster())
|
if (m_player->IsGameMaster())
|
||||||
|
{
|
||||||
|
sLog->outString("Not available in GM mode.");
|
||||||
|
ChatHandler(m_player->GetSession()).PSendSysMessage("Not available in GM mode");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID))
|
if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
|
||||||
|
sLog->outDetail("AchievementMgr::CompletedAchievement(%u)", achievement->ID);
|
||||||
|
#endif
|
||||||
|
|
||||||
SendAchievementEarned(achievement);
|
SendAchievementEarned(achievement);
|
||||||
CompletedAchievementData& ca = m_completedAchievements[achievement->ID];
|
CompletedAchievementData& ca = m_completedAchievements[achievement->ID];
|
||||||
ca.date = time(NULL);
|
ca.date = time(NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user