From 796b2dc422d89d741a2df835bf060020880177eb Mon Sep 17 00:00:00 2001 From: xKylee <48519776+xKylee@users.noreply.github.com> Date: Thu, 5 Dec 2019 22:31:07 +0000 Subject: [PATCH] MES: various updates Removed left click destination due to jagex adding this. removed charter option as it was unused and covered under swap travel. amended swapabyssteleport to actually be used. --- .../MenuEntrySwapperConfig.java | 43 -- .../MenuEntrySwapperPlugin.java | 129 +--- .../menuentryswapper/util/CharterOption.java | 20 - .../util/JewelleryBoxDestination.java | 88 --- .../src/main/scripts/JewelleryBoxInit.hash | 1 - .../src/main/scripts/JewelleryBoxInit.rs2asm | 637 ------------------ 6 files changed, 5 insertions(+), 913 deletions(-) delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/CharterOption.java delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/JewelleryBoxDestination.java delete mode 100644 runelite-client/src/main/scripts/JewelleryBoxInit.hash delete mode 100644 runelite-client/src/main/scripts/JewelleryBoxInit.rs2asm diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java index 46265bdcdb..86992086ae 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java @@ -34,7 +34,6 @@ import net.runelite.client.config.ConfigSection; import net.runelite.client.config.Keybind; import net.runelite.client.plugins.menuentryswapper.util.ArdougneCloakMode; import net.runelite.client.plugins.menuentryswapper.util.BurningAmuletMode; -import net.runelite.client.plugins.menuentryswapper.util.CharterOption; import net.runelite.client.plugins.menuentryswapper.util.CombatBraceletMode; import net.runelite.client.plugins.menuentryswapper.util.ConstructionCapeMode; import net.runelite.client.plugins.menuentryswapper.util.ConstructionMode; @@ -826,18 +825,6 @@ public interface MenuEntrySwapperConfig extends Config return false; } - @ConfigItem( - keyName = "charterOption", - name = "Trader Crew", - description = "Configure whether you want Charter or Trade to be the first option of Trader Crewmembers.", - position = 27, - section = "miscellaneousSection" - ) - default CharterOption charterOption() - { - return CharterOption.TRADE; - } - //------------------------------------------------------------// // Shop / Stores //------------------------------------------------------------// @@ -1319,17 +1306,6 @@ public interface MenuEntrySwapperConfig extends Config // Teleportation //------------------------------------------------------------// - @ConfigItem( - keyName = "lastJewel", - name = "Last Destination for Jewellery Box", - description = "Adds a \"Last-destination\" menu option when Jewellery Boxes are right clicked", - section = "teleportationSection" - ) - default boolean lastJewel() - { - return true; - } - @ConfigItem( keyName = "swapFairyRing", name = "Fairy Ring", @@ -1951,23 +1927,4 @@ public interface MenuEntrySwapperConfig extends Config { return "cure other, energy transfer, heal other, vengeance other"; } - - @ConfigItem( - keyName = "lastDes", - name = "", - description = "Last jewellery box destination (option)", - hidden = true - ) - default String lastDes() - { - return ""; - } - - @ConfigItem( - keyName = "lastDes", - name = "", - description = "Last jewellery box destination (option)", - hidden = true - ) - void lastDes(String des); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java index 5704501eb8..15740153ef 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java @@ -62,16 +62,10 @@ import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ClientTick; import net.runelite.api.events.FocusChanged; import net.runelite.api.events.GameStateChanged; -import net.runelite.api.events.Menu; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOpened; -import net.runelite.api.events.MenuOptionClicked; -import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.VarbitChanged; import net.runelite.api.util.Text; -import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetID; -import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; import net.runelite.client.config.Keybind; @@ -96,7 +90,6 @@ import net.runelite.client.plugins.menuentryswapper.comparables.ShopComparableEn import net.runelite.client.plugins.menuentryswapper.comparables.WithdrawComparableEntry; import net.runelite.client.plugins.menuentryswapper.util.ArdougneCloakMode; import net.runelite.client.plugins.menuentryswapper.util.BurningAmuletMode; -import net.runelite.client.plugins.menuentryswapper.util.CharterOption; import net.runelite.client.plugins.menuentryswapper.util.CombatBraceletMode; import net.runelite.client.plugins.menuentryswapper.util.ConstructionCapeMode; import net.runelite.client.plugins.menuentryswapper.util.ConstructionMode; @@ -108,7 +101,6 @@ import net.runelite.client.plugins.menuentryswapper.util.GamesNecklaceMode; import net.runelite.client.plugins.menuentryswapper.util.GloryMode; import net.runelite.client.plugins.menuentryswapper.util.HouseAdvertisementMode; import net.runelite.client.plugins.menuentryswapper.util.HouseMode; -import net.runelite.client.plugins.menuentryswapper.util.JewelleryBoxDestination; import net.runelite.client.plugins.menuentryswapper.util.MaxCapeMode; import net.runelite.client.plugins.menuentryswapper.util.NecklaceOfPassageMode; import net.runelite.client.plugins.menuentryswapper.util.ObeliskMode; @@ -123,7 +115,6 @@ import net.runelite.client.plugins.pvptools.PvpToolsConfig; import net.runelite.client.plugins.pvptools.PvpToolsPlugin; import net.runelite.client.util.HotkeyListener; import static net.runelite.client.util.MenuUtil.swap; -import org.apache.commons.lang3.ArrayUtils; @PluginDescriptor( name = "Menu Entry Swapper", @@ -140,10 +131,6 @@ public class MenuEntrySwapperPlugin extends Plugin private static final Object CONTROL = new Object(); private static final Object HOTKEY_CHECK = new Object(); private static final Object CONTROL_CHECK = new Object(); - private static final Object JEWEL_CLICKED = new Object(); - private static final Object JEWEL_TELE = new Object(); - private static final Object JEWEL_WIDGET = new Object(); - private static final int PURO_PURO_REGION_ID = 10307; private static final Set NPC_MENU_TYPES = ImmutableSet.of( MenuOpcode.NPC_FIRST_OPTION, MenuOpcode.NPC_SECOND_OPTION, MenuOpcode.NPC_THIRD_OPTION, @@ -202,7 +189,6 @@ public class MenuEntrySwapperPlugin extends Plugin private List bankItemNames = new ArrayList<>(); private BurningAmuletMode getBurningAmuletMode; - private CharterOption charterOption; private CombatBraceletMode getCombatBraceletMode; private ArdougneCloakMode ardougneCloakMode; private ConstructionCapeMode constructionCapeMode; @@ -304,8 +290,6 @@ public class MenuEntrySwapperPlugin extends Plugin private boolean swapTravel; private boolean swapWildernessLever; - private JewelleryBoxDestination lastDes; - @Provides MenuEntrySwapperConfig provideConfig(ConfigManager configManager) { @@ -315,13 +299,9 @@ public class MenuEntrySwapperPlugin extends Plugin @Override public void startUp() { - this.lastDes = JewelleryBoxDestination.withOption(config.lastDes()); updateConfig(); - if (config.lastJewel()) - { - eventBus.subscribe(MenuOptionClicked.class, JEWEL_CLICKED, this::onMenuOptionClicked); - } + addSwaps(); loadConstructionItems(); loadCustomSwaps(config.customSwaps(), customSwaps); @@ -414,16 +394,6 @@ public class MenuEntrySwapperPlugin extends Plugin case "removedObjects": updateRemovedObjects(); return; - case "lastJewel": - if (config.lastJewel()) - { - eventBus.subscribe(MenuOptionClicked.class, JEWEL_CLICKED, this::onMenuOptionClicked); - } - else - { - eventBus.unregister(JEWEL_CLICKED); - } - return; } if (event.getKey().startsWith("swapSell") || event.getKey().startsWith("swapBuy") || @@ -551,21 +521,6 @@ public class MenuEntrySwapperPlugin extends Plugin } } - if (config.lastJewel() && option.equals("teleport") && entry.getTarget().contains("Jewellery Box") && lastDes != null) - { - final MenuEntry lastDesEntry = new MenuEntry(); - - lastDesEntry.setOpcode(MenuOpcode.PRIO_RUNELITE.getId()); - lastDesEntry.setOption(lastDes.getOption()); - - lastDesEntry.setTarget(entry.getTarget()); - lastDesEntry.setIdentifier(entry.getIdentifier()); - lastDesEntry.setParam0(entry.getParam0()); - lastDesEntry.setParam1(entry.getParam1()); - - menu_entries.add(lastDesEntry); - } - menu_entries.add(entry); } @@ -734,83 +689,6 @@ public class MenuEntrySwapperPlugin extends Plugin } } - private void onMenuOptionClicked(MenuOptionClicked entry) - { - if (entry.getOpcode() == MenuOpcode.WIDGET_DEFAULT.getId() && - WidgetInfo.TO_GROUP(entry.getParam1()) == WidgetID.JEWELLERY_BOX_GROUP_ID) - { - if (entry.getOption().equals(lastDes == null ? null : lastDes.getOption())) - { - return; - } - - JewelleryBoxDestination newDest = JewelleryBoxDestination.withOption(entry.getOption()); - if (newDest == null) - { - return; - } - - lastDes = newDest; - config.lastDes(lastDes.getOption()); - } - else if (entry.getOption().equals("Teleport") && entry.getTarget().contains("Jewellery Box")) - { - eventBus.unregister(JEWEL_WIDGET); - } - else if (lastDes != null && - entry.getOpcode() == MenuOpcode.PRIO_RUNELITE.getId() && - entry.getOption().equals(lastDes.getOption())) - { - entry.setOption("Teleport"); - entry.setOpcode(MenuOpcode.GAME_OBJECT_FIRST_OPTION.getId()); - - eventBus.subscribe(ScriptCallbackEvent.class, JEWEL_WIDGET, this::onScriptCallback); - } - } - - private void onScriptCallback(ScriptCallbackEvent event) - { - if (!event.getEventName().equals("jewelleryBoxDone")) - { - return; - } - - eventBus.unregister(JEWEL_WIDGET); - - // Use a event so we don't accidentally run another script before returning - // menu also is when jagex is probably expecting input like this so :) - eventBus.subscribe(Menu.class, JEWEL_TELE, this::teleportInputs); - } - - private void teleportInputs(Menu menu) - { - final Widget parent = client.getWidget(lastDes.getParent()); - if (parent == null) - { - return; - } - - final Widget child = parent.getChild(lastDes.getChildIndex()); - if (child == null) - { - return; - } - - Object[] args = child.getOnOp(); - if (args == null) - { - return; - } - - // Replace opIndex with 1 - args[ArrayUtils.indexOf(args, 0x80000004)] = 1; - - client.runScript(args); - eventBus.unregister(JEWEL_TELE); - - menu.dontRun(); - } - private void loadCustomSwaps(String config, Map map) { final Map tmp = new HashMap<>(); @@ -1011,6 +889,10 @@ public class MenuEntrySwapperPlugin extends Plugin menuManager.addPriorityEntry("Rellekka"); menuManager.addPriorityEntry("Follow", "Elkoy").setPriority(10); menuManager.addPriorityEntry("Transport"); + } + + if (this.swapAbyssTeleport) + { menuManager.addPriorityEntry("Teleport", "Mage of zamorak").setPriority(10); } @@ -1680,7 +1562,6 @@ public class MenuEntrySwapperPlugin extends Plugin private void updateConfig() { - this.charterOption = config.charterOption(); this.configCustomShiftSwaps = config.shiftCustomSwaps(); this.configCustomSwaps = config.customSwaps(); this.ardougneCloakMode = config.ardougneCloakMode(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/CharterOption.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/CharterOption.java deleted file mode 100644 index 668d993dcb..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/CharterOption.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.runelite.client.plugins.menuentryswapper.util; - -public enum CharterOption -{ - TRADE("Trade"), - CHARTER("Charter"); - - private final String name; - - CharterOption(String name) - { - this.name = name; - } - - @Override - public String toString() - { - return name; - } -} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/JewelleryBoxDestination.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/JewelleryBoxDestination.java deleted file mode 100644 index 88cfde5496..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/util/JewelleryBoxDestination.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2019, Lucas - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.client.plugins.menuentryswapper.util; - -import com.google.common.collect.ImmutableMap; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import net.runelite.api.widgets.WidgetInfo; - -@RequiredArgsConstructor -@Getter -public enum JewelleryBoxDestination -{ - DUEL_ARENA("Duel Arena", WidgetInfo.JEWELLERY_BOX_DUEL_RING, 5), - CASTLE_WARS("Castle Wars", WidgetInfo.JEWELLERY_BOX_DUEL_RING, 6), - CLAN_WARS("Clan Wars", WidgetInfo.JEWELLERY_BOX_DUEL_RING, 7), - - BURTHORPE("Burthorpe", WidgetInfo.JEWELLERY_BOX_GAME_NECK, 5), - BARB_OUTPOST("Barbarian Outpost", WidgetInfo.JEWELLERY_BOX_GAME_NECK, 6), - CORP("Corporeal Beast", WidgetInfo.JEWELLERY_BOX_GAME_NECK, 7), - TEARS_OF_GUTHIX("Tears of Guthix", WidgetInfo.JEWELLERY_BOX_GAME_NECK, 8), - WINTERTODT("Wintertodt Camp", WidgetInfo.JEWELLERY_BOX_GAME_NECK, 9), - - WARRIOR_GUILD("Warriors' Guild", WidgetInfo.JEWELLERY_BOX_COMB_BRAC, 5), - CHAMPION_GUILD("Champions' Guild", WidgetInfo.JEWELLERY_BOX_COMB_BRAC, 6), - MONASTERY("Monastery", WidgetInfo.JEWELLERY_BOX_COMB_BRAC, 7), - RANGING_GUILD("Ranging Guild", WidgetInfo.JEWELLERY_BOX_COMB_BRAC, 8), - - FISHING_GUILD("Fishing Guild", WidgetInfo.JEWELLERY_BOX_SKIL_NECK, 5), - MINING_GUILD("Mining Guild", WidgetInfo.JEWELLERY_BOX_SKIL_NECK, 6), - CRAFTING_GUILD("Crafting Guild", WidgetInfo.JEWELLERY_BOX_SKIL_NECK, 7), - COOKING_GUILD("Cooking Guild", WidgetInfo.JEWELLERY_BOX_SKIL_NECK, 8), - WOODCUTTING_GUILD("Woodcutting Guild", WidgetInfo.JEWELLERY_BOX_SKIL_NECK, 9), - FARMING_GUILD("Farming Guild", WidgetInfo.JEWELLERY_BOX_SKIL_NECK, 10), - - MISCELLANIA("Miscellania", WidgetInfo.JEWELLERY_BOX_RING_OFGP, 5), - GRAND_EXCHANGE("Grand Exchange", WidgetInfo.JEWELLERY_BOX_RING_OFGP, 6), - FALADOR_PARK("Falador Park", WidgetInfo.JEWELLERY_BOX_RING_OFGP, 7), - DONDAKAN("Dondakan's Rock", WidgetInfo.JEWELLERY_BOX_RING_OFGP, 8), - - EDGEVILLE("Edgeville", WidgetInfo.JEWELLERY_BOX_AMUL_GLOR, 5), - KARAMJA("Karamja", WidgetInfo.JEWELLERY_BOX_AMUL_GLOR, 6), - DRAYNOR("Draynor Village", WidgetInfo.JEWELLERY_BOX_AMUL_GLOR, 7), - AL_KHARID("Al Kharid", WidgetInfo.JEWELLERY_BOX_AMUL_GLOR, 8); - - final String option; - final WidgetInfo parent; - final int childIndex; - - private static final ImmutableMap map; - - static - { - final ImmutableMap.Builder builder = ImmutableMap.builderWithExpectedSize(values().length); - for (JewelleryBoxDestination val : values()) - { - builder.put(val.option, val); - } - map = builder.build(); - } - - public static JewelleryBoxDestination withOption(String option) - { - return map.get(option); - } -} diff --git a/runelite-client/src/main/scripts/JewelleryBoxInit.hash b/runelite-client/src/main/scripts/JewelleryBoxInit.hash deleted file mode 100644 index 8089dd2109..0000000000 --- a/runelite-client/src/main/scripts/JewelleryBoxInit.hash +++ /dev/null @@ -1 +0,0 @@ -8C575721ABBD408F564BB6A93894BEFC4D7928A6FBF0218FE5F5E68BD9354C3C \ No newline at end of file diff --git a/runelite-client/src/main/scripts/JewelleryBoxInit.rs2asm b/runelite-client/src/main/scripts/JewelleryBoxInit.rs2asm deleted file mode 100644 index 89ce55505f..0000000000 --- a/runelite-client/src/main/scripts/JewelleryBoxInit.rs2asm +++ /dev/null @@ -1,637 +0,0 @@ -.id 1685 -.int_stack_count 2 -.string_stack_count 1 -.int_var_count 15 -.string_var_count 2 - invoke 2157 - iconst 38666241 - sload 0 - iconst 0 - invoke 228 - pop_int - iconst 38666240 - cc_deleteall - iconst 0 - istore 2 - iconst 0 - istore 3 - iconst 38666240 - if_getwidth - istore 4 - iload 4 - iconst 10 - sub - iconst 10 - sub - iconst 5 - sub - istore 4 - iload 4 - iconst 2 - div - istore 5 - iconst 38666240 - if_getheight - istore 6 - iload 6 - iconst 40 - sub - iconst 10 - sub - iconst 5 - sub - iconst 5 - sub - istore 6 - iconst 0 - istore 7 - iconst 0 - istore 8 - iconst 0 - istore 9 - iconst 5 - istore 10 - iconst 6 - istore 11 - iconst 4 - istore 12 - iload 10 - iload 11 - add - iload 12 - add - istore 13 - iload 10 - iload 13 - iload 6 - scale - istore 7 - iload 11 - iload 13 - iload 6 - scale - istore 8 - iload 12 - iload 13 - iload 6 - scale - istore 9 - iload 5 - iload 7 - iconst 0 - iconst 0 - iconst 38666242 - if_setsize - iconst 10 - iconst 40 - iconst 0 - iconst 0 - iconst 38666242 - if_setposition - iload 5 - iload 7 - iconst 0 - iconst 0 - iconst 38666243 - if_setsize - iconst 10 - iload 5 - add - iconst 5 - add - iconst 40 - iconst 0 - iconst 0 - iconst 38666243 - if_setposition - iload 5 - iload 8 - iconst 0 - iconst 0 - iconst 38666244 - if_setsize - iconst 10 - iconst 40 - iload 7 - add - iconst 5 - add - iconst 0 - iconst 0 - iconst 38666244 - if_setposition - iload 5 - iload 8 - iconst 0 - iconst 0 - iconst 38666245 - if_setsize - iconst 10 - iload 5 - add - iconst 5 - add - iconst 40 - iload 7 - add - iconst 5 - add - iconst 0 - iconst 0 - iconst 38666245 - if_setposition - iload 5 - iload 9 - iconst 0 - iconst 0 - iconst 38666246 - if_setsize - iconst 10 - iconst 40 - iload 7 - add - iload 8 - add - iconst 5 - add - iconst 5 - add - iconst 0 - iconst 0 - iconst 38666246 - if_setposition - iload 5 - iload 9 - iconst 0 - iconst 0 - iconst 38666247 - if_setsize - iconst 10 - iload 5 - add - iconst 5 - add - iconst 40 - iload 7 - add - iload 8 - add - iconst 5 - add - iconst 5 - add - iconst 0 - iconst 0 - iconst 38666247 - if_setposition - iconst 38666242 - iconst 1 - sconst "Ring of Dueling" - iconst 2552 - iload 0 - invoke 1686 - istore 14 - iconst 38666242 - iconst 3 - invoke 1687 - istore 3 - istore 2 - iconst 38666242 - iconst 1 - sconst "Duel Arena" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 0 - invoke 1688 - istore 2 - istore 14 - iconst 38666242 - iconst 1 - sconst "Castle Wars" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 1 - invoke 1688 - istore 2 - istore 14 - iconst 38666242 - iconst 1 - sconst "Clan Wars" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 2 - invoke 1688 - istore 2 - istore 14 - iconst 38666243 - iconst 1 - sconst "Games Necklace" - iconst 3853 - iload 0 - invoke 1686 - istore 14 - iconst 38666243 - iconst 5 - invoke 1687 - istore 3 - istore 2 - iconst 38666243 - iconst 1 - sconst "Burthorpe" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 3 - invoke 1688 - istore 2 - istore 14 - iconst 38666243 - iconst 1 - sconst "Barbarian Outpost" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 4 - invoke 1688 - istore 2 - istore 14 - iconst 38666243 - iconst 1 - sconst "Corporeal Beast" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 5 - invoke 1688 - istore 2 - istore 14 - sconst "Tears of Guthix" - sstore 1 - iload 1 - iconst 0 - testbit - iconst 0 - if_icmpeq LABEL279 - jump LABEL284 -LABEL279: - sconst "" - sload 1 - sconst "" - join_string 3 - sstore 1 -LABEL284: - iconst 38666243 - iconst 1 - sload 1 - iload 3 - iload 0 - iload 14 - iload 2 - iconst 6 - invoke 1688 - istore 2 - istore 14 - sconst "Wintertodt Camp" - sstore 1 - iload 1 - iconst 1 - testbit - iconst 0 - if_icmpeq LABEL303 - jump LABEL308 -LABEL303: - sconst "" - sload 1 - sconst "" - join_string 3 - sstore 1 -LABEL308: - iconst 38666243 - iconst 1 - sload 1 - iload 3 - iload 0 - iload 14 - iload 2 - iconst 7 - invoke 1688 - istore 2 - istore 14 - iconst 38666244 - iconst 2 - sconst "Combat bracelet" - iconst 11972 - iload 0 - invoke 1686 - istore 14 - iconst 38666244 - iconst 4 - invoke 1687 - istore 3 - istore 2 - iconst 38666244 - iconst 2 - sconst "Warriors' Guild" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 8 - invoke 1688 - istore 2 - istore 14 - iconst 38666244 - iconst 2 - sconst "Champions' Guild" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 9 - invoke 1688 - istore 2 - istore 14 - iconst 38666244 - iconst 2 - sconst "Monastery" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 10 - invoke 1688 - istore 2 - istore 14 - iconst 38666244 - iconst 2 - sconst "Ranging Guild" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 11 - invoke 1688 - istore 2 - istore 14 - iconst 38666245 - iconst 2 - sconst "Skills necklace" - iconst 11968 - iload 0 - invoke 1686 - istore 14 - iconst 38666245 - iconst 6 - invoke 1687 - istore 3 - istore 2 - iconst 38666245 - iconst 2 - sconst "Fishing Guild" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 12 - invoke 1688 - istore 2 - istore 14 - iconst 38666245 - iconst 2 - sconst "Mining Guild" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 13 - invoke 1688 - istore 2 - istore 14 - iconst 38666245 - iconst 2 - sconst "Crafting Guild" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 14 - invoke 1688 - istore 2 - istore 14 - iconst 38666245 - iconst 2 - sconst "Cooking Guild" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 15 - invoke 1688 - istore 2 - istore 14 - sconst "Woodcutting Guild" - sstore 1 - iload 1 - iconst 1 - testbit - iconst 0 - if_icmpeq LABEL439 - jump LABEL444 -LABEL439: - sconst "" - sload 1 - sconst "" - join_string 3 - sstore 1 -LABEL444: - iconst 38666245 - iconst 2 - sload 1 - iload 3 - iload 0 - iload 14 - iload 2 - iconst 16 - invoke 1688 - istore 2 - istore 14 - sconst "Farming Guild" - sstore 1 - iload 1 - iconst 1 - testbit - iconst 0 - if_icmpeq LABEL463 - jump LABEL468 -LABEL463: - sconst "" - sload 1 - sconst "" - join_string 3 - sstore 1 -LABEL468: - iconst 38666245 - iconst 2 - sload 1 - iload 3 - iload 0 - iload 14 - iload 2 - iconst 17 - invoke 1688 - istore 2 - istore 14 - iconst 38666246 - iconst 3 - sconst "Ring of Wealth" - iconst 11980 - iload 0 - invoke 1686 - istore 14 - iconst 38666246 - iconst 4 - invoke 1687 - istore 3 - istore 2 - sconst "Miscellania" - sstore 1 - iload 1 - iconst 2 - testbit - iconst 0 - if_icmpeq LABEL499 - jump LABEL504 -LABEL499: - sconst "" - sload 1 - sconst "" - join_string 3 - sstore 1 -LABEL504: - iconst 38666246 - iconst 3 - sload 1 - iload 3 - iload 0 - iload 14 - iload 2 - iconst 18 - invoke 1688 - istore 2 - istore 14 - iconst 38666246 - iconst 3 - sconst "Grand Exchange" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 19 - invoke 1688 - istore 2 - istore 14 - iconst 38666246 - iconst 3 - sconst "Falador Park" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 20 - invoke 1688 - istore 2 - istore 14 - sconst "Dondakan's Rock" - sstore 1 - iload 1 - iconst 3 - testbit - iconst 0 - if_icmpeq LABEL545 - jump LABEL550 -LABEL545: - sconst "" - sload 1 - sconst "" - join_string 3 - sstore 1 -LABEL550: - iconst 38666246 - iconst 3 - sload 1 - iload 3 - iload 0 - iload 14 - iload 2 - iconst 21 - invoke 1688 - istore 2 - istore 14 - iconst 38666247 - iconst 3 - sconst "Amulet of Glory" - iconst 11978 - iload 0 - invoke 1686 - istore 14 - iconst 38666247 - iconst 4 - invoke 1687 - istore 3 - istore 2 - iconst 38666247 - iconst 3 - sconst "Edgeville" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 22 - invoke 1688 - istore 2 - istore 14 - iconst 38666247 - iconst 3 - sconst "Karamja" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 23 - invoke 1688 - istore 2 - istore 14 - iconst 38666247 - iconst 3 - sconst "Draynor Village" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 24 - invoke 1688 - istore 2 - istore 14 - iconst 38666247 - iconst 3 - sconst "Al Kharid" - iload 3 - iload 0 - iload 14 - iload 2 - iconst 25 - invoke 1688 - istore 2 - istore 14 - sconst "jewelleryBoxDone" - runelite_callback - return