From 45e1441072c9618ec9167114e2cef10e073cd17a Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Sun, 30 Jun 2019 23:10:05 -0700 Subject: [PATCH 1/3] HotColdTemperature: Fix warm-but-colder temperature bug Because the word "cold" is used both as a temperature ("The device is cold"), and in a temperature change ("but colder than last time."), HotColdTemperature tried to interpret COLDER temperature changes as a COLD temperature match. By matching only the section of the temperature string preceding the optional comma, this bug is avoided. --- .../plugins/cluescrolls/clues/hotcold/HotColdTemperature.java | 4 +++- .../cluescrolls/clues/hotcold/HotColdTemperatureTest.java | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperature.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperature.java index 2dc5909000..21171eec8d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperature.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperature.java @@ -32,6 +32,7 @@ import java.util.Set; import javax.annotation.Nullable; import lombok.AllArgsConstructor; import lombok.Getter; +import net.runelite.client.util.Text; @AllArgsConstructor @Getter @@ -93,11 +94,12 @@ public enum HotColdTemperature return null; } + final String messageStart = Text.fromCSV(message).get(0); final List possibleTemperatures = new ArrayList<>(); for (final HotColdTemperature temperature : temperatureSet) { - if (message.contains(temperature.getText())) + if (messageStart.contains(temperature.getText())) { possibleTemperatures.add(temperature); } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperatureTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperatureTest.java index e9711dc433..cbc4c0e267 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperatureTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdTemperatureTest.java @@ -73,5 +73,7 @@ public class HotColdTemperatureTest assertEquals(HotColdTemperature.ICE_COLD, HotColdTemperature.getFromTemperatureSet(HotColdTemperature.MASTER_HOT_COLD_TEMPERATURES, "The device is ice cold.")); assertEquals(HotColdTemperature.VERY_COLD, HotColdTemperature.getFromTemperatureSet(HotColdTemperature.MASTER_HOT_COLD_TEMPERATURES, "The device is very cold.")); assertEquals(HotColdTemperature.VERY_HOT, HotColdTemperature.getFromTemperatureSet(HotColdTemperature.MASTER_HOT_COLD_TEMPERATURES, "The device is very hot.")); + assertEquals(HotColdTemperature.COLD, HotColdTemperature.getFromTemperatureSet(HotColdTemperature.BEGINNER_HOT_COLD_TEMPERATURES, "The device is cold, and warmer than last time.")); + assertEquals(HotColdTemperature.WARM, HotColdTemperature.getFromTemperatureSet(HotColdTemperature.BEGINNER_HOT_COLD_TEMPERATURES, "The device is warm, but colder than last time.")); } } From 29d786b948f52d5ec4ae3f31f90e23a3e81bdc9a Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Sun, 30 Jun 2019 22:26:09 -0700 Subject: [PATCH 2/3] HotColdClue: Improve behavior on visibly shaking location This change causes the locations list to be narrowed on all locator orb checks, having the consequence of narrowing the list to the visibly shaking location (for better display via `makeOverlayHint()'). The call to `reset()' must be removed as it would re-add all locations to the instance's solver when finding the dig location, which effectively reverses the apparent narrowing the overlay displayed until that point. --- .../client/plugins/cluescrolls/clues/HotColdClue.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java index 5fad4e4207..3ea30d27b6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java @@ -296,11 +296,11 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat else { location = null; - - final HotColdTemperatureChange temperatureChange = HotColdTemperatureChange.of(message); - hotColdSolver.signal(localWorld, temperature, temperatureChange); } + final HotColdTemperatureChange temperatureChange = HotColdTemperatureChange.of(message); + hotColdSolver.signal(localWorld, temperature, temperatureChange); + return true; } @@ -339,7 +339,6 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat private void markFinalSpot(WorldPoint wp) { this.location = wp; - reset(); } public String[] getNpcs() From 2c13816ca9896ab89de3e5335b126f3fae89f9f6 Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Sun, 30 Jun 2019 22:37:55 -0700 Subject: [PATCH 3/3] HotColdClue: Clear final location on clue reset If the clue is being reset, say from a new clue being read and initialized, we should not continue to use the old location. --- .../runelite/client/plugins/cluescrolls/clues/HotColdClue.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java index 3ea30d27b6..219916d240 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/HotColdClue.java @@ -307,6 +307,7 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat @Override public void reset() { + location = null; initializeSolver(); }