kusanagy

2018_02_03-Guard-Elite-Honor.patch

Mar 13th, 2018
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 5.85 KB | None | 0 0
  1. From fbc505861d5235755f4408bd2dd5cb9b47e2c695 Mon Sep 17 00:00:00 2001
  2. From: LordPsyan <[email protected]>
  3. Date: Mon, 29 Feb 2016 08:36:44 -0600
  4. Subject: [PATCH] 2016_02_29-Guard-Elite-Honor
  5.  
  6. ---
  7. src/server/game/Entities/Player/Player.cpp   | 47 ++++++++++++++++++++++++++++
  8.  src/server/game/World/World.cpp              |  3 +-
  9.  src/server/game/World/World.h                |  3 +-
  10.  src/server/worldserver/worldserver.conf.dist | 22 +++++++++++++
  11.  4 files changed, 73 insertions(+), 2 deletions(-)
  12.  
  13. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
  14. index 7190a80..89db5bf 100644
  15. --- a/src/server/game/Entities/Player/Player.cpp
  16. +++ b/src/server/game/Entities/Player/Player.cpp
  17. @@ -6873,6 +6873,53 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto
  18.              UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, GetAreaId());
  19.              UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, 1, 0, victim);
  20.          }
  21. +        else if (sWorld->getBoolConfig(CONFIG_GAIN_HONOR_GUARD) && victim->ToCreature()->IsGuard())
  22. +        {
  23. +            uint8 k_level = getLevel();
  24. +            uint8 k_grey = Trinity::XP::GetGrayLevel(k_level);
  25. +            uint8 v_level = victim->getLevel();
  26. +
  27. +            if (v_level <= k_grey)
  28. +                return false;
  29. +
  30. +            uint32 victim_title = 0;
  31. +            victim_guid = ObjectGuid::Empty;
  32. +
  33. +            honor_f = ceil(Trinity::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey));
  34. +
  35. +            // count the number of playerkills in one day
  36. +            ApplyModUInt32Value(PLAYER_FIELD_KILLS, 1, true);
  37. +            // and those in a lifetime
  38. +            ApplyModUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 1, true);
  39. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL);
  40. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS, victim->getClass());
  41. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HK_RACE, victim->getRace());
  42. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, GetAreaId());
  43. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, 1, 0, victim);
  44. +        }
  45. +        else if (sWorld->getBoolConfig(CONFIG_GAIN_HONOR_ELITE) && victim->ToCreature()->isElite())
  46. +        {
  47. +            uint8 k_level = getLevel();
  48. +            uint8 k_grey = Trinity::XP::GetGrayLevel(k_level);
  49. +            uint8 v_level = victim->getLevel();
  50. +
  51. +            if (v_level <= k_grey)
  52. +                return false;
  53. +
  54. +            uint32 victim_title = 0;
  55. +            victim_guid = ObjectGuid::Empty;
  56. +            honor_f = ceil(Trinity::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey));
  57. +            // count the number of playerkills in one day
  58. +            ApplyModUInt32Value(PLAYER_FIELD_KILLS, 1, true);
  59. +
  60. +            // and those in a lifetime
  61. +            ApplyModUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 1, true);
  62. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL);
  63. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS, victim->getClass());
  64. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HK_RACE, victim->getRace());
  65. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, GetAreaId());
  66. +            UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, 1, 0, victim);
  67. +        }
  68.          else
  69.          {
  70.              if (!victim->ToCreature()->IsRacialLeader())
  71. diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
  72. index f904f30..8f07066 100644
  73. --- a/src/server/game/World/World.cpp
  74. +++ b/src/server/game/World/World.cpp
  75. @@ -1158,7 +1158,8 @@ void World::LoadConfigSettings(bool reload)
  76.      // 08
  77.      // 09
  78.      // 10
  79. -    // 11
  80. +    m_bool_configs[CONFIG_GAIN_HONOR_GUARD] = sConfigMgr->GetBoolDefault("Custom.GainHonorOnGuardKill", false);
  81. +    m_bool_configs[CONFIG_GAIN_HONOR_ELITE] = sConfigMgr->GetBoolDefault("Custom.GainHonorOnEliteKill", false);
  82.      // 12
  83.      // 13
  84.      // 14
  85. diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
  86. index 492a3bd..a3399ef 100644
  87. --- a/src/server/game/World/World.h
  88. +++ b/src/server/game/World/World.h
  89. @@ -179,7 +179,8 @@ enum WorldBoolConfigs
  90.      // 16
  91.      // 17
  92.      // 18
  93. -    // 19
  94. +    CONFIG_GAIN_HONOR_GUARD,
  95. +    CONFIG_GAIN_HONOR_ELITE,
  96.      // 20
  97.      // 21
  98.      // 22
  99. diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
  100. index 4837a24..bf9c3f5 100644
  101. --- a/src/server/worldserver/worldserver.conf.dist
  102. +++ b/src/server/worldserver/worldserver.conf.dist
  103. @@ -3566,6 +3566,28 @@ PacketSpoof.BanDuration = 86400
  104.  #
  105.  ###################################################################################################
  106.  
  107. +###################################################################################################
  108. +#
  109. +# Custom.GainHonorOnGuardKill
  110. +# Set it to 1 to gain honor when you kill a guard.
  111. +# Note that not all city guards will give you honor. It seems only capital and big city guards are flagged
  112. +# as so in the database.
  113. +# Default : 0 (No honor when you kill a guard)
  114. +#
  115. +
  116. +Custom.GainHonorOnGuardKill = 0
  117. +
  118. +#
  119. +# Custom.GainHonorOnEliteKill
  120. +# Set it to 1 to gain honor when you kill an elite mob (this does not apply on rare mob, unless he is also elite).
  121. +# Default : 0 (No honor when you kill an elite mob)
  122. +#
  123. +
  124. +Custom.GainHonorOnEliteKill = 0
  125. +
  126. +#
  127. +###################################################################################################
  128. +
  129.  #
  130.  # Prepatch by LordPsyan.
  131.  # See http://www.realmsofwarcraft.com/bb for forums and information.
  132. --
  133. 2.1.4
Advertisement
Add Comment
Please, Sign In to add comment