From d54d21e876b8b94d9bc7ec2629c6824759afea28 Mon Sep 17 00:00:00 2001 From: Cody Creager Date: Tue, 8 Apr 2025 07:30:28 -0700 Subject: [PATCH 1/2] exclude self healing/barrier to be consistent with cleanses excluding CondiCleanseSelf --- src/main/java/org/vmy/ParseBot.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/vmy/ParseBot.java b/src/main/java/org/vmy/ParseBot.java index a121c4b..261f9c1 100644 --- a/src/main/java/org/vmy/ParseBot.java +++ b/src/main/java/org/vmy/ParseBot.java @@ -254,10 +254,12 @@ protected static FightReport processWvwJsonLog(File jsonFile, String uploadUrl) if(!ehObject.isNull("outgoingHealingAllies")) { JSONArray ohArray = ehObject.getJSONArray("outgoingHealingAllies"); for (int q=0; q Date: Sat, 12 Apr 2025 08:37:28 -0700 Subject: [PATCH 2/2] Add outgoing columns to the report for cleanses, healing, and barrier --- src/main/java/org/vmy/ParseBot.java | 54 ++++++++++++--------- src/main/java/org/vmy/util/Cleanser.java | 29 +++++++---- src/main/java/org/vmy/util/Healer.java | 62 ++++++++++++++++-------- 3 files changed, 92 insertions(+), 53 deletions(-) diff --git a/src/main/java/org/vmy/ParseBot.java b/src/main/java/org/vmy/ParseBot.java index d826f95..f9b123b 100644 --- a/src/main/java/org/vmy/ParseBot.java +++ b/src/main/java/org/vmy/ParseBot.java @@ -193,9 +193,9 @@ protected static FightReport processWvwJsonLog(File jsonFile, String uploadUrl) //support JSONObject currPlayerSupport = currPlayer.getJSONArray("support").getJSONObject(0); int cleanses = currPlayerSupport.getBigInteger("condiCleanse").intValue(); - cleanses += currPlayerSupport.getBigInteger("condiCleanseSelf").intValue(); + int selfCleanses = currPlayerSupport.getBigInteger("condiCleanseSelf").intValue(); if (cleanses > 0) - cleansers.add(new Cleanser(name, profession, cleanses)); + cleansers.add(new Cleanser(name, profession, cleanses+selfCleanses, cleanses)); int strips = currPlayerSupport.getBigInteger("boonStrips").intValue(); if (strips > 0) strippers.add(new Stripper(name, profession, strips)); @@ -248,7 +248,8 @@ protected static FightReport processWvwJsonLog(File jsonFile, String uploadUrl) obooners.add(oBooner); //healing - int healing = 0; + int totalHealing = 0; + int outgoingHealing = 0; int downedHealing = 0; if (!currPlayer.isNull("extHealingStats")) { JSONObject ehObject = currPlayer.getJSONObject("extHealingStats"); @@ -257,8 +258,11 @@ protected static FightReport processWvwJsonLog(File jsonFile, String uploadUrl) for (int q=0; q 0) healers.add(healer); } @@ -516,15 +524,15 @@ private static void buildReport(FightReport report, HashMap con if (cleansers.size()>0) { buffer = new StringBuffer(); - buffer.append(" # Player " + playerPadding + "Total CPS" + LF); - buffer.append("--- -------------------" + playerDashes + " ---- ----" + LF); + buffer.append(" # Player " + playerPadding + "Total Outgoing CPS" + LF); + buffer.append("--- ---------------" + playerDashes + " ---- ---- ----" + LF); cleansers.sort(Comparator.naturalOrder()); int index = 1; int count = Math.min(cleansers.size(), 10); for (Cleanser x : cleansers.subList(0, count)) { - BigDecimal rate = BigDecimal.valueOf(x.getCleanses()).divide(sec, 2, RoundingMode.HALF_UP); + BigDecimal rate = BigDecimal.valueOf(x.getTotalCleanses()).divide(sec, 2, RoundingMode.HALF_UP); buffer.append(String.format("%2s", (index++)) + " " + x - + String.format("%6s", new DecimalFormat("#0.00").format(rate).replaceAll(",", "")) + LF); + + String.format("%5s", new DecimalFormat("#0.00").format(rate).replaceAll(",", "")) + LF); } report.setCleanses(buffer.toString()); System.out.println("Cleanses:" + LF + buffer); @@ -533,29 +541,29 @@ private static void buildReport(FightReport report, HashMap con if (healers.stream().anyMatch(h -> h.getTotal()>0)) { buffer = new StringBuffer(); - if (healers.stream().anyMatch(h -> h.getHealing() > 0)) { - healers = healers.stream().sorted((o1, o2) -> Integer.compare(o2.getHealing(), o1.getHealing())).collect(Collectors.toList()); - buffer.append(" # Player " + playerPadding + " Heals HPS" + LF); - buffer.append("--- ------------------" + playerDashes + " ----- -----" + LF); + if (healers.stream().anyMatch(h -> h.getTotalHealing() > 0)) { + healers = healers.stream().sorted((o1, o2) -> Integer.compare(o2.getTotalHealing(), o1.getTotalHealing())).collect(Collectors.toList()); + buffer.append(" # Player " + playerPadding + "Heals Outgoing HPS" + LF); + buffer.append("--- ------------" + playerDashes + " ----- ----- -----" + LF); int index = 1; int count = Math.min(healers.size(), 5); for (Healer x : healers.subList(0, count)) - if (x.getHealing() > 0) { - String hps = DPSer.withSuffix(x.getHealing() / battleLength, 1); + if (x.getTotalHealing() > 0) { + String hps = DPSer.withSuffix(x.getTotalHealing() / battleLength, 1); buffer.append(String.format("%2s", (index++)) + " " + x.toHealerString() + String.format("%6s", hps) + LF); } } buffer.append(LF); - if (healers.stream().anyMatch(h -> h.getBarrier() > 0)) { - healers = healers.stream().sorted((o1, o2) -> Integer.compare(o2.getBarrier(), o1.getBarrier())).collect(Collectors.toList()); - buffer.append(" # Player " + playerPadding + "Barrier BPS" + LF); - buffer.append("--- ------------------" + playerDashes + " ----- -----" + LF); + if (healers.stream().anyMatch(h -> h.getTotalBarrier() > 0)) { + healers = healers.stream().sorted((o1, o2) -> Integer.compare(o2.getTotalBarrier(), o1.getTotalBarrier())).collect(Collectors.toList()); + buffer.append(" # Player " + playerPadding + "Barrier Outgoing BPS" + LF); + buffer.append("--- ------------" + playerDashes + " ----- ----- -----" + LF); int index = 1; int count = Math.min(healers.size(), 5); for (Healer x : healers.subList(0, count)) - if (x.getBarrier() > 0) { - String hps = DPSer.withSuffix(x.getBarrier() / battleLength, 1); + if (x.getTotalBarrier() > 0) { + String hps = DPSer.withSuffix(x.getTotalBarrier() / battleLength, 1); buffer.append(String.format("%2s", (index++)) + " " + x.toBarrierString() + String.format("%6s", hps) + LF); } diff --git a/src/main/java/org/vmy/util/Cleanser.java b/src/main/java/org/vmy/util/Cleanser.java index 6e8fee5..503f872 100644 --- a/src/main/java/org/vmy/util/Cleanser.java +++ b/src/main/java/org/vmy/util/Cleanser.java @@ -6,27 +6,30 @@ public class Cleanser implements Comparable { private String name; private String profession; - private int cleanses; + private int totalCleanses; + private int outgoingCleanses; - public Cleanser(String name, String profession, int cleanses) { + public Cleanser(String name, String profession, int totalCleanses, int outgoingCleanses) { this.name = name; this.profession = profession; - this.cleanses = cleanses; + this.totalCleanses = totalCleanses; + this.outgoingCleanses = outgoingCleanses; } public int compareTo(Cleanser c) { - if (cleanses==c.cleanses) + if (totalCleanses==c.totalCleanses) return 0; - else if (cleanses>c.cleanses) + else if (totalCleanses>c.totalCleanses) return -1; else return 1; } public String toString() { - int playerLength = Parameters.getInstance().enableDiscordMobileMode ? 14 : 19; + int playerLength = Parameters.getInstance().enableDiscordMobileMode ? 10 : 15; return StringUtils.rightPad( StringUtils.left(name, playerLength), playerLength) + " " + DPSer.mapProf(profession.substring(0,4)) - + StringUtils.leftPad(String.valueOf(cleanses), 5); + + StringUtils.leftPad(String.valueOf(totalCleanses), 5) + + StringUtils.leftPad(String.valueOf(outgoingCleanses), 5); } public String getName() { @@ -41,9 +44,15 @@ public void setName(String name) { public void setProfession(String profession) { this.profession = profession; } - public int getCleanses() { return cleanses; } + public int getTotalCleanses() { return totalCleanses; } - public void setCleanses(int cleanses) { - this.cleanses = cleanses; + public void setTotalCleanses(int cleanses) { + this.totalCleanses = cleanses; + } + + public int getOutgoingCleanses() { return outgoingCleanses; } + + public void setOutgoingCleanses(int cleanses) { + this.outgoingCleanses = cleanses; } } diff --git a/src/main/java/org/vmy/util/Healer.java b/src/main/java/org/vmy/util/Healer.java index 4ad3272..2577ad6 100644 --- a/src/main/java/org/vmy/util/Healer.java +++ b/src/main/java/org/vmy/util/Healer.java @@ -6,18 +6,22 @@ public class Healer implements Comparable { private String name; private String profession; - private int healing; - private int barrier; + private int totalHealing; + private int outgoingHealing; + private int totalBarrier; + private int outgoingBarrier; private int downedHealing; private int total; - public Healer(String name, String profession, int healing, int barrier, int downedHealing) { + public Healer(String name, String profession, int totalHealing, int outgoingHealing, int totalBarrier, int outgoingBarrier, int downedHealing) { this.name = name; this.profession = profession; - this.healing = healing; - this.barrier = barrier; + this.totalHealing = totalHealing; + this.outgoingHealing = outgoingHealing; + this.totalBarrier = totalBarrier; + this.outgoingBarrier = outgoingBarrier; this.downedHealing = downedHealing; - this.total = healing + barrier; + this.total = totalHealing + totalBarrier; } public int compareTo(Healer c) { @@ -34,15 +38,17 @@ public String toString() { } public String toHealerString() { - int playerLength = Parameters.getInstance().enableDiscordMobileMode ? 13 : 18; + int playerLength = Parameters.getInstance().enableDiscordMobileMode ? 7 : 12; return StringUtils.rightPad( StringUtils.left(name, playerLength), playerLength) + " " + DPSer.mapProf(profession.substring(0,4)) - + String.format("%6s",withSuffix(healing,healing < 1000000 ? 0 : healing >= 10000000 ? 1 : 2)); + + String.format("%6s",withSuffix(totalHealing,totalHealing < 1000000 ? 0 : totalHealing >= 10000000 ? 1 : 2)) + + String.format("%6s",withSuffix(outgoingHealing,outgoingHealing < 1000000 ? 0 : outgoingHealing >= 10000000 ? 1 : 2)); } public String toBarrierString() { - int playerLength = Parameters.getInstance().enableDiscordMobileMode ? 13 : 18; + int playerLength = Parameters.getInstance().enableDiscordMobileMode ? 7 : 12; return StringUtils.rightPad( StringUtils.left(name, playerLength), playerLength) + " " + DPSer.mapProf(profession.substring(0,4)) - + String.format("%6s",withSuffix(barrier,barrier < 1000000 ? 0 : barrier >= 10000000 ? 1 : 2)); + + String.format("%6s",withSuffix(totalBarrier,totalBarrier < 1000000 ? 0 : totalBarrier >= 10000000 ? 1 : 2)) + + String.format("%6s",withSuffix(outgoingBarrier,outgoingBarrier < 1000000 ? 0 : outgoingBarrier >= 10000000 ? 1 : 2)); } public String toDownedHealerString() { @@ -71,22 +77,38 @@ public void setName(String name) { public void setProfession(String profession) { this.profession = profession; } - public int getHealing() { - return healing; + public int getTotalHealing() { + return totalHealing; + } + + public void setTotalHealing(int healing) { + this.totalHealing = healing; + this.total = healing + totalBarrier; + } + + public int getTotalBarrier() { + return totalBarrier; + } + + public void setTotalBarrier(int barrier) { + this.totalBarrier = barrier; + this.total = totalHealing + barrier; + } + + public int getOutgoingHealing() { + return outgoingHealing; } - public void setHealing(int healing) { - this.healing = healing; - this.total = healing + barrier; + public void setOutgoingHealing(int healing) { + this.outgoingHealing = healing; } - public int getBarrier() { - return barrier; + public int getOutgoingBarrier() { + return outgoingBarrier; } - public void setBarrier(int barrier) { - this.barrier = barrier; - this.total = healing + barrier; + public void setOutgoingBarrier(int barrier) { + this.outgoingBarrier = barrier; } public int getDownedHealing() {