Browse Source

Fixed double rounding of shared Xp, rounding up final result instead

bm01 12 năm trước cách đây
mục cha
commit
1898537149
1 tập tin đã thay đổi với 7 bổ sung4 xóa
  1. 7 4
      src/main/java/com/gmail/nossr50/party/ShareHandler.java

+ 7 - 4
src/main/java/com/gmail/nossr50/party/ShareHandler.java

@@ -37,17 +37,20 @@ public final class ShareHandler {
      */
     public static void handleEqualXpShare(int xp, Player player, Party party, SkillType skillType) {
         running = true;
-        int newExp = xp;
 
         if (party.getXpShareMode() == XpShareMode.EQUAL) {
             List<Player> nearMembers = PartyManager.getNearMembers(player, party, Config.getInstance().getPartyShareRange());
 
-            if (nearMembers.size() > 0) {
-                newExp = (int) ((xp / (nearMembers.size() + 1)) * Config.getInstance().getPartyShareBonus());
+            if (nearMembers.size() <= 0) {
+                running = false;
+                return;
             }
 
+            double partySize = nearMembers.size() + 1;
+            double splitXp = xp / partySize * Config.getInstance().getPartyShareBonus();
+
             for (Player member : nearMembers) {
-                Users.getPlayer(member).addXp(skillType, newExp);
+                Users.getPlayer(member).addXp(skillType, (int) Math.ceil(splitXp));
             }
         }