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.
This commit is contained in:
xKylee
2019-12-05 22:31:07 +00:00
parent eba140c8a5
commit 796b2dc422
6 changed files with 5 additions and 913 deletions

View File

@@ -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);
}

View File

@@ -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<MenuOpcode> 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<String> 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<AbstractComparableEntry, Integer> map)
{
final Map<AbstractComparableEntry, Integer> 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();

View File

@@ -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;
}
}

View File

@@ -1,88 +0,0 @@
/*
* Copyright (c) 2019, Lucas <https://github.com/lucwousin>
* 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<String, JewelleryBoxDestination> map;
static
{
final ImmutableMap.Builder<String, JewelleryBoxDestination> 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);
}
}

View File

@@ -1 +0,0 @@
8C575721ABBD408F564BB6A93894BEFC4D7928A6FBF0218FE5F5E68BD9354C3C

View File

@@ -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 "<str>"
sload 1
sconst "</str>"
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 "<str>"
sload 1
sconst "</str>"
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 "<str>"
sload 1
sconst "</str>"
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 "<str>"
sload 1
sconst "</str>"
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 "<str>"
sload 1
sconst "</str>"
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 "<str>"
sload 1
sconst "</str>"
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