Pelf

Pelf access requirement 1

Mar 16th, 2012
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.69 KB | None | 0 0
  1. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
  2. index 11762ec..7d36023 100644
  3. --- a/src/server/game/Entities/Player/Player.cpp
  4. +++ b/src/server/game/Entities/Player/Player.cpp
  5. @@ -18238,10 +18238,24 @@ bool Player::Satisfy(AccessRequirement const* ar, uint32 target_map, bool report
  6.          uint32 missingAchievement = 0;
  7.          if (ar->achievement && !GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->achievement)))
  8.              missingAchievement = ar->achievement;
  9. +      
  10. +       uint32 missingLeaderAchievement = 0;
  11. +       if (ar->leader_achievement)
  12. +       {
  13. +           if (GetGroup())
  14. +           {
  15. +               if (Player* leader = sObjectMgr->GetPlayer(GetGroup()->GetLeaderGUID()))
  16. +                   if (!leader->GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->leader_achievement)))
  17. +                       missingLeaderAchievement = ar->leader_achievement;
  18. +           }
  19. +           else
  20. +               if (!GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->leader_achievement)))
  21. +                   missingLeaderAchievement = ar->leader_achievement;
  22. +       }
  23.  
  24.          Difficulty target_difficulty = GetDifficulty(mapEntry->IsRaid());
  25.          MapDifficulty const* mapDiff = GetDownscaledMapDifficultyData(target_map, target_difficulty);
  26. -        if (LevelMin || LevelMax || missingItem || missingQuest || missingAchievement)
  27. +        if (LevelMin || LevelMax || missingItem || missingQuest || missingAchievement || missingLeaderAchievement)
  28.          {
  29.              if (report)
  30.              {
  31. diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
  32. index 67781b3..f49da70 100644
  33. --- a/src/server/game/Entities/Player/Player.h
  34. +++ b/src/server/game/Entities/Player/Player.h
  35. @@ -920,6 +920,7 @@ struct AccessRequirement
  36.      uint32 quest_H;
  37.      uint32 achievement;
  38.      std::string questFailedText;
  39. +   uint32 leader_achievement;
  40.  };
  41.  
  42.  enum CharDeleteMethod
  43. diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
  44. index be56994..5e605db 100644
  45. --- a/src/server/game/Globals/ObjectMgr.cpp
  46. +++ b/src/server/game/Globals/ObjectMgr.cpp
  47. @@ -6546,7 +6546,7 @@ void ObjectMgr::LoadAccessRequirements()
  48.      uint32 count = 0;
  49.  
  50.      //                                               0           1          2          3     4      5             6             7                      8                  9
  51. -    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");
  52. +    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");
  53.      if (!result)
  54.      {
  55.  
  56. @@ -6583,6 +6583,7 @@ void ObjectMgr::LoadAccessRequirements()
  57.          ar.quest_H                  = fields[7].GetUInt32();
  58.          ar.achievement              = fields[8].GetUInt32();
  59.          ar.questFailedText          = fields[9].GetString();
  60. +       ar.leader_achievement       = fields[10].GetUInt32();
  61.  
  62.          if (ar.item)
  63.          {
  64. @@ -6631,6 +6632,15 @@ void ObjectMgr::LoadAccessRequirements()
  65.              }
  66.          }
  67.  
  68. +       if (ar.leader_achievement)
  69. +       {
  70. +           if (!sAchievementStore.LookupEntry(ar.leader_achievement))
  71. +            {
  72. +                sLog->outErrorDb("Required Leader Achievement %u not exist for map %u difficulty %u, remove quest done requirement.", ar.leader_achievement, mapid, difficulty);
  73. +                ar.leader_achievement = 0;
  74. +            }
  75. +       }
  76. +
  77.          mAccessRequirements[requirement_ID] = ar;
  78.      } while (result->NextRow());
Advertisement
Add Comment
Please, Sign In to add comment