From ecea2e28ca41ee8821d69844d4aecdc9c93977a4 Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Wed, 18 Jul 2018 15:46:11 -0700 Subject: [PATCH] clue scroll plugin: Use Item IDs for overlays --- .../plugins/cluescrolls/ClueScrollPlugin.java | 82 +++++++++++++----- .../cluescrolls/ClueScrollWorldMapPoint.java | 37 ++++---- .../cluescrolls/clues/AnagramClue.java | 3 +- .../plugins/cluescrolls/clues/CipherClue.java | 3 +- .../cluescrolls/clues/CoordinateClue.java | 3 +- .../cluescrolls/clues/CrypticClue.java | 8 +- .../plugins/cluescrolls/clues/EmoteClue.java | 3 +- .../cluescrolls/clues/FairyRingClue.java | 3 +- .../cluescrolls/clues/HotColdClue.java | 8 +- .../plugins/cluescrolls/clues/MapClue.java | 6 +- .../plugins/cluescrolls/clue_scroll.png | Bin 15191 -> 0 bytes .../client/plugins/cluescrolls/spade.png | Bin 15302 -> 0 bytes 12 files changed, 89 insertions(+), 67 deletions(-) delete mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/cluescrolls/clue_scroll.png delete mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/cluescrolls/spade.png 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 4d092127f9..2f42c55011 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 @@ -47,6 +47,7 @@ import net.runelite.api.InventoryID; import net.runelite.api.Item; import net.runelite.api.ItemComposition; import net.runelite.api.ItemContainer; +import net.runelite.api.ItemID; import net.runelite.api.NPC; import net.runelite.api.Query; import net.runelite.api.Scene; @@ -96,11 +97,6 @@ public class ClueScrollPlugin extends Plugin { private static final Duration WAIT_DURATION = Duration.ofMinutes(4); - public static final BufferedImage CLUE_SCROLL_IMAGE; - public static final BufferedImage MAP_ARROW; - public static final BufferedImage EMOTE_IMAGE; - public static final BufferedImage SPADE_IMAGE; - @Getter private ClueScroll clue; @@ -147,28 +143,12 @@ public class ClueScrollPlugin extends Plugin @Inject private WorldMapPointManager worldMapPointManager; + private BufferedImage emoteImage; + private BufferedImage mapArrow; private Integer clueItemId; private boolean clueItemChanged = false; private boolean worldMapPointsSet = false; - static - { - try - { - synchronized (ImageIO.class) - { - CLUE_SCROLL_IMAGE = ImageIO.read(ClueScrollPlugin.class.getResourceAsStream("clue_scroll.png")); - MAP_ARROW = ImageIO.read(ClueScrollPlugin.class.getResourceAsStream("/util/clue_arrow.png")); - EMOTE_IMAGE = ImageIO.read(ClueScrollPlugin.class.getResourceAsStream("emote.png")); - SPADE_IMAGE = ImageIO.read(ClueScrollPlugin.class.getResourceAsStream("spade.png")); - } - } - catch (IOException e) - { - throw new RuntimeException(e); - } - } - @Provides ClueScrollConfig getConfig(ConfigManager configManager) { @@ -411,6 +391,60 @@ public class ClueScrollPlugin extends Plugin } } + public BufferedImage getClueScrollImage() + { + return itemManager.getImage(ItemID.CLUE_SCROLL_MASTER); + } + + public BufferedImage getEmoteImage() + { + if (emoteImage != null) + { + return emoteImage; + } + + try + { + synchronized (ImageIO.class) + { + emoteImage = ImageIO.read(getClass().getResourceAsStream("emote.png")); + } + } + catch (IOException e) + { + throw new RuntimeException(e); + } + + return emoteImage; + } + + public BufferedImage getSpadeImage() + { + return itemManager.getImage(ItemID.SPADE); + } + + BufferedImage getMapArrow() + { + if (mapArrow != null) + { + return mapArrow; + } + + try + { + synchronized (ImageIO.class) + { + mapArrow = ImageIO.read(getClass().getResourceAsStream("/util/clue_arrow.png")); + } + } + catch (IOException e) + { + throw new RuntimeException(e); + } + + return mapArrow; + } + private void resetClue() { if (!clueItemChanged) @@ -594,7 +628,7 @@ public class ClueScrollPlugin extends Plugin for (final WorldPoint point : points) { - worldMapPointManager.add(new ClueScrollWorldMapPoint(point)); + worldMapPointManager.add(new ClueScrollWorldMapPoint(point, this)); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollWorldMapPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollWorldMapPoint.java index 62b7891c9c..45fa1f874c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollWorldMapPoint.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollWorldMapPoint.java @@ -32,41 +32,40 @@ import net.runelite.client.ui.overlay.worldmap.WorldMapPoint; class ClueScrollWorldMapPoint extends WorldMapPoint { - private static final BufferedImage CLUE_SCROLL_WORLD_IMAGE; - private static final Point CLUE_SCROLL_WORLD_IMAGE_POINT; + private final ClueScrollPlugin plugin; + private final BufferedImage clueScrollWorldImage; + private final Point clueScrollWorldImagePoint; - static - { - CLUE_SCROLL_WORLD_IMAGE = new BufferedImage(ClueScrollPlugin.MAP_ARROW.getWidth(), ClueScrollPlugin.MAP_ARROW.getHeight(), BufferedImage.TYPE_INT_ARGB); - Graphics graphics = CLUE_SCROLL_WORLD_IMAGE.getGraphics(); - graphics.drawImage(ClueScrollPlugin.MAP_ARROW, 0, 0, null); - graphics.drawImage(ClueScrollPlugin.CLUE_SCROLL_IMAGE, 0, 2, null); - CLUE_SCROLL_WORLD_IMAGE_POINT = new Point( - CLUE_SCROLL_WORLD_IMAGE.getWidth() / 2, - CLUE_SCROLL_WORLD_IMAGE.getHeight()); - } - - ClueScrollWorldMapPoint(final WorldPoint worldPoint) + ClueScrollWorldMapPoint(final WorldPoint worldPoint, ClueScrollPlugin plugin) { super(worldPoint, null); + clueScrollWorldImage = new BufferedImage(plugin.getMapArrow().getWidth(), plugin.getMapArrow().getHeight(), BufferedImage.TYPE_INT_ARGB); + Graphics graphics = clueScrollWorldImage.getGraphics(); + graphics.drawImage(plugin.getMapArrow(), 0, 0, null); + graphics.drawImage(plugin.getClueScrollImage(), 0, 0, null); + clueScrollWorldImagePoint = new Point( + clueScrollWorldImage.getWidth() / 2, + clueScrollWorldImage.getHeight()); + + this.plugin = plugin; this.setSnapToEdge(true); this.setJumpOnClick(true); - this.setImage(CLUE_SCROLL_WORLD_IMAGE); - this.setImagePoint(CLUE_SCROLL_WORLD_IMAGE_POINT); + this.setImage(clueScrollWorldImage); + this.setImagePoint(clueScrollWorldImagePoint); } @Override public void onEdgeSnap() { - this.setImage(ClueScrollPlugin.CLUE_SCROLL_IMAGE); + this.setImage(plugin.getClueScrollImage()); this.setImagePoint(null); } @Override public void onEdgeUnsnap() { - this.setImage(CLUE_SCROLL_WORLD_IMAGE); - this.setImagePoint(CLUE_SCROLL_WORLD_IMAGE_POINT); + this.setImage(clueScrollWorldImage); + this.setImagePoint(clueScrollWorldImagePoint); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java index b4f51254f1..294907dcfe 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java @@ -33,7 +33,6 @@ import net.runelite.api.NPC; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.CLUE_SCROLL_IMAGE; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.components.LineComponent; @@ -203,7 +202,7 @@ public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueSc { for (NPC npc : plugin.getNpcsToMark()) { - OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET); + OverlayUtil.renderActorOverlayImage(graphics, npc, plugin.getClueScrollImage(), Color.ORANGE, IMAGE_Z_OFFSET); } } } 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 f715c84576..a55751fbd1 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 @@ -33,7 +33,6 @@ import net.runelite.api.NPC; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.CLUE_SCROLL_IMAGE; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.components.LineComponent; @@ -112,7 +111,7 @@ public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScr { for (NPC npc : plugin.getNpcsToMark()) { - OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET); + OverlayUtil.renderActorOverlayImage(graphics, npc, plugin.getClueScrollImage(), Color.ORANGE, IMAGE_Z_OFFSET); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java index 5a84d40508..654f31e977 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java @@ -32,7 +32,6 @@ import net.runelite.api.ItemID; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.SPADE_IMAGE; import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement; import net.runelite.client.ui.overlay.OverlayUtil; @@ -77,6 +76,6 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati return; } - OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, SPADE_IMAGE, Color.ORANGE); + OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getSpadeImage(), Color.ORANGE); } } 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 65ce2ebb59..d1aabbe261 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 @@ -38,8 +38,6 @@ import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.CLUE_SCROLL_IMAGE; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.SPADE_IMAGE; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_BORDER_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_FILL_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_HOVER_BORDER_COLOR; @@ -391,7 +389,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc if (localLocation != null) { - OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, SPADE_IMAGE, Color.ORANGE); + OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getSpadeImage(), Color.ORANGE); } } @@ -400,7 +398,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc { for (NPC npc : plugin.getNpcsToMark()) { - OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET); + OverlayUtil.renderActorOverlayImage(graphics, npc, plugin.getClueScrollImage(), Color.ORANGE, IMAGE_Z_OFFSET); } } @@ -416,7 +414,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc OverlayUtil.renderHoverableArea(graphics, gameObject.getClickbox(), mousePosition, CLICKBOX_FILL_COLOR, CLICKBOX_BORDER_COLOR, CLICKBOX_HOVER_BORDER_COLOR); - OverlayUtil.renderImageLocation(plugin.getClient(), graphics, gameObject.getLocalLocation(), CLUE_SCROLL_IMAGE, IMAGE_Z_OFFSET); + OverlayUtil.renderImageLocation(plugin.getClient(), graphics, gameObject.getLocalLocation(), plugin.getClueScrollImage(), IMAGE_Z_OFFSET); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java index 2e9f25bf27..2e718d2b3f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java @@ -38,7 +38,6 @@ import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.EMOTE_IMAGE; import net.runelite.client.plugins.cluescrolls.clues.emote.AllRequirementsCollection; import net.runelite.client.plugins.cluescrolls.clues.emote.AnyRequirementCollection; import net.runelite.client.plugins.cluescrolls.clues.emote.Emote; @@ -285,7 +284,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu return; } - OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, EMOTE_IMAGE, Color.ORANGE); + OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getEmoteImage(), Color.ORANGE); } public static EmoteClue forText(String text) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java index 590f31ee68..7841c85447 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java @@ -34,7 +34,6 @@ import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.SPADE_IMAGE; import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement; import net.runelite.client.ui.overlay.OverlayUtil; @@ -102,7 +101,7 @@ public class FairyRingClue extends ClueScroll implements TextClueScroll, Locatio return; } - OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, SPADE_IMAGE, Color.ORANGE); + OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getSpadeImage(), Color.ORANGE); } public static FairyRingClue forText(String text) 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 b340e9947d..f7c71b3f3d 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 @@ -45,8 +45,6 @@ import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.CLUE_SCROLL_IMAGE; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.SPADE_IMAGE; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; import net.runelite.client.plugins.cluescrolls.clues.hotcold.HotColdArea; import net.runelite.client.plugins.cluescrolls.clues.hotcold.HotColdLocation; @@ -196,7 +194,7 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat if (localLocation != null) { - OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, SPADE_IMAGE, Color.ORANGE); + OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getSpadeImage(), Color.ORANGE); } return; @@ -210,7 +208,7 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat { for (NPC npc : plugin.getNpcsToMark()) { - OverlayUtil.renderActorOverlayImage(graphics, npc, CLUE_SCROLL_IMAGE, Color.ORANGE, IMAGE_Z_OFFSET); + OverlayUtil.renderActorOverlayImage(graphics, npc, plugin.getClueScrollImage(), Color.ORANGE, IMAGE_Z_OFFSET); } } } @@ -229,7 +227,7 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat return; } - OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, SPADE_IMAGE, Color.ORANGE); + OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getSpadeImage(), Color.ORANGE); } } } 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 a032e3c894..fd2b65f874 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 @@ -40,8 +40,6 @@ import static net.runelite.api.ObjectID.CRATE_6616; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.CLUE_SCROLL_IMAGE; -import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.SPADE_IMAGE; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_BORDER_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_FILL_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_HOVER_BORDER_COLOR; @@ -179,14 +177,14 @@ public class MapClue extends ClueScroll implements ObjectClueScroll OverlayUtil.renderHoverableArea(graphics, gameObject.getClickbox(), mousePosition, CLICKBOX_FILL_COLOR, CLICKBOX_BORDER_COLOR, CLICKBOX_HOVER_BORDER_COLOR); - OverlayUtil.renderImageLocation(plugin.getClient(), graphics, gameObject.getLocalLocation(), CLUE_SCROLL_IMAGE, IMAGE_Z_OFFSET); + OverlayUtil.renderImageLocation(plugin.getClient(), graphics, gameObject.getLocalLocation(), plugin.getClueScrollImage(), IMAGE_Z_OFFSET); } } } // Mark tile else { - OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, SPADE_IMAGE, Color.ORANGE); + OverlayUtil.renderTileOverlay(plugin.getClient(), graphics, localLocation, plugin.getSpadeImage(), Color.ORANGE); } } diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/cluescrolls/clue_scroll.png b/runelite-client/src/main/resources/net/runelite/client/plugins/cluescrolls/clue_scroll.png deleted file mode 100644 index c4f28ce63b1136ba1cc36c24b93b69bcb5c4aae6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15191 zcmeI3eN%vAiOugfl#pRnOtrza7&UKk{c4J z^Ek0u+|F9H-4H$XIG3?nU$;|jOMN*`oZDG9l᳎Tet3{6@4tuQbxk*SKLhxyK z`sd9#x%u%t-|z4D+|TpE{pWU9RTL*lQY9FMC6$(#s===meA5!=fGc+Dm<(L!I!ji$ zG3=3K;Twnb?o7e3+$UK}JzsBrnxr|qg0garjKXJk3MNdy(&wb;R)&{0GR>^RAiL3j zLMCOc23eiftTa0dm=?CA)5X+uR#@oHR$6D3tu#vXJ`yCbGdv~r*=-It=`+Xzc}Wlp z&A3b&knpVrS)Nc(T5qnB7H}>`s#RpmX+oVV&Cw|ctu9xkSs_&^iELb{!wHRCNsvk% zsU)PKkIX0mk=|u(BCAbBp>p6agRF(;og|KXy9eEIHA+&aHR@YspLQ*cXv2= z$|rZYGlEGb^OzVn?P8rg%Q>V%UaFDv@CKPoC=~vL?#u2B7jn2m>;OgFM>%mqp~PdE ztaRAp^tfz+p;>91u`zbW!MlNvi0N~-a6IR3;btfq?w+wQm=m)(Ts!7??e>_Z-F#s? zKoCM2)9JQ!I2pW}adRFQ%@nqSTgixZ_dMGanVcz^gq|74&iL3FY(h`a7FY_w8PbD$ zB@0{(#d9tT$Jva*RaP~LP+CwRtg0O8Q+2Gv%6Z+(^mw!-GT)JGjEUkIBXH)*m1;Sm zv#6A$N<*qtS;E3pLP>(ks2pa_$~JYx%AqB-N;n6kjLre}kCo!7uapJWLV2t-*~Gc* z6mMkhR5OD+9nE??(g-QTtBNe(Y@7=Wi!rM8c&ui~6Y8cMFVHY(+6m8MBfH8HeYt5q?ys)2-fft^cIv~ZdkX<&JS*O~f)9Z2J^tZ87CnDH7b$%vS?DYB63x^sB)&dw86_^7; zk56lhR1WIvg*ml(0{R@45`1t%xQ487ceHiY!>w?4v^CTViWpV7uo3DA8G};={W}lL zWUv)HEP&?}Jp7hSP~fU>e9+#Dzoz3q)Kn4P-3hLL!0%A}*K) zG8S-~7I7gF!2%H%OamE5>ED&+QG?1}~3yBC8h`3-H$XLXM zL<9>&Trdq}EaE~Uf(0TjmM zP)e6nn=!026T{YZVc6XV;P*2O^C&UwY6FImJs7r#+q!z72*cv{mzwe{zTwk9TirTb zm2&2ToSPZ9*B58<*{p{xCONacPmy@Z_FB|$3 zM|!s1A9~xG@J9cJk^jCw^8O9oyBE%vpUmHm$8Fh@uBpAf-}Rw1zUT)FX7#T>d(L@n zA#rDO&tpVZVq8I8@yE;Qf7cRs8rMBvaq?N?D{rq^y#2M6F3p8kQ-5xpHI~xQP^aWQ z_dd7L`6fO|_uRVUwP%vvyjaI2B+FziS&74C3pWwjOWq@|-y_#1NPcyE!=R;&y|KG_ z^cT&e#<;Dvk6x$fv9srtxAsoB-)#JF*>3Ljw*Rd81iRjKy4O>d@?zn=Lpg(5>k&`Z zEKu{xBGtYkFzSo_{STfp{bhK-e{9pLz72C9ZyUA!M*hgKWaEM3-#&e6&8Js;R-f(p zV*dIgr~b4J8@cjmf-+qOia&Ss(~kacl4M35LPKoB#61wOq?g8Y@6Dzy9>B|FdmZ?*HMA!9O%~ zY@T`i-NW*R6SwAM9Q>muT{a68Eg#)w>q;4av2(?j^Sv9_;Ws|MbnW-vL#eZ${$cm_ z{#`lev{r?dxH{2pxqLf*Z1(AY_9ZPnxJ>1*si`^YSNqF%rTs1I!lIjVGv(biq)uyS zeId8?g@aqx9=`O--L~F}$`2~%9d&lTGv4sUq7w@y+Pm|%`uniI|9L4uviq&yzVTqw z`Ge1VSJI%ByyN+C+DUcIbx+>Dq91j~PZaxYi=ZbGLf)_rEvy z6YaphxW+_@bIqaqE3t{bx}wVQk!QVk$GzB>kL~TaSp4dk@ak)6VTI{He#83z0S7AW A!vFvP diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/cluescrolls/spade.png b/runelite-client/src/main/resources/net/runelite/client/plugins/cluescrolls/spade.png deleted file mode 100644 index 092326b31f299f50017c148a94a233c98094ca54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15302 zcmeI3eQXnD9LH}s9ZV-g1tu@crLZ`|+Pmv}&#o}m;RbZ_GGq%ucD+8`F0{SUyU}h) zco{EZz!8iC5lkSy5F<(q0TBXXGBF`yAebl^68OUa8A4>n8Sv$~wrg+Cx+haH{_`|x z?|#qk`F@|f&-47A-aofxUfuIWg%b)XiYltD@h*VJN$@*y-;%PoX=(LxV6-1v(K9MHD_!VMzM&@LX$V z40N)Ky1c?rsSQXs_~y}7atzQmlietC7ANg+nK+xvX||TrW|p%vtc&5SMwa7Q7teBZ z`eX1E!ZUX)5abtlXQhXOQH7yJRiiw^#N%;O++vbr%?#&qxfs^Wn9WAm!>F`HR3TxE zC{t1<{XSlxh%qUuN^*qOd$(%??sz5<-;WOe~X26c96- zXlpE#ytIJGfDj0Sh^jyxms1yQkyTk~k%t&ElOA$lI43?|X6&5T8xH3jT2ZT4LIi1~ zIh9I%TNE%0fFifXL{PmF-pZ6*cdtsp?Bon^(lSF{J4i@F$h1sKmRt&{8FIsW<*Q;q zP~}*?EQdU)RW`35Azf9atttmywpfY;Xt|wlGUw5Y6<;NXAZojrN7M=e1l-Jk z*6d|vlxdkXcmjt`ZIWL{4F&PUz4J zb&0evHC4I?v1ARVTH#|Je8OZhkC=nXGqa05$dl|HJxEu?iwuGQ!G{DFo)3~GxDX)t zkl@1eL9zrF0t6otTzEc6mf%8w;6s87&j-m8TnG?+NO0l#AX$P70fG++E<7J3OK>4T z@FBs4=YwPkE(8cZB)IT=kSxK40Kta@7oHE2CAbhE_>kbj^Fgu%7Xkzy5?pvbNS5G2 zfZ#)d3(p715?lxnd`NKN`5;+>3ju-;2`)SzBuj81K=2{Kh3A802`&T(J|wvCe2^@` zg#f{a1Q(tUk|nqhAo!5r!t+701Q!AX9}--6K1i0}LV(~yEUv=rOPe49-_(r5S2Fun z`McrkoU~Z8z(-N-r4+TcgQ9->6CQ6+R4YqSH=8Jm-$ha5pSX15 z+sZj3=8q}3^Lu_tiF?eru61>jH~eylp1p&fR-WIP-?)9_)~VY=-#7R>%Gk;cpUf$n zpD1I_?>l+*R7dE|+TvS19mmdfI^^Kn@0GrMvvkXh8!fKJ!yhz$3Px?adtm*HGv|dT zP9L0|7`x>~+u6;0S6}{I!vSO7(em>v)RK$mzFAj&c-Ps_kK~W&Uc1{HEzest=Fr^{ zmybR6>RV4I#*TWutc^7-J8qXJd~CSdReH&`DgNQksh>T^@87g;T4&RRUz<*!TiQ|3 zP_l8xYN1CNUp9HC@7kG3bLbyz7rL+g*wo!~V#Y<5{qAzj=!ri)^Gfx;&a&P$Q}1>@ zzG98zi?8z@I-cj+gY_VNd!BmMnT{Tu<*iXFL9Q zcuxM(qkHCG7wvnS?0fHz?peC$;I`7AZ|(B-6>XE>xL&wqqiJUOJ#*dtUT1J~*OV`< duk{sE?+5q4`_z@MV%nRwwbgark7hQl{|hxezZ(Dm