diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index d346266383..a2d918d729 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -1883,6 +1883,10 @@ public interface Client extends GameShell boolean isSpellSelected(); + String getSelectedSpellActionName(); + + int getSelectedSpellFlags(); + /** * Set whether or not player attack options will be hidden for friends */ @@ -1937,8 +1941,12 @@ public interface Client extends GameShell void setSelectedItemID(int id); + int getSelectedItemWidget(); + void setSelectedItemWidget(int widgetID); + int getSelectedItemSlot(); + void setSelectedItemSlot(int idx); int getSelectedSpellWidget(); @@ -2067,4 +2075,8 @@ public interface Client extends GameShell int getFollowerIndex(); int isItemSelected(); + + String getSelectedItemName(); + + Widget getMessageContinueWidget(); } diff --git a/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java b/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java index 3bfd527493..b79db8b109 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java @@ -111,6 +111,8 @@ public interface ItemDefinition */ String[] getInventoryActions(); + String[] getGroundActions(); + /** * Gets the menu action index of the shift-click action. * diff --git a/runelite-api/src/main/java/net/runelite/api/Player.java b/runelite-api/src/main/java/net/runelite/api/Player.java index 2bb160d2f2..b8fbd7bccd 100644 --- a/runelite-api/src/main/java/net/runelite/api/Player.java +++ b/runelite-api/src/main/java/net/runelite/api/Player.java @@ -89,4 +89,12 @@ public interface Player extends Actor */ @Nullable SkullIcon getSkullIcon(); + + /** + * This is almost always not what you want + * @return literal 0 + */ + int getRSSkillLevel(); + + String[] getActions(); } diff --git a/runelite-api/src/main/java/net/runelite/api/TileItem.java b/runelite-api/src/main/java/net/runelite/api/TileItem.java index 8184835f20..51d9bbc713 100644 --- a/runelite-api/src/main/java/net/runelite/api/TileItem.java +++ b/runelite-api/src/main/java/net/runelite/api/TileItem.java @@ -42,4 +42,9 @@ public interface TileItem extends Entity * @return */ int getSpawnTime(); + + /** + * @return the tile this item is on + */ + Tile getTile(); } diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java index caee96c3b0..803453766c 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java @@ -68,6 +68,8 @@ public interface Widget */ void setType(int type); + int getButtonType(); + /** * Gets the type of content displayed by the widget. */ @@ -179,6 +181,18 @@ public interface Widget @Deprecated void setRelativeY(int y); + String getSpellName(); + + /** + * You probably want {@link Widget#getText()} instead + */ + String getRSButtonText(); + + /** + * You probably want {@link Widget#getText()} instead + */ + String getButtonText(); + /** * Gets the text displayed on this widget. * @@ -235,6 +249,12 @@ public interface Widget */ String getName(); + /** + * Gets the internal field returned by getName unfiltered + * @return the unfiltered name + */ + String getRSName(); + /** * Sets the name of the widget. * @@ -605,6 +625,8 @@ public interface Widget */ String[] getActions(); + String[] getItemActions(); + /** * Creates a dynamic widget child * diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 24a4c20bda..39da230737 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -1862,8 +1862,8 @@ public abstract class RSClientMixin implements RSClient } } - @Replace("getWidgetClickMask") - public static int getWidgetClickMask(Widget widget) + @Replace("getWidgetFlags") + public static int getWidgetFlags(Widget widget) { IntegerNode integerNode = (IntegerNode) client.getWidgetFlags().get(((long) widget.getId() << 32) + (long) widget.getIndex()); diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java index df9568a988..4d65465d44 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java @@ -245,9 +245,12 @@ public abstract class RSTileMixin implements RSTile List result = new ArrayList(); Node node = layer.getBottom(); - while (node instanceof TileItem) + while (node instanceof RSTileItem) { - result.add((TileItem) node); + RSTileItem item = (RSTileItem) node; + item.setX(getX()); + item.setY(getY()); + result.add(item); node = node.getNext(); } return result; diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java index b4f7a9eefb..9b721de0e6 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java @@ -176,6 +176,13 @@ public abstract class RSWidgetMixin implements RSWidget return -1; } + @Inject + @Override + public String getButtonText() + { + return getRSButtonText().replace('\u00A0', ' '); + } + @Inject @Override public String getText() diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index 79a81e206e..86ce152acb 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -472,7 +472,7 @@ public interface RSClient extends RSGameShell, Client @Override RSArchive getIndexScripts(); - @Import("widgetClickMasks") + @Import("widgetFlags") @Override RSNodeHashTable getWidgetFlags(); @@ -1070,6 +1070,14 @@ public interface RSClient extends RSGameShell, Client @Override void setSelectedSpellName(String name); + @Override + @Import("selectedSpellActionName") + String getSelectedSpellActionName(); + + @Override + @Import("selectedSpellFlags") + int getSelectedSpellFlags(); + @Import("isSpellSelected") boolean isSpellSelected(); @@ -1143,10 +1151,18 @@ public interface RSClient extends RSGameShell, Client @Override void setSelectedItemID(int id); + @Import("selectedItemSlot") + @Override + int getSelectedItemSlot(); + @Import("selectedItemSlot") @Override void setSelectedItemSlot(int index); + @Import("selectedItemWidget") + @Override + int getSelectedItemWidget(); + @Import("selectedItemWidget") @Override void setSelectedItemWidget(int widgetID); @@ -1290,4 +1306,11 @@ public interface RSClient extends RSGameShell, Client @Override @Import("isItemSelected") int isItemSelected(); + + @Override + @Import("selectedItemName") + String getSelectedItemName(); + + @Import("meslayerContinueWidget") + Widget getMessageContinueWidget(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java index a3b7e24cb1..5810edcc9c 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java @@ -65,6 +65,10 @@ public interface RSItemDefinition extends ItemDefinition @Override String[] getInventoryActions(); + @Import("groundActions") + @Override + String[] getGroundActions(); + @Import("getShiftClickIndex") @Override int getShiftClickActionIndex(); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java index fdc17aa1e0..758a554b7d 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java @@ -65,4 +65,10 @@ public interface RSPlayer extends RSActor, Player @Import("headIconPk") int getRsSkullIcon(); + + @Import("skillLevel") + int getRSSkillLevel(); + + @Import("actions") + String[] getActions(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java index 73edb5c214..cd4fa96f6b 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java @@ -60,10 +60,10 @@ public interface RSWidget extends Widget @Import("parentId") void setParentId(int id); - @Import("clickMask") + @Import("flags") int getClickMask(); - @Import("clickMask") + @Import("flags") void setClickMask(int mask); //@Import("boundsIndex") -- unused for now @@ -99,6 +99,16 @@ public interface RSWidget extends Widget @Override String[] getActions(); + @Import("itemActions") + @Override + String[] getItemActions(); + + @Import("spellName") + String getSpellName(); + + @Import("buttonText") + String getRSButtonText(); + @Import("text") String getRSText(); @@ -221,6 +231,10 @@ public interface RSWidget extends Widget @Override void setType(int type); + @Import("buttonType") + @Override + int getButtonType(); + @Import("scrollX") @Override int getScrollX(); diff --git a/runescape-client/src/main/java/Client.java b/runescape-client/src/main/java/Client.java index 0f8d2ba45c..f439c6493a 100644 --- a/runescape-client/src/main/java/Client.java +++ b/runescape-client/src/main/java/Client.java @@ -94,8 +94,8 @@ public final class Client extends GameShell implements Usernamed { @ObfuscatedSignature( signature = "Lle;" ) - @Export("widgetClickMasks") - static NodeHashTable widgetClickMasks; + @Export("widgetFlags") + static NodeHashTable widgetFlags; @ObfuscatedName("np") @ObfuscatedGetter( intValue = 152745331 @@ -1492,7 +1492,7 @@ public final class Client extends GameShell implements Usernamed { scriptEvents = new NodeDeque(); field891 = new NodeDeque(); field691 = new NodeDeque(); - widgetClickMasks = new NodeHashTable(512); + widgetFlags = new NodeHashTable(512); rootWidgetCount = 0; field877 = -2; field813 = new boolean[100]; @@ -3503,7 +3503,7 @@ public final class Client extends GameShell implements Usernamed { ++itemDragDuration; if (MouseHandler.MouseHandler_currentButton == 0) { if (field785) { - if (KeyHandler.dragInventoryWidget == TaskHandler.field2066 && dragItemSlotSource != dragItemSlotDestination) { + if (KeyHandler.dragInventoryWidget == TaskHandler.hoveredItemContainer && dragItemSlotSource != dragItemSlotDestination) { Widget var43 = KeyHandler.dragInventoryWidget; byte var31 = 0; if (field838 == 1 && var43.contentType == 206) { @@ -3514,7 +3514,7 @@ public final class Client extends GameShell implements Usernamed { var31 = 0; } - if (Projectile.method2249(KeyHandler.getWidgetClickMask(var43))) { + if (Projectile.method2249(KeyHandler.getWidgetFlags(var43))) { var6 = dragItemSlotSource; var7 = dragItemSlotDestination; var43.itemIds[var7] = var43.itemIds[var6]; @@ -3559,7 +3559,7 @@ public final class Client extends GameShell implements Usernamed { } } - if (Scene.method3230()) { + if (Scene.shouldSendWalk()) { var4 = Scene.Scene_selectedX; var5 = Scene.Scene_selectedY; var18 = UserComparator4.getPacketBufferNode(ClientPacket.field2311, packetWriter.isaacCipher); @@ -3568,7 +3568,7 @@ public final class Client extends GameShell implements Usernamed { var18.packetBuffer.writeShort(var4 + class182.baseX); var18.packetBuffer.method5744(KeyHandler.KeyHandler_pressedKeys[82] ? (KeyHandler.KeyHandler_pressedKeys[81] ? 2 : 1) : 0); packetWriter.addNode(var18); - Scene.method3346(); + Scene.resetWalking(); mouseCrossX = MouseHandler.MouseHandler_lastPressedX; mouseCrossY = MouseHandler.MouseHandler_lastPressedY; mouseCrossColor = 1; @@ -3905,7 +3905,7 @@ public final class Client extends GameShell implements Usernamed { field877 = cycle; viewportX = -1; viewportY = -1; - TaskHandler.field2066 = null; + TaskHandler.hoveredItemContainer = null; if (rootInterface != -1) { rootWidgetCount = 0; NetFileRequest.drawWidgets(rootInterface, 0, 0, Varcs.canvasWidth, class52.canvasHeight, 0, 0, -1); @@ -4509,12 +4509,12 @@ public final class Client extends GameShell implements Usernamed { for (var29 = var5; var29 <= var21; ++var29) { var23 = (long)var29 + ((long)var16 << 32); - Node var11 = widgetClickMasks.get(var23); + Node var11 = widgetFlags.get(var23); if (var11 != null) { var11.remove(); } - widgetClickMasks.put(new IntegerNode(var22), var23); + widgetFlags.put(new IntegerNode(var22), var23); } var1.serverPacket = null; @@ -4677,7 +4677,7 @@ public final class Client extends GameShell implements Usernamed { } } - widgetClickMasks = new NodeHashTable(512); + widgetFlags = new NodeHashTable(512); while (var3.offset < var16) { var22 = var3.readInt(); @@ -4687,7 +4687,7 @@ public final class Client extends GameShell implements Usernamed { for (int var33 = var29; var33 <= var30; ++var33) { var25 = (long)var33 + ((long)var22 << 32); - widgetClickMasks.put(new IntegerNode(var31), var25); + widgetFlags.put(new IntegerNode(var31), var25); } } @@ -5435,14 +5435,14 @@ public final class Client extends GameShell implements Usernamed { var12 = menuArguments1[var2]; var5 = menuArguments2[var2]; Widget var13 = WorldMapSprite.getWidget(var5); - var8 = KeyHandler.getWidgetClickMask(var13); + var8 = KeyHandler.getWidgetFlags(var13); boolean var7 = (var8 >> 28 & 1) != 0; if (var7) { break label281; } Object var10000 = null; - if (Projectile.method2249(KeyHandler.getWidgetClickMask(var13))) { + if (Projectile.method2249(KeyHandler.getWidgetFlags(var13))) { break label281; } } diff --git a/runescape-client/src/main/java/FloorUnderlayDefinition.java b/runescape-client/src/main/java/FloorUnderlayDefinition.java index 60ab48c31e..ab6699db41 100644 --- a/runescape-client/src/main/java/FloorUnderlayDefinition.java +++ b/runescape-client/src/main/java/FloorUnderlayDefinition.java @@ -257,7 +257,8 @@ public class FloorUnderlayDefinition extends DualNode { signature = "(IB)Z", garbageValue = "7" ) - public static boolean method4615(int var0) { + @Export("Widget_isItemContainer") + public static boolean Widget_isItemContainer(int var0) { return (var0 >> 30 & 1) != 0; } } diff --git a/runescape-client/src/main/java/FriendSystem.java b/runescape-client/src/main/java/FriendSystem.java index 1e93fa5c5d..15aca65758 100644 --- a/runescape-client/src/main/java/FriendSystem.java +++ b/runescape-client/src/main/java/FriendSystem.java @@ -318,7 +318,7 @@ public class FriendSystem { garbageValue = "74" ) static Widget method1994(Widget var0) { - int var1 = WorldMapDecoration.method402(KeyHandler.getWidgetClickMask(var0)); + int var1 = WorldMapDecoration.method402(KeyHandler.getWidgetFlags(var0)); if (var1 == 0) { return null; } else { diff --git a/runescape-client/src/main/java/GrandExchangeOfferWorldComparator.java b/runescape-client/src/main/java/GrandExchangeOfferWorldComparator.java index e3b6dbe94c..b3b7c0da10 100644 --- a/runescape-client/src/main/java/GrandExchangeOfferWorldComparator.java +++ b/runescape-client/src/main/java/GrandExchangeOfferWorldComparator.java @@ -85,7 +85,7 @@ final class GrandExchangeOfferWorldComparator implements Comparator { var4.actions = null; return 1; } else if (var0 == 1308) { - var4.field2744 = Interpreter.Interpreter_intStack[--UrlRequester.Interpreter_intStackSize] == 1; + var4.prioritizeMenuEntry = Interpreter.Interpreter_intStack[--UrlRequester.Interpreter_intStackSize] == 1; return 1; } else if (var0 == 1309) { --UrlRequester.Interpreter_intStackSize; diff --git a/runescape-client/src/main/java/KeyHandler.java b/runescape-client/src/main/java/KeyHandler.java index 8fdd245d9d..906b251e1c 100644 --- a/runescape-client/src/main/java/KeyHandler.java +++ b/runescape-client/src/main/java/KeyHandler.java @@ -656,9 +656,9 @@ public final class KeyHandler implements KeyListener, FocusListener { signature = "(Lhd;I)I", garbageValue = "-1756984804" ) - @Export("getWidgetClickMask") - static int getWidgetClickMask(Widget var0) { - IntegerNode var1 = (IntegerNode)Client.widgetClickMasks.get(((long)var0.id << 32) + (long)var0.childIndex); - return var1 != null ? var1.integer : var0.clickMask; + @Export("getWidgetFlags") + static int getWidgetFlags(Widget var0) { + IntegerNode var1 = (IntegerNode)Client.widgetFlags.get(((long)var0.id << 32) + (long)var0.childIndex); + return var1 != null ? var1.integer : var0.flags; } } diff --git a/runescape-client/src/main/java/Message.java b/runescape-client/src/main/java/Message.java index 0d463e16f0..a77a0bc5dd 100644 --- a/runescape-client/src/main/java/Message.java +++ b/runescape-client/src/main/java/Message.java @@ -178,127 +178,128 @@ public class Message extends DualNode { signature = "(Lhd;III)V", garbageValue = "-1019531565" ) - static final void method1283(Widget var0, int var1, int var2) { - if (var0.buttonType == 1) { - ScriptEvent.insertMenuItemNoShift(var0.buttonText, "", 24, 0, 0, var0.id); + @Export("Widget_addToMenu") + static final void Widget_addToMenu(Widget widget, int var1, int var2) { + if (widget.buttonType == 1) { + ScriptEvent.insertMenuItemNoShift(widget.buttonText, "", 24, 0, 0, widget.id); } String var3; - if (var0.buttonType == 2 && !Client.isSpellSelected) { - var3 = WorldMapAreaData.method762(var0); + if (widget.buttonType == 2 && !Client.isSpellSelected) { + var3 = WorldMapAreaData.Widget_getSpellActionName(widget); if (var3 != null) { - ScriptEvent.insertMenuItemNoShift(var3, ItemContainer.colorStartTag(65280) + var0.spellName, 25, 0, -1, var0.id); + ScriptEvent.insertMenuItemNoShift(var3, ItemContainer.colorStartTag(65280) + widget.spellName, 25, 0, -1, widget.id); } } - if (var0.buttonType == 3) { - ScriptEvent.insertMenuItemNoShift("Close", "", 26, 0, 0, var0.id); + if (widget.buttonType == 3) { + ScriptEvent.insertMenuItemNoShift("Close", "", 26, 0, 0, widget.id); } - if (var0.buttonType == 4) { - ScriptEvent.insertMenuItemNoShift(var0.buttonText, "", 28, 0, 0, var0.id); + if (widget.buttonType == 4) { + ScriptEvent.insertMenuItemNoShift(widget.buttonText, "", 28, 0, 0, widget.id); } - if (var0.buttonType == 5) { - ScriptEvent.insertMenuItemNoShift(var0.buttonText, "", 29, 0, 0, var0.id); + if (widget.buttonType == 5) { + ScriptEvent.insertMenuItemNoShift(widget.buttonText, "", 29, 0, 0, widget.id); } - if (var0.buttonType == 6 && Client.meslayerContinueWidget == null) { - ScriptEvent.insertMenuItemNoShift(var0.buttonText, "", 30, 0, -1, var0.id); + if (widget.buttonType == 6 && Client.meslayerContinueWidget == null) { + ScriptEvent.insertMenuItemNoShift(widget.buttonText, "", 30, 0, -1, widget.id); } int var4; int var6; int var7; int var13; - if (var0.type == 2) { + if (widget.type == 2) { var13 = 0; - for (var4 = 0; var4 < var0.height; ++var4) { - for (int var5 = 0; var5 < var0.width; ++var5) { - var6 = (var0.paddingX + 32) * var5; - var7 = (var0.paddingY + 32) * var4; + for (var4 = 0; var4 < widget.height; ++var4) { + for (int var5 = 0; var5 < widget.width; ++var5) { + var6 = (widget.paddingX + 32) * var5; + var7 = (widget.paddingY + 32) * var4; if (var13 < 20) { - var6 += var0.inventoryXOffsets[var13]; - var7 += var0.inventoryYOffsets[var13]; + var6 += widget.inventoryXOffsets[var13]; + var7 += widget.inventoryYOffsets[var13]; } if (var1 >= var6 && var2 >= var7 && var1 < var6 + 32 && var2 < var7 + 32) { Client.dragItemSlotDestination = var13; - TaskHandler.field2066 = var0; - if (var0.itemIds[var13] > 0) { - ItemDefinition var8 = KitDefinition.ItemDefinition_get(var0.itemIds[var13] - 1); - if (Client.isItemSelected == 1 && FloorUnderlayDefinition.method4615(KeyHandler.getWidgetClickMask(var0))) { - if (var0.id != AbstractUserComparator.selectedItemWidget || var13 != LoginScreenAnimation.selectedItemSlot) { - ScriptEvent.insertMenuItemNoShift("Use", Client.selectedItemName + " " + "->" + " " + ItemContainer.colorStartTag(16748608) + var8.name, 31, var8.id, var13, var0.id); + TaskHandler.hoveredItemContainer = widget; + if (widget.itemIds[var13] > 0) { + ItemDefinition itemDef = KitDefinition.ItemDefinition_get(widget.itemIds[var13] - 1); + if (Client.isItemSelected == 1 && FloorUnderlayDefinition.Widget_isItemContainer(KeyHandler.getWidgetFlags(widget))) { + if (widget.id != AbstractUserComparator.selectedItemWidget || var13 != LoginScreenAnimation.selectedItemSlot) { + ScriptEvent.insertMenuItemNoShift("Use", Client.selectedItemName + " " + "->" + " " + ItemContainer.colorStartTag(16748608) + itemDef.name, 31, itemDef.id, var13, widget.id); } - } else if (Client.isSpellSelected && FloorUnderlayDefinition.method4615(KeyHandler.getWidgetClickMask(var0))) { + } else if (Client.isSpellSelected && FloorUnderlayDefinition.Widget_isItemContainer(KeyHandler.getWidgetFlags(widget))) { if ((WorldMapSprite.selectedSpellFlags & 16) == 16) { - ScriptEvent.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + ItemContainer.colorStartTag(16748608) + var8.name, 32, var8.id, var13, var0.id); + ScriptEvent.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + ItemContainer.colorStartTag(16748608) + itemDef.name, 32, itemDef.id, var13, widget.id); } } else { - String[] var9 = var8.inventoryActions; - int var10 = -1; - if (Client.shiftClickDrop && ModelData0.method3375()) { - var10 = var8.getShiftClickIndex(); + String[] actionsAry = itemDef.inventoryActions; + int shiftClickIdx = -1; + if (Client.shiftClickDrop && ModelData0.shouldPrioritizeDrop()) { + shiftClickIdx = itemDef.getShiftClickIndex(); } - int var11; - if (FloorUnderlayDefinition.method4615(KeyHandler.getWidgetClickMask(var0))) { - for (var11 = 4; var11 >= 3; --var11) { - if (var11 != var10) { - WallDecoration.addWidgetItemMenuItem(var0, var8, var13, var11, false); + int loopIdx; + if (FloorUnderlayDefinition.Widget_isItemContainer(KeyHandler.getWidgetFlags(widget))) { + for (loopIdx = 4; loopIdx >= 3; --loopIdx) { + if (loopIdx != shiftClickIdx) { + WallDecoration.addWidgetItemMenuItem(widget, itemDef, var13, loopIdx, false); } } } - if (class198.method3774(KeyHandler.getWidgetClickMask(var0))) { - ScriptEvent.insertMenuItemNoShift("Use", ItemContainer.colorStartTag(16748608) + var8.name, 38, var8.id, var13, var0.id); + if (class198.Widget_containerHasUseOption(KeyHandler.getWidgetFlags(widget))) { + ScriptEvent.insertMenuItemNoShift("Use", ItemContainer.colorStartTag(16748608) + itemDef.name, 38, itemDef.id, var13, widget.id); } - if (FloorUnderlayDefinition.method4615(KeyHandler.getWidgetClickMask(var0))) { - for (var11 = 2; var11 >= 0; --var11) { - if (var11 != var10) { - WallDecoration.addWidgetItemMenuItem(var0, var8, var13, var11, false); + if (FloorUnderlayDefinition.Widget_isItemContainer(KeyHandler.getWidgetFlags(widget))) { + for (loopIdx = 2; loopIdx >= 0; --loopIdx) { + if (loopIdx != shiftClickIdx) { + WallDecoration.addWidgetItemMenuItem(widget, itemDef, var13, loopIdx, false); } } - if (var10 >= 0) { - WallDecoration.addWidgetItemMenuItem(var0, var8, var13, var10, true); + if (shiftClickIdx >= 0) { + WallDecoration.addWidgetItemMenuItem(widget, itemDef, var13, shiftClickIdx, true); } } - var9 = var0.itemActions; - if (var9 != null) { - for (var11 = 4; var11 >= 0; --var11) { - if (var9[var11] != null) { - byte var12 = 0; - if (var11 == 0) { - var12 = 39; + actionsAry = widget.itemActions; + if (actionsAry != null) { + for (loopIdx = 4; loopIdx >= 0; --loopIdx) { + if (actionsAry[loopIdx] != null) { + byte opcode = 0; + if (loopIdx == 0) { + opcode = 39; } - if (var11 == 1) { - var12 = 40; + if (loopIdx == 1) { + opcode = 40; } - if (var11 == 2) { - var12 = 41; + if (loopIdx == 2) { + opcode = 41; } - if (var11 == 3) { - var12 = 42; + if (loopIdx == 3) { + opcode = 42; } - if (var11 == 4) { - var12 = 43; + if (loopIdx == 4) { + opcode = 43; } - ScriptEvent.insertMenuItemNoShift(var9[var11], ItemContainer.colorStartTag(16748608) + var8.name, var12, var8.id, var13, var0.id); + ScriptEvent.insertMenuItemNoShift(actionsAry[loopIdx], ItemContainer.colorStartTag(16748608) + itemDef.name, opcode, itemDef.id, var13, widget.id); } } } - ScriptEvent.insertMenuItemNoShift("Examine", ItemContainer.colorStartTag(16748608) + var8.name, 1005, var8.id, var13, var0.id); + ScriptEvent.insertMenuItemNoShift("Examine", ItemContainer.colorStartTag(16748608) + itemDef.name, 1005, itemDef.id, var13, widget.id); } } } @@ -308,55 +309,55 @@ public class Message extends DualNode { } } - if (var0.isIf3) { + if (widget.isIf3) { if (Client.isSpellSelected) { - var4 = KeyHandler.getWidgetClickMask(var0); + var4 = KeyHandler.getWidgetFlags(widget); boolean var19 = (var4 >> 21 & 1) != 0; if (var19 && (WorldMapSprite.selectedSpellFlags & 32) == 32) { - ScriptEvent.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + var0.dataText, 58, 0, var0.childIndex, var0.id); + ScriptEvent.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + widget.dataText, 58, 0, widget.childIndex, widget.id); } } else { for (var13 = 9; var13 >= 5; --var13) { - var6 = KeyHandler.getWidgetClickMask(var0); + var6 = KeyHandler.getWidgetFlags(widget); boolean var17 = (var6 >> var13 + 1 & 1) != 0; String var14; - if (!var17 && var0.onOp == null) { + if (!var17 && widget.onOp == null) { var14 = null; - } else if (var0.actions != null && var0.actions.length > var13 && var0.actions[var13] != null && var0.actions[var13].trim().length() != 0) { - var14 = var0.actions[var13]; + } else if (widget.actions != null && widget.actions.length > var13 && widget.actions[var13] != null && widget.actions[var13].trim().length() != 0) { + var14 = widget.actions[var13]; } else { var14 = null; } if (var14 != null) { - ScriptEvent.insertMenuItemNoShift(var14, var0.dataText, 1007, var13 + 1, var0.childIndex, var0.id); + ScriptEvent.insertMenuItemNoShift(var14, widget.dataText, 1007, var13 + 1, widget.childIndex, widget.id); } } - var3 = WorldMapAreaData.method762(var0); + var3 = WorldMapAreaData.Widget_getSpellActionName(widget); if (var3 != null) { - ScriptEvent.insertMenuItemNoShift(var3, var0.dataText, 25, 0, var0.childIndex, var0.id); + ScriptEvent.insertMenuItemNoShift(var3, widget.dataText, 25, 0, widget.childIndex, widget.id); } for (var4 = 4; var4 >= 0; --var4) { - var7 = KeyHandler.getWidgetClickMask(var0); + var7 = KeyHandler.getWidgetFlags(widget); boolean var18 = (var7 >> var4 + 1 & 1) != 0; String var15; - if (!var18 && var0.onOp == null) { + if (!var18 && widget.onOp == null) { var15 = null; - } else if (var0.actions != null && var0.actions.length > var4 && var0.actions[var4] != null && var0.actions[var4].trim().length() != 0) { - var15 = var0.actions[var4]; + } else if (widget.actions != null && widget.actions.length > var4 && widget.actions[var4] != null && widget.actions[var4].trim().length() != 0) { + var15 = widget.actions[var4]; } else { var15 = null; } if (var15 != null) { - ApproximateRouteStrategy.insertMenuItem(var15, var0.dataText, 57, var4 + 1, var0.childIndex, var0.id, var0.field2744); + ApproximateRouteStrategy.insertMenuItem(var15, widget.dataText, 57, var4 + 1, widget.childIndex, widget.id, widget.prioritizeMenuEntry); } } - if (WorldMapLabel.method487(KeyHandler.getWidgetClickMask(var0))) { - ScriptEvent.insertMenuItemNoShift("Continue", "", 30, 0, var0.childIndex, var0.id); + if (WorldMapLabel.Widget_hasContinueOption(KeyHandler.getWidgetFlags(widget))) { + ScriptEvent.insertMenuItemNoShift("Continue", "", 30, 0, widget.childIndex, widget.id); } } } diff --git a/runescape-client/src/main/java/ModelData0.java b/runescape-client/src/main/java/ModelData0.java index 4abbb5613b..111b71e837 100644 --- a/runescape-client/src/main/java/ModelData0.java +++ b/runescape-client/src/main/java/ModelData0.java @@ -1,3 +1,4 @@ +import net.runelite.mapping.Export; import net.runelite.mapping.Implements; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; @@ -32,7 +33,8 @@ public class ModelData0 { signature = "(I)Z", garbageValue = "1532544056" ) - static boolean method3375() { + @Export("shouldPrioritizeDrop") + static boolean shouldPrioritizeDrop() { return Client.tapToDrop || KeyHandler.KeyHandler_pressedKeys[81]; } } diff --git a/runescape-client/src/main/java/PlayerAppearance.java b/runescape-client/src/main/java/PlayerAppearance.java index 5530948f0d..4e3ddb3a22 100644 --- a/runescape-client/src/main/java/PlayerAppearance.java +++ b/runescape-client/src/main/java/PlayerAppearance.java @@ -422,7 +422,7 @@ public class PlayerAppearance { garbageValue = "1446127367" ) static void method4177(int var0) { - for (IntegerNode var1 = (IntegerNode)Client.widgetClickMasks.first(); var1 != null; var1 = (IntegerNode)Client.widgetClickMasks.next()) { + for (IntegerNode var1 = (IntegerNode)Client.widgetFlags.first(); var1 != null; var1 = (IntegerNode)Client.widgetFlags.next()) { if ((long)var0 == (var1.key >> 48 & 65535L)) { var1.remove(); } diff --git a/runescape-client/src/main/java/Scene.java b/runescape-client/src/main/java/Scene.java index f3990b72ce..3a9e82aff5 100644 --- a/runescape-client/src/main/java/Scene.java +++ b/runescape-client/src/main/java/Scene.java @@ -1037,13 +1037,13 @@ public class Scene { @ObfuscatedName("av") @Export("menuOpen") - public void menuOpen(int var1, int var2, int var3, boolean var4) { - if (!method3230() || var4) { + public void menuOpen(int plane, int mouseX, int mouseY, boolean walking) { + if (!shouldSendWalk() || walking) { checkClick = true; - viewportWalking = var4; - Scene_selectedPlane = var1; - Scene_selectedScreenX = var2; - Scene_selectedScreenY = var3; + viewportWalking = walking; + Scene_selectedPlane = plane; + Scene_selectedScreenX = mouseX; + Scene_selectedScreenY = mouseY; Scene_selectedX = -1; Scene_selectedY = -1; } @@ -2541,12 +2541,14 @@ public class Scene { } @ObfuscatedName("at") - public static boolean method3230() { + @Export("shouldSendWalk") + public static boolean shouldSendWalk() { return viewportWalking && Scene_selectedX != -1; } @ObfuscatedName("aa") - public static void method3346() { + @Export("resetWalking") + public static void resetWalking() { Scene_selectedX = -1; viewportWalking = false; } diff --git a/runescape-client/src/main/java/TaskHandler.java b/runescape-client/src/main/java/TaskHandler.java index ef2ca3dc07..abb0d7bf0d 100644 --- a/runescape-client/src/main/java/TaskHandler.java +++ b/runescape-client/src/main/java/TaskHandler.java @@ -21,7 +21,8 @@ public class TaskHandler implements Runnable { @ObfuscatedSignature( signature = "Lhd;" ) - static Widget field2066; + @Export("hoveredItemContainer") + static Widget hoveredItemContainer; @ObfuscatedName("q") @ObfuscatedSignature( signature = "Lfa;" diff --git a/runescape-client/src/main/java/WallDecoration.java b/runescape-client/src/main/java/WallDecoration.java index 806ae72796..30fbc266f8 100644 --- a/runescape-client/src/main/java/WallDecoration.java +++ b/runescape-client/src/main/java/WallDecoration.java @@ -146,31 +146,31 @@ public final class WallDecoration { garbageValue = "-771039466" ) @Export("addWidgetItemMenuItem") - static final void addWidgetItemMenuItem(Widget var0, ItemDefinition var1, int var2, int var3, boolean var4) { - String[] var5 = var1.inventoryActions; - byte var6 = -1; - String var7 = null; - if (var5 != null && var5[var3] != null) { - if (var3 == 0) { - var6 = 33; - } else if (var3 == 1) { - var6 = 34; - } else if (var3 == 2) { - var6 = 35; - } else if (var3 == 3) { - var6 = 36; + static final void addWidgetItemMenuItem(Widget widget, ItemDefinition itemDef, int slotIdx, int actionIdx, boolean forceLeftClick) { + String[] itemActions = itemDef.inventoryActions; + byte opcode = -1; + String action = null; + if (itemActions != null && itemActions[actionIdx] != null) { + if (actionIdx == 0) { + opcode = 33; + } else if (actionIdx == 1) { + opcode = 34; + } else if (actionIdx == 2) { + opcode = 35; + } else if (actionIdx == 3) { + opcode = 36; } else { - var6 = 37; + opcode = 37; } - var7 = var5[var3]; - } else if (var3 == 4) { - var6 = 37; - var7 = "Drop"; + action = itemActions[actionIdx]; + } else if (actionIdx == 4) { + opcode = 37; + action = "Drop"; } - if (var6 != -1 && var7 != null) { - ApproximateRouteStrategy.insertMenuItem(var7, ItemContainer.colorStartTag(16748608) + var1.name, var6, var1.id, var2, var0.id, var4); + if (opcode != -1 && action != null) { + ApproximateRouteStrategy.insertMenuItem(action, ItemContainer.colorStartTag(16748608) + itemDef.name, opcode, itemDef.id, slotIdx, widget.id, forceLeftClick); } } diff --git a/runescape-client/src/main/java/Widget.java b/runescape-client/src/main/java/Widget.java index 11c2137794..da4aa3d291 100644 --- a/runescape-client/src/main/java/Widget.java +++ b/runescape-client/src/main/java/Widget.java @@ -440,8 +440,8 @@ public class Widget extends Node { @ObfuscatedGetter( intValue = 1451565177 ) - @Export("clickMask") - public int clickMask; + @Export("flags") + public int flags; @ObfuscatedName("cq") public boolean field2709; @ObfuscatedName("co") @@ -681,7 +681,8 @@ public class Widget extends Node { @Export("noScrollThrough") public boolean noScrollThrough; @ObfuscatedName("fn") - public boolean field2744; + @Export("prioritizeMenuEntry") + public boolean prioritizeMenuEntry; static { Widget_cachedSprites = new EvictingDualNodeHashTable(200); @@ -759,7 +760,7 @@ public class Widget extends Node { this.textShadowed = false; this.paddingX = 0; this.paddingY = 0; - this.clickMask = 0; + this.flags = 0; this.field2709 = false; this.dataText = ""; this.parent = null; @@ -785,7 +786,7 @@ public class Widget extends Node { this.cycle = -1; this.noClickThrough = false; this.noScrollThrough = false; - this.field2744 = false; + this.prioritizeMenuEntry = false; } @ObfuscatedName("g") @@ -863,22 +864,22 @@ public class Widget extends Node { this.itemQuantities = new int[this.rawWidth * this.rawHeight]; var4 = var1.readUnsignedByte(); if (var4 == 1) { - this.clickMask |= 268435456; + this.flags |= 268435456; } var5 = var1.readUnsignedByte(); if (var5 == 1) { - this.clickMask |= 1073741824; + this.flags |= 1073741824; } var6 = var1.readUnsignedByte(); if (var6 == 1) { - this.clickMask |= Integer.MIN_VALUE; + this.flags |= Integer.MIN_VALUE; } int var7 = var1.readUnsignedByte(); if (var7 == 1) { - this.clickMask |= 536870912; + this.flags |= 536870912; } this.paddingX = var1.readUnsignedByte(); @@ -905,7 +906,7 @@ public class Widget extends Node { String var10 = var1.readStringCp1252NullTerminated(); if (var10.length() > 0) { this.itemActions[var8] = var10; - this.clickMask |= 1 << var8 + 23; + this.flags |= 1 << var8 + 23; } } } @@ -989,7 +990,7 @@ public class Widget extends Node { this.paddingY = var1.readShort(); var4 = var1.readUnsignedByte(); if (var4 == 1) { - this.clickMask |= 1073741824; + this.flags |= 1073741824; } this.itemActions = new String[5]; @@ -998,7 +999,7 @@ public class Widget extends Node { String var11 = var1.readStringCp1252NullTerminated(); if (var11.length() > 0) { this.itemActions[var5] = var11; - this.clickMask |= 1 << var5 + 23; + this.flags |= 1 << var5 + 23; } } } @@ -1011,7 +1012,7 @@ public class Widget extends Node { this.spellActionName = var1.readStringCp1252NullTerminated(); this.spellName = var1.readStringCp1252NullTerminated(); var4 = var1.readUnsignedShort() & 63; - this.clickMask |= var4 << 11; + this.flags |= var4 << 11; } if (this.buttonType == 1 || this.buttonType == 4 || this.buttonType == 5 || this.buttonType == 6) { @@ -1036,11 +1037,11 @@ public class Widget extends Node { } if (this.buttonType == 1 || this.buttonType == 4 || this.buttonType == 5) { - this.clickMask |= 4194304; + this.flags |= 4194304; } if (this.buttonType == 6) { - this.clickMask |= 1; + this.flags |= 1; } } @@ -1149,7 +1150,7 @@ public class Widget extends Node { this.field2633 = var1.readUnsignedByte() == 1; } - this.clickMask = var1.readMedium(); + this.flags = var1.readMedium(); this.dataText = var1.readStringCp1252NullTerminated(); int var2 = var1.readUnsignedByte(); if (var2 > 0) { diff --git a/runescape-client/src/main/java/WorldMapAreaData.java b/runescape-client/src/main/java/WorldMapAreaData.java index b50bdf8f38..b36cb93cc8 100644 --- a/runescape-client/src/main/java/WorldMapAreaData.java +++ b/runescape-client/src/main/java/WorldMapAreaData.java @@ -198,8 +198,9 @@ public class WorldMapAreaData extends WorldMapArea { signature = "(Lhd;B)Ljava/lang/String;", garbageValue = "-51" ) - static String method762(Widget var0) { - if (WorldMapID.method617(KeyHandler.getWidgetClickMask(var0)) == 0) { + @Export("Widget_getSpellActionName") + static String Widget_getSpellActionName(Widget var0) { + if (WorldMapID.Widget_unpackTargetMask(KeyHandler.getWidgetFlags(var0)) == 0) { return null; } else { return var0.spellActionName != null && var0.spellActionName.trim().length() != 0 ? var0.spellActionName : null; diff --git a/runescape-client/src/main/java/WorldMapID.java b/runescape-client/src/main/java/WorldMapID.java index 63540a61fa..5b5a24e64f 100644 --- a/runescape-client/src/main/java/WorldMapID.java +++ b/runescape-client/src/main/java/WorldMapID.java @@ -59,7 +59,8 @@ public class WorldMapID { signature = "(II)I", garbageValue = "-211582550" ) - public static int method617(int var0) { + @Export("Widget_unpackTargetMask") + public static int Widget_unpackTargetMask(int var0) { return var0 >> 11 & 63; } diff --git a/runescape-client/src/main/java/WorldMapLabel.java b/runescape-client/src/main/java/WorldMapLabel.java index 02434e2844..69c571c4be 100644 --- a/runescape-client/src/main/java/WorldMapLabel.java +++ b/runescape-client/src/main/java/WorldMapLabel.java @@ -76,7 +76,8 @@ public class WorldMapLabel { signature = "(II)Z", garbageValue = "578317705" ) - public static boolean method487(int var0) { + @Export("Widget_hasContinueOption") + public static boolean Widget_hasContinueOption(int var0) { return (var0 & 1) != 0; } diff --git a/runescape-client/src/main/java/WorldMapManager.java b/runescape-client/src/main/java/WorldMapManager.java index 08a5f4ee6d..d2e3e9a22d 100644 --- a/runescape-client/src/main/java/WorldMapManager.java +++ b/runescape-client/src/main/java/WorldMapManager.java @@ -494,7 +494,7 @@ public final class WorldMapManager { static int method717(int var0, Script var1, boolean var2) { Widget var3 = WorldMapSprite.getWidget(Interpreter.Interpreter_intStack[--UrlRequester.Interpreter_intStackSize]); if (var0 == ScriptOpcodes.IF_GETTARGETMASK) { - Interpreter.Interpreter_intStack[++UrlRequester.Interpreter_intStackSize - 1] = WorldMapID.method617(KeyHandler.getWidgetClickMask(var3)); + Interpreter.Interpreter_intStack[++UrlRequester.Interpreter_intStackSize - 1] = WorldMapID.Widget_unpackTargetMask(KeyHandler.getWidgetFlags(var3)); return 1; } else if (var0 != ScriptOpcodes.IF_GETOP) { if (var0 == ScriptOpcodes.IF_GETOPBASE) { diff --git a/runescape-client/src/main/java/WorldMapSection0.java b/runescape-client/src/main/java/WorldMapSection0.java index ecdbfae0f5..1dbb3201d8 100644 --- a/runescape-client/src/main/java/WorldMapSection0.java +++ b/runescape-client/src/main/java/WorldMapSection0.java @@ -613,9 +613,9 @@ public class WorldMapSection0 implements WorldMapSection { var16 = WorldMapLabelSize.getWidgetChild(var1, var0); if (var16 != null) { GrandExchangeOffer.Widget_runOnTargetLeave(); - AttackOption.selectSpell(var1, var0, WorldMapID.method617(KeyHandler.getWidgetClickMask(var16)), var16.itemId); + AttackOption.selectSpell(var1, var0, WorldMapID.Widget_unpackTargetMask(KeyHandler.getWidgetFlags(var16)), var16.itemId); Client.isItemSelected = 0; - Client.selectedSpellActionName = WorldMapAreaData.method762(var16); + Client.selectedSpellActionName = WorldMapAreaData.Widget_getSpellActionName(var16); if (Client.selectedSpellActionName == null) { Client.selectedSpellActionName = "null"; } diff --git a/runescape-client/src/main/java/class198.java b/runescape-client/src/main/java/class198.java index 2faff3ce0e..79b88a1633 100644 --- a/runescape-client/src/main/java/class198.java +++ b/runescape-client/src/main/java/class198.java @@ -16,7 +16,8 @@ public class class198 { signature = "(IB)Z", garbageValue = "-100" ) - public static boolean method3774(int var0) { + @Export("Widget_containerHasUseOption") + public static boolean Widget_containerHasUseOption(int var0) { return (var0 >> 31 & 1) != 0; } } diff --git a/runescape-client/src/main/java/class247.java b/runescape-client/src/main/java/class247.java index c660c6c5f0..427ebcf543 100644 --- a/runescape-client/src/main/java/class247.java +++ b/runescape-client/src/main/java/class247.java @@ -243,7 +243,7 @@ public class class247 { } if (var11) { - int var8 = KeyHandler.getWidgetClickMask(var5); + int var8 = KeyHandler.getWidgetFlags(var5); int var9 = var0 - 1; boolean var7 = (var8 >> var9 + 1 & 1) != 0; if (var7) { diff --git a/runescape-client/src/main/java/class7.java b/runescape-client/src/main/java/class7.java index 592b68bd3a..f05dc79b4b 100644 --- a/runescape-client/src/main/java/class7.java +++ b/runescape-client/src/main/java/class7.java @@ -86,7 +86,7 @@ public enum class7 implements Enumerated { static int method100(int var0, Script var1, boolean var2) { Widget var3 = var2 ? KeyHandler.field407 : SecureRandomCallable.field544; if (var0 == ScriptOpcodes.CC_GETTARGETMASK) { - Interpreter.Interpreter_intStack[++UrlRequester.Interpreter_intStackSize - 1] = WorldMapID.method617(KeyHandler.getWidgetClickMask(var3)); + Interpreter.Interpreter_intStack[++UrlRequester.Interpreter_intStackSize - 1] = WorldMapID.Widget_unpackTargetMask(KeyHandler.getWidgetFlags(var3)); return 1; } else if (var0 != ScriptOpcodes.CC_GETOP) { if (var0 == ScriptOpcodes.CC_GETOPBASE) { diff --git a/runescape-client/src/main/java/class9.java b/runescape-client/src/main/java/class9.java index fab79f817e..360ee51295 100644 --- a/runescape-client/src/main/java/class9.java +++ b/runescape-client/src/main/java/class9.java @@ -134,7 +134,7 @@ public class class9 { static final void updateInterface(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { for (int var8 = 0; var8 < var0.length; ++var8) { Widget var9 = var0[var8]; - if (var9 != null && var9.parentId == var1 && (!var9.isIf3 || var9.type == 0 || var9.hasListener || KeyHandler.getWidgetClickMask(var9) != 0 || var9 == Client.clickedWidgetParent || var9.contentType == 1338)) { + if (var9 != null && var9.parentId == var1 && (!var9.isIf3 || var9.type == 0 || var9.hasListener || KeyHandler.getWidgetFlags(var9) != 0 || var9 == Client.clickedWidgetParent || var9.contentType == 1338)) { if (var9.isIf3) { if (Entity.isComponentHidden(var9)) { continue; @@ -268,7 +268,7 @@ public class class9 { if (var9.contentType == 1400) { class228.worldMap.addElementMenuOptions(var10, var11, var9.width, var9.height, var26, var18); } else { - Message.method1283(var9, var26 - var10, var18 - var11); + Message.Widget_addToMenu(var9, var26 - var10, var18 - var11); } } @@ -305,8 +305,8 @@ public class class9 { class247.widgetDefaultMenuAction(var20 + 1, var9.id, var9.childIndex, var9.itemId, ""); } else if (var20 == 10) { GrandExchangeOffer.Widget_runOnTargetLeave(); - AttackOption.selectSpell(var9.id, var9.childIndex, WorldMapID.method617(KeyHandler.getWidgetClickMask(var9)), var9.itemId); - Client.selectedSpellActionName = WorldMapAreaData.method762(var9); + AttackOption.selectSpell(var9.id, var9.childIndex, WorldMapID.Widget_unpackTargetMask(KeyHandler.getWidgetFlags(var9)), var9.itemId); + Client.selectedSpellActionName = WorldMapAreaData.Widget_getSpellActionName(var9); if (Client.selectedSpellActionName == null) { Client.selectedSpellActionName = "null"; } @@ -365,7 +365,7 @@ public class class9 { class228.worldMap.method6693(var26, var18, var33 & var34, var33 & var21); } - if (Client.clickedWidget != null && var9 != Client.clickedWidget && var33 && WorldMapScaleHandler.method819(KeyHandler.getWidgetClickMask(var9))) { + if (Client.clickedWidget != null && var9 != Client.clickedWidget && var33 && WorldMapScaleHandler.method819(KeyHandler.getWidgetFlags(var9))) { Client.draggedOnWidget = var9; }