diff options
author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-01-20 18:57:08 +0300 |
---|---|---|
committer | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-01-21 09:37:49 +0300 |
commit | 4fd8d4f727ce611eb28218e6a47080894a78b7b1 (patch) | |
tree | 5ece8b197b3aedce847b86c75bc772f8412e92f6 /src | |
parent | ac6ac5096bf60c39ddf52bad41a6123afa51b097 (diff) | |
download | Skyblocker-4fd8d4f727ce611eb28218e6a47080894a78b7b1.tar.gz Skyblocker-4fd8d4f727ce611eb28218e6a47080894a78b7b1.tar.bz2 Skyblocker-4fd8d4f727ce611eb28218e6a47080894a78b7b1.zip |
Fix mimic messages not increasing score when mimic filter is disabled
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java | 11 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/filters/MimicFilter.java | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java index cb834e7f..10605d8b 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java @@ -48,6 +48,7 @@ public class DungeonScore { private static final Pattern COMPLETED_ROOMS_PATTERN = Pattern.compile(" *Completed Rooms: (?<rooms>\\d+)"); //Chat patterns private static final Pattern DEATHS_PATTERN = Pattern.compile(" \\u2620 (?<whodied>\\S+) .*"); + private static final Pattern MIMIC_PATTERN = Pattern.compile(".*?(?:Mimic dead!?|Mimic Killed!|\\$SKYTILS-DUNGEON-SCORE-MIMIC\\$|\\Q" + MIMIC_MESSAGE_CONFIG.mimicMessage + "\\E)$"); //Other patterns private static final Pattern MIMIC_FLOORS_PATTERN = Pattern.compile("[FM][67]"); @@ -80,6 +81,7 @@ public class DungeonScore { } else { checkMessageForDeaths(str); checkMessageForWatcher(str); + if (floorHasMimics) checkMessageForMimic(str); //Only called when the message is not cancelled & isn't on the action bar, complementing MimicFilter } }); ClientReceiveMessageEvents.GAME_CANCELED.register((message, overlay) -> { @@ -210,8 +212,8 @@ public class DungeonScore { mimicKilled = true; } - public static void setMimicKilled(boolean state) { - mimicKilled = state; + public static void onMimicKill() { + mimicKilled = true; } //This is not very accurate at the beginning of the dungeon since clear percentage is rounded to the closest integer, so at lower percentages its effect on the result is quite high. @@ -330,6 +332,11 @@ public class DungeonScore { onDungeonStart(); } + private static void checkMessageForMimic(String message) { + if (!MIMIC_PATTERN.matcher(message).matches()) return; + onMimicKill(); + } + public static void setCurrentFloor() { for (String sidebarLine : Utils.STRING_SCOREBOARD) { Matcher floorMatcher = FLOOR_PATTERN.matcher(sidebarLine); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/filters/MimicFilter.java b/src/main/java/de/hysky/skyblocker/skyblock/filters/MimicFilter.java index 367e393c..cb845254 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/filters/MimicFilter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/filters/MimicFilter.java @@ -22,7 +22,7 @@ public class MimicFilter extends ChatPatternListener { @Override protected boolean onMatch(Text message, Matcher matcher) { if (!Utils.isInDungeons() || !DungeonScore.isDungeonStarted() || !DungeonScore.isMimicOnCurrentFloor()) return false; - DungeonScore.setMimicKilled(true); + DungeonScore.onMimicKill(); //Only called when the message is cancelled | sent to action bar, complementing DungeonScore#checkMessageForMimic return true; } } |