From cfc6067c02414f3cf4e3adac4ac36090c5676f15 Mon Sep 17 00:00:00 2001 From: Llm Dl Date: Sat, 24 Apr 2021 09:06:11 -0500 Subject: [PATCH] Solves the bug: - Where a revolting Town was paid plunder when they lost a REVOLT siege and the Nation chose to plunder: the money meant to be paid to soldiers of the Nation was instead being paid to the soldiers of the Town. - Renames a few things to make it clearer what they do. --- .../gmail/goosius/siegewar/objects/Siege.java | 26 ++++++++----------- .../utils/SiegeWarBannerControlUtil.java | 10 ++++--- .../utils/SiegeWarBattleSessionUtil.java | 4 +-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gmail/goosius/siegewar/objects/Siege.java b/src/main/java/com/gmail/goosius/siegewar/objects/Siege.java index 8d0663c61..1696cd888 100644 --- a/src/main/java/com/gmail/goosius/siegewar/objects/Siege.java +++ b/src/main/java/com/gmail/goosius/siegewar/objects/Siege.java @@ -60,8 +60,8 @@ public class Siege { private int cannonSessionRemainingShortTicks; //Short ticks remaining until standard cannon protections are restored private int attackerBattlePoints; private int defenderBattlePoints; - private Set attackerBattleContributors; //UUID's of attackers who contributed during the current battle - private Map residentTimedPointContributors; //UUID:numContributions map of attackers who contributed during current siege + private Set successfulBattleContributors; //UUID's of residents who contributed during the current battle + private Map residentTimedPointContributors; //UUID:numContributions map of residents who contributed during current siege public Siege(Town town) { this.town = town; @@ -80,7 +80,7 @@ public Siege(Town town) { cannonSessionRemainingShortTicks = 0; attackerBattlePoints = 0; defenderBattlePoints = 0; - attackerBattleContributors = new HashSet<>(); + successfulBattleContributors = new HashSet<>(); residentTimedPointContributors = new HashMap<>(); } @@ -389,16 +389,12 @@ public String getFormattedBattleTimeRemaining() { } } - public Set getAttackerBattleContributors() { - return attackerBattleContributors; + public Set getSuccessfulBattleContributors() { + return successfulBattleContributors; } - public void setAttackerBattleContributors(Set attackerBattleContributors) { - this.attackerBattleContributors = attackerBattleContributors; - } - - public void clearAttackerBattleContributors() { - attackerBattleContributors.clear(); + public void clearSuccessfulBattleContributors() { + successfulBattleContributors.clear(); } public Map getResidentTimedPointContributors() { return residentTimedPointContributors; @@ -408,14 +404,14 @@ public void setResidentTimedPointContributors(Map residentTimed this.residentTimedPointContributors = residentTimedPointContributors; } - public void registerAttackerBattleContributorsFromBannerControl() { + public void registerSuccessfulBattleContributorsFromBannerControl() { for(Resident resident: bannerControllingResidents) { - attackerBattleContributors.add(resident.getUUID().toString()); + successfulBattleContributors.add(resident.getUUID().toString()); } } - public void propagateAttackerBattleContributorsToResidentTimedPointContributors() { - for(String playerUuid: attackerBattleContributors) { + public void propagateSuccessfulBattleContributorsToResidentTimedPointContributors() { + for(String playerUuid: successfulBattleContributors) { if(residentTimedPointContributors.containsKey(playerUuid)) { residentTimedPointContributors.put(playerUuid, residentTimedPointContributors.get(playerUuid) + 1); } else { diff --git a/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBannerControlUtil.java b/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBannerControlUtil.java index 72bb057c3..61ea348cc 100644 --- a/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBannerControlUtil.java +++ b/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBannerControlUtil.java @@ -4,6 +4,7 @@ import com.gmail.goosius.siegewar.SiegeWar; import com.gmail.goosius.siegewar.enums.SiegeSide; import com.gmail.goosius.siegewar.enums.SiegeStatus; +import com.gmail.goosius.siegewar.enums.SiegeType; import com.gmail.goosius.siegewar.objects.BannerControlSession; import com.gmail.goosius.siegewar.objects.BattleSession; import com.gmail.goosius.siegewar.objects.Siege; @@ -35,7 +36,7 @@ public class SiegeWarBannerControlUtil { public static void evaluateBannerControl(Siege siege) { try { if(siege.getStatus() == SiegeStatus.IN_PROGRESS) { - evaluateBannerControlEffects(siege); + evaluateBannerControlPoints(siege); evaluateExistingBannerControlSessions(siege); evaluateNewBannerControlSessions(siege); } @@ -290,7 +291,7 @@ public void run() { } } - private static void evaluateBannerControlEffects(Siege siege) { + private static void evaluateBannerControlPoints(Siege siege) { if(!BattleSession.getBattleSession().isActive()) return; @@ -305,12 +306,15 @@ private static void evaluateBannerControlEffects(Siege siege) { battlePoints = siege.getBannerControllingResidents().size() * SiegeWarSettings.getWarBattlePointsForAttackerOccupation(); battlePoints = SiegeWarScoringUtil.applyBattlePointsAdjustmentForPopulationQuotient(true, battlePoints, siege); siege.adjustAttackerBattlePoints(battlePoints); - siege.registerAttackerBattleContributorsFromBannerControl(); + if (!siege.getSiegeType().equals(SiegeType.REVOLT)) + siege.registerSuccessfulBattleContributorsFromBannerControl(); break; case DEFENDERS: battlePoints = siege.getBannerControllingResidents().size() * SiegeWarSettings.getWarBattlePointsForDefenderOccupation(); battlePoints = SiegeWarScoringUtil.applyBattlePointsAdjustmentForPopulationQuotient(false, battlePoints, siege); siege.adjustDefenderBattlePoints(battlePoints); + if (siege.getSiegeType().equals(SiegeType.REVOLT)) + siege.registerSuccessfulBattleContributorsFromBannerControl(); break; default: } diff --git a/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBattleSessionUtil.java b/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBattleSessionUtil.java index 9da6f1ddf..e666ee02c 100644 --- a/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBattleSessionUtil.java +++ b/src/main/java/com/gmail/goosius/siegewar/utils/SiegeWarBattleSessionUtil.java @@ -60,7 +60,7 @@ public static void evaluateBattleSessions() { siege.adjustSiegeBalance(battlePointsOfWinner); //Propagate attacker battle contributions to siege history - siege.propagateAttackerBattleContributorsToResidentTimedPointContributors(); + siege.propagateSuccessfulBattleContributorsToResidentTimedPointContributors(); //Prepare result for messaging battleResults.put(siege, battlePointsOfWinner); @@ -83,7 +83,7 @@ public void run() { siege.clearBannerControlSessions(); siege.setAttackerBattlePoints(0); siege.setDefenderBattlePoints(0); - siege.clearAttackerBattleContributors(); + siege.clearSuccessfulBattleContributors(); //Save siege SiegeController.saveSiege(siege);