Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
- index 11762ec..7d36023 100644
- --- a/src/server/game/Entities/Player/Player.cpp
- +++ b/src/server/game/Entities/Player/Player.cpp
- @@ -18238,10 +18238,24 @@ bool Player::Satisfy(AccessRequirement const* ar, uint32 target_map, bool report
- uint32 missingAchievement = 0;
- if (ar->achievement && !GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->achievement)))
- missingAchievement = ar->achievement;
- +
- + uint32 missingLeaderAchievement = 0;
- + if (ar->leader_achievement)
- + {
- + if (GetGroup())
- + {
- + if (Player* leader = sObjectMgr->GetPlayer(GetGroup()->GetLeaderGUID()))
- + if (!leader->GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->leader_achievement)))
- + missingLeaderAchievement = ar->leader_achievement;
- + }
- + else
- + if (!GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->leader_achievement)))
- + missingLeaderAchievement = ar->leader_achievement;
- + }
- Difficulty target_difficulty = GetDifficulty(mapEntry->IsRaid());
- MapDifficulty const* mapDiff = GetDownscaledMapDifficultyData(target_map, target_difficulty);
- - if (LevelMin || LevelMax || missingItem || missingQuest || missingAchievement)
- + if (LevelMin || LevelMax || missingItem || missingQuest || missingAchievement || missingLeaderAchievement)
- {
- if (report)
- {
- diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
- index 67781b3..f49da70 100644
- --- a/src/server/game/Entities/Player/Player.h
- +++ b/src/server/game/Entities/Player/Player.h
- @@ -920,6 +920,7 @@ struct AccessRequirement
- uint32 quest_H;
- uint32 achievement;
- std::string questFailedText;
- + uint32 leader_achievement;
- };
- enum CharDeleteMethod
- diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
- index be56994..5e605db 100644
- --- a/src/server/game/Globals/ObjectMgr.cpp
- +++ b/src/server/game/Globals/ObjectMgr.cpp
- @@ -6546,7 +6546,7 @@ void ObjectMgr::LoadAccessRequirements()
- uint32 count = 0;
- // 0 1 2 3 4 5 6 7 8 9
- - QueryResult result = WorldDatabase.Query("SELECT mapid, difficulty, level_min, level_max, item, item2, quest_done_A, quest_done_H, completed_achievement, quest_failed_text FROM access_requirement");
- + QueryResult result = WorldDatabase.Query("SELECT mapid, difficulty, level_min, level_max, item, item2, quest_done_A, quest_done_H, completed_achievement, quest_failed_text, leader_achievement FROM access_requirement");
- if (!result)
- {
- @@ -6583,6 +6583,7 @@ void ObjectMgr::LoadAccessRequirements()
- ar.quest_H = fields[7].GetUInt32();
- ar.achievement = fields[8].GetUInt32();
- ar.questFailedText = fields[9].GetString();
- + ar.leader_achievement = fields[10].GetUInt32();
- if (ar.item)
- {
- @@ -6631,6 +6632,15 @@ void ObjectMgr::LoadAccessRequirements()
- }
- }
- + if (ar.leader_achievement)
- + {
- + if (!sAchievementStore.LookupEntry(ar.leader_achievement))
- + {
- + sLog->outErrorDb("Required Leader Achievement %u not exist for map %u difficulty %u, remove quest done requirement.", ar.leader_achievement, mapid, difficulty);
- + ar.leader_achievement = 0;
- + }
- + }
- +
- mAccessRequirements[requirement_ID] = ar;
- } while (result->NextRow());
Advertisement
Add Comment
Please, Sign In to add comment