diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java index 7cb988874c..bcc207325b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java @@ -316,11 +316,22 @@ public class ClueScrollPlugin extends Plugin { return; } - if (event.getMenuOption().equals("Read")) + + final boolean itemClicked = event.getMenuAction() == MenuAction.ITEM_FIRST_OPTION + || event.getMenuAction() == MenuAction.ITEM_SECOND_OPTION + || event.getMenuAction() == MenuAction.ITEM_THIRD_OPTION + || event.getMenuAction() == MenuAction.ITEM_FOURTH_OPTION + || event.getMenuAction() == MenuAction.ITEM_FIFTH_OPTION; + final boolean isXMarksTheSpotOrb = event.getId() == ItemID.MYSTERIOUS_ORB_23069; + + if (itemClicked && (isXMarksTheSpotOrb || event.getMenuOption().equals("Read"))) { final ItemComposition itemComposition = itemManager.getItemComposition(event.getId()); - if (itemComposition != null && (itemComposition.getName().startsWith("Clue scroll") || itemComposition.getName().startsWith("Challenge scroll"))) + if (isXMarksTheSpotOrb + || itemComposition.getName().startsWith("Clue scroll") + || itemComposition.getName().startsWith("Challenge scroll") + || itemComposition.getName().startsWith("Treasure scroll")) { clueItemId = itemComposition.getId(); updateClue(MapClue.forItemId(clueItemId)); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java index a8aff43840..e9fc62186f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java @@ -58,17 +58,29 @@ public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScr new CipherClue("GBJSZ RVFFO", "Fairy Queen", new WorldPoint(2347, 4435, 0), "Fairy Resistance Hideout"), new CipherClue("QSPGFTTPS HSBDLMFCPOF", "Professor Gracklebone", new WorldPoint(1625, 3802, 0), "Ground floor of Arceuus Library", "How many round tables can be found on this floor of the library?", "9"), new CipherClue("IWPPLQTP", "Gunnjorn", new WorldPoint(2541, 3548, 0), "Barbarian Outpost Agility course"), - new CipherClue("BSOPME MZETQPS", "Arnold Lydspor", new WorldPoint(2329, 3689, 0), "Piscatoris Fishing Colony general store/bank") + new CipherClue("BSOPME MZETQPS", "Arnold Lydspor", new WorldPoint(2329, 3689, 0), "Piscatoris Fishing Colony general store/bank"), + new CipherClue("ESBZOPS QJH QFO", new WorldPoint(3077, 3260, 0), "Inside of Martin the Master Gardener's pig pen in Draynor Village.") ); - private String text; - private String npc; - private WorldPoint location; - private String area; + private final String text; @Nullable - private String question; + private final String npc; + private final WorldPoint location; + private final String area; @Nullable - private String answer; + private final String question; + @Nullable + private final String answer; + + private CipherClue(String text, WorldPoint location, String area) + { + this.text = "The cipher reveals where to dig next: " + text; + this.npc = null; + this.location = location; + this.area = area; + this.question = null; + this.answer = null; + } private CipherClue(String text, String npc, WorldPoint location, String area) { @@ -89,11 +101,16 @@ public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScr public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin) { panelComponent.getChildren().add(TitleComponent.builder().text("Cipher Clue").build()); - panelComponent.getChildren().add(LineComponent.builder().left("NPC:").build()); - panelComponent.getChildren().add(LineComponent.builder() - .left(getNpc()) - .leftColor(TITLED_CONTENT_COLOR) - .build()); + + final String clueNpc = getNpc(); + if (clueNpc != null) + { + panelComponent.getChildren().add(LineComponent.builder().left("NPC:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(clueNpc) + .leftColor(TITLED_CONTENT_COLOR) + .build()); + } panelComponent.getChildren().add(LineComponent.builder().left("Location:").build()); panelComponent.getChildren().add(LineComponent.builder() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java index 0e8ce89b34..7c4b03c4c8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java @@ -325,7 +325,8 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc new CrypticClue("Search the crates in the fruit store just east of the Hosidius town centre.", CRATES_27533, new WorldPoint(1799, 3613, 0), "Search the crates in the back room of the Hosidius fruit store."), new CrypticClue("A graceful man of many colours, his crates must be full of many delights.", "Hill Giant", CRATE_42067, new WorldPoint(1506, 3590, 2), "Kill any Hill Giant for a medium key. Then search the crate on the top floor of Osten's clothing shop in Shayzien."), new CrypticClue("Search the basket of apples in an orchard, south of the unknown grave surrounded by white roses.", APPLE_BASKET, new WorldPoint(1718, 3626, 0), "Search the middle apple basket in the apple orchard north of Hosidius."), - new CrypticClue("Dig in the lair of red wings, within the temple of the Sun and Moon.", new WorldPoint(1820, 9935, 0), "Forthos Dungeon. In the center of the red dragons.") + new CrypticClue("Dig in the lair of red wings, within the temple of the Sun and Moon.", new WorldPoint(1820, 9935, 0), "Forthos Dungeon. In the center of the red dragons."), + new CrypticClue("Within the town of Lumbridge lives a man named Bob. He walks out of his door and takes 1 step east, 7 steps north, 5 steps west and 1 step south. Once he arrives, he digs a hole and buries his treasure.", new WorldPoint(3230, 3209, 0), "Just west of the bush outside Bob's axe shop in Lumbridge.") ); private final String text; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java index 06334ab0ff..fcc6153f89 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java @@ -89,7 +89,9 @@ public class MapClue extends ClueScroll implements ObjectClueScroll new MapClue(CLUE_SCROLL_ELITE_19783, new WorldPoint(2202, 3062, 0), "Zul-Andra. Fairy ring BJS"), new MapClue(CLUE_SCROLL_ELITE_19784, new WorldPoint(1815, 3852, 0), "At the Soul Altar, north-east of the Arceuus essence mine."), new MapClue(CLUE_SCROLL_ELITE_19785, new WorldPoint(3538, 3208, 0), "East of Burgh de Rott."), - new MapClue(CLUE_SCROLL_ELITE_19786, new WorldPoint(2703, 2716, 0), CRATE_6616, "The crate in south-western Ape Atoll") + new MapClue(CLUE_SCROLL_ELITE_19786, new WorldPoint(2703, 2716, 0), CRATE_6616, "The crate in south-western Ape Atoll"), + new MapClue(TREASURE_SCROLL_23068, new WorldPoint(3203, 3213, 0), "Behind Lumbridge Castle, just outside the kitchen door"), + new MapClue(MYSTERIOUS_ORB_23069, new WorldPoint(3108, 3262, 0), "South-west of the wheat field east of Draynor Village.") ); private final int itemId; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java index 4a079391a2..f6fb7dc445 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java @@ -55,7 +55,7 @@ enum Task BASILISKS("Basilisks", ItemID.BASILISK), BATS("Bats", ItemID.GIRAL_BAT_2, "Death wing"), BEARS("Bears", ItemID.ENSOULED_BEAR_HEAD), - BIRDS("Birds", ItemID.FEATHER, "Chicken", "Rooster", "Terrorbird", "Seagull", "Vulture"), + BIRDS("Birds", ItemID.FEATHER, "Chicken", "Rooster", "Terrorbird", "Seagull", "Vulture", "Duck"), BLACK_DEMONS("Black demons", ItemID.BLACK_DEMON_MASK), BLACK_DRAGONS("Black dragons", ItemID.BLACK_DRAGON_MASK, "Baby black dragon"), BLACK_KNIGHTS("Black Knights", ItemID.BLACK_FULL_HELM, "Black Knight"), diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java index e490529161..6be985cf67 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java @@ -32,6 +32,7 @@ import java.awt.Component; import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; +import java.awt.Frame; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; @@ -365,6 +366,16 @@ public class ClientUI } }); + frame.addWindowStateListener(l -> + { + if (l.getNewState() == Frame.NORMAL) + { + // Recompute minimum size after a restore. + // Invoking this immediately causes the minimum size to be 8px too small with custom chrome on. + SwingUtilities.invokeLater(frame::revalidateMinimumSize); + } + }); + container = new JPanel(); container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS)); container.add(new ClientPanel(client)); diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/roofremoval/overrides.jsonc b/runelite-client/src/main/resources/net/runelite/client/plugins/roofremoval/overrides.jsonc index f7a788b056..a8a0ce152d 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/roofremoval/overrides.jsonc +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/roofremoval/overrides.jsonc @@ -3298,5 +3298,15 @@ "z1": 1, "z2": 1 } + ], + "11325": [ // Weiss + { + "rx1": 43, + "ry1": 37, + "rx2": 46, + "ry2": 41, + "z1": 0, + "z2": 0 + } ] }