diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index b0c7216058..efb253edcf 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -25,9 +25,9 @@ object ProjectVersions { const val launcherVersion = "2.2.0" - const val rlVersion = "1.7.12" + const val rlVersion = "1.7.13" - const val openosrsVersion = "4.8.2" + const val openosrsVersion = "4.9.0" const val rsversion = 197 const val cacheversion = 165 diff --git a/runelite-api/src/main/java/net/runelite/api/Actor.java b/runelite-api/src/main/java/net/runelite/api/Actor.java index 2f5e79954e..2f7c7d937b 100644 --- a/runelite-api/src/main/java/net/runelite/api/Actor.java +++ b/runelite-api/src/main/java/net/runelite/api/Actor.java @@ -368,7 +368,21 @@ public interface Actor extends Renderable, Locatable int getActionFrameCycle(); /** - * Returns true if this NPC has died + * Get the number of cycles/client ticks remaining before the overhead text is timed out + * + * @return + */ + int getOverheadCycle(); + + /** + * Set the number of cycles/client ticks before the overhead text is timed out + * + * @param cycles + */ + void setOverheadCycle(int cycles); + + /** + * Returns true if this actor has died * * @return */ diff --git a/runelite-api/src/main/java/net/runelite/api/AnimationID.java b/runelite-api/src/main/java/net/runelite/api/AnimationID.java index 92e852c7fa..122a66c047 100644 --- a/runelite-api/src/main/java/net/runelite/api/AnimationID.java +++ b/runelite-api/src/main/java/net/runelite/api/AnimationID.java @@ -206,7 +206,7 @@ public final class AnimationID public static final int LEAGUE_HOME_TELEPORT_6 = 8807; public static final int CONSTRUCTION = 3676; - public static final int CONSTRUCTION_IMCANDO = 8192; + public static final int CONSTRUCTION_IMCANDO = 8912; public static final int SAND_COLLECTION = 895; public static final int PISCARILIUS_CRANE_REPAIR = 7199; public static final int HOME_MAKE_TABLET = 4067; diff --git a/runelite-api/src/main/java/net/runelite/api/ItemID.java b/runelite-api/src/main/java/net/runelite/api/ItemID.java index 6d42a9e37d..ec7d1d0862 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java @@ -11955,5 +11955,6 @@ public final class ItemID public static final int LIZARDKICKER = 25826; public static final int OLD_NOTE_25829 = 25829; public static final int SHAYZIA_MILITARY_ORDERS = 25831; + public static final int RAW_BOAR_MEAT = 25833; /* This file is automatically generated. Do not edit. */ } \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/NullItemID.java b/runelite-api/src/main/java/net/runelite/api/NullItemID.java index eaef98cc70..d710c4d986 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullItemID.java @@ -13667,5 +13667,7 @@ public final class NullItemID public static final int NULL_25828 = 25828; public static final int NULL_25830 = 25830; public static final int NULL_25832 = 25832; + public static final int NULL_25834 = 25834; + public static final int NULL_25835 = 25835; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/ObjectID.java b/runelite-api/src/main/java/net/runelite/api/ObjectID.java index c2a2de3e8d..12f5ba0de6 100644 --- a/runelite-api/src/main/java/net/runelite/api/ObjectID.java +++ b/runelite-api/src/main/java/net/runelite/api/ObjectID.java @@ -21752,5 +21752,6 @@ public final class ObjectID public static final int BAR_42426 = 42426; public static final int YEW_42427 = 42427; public static final int GRANDFATHER_CLOCK_42428 = 42428; + public static final int LADDER_42487 = 42487; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/SpriteID.java b/runelite-api/src/main/java/net/runelite/api/SpriteID.java index c84974df35..e96c34a546 100644 --- a/runelite-api/src/main/java/net/runelite/api/SpriteID.java +++ b/runelite-api/src/main/java/net/runelite/api/SpriteID.java @@ -313,7 +313,7 @@ public final class SpriteID public static final int COMBAT_STYLE_BUTTON_THIN = 295; public static final int COMBAT_STYLE_BUTTON_THIN_SELECTED = 296; public static final int DIALOG_BACKGROUND = 297; - public static final int RS2_HITSPLAT_BLUE_NO_DAMAGE = 298; + /* Unmapped: 298 */ public static final int RS2_YELLOW_CLICK_ANIMATION_1 = 299; public static final int RS2_MINIMAP_MARKER_RED_ITEM = 300; public static final int RS2_SWORD_POINTED_LEFT = 301; @@ -1209,81 +1209,27 @@ public final class SpriteID public static final int KOUREND_FAVOUR_LOVAKENGJ_ICON = 1244; public static final int KOUREND_FAVOUR_PISCARILIUS_ICON = 1245; public static final int KOUREND_FAVOUR_SHAYZIEN_ICON = 1246; - public static final int SPELL_REANIMATE_GOBLIN = 1247; - public static final int SPELL_REANIMATE_DEMON = 1248; - public static final int SPELL_REANIMATE_DRAGON = 1249; - public static final int SPELL_REANIMATE_ELF = 1250; - public static final int SPELL_REANIMATE_CHAOS_DRUID = 1251; - public static final int SPELL_REANIMATE_TROLL = 1252; - public static final int SPELL_REANIMATE_DAGANNOTH = 1253; - public static final int SPELL_REANIMATE_OGRE = 1254; - public static final int SPELL_REANIMATE_GIANT = 1255; - public static final int SPELL_REANIMATE_BEAR = 1256; - public static final int SPELL_REANIMATE_SCORPION = 1257; - public static final int SPELL_REANIMATE_IMP = 1258; - public static final int SPELL_REANIMATE_MINOTAUR = 1259; - public static final int SPELL_REANIMATE_UNICORN = 1260; - public static final int SPELL_REANIMATE_KALPHITE = 1261; - public static final int SPELL_REANIMATE_TZHAAR = 1262; - public static final int SPELL_REANIMATE_AVIANSIE = 1263; - public static final int SPELL_REANIMATE_MONKEY = 1264; - public static final int SPELL_REANIMATE_ABYSSAL_CREATURE = 1265; - public static final int SPELL_REANIMATE_HORROR = 1266; - public static final int SPELL_REANIMATE_BLOODVELD = 1267; - public static final int SPELL_REANIMATE_DOG = 1268; - public static final int SPELL_LUMBRIDGE_GRAVEYARD_TELEPORT = 1269; - public static final int SPELL_DRAYNOR_MANOR_TELEPORT = 1270; - public static final int SPELL_MIND_ALTAR_TELEPORT = 1271; - public static final int SPELL_REANIMATE_GOBLIN_DISABLED = 1272; - public static final int SPELL_REANIMATE_DEMON_DISABLED = 1273; - public static final int SPELL_REANIMATE_DRAGON_DISABLED = 1274; - public static final int SPELL_REANIMATE_ELF_DISABLED = 1275; - public static final int SPELL_REANIMATE_CHAOS_DRUID_DISABLED = 1276; - public static final int SPELL_REANIMATE_TROLL_DISABLED = 1277; - public static final int SPELL_REANIMATE_DAGANNOTH_DISABLED = 1278; - public static final int SPELL_REANIMATE_OGRE_DISABLED = 1279; - public static final int SPELL_REANIMATE_GIANT_DISABLED = 1280; - public static final int SPELL_REANIMATE_BEAR_DISABLED = 1281; - public static final int SPELL_REANIMATE_SCORPION_DISABLED = 1282; - public static final int SPELL_REANIMATE_IMP_DISABLED = 1283; - public static final int SPELL_REANIMATE_MINOTAUR_DISABLED = 1284; - public static final int SPELL_REANIMATE_UNICORN_DISABLED = 1285; - public static final int SPELL_REANIMATE_KALPHITE_DISABLED = 1286; - public static final int SPELL_REANIMATE_TZHAAR_DISABLED = 1287; - public static final int SPELL_REANIMATE_AVIANSIE_DISABLED = 1288; - public static final int SPELL_REANIMATE_MONKEY_DISABLED = 1289; - public static final int SPELL_REANIMATE_ABYSSAL_CREATURE_DISABLED = 1290; - public static final int SPELL_REANIMATE_HORROR_DISABLED = 1291; - public static final int SPELL_REANIMATE_BLOODVELD_DISABLED = 1292; - public static final int SPELL_REANIMATE_DOG_DISABLED = 1293; - public static final int SPELL_LUMBRIDGE_GRAVEYARD_TELEPORT_DISABLED = 1294; - public static final int SPELL_DRAYNOR_MANOR_TELEPORT_DISABLED = 1295; - public static final int SPELL_MIND_ALTAR_TELEPORT_DISABLED = 1296; + /* Unmapped: 1247~1296 */ public static final int QUESTS_PAGE_ICON_PURPLE_KOUREND = 1297; public static final int UNUSED_TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1298; public static final int TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1299; - public static final int SPELL_RESPAWN_TELEPORT = 1300; - public static final int SPELL_SALVE_GRAVEYARD_TELEPORT = 1301; - public static final int SPELL_FENKENSTRAINS_CASTLE_TELEPORT = 1302; - public static final int SPELL_WEST_ARDOUGNE_TELEPORT = 1303; - public static final int SPELL_HARMONY_ISLAND_TELEPORT = 1304; - public static final int SPELL_CEMETARY_TELEPORT = 1305; - public static final int SPELL_BARROWS_TELEPORT = 1306; - public static final int SPELL_APE_ATOLL_TELEPORT = 1307; - public static final int SPELL_REANIMATE_CROPS = 1308; - /* Unmapped: 1309~1318 */ - public static final int SPELL_RESPAWN_TELEPORT_DISABLED = 1319; - public static final int SPELL_SALVE_GRAVEYARD_TELEPORT_DISABLED = 1320; - public static final int SPELL_FENKENSTRAINS_CASTLE_TELEPORT_DISABLED = 1321; - public static final int SPELL_WEST_ARDOUGNE_TELEPORT_DISABLED = 1322; - public static final int SPELL_HARMONY_ISLAND_TELEPORT_DISABLED = 1323; - public static final int SPELL_CEMETARY_TELEPORT_DISABLED = 1324; - public static final int SPELL_BARROWS_TELEPORT_DISABLED = 1325; - public static final int SPELL_APE_ATOLL_TELEPORT_DISABLED = 1326; - public static final int SPELL_REANIMATE_CROPS_DISABLED = 1327; - /* Unmapped: 1328~1337 */ + /* Unmapped: 1300~1305 */ + public static final int SPELL_WARD_OF_ARCEUUS = 1306; + /* Unmapped: 1307~1309 */ + public static final int SPELL_DEATH_CHARGE = 1310; + /* Unmapped: 1311~1314 */ + public static final int SPELL_SHADOW_VEIL = 1315; + /* Unmapped: 1316~1324 */ + public static final int SPELL_WARD_OF_ARCEUUS_DISABLED = 1325; + /* Unmapped: 1326 */ + public static final int SPELL_GREATER_CORRUPTION_DISABLED = 1327; + /* Unmapped: 1328 */ + public static final int SPELL_DEATH_CHARGE_DISABLED = 1329; + /* Unmapped: 1330~1333 */ + public static final int SPELL_SHADOW_VEIL_DISABLED = 1334; + /* Unmapped: 1335~1337 */ public static final int WORLD_SWITCHER_WORLD_STAR_BLUE = 1338; - public static final int HITSPLAT_DARK_GREEN_VENOM = 1339; + /* Unmapped: 1339 */ public static final int FAIRY_RING_REMOVE_FAVOURITE = 1340; public static final int FAIRY_RING_ADD_FAVOURITE = 1341; public static final int BANK_PLACEHOLDERS_LOCK = 1342; @@ -1302,12 +1248,9 @@ public final class SpriteID public static final int EMOTE_SMOOTH_DANCE_LOCKED = 1355; public static final int EMOTE_CRAZY_DANCE_LOCKED = 1356; public static final int EMOTE_PREMIER_SHIELD_LOCKED = 1357; - public static final int HITSPLAT_BLUE_NO_DAMAGE = 1358; - public static final int HITSPLAT_RED_DAMAGE = 1359; + /* Unmapped: 1358~1359 */ public static final int HITSPLAT_GREEN_POISON = 1360; - public static final int HITSPLAT_ORANGE = 1361; - public static final int HITSPLAT_ORANGE_DISEASE = 1362; - public static final int HITSPLAT_GREY = 1363; + /* Unmapped: 1361~1363 */ public static final int BOUNTY_HUNTER_SKIP_TARGET = 1364; public static final int BOUNTY_HUNTER_SKIP_TARGET_HOVERED = 1365; public static final int HOUSE_VIEWER_ROTATE_CLOCKWISE = 1366; @@ -1361,7 +1304,7 @@ public final class SpriteID public static final int UNKNOWN_BLUE_BAR = 1416; public static final int UNKNOWN_YELLOW_BAR = 1417; public static final int UNKNOWN_RED_BAR = 1418; - public static final int HITSPLAT_MAGENTA_ENEMY_HEALING = 1419; + /* Unmapped: 1419 */ public static final int PRAYER_RIGOUR = 1420; public static final int PRAYER_AUGURY = 1421; /* Unmapped: 1422, 1423 */ @@ -1554,6 +1497,9 @@ public final class SpriteID public static final int MOBILE_FUNCTION_MODE_DISABLED = 1624; public static final int MOBILE_YELLOW_TOUCH_ANIMATION_1 = 1625; public static final int MOBILE_YELLOW_TOUCH_ANIMATION_2 = 1626; + /* Unmapped: 1627~1631 */ + public static final int HITSPLAT_DARK_GREEN_VENOM = 1632; + /* Unmapped: 1633~1652 */ public static final int MOBILE_FINGER_ON_INTERFACE = 1653; /* Unmapped: 1627~1701 */ public static final int BUTTON_FRIENDS = 1702; @@ -1596,8 +1542,12 @@ public final class SpriteID public static final int FRIENDS_CHAT_RANK_TRIPLE_CHEVRON_SERGEANT = 2831; public static final int FRIENDS_CHAT_RANK_DOUBLE_CHEVRON_CORPORAL = 2832; public static final int FRIENDS_CHAT_RANK_SINGLE_CHEVRON_RECRUIT = 2833; - + /* Unmapped: 2834~2857 */ public static final int SETTINGS_SLIDER_HANDLE_BLUE = 2858; public static final int SETTINGS_SLIDER_HANDLE_RED = 2859; public static final int SETTINGS_SLIDER_HANDLE_GREEN = 2860; + /* Unmapped: 2861~2980 */ + public static final int SPELL_RESURRECT_SUPERIOR_SKELETON = 2981; + /* Unmapped: 2982~2986 */ + public static final int SPELL_RESURRECT_SUPERIOR_SKELETON_DISABLED = 2987; } diff --git a/runelite-api/src/main/java/net/runelite/api/Varbits.java b/runelite-api/src/main/java/net/runelite/api/Varbits.java index 92c7606e35..90f91a6b14 100644 --- a/runelite-api/src/main/java/net/runelite/api/Varbits.java +++ b/runelite-api/src/main/java/net/runelite/api/Varbits.java @@ -552,6 +552,7 @@ public enum Varbits * Spell cooldowns */ VENGEANCE_COOLDOWN(2451), + CORRUPTION_COOLDOWN(12288), /** * Amount of items in each bank tab diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index 0685148d82..8cccf1ff12 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -186,10 +186,11 @@ public class WidgetID { static final int MAPVIEW = 7; static final int OVERVIEW_MAP = 10; - static final int SEARCH = 25; - static final int SURFACE_SELECTOR = 33; - static final int TOOLTIP = 41; - static final int OPTION = 46; + static final int BOTTOM_BAR = 23; + static final int SEARCH = 26; + static final int SURFACE_SELECTOR = 34; + static final int TOOLTIP = 43; + static final int OPTION = 48; } static class SlayerRewards @@ -197,6 +198,11 @@ public class WidgetID static final int TOP_BAR = 12; } + static class DialogOption + { + static final int OPTIONS = 1; + } + static class DialogNPC { static final int HEAD_MODEL = 6; @@ -204,44 +210,38 @@ public class WidgetID static final int TEXT = 5; } + static class DialogPlayer + { + static final int NAME = 3; + static final int TEXT = 5; + static final int HEAD_MODEL = 6; + } + static class LogoutPanel { static final int WORLD_SWITCHER_BUTTON = 3; static final int LOGOUT_BUTTON = 6; } - static class PestControlBoat - { - static final int INFO = 3; - - static final int NEXT_DEPARTURE = 4; - static final int PLAYERS_READY = 5; - static final int POINTS = 6; - } - static class PestControl { - static final int INFO = 3; + static final int ACTIVITY_BAR = 10; + static final int ACTIVITY_PROGRESS = 12; - static final int TIME = 6; + static final int PURPLE_SHIELD = 13; + static final int BLUE_SHIELD = 14; + static final int YELLOW_SHIELD = 15; + static final int RED_SHIELD = 16; - static final int ACTIVITY_BAR = 12; - static final int ACTIVITY_PROGRESS = 14; + static final int PURPLE_ICON = 17; + static final int BLUE_ICON = 18; + static final int YELLOW_ICON = 19; + static final int RED_ICON = 20; - static final int PURPLE_SHIELD = 15; - static final int BLUE_SHIELD = 16; - static final int YELLOW_SHIELD = 17; - static final int RED_SHIELD = 18; - - static final int PURPLE_ICON = 19; - static final int BLUE_ICON = 20; - static final int YELLOW_ICON = 21; - static final int RED_ICON = 22; - - static final int PURPLE_HEALTH = 23; - static final int BLUE_HEALTH = 24; - static final int YELLOW_HEALTH = 25; - static final int RED_HEALTH = 26; + static final int PURPLE_HEALTH = 21; + static final int BLUE_HEALTH = 22; + static final int YELLOW_HEALTH = 23; + static final int RED_HEALTH = 24; } static class FriendList @@ -418,16 +418,15 @@ public class WidgetID { static final int XP_ORB = 1; static final int HEALTH_ORB = 2; - static final int PRAYER_ORB = 12; - static final int QUICK_PRAYER_ORB = 14; // Has the "Quick-prayers" name - static final int PRAYER_ORB_TEXT = 15; - static final int RUN_ORB = 20; - static final int TOGGLE_RUN_ORB = 22; // Has the "Toggle run" name - static final int RUN_ORB_TEXT = 23; - static final int SPEC_ORB = 28; - static final int SPEC_CLICKBOX = 30; - static final int WORLDMAP_ORB = 41; - static final int WIKI_BANNER = 43; + static final int PRAYER_ORB = 13; + static final int QUICK_PRAYER_ORB = 15; // Has the "Quick-prayers" name + static final int PRAYER_ORB_TEXT = 16; + static final int RUN_ORB = 21; + static final int TOGGLE_RUN_ORB = 23; // Has the "Toggle run" name + static final int RUN_ORB_TEXT = 24; + static final int SPEC_ORB = 29; + static final int WORLDMAP_ORB = 43; + static final int WIKI_BANNER = 45; } static class LoginClickToPlayScreen @@ -435,59 +434,12 @@ public class WidgetID static final int MESSAGE_OF_THE_DAY = 7; } - static class Viewport - { - static final int MINIMAP_RESIZABLE_WIDGET = 20; - static final int MINIMAP_RESIZABLE_DRAW_AREA = 28; - static final int MINIMAP_RESIZABLE_ORB_HOLDER = 31; - static final int MINIMAP_RESIZABLE_LOGOUT_BUTTON = 33; - static final int FIXED_VIEWPORT = 17; - static final int RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX = 14; - static final int RESIZABLE_VIEWPORT_BOTTOM_LINE = 14; - } - - public static class FixedViewport + static class FixedViewport { static final int MINIMAP = 3; static final int MINIMAP_DRAW_AREA = 8; - public static final int MULTICOMBAT_INDICATOR = 21; - static final int FRIENDS_CHAT_TAB = 34; - static final int FRIENDS_TAB = 36; - static final int IGNORES_TAB = 35; - static final int LOGOUT_TAB = 37; - static final int OPTIONS_TAB = 38; - static final int EMOTES_TAB = 39; - static final int MUSIC_TAB = 40; - static final int FRIENDS_CHAT_ICON = 41; - static final int FRIENDS_ICON = 43; - static final int IGNORES_ICON = 42; - static final int LOGOUT_ICON = 44; - static final int OPTIONS_ICON = 45; - static final int EMOTES_ICON = 46; - static final int MUSIC_ICON = 47; - static final int COMBAT_TAB = 51; - static final int STATS_TAB = 52; - static final int QUESTS_TAB = 53; - static final int INVENTORY_TAB = 54; - static final int EQUIPMENT_TAB = 55; - static final int PRAYER_TAB = 56; - static final int MAGIC_TAB = 57; - static final int COMBAT_ICON = 58; - static final int STATS_ICON = 59; - static final int QUESTS_ICON = 60; - static final int INVENTORY_ICON = 61; - static final int EQUIPMENT_ICON = 62; - static final int PRAYER_ICON = 63; - static final int MAGIC_ICON = 64; - static final int ROOT_INTERFACE_CONTAINER = 65; - static final int BANK_CONTAINER = 67; - static final int INTERFACE_CONTAINER = 68; - static final int INVENTORY_CONTAINER = 72; - } - - static class ResizableViewport - { - static final int MULTICOMBAT_INDICATOR = 18; + static final int FIXED_VIEWPORT = 20; + static final int MULTICOMBAT_INDICATOR = 24; static final int FRIENDS_CHAT_TAB = 39; static final int FRIENDS_TAB = 41; static final int IGNORES_TAB = 40; @@ -502,56 +454,89 @@ public class WidgetID static final int OPTIONS_ICON = 50; static final int EMOTES_ICON = 51; static final int MUSIC_ICON = 52; - static final int COMBAT_TAB = 55; - static final int STATS_TAB = 56; - static final int QUESTS_TAB = 57; - static final int INVENTORY_TAB = 58; - static final int EQUIPMENT_TAB = 59; - static final int PRAYER_TAB = 60; - static final int MAGIC_TAB = 61; - static final int COMBAT_ICON = 62; - static final int STATS_ICON = 63; - static final int QUESTS_ICON = 64; - static final int INVENTORY_ICON = 65; - static final int EQUIPMENT_ICON = 66; - static final int PRAYER_ICON = 67; - static final int MAGIC_ICON = 68; - static final int INTERFACE_CONTAINER = 69; - static final int INVENTORY_CONTAINER = 75; + static final int COMBAT_TAB = 56; + static final int STATS_TAB = 57; + static final int QUESTS_TAB = 58; + static final int INVENTORY_TAB = 59; + static final int EQUIPMENT_TAB = 60; + static final int PRAYER_TAB = 61; + static final int MAGIC_TAB = 62; + static final int COMBAT_ICON = 63; + static final int STATS_ICON = 64; + static final int QUESTS_ICON = 65; + static final int INVENTORY_ICON = 66; + static final int EQUIPMENT_ICON = 67; + static final int PRAYER_ICON = 68; + static final int MAGIC_ICON = 69; + static final int ROOT_INTERFACE_CONTAINER = 70; + static final int BANK_CONTAINER = 73; + static final int INTERFACE_CONTAINER = 74; + static final int INVENTORY_CONTAINER = 78; + } + + static class ResizableViewport + { + static final int RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX = 19; + static final int MULTICOMBAT_INDICATOR = 23; + static final int MINIMAP = 25; + static final int MINIMAP_DRAW_AREA = 33; + static final int MINIMAP_ORB_HOLDER = 36; + static final int FRIENDS_CHAT_TAB = 45; + static final int IGNORES_TAB = 46; + static final int FRIENDS_TAB = 47; + static final int LOGOUT_TAB = 48; + static final int OPTIONS_TAB = 49; + static final int EMOTES_TAB = 50; + static final int MUSIC_TAB = 51; + static final int FRIENDS_CHAT_ICON = 52; + static final int FRIENDS_ICON = 54; + static final int IGNORES_ICON = 53; + static final int LOGOUT_ICON = 55; + static final int OPTIONS_ICON = 56; + static final int EMOTES_ICON = 57; + static final int MUSIC_ICON = 58; + static final int COMBAT_TAB = 61; + static final int STATS_TAB = 62; + static final int QUESTS_TAB = 63; + static final int INVENTORY_TAB = 64; + static final int EQUIPMENT_TAB = 65; + static final int PRAYER_TAB = 66; + static final int MAGIC_TAB = 67; + static final int COMBAT_ICON = 68; + static final int STATS_ICON = 69; + static final int QUESTS_ICON = 70; + static final int INVENTORY_ICON = 71; + static final int EQUIPMENT_ICON = 72; + static final int PRAYER_ICON = 73; + static final int MAGIC_ICON = 74; + static final int INTERFACE_CONTAINER = 75; + static final int INVENTORY_CONTAINER = 81; } static class ResizableViewportBottomLine { - static final int LOGOUT_BUTTON_OVERLAY = 32; - static final int CMB_TAB = 50; - static final int CMB_ICON = 60; - static final int SKILLS_TAB = 51; - static final int SKILLS_ICON = 61; - static final int QUESTS_TAB = 52; - static final int QUESTS_ICON = 62; - static final int INVENTORY_TAB = 56; - static final int INVENTORY_ICON = 63; - static final int EQUIP_TAB = 54; - static final int EQUIP_ICON = 64; - static final int PRAYER_TAB = 58; - static final int PRAYER_ICON = 65; - static final int SPELL_TAB = 56; - static final int SPELL_ICON = 53; - static final int FC_TAB = 35; - static final int FC_ICON = 44; - static final int IGNORE_TAB = 36; - static final int IGNORE_ICON = 42; - static final int FRIEND_TAB = 37; - static final int FRIEND_ICON = 46; - static final int SETTINGS_TAB = 38; - static final int SETTINGS_ICON = 47; - static final int EMOTE_TAB = 39; - static final int EMOTE_ICON = 48; - static final int MUSIC_TAB = 40; - static final int MUSIC_ICON = 49; - static final int MAGIC_ICON = 66; - static final int INTERFACE_CONTAINER = 68; - static final int INVENTORY_CONTAINER = 74; + static final int RESIZABLE_VIEWPORT_BOTTOM_LINE = 19; + static final int MINIMAP = 25; + static final int MINIMAP_DRAW_AREA = 33; + static final int MINIMAP_ORB_HOLDER = 36; + static final int LOGOUT_BUTTON_OVERLAY = 37; + static final int MINIMAP_LOGOUT_BUTTON = 38; + static final int FC_ICON = 49; + static final int FRIEND_ICON = 51; + static final int SETTINGS_ICON = 52; + static final int EMOTE_ICON = 53; + static final int MUSIC_ICON = 54; + static final int INVENTORY_TAB = 61; + static final int PRAYER_TAB = 63; + static final int CMB_ICON = 65; + static final int SKILLS_ICON = 66; + static final int QUESTS_ICON = 67; + static final int INVENTORY_ICON = 68; + static final int EQUIP_ICON = 69; + static final int PRAYER_ICON = 70; + static final int MAGIC_ICON = 71; + static final int INTERFACE_CONTAINER = 74; + static final int INVENTORY_CONTAINER = 80; } static class Chatbox @@ -671,72 +656,40 @@ public class WidgetID static class VolcanicMine { - static final int GENERAL_INFOBOX_GROUP_ID = 4; - static final int TIME_LEFT = 8; - static final int POINTS = 10; - static final int STABILITY = 12; - static final int PLAYER_COUNT = 14; - static final int STABILITY_INFOBOX_GROUP_ID = 5; - static final int VENTS_INFOBOX_GROUP_ID = 16; - static final int VENT_A_PERCENTAGE = 19; - static final int VENT_B_PERCENTAGE = 20; - static final int VENT_C_PERCENTAGE = 21; - static final int VENT_A_STATUS = 23; - static final int VENT_B_STATUS = 24; - static final int VENT_C_STATUS = 25; + static final int TIME_LEFT = 6; + static final int POINTS = 8; + static final int STABILITY = 10; + static final int PLAYER_COUNT = 12; + static final int VENT_A_PERCENTAGE = 16; + static final int VENT_B_PERCENTAGE = 17; + static final int VENT_C_PERCENTAGE = 18; + static final int VENT_A_STATUS = 20; + static final int VENT_B_STATUS = 21; + static final int VENT_C_STATUS = 22; } static class BarbarianAssault { static class ATK { - static final int ROLE_SPRITE = 12; - static final int ROLE = 13; + static final int ROLE_SPRITE = 11; + static final int ROLE = 12; } + static class HLR { - static final int TEAMMATE1 = 19; - static final int TEAMMATE2 = 23; - static final int TEAMMATE3 = 27; - static final int TEAMMATE4 = 31; + static final int TEAMMATE1 = 18; + static final int TEAMMATE2 = 22; + static final int TEAMMATE3 = 26; + static final int TEAMMATE4 = 30; } - static class HORN_GLORY - { - static final int ATTACKER = 5; - static final int DEFENDER = 6; - static final int COLLECTOR = 7; - static final int HEALER = 8; - } - static class REWARD_VALUES - { - static final int RUNNERS_PASSED = 14; - static final int HITPOINTS_REPLENISHED = 19; - static final int WRONG_POISON_PACKS_USED = 20; - static final int EGGS_COLLECTED = 21; - static final int FAILED_ATTACKER_ATTACKS = 22; - static final int RUNNERS_PASSED_POINTS = 24; - static final int RANGERS_KILLED = 25; - static final int FIGHTERS_KILLED = 26; - static final int HEALERS_KILLED = 27; - static final int RUNNERS_KILLED = 28; - static final int HITPOINTS_REPLENISHED_POINTS = 29; - static final int WRONG_POISON_PACKS_USED_POINTS = 30; - static final int EGGS_COLLECTED_POINTS = 31; - static final int FAILED_ATTACKER_ATTACKS_POINTS = 32; - static final int BASE_POINTS = 33; - static final int HONOUR_POINTS_REWARD = 49; - } - static final int ROLE_SPRITE = 11; - static final int ROLE = 12; + + static final int ROLE_SPRITE = 10; + static final int ROLE = 11; static final int REWARD_TEXT = 57; } - static class GWD - { - static final int CONTAINER = 7; - } - static class LevelUp { static final int SKILL = 1; @@ -751,24 +704,12 @@ public class WidgetID static class Raids { - static final int POINTS_INFOBOX = 7; + static final int POINTS_INFOBOX = 3; } static class Tob { - static final int PARTY_INTERFACE = 6; - static final int PARTY_STATS = 10; - } - - public static class ExperienceDrop - { - public static final int DROP_1 = 15; - public static final int DROP_2 = 16; - public static final int DROP_3 = 17; - public static final int DROP_4 = 18; - public static final int DROP_5 = 19; - public static final int DROP_6 = 20; - public static final int DROP_7 = 21; + static final int PARTY_STATS = 7; } static class PuzzleBox @@ -831,9 +772,8 @@ public class WidgetID static class Barrows { - static final int BARROWS_BROTHERS = 9; - static final int BARROWS_POTENTIAL = 10; - static final int BARROWS_REWARD_INVENTORY = 3; + static final int BARROWS_BROTHERS = 4; + static final int BARROWS_POTENTIAL = 5; } static class Diary @@ -872,11 +812,6 @@ public class WidgetID static final int LOGOUT_BUTTON = 23; } - static class FossilOxygen - { - static final int FOSSIL_ISLAND_OXYGEN_BAR = 4; - } - static class Minigames { static final int TELEPORT_BUTTON = 26; @@ -905,15 +840,10 @@ public class WidgetID static class Pvp { - static final int FOG_OVERLAY = 1; - static final int PVP_WIDGET_CONTAINER = 54; // OUTDATED? - static final int SKULL = 56; // OUTDATED? - static final int ATTACK_RANGE = 59; // OUTDATED? - static final int BOUNTY_HUNTER_INFO = 6; - static final int KILLDEATH_RATIO = 28; - static final int SKULL_CONTAINER = 48; - static final int SAFE_ZONE = 50; - static final int WILDERNESS_LEVEL = 53; // this can also be the Deadman Mode "Protection" text + static final int KILLDEATH_RATIO = 26; + static final int SKULL_CONTAINER = 45; + static final int SAFE_ZONE = 47; + static final int WILDERNESS_LEVEL = 49; // this can also be the Deadman Mode "Protection" text } static class KourendFavour @@ -923,7 +853,7 @@ public class WidgetID static class Zeah { - static final int MESS_HALL_COOKING_DISPLAY = 3; + static final int MESS_HALL_COOKING_DISPLAY = 2; } static class LootingBag @@ -933,12 +863,7 @@ public class WidgetID static class Skotizo { - static final int CONTAINER = 3; - } - - public static class FullScreenMap - { - public static final int ROOT = 27; + static final int CONTAINER = 2; } static class QuestList @@ -961,17 +886,7 @@ public class WidgetID static class Barrows_Puzzle { static final int PARENT = 0; - static final int CONTAINER = 1; - static final int TOP_ROW_PUZZLE = 2; static final int SEQUENCE_1 = 3; - static final int SEQUENCE_1_TEXT = 4; - static final int SEQUENCE_2 = 5; - static final int SEQUENCE_2_TEXT = 6; - static final int SEQUENCE_3 = 7; - static final int SEQUENCE_3_TEXT = 8; - static final int SEQUENCE_4 = 9; - static final int SEQUENCE_4_TEXT = 10; - static final int NEXT_SHAPE_TEXT = 11; static final int ANSWER1_CONTAINER = 12; static final int ANSWER1 = 13; static final int ANSWER2_CONTAINER = 14; @@ -995,10 +910,10 @@ public class WidgetID static class SettingsSide { - static final int CAMERA_ZOOM_SLIDER_TRACK = 59; - static final int MUSIC_SLIDER = 13; - static final int SOUND_EFFECT_SLIDER = 17; - static final int AREA_SOUND_SLIDER = 21; + static final int CAMERA_ZOOM_SLIDER_TRACK = 61; + static final int MUSIC_SLIDER = 14; + static final int SOUND_EFFECT_SLIDER = 18; + static final int AREA_SOUND_SLIDER = 22; } static class Settings @@ -1018,12 +933,12 @@ public class WidgetID static class Lms { - static final int INFO = 3; + static final int INFO = 2; } static class LmsKDA { - static final int INFO = 6; + static final int INFO = 7; } static class AdventureLog @@ -1070,11 +985,6 @@ public class WidgetID static final int BUTTON_10 = 34; } - static class EncounterHealthBar - { - static final int CONTAINER = 6; - } - static class TrailblazerAreas { static final int TELEPORT = 59; @@ -1085,30 +995,12 @@ public class WidgetID static final int STATUS_INDICATOR = 4; } - static class DialogPlayer - { - static final int HEAD_MODEL = 1; - static final int NAME = 2; - static final int CONTINUE = 3; - static final int TEXT = 4; - } - static class DialogNotification { static final int TEXT = 0; static final int CONTINUE = 1; } - static class DialogOption - { - static final int TEXT = 0; - static final int OPTION1 = 1; - static final int OPTION2 = 2; - static final int OPTION3 = 3; - static final int OPTION4 = 4; - static final int OPTION5 = 5; - } - static class PestControlExchangeWindow { static final int ITEM_LIST = 2; diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index cc1a1f27fc..9f073d8b94 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -51,6 +51,7 @@ public enum WidgetInfo WORLD_MAP_VIEW(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.MAPVIEW), WORLD_MAP_OVERVIEW_MAP(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.OVERVIEW_MAP), + WORLD_MAP_BOTTOM_BAR(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.BOTTOM_BAR), WORLD_MAP_SEARCH(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.SEARCH), WORLD_MAP_SURFACE_SELECTOR(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.SURFACE_SELECTOR), WORLD_MAP_TOOLTIP(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.TOOLTIP), @@ -73,8 +74,6 @@ public enum WidgetInfo DIARY_QUEST_WIDGET_TITLE(WidgetID.DIARY_QUEST_GROUP_ID, WidgetID.Diary.DIARY_TITLE), DIARY_QUEST_WIDGET_TEXT(WidgetID.DIARY_QUEST_GROUP_ID, WidgetID.Diary.DIARY_TEXT), - PEST_CONTROL_BOAT_INFO(WidgetID.PEST_CONTROL_BOAT_GROUP_ID, WidgetID.PestControlBoat.INFO), - PEST_CONTROL_INFO(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.INFO), PEST_CONTROL_PURPLE_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.PURPLE_SHIELD), PEST_CONTROL_BLUE_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.BLUE_SHIELD), PEST_CONTROL_YELLOW_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.YELLOW_SHIELD), @@ -90,13 +89,10 @@ public enum WidgetInfo PEST_CONTROL_ACTIVITY_BAR(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.ACTIVITY_BAR), PEST_CONTROL_ACTIVITY_PROGRESS(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.ACTIVITY_PROGRESS), - VOLCANIC_MINE_GENERAL_INFOBOX_GROUP(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.GENERAL_INFOBOX_GROUP_ID), VOLCANIC_MINE_TIME_LEFT(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.TIME_LEFT), VOLCANIC_MINE_POINTS(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.POINTS), VOLCANIC_MINE_STABILITY(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.STABILITY), VOLCANIC_MINE_PLAYER_COUNT(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.PLAYER_COUNT), - VOLCANIC_MINE_VENTS_INFOBOX_GROUP(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.VENTS_INFOBOX_GROUP_ID), - VOLCANIC_MINE_STABILITY_INFOBOX_GROUP(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.STABILITY_INFOBOX_GROUP_ID), VOLCANIC_MINE_VENT_A_PERCENTAGE(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.VENT_A_PERCENTAGE), VOLCANIC_MINE_VENT_B_PERCENTAGE(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.VENT_B_PERCENTAGE), VOLCANIC_MINE_VENT_C_PERCENTAGE(WidgetID.VOLCANIC_MINE_GROUP_ID, WidgetID.VolcanicMine.VENT_C_PERCENTAGE), @@ -189,7 +185,7 @@ public enum WidgetInfo LOGIN_CLICK_TO_PLAY_SCREEN(WidgetID.LOGIN_CLICK_TO_PLAY_GROUP_ID, 0), LOGIN_CLICK_TO_PLAY_SCREEN_MESSAGE_OF_THE_DAY(WidgetID.LOGIN_CLICK_TO_PLAY_GROUP_ID, WidgetID.LoginClickToPlayScreen.MESSAGE_OF_THE_DAY), - FIXED_VIEWPORT(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.Viewport.FIXED_VIEWPORT), + FIXED_VIEWPORT(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.FIXED_VIEWPORT), FIXED_VIEWPORT_ROOT_INTERFACE_CONTAINER(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.ROOT_INTERFACE_CONTAINER), FIXED_VIEWPORT_BANK_CONTAINER(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.BANK_CONTAINER), FIXED_VIEWPORT_INTERFACE_CONTAINER(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.INTERFACE_CONTAINER), @@ -225,16 +221,10 @@ public enum WidgetInfo FIXED_VIEWPORT_MINIMAP(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.MINIMAP), FIXED_VIEWPORT_MINIMAP_DRAW_AREA(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.MINIMAP_DRAW_AREA), - RESIZABLE_MINIMAP_WIDGET(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.Viewport.MINIMAP_RESIZABLE_WIDGET), - RESIZABLE_MINIMAP_DRAW_AREA(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.Viewport.MINIMAP_RESIZABLE_DRAW_AREA), - RESIZABLE_MINIMAP_ORB_HOLDER(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.Viewport.MINIMAP_RESIZABLE_ORB_HOLDER), - RESIZABLE_MINIMAP_LOGOUT_BUTTON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.Viewport.MINIMAP_RESIZABLE_LOGOUT_BUTTON), - - RESIZABLE_MINIMAP_STONES_WIDGET(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.Viewport.MINIMAP_RESIZABLE_WIDGET), - RESIZABLE_MINIMAP_STONES_DRAW_AREA(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.Viewport.MINIMAP_RESIZABLE_DRAW_AREA), - RESIZABLE_MINIMAP_STONES_ORB_HOLDER(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.Viewport.MINIMAP_RESIZABLE_ORB_HOLDER), - - RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.Viewport.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX), + RESIZABLE_MINIMAP_STONES_WIDGET(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.MINIMAP), + RESIZABLE_MINIMAP_STONES_DRAW_AREA(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.MINIMAP_DRAW_AREA), + RESIZABLE_MINIMAP_STONES_ORB_HOLDER(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.MINIMAP_ORB_HOLDER), + RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX), RESIZABLE_VIEWPORT_COMBAT_TAB(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.COMBAT_TAB), RESIZABLE_VIEWPORT_STATS_TAB(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.STATS_TAB), RESIZABLE_VIEWPORT_QUESTS_TAB(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.QUESTS_TAB), @@ -266,7 +256,11 @@ public enum WidgetInfo RESIZABLE_VIEWPORT_INTERFACE_CONTAINER(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.INTERFACE_CONTAINER), RESIZABLE_VIEWPORT_INVENTORY_CONTAINER(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.INVENTORY_CONTAINER), - RESIZABLE_VIEWPORT_BOTTOM_LINE(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.Viewport.RESIZABLE_VIEWPORT_BOTTOM_LINE), + RESIZABLE_MINIMAP_WIDGET(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.MINIMAP), + RESIZABLE_MINIMAP_DRAW_AREA(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.MINIMAP_DRAW_AREA), + RESIZABLE_MINIMAP_ORB_HOLDER(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.MINIMAP_ORB_HOLDER), + RESIZABLE_MINIMAP_LOGOUT_BUTTON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.MINIMAP_LOGOUT_BUTTON), + RESIZABLE_VIEWPORT_BOTTOM_LINE(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.RESIZABLE_VIEWPORT_BOTTOM_LINE), RESIZABLE_VIEWPORT_BOTTOM_LINE_LOGOUT_BUTTON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.LOGOUT_BUTTON_OVERLAY), RESIZABLE_VIEWPORT_BOTTOM_LINE_QUESTS_ICON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.QUESTS_ICON), RESIZABLE_VIEWPORT_BOTTOM_LINE_INVENTORY_TAB(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.INVENTORY_TAB), @@ -333,6 +327,7 @@ public enum WidgetInfo COMBAT_AUTO_RETALIATE(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.AUTO_RETALIATE), DIALOG_OPTION(WidgetID.DIALOG_OPTION_GROUP_ID, 0), + DIALOG_OPTION_OPTIONS(WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DialogOption.OPTIONS), DIALOG_SPRITE(WidgetID.DIALOG_SPRITE_GROUP_ID, 0), DIALOG_SPRITE_SPRITE(WidgetID.DIALOG_SPRITE_GROUP_ID, WidgetID.DialogSprite.SPRITE), @@ -343,6 +338,7 @@ public enum WidgetInfo DIALOG_NPC_HEAD_MODEL(WidgetID.DIALOG_NPC_GROUP_ID, WidgetID.DialogNPC.HEAD_MODEL), DIALOG_PLAYER(WidgetID.DIALOG_PLAYER_GROUP_ID, 0), + DIALOG_PLAYER_TEXT(WidgetID.DIALOG_PLAYER_GROUP_ID, WidgetID.DialogPlayer.TEXT), PRIVATE_CHAT_MESSAGE(WidgetID.PRIVATE_CHAT, 0), @@ -398,8 +394,6 @@ public enum WidgetInfo MOTHERLODE_MINE(WidgetID.MOTHERLODE_MINE_GROUP_ID, 0), - GWD_KC(WidgetID.GWD_KC_GROUP_ID, WidgetID.GWD.CONTAINER), - PUZZLE_BOX(WidgetID.PUZZLE_BOX_GROUP_ID, WidgetID.PuzzleBox.VISIBLE_BOX), LIGHT_BOX(WidgetID.LIGHT_BOX_GROUP_ID, WidgetID.LightBox.LIGHT_BOX), @@ -421,7 +415,6 @@ public enum WidgetInfo RAIDS_POINTS_INFOBOX(WidgetID.RAIDS_GROUP_ID, WidgetID.Raids.POINTS_INFOBOX), - TOB_PARTY_INTERFACE(WidgetID.TOB_PARTY_GROUP_ID, WidgetID.Tob.PARTY_INTERFACE), TOB_PARTY_STATS(WidgetID.TOB_PARTY_GROUP_ID, WidgetID.Tob.PARTY_STATS), BLAST_FURNACE_COFFER(WidgetID.BLAST_FURNACE_GROUP_ID, 2), @@ -432,15 +425,13 @@ public enum WidgetInfo EXPERIENCE_TRACKER_WIDGET(WidgetID.EXPERIENCE_TRACKER_GROUP_ID, WidgetID.ExperienceTracker.WIDGET), EXPERIENCE_TRACKER_BOTTOM_BAR(WidgetID.EXPERIENCE_TRACKER_GROUP_ID, WidgetID.ExperienceTracker.BOTTOM_BAR), - FISHING_TRAWLER_CONTRIBUTION(WidgetID.FISHING_TRAWLER_GROUP_ID, 14), - FISHING_TRAWLER_TIMER(WidgetID.FISHING_TRAWLER_GROUP_ID, 15), + FISHING_TRAWLER_CONTRIBUTION(WidgetID.FISHING_TRAWLER_GROUP_ID, 13), + FISHING_TRAWLER_TIMER(WidgetID.FISHING_TRAWLER_GROUP_ID, 14), - TITHE_FARM(WidgetID.TITHE_FARM_GROUP_ID, 3), + TITHE_FARM(WidgetID.TITHE_FARM_GROUP_ID, 2), - BARROWS_INFO(WidgetID.BARROWS_GROUP_ID, 0), BARROWS_BROTHERS(WidgetID.BARROWS_GROUP_ID, WidgetID.Barrows.BARROWS_BROTHERS), BARROWS_POTENTIAL(WidgetID.BARROWS_GROUP_ID, WidgetID.Barrows.BARROWS_POTENTIAL), - BARROWS_REWARD_INVENTORY(WidgetID.BARROWS_REWARD_GROUP_ID, WidgetID.Barrows.BARROWS_REWARD_INVENTORY), BARROWS_PUZZLE_PARENT(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.PARENT), BARROWS_PUZZLE_ANSWER1(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER1), BARROWS_PUZZLE_ANSWER1_CONTAINER(WidgetID.BARROWS_PUZZLE_GROUP_ID, WidgetID.Barrows_Puzzle.ANSWER1_CONTAINER), @@ -481,8 +472,6 @@ public enum WidgetInfo WORLD_SWITCHER_LIST(WidgetID.WORLD_SWITCHER_GROUP_ID, WidgetID.WorldSwitcher.WORLD_LIST), - FOSSIL_ISLAND_OXYGENBAR(WidgetID.FOSSIL_ISLAND_OXYGENBAR_ID, WidgetID.FossilOxygen.FOSSIL_ISLAND_OXYGEN_BAR), - MINIGAME_TELEPORT_BUTTON(WidgetID.MINIGAME_TAB_ID, WidgetID.Minigames.TELEPORT_BUTTON), SPELL_LUMBRIDGE_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.StandardSpellBook.LUMBRIDGE_HOME_TELEPORT), @@ -493,12 +482,8 @@ public enum WidgetInfo PVP_SKULL_CONTAINER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SKULL_CONTAINER), PVP_WORLD_SAFE_ZONE(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SAFE_ZONE), - - PVP_FOG_OVERLAY(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.FOG_OVERLAY), - PVP_CONTAINER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.PVP_WIDGET_CONTAINER), PVP_WILDERNESS_LEVEL(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.WILDERNESS_LEVEL), - PVP_BOUNTY_HUNTER_INFO(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.BOUNTY_HUNTER_INFO), PVP_KILLDEATH_COUNTER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.KILLDEATH_RATIO), KOUREND_FAVOUR_OVERLAY(WidgetID.KOUREND_FAVOUR_GROUP_ID, WidgetID.KourendFavour.KOUREND_FAVOUR_OVERLAY), @@ -534,10 +519,8 @@ public enum WidgetInfo GAUNTLET_TIMER_CONTAINER(WidgetID.GAUNTLET_TIMER_GROUP_ID, WidgetID.GauntletTimer.CONTAINER), HALLOWED_SEPULCHRE_TIMER_CONTAINER(WidgetID.HALLOWED_SEPULCHRE_TIMER_GROUP_ID, WidgetID.HallowedSepulchreTimer.CONTAINER), - HEALTH_OVERLAY_BAR(WidgetID.HEALTH_OVERLAY_BAR_GROUP_ID, WidgetID.EncounterHealthBar.CONTAINER), - TRAILBLAZER_AREA_TELEPORT(WidgetID.TRAILBLAZER_AREAS_GROUP_ID, WidgetID.TrailblazerAreas.TELEPORT), - + MULTICOMBAT_FIXED(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.MULTICOMBAT_INDICATOR), MULTICOMBAT_RESIZEABLE_MODERN(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewport.MULTICOMBAT_INDICATOR), MULTICOMBAT_RESIZEABLE_CLASSIC(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.MULTICOMBAT_INDICATOR), @@ -568,9 +551,6 @@ public enum WidgetInfo PEST_CONTROL_EXCHANGE_WINDOW(WidgetID.PEST_CONTROL_EXCHANGE_WINDOW_GROUP_ID, 0), PEST_CONTROL_EXCHANGE_WINDOW_POINTS(WidgetID.PEST_CONTROL_EXCHANGE_WINDOW_GROUP_ID, WidgetID.PestControlExchangeWindow.POINTS), - PEST_CONTROL_BOAT_INFO_POINTS(WidgetID.PEST_CONTROL_BOAT_GROUP_ID, WidgetID.PestControlBoat.POINTS), - PEST_CONTROL_INFO_TIME(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.TIME), - BANK_UNNOTED_BUTTON(WidgetID.BANK_GROUP_ID, WidgetID.Bank.UNNOTED_BUTTON), BANK_NOTED_BUTTON(WidgetID.BANK_GROUP_ID, WidgetID.Bank.NOTED_BUTTON), @@ -615,12 +595,8 @@ public enum WidgetInfo SMITHING_ANVIL_EXCLUSIVE1(WidgetID.SMITHING_GROUP_ID, WidgetID.Smithing.EXCLUSIVE1), SMITHING_ANVIL_EXCLUSIVE2(WidgetID.SMITHING_GROUP_ID, WidgetID.Smithing.EXCLUSIVE2), - MINIMAP_SPEC_CLICKBOX(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.SPEC_CLICKBOX), - MINIMAP_WORLD_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.WORLDMAP_ORB), - RESIZABLE_VIEWPORT_BOTTOM_LINE_MAGIC_TAB(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.SPELL_TAB), - COMBAT_WEAPON(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.WEAPON_NAME), COMBAT_SPECIAL_ATTACK(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.SPECIAL_ATTACK_BAR), @@ -636,37 +612,11 @@ public enum WidgetInfo DIALOG2_SPRITE_CONTINUE(WidgetID.DIALOG_SPRITE2_ID, WidgetID.DialogSprite2.CONTINUE), DIALOG_PLAYER_NAME(WidgetID.DIALOG_PLAYER_GROUP_ID, WidgetID.DialogPlayer.NAME), - DIALOG_PLAYER_TEXT(WidgetID.DIALOG_PLAYER_GROUP_ID, WidgetID.DialogPlayer.TEXT), DIALOG_PLAYER_HEAD_MODEL(WidgetID.DIALOG_PLAYER_GROUP_ID, WidgetID.DialogPlayer.HEAD_MODEL), - DIALOG_PLAYER_CONTINUE(WidgetID.DIALOG_PLAYER_GROUP_ID, WidgetID.DialogPlayer.CONTINUE), DIALOG_NOTIFICATION_TEXT(WidgetID.DIALOG_NOTIFICATION_GROUP_ID, WidgetID.DialogNotification.TEXT), DIALOG_NOTIFICATION_CONTINUE(WidgetID.DIALOG_NOTIFICATION_GROUP_ID, WidgetID.DialogNotification.CONTINUE), - DIALOG_OPTION_TEXT(WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DialogOption.TEXT), - DIALOG_OPTION_OPTION1(WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DialogOption.OPTION1), - DIALOG_OPTION_OPTION2(WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DialogOption.OPTION2), - DIALOG_OPTION_OPTION3(WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DialogOption.OPTION3), - DIALOG_OPTION_OPTION4(WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DialogOption.OPTION4), - DIALOG_OPTION_OPTION5(WidgetID.DIALOG_OPTION_GROUP_ID, WidgetID.DialogOption.OPTION5), - - BA_RUNNERS_PASSED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RUNNERS_PASSED), - BA_HITPOINTS_REPLENISHED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HITPOINTS_REPLENISHED), - BA_WRONG_POISON_PACKS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.WRONG_POISON_PACKS_USED), - BA_EGGS_COLLECTED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.EGGS_COLLECTED), - BA_FAILED_ATTACKER_ATTACKS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.FAILED_ATTACKER_ATTACKS), - BA_RUNNERS_PASSED_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RUNNERS_PASSED_POINTS), - BA_RANGERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RANGERS_KILLED), - BA_FIGHTERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.FIGHTERS_KILLED), - BA_HEALERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HEALERS_KILLED), - BA_RUNNERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RUNNERS_KILLED), - BA_HITPOINTS_REPLENISHED_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HITPOINTS_REPLENISHED_POINTS), - BA_WRONG_POISON_PACKS_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.WRONG_POISON_PACKS_USED_POINTS), - BA_EGGS_COLLECTED_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.EGGS_COLLECTED_POINTS), - BA_FAILED_ATTACKER_ATTACKS_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.FAILED_ATTACKER_ATTACKS_POINTS), - BA_HONOUR_POINTS_REWARD(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HONOUR_POINTS_REWARD), - BA_BASE_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.BASE_POINTS), - LEVEL_UP_CONTINUE(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.CONTINUE), THEATRE_OF_BLOOD_PARTY(WidgetID.THEATRE_OF_BLOOD_PARTY_GROUP_ID, WidgetID.TheatreOfBloodParty.CONTAINER), @@ -687,9 +637,6 @@ public enum WidgetInfo FOSSIL_MUSHROOM_SWAMP(WidgetID.FOSSIL_ISLAND_MUSHROOM_TELE_GROUP_ID, WidgetID.FossilMushroomTeleport.SWAMP), FOSSIL_MUSHROOM_MEADOW(WidgetID.FOSSIL_ISLAND_MUSHROOM_TELE_GROUP_ID, WidgetID.FossilMushroomTeleport.MUSHROOM_MEADOW), - PVP_SKULL(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SKULL), - PVP_ATTACK_RANGE(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.ATTACK_RANGE), - SPELLBOOK(WidgetID.SPELLBOOK_GROUP_ID, 0), SPELLBOOK_FILTERED_BOUNDS(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTERED_SPELLS_BOUNDS), @@ -868,8 +815,6 @@ public enum WidgetInfo MULTICOMBAT_RESIZEABLE(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewport.MULTICOMBAT_INDICATOR), - FULLSCREEN_MAP_ROOT(WidgetID.FULLSCREEN_CONTAINER_TLI, WidgetID.FullScreenMap.ROOT), - MUSICTAB_INTERFACE(WidgetID.MUSICTAB_GROUP_ID, 1), MUSICTAB_SONG_BOX(WidgetID.MUSICTAB_GROUP_ID, 2), MUSICTAB_ALL_SONGS(WidgetID.MUSICTAB_GROUP_ID, 3), @@ -910,14 +855,6 @@ public enum WidgetInfo BANK_PIN_9(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_9), BANK_PIN_10(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_10), - XP_DROP_1(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_1), - XP_DROP_2(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_2), - XP_DROP_3(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_3), - XP_DROP_4(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_4), - XP_DROP_5(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_5), - XP_DROP_6(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_6), - XP_DROP_7(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_7), - JEWELLERY_BOX_DUEL_RING(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.DUEL_RING), JEWELLERY_BOX_GAME_NECK(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.GAME_NECK), JEWELLERY_BOX_COMB_BRAC(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.COMB_BRAC), diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index 710598356f..c96f644625 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -395,6 +395,7 @@ public class RuneLite // Add core overlays WidgetOverlay.createOverlays(client).forEach(overlayManager::add); overlayManager.add(worldMapOverlay.get()); + eventBus.register(worldMapOverlay.get()); overlayManager.add(tooltipOverlay.get()); playerManager.get(); diff --git a/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java b/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java index 58f334ca96..1637f3a3fe 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java @@ -165,7 +165,7 @@ public class ChatIconManager private static int clanRankToIdx(int key) { - // keys are -5 to 264, with no 0 - return key < 0 ? ~key : (key + 4); + // keys are -6 to 265, with no 0 + return key < 0 ? ~key : (key + 5); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/LumbridgeDiaryRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/LumbridgeDiaryRequirement.java index f729082db2..16da9e22c4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/LumbridgeDiaryRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/LumbridgeDiaryRequirement.java @@ -109,7 +109,7 @@ public class LumbridgeDiaryRequirement extends GenericDiaryRequirement new SkillRequirement(Skill.FARMING, 63)); add("Light your mining helmet in the Lumbridge castle basement.", new SkillRequirement(Skill.FIREMAKING, 65)); - add("Recharge your prayer at Clan Wars with Smite activated.", + add("Recharge your prayer at the Duel Arena with Smite activated.", new SkillRequirement(Skill.PRAYER, 52)); add("Craft, string and enchant an Amulet of Power in Lumbridge.", new SkillRequirement(Skill.CRAFTING, 70), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java index 1193368164..ae3b9996a5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Courses.java @@ -32,6 +32,7 @@ import net.runelite.api.coords.WorldPoint; enum Courses { GNOME(86.5, 46, 9781), + SHAYZIEN_BASIC(133.2, 92, 6200), DRAYNOR(120.0, 79, 12338), AL_KHARID(180.0, 0, 13105, new WorldPoint(3299, 3194, 0)), PYRAMID(722.0, 0, 13356, new WorldPoint(3364, 2830, 0)), @@ -40,6 +41,7 @@ enum Courses BARBARIAN(139.5, 60, 10039), CANIFIS(240.0, 175, 13878), APE_ATOLL(580.0, 300, 11050), + SHAYZIEN_ADVANCED(474.3, 382, 5944), FALADOR(440, 180, 12084), WILDERNESS(571.0, 499, 11837), WEREWOLF(730.0, 380, 14234), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java index 98115f316f..b638366c1a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java @@ -98,7 +98,13 @@ class Obstacles ROPE_BRIDGE_36233, TIGHTROPE_36234, ROPE_BRIDGE_36235, TIGHTROPE_36236, TIGHTROPE_36237, DARK_HOLE_36238, // Rellekka Lighthouse BASALT_ROCK, BASALT_ROCK_4553, BASALT_ROCK_4554, BASALT_ROCK_4556, BASALT_ROCK_4558, ROCKY_SHORE, - BASALT_ROCK_4557, BASALT_ROCK_4555, BASALT_ROCK_4552, BEACH + BASALT_ROCK_4557, BASALT_ROCK_4555, BASALT_ROCK_4552, BEACH, + // Shayzien + LADDER_42209, MONKEYBARS_42211, TIGHTROPE_42212, + // Shayzien basic + BAR_42213, TIGHTROPE_42214, TIGHTROPE_42215, GAP_42216, + // Shayzien hard + BEAM, EDGE_42218, EDGE_42219, BEAM_42220, ZIPLINE ); static final Set PORTAL_OBSTACLE_IDS = ImmutableSet.of( diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/HealerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/HealerOverlay.java index 47b410c431..ab771006a5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/HealerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/HealerOverlay.java @@ -31,13 +31,10 @@ import javax.inject.Inject; import lombok.AllArgsConstructor; import lombok.Getter; import net.runelite.api.Client; -import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; -import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; -import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayPosition; class HealerOverlay extends Overlay @@ -74,7 +71,6 @@ class HealerOverlay extends Overlay this.client = client; this.plugin = plugin; this.config = config; - getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "B.A. overlay")); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/TimerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/TimerOverlay.java index 59a0aa6cd2..d04e0ff7b9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/TimerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/TimerOverlay.java @@ -29,12 +29,9 @@ import java.awt.Graphics2D; import java.awt.Rectangle; import javax.inject.Inject; import net.runelite.api.Client; -import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG; import net.runelite.api.widgets.Widget; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; -import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; -import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayPosition; class TimerOverlay extends Overlay @@ -52,7 +49,6 @@ class TimerOverlay extends Overlay this.client = client; this.plugin = plugin; this.config = config; - getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "B.A. overlay")); } @Override 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 45fa1f874c..11b2dfc559 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 @@ -51,6 +51,7 @@ class ClueScrollWorldMapPoint extends WorldMapPoint this.plugin = plugin; this.setSnapToEdge(true); this.setJumpOnClick(true); + this.setName("Clue Scroll"); 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 c419fd64a1..137c058f94 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 @@ -126,8 +126,8 @@ public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueSc new AnagramClue("O BIRDZ A ZANY EN PC", "Cap'n Izzy No-Beard", new WorldPoint(2807, 3191, 0), "Brimhaven Agility Arena", "How many Banana Trees are there in the plantation?", "33"), new AnagramClue("OK CO", "Cook", new WorldPoint(3207, 3214, 0), "Ground floor of Lumbridge Castle", "How many cannons does Lumbridge Castle have?", "9"), new AnagramClue("OR ZINC FUMES WARD", "Wizard Frumscone", new WorldPoint(2594, 3086, 0), "Downstairs in the Wizards' Guild"), - new AnagramClue("OUR OWN NEEDS", "Nurse Wooned", new WorldPoint(1511, 3619, 0), "Shayzien Infirmary", "How many wounded soldiers are in the camp?", "19"), - new AnagramClue("PACINNG A TAIE", "Captain Ginea", new WorldPoint(1561, 3602, 0), "Building east of Shayzien combat ring", "1 soldier can deal with 6 lizardmen. How many soldiers do we need for an army of 678 lizardmen?", "113"), + new AnagramClue("OUR OWN NEEDS", "Nurse Wooned", new WorldPoint(1511, 3619, 0), "Shayzien Infirmary", "How many wounded soldiers are in the camp?", "16"), + new AnagramClue("PACINNG A TAIE", "Captain Ginea", new WorldPoint(1504, 3632, 0), "Tent east of Shayzien Encampment war tent", "1 soldier can deal with 6 lizardmen. How many soldiers do we need for an army of 678 lizardmen?", "113"), new AnagramClue("PEAK REFLEX", "Flax keeper", new WorldPoint(2744, 3444, 0), "Flax field south of Seers Village", "If I have 1014 flax, and I spin a third of them into bowstring, how many flax do I have left?", "676"), new AnagramClue("PEATY PERT", "Party Pete", new WorldPoint(3047, 3376, 0), "Falador Party Room"), new AnagramClue("PROFS LOSE WRONG PIE", "Professor Onglewip", new WorldPoint(3113, 3162, 0), "Ground floor of Wizards Tower"), @@ -149,7 +149,7 @@ public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueSc new AnagramClue("TEN WIGS ON", "Wingstone", new WorldPoint(3389, 2877, 0), "Between Nardah & Agility Pyramid"), new AnagramClue("THEM CAL CAME", "Cam the Camel", new WorldPoint(3300, 3231, 0), "Just outside of the Duel Arena"), new AnagramClue("THICKNO", "Hickton", new WorldPoint(2822, 3442, 0), "Catherby fletching shop", "How many ranges are there in Catherby?", "2"), - new AnagramClue("TWENTY CURE IRON", "New recruit Tony", new WorldPoint(1498, 3544, 0), "Shayzien Graveyard"), + new AnagramClue("TWENTY CURE IRON", "New recruit Tony", new WorldPoint(1503, 3553, 0), "Shayzien Graveyard"), new AnagramClue("UNLEASH NIGHT MIST", "Sigli the Huntsman", new WorldPoint(2660, 3654, 0), "Rellekka", "What is the combined slayer requirement of every monster in the slayer cave?", "302"), new AnagramClue("VESTE", "Steve", new WorldPoint(2432, 3423, 0), "Upstairs Wyvern Area or Stronghold Slayer Cave", "How many farming patches are there in Gnome stronghold?", "2"), new AnagramClue("VEIL VEDA", "Evil Dave", new WorldPoint(3079, 9892, 0), "Doris' basement, Edgeville", "What is 333 multiplied by 2?", "666"), @@ -167,7 +167,8 @@ public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueSc new AnagramClue("TAUNT ROOF", "Fortunato", new WorldPoint(3080, 3250, 0), "Draynor Village Market"), new AnagramClue("HICK JET", "Jethick", new WorldPoint(2541, 3305, 0), "West Ardougne", "How many graves are there in the city graveyard?", "38"), new AnagramClue("RUE GO", "Goreu", new WorldPoint(2335, 3162, 0), "Lletya"), - new AnagramClue("BRUCIE CATNAP", "Captain Bruce", new WorldPoint(1520, 3558, 0), "Graveyard of Heroes") + new AnagramClue("BRUCIE CATNAP", "Captain Bruce", new WorldPoint(1520, 3558, 0), "Graveyard of Heroes"), + new AnagramClue("UESNKRL NRIEDDO", "Drunken soldier", new WorldPoint(1551, 3565, 0), "Shayzien pub", "If 13 Shayzien Soldiers kill 46 Lizardmen each in a day, how many Lizardmen have they killed in total in a single day?", "598") ); private final String text; 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 230e18106f..5f4dfdcc16 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 @@ -111,7 +111,7 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(2363, 3531, 0), new CoordinateClueInfo("North-east of Eagles' Peak (AKQ).")) .put(new WorldPoint(2919, 3535, 0), new CoordinateClueInfo("East of Burthorpe pub.")) .put(new WorldPoint(3548, 3560, 0), new CoordinateClueInfo("Inside Fenkenstrain's Castle.")) - .put(new WorldPoint(1476, 3566, 0), new CoordinateClueInfo("Graveyard of Heroes west of Shayzien (DJR).")) + .put(new WorldPoint(1476, 3566, 0), new CoordinateClueInfo("Graveyard of Heroes in west Shayzien.")) .put(new WorldPoint(2735, 3638, 0), new CoordinateClueInfo("East of Rellekka, north-west of Golden Apple Tree (AJR).")) .put(new WorldPoint(2681, 3653, 0), new CoordinateClueInfo("Rellekka, in the garden of the south-east house.")) .put(new WorldPoint(2537, 3881, 0), new CoordinateClueInfo("Miscellania (CIP).")) 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 5f9a99deee..2fd4418fe9 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 @@ -324,7 +324,12 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc new CrypticClue("Observing someone in a swamp, under the telescope lies treasure.", new WorldPoint(2221, 3091, 0), "Dig next to the telescope on Broken Handz's island in the poison wastes. (Accessible only through fairy ring DLR)"), new CrypticClue("A general who sets a 'shining' example.", "General Hining", new WorldPoint(2186, 3148, 0), "Talk to General Hining in Tyras Camp."), new CrypticClue("Has no one told you it is rude to ask a lady her age?", "Mawrth", new WorldPoint(2333, 3165, 0), "Talk to Mawrth in Lletya."), - new CrypticClue("Elvish onions.", new WorldPoint(3303, 6092, 0), "Dig in the onion patch east of the Prifddinas allotments.") + new CrypticClue("Elvish onions.", new WorldPoint(3303, 6092, 0), "Dig in the onion patch east of the Prifddinas allotments."), + new CrypticClue("Dig by the Giant's Den entrance, looking out over Lake Molch.", new WorldPoint(1418, 3591, 0), "South-east of Lake Molch in Zeah, outside the cave entrance."), + new CrypticClue("Search the crates in the fruit store just east of the Hosidius town centre.", CRATES_27533, new WorldPoint(1798, 3612, 0), "Search the crates in the back room of the Hosidius fruit store."), + new CrypticClue("A graceful man of many colours, his crates must be full of many delights.", "Hill Giant", CRATE_42067, new WorldPoint(1506, 3591, 2), "Kill any Hill Giant for a medium key. Then search the crate on the top floor of Osten's clothing shop in Shayzien."), + new CrypticClue("Search the basket of apples in an orchard, south of the unknown grave surrounded by white roses.", APPLE_BASKET, new WorldPoint(1718, 3626, 0), "Search the middle apple basket in the apple orchard north of Hosidius."), + new CrypticClue("Dig in the lair of red wings, within the temple of the Sun and Moon.", new WorldPoint(1820, 9935, 0), "Forthos Dungeon. In the center of the red dragons.") ); private final String text; 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 835a86718d..7d1d7fc6a0 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 @@ -83,7 +83,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu new EmoteClue("Beckon by a collection of crystalline maple trees. Beware of double agents! Equip Bryophyta's staff and a nature tiara.", "North of Prifddinas", CRYSTALLINE_MAPLE_TREES, new WorldPoint(2211, 3427, 0), DOUBLE_AGENT_141, BECKON, range("Bryophyta's staff", BRYOPHYTAS_STAFF_UNCHARGED, BRYOPHYTAS_STAFF), item(NATURE_TIARA)), new EmoteClue("Beckon in the Digsite, near the eastern winch. Bow before you talk to me. Equip a green gnome hat, snakeskin boots and an iron pickaxe.", "Digsite", DIGSITE, new WorldPoint(3370, 3425, 0), BECKON, BOW, item(GREEN_HAT), item(SNAKESKIN_BOOTS), item(IRON_PICKAXE)), new EmoteClue("Beckon in Tai Bwo Wannai. Clap before you talk to me. Equip green dragonhide chaps, a ring of dueling and a mithril medium helmet.", "Tai Bwo Wannai", SOUTH_OF_THE_SHRINE_IN_TAI_BWO_WANNAI_VILLAGE, new WorldPoint(2803, 3073, 0), BECKON, CLAP, item(GREEN_DHIDE_CHAPS), any("Ring of dueling", item(RING_OF_DUELING1), item(RING_OF_DUELING2), item(RING_OF_DUELING3), item(RING_OF_DUELING4), item(RING_OF_DUELING5), item(RING_OF_DUELING6), item(RING_OF_DUELING7), item(RING_OF_DUELING8)), item(MITHRIL_MED_HELM)), - new EmoteClue("Beckon in the combat ring of Shayzien. Show your anger before you talk to me. Equip an adamant platebody, adamant full helm and adamant platelegs.", "Shayzien combat ring", WEST_OF_THE_SHAYZIEN_COMBAT_RING, new WorldPoint(1545, 3594, 0), BECKON, ANGRY, item(ADAMANT_PLATELEGS), item(ADAMANT_PLATEBODY), item(ADAMANT_FULL_HELM)), + new EmoteClue("Beckon in the Shayzien Combat Ring. Show your anger before you talk to me. Equip an adamant platebody, adamant full helm and adamant platelegs.", "Shayzien Combat Ring", WEST_OF_THE_SHAYZIEN_COMBAT_RING, new WorldPoint(1543, 3623, 0), BECKON, ANGRY, item(ADAMANT_PLATELEGS), item(ADAMANT_PLATEBODY), item(ADAMANT_FULL_HELM)), new EmoteClue("Bow near Lord Iorwerth. Beware of double agents! Equip a charged crystal bow.", "Lord Iorwerth's camp", TENT_IN_LORD_IORWERTHS_ENCAMPMENT, new WorldPoint(2205, 3252, 0), DOUBLE_AGENT_141, BOW, any("Crystal Bow", item(CRYSTAL_BOW), item(CRYSTAL_BOW_24123))), new EmoteClue("Bow in the Iorwerth Camp. Beware of double agents! Equip a charged crystal bow.", "Lord Iorwerth's camp", TENT_IN_LORD_IORWERTHS_ENCAMPMENT, new WorldPoint(2205, 3252, 0), DOUBLE_AGENT_141, BOW, any("Crystal Bow", item(CRYSTAL_BOW), item(CRYSTAL_BOW_24123))), new EmoteClue("Bow outside the entrance to the Legends' Guild. Equip iron platelegs, an emerald amulet and an oak longbow.", "Legend's Guild", OUTSIDE_THE_LEGENDS_GUILD_GATES, new WorldPoint(2729, 3349, 0), BOW, item(IRON_PLATELEGS), item(OAK_LONGBOW), item(EMERALD_AMULET)), @@ -151,7 +151,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu new EmoteClue("Shrug in the mine near Rimmington. Equip a gold necklace, a gold ring and a bronze spear.", "Rimmington mine", RIMMINGTON_MINE, new WorldPoint(2976, 3238, 0), SHRUG, item(GOLD_NECKLACE), item(GOLD_RING), item(BRONZE_SPEAR)), new EmoteClue("Shrug in Catherby bank. Yawn before you talk to me. Equip a maple longbow, green d'hide chaps and an iron med helm.", "Catherby", OUTSIDE_CATHERBY_BANK, new WorldPoint(2808, 3440, 0), SHRUG, YAWN, item(MAPLE_LONGBOW), item(GREEN_DHIDE_CHAPS), item(IRON_MED_HELM)), new EmoteClue("Shrug in the Zamorak temple found in the Eastern Wilderness. Beware of double agents! Equip rune platelegs, an iron platebody and blue dragonhide vambraces.", "Chaos temple", CHAOS_TEMPLE_IN_THE_SOUTHEASTERN_WILDERNESS, new WorldPoint(3239, 3611, 0), DOUBLE_AGENT_65, SHRUG, item(RUNE_PLATELEGS), item(IRON_PLATEBODY), item(BLUE_DHIDE_VAMBRACES)), - new EmoteClue("Shrug in the Shayzien command tent. Equip a blue mystic robe bottom, a rune kiteshield and any bob shirt.", "Shayzien command tent", SHAYZIEN_WAR_TENT, new WorldPoint(1555, 3537, 0), SHRUG, item(MYSTIC_ROBE_BOTTOM), item(RUNE_KITESHIELD), range("Any bob shirt", BOBS_RED_SHIRT, BOBS_PURPLE_SHIRT)), + new EmoteClue("Shrug in the Shayzien war tent. Equip a blue mystic robe bottom, a rune kiteshield and any bob shirt.", "Shayzien war tent", SHAYZIEN_WAR_TENT, new WorldPoint(1487, 3635, 0), SHRUG, item(MYSTIC_ROBE_BOTTOM), item(RUNE_KITESHIELD), range("Any bob shirt", BOBS_RED_SHIRT, BOBS_PURPLE_SHIRT)), new EmoteClue("Slap your head in the centre of the Kourend catacombs. Beware of double agents! Equip the arclight and the amulet of the damned.", "Kourend catacombs", CENTRE_OF_THE_CATACOMBS_OF_KOUREND, new WorldPoint(1663, 10045, 0), DOUBLE_AGENT_141, SLAP_HEAD, item(ARCLIGHT), any("Amulet of the damned", item(AMULET_OF_THE_DAMNED), item(AMULET_OF_THE_DAMNED_FULL))), new EmoteClue("Spin at the crossroads north of Rimmington. Equip a green gnome hat, cream gnome top and leather chaps.", "Rimmington", ROAD_JUNCTION_NORTH_OF_RIMMINGTON, new WorldPoint(2981, 3276, 0), SPIN, item(GREEN_HAT), item(CREAM_ROBE_TOP), item(LEATHER_CHAPS)), new EmoteClue("Spin in Draynor Manor by the fountain. Equip an iron platebody, studded leather chaps and a bronze full helmet.", "Draynor Manor", DRAYNOR_MANOR_BY_THE_FOUNTAIN, new WorldPoint(3088, 3336, 0), SPIN, item(IRON_PLATEBODY), item(STUDDED_CHAPS), item(BRONZE_FULL_HELM)), @@ -172,14 +172,15 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu new EmoteClue("Yawn in the Castle Wars lobby. Shrug before you talk to me. Equip a ruby amulet, a mithril scimitar and a Wilderness cape.", "Castle Wars", CASTLE_WARS_BANK, new WorldPoint(2440, 3092, 0), YAWN, SHRUG, item(RUBY_AMULET), item(MITHRIL_SCIMITAR), range("Any team cape", TEAM1_CAPE, TEAM50_CAPE)), new EmoteClue("Yawn in the rogues' general store. Beware of double agents! Equip an adamant square shield, blue dragon vambraces and a rune pickaxe.", "Rogues general store", NOTERAZZOS_SHOP_IN_THE_WILDERNESS, new WorldPoint(3026, 3701, 0), DOUBLE_AGENT_65, YAWN, item(ADAMANT_SQ_SHIELD), item(BLUE_DHIDE_VAMBRACES), item(RUNE_PICKAXE)), new EmoteClue("Yawn at the top of Trollheim. Equip a lava battlestaff, black dragonhide vambraces and a mind shield.", "Trollheim Mountain", ON_TOP_OF_TROLLHEIM_MOUNTAIN, new WorldPoint(2887, 3676, 0), YAWN, any("Lava battlestaff", item(LAVA_BATTLESTAFF), item(LAVA_BATTLESTAFF_21198)), item(BLACK_DHIDE_VAMBRACES), item(MIND_SHIELD)), - new EmoteClue("Yawn in the centre of Arceuus library. Nod your head before you talk to me. Equip blue dragonhide vambraces, adamant boots and an adamant dagger.", "Arceuus library", ENTRANCE_OF_THE_ARCEUUS_LIBRARY, new WorldPoint(1632, 3807, 0), YAWN, YES, item(BLUE_DHIDE_VAMBRACES), item(ADAMANT_BOOTS), item(ADAMANT_DAGGER)), + new EmoteClue("Yawn in the centre of the Arceuus Library. Nod your head before you talk to me. Equip blue dragonhide vambraces, adamant boots and an adamant dagger.", "Arceuus library", ENTRANCE_OF_THE_ARCEUUS_LIBRARY, new WorldPoint(1632, 3807, 0), YAWN, YES, item(BLUE_DHIDE_VAMBRACES), item(ADAMANT_BOOTS), item(ADAMANT_DAGGER)), new EmoteClue("Swing a bullroarer at the top of the Watchtower. Beware of double agents! Equip a dragon plateskirt, climbing boots and a dragon chainbody.", "Yanille Watchtower", TOP_FLOOR_OF_THE_YANILLE_WATCHTOWER, new WorldPoint(2930, 4717, 2), DOUBLE_AGENT_141, BULL_ROARER, any("Dragon plateskirt", item(DRAGON_PLATESKIRT), item(DRAGON_PLATESKIRT_G)), item(CLIMBING_BOOTS), any("Dragon chainbody", item(DRAGON_CHAINBODY_3140), item(DRAGON_CHAINBODY_G)), item(ItemID.BULL_ROARER)), new EmoteClue("Blow a raspberry at Gypsy Aris in her tent. Equip a gold ring and a gold necklace.", "Varrock", GYPSY_TENT_ENTRANCE, new WorldPoint(3203, 3424, 0), RASPBERRY, item(GOLD_RING), item(GOLD_NECKLACE)), new EmoteClue("Bow to Brugsen Bursen at the Grand Exchange.", "Grand Exchange", null, new WorldPoint(3164, 3477, 0), BOW), new EmoteClue("Cheer at Iffie Nitter. Equip a chef hat and a red cape.", "Varrock", FINE_CLOTHES_ENTRANCE, new WorldPoint(3205, 3416, 0), CHEER, item(CHEFS_HAT), item(RED_CAPE)), new EmoteClue("Clap at Bob's Brilliant Axes. Equip a bronze axe and leather boots.", "Lumbridge", BOB_AXES_ENTRANCE, new WorldPoint(3231, 3203, 0), CLAP, item(BRONZE_AXE), item(LEATHER_BOOTS)), new EmoteClue("Panic at Al Kharid mine.", "Al Kharid mine", null, new WorldPoint(3300, 3314, 0), PANIC), - new EmoteClue("Spin at Flynn's Mace Shop.", "Falador", null, new WorldPoint(2950, 3387, 0), SPIN)); + new EmoteClue("Spin at Flynn's Mace Shop.", "Falador", null, new WorldPoint(2950, 3387, 0), SPIN), + new EmoteClue("Salute by the Charcoal Burners. Equip a Farmer's strawhat, Shayzien platebody (5) and Pyromancer robes.", "Charcoal Burners", CHARCOAL_BURNERS, new WorldPoint(1714, 3467, 0), SALUTE, any("Farmer's strawhat", item(FARMERS_STRAWHAT), item(FARMERS_STRAWHAT_13647)), item(SHAYZIEN_PLATEBODY_5), item(PYROMANCER_ROBE))); private static final String UNICODE_CHECK_MARK = "\u2713"; private static final String UNICODE_BALLOT_X = "\u2717"; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/emote/STASHUnit.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/emote/STASHUnit.java index 5eca73a7c0..a3a9a9945a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/emote/STASHUnit.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/emote/STASHUnit.java @@ -79,7 +79,7 @@ public enum STASHUnit OUTSIDE_HARRYS_FISHING_SHOP_IN_CATHERBY(NullObjectID.NULL_29003, new WorldPoint(2837, 3436, 0)), TZHAAR_WEAPONS_STORE(NullObjectID.NULL_29004, new WorldPoint(2479, 5146, 0)), NORTH_OF_EVIL_DAVES_HOUSE_IN_EDGEVILLE(NullObjectID.NULL_29005, new WorldPoint(3077, 3503, 0)), - WEST_OF_THE_SHAYZIEN_COMBAT_RING(NullObjectID.NULL_29006, new WorldPoint(1534, 3591, 0)), + WEST_OF_THE_SHAYZIEN_COMBAT_RING(NullObjectID.NULL_29006, new WorldPoint(1541, 3631, 0)), ENTRANCE_OF_THE_ARCEUUS_LIBRARY(NullObjectID.NULL_29007, new WorldPoint(1642, 3809, 0)), OUTSIDE_DRAYNOR_VILLAGE_JAIL(NullObjectID.NULL_29008, new WorldPoint(3130, 3250, 0)), CHAOS_TEMPLE_IN_THE_SOUTHEASTERN_WILDERNESS(NullObjectID.NULL_29009, new WorldPoint(3245, 3609, 0)), @@ -109,7 +109,7 @@ public enum STASHUnit FOUNTAIN_OF_HEROES(NullObjectID.NULL_29033, new WorldPoint(2916, 9891, 0)), ENTRANCE_OF_THE_CAVERN_UNDER_THE_WHIRLPOOL(NullObjectID.NULL_29034, new WorldPoint(1764, 5367, 1), new WorldPoint(1636, 5367, 1)), HALFWAY_DOWN_TROLLWEISS_MOUNTAIN(NullObjectID.NULL_29035, new WorldPoint(2782, 3787, 0)), - SHAYZIEN_WAR_TENT(NullObjectID.NULL_29036, new WorldPoint(1550, 3541, 0)), + SHAYZIEN_WAR_TENT(NullObjectID.NULL_29036, new WorldPoint(1488, 3637, 0)), OUTSIDE_THE_LEGENDS_GUILD_DOOR(NullObjectID.NULL_29037, new WorldPoint(2727, 3371, 0)), NEAR_THE_GEM_STALL_IN_ARDOUGNE_MARKET(NullObjectID.NULL_29038, new WorldPoint(2672, 3302, 0)), OUTSIDE_THE_BAR_BY_THE_FIGHT_ARENA(NullObjectID.NULL_29039, new WorldPoint(2571, 3150, 0)), @@ -138,7 +138,9 @@ public enum STASHUnit GYPSY_TENT_ENTRANCE(NullObjectID.NULL_34736, new WorldPoint(3206, 3422, 0)), FINE_CLOTHES_ENTRANCE(NullObjectID.NULL_34737, new WorldPoint(3209, 3416, 0)), BOB_AXES_ENTRANCE(NullObjectID.NULL_34738, new WorldPoint(3233, 3200, 0)), - CRYSTALLINE_MAPLE_TREES(NullObjectID.NULL_34953, new WorldPoint(2213, 3427, 0)); + CRYSTALLINE_MAPLE_TREES(NullObjectID.NULL_34953, new WorldPoint(2213, 3427, 0)), + CHARCOAL_BURNERS(NullObjectID.NULL_41758, new WorldPoint(1712, 3469, 0)), + ; private final int objectId; private final WorldPoint[] worldPoints; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java index 5b338907a0..902ae3c6e9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/hotcold/HotColdLocation.java @@ -185,7 +185,7 @@ public enum HotColdLocation ZEAH_PISCARILUS_MINE(MASTER, new WorldPoint(1768, 3705, 0), ZEAH, "South of the Piscarilius mine.", ANCIENT_WIZARDS), ZEAH_GOLDEN_FIELD_TAVERN(MASTER, new WorldPoint(1718, 3643, 0), ZEAH, "South of the gravestone in Kingstown.", BRASSICAN_MAGE), ZEAH_MESS_HALL(MASTER, new WorldPoint(1656, 3621, 0), ZEAH, "East of the Mess hall.", ANCIENT_WIZARDS), - ZEAH_WATSONS_HOUSE(MASTER, new WorldPoint(1653, 3573, 0), ZEAH, "East of Watson's house.", ANCIENT_WIZARDS), + ZEAH_WATSONS_HOUSE(MASTER, new WorldPoint(1653, 3573, 0), ZEAH, "East of Watson's house.", BRASSICAN_MAGE), ZEAH_VANNAHS_FARM_STORE(MASTER, new WorldPoint(1807, 3523, 0), ZEAH, "North of Tithe Farm, next to the pond.", BRASSICAN_MAGE), ZEAH_FARMING_GUILD_W(MASTER, new WorldPoint(1208, 3736, 0), ZEAH, "West of the Farming Guild.", BRASSICAN_MAGE), ZEAH_DAIRY_COW(MASTER, new WorldPoint(1324, 3722, 0), ZEAH, "North-east of the Kebos Lowlands, east of the dairy cow.", BRASSICAN_MAGE), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/dialogue/CrowdsourcingDialogue.java b/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/dialogue/CrowdsourcingDialogue.java index 9f0a0e72ad..8afab35b83 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/dialogue/CrowdsourcingDialogue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/dialogue/CrowdsourcingDialogue.java @@ -29,7 +29,6 @@ import javax.inject.Inject; import net.runelite.api.Client; import net.runelite.api.events.GameTick; import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.crowdsourcing.CrowdsourcingManager; @@ -44,6 +43,7 @@ public class CrowdsourcingDialogue @Inject private CrowdsourcingManager manager; + private boolean inDialogue = false; private String lastNpcDialogueText = null; private String lastPlayerDialogueText = null; private Widget[] dialogueOptions; @@ -58,6 +58,23 @@ public class CrowdsourcingDialogue public void onGameTick(GameTick tick) { Widget npcDialogueTextWidget = client.getWidget(WidgetInfo.DIALOG_NPC_TEXT); + Widget playerDialogueTextWidget = client.getWidget(WidgetInfo.DIALOG_PLAYER_TEXT); + Widget playerDialogueOptionsWidget = client.getWidget(WidgetInfo.DIALOG_OPTION_OPTIONS); + + // If we were not in a conversation, but now one of these widgets is not null, we have started a conversation. + // Else if we were in a conversation, but now there is no widget, we have left the conversation. + if (!inDialogue && (npcDialogueTextWidget != null || playerDialogueTextWidget != null || playerDialogueOptionsWidget != null)) + { + inDialogue = true; + manager.storeEvent(new StartEndData(true)); + } + else if (inDialogue && npcDialogueTextWidget == null && playerDialogueTextWidget == null + && playerDialogueOptionsWidget == null) + { + inDialogue = false; + manager.storeEvent(new StartEndData(false)); + } + if (npcDialogueTextWidget != null && !npcDialogueTextWidget.getText().equals(lastNpcDialogueText)) { lastNpcDialogueText = npcDialogueTextWidget.getText(); @@ -66,7 +83,6 @@ public class CrowdsourcingDialogue manager.storeEvent(data); } - Widget playerDialogueTextWidget = client.getWidget(WidgetID.DIALOG_PLAYER_GROUP_ID, 4); if (playerDialogueTextWidget != null && !playerDialogueTextWidget.getText().equals(lastPlayerDialogueText)) { lastPlayerDialogueText = playerDialogueTextWidget.getText(); @@ -74,7 +90,6 @@ public class CrowdsourcingDialogue manager.storeEvent(data); } - Widget playerDialogueOptionsWidget = client.getWidget(WidgetID.DIALOG_OPTION_GROUP_ID, 1); if (playerDialogueOptionsWidget != null && playerDialogueOptionsWidget.getChildren() != dialogueOptions) { dialogueOptions = playerDialogueOptionsWidget.getChildren(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/dialogue/StartEndData.java b/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/dialogue/StartEndData.java new file mode 100644 index 0000000000..6ac6a9580d --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/dialogue/StartEndData.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021, Weird Gloop + * 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.crowdsourcing.dialogue; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class StartEndData +{ + private final boolean isStart; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WorldMapRegionOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WorldMapRegionOverlay.java index 8bfbf54398..0ae5cbafb6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WorldMapRegionOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WorldMapRegionOverlay.java @@ -79,7 +79,7 @@ class WorldMapRegionOverlay extends Overlay { RenderOverview ro = client.getRenderOverview(); Widget map = client.getWidget(WidgetInfo.WORLD_MAP_VIEW); - Float pixelsPerTile = ro.getWorldMapZoom(); + float pixelsPerTile = ro.getWorldMapZoom(); if (map == null) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java index b9039cee6d..0fc41574cb 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordState.java @@ -32,7 +32,6 @@ import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; import javax.inject.Inject; import javax.inject.Named; @@ -250,27 +249,16 @@ class DiscordState final Duration actionTimeout = Duration.ofMinutes(config.actionTimeout()); final Instant now = Instant.now(); - final AtomicBoolean updatedAny = new AtomicBoolean(); final boolean removedAny = events.removeAll(events.stream() + // Only include clearable events + .filter(event -> event.getType().isShouldBeCleared()) // Find only events that should time out .filter(event -> event.getType().isShouldTimeout() && now.isAfter(event.getUpdated().plus(actionTimeout))) - // Reset start times on timed events that should restart - .peek(event -> - { - if (event.getType().isShouldRestart()) - { - event.setStart(null); - updatedAny.set(true); - } - }) - // Now filter out events that should restart as we do not want to remove them - .filter(event -> !event.getType().isShouldRestart()) - .filter(event -> event.getType().isShouldBeCleared()) .collect(Collectors.toList()) ); - if (removedAny || updatedAny.get()) + if (removedAny) { updatePresenceWithLatestEvent(); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java index 6541d1d4c9..ca433573f6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java @@ -43,6 +43,7 @@ public enum LoginScreenOverride MONKEY_MADNESS_2("mm2.jpg"), PRIFDDINAS("prifddinas.jpg"), THEATRE_OF_BLOOD("tob.jpg"), + A_KINGDOM_DIVIDED("akd.jpg"), CUSTOM; @Getter diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java index 1604c1575e..05d3ad751e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java @@ -67,6 +67,7 @@ import net.runelite.api.InventoryID; import net.runelite.api.ItemComposition; import net.runelite.api.ItemContainer; import net.runelite.api.ItemID; +import net.runelite.api.MenuAction; import net.runelite.api.MessageNode; import net.runelite.api.NPC; import net.runelite.api.ObjectID; @@ -817,52 +818,70 @@ public class LootTrackerPlugin extends Plugin { // There are some pickpocket targets who show up in the chat box with a different name (e.g. H.A.M. members -> man/woman) // We use the value selected from the right-click menu as a fallback for the event lookup in those cases. - if (event.getMenuOption().equals("Pickpocket")) + if (isNPCOp(event.getMenuAction()) && event.getMenuOption().equals("Pickpocket")) { lastPickpocketTarget = Text.removeTags(event.getMenuTarget()); } - - if (event.getMenuOption().equals("Take") && event.getId() == ItemID.SEED_PACK) - { - setEvent(LootRecordType.EVENT, SEEDPACK_EVENT); - takeInventorySnapshot(); - } - - if (event.getMenuOption().equals("Open") && SHADE_CHEST_OBJECTS.containsKey(event.getId())) + else if (isObjectOp(event.getMenuAction()) && event.getMenuOption().equals("Open") && SHADE_CHEST_OBJECTS.containsKey(event.getId())) { setEvent(LootRecordType.EVENT, SHADE_CHEST_OBJECTS.get(event.getId())); takeInventorySnapshot(); } - - if (event.getMenuOption().equals("Search") && BIRDNEST_IDS.contains(event.getId())) + else if (isItemOp(event.getMenuAction())) { - setEvent(LootRecordType.EVENT, BIRDNEST_EVENT, event.getId()); - takeInventorySnapshot(); + if (event.getMenuOption().equals("Take") && event.getId() == ItemID.SEED_PACK) + { + setEvent(LootRecordType.EVENT, SEEDPACK_EVENT); + takeInventorySnapshot(); + } + else if (event.getMenuOption().equals("Search") && BIRDNEST_IDS.contains(event.getId())) + { + setEvent(LootRecordType.EVENT, BIRDNEST_EVENT, event.getId()); + takeInventorySnapshot(); + } + else if (event.getMenuOption().equals("Open")) + { + switch (event.getId()) + { + case ItemID.CASKET: + setEvent(LootRecordType.EVENT, CASKET_EVENT); + takeInventorySnapshot(); + break; + case ItemID.SUPPLY_CRATE: + case ItemID.EXTRA_SUPPLY_CRATE: + setEvent(LootRecordType.EVENT, WINTERTODT_SUPPLY_CRATE_EVENT); + takeInventorySnapshot(); + break; + case ItemID.SPOILS_OF_WAR: + setEvent(LootRecordType.EVENT, SPOILS_OF_WAR_EVENT); + takeInventorySnapshot(); + break; + case ItemID.CASKET_25590: + setEvent(LootRecordType.EVENT, TEMPOROSS_CASKET_EVENT); + takeInventorySnapshot(); + break; + } + } } + } - if (event.getMenuOption().equals("Open") && event.getId() == ItemID.CASKET) - { - setEvent(LootRecordType.EVENT, CASKET_EVENT); - takeInventorySnapshot(); - } + private static boolean isItemOp(MenuAction menuAction) + { + final int id = menuAction.getId(); + return id >= MenuAction.ITEM_FIRST_OPTION.getId() && id <= MenuAction.ITEM_FIFTH_OPTION.getId(); + } - if (event.getMenuOption().equals("Open") && (event.getId() == ItemID.SUPPLY_CRATE || event.getId() == ItemID.EXTRA_SUPPLY_CRATE)) - { - setEvent(LootRecordType.EVENT, WINTERTODT_SUPPLY_CRATE_EVENT); - takeInventorySnapshot(); - } + private static boolean isNPCOp(MenuAction menuAction) + { + final int id = menuAction.getId(); + return id >= MenuAction.NPC_FIRST_OPTION.getId() && id <= MenuAction.NPC_FIFTH_OPTION.getId(); + } - if (event.getMenuOption().equals("Open") && event.getId() == ItemID.SPOILS_OF_WAR) - { - setEvent(LootRecordType.EVENT, SPOILS_OF_WAR_EVENT); - takeInventorySnapshot(); - } - - if (event.getMenuOption().equals("Open") && event.getId() == ItemID.CASKET_25590) - { - setEvent(LootRecordType.EVENT, TEMPOROSS_CASKET_EVENT); - takeInventorySnapshot(); - } + private static boolean isObjectOp(MenuAction menuAction) + { + final int id = menuAction.getId(); + return (id >= MenuAction.GAME_OBJECT_FIRST_OPTION.getId() && id <= MenuAction.GAME_OBJECT_FOURTH_OPTION.getId()) + || id == MenuAction.GAME_OBJECT_FIFTH_OPTION.getId(); } @Schedule( 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 4c02ace6c4..6af10eb5b8 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 @@ -283,6 +283,7 @@ public class MenuEntrySwapperPlugin extends Plugin swap("enter", "the gauntlet", "enter-corrupted", config::swapGauntlet); swap("enter", "quick-enter", config::swapQuick); + swap("enter-crypt", "quick-enter", config::swapQuick); swap("ring", "quick-start", config::swapQuick); swap("pass", "quick-pass", config::swapQuick); swap("pass", "quick pass", config::swapQuick); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java index f892560501..1c2bfd5b86 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java @@ -45,6 +45,7 @@ class PartyWorldMapPoint extends WorldMapPoint this.member = member; this.setSnapToEdge(true); this.setJumpOnClick(true); + this.setName(member.getName()); this.setImagePoint(new Point( ARROW.getWidth() / 2, ARROW.getHeight())); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java index 2008152b56..9fa302e6d4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java @@ -76,7 +76,16 @@ enum GameTimer DIVINE_BATTLEMAGE(ItemID.DIVINE_BATTLEMAGE_POTION4, GameTimerImageType.ITEM, "Divine Battlemage", 5, ChronoUnit.MINUTES), ANTIPOISON(ItemID.ANTIPOISON4, GameTimerImageType.ITEM, "Antipoison", false), ANTIVENOM(ItemID.ANTIVENOM4, GameTimerImageType.ITEM, "Anti-venom", false), - TELEBLOCK(SpriteID.SPELL_TELE_BLOCK, GameTimerImageType.SPRITE, "Teleblock", true); + TELEBLOCK(SpriteID.SPELL_TELE_BLOCK, GameTimerImageType.SPRITE, "Teleblock", true), + SHADOW_VEIL(SpriteID.SPELL_SHADOW_VEIL, GameTimerImageType.SPRITE, "Shadow veil", true), + RESURRECT_THRALL(SpriteID.SPELL_RESURRECT_SUPERIOR_SKELETON, GameTimerImageType.SPRITE, "Resurrect thrall", false), + WARD_OF_ARCEUUS(SpriteID.SPELL_WARD_OF_ARCEUUS, GameTimerImageType.SPRITE, "Ward of Arceuus", true), + DEATH_CHARGE(SpriteID.SPELL_DEATH_CHARGE, GameTimerImageType.SPRITE, "Death charge", false), + SHADOW_VEIL_COOLDOWN(SpriteID.SPELL_SHADOW_VEIL_DISABLED, GameTimerImageType.SPRITE, "Shadow veil cooldown", 30, ChronoUnit.SECONDS), + RESURRECT_THRALL_COOLDOWN(SpriteID.SPELL_RESURRECT_SUPERIOR_SKELETON_DISABLED, GameTimerImageType.SPRITE, "Resurrect thrall cooldown", 12, GAME_TICKS), + WARD_OF_ARCEUUS_COOLDOWN(SpriteID.SPELL_WARD_OF_ARCEUUS_DISABLED, GameTimerImageType.SPRITE, "Ward of Arceuus cooldown", 30, ChronoUnit.SECONDS), + DEATH_CHARGE_COOLDOWN(SpriteID.SPELL_DEATH_CHARGE_DISABLED, GameTimerImageType.SPRITE, "Death charge cooldown", 60, ChronoUnit.SECONDS), + CORRUPTION_COOLDOWN(SpriteID.SPELL_GREATER_CORRUPTION_DISABLED, GameTimerImageType.SPRITE, "Corruption cooldown", 30, ChronoUnit.SECONDS); @Nullable private final Duration duration; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java index e26b8cf473..5874b62125 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersConfig.java @@ -263,4 +263,24 @@ public interface TimersConfig extends Config { return true; } + + @ConfigItem( + keyName = "showArceuus", + name = "Arceuus spells duration", + description = "Whether to show Arceuus spellbook spell timers" + ) + default boolean showArceuus() + { + return true; + } + + @ConfigItem( + keyName = "showArceuusCooldown", + name = "Arceuus spells cooldown", + description = "Whether to show cooldown timers for Arceuus spellbook spells" + ) + default boolean showArceuusCooldown() + { + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java index 3fafb14126..5ff2078eba 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java @@ -76,6 +76,7 @@ import net.runelite.client.plugins.PluginDescriptor; import static net.runelite.client.plugins.timers.GameIndicator.VENGEANCE_ACTIVE; import static net.runelite.client.plugins.timers.GameTimer.*; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; +import net.runelite.client.util.RSTimeUnit; import org.apache.commons.lang3.ArrayUtils; @PluginDescriptor( @@ -113,6 +114,14 @@ public class TimersPlugin extends Plugin private static final String KILLED_TELEBLOCK_OPPONENT_TEXT = "Your Tele Block has been removed because you killed "; private static final String PRAYER_ENHANCE_EXPIRED = "Your prayer enhance effect has worn off."; private static final String ENDURANCE_EFFECT_MESSAGE = "Your Ring of endurance doubles the duration of your stamina potion's effect."; + private static final String SHADOW_VEIL_MESSAGE = ">Your thieving abilities have been enhanced."; + private static final String DEATH_CHARGE_MESSAGE = ">Upon the death of your next foe, some of your special attack energy will be restored."; + private static final String DEATH_CHARGE_ACTIVATE_MESSAGE = ">Some of your special attack energy has been restored."; + private static final String RESURRECT_THRALL_MESSAGE_START = ">You resurrect a "; + private static final String RESURRECT_THRALL_MESSAGE_END = " thrall."; + private static final String RESURRECT_THRALL_DISAPPEAR_MESSAGE_START = ">Your "; + private static final String RESURRECT_THRALL_DISAPPEAR_MESSAGE_END = " thrall returns to the grave."; + private static final String WARD_OF_ARCEUUS_MESSAGE = ">Your defence against Arceuus magic has been strengthened."; private static final Pattern TELEBLOCK_PATTERN = Pattern.compile("A Tele Block spell has been cast on you(?: by .+)?\\. It will expire in (?\\d+) minutes?(?:, (?\\d+) seconds?)?\\."); private static final Pattern DIVINE_POTION_PATTERN = Pattern.compile("You drink some of your divine (.+) potion\\."); @@ -138,6 +147,7 @@ public class TimersPlugin extends Plugin private int lastIsVengeancedVarb; private int lastPoisonVarp; private int lastPvpVarb; + private int lastCorruptionVarb; private int nextPoisonTick; private WorldPoint lastPoint; private TeleportWidget lastTeleportClicked; @@ -202,6 +212,7 @@ public class TimersPlugin extends Plugin int isVengeancedVarb = client.getVar(Varbits.VENGEANCE_ACTIVE); int poisonVarp = client.getVar(VarPlayer.POISON); int pvpVarb = client.getVar(Varbits.PVP_SPEC_ORB); + int corruptionCooldownVarb = client.getVar(Varbits.CORRUPTION_COOLDOWN); if (lastRaidVarb != raidVarb) { @@ -224,6 +235,20 @@ public class TimersPlugin extends Plugin lastVengCooldownVarb = vengCooldownVarb; } + if (lastCorruptionVarb != corruptionCooldownVarb && config.showArceuusCooldown()) + { + if (corruptionCooldownVarb == 1) + { + createGameTimer(CORRUPTION_COOLDOWN); + } + else + { + removeGameTimer(CORRUPTION_COOLDOWN); + } + + lastCorruptionVarb = corruptionCooldownVarb; + } + if (lastIsVengeancedVarb != isVengeancedVarb && config.showVengeanceActive()) { if (isVengeancedVarb == 1) @@ -665,6 +690,55 @@ public class TimersPlugin extends Plugin } } + if (config.showArceuus()) + { + Duration duration = Duration.of(client.getRealSkillLevel(Skill.MAGIC), RSTimeUnit.GAME_TICKS); + if (message.endsWith(SHADOW_VEIL_MESSAGE)) + { + createGameTimer(SHADOW_VEIL, duration); + } + else if (message.endsWith(WARD_OF_ARCEUUS_MESSAGE)) + { + createGameTimer(WARD_OF_ARCEUUS, duration); + } + else if (message.endsWith(DEATH_CHARGE_MESSAGE)) + { + createGameTimer(DEATH_CHARGE, duration); + } + else if (message.endsWith(DEATH_CHARGE_ACTIVATE_MESSAGE)) + { + removeGameTimer(DEATH_CHARGE); + } + else if (message.contains(RESURRECT_THRALL_MESSAGE_START) && message.endsWith(RESURRECT_THRALL_MESSAGE_END)) + { + createGameTimer(RESURRECT_THRALL, duration); + } + else if (message.contains(RESURRECT_THRALL_DISAPPEAR_MESSAGE_START) && message.endsWith(RESURRECT_THRALL_DISAPPEAR_MESSAGE_END)) + { + removeGameTimer(RESURRECT_THRALL); + } + } + + if (config.showArceuusCooldown()) + { + if (message.endsWith(SHADOW_VEIL_MESSAGE)) + { + createGameTimer(SHADOW_VEIL_COOLDOWN); + } + else if (message.endsWith(DEATH_CHARGE_MESSAGE)) + { + createGameTimer(DEATH_CHARGE_COOLDOWN); + } + else if (message.endsWith(WARD_OF_ARCEUUS_MESSAGE)) + { + createGameTimer(WARD_OF_ARCEUUS_COOLDOWN); + } + else if (message.contains(RESURRECT_THRALL_MESSAGE_START) && message.endsWith(RESURRECT_THRALL_MESSAGE_END)) + { + createGameTimer(RESURRECT_THRALL_COOLDOWN); + } + } + if (message.equals(TZHAAR_DEFEATED_MESSAGE) || TZHAAR_COMPLETE_MESSAGE.matcher(message).matches()) { log.debug("Stopping tzhaar timer"); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/AgilityCourseLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/AgilityCourseLocation.java index ee0c61db88..83963daad3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/AgilityCourseLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/AgilityCourseLocation.java @@ -46,6 +46,7 @@ enum AgilityCourseLocation PRIFDDINAS_AGILITY_COURSE("Prifddinas Agility Course", new WorldPoint(3253, 6109, 0)), RELLEKKA_ROOFTOP_COURSE("Rellekka Rooftop Course", new WorldPoint(2624, 3677, 0)), SEERS_VILLAGE_ROOFTOP_COURSE("Seers' Village Rooftop Course", new WorldPoint(2728, 3488, 0)), + SHAYZIEN_COURSE("Shayzien Agility Course", new WorldPoint(1551, 3632, 0)), VARROCK_ROOFTOP_COURSE("Varrock Rooftop Course", new WorldPoint(3219, 3414, 0)), WEREWOLF_AGILITY_COURSE("Werewolf Agility Course", new WorldPoint(3542, 3463, 0)), WILDERNESS_AGILITY_COURSE("Wilderness Agility Course", new WorldPoint(2997, 3916, 0)); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/KourendTaskLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/KourendTaskLocation.java index 3b3890ffed..40b86e7abc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/KourendTaskLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/KourendTaskLocation.java @@ -62,11 +62,11 @@ enum KourendTaskLocation PISCARILIUS_SANDWORMS("Piscarilius Task (30%) - Hunting Sandworms", new WorldPoint(1841, 3789, 0)), PISCARILIUS_STEALING_ARTEFACTS("Piscarilius Task (75%) - Stealing Artefacts", new WorldPoint(1849, 3753, 0)), - SHAYZIEN_HEALING_SOLDIERS("Shayzien Task (0%) - Healing Wounded Soldiers", new WorldPoint(1572, 3581, 0)), + SHAYZIEN_HEALING_SOLDIERS("Shayzien Task (0%) - Healing Wounded Soldiers", new WorldPoint(1528, 3627, 0)), SHAYZIEN_LIZARDMEN_EAST("Shayzien Task (5%) - Killing Lizardmen", new WorldPoint(1570, 3668, 0)), SHAYZIEN_LIZARDMEN_WEST("Shayzien Task (5%) - Killing Lizardmen", new WorldPoint(1471, 3686, 0)), - SHAYZIEN_ORGANIZED_CRIME("Shayzien Task (40%) - Organized Crime", new WorldPoint(1565, 3605, 0)), - SHAYZIEN_COMBAT_RING("Shayzien Task (60%) - Combat Ring", new WorldPoint(1539, 3589, 0)), + SHAYZIEN_ORGANIZED_CRIME("Shayzien Task (40%) - Organized Crime", new WorldPoint(1504, 3635, 0)), + SHAYZIEN_COMBAT_RING("Shayzien Task (60%) - Combat Ring", new WorldPoint(1541, 3628, 0)), SHAYZIEN_LIZARDMAN_SHAMANS("Shayzien Unlock (100%) - Lizardman Shamans", new WorldPoint(1455, 3693, 0)); private final String tooltip; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java index 26cad92ce3..b683414722 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java @@ -187,9 +187,8 @@ enum MiningSiteLocation new Rock(1, Ore.COPPER), new Rock(1, Ore.TIN), new Rock(5, Ore.IRON), new Rock(2, Ore.SILVER), new Rock(1, Ore.COAL)), SALT_MINE(new WorldPoint(2835, 10334, 0), new Rock(7, Ore.BASALT), new Rock(15, Ore.TE_SALT), new Rock(12, Ore.EFH_SALT), new Rock(12, Ore.URT_SALT)), - SHAYZIEN_EAST(new WorldPoint(1597, 3653, 0), new Rock(3, Ore.CLAY), new Rock(1, Ore.MITHRIL), new Rock(1, Ore.ADAMANTITE)), - SHAYZIEN_WEST(new WorldPoint(1586, 3650, 0), - new Rock(4, Ore.IRON), new Rock(4, Ore.COAL), new Rock(1, Ore.MITHRIL), new Rock(1, Ore.ADAMANTITE)), + SHAYZIEN(new WorldPoint(1601, 3645, 0), + new Rock(3, Ore.CLAY), new Rock(3, Ore.IRON), new Rock(4, Ore.COAL), new Rock(2, Ore.MITHRIL), new Rock(2, Ore.ADAMANTITE)), SHILO_VILLAGE_SURFACE(new WorldPoint(2822, 3001, 0), new Rock(7, Ore.GEM_ROCK)), SILVAREA(new WorldPoint(3371, 3498, 0), new Rock(7, Ore.LIMESTONE)), SLEPE_UNDERGROUND(new WorldPoint(3888, 9749, 0), new Rock(6, Ore.IRON), new Rock(14, Ore.COAL)), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/QuestStartLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/QuestStartLocation.java index 69cefb040c..d3a8da0a61 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/QuestStartLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/QuestStartLocation.java @@ -116,6 +116,7 @@ enum QuestStartLocation ICTHLARINS_LITTLE_HELPER(Quest.ICTHLARINS_LITTLE_HELPER, new WorldPoint(3314, 2849, 0)), IN_SEARCH_OF_THE_MYREQUE(Quest.IN_SEARCH_OF_THE_MYREQUE, new WorldPoint(3502, 3477, 0)), JUNGLE_POTION(Quest.JUNGLE_POTION, new WorldPoint(2809, 3086, 0)), + A_KINGDOM_DIVIDED(Quest.A_KINGDOM_DIVIDED, new WorldPoint(1663, 3672, 0)), KINGS_RANSOM(Quest.KINGS_RANSOM, new WorldPoint(2741, 3554, 0)), LEGENDS_QUEST(Quest.LEGENDS_QUEST, new WorldPoint(2725, 3367, 0)), LOST_CITY(Quest.LOST_CITY, new WorldPoint(3149, 3205, 0)), @@ -130,6 +131,7 @@ enum QuestStartLocation MURDER_MYSTERY(Quest.MURDER_MYSTERY, new WorldPoint(2740, 3562, 0)), MY_ARMS_BIG_ADVENTURE(Quest.MY_ARMS_BIG_ADVENTURE, new WorldPoint(2908, 10088, 0)), NATURE_SPIRIT(Quest.NATURE_SPIRIT, new WorldPoint(3440, 9894, 0)), + A_NIGHT_AT_THE_THEATRE(Quest.A_NIGHT_AT_THE_THEATRE, new WorldPoint(3672, 3224, 0)), OBSERVATORY_QUEST(Quest.OBSERVATORY_QUEST, new WorldPoint(2438, 3185, 0)), OLAFS_QUEST(Quest.OLAFS_QUEST, new WorldPoint(2723, 3729, 0)), ONE_SMALL_FAVOUR(Quest.ONE_SMALL_FAVOUR, new WorldPoint(2834, 2985, 0)), @@ -153,7 +155,7 @@ enum QuestStartLocation SWAN_SONG(Quest.SWAN_SONG, new WorldPoint(2345, 3652, 0)), TAI_BWO_WANNAI_TRIO(Quest.TAI_BWO_WANNAI_TRIO, new WorldPoint(2779, 3087, 0)), A_TAIL_OF_TWO_CATS(Quest.A_TAIL_OF_TWO_CATS, new WorldPoint(2917, 3557, 0)), - TALE_OF_THE_RIGHTEOUS(Quest.TALE_OF_THE_RIGHTEOUS, new WorldPoint(1511, 3631, 0)), + TALE_OF_THE_RIGHTEOUS(Quest.TALE_OF_THE_RIGHTEOUS, new WorldPoint(1541, 3570, 0)), A_TASTE_OF_HOPE(Quest.A_TASTE_OF_HOPE, new WorldPoint(3668, 3216, 0)), TEARS_OF_GUTHIX(Quest.TEARS_OF_GUTHIX, new WorldPoint(3251, 9517, 0)), TEMPLE_OF_IKOV(Quest.TEMPLE_OF_IKOV, new WorldPoint(2574, 3320, 0)), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RareTreeLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RareTreeLocation.java index f04f756153..d8f9fb6806 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RareTreeLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RareTreeLocation.java @@ -138,6 +138,9 @@ enum RareTreeLocation new WorldPoint(1642, 3533, 0), new WorldPoint(1671, 3657, 0), new WorldPoint(1680, 3657, 0), + new WorldPoint(1572, 3618, 0), + new WorldPoint(1553, 3551, 0), + new WorldPoint(1496, 3582, 0), // Tirannwn new WorldPoint(2217, 3141, 0), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java index db2e51ed9c..7cc5c681af 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java @@ -134,7 +134,7 @@ enum TeleportLocationData TROLL_STRONGHOLD_STONY_BASALT_OUTSIDE(TeleportType.OTHER, "Stony Basalt", "Troll Stronghold", new WorldPoint(2844, 3693, 0), "stony_basalt_teleport_icon.png"), KHAREDSTS_MEMOIRS_HOSIDIUS(TeleportType.OTHER, "Kharedst's Memoirs", "Lunch by the Lancalliums (Hosidius)", new WorldPoint(1713, 3612, 0), "kharedsts_memoirs_teleport_icon.png"), KHAREDSTS_MEMOIRS_PISCARILIUS(TeleportType.OTHER, "Kharedst's Memoirs", "The Fisher's Flute (Piscarilius)", new WorldPoint(1802, 3748, 0), "kharedsts_memoirs_teleport_icon.png"), - KHAREDSTS_MEMOIRS_SHAYZIEN(TeleportType.OTHER, "Kharedst's Memoirs", "History and Hearsay (Shayzien)", new WorldPoint(1476, 3580, 0), "kharedsts_memoirs_teleport_icon.png"), + KHAREDSTS_MEMOIRS_SHAYZIEN(TeleportType.OTHER, "Kharedst's Memoirs", "History and Hearsay (Shayzien)", new WorldPoint(1478, 3576, 0), "kharedsts_memoirs_teleport_icon.png"), KHAREDSTS_MEMOIRS_LOVAKENGJ(TeleportType.OTHER, "Kharedst's Memoirs", "Jewelry of Jubilation (Lovakengj)", new WorldPoint(1544, 3762, 0), "kharedsts_memoirs_teleport_icon.png"), KHAREDSTS_MEMOIRS_ARCEUUS(TeleportType.OTHER, "Kharedst's Memoirs", "A Dark Disposition (Arceuus)", new WorldPoint(1680, 3746, 0), "kharedsts_memoirs_teleport_icon.png"), PHARAOHS_SCEPTRE_JALSAVRAH(TeleportType.OTHER, "Pharaoh's Sceptre", "Jalsavrah (Pyramid Plunder)", new WorldPoint(3288, 2795, 0), "pharaohs_sceptre_teleport_icon.png"), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java index dcac0c700f..1306c88b75 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java @@ -48,6 +48,7 @@ import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.worldmap.WorldMapPoint; import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager; import net.runelite.client.util.ImageUtil; +import net.runelite.client.util.Text; @PluginDescriptor( name = "World Map", @@ -327,6 +328,7 @@ public class WorldMapPlugin extends Plugin .image(BLANK_ICON) .target(l.getTarget()) .jumpOnClick(l.getTarget() != null) + .name(Text.titleCase(l)) .tooltip(l.getTooltip()) .build() ) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java index 47272f8f17..6119b0a5df 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java @@ -42,15 +42,10 @@ public class WidgetOverlay extends Overlay return Arrays.asList( new WidgetOverlay(client, WidgetInfo.RESIZABLE_MINIMAP_WIDGET, OverlayPosition.CANVAS_TOP_RIGHT), new WidgetOverlay(client, WidgetInfo.RESIZABLE_MINIMAP_STONES_WIDGET, OverlayPosition.CANVAS_TOP_RIGHT), - new WidgetOverlay(client, WidgetInfo.FOSSIL_ISLAND_OXYGENBAR, OverlayPosition.TOP_LEFT), new XpTrackerWidgetOverlay(client, WidgetInfo.EXPERIENCE_TRACKER_WIDGET, OverlayPosition.TOP_RIGHT), new WidgetOverlay(client, WidgetInfo.RAIDS_POINTS_INFOBOX, OverlayPosition.TOP_RIGHT), - new WidgetOverlay(client, WidgetInfo.TOB_PARTY_INTERFACE, OverlayPosition.TOP_LEFT), new WidgetOverlay(client, WidgetInfo.TOB_PARTY_STATS, OverlayPosition.TOP_LEFT), - new WidgetOverlay(client, WidgetInfo.GWD_KC, OverlayPosition.TOP_RIGHT), new WidgetOverlay(client, WidgetInfo.TITHE_FARM, OverlayPosition.TOP_RIGHT), - new WidgetOverlay(client, WidgetInfo.PEST_CONTROL_BOAT_INFO, OverlayPosition.TOP_LEFT), - new WidgetOverlay(client, WidgetInfo.PEST_CONTROL_INFO, OverlayPosition.TOP_LEFT), new WidgetOverlay(client, WidgetInfo.ZEAH_MESS_HALL_COOKING_DISPLAY, OverlayPosition.TOP_LEFT), new WidgetOverlay(client, WidgetInfo.PVP_KILLDEATH_COUNTER, OverlayPosition.TOP_LEFT), new WidgetOverlay(client, WidgetInfo.SKOTIZO_CONTAINER, OverlayPosition.TOP_LEFT), @@ -60,10 +55,7 @@ public class WidgetOverlay extends Overlay new WidgetOverlay(client, WidgetInfo.LMS_KDA, OverlayPosition.TOP_RIGHT), new WidgetOverlay(client, WidgetInfo.GAUNTLET_TIMER_CONTAINER, OverlayPosition.TOP_LEFT), new WidgetOverlay(client, WidgetInfo.HALLOWED_SEPULCHRE_TIMER_CONTAINER, OverlayPosition.TOP_LEFT), - new WidgetOverlay(client, WidgetInfo.HEALTH_OVERLAY_BAR, OverlayPosition.TOP_CENTER), new WidgetOverlay(client, WidgetInfo.NIGHTMARE_PILLAR_HEALTH, OverlayPosition.TOP_LEFT), - new WidgetOverlay(client, WidgetInfo.VOLCANIC_MINE_VENTS_INFOBOX_GROUP, OverlayPosition.BOTTOM_RIGHT), - new WidgetOverlay(client, WidgetInfo.VOLCANIC_MINE_STABILITY_INFOBOX_GROUP, OverlayPosition.BOTTOM_LEFT), new WidgetOverlay(client, WidgetInfo.MULTICOMBAT_FIXED, OverlayPosition.BOTTOM_RIGHT), new WidgetOverlay(client, WidgetInfo.MULTICOMBAT_RESIZEABLE_MODERN, OverlayPosition.CANVAS_TOP_RIGHT), new WidgetOverlay(client, WidgetInfo.MULTICOMBAT_RESIZEABLE_CLASSIC, OverlayPosition.CANVAS_TOP_RIGHT), diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java index d2e13ccad3..0c9a52b7e5 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java @@ -25,33 +25,43 @@ package net.runelite.client.ui.overlay.worldmap; import com.google.common.base.Splitter; +import com.google.common.base.Strings; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.geom.Area; import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import net.runelite.api.Client; +import net.runelite.api.MenuAction; +import net.runelite.api.MenuEntry; import net.runelite.api.Point; import net.runelite.api.RenderOverview; import net.runelite.api.coords.WorldPoint; +import net.runelite.api.events.MenuOptionClicked; +import net.runelite.api.widgets.JavaScriptCallback; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; -import net.runelite.client.input.MouseManager; +import net.runelite.client.eventbus.Subscribe; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.JagexColors; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.util.ColorUtil; @Singleton public class WorldMapOverlay extends Overlay { + private static final String FOCUS_ON = "Focus on"; + private static final int TOOLTIP_OFFSET_HEIGHT = 25; private static final int TOOLTIP_OFFSET_WIDTH = 5; private static final int TOOLTIP_PADDING_HEIGHT = 1; @@ -63,12 +73,12 @@ public class WorldMapOverlay extends Overlay private final WorldMapPointManager worldMapPointManager; private final Client client; + private final List mapMenuEntries = new ArrayList<>(); + @Inject private WorldMapOverlay( Client client, - WorldMapPointManager worldMapPointManager, - MouseManager mouseManager, - WorldMapOverlayMouseListener worldMapOverlayMouseListener) + WorldMapPointManager worldMapPointManager) { this.client = client; this.worldMapPointManager = worldMapPointManager; @@ -76,7 +86,6 @@ public class WorldMapOverlay extends Overlay setPriority(OverlayPriority.HIGHEST); setLayer(OverlayLayer.MANUAL); drawAfterInterface(WidgetID.WORLD_MAP_GROUP_ID); - mouseManager.registerMouseListener(worldMapOverlayMouseListener); } @Override @@ -90,17 +99,44 @@ public class WorldMapOverlay extends Overlay } Widget widget = client.getWidget(WidgetInfo.WORLD_MAP_VIEW); - if (widget == null) + Widget bottomBar = client.getWidget(WidgetInfo.WORLD_MAP_BOTTOM_BAR); + if (widget == null || bottomBar == null) { return null; } + bottomBar.setOnTimerListener((JavaScriptCallback) ev -> + { + if (client.isMenuOpen() || mapMenuEntries.isEmpty()) + { + return; + } + + MenuEntry[] entries = client.getMenuEntries(); + int end = entries.length; + entries = Arrays.copyOf(entries, end + mapMenuEntries.size()); + for (int i = 0; i < mapMenuEntries.size(); i++) + { + entries[end + i] = mapMenuEntries.get(i); + } + client.setMenuEntries(entries); + }); + bottomBar.setHasListener(true); + final Rectangle worldMapRectangle = widget.getBounds(); final Area mapViewArea = getWorldMapClipArea(worldMapRectangle); final Rectangle canvasBounds = new Rectangle(0, 0, client.getCanvasWidth(), client.getCanvasHeight()); final Area canvasViewArea = getWorldMapClipArea(canvasBounds); Area currentClip = null; + Point mousePos = client.getMouseCanvasPosition(); + if (!canvasViewArea.contains(mousePos.getX(), mousePos.getY())) + { + mousePos = null; + } + + mapMenuEntries.clear(); + WorldMapPoint tooltipPoint = null; for (WorldMapPoint worldPoint : points) @@ -111,10 +147,8 @@ public class WorldMapOverlay extends Overlay if (image != null && point != null) { Point drawPoint = mapWorldPointToGraphicsPoint(point); - if (drawPoint == null) { - worldPoint.setClickbox(null); continue; } @@ -183,15 +217,40 @@ public class WorldMapOverlay extends Overlay graphics.drawImage(image, drawX, drawY, null); Rectangle clickbox = new Rectangle(drawX, drawY, image.getWidth(), image.getHeight()); - worldPoint.setClickbox(clickbox); - - if (worldPoint.isTooltipVisible()) + if (mousePos != null && clickbox.contains(mousePos.getX(), mousePos.getY())) { - tooltipPoint = worldPoint; + if (!Strings.isNullOrEmpty(worldPoint.getTooltip())) + { + tooltipPoint = worldPoint; + } + + if (worldPoint.isJumpOnClick()) + { + assert worldPoint.getName() != null; + + WorldPoint target = worldPoint.getTarget(); + if (target == null) + { + target = worldPoint.getWorldPoint(); + } + + MenuEntry entry = new MenuEntry(); + entry.setType(MenuAction.RUNELITE.getId()); + entry.setOption(FOCUS_ON); + entry.setTarget(ColorUtil.wrapWithColorTag(worldPoint.getName(), JagexColors.MENU_TARGET)); + entry.setIdentifier(target.getPlane() << 28 | target.getX() << 14 | target.getY()); + mapMenuEntries.add(entry); + } } } } + final Widget rsTooltip = client.getWidget(WidgetInfo.WORLD_MAP_TOOLTIP); + if (rsTooltip != null) + { + rsTooltip.setHidden(tooltipPoint != null); + } + if (tooltipPoint != null) { drawTooltip(graphics, tooltipPoint); @@ -200,8 +259,24 @@ public class WorldMapOverlay extends Overlay return null; } + @Subscribe + private void onMenuOptionClicked(MenuOptionClicked ev) + { + if (ev.getMenuAction() == MenuAction.RUNELITE && FOCUS_ON.equals(ev.getMenuOption())) + { + int pxy = ev.getId(); + WorldPoint wp = new WorldPoint( + pxy >> 14 & 0x3fff, + pxy & 0x3fff, + pxy >> 28); + + client.getRenderOverview().setWorldMapPositionTarget(wp); + } + } + /** * Get the screen coordinates for a WorldPoint on the world map + * * @param worldPoint WorldPoint to get screen coordinates of * @return Point of screen coordinates of the center of the world point */ @@ -214,7 +289,7 @@ public class WorldMapOverlay extends Overlay return null; } - Float pixelsPerTile = ro.getWorldMapZoom(); + float pixelsPerTile = ro.getWorldMapZoom(); Widget map = client.getWidget(WidgetInfo.WORLD_MAP_VIEW); if (map != null) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlayMouseListener.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlayMouseListener.java deleted file mode 100644 index 71af9a55dc..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlayMouseListener.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2018, Morgan Lewis - * 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.ui.overlay.worldmap; - -import java.awt.Rectangle; -import java.awt.event.MouseEvent; -import java.util.List; -import javax.inject.Inject; -import javax.inject.Singleton; -import javax.swing.SwingUtilities; -import net.runelite.api.Client; -import net.runelite.api.Point; -import net.runelite.api.RenderOverview; -import net.runelite.api.coords.WorldPoint; -import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetInfo; -import net.runelite.client.input.MouseAdapter; - -@Singleton -public class WorldMapOverlayMouseListener extends MouseAdapter -{ - private final Client client; - private final WorldMapPointManager worldMapPointManager; - private WorldMapPoint tooltipPoint = null; - - @Inject - private WorldMapOverlayMouseListener(Client client, WorldMapPointManager worldMapPointManager) - { - this.client = client; - this.worldMapPointManager = worldMapPointManager; - } - - @Override - public MouseEvent mousePressed(MouseEvent e) - { - final List worldMapPoints = worldMapPointManager.getWorldMapPoints(); - - if (SwingUtilities.isLeftMouseButton(e) && !worldMapPoints.isEmpty()) - { - Point mousePos = client.getMouseCanvasPosition(); - final Widget view = client.getWidget(WidgetInfo.WORLD_MAP_VIEW); - - if (view == null) - { - return e; - } - - for (WorldMapPoint worldMapPoint : worldMapPoints) - { - Rectangle clickbox = worldMapPoint.getClickbox(); - if (clickbox != null && clickbox.contains(mousePos.getX(), mousePos.getY())) - { - if (worldMapPoint.isJumpOnClick()) - { - // jump map to target, or position of point - WorldPoint target = worldMapPoint.getTarget(); - if (target == null) - { - target = worldMapPoint.getWorldPoint(); - } - RenderOverview renderOverview = client.getRenderOverview(); - renderOverview.setWorldMapPositionTarget(target); - } - e.consume(); - return worldMapPoint.onClick(e); - } - } - } - return e; - } - - @Override - public MouseEvent mouseMoved(MouseEvent mouseEvent) - { - final List worldMapPoints = worldMapPointManager.getWorldMapPoints(); - - if (worldMapPoints.isEmpty()) - { - return mouseEvent; - } - - final Point mousePos = client.getMouseCanvasPosition(); - final Widget view = client.getWidget(WidgetInfo.WORLD_MAP_VIEW); - - if (view == null) - { - return mouseEvent; - } - - final Rectangle worldMapDisplay = view.getBounds(); - - if (worldMapDisplay == null || !worldMapDisplay.contains(mousePos.getX(), mousePos.getY())) - { - if (tooltipPoint != null) - { - tooltipPoint.setTooltipVisible(false); - tooltipPoint = null; - final Widget rsTooltip = client.getWidget(WidgetInfo.WORLD_MAP_TOOLTIP); - if (rsTooltip != null) - { - rsTooltip.setHidden(false); - } - } - return mouseEvent; - } - - if (tooltipPoint != null) - { - if (tooltipPoint.getClickbox() != null - && tooltipPoint.getClickbox().contains(mousePos.getX(), mousePos.getY())) - { - return mouseEvent; - } - else - { - tooltipPoint.setTooltipVisible(false); - tooltipPoint = null; - final Widget rsTooltip = client.getWidget(WidgetInfo.WORLD_MAP_TOOLTIP); - if (rsTooltip != null) - { - rsTooltip.setHidden(false); - } - } - } - - for (WorldMapPoint worldMapPoint : worldMapPointManager.getWorldMapPoints()) - { - if (worldMapPoint.getClickbox() != null - && worldMapPoint.getClickbox().contains(mousePos.getX(), mousePos.getY()) - && worldMapPoint.getTooltip() != null) - { - worldMapPoint.setTooltipVisible(true); - tooltipPoint = worldMapPoint; - final Widget rsTooltip = client.getWidget(WidgetInfo.WORLD_MAP_TOOLTIP); - if (rsTooltip != null) - { - rsTooltip.setHidden(true); - } - return mouseEvent; - } - } - return mouseEvent; - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapPoint.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapPoint.java index 836bcd1ef5..f12fd10214 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapPoint.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapPoint.java @@ -24,8 +24,6 @@ */ package net.runelite.client.ui.overlay.worldmap; -import java.awt.Rectangle; -import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import javax.annotation.Nullable; import lombok.Data; @@ -53,8 +51,6 @@ public class WorldMapPoint */ private Point imagePoint; - private Rectangle clickbox; - private boolean snapToEdge; private boolean currentlyEdgeSnapped; @@ -64,7 +60,10 @@ public class WorldMapPoint */ private boolean jumpOnClick; - private boolean tooltipVisible; + /** + * Name in menu option when {@link #jumpOnClick} is set + */ + private String name; private String tooltip; @@ -74,11 +73,6 @@ public class WorldMapPoint this.image = image; } - public MouseEvent onClick(MouseEvent e) - { - return e; - } - public void onEdgeSnap() { } diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/loginscreen/akd.jpg b/runelite-client/src/main/resources/net/runelite/client/plugins/loginscreen/akd.jpg new file mode 100644 index 0000000000..95e366d642 Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/loginscreen/akd.jpg differ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_agility.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_agility.json index 495dd19453..e26954adde 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_agility.json +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_agility.json @@ -6,6 +6,12 @@ "name": "Gnome Stronghold", "xp": 86.5 }, + { + "level": 5, + "icon": 13359, + "name": "Shayzien Basic Course", + "xp": 133.2 + }, { "level": 10, "icon": 11849, @@ -66,6 +72,12 @@ "name": "Ape Atoll", "xp": 580 }, + { + "level": 48, + "icon": 13379, + "name": "Shayzien Advanced Course", + "xp": 474.3 + }, { "level": 50, "icon": 11849, diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_magic.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_magic.json index 19cfa4498b..c127933d7c 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_magic.json +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_magic.json @@ -180,12 +180,24 @@ "name": "Fire Bolt", "xp": 22.5 }, + { + "level": 35, + "sprite": 1267, + "name": "Ghostly Grasp", + "xp": 22.5 + }, { "level": 37, "sprite": 33, "name": "Falador Teleport", "xp": 48 }, + { + "level": 38, + "sprite": 1270, + "name": "Resurrect Lesser Thrall", + "xp": 55 + }, { "level": 39, "sprite": 34, @@ -222,6 +234,12 @@ "name": "Superheat Item", "xp": 53 }, + { + "level": 44, + "sprite": 1302, + "name": "Inferior Demonbane", + "xp": 27 + }, { "level": 45, "sprite": 37, @@ -234,6 +252,12 @@ "name": "Water Blast", "xp": 28.5 }, + { + "level": 47, + "sprite": 1315, + "name": "Shadow Veil", + "xp": 58 + }, { "level": 48, "sprite": 1259, @@ -276,6 +300,12 @@ "name": "Snare", "xp": 60 }, + { + "level": 50, + "sprite": 1316, + "name": "Dark Lure", + "xp": 60 + }, { "level": 51, "sprite": 54, @@ -318,6 +348,12 @@ "name": "Blood Rush", "xp": 33 }, + { + "level": 56, + "sprite": 1268, + "name": "Skeletal Grasp", + "xp": 33 + }, { "level": 57, "sprite": 358, @@ -330,6 +366,12 @@ "name": "Enchant Diamond Jewellery", "xp": 67 }, + { + "level": 57, + "sprite": 2981, + "name": "Resurrect Superior Thrall", + "xp": 70 + }, { "level": 58, "sprite": 55, @@ -348,6 +390,12 @@ "name": "Fire Blast", "xp": 34.5 }, + { + "level": 59, + "sprite": 1305, + "name": "Mark of Darkness", + "xp": 70 + }, { "level": 60, "sprite": 342, @@ -408,6 +456,12 @@ "name": "Wind Wave", "xp": 36 }, + { + "level": 62, + "sprite": 1303, + "name": "Superior Demonbane", + "xp": 36 + }, { "level": 63, "sprite": 47, @@ -426,6 +480,12 @@ "name": "Teleport Ape Atoll", "xp": 74 }, + { + "level": 64, + "sprite": 1307, + "name": "Lesser Corruption", + "xp": 75 + }, { "level": 65, "sprite": 543, @@ -480,6 +540,12 @@ "name": "Monster Examine", "xp": 61 }, + { + "level": 66, + "sprite": 1317, + "name": "Vile Vigour", + "xp": 76 + }, { "level": 67, "sprite": 568, @@ -540,6 +606,12 @@ "name": "Tele Group Moonclan", "xp": 67 }, + { + "level": 70, + "sprite": 1318, + "name": "Degrime", + "xp": 83 + }, { "level": 71, "sprite": 586, @@ -594,6 +666,12 @@ "name": "Enfeeble", "xp": 83 }, + { + "level": 73, + "sprite": 1306, + "name": "Ward of Arceuus", + "xp": 83 + }, { "level": 74, "sprite": 349, @@ -648,6 +726,12 @@ "name": "Spin Flax", "xp": 75 }, + { + "level": 76, + "sprite": 2984, + "name": "Resurrect Greater Thrall", + "xp": 88 + }, { "level": 77, "sprite": 548, @@ -696,6 +780,12 @@ "name": "Dream", "xp": 82 }, + { + "level": 79, + "sprite": 1269, + "name": "Undead Grasp", + "xp": 46.5 + }, { "level": 80, "sprite": 322, @@ -720,6 +810,12 @@ "name": "String Jewellery", "xp": 83 }, + { + "level": 80, + "sprite": 1310, + "name": "Death Charge", + "xp": 90 + }, { "level": 81, "sprite": 554, @@ -750,6 +846,12 @@ "name": "Ice Blitz", "xp": 46 }, + { + "level": 82, + "sprite": 1304, + "name": "Dark Demonbane", + "xp": 43.5 + }, { "level": 83, "sprite": 553, @@ -774,6 +876,12 @@ "name": "Boost Potion Share", "xp": 88 }, + { + "level": 84, + "sprite": 1311, + "name": "Demonic Offering", + "xp": 175 + }, { "level": 85, "sprite": 363, @@ -798,6 +906,12 @@ "name": "Teleport To Bounty Target", "xp": 45 }, + { + "level": 85, + "sprite": 1308, + "name": "Greater Corruption", + "xp": 95 + }, { "level": 86, "sprite": 332, @@ -912,6 +1026,12 @@ "name": "Heal Other", "xp": 101 }, + { + "level": 92, + "sprite": 1312, + "name": "Sinister Offering", + "xp": 180 + }, { "level": 93, "sprite": 561, diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_prayer.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_prayer.json index 292fab6b8f..2e74c93d0c 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_prayer.json +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_prayer.json @@ -168,6 +168,41 @@ "xp": 1560, "ignoreBonus": true }, + { + "level": 1, + "icon": 25766, + "name": "Fiendish Ashes", + "xp": 10, + "ignoreBonus": true + }, + { + "level": 1, + "icon": 25769, + "name": "Vile Ashes", + "xp": 25, + "ignoreBonus": true + }, + { + "level": 1, + "icon": 25772, + "name": "Malicious Ashes", + "xp": 65, + "ignoreBonus": true + }, + { + "level": 1, + "icon": 25775, + "name": "Abyssal Ashes", + "xp": 85, + "ignoreBonus": true + }, + { + "level": 1, + "icon": 25778, + "name": "Infernal Ashes", + "xp": 110, + "ignoreBonus": true + }, { "level": 1, "icon": 526, diff --git a/runelite-client/src/main/resources/openosrs.properties b/runelite-client/src/main/resources/openosrs.properties index 18008e9642..3bc3ac3628 100644 --- a/runelite-client/src/main/resources/openosrs.properties +++ b/runelite-client/src/main/resources/openosrs.properties @@ -1,2 +1,2 @@ -oprs.api.version=1.1.0 +oprs.api.version=2.0.0 oprs.version=@open.osrs.version@ \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ChatBuilder.hash b/runelite-client/src/main/scripts/ChatBuilder.hash index 9bde11bb34..b4669e84ba 100644 --- a/runelite-client/src/main/scripts/ChatBuilder.hash +++ b/runelite-client/src/main/scripts/ChatBuilder.hash @@ -1 +1 @@ -28D9B0BC06E4C832129BE800E1F53A8DD6C6C5F1277EF038C49E92C8648E9F44 \ No newline at end of file +D8865833BC828A91FC7D4A10B6A7629786ED2099E2F45689BECD55A9E933323D \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ChatBuilder.rs2asm b/runelite-client/src/main/scripts/ChatBuilder.rs2asm index 16f4bf8e95..88b0793432 100644 --- a/runelite-client/src/main/scripts/ChatBuilder.rs2asm +++ b/runelite-client/src/main/scripts/ChatBuilder.rs2asm @@ -1,8 +1,8 @@ .id 84 .int_stack_count 1 .string_stack_count 0 -.int_var_count 23 -.string_var_count 18 +.int_var_count 24 +.string_var_count 19 iconst 10616888 if_getwidth istore 1 @@ -327,18 +327,25 @@ LABEL306: istore 20 istore 19 LABEL311: - iload 10 - iconst -1 - if_icmpne LABEL315 - jump LABEL1359 + sconst "" + sstore 18 + iconst 0 + istore 21 LABEL315: - iload 9 + iload 10 iconst -1 if_icmpne LABEL319 - jump LABEL1359 + jump LABEL1415 LABEL319: + iload 9 + iconst -1 + if_icmpne LABEL323 + jump LABEL1415 +LABEL323: iload 10 - chat_gethistory_byuid + 5031 + istore 21 + sstore 18 istore 15 sstore 15 sstore 14 @@ -351,7 +358,7 @@ LABEL319: invoke 193 iconst 1 if_icmpeq CHAT_FILTER - jump LABEL1355 + jump LABEL1411 CHAT_FILTER: sload 15 ; Load the message iconst 1 ; Gets changed to 0 if message is blocked @@ -363,52 +370,56 @@ CHAT_FILTER: pop_int ; Pop the messageType iconst 1 ; 2nd half of conditional sstore 15 ; Override the message with our filtered message - if_icmpeq LABEL334 ; Check if we are building this message - jump LABEL1355 ; continue to next message, skipping this -LABEL334: + if_icmpeq LABEL340 ; Check if we are building this message + jump LABEL1411 ; continue to next message, skipping this +LABEL340: iload 11 sload 13 + sload 18 sload 15 + invoke 4742 iload 12 iload 2 sload 0 iload 15 invoke 90 iconst 1 - if_icmpeq LABEL345 - jump LABEL1355 -LABEL345: + if_icmpeq LABEL353 + jump LABEL1411 +LABEL353: iload 10 ; message uid sconst "chatMessageBuilding" runelite_callback pop_int ; pop uid iload 11 switch - 1: LABEL348 - 2: LABEL348 - 3: LABEL390 - 101: LABEL412 - 5: LABEL430 - 6: LABEL463 - 7: LABEL390 - 103: LABEL485 - 104: LABEL485 - 9: LABEL521 - 41: LABEL547 - 43: LABEL855 - 107: LABEL981 - 44: LABEL702 - 109: LABEL503 - 110: LABEL485 - 46: LABEL905 - 14: LABEL954 - 90: LABEL369 - 91: LABEL369 - jump LABEL1017 -LABEL348: + 1: LABEL356 + 2: LABEL356 + 3: LABEL402 + 101: LABEL426 + 5: LABEL446 + 6: LABEL481 + 7: LABEL402 + 103: LABEL505 + 104: LABEL505 + 9: LABEL545 + 41: LABEL573 + 43: LABEL897 + 107: LABEL1033 + 44: LABEL736 + 109: LABEL525 + 110: LABEL505 + 46: LABEL951 + 14: LABEL1004 + 90: LABEL379 + 91: LABEL379 + jump LABEL1071 +LABEL356: + sload 18 sload 13 sconst ":" join_string 2 + invoke 4742 sload 4 sload 15 sconst "" @@ -426,11 +437,13 @@ LABEL348: iload 4 invoke 203 istore 7 - jump LABEL1031 -LABEL369: + jump LABEL1087 +LABEL379: + sload 18 sload 13 sconst ":" join_string 2 + invoke 4742 sload 6 sload 15 sconst "" @@ -448,14 +461,16 @@ LABEL369: iload 4 invoke 203 istore 7 - jump LABEL1031 -LABEL390: + jump LABEL1087 +LABEL402: + sload 18 sconst "From " sload 13 sconst ":" join_string 3 sconst "privChatUsername" runelite_callback + invoke 4742 sload 5 sload 15 sconst "" @@ -473,12 +488,14 @@ LABEL390: iload 4 invoke 203 istore 7 - jump LABEL1031 -LABEL412: + jump LABEL1087 +LABEL426: + sload 18 sload 9 sload 15 sconst "" join_string 3 + invoke 4742 iload 8 iload 9 iconst 10616888 @@ -492,12 +509,14 @@ LABEL412: iload 4 invoke 199 istore 7 - jump LABEL1031 -LABEL430: + jump LABEL1087 +LABEL446: + sload 18 sload 5 sload 15 sconst "" join_string 3 + invoke 4742 iload 8 iload 9 iconst 10616888 @@ -513,9 +532,9 @@ LABEL430: istore 7 get_varbit 1627 iconst 0 - if_icmpeq LABEL451 - jump LABEL462 -LABEL451: + if_icmpeq LABEL469 + jump LABEL480 +LABEL469: iload 12 iconst 500 add @@ -527,15 +546,17 @@ LABEL451: sconst "1" iconst 10616832 if_setontimer -LABEL462: - jump LABEL1031 -LABEL463: +LABEL480: + jump LABEL1087 +LABEL481: + sload 18 sconst "To " sload 13 sconst ":" join_string 3 sconst "privChatUsername" runelite_callback + invoke 4742 sload 5 sload 15 sconst "" @@ -553,12 +574,14 @@ LABEL463: iload 4 invoke 203 istore 7 - jump LABEL1031 -LABEL485: + jump LABEL1087 +LABEL505: + sload 18 sload 10 sload 15 sconst "" join_string 3 + invoke 4742 iload 8 iload 9 iconst 10616888 @@ -572,12 +595,14 @@ LABEL485: iload 4 invoke 199 istore 7 - jump LABEL1031 -LABEL503: + jump LABEL1087 +LABEL525: + sload 18 sconst "" sload 15 sconst "" join_string 3 + invoke 4742 iload 8 iload 9 iconst 10616888 @@ -591,8 +616,9 @@ LABEL503: iload 4 invoke 199 istore 7 - jump LABEL1031 -LABEL521: + jump LABEL1087 +LABEL545: + sload 18 sconst "[" sload 3 sload 14 @@ -601,6 +627,7 @@ LABEL521: sload 13 sconst ":" join_string 7 + invoke 4742 sload 7 sload 15 sconst "" @@ -618,29 +645,29 @@ LABEL521: iload 4 invoke 203 istore 7 - jump LABEL1031 -LABEL547: + jump LABEL1087 +LABEL573: iconst 0 activeclansettings_find_affined iconst 1 - if_icmpeq LABEL552 - jump LABEL672 -LABEL552: + if_icmpeq LABEL578 + jump LABEL704 +LABEL578: iconst 0 activeclanchannel_find_affined iconst 1 - if_icmpeq LABEL557 - jump LABEL672 -LABEL557: + if_icmpeq LABEL583 + jump LABEL704 +LABEL583: sload 13 removetags activeclanchannel_getuserslot istore 17 iload 17 iconst -1 - if_icmpne LABEL565 - jump LABEL638 -LABEL565: + if_icmpne LABEL591 + jump LABEL668 +LABEL591: iload 17 activeclanchannel_getuserrank invoke 4302 @@ -648,15 +675,17 @@ LABEL565: sstore 17 iload 16 iconst -1 - if_icmpne LABEL574 - jump LABEL604 -LABEL574: + if_icmpne LABEL600 + jump LABEL632 +LABEL600: + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iload 16 iconst 13 iconst 13 @@ -680,14 +709,16 @@ LABEL574: iload 4 invoke 4483 istore 7 - jump LABEL637 -LABEL604: + jump LABEL667 +LABEL632: + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -715,19 +746,21 @@ LABEL604: iload 4 invoke 4483 istore 7 -LABEL637: - jump LABEL671 -LABEL638: +LABEL667: + jump LABEL703 +LABEL668: iconst -1 invoke 4302 istore 16 sstore 17 + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iload 16 iconst 13 iconst 13 @@ -751,15 +784,17 @@ LABEL638: iload 4 invoke 4483 istore 7 -LABEL671: - jump LABEL701 -LABEL672: +LABEL703: + jump LABEL735 +LABEL704: + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -783,28 +818,28 @@ LABEL672: iload 4 invoke 4483 istore 7 -LABEL701: - jump LABEL1031 -LABEL702: +LABEL735: + jump LABEL1087 +LABEL736: activeclansettings_find_listened iconst 1 - if_icmpeq LABEL706 - jump LABEL825 -LABEL706: + if_icmpeq LABEL740 + jump LABEL865 +LABEL740: activeclanchannel_find_listened iconst 1 - if_icmpeq LABEL710 - jump LABEL825 -LABEL710: + if_icmpeq LABEL744 + jump LABEL865 +LABEL744: sload 13 removetags activeclanchannel_getuserslot istore 17 iload 17 iconst -1 - if_icmpne LABEL718 - jump LABEL791 -LABEL718: + if_icmpne LABEL752 + jump LABEL829 +LABEL752: iload 17 activeclanchannel_getuserrank invoke 4302 @@ -812,15 +847,17 @@ LABEL718: sstore 17 iload 16 iconst -1 - if_icmpne LABEL727 - jump LABEL757 -LABEL727: + if_icmpne LABEL761 + jump LABEL793 +LABEL761: + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iload 16 iconst 13 iconst 13 @@ -844,14 +881,16 @@ LABEL727: iload 4 invoke 4483 istore 7 - jump LABEL790 -LABEL757: + jump LABEL828 +LABEL793: + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -879,19 +918,21 @@ LABEL757: iload 4 invoke 4483 istore 7 -LABEL790: - jump LABEL824 -LABEL791: +LABEL828: + jump LABEL864 +LABEL829: iconst -1 invoke 4302 istore 16 sstore 17 + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iload 16 iconst 13 iconst 13 @@ -915,15 +956,17 @@ LABEL791: iload 4 invoke 4483 istore 7 -LABEL824: - jump LABEL854 -LABEL825: +LABEL864: + jump LABEL896 +LABEL865: + sload 18 sconst "[" sload 2 sload 14 sconst "" sconst "]" join_string 5 + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -947,21 +990,23 @@ LABEL825: iload 4 invoke 4483 istore 7 -LABEL854: - jump LABEL1031 -LABEL855: +LABEL896: + jump LABEL1087 +LABEL897: iconst 0 activeclanchannel_find_affined iconst 1 - if_icmpeq LABEL860 - jump LABEL885 -LABEL860: + if_icmpeq LABEL902 + jump LABEL929 +LABEL902: + sload 18 sconst "[" sload 2 activeclanchannel_getclanname sconst "" sconst "]" join_string 5 + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -980,9 +1025,11 @@ LABEL860: iload 4 invoke 4483 istore 7 - jump LABEL904 -LABEL885: + jump LABEL950 +LABEL929: + sload 18 sconst "" + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -1001,20 +1048,22 @@ LABEL885: iload 4 invoke 4483 istore 7 -LABEL904: - jump LABEL1031 -LABEL905: +LABEL950: + jump LABEL1087 +LABEL951: activeclanchannel_find_listened iconst 1 - if_icmpeq LABEL909 - jump LABEL934 -LABEL909: + if_icmpeq LABEL955 + jump LABEL982 +LABEL955: + sload 18 sconst "[" sload 2 activeclanchannel_getclanname sconst "" sconst "]" join_string 5 + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -1033,9 +1082,11 @@ LABEL909: iload 4 invoke 4483 istore 7 - jump LABEL953 -LABEL934: + jump LABEL1003 +LABEL982: + sload 18 sconst "" + invoke 4742 iconst -1 iconst 0 iconst 0 @@ -1054,18 +1105,20 @@ LABEL934: iload 4 invoke 4483 istore 7 -LABEL953: - jump LABEL1031 -LABEL954: +LABEL1003: + jump LABEL1087 +LABEL1004: sload 15 invoke 2066 istore 13 sstore 16 sstore 15 + sload 18 sload 1 sconst "Broadcast:" sconst "" join_string 3 + invoke 4742 sload 12 sload 15 sconst "" @@ -1083,15 +1136,15 @@ LABEL954: iload 4 invoke 203 istore 7 - jump LABEL1031 -LABEL981: + jump LABEL1087 +LABEL1033: clientclock iload 12 sub iconst 500 - if_icmpgt LABEL987 - jump LABEL1002 -LABEL987: + if_icmpgt LABEL1039 + jump LABEL1054 +LABEL1039: sconst "jk :P" iload 8 iload 9 @@ -1106,9 +1159,11 @@ LABEL987: iload 4 invoke 199 istore 7 - jump LABEL1016 -LABEL1002: + jump LABEL1070 +LABEL1054: + sload 18 sload 15 + invoke 4742 iload 8 iload 9 iconst 10616888 @@ -1122,10 +1177,12 @@ LABEL1002: iload 4 invoke 199 istore 7 -LABEL1016: - jump LABEL1031 -LABEL1017: +LABEL1070: + jump LABEL1087 +LABEL1071: + sload 18 sload 15 + invoke 4742 iload 8 iload 9 iconst 10616888 @@ -1139,30 +1196,30 @@ LABEL1017: iload 4 invoke 199 istore 7 -LABEL1031: +LABEL1087: iload 9 if_clearops iload 11 switch - 1: LABEL1036 - 2: LABEL1036 - 3: LABEL1036 - 101: LABEL1140 - 6: LABEL1036 - 7: LABEL1036 - 103: LABEL1183 - 104: LABEL1183 - 9: LABEL1036 - 41: LABEL1036 - 106: LABEL1036 - 44: LABEL1036 - 109: LABEL1286 - 110: LABEL1183 - 14: LABEL1226 - 90: LABEL1036 - 91: LABEL1036 - jump LABEL1329 -LABEL1036: + 1: LABEL1092 + 2: LABEL1092 + 3: LABEL1092 + 101: LABEL1196 + 6: LABEL1092 + 7: LABEL1092 + 103: LABEL1239 + 104: LABEL1239 + 9: LABEL1092 + 41: LABEL1092 + 106: LABEL1092 + 44: LABEL1092 + 109: LABEL1342 + 110: LABEL1239 + 14: LABEL1282 + 90: LABEL1092 + 91: LABEL1092 + jump LABEL1385 +LABEL1092: sconst "" sload 13 sconst "" @@ -1189,20 +1246,20 @@ LABEL1036: removetags compare iconst 0 - if_icmpne LABEL1064 - jump LABEL1139 -LABEL1064: + if_icmpne LABEL1120 + jump LABEL1195 +LABEL1120: iload 15 iconst 1 - if_icmpeq LABEL1068 - jump LABEL1073 -LABEL1068: + if_icmpeq LABEL1124 + jump LABEL1129 +LABEL1124: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1081 -LABEL1073: + jump LABEL1137 +LABEL1129: iconst 6 sconst "Add friend" iload 9 @@ -1211,78 +1268,78 @@ LABEL1073: sconst "Add ignore" iload 9 if_setop -LABEL1081: +LABEL1137: iconst 8 sconst "Report" iload 9 if_setop iload 11 iconst 9 - if_icmpeq LABEL1089 - jump LABEL1102 -LABEL1089: + if_icmpeq LABEL1145 + jump LABEL1158 +LABEL1145: clan_getchatcount iconst 0 - if_icmpgt LABEL1093 - jump LABEL1101 -LABEL1093: + if_icmpgt LABEL1149 + jump LABEL1157 +LABEL1149: clan_getchatrank clan_getchatminkick - if_icmpge LABEL1097 - jump LABEL1101 -LABEL1097: + if_icmpge LABEL1153 + jump LABEL1157 +LABEL1153: iconst 9 sconst "Kick" iload 9 if_setop -LABEL1101: - jump LABEL1139 -LABEL1102: +LABEL1157: + jump LABEL1195 +LABEL1158: iload 11 iconst 41 - if_icmpeq LABEL1106 - jump LABEL1139 -LABEL1106: + if_icmpeq LABEL1162 + jump LABEL1195 +LABEL1162: iload 18 iload 19 - if_icmpge LABEL1110 - jump LABEL1139 -LABEL1110: + if_icmpge LABEL1166 + jump LABEL1195 +LABEL1166: iconst 0 activeclanchannel_find_affined iconst 1 - if_icmpeq LABEL1115 - jump LABEL1139 -LABEL1115: + if_icmpeq LABEL1171 + jump LABEL1195 +LABEL1171: sload 13 removetags activeclanchannel_getuserslot istore 17 iload 17 iconst -1 - if_icmpeq LABEL1127 + if_icmpeq LABEL1183 iload 17 activeclanchannel_getuserrank iconst -1 - if_icmple LABEL1127 - jump LABEL1139 -LABEL1127: + if_icmple LABEL1183 + jump LABEL1195 +LABEL1183: iconst 9 sconst "Kick" iload 9 if_setop iload 18 iload 20 - if_icmpge LABEL1135 - jump LABEL1139 -LABEL1135: + if_icmpge LABEL1191 + jump LABEL1195 +LABEL1191: iconst 10 sconst "Ban" iload 9 if_setop -LABEL1139: - jump LABEL1341 -LABEL1140: +LABEL1195: + jump LABEL1397 +LABEL1196: sconst "" sload 13 sconst "" @@ -1310,15 +1367,15 @@ LABEL1140: if_setop iload 15 iconst 1 - if_icmpeq LABEL1169 - jump LABEL1174 -LABEL1169: + if_icmpeq LABEL1225 + jump LABEL1230 +LABEL1225: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1182 -LABEL1174: + jump LABEL1238 +LABEL1230: iconst 6 sconst "Add friend" iload 9 @@ -1327,9 +1384,9 @@ LABEL1174: sconst "Add ignore" iload 9 if_setop -LABEL1182: - jump LABEL1341 -LABEL1183: +LABEL1238: + jump LABEL1397 +LABEL1239: sconst "" sload 13 sconst "" @@ -1357,15 +1414,15 @@ LABEL1183: if_setop iload 15 iconst 1 - if_icmpeq LABEL1212 - jump LABEL1217 -LABEL1212: + if_icmpeq LABEL1268 + jump LABEL1273 +LABEL1268: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1225 -LABEL1217: + jump LABEL1281 +LABEL1273: iconst 6 sconst "Add friend" iload 9 @@ -1374,20 +1431,20 @@ LABEL1217: sconst "Add ignore" iload 9 if_setop -LABEL1225: - jump LABEL1341 -LABEL1226: +LABEL1281: + jump LABEL1397 +LABEL1282: sload 16 string_length iconst 0 - if_icmpgt LABEL1231 - jump LABEL1260 -LABEL1231: + if_icmpgt LABEL1287 + jump LABEL1316 +LABEL1287: iload 13 iconst -1 - if_icmpne LABEL1235 - jump LABEL1260 -LABEL1235: + if_icmpne LABEL1291 + jump LABEL1316 +LABEL1291: iconst 6 sconst "Open" iload 9 @@ -1412,8 +1469,8 @@ LABEL1235: sconst "Iii" iload 9 if_setonmouseleave - jump LABEL1268 -LABEL1260: + jump LABEL1324 +LABEL1316: iconst -1 sconst "" iload 9 @@ -1422,7 +1479,7 @@ LABEL1260: sconst "" iload 9 if_setonmouseleave -LABEL1268: +LABEL1324: iconst 9 sconst "Clear history" iload 9 @@ -1440,8 +1497,8 @@ LABEL1268: sconst "isi" iload 9 if_setonop - jump LABEL1341 -LABEL1286: + jump LABEL1397 +LABEL1342: sconst "" sload 13 sconst "" @@ -1469,15 +1526,15 @@ LABEL1286: if_setonmouseleave iload 15 iconst 1 - if_icmpeq LABEL1315 - jump LABEL1320 -LABEL1315: + if_icmpeq LABEL1371 + jump LABEL1376 +LABEL1371: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1328 -LABEL1320: + jump LABEL1384 +LABEL1376: iconst 6 sconst "Add friend" iload 9 @@ -1486,9 +1543,9 @@ LABEL1320: sconst "Add ignore" iload 9 if_setop -LABEL1328: - jump LABEL1341 -LABEL1329: +LABEL1384: + jump LABEL1397 +LABEL1385: iconst -1 sconst "" iload 9 @@ -1501,7 +1558,7 @@ LABEL1329: sconst "" iload 9 if_setonmouseleave -LABEL1341: +LABEL1397: iload 6 iload 7 sub @@ -1516,20 +1573,20 @@ LABEL1341: iload 8 enum istore 9 -LABEL1355: +LABEL1411: iload 10 chat_getprevuid istore 10 - jump LABEL311 -LABEL1359: + jump LABEL315 +LABEL1415: iload 8 - istore 21 -LABEL1361: + istore 22 +LABEL1417: iload 9 iconst -1 - if_icmpne LABEL1365 - jump LABEL1448 -LABEL1365: + if_icmpne LABEL1421 + jump LABEL1504 +LABEL1421: iload 9 if_clearops iconst -1 @@ -1556,14 +1613,14 @@ LABEL1365: multiply cc_find iconst 1 - if_icmpeq LABEL1393 - jump LABEL1397 -LABEL1393: + if_icmpeq LABEL1449 + jump LABEL1453 +LABEL1449: sconst "" cc_settext iconst 1 cc_sethide -LABEL1397: +LABEL1453: iconst 10616888 iload 8 iconst 4 @@ -1572,14 +1629,14 @@ LABEL1397: add cc_find iconst 1 - if_icmpeq LABEL1407 - jump LABEL1411 -LABEL1407: + if_icmpeq LABEL1463 + jump LABEL1467 +LABEL1463: sconst "" cc_settext iconst 1 cc_sethide -LABEL1411: +LABEL1467: iconst 10616888 iload 8 iconst 4 @@ -1588,14 +1645,14 @@ LABEL1411: add cc_find iconst 1 - if_icmpeq LABEL1421 - jump LABEL1425 -LABEL1421: + if_icmpeq LABEL1477 + jump LABEL1481 +LABEL1477: sconst "" cc_settext iconst 1 cc_sethide -LABEL1425: +LABEL1481: iconst 10616888 iload 8 iconst 4 @@ -1604,12 +1661,12 @@ LABEL1425: add cc_find iconst 1 - if_icmpeq LABEL1435 - jump LABEL1437 -LABEL1435: + if_icmpeq LABEL1491 + jump LABEL1493 +LABEL1491: iconst 1 cc_sethide -LABEL1437: +LABEL1493: iload 8 iconst 1 add @@ -1620,8 +1677,8 @@ LABEL1437: iload 8 enum istore 9 - jump LABEL1361 -LABEL1448: + jump LABEL1417 +LABEL1504: iload 6 iconst 2 sub @@ -1632,23 +1689,23 @@ LABEL1448: istore 6 iconst 10616888 if_getheight - istore 22 + istore 23 iload 6 + iload 23 + if_icmpgt LABEL1519 + jump LABEL1521 +LABEL1519: + iload 6 + istore 23 +LABEL1521: iload 22 - if_icmpgt LABEL1463 - jump LABEL1465 -LABEL1463: - iload 6 - istore 22 -LABEL1465: - iload 21 istore 8 -LABEL1467: +LABEL1523: iload 8 iconst 0 - if_icmpgt LABEL1471 - jump LABEL1554 -LABEL1471: + if_icmpgt LABEL1527 + jump LABEL1610 +LABEL1527: iload 8 iconst 1 sub @@ -1661,7 +1718,7 @@ LABEL1471: istore 9 iload 9 if_gety - iload 22 + iload 23 add iconst 2 sub @@ -1679,15 +1736,15 @@ LABEL1471: multiply cc_find iconst 1 - if_icmpeq LABEL1503 - jump LABEL1508 -LABEL1503: + if_icmpeq LABEL1559 + jump LABEL1564 +LABEL1559: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1508: +LABEL1564: iconst 10616888 iload 8 iconst 4 @@ -1696,15 +1753,15 @@ LABEL1508: add cc_find iconst 1 - if_icmpeq LABEL1518 - jump LABEL1523 -LABEL1518: + if_icmpeq LABEL1574 + jump LABEL1579 +LABEL1574: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1523: +LABEL1579: iconst 10616888 iload 8 iconst 4 @@ -1713,15 +1770,15 @@ LABEL1523: add cc_find iconst 1 - if_icmpeq LABEL1533 - jump LABEL1538 -LABEL1533: + if_icmpeq LABEL1589 + jump LABEL1594 +LABEL1589: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1538: +LABEL1594: iconst 10616888 iload 8 iconst 4 @@ -1730,32 +1787,32 @@ LABEL1538: add cc_find iconst 1 - if_icmpeq LABEL1548 - jump LABEL1553 -LABEL1548: + if_icmpeq LABEL1604 + jump LABEL1609 +LABEL1604: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1553: - jump LABEL1467 -LABEL1554: +LABEL1609: + jump LABEL1523 +LABEL1610: iconst 0 - iload 22 + iload 23 iconst 10616888 if_setscrollsize iconst 10617389 iconst 10616888 get_varc_int 7 - iload 22 + iload 23 get_varc_int 8 sub add invoke 72 iconst 10616888 if_getscrolly - iload 22 + iload 23 set_varc_int 8 set_varc_int 7 return diff --git a/runelite-client/src/main/scripts/ChatSplitBuilder.hash b/runelite-client/src/main/scripts/ChatSplitBuilder.hash index ed9b56453b..c68b80b6f4 100644 --- a/runelite-client/src/main/scripts/ChatSplitBuilder.hash +++ b/runelite-client/src/main/scripts/ChatSplitBuilder.hash @@ -1 +1 @@ -4B4BC80A1E1C22193721F88794D320A50B87ED1351BD56F9C01D4D8355EA91F4 \ No newline at end of file +BADE5769E553D84CF031C4D278466E46B74E12CF62A3351646CD1C504D7A426A \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm b/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm index df8eabb6eb..42454852f1 100644 --- a/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm +++ b/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm @@ -1,8 +1,8 @@ .id 89 .int_stack_count 1 .string_stack_count 0 -.int_var_count 19 -.string_var_count 6 +.int_var_count 20 +.string_var_count 7 iconst 0 istore 1 iconst 2 @@ -62,7 +62,7 @@ LABEL49: iconst 73 iconst 73 iload 6 - iconst 10551328 + iconst 10551333 enum if_getheight add @@ -181,71 +181,79 @@ LABEL156: istore 14 sconst "" sstore 2 + iconst 0 + istore 15 sconst "" sstore 3 + sconst "" + sstore 4 iconst -1 - istore 15 - iconst 0 istore 16 + iconst 0 + istore 17 sconst "" - sstore 4 + sstore 5 sconst "" - sstore 5 - sload 4 + sstore 6 sload 5 + sload 6 invoke 4485 + sstore 6 sstore 5 - sstore 4 get_varc_int 55 get_varc_int 202 - if_icmpge LABEL185 - jump LABEL311 -LABEL185: + if_icmpge LABEL189 + jump LABEL319 +LABEL189: get_varc_int 55 clientclock iconst 3000 sub - if_icmpgt LABEL191 - jump LABEL311 -LABEL191: + if_icmpgt LABEL195 + jump LABEL319 +LABEL195: iconst 14 chat_gethistorylength iconst 0 - if_icmpgt LABEL196 - jump LABEL311 -LABEL196: + if_icmpgt LABEL200 + jump LABEL319 +LABEL200: iconst 14 iconst 0 - chat_gethistory_bytypeandline + 5030 + istore 15 + sstore 2 istore 14 sstore 0 - sstore 2 + sstore 3 sstore 1 istore 13 istore 12 iload 12 iconst -1 - if_icmpne LABEL209 - jump LABEL311 -LABEL209: + if_icmpne LABEL215 + jump LABEL319 +LABEL215: sload 0 invoke 2066 - istore 15 - sstore 3 + istore 16 + sstore 4 sstore 0 - iload 15 + iload 16 iconst 4 - if_icmpne LABEL221 + if_icmpne LABEL227 reboottimer iconst 0 - if_icmple LABEL221 - jump LABEL311 -LABEL221: + if_icmple LABEL227 + jump LABEL319 +LABEL227: iload 7 - sload 5 + sload 2 + sload 6 sload 0 sconst "" join_string 3 + invoke 4742 iload 9 iload 10 iconst 10682368 @@ -262,17 +270,17 @@ LABEL221: istore 7 iload 10 if_clearops - sload 3 + sload 4 string_length iconst 0 - if_icmpgt LABEL247 - jump LABEL276 -LABEL247: - iload 15 + if_icmpgt LABEL255 + jump LABEL284 +LABEL255: + iload 16 iconst -1 - if_icmpne LABEL251 - jump LABEL276 -LABEL251: + if_icmpne LABEL259 + jump LABEL284 +LABEL259: iconst 6 sconst "Open" iload 10 @@ -297,8 +305,8 @@ LABEL251: sconst "Iii" iload 10 if_setonmouseleave - jump LABEL284 -LABEL276: + jump LABEL292 +LABEL284: iconst -1 sconst "" iload 10 @@ -307,7 +315,7 @@ LABEL276: sconst "" iload 10 if_setonmouseleave -LABEL284: +LABEL292: iconst 9 sconst "Clear history" iload 10 @@ -320,8 +328,8 @@ LABEL284: if_setopbase iconst 2064 iconst -2147483644 - sload 3 - iload 15 + sload 4 + iload 16 sconst "isi" iload 10 if_setonop @@ -335,63 +343,65 @@ LABEL284: iload 9 enum istore 10 -LABEL311: +LABEL319: iload 0 istore 12 iconst 0 - istore 17 - invoke 4487 istore 18 + invoke 4487 + istore 19 get_varp 287 iconst 1 - if_icmpeq LABEL321 - jump LABEL536 -LABEL321: + if_icmpeq LABEL329 + jump LABEL554 +LABEL329: get_varc_int 41 iconst 1337 - if_icmpne LABEL328 + if_icmpne LABEL336 get_varbit 4089 iconst 0 - if_icmpeq LABEL328 - jump LABEL536 -LABEL328: + if_icmpeq LABEL336 + jump LABEL554 +LABEL336: iload 12 iconst -1 - if_icmpne LABEL332 - jump LABEL536 -LABEL332: + if_icmpne LABEL340 + jump LABEL554 +LABEL340: iload 10 iconst -1 - if_icmpne LABEL336 - jump LABEL536 -LABEL336: + if_icmpne LABEL344 + jump LABEL554 +LABEL344: iload 7 iload 4 sub iconst 57 - if_icmplt LABEL342 - jump LABEL536 -LABEL342: + if_icmplt LABEL350 + jump LABEL554 +LABEL350: iload 12 - chat_gethistory_byuid + 5031 + istore 15 + sstore 2 istore 14 sstore 0 - sstore 2 + sstore 3 sstore 1 istore 13 - istore 17 - iload 17 + istore 18 + iload 18 sload 1 iload 13 iload 14 invoke 91 iconst 1 if_icmpeq CHAT_FILTER ; Jump to our new label instead - jump LABEL532 + jump LABEL550 CHAT_FILTER: sload 0 ; Load the message iconst 1 ; Gets changed to 0 if message is blocked - iload 17 ; Load the messageType + iload 18 ; Load the messageType iload 12 ; Load the id of the messageNode sconst "chatFilterCheck" runelite_callback @@ -399,23 +409,24 @@ CHAT_FILTER: pop_int ; Pop the messageType iconst 1 ; 2nd half of conditional sstore 0 ; Override the message with our filtered message - if_icmpeq LABEL358 ; Check if we are building this message - jump LABEL532 -LABEL358: + if_icmpeq LABEL368 ; Check if we are building this message + jump LABEL550 +LABEL368: iload 12 ; message uid sconst "chatMessageBuilding" runelite_callback pop_int - iload 17 + iload 18 switch - 3: LABEL361 - 5: LABEL413 - 6: LABEL387 - 7: LABEL361 - jump LABEL448 -LABEL361: + 3: LABEL371 + 5: LABEL427 + 6: LABEL399 + 7: LABEL371 + jump LABEL464 +LABEL371: iload 7 - sload 4 + sload 2 + sload 5 sconst "splitPrivChatUsernameColor" runelite_callback sconst "From " @@ -423,7 +434,8 @@ LABEL361: sconst ":" sconst "" join_string 5 - sload 4 + invoke 4742 + sload 5 sload 0 sconst "" join_string 3 @@ -441,10 +453,11 @@ LABEL361: invoke 203 add istore 7 - jump LABEL464 -LABEL387: + jump LABEL482 +LABEL399: iload 7 - sload 4 + sload 2 + sload 5 sconst "splitPrivChatUsernameColor" runelite_callback sconst "To " @@ -452,7 +465,8 @@ LABEL387: sconst ":" sconst "" join_string 5 - sload 4 + invoke 4742 + sload 5 sload 0 sconst "" join_string 3 @@ -470,13 +484,15 @@ LABEL387: invoke 203 add istore 7 - jump LABEL464 -LABEL413: + jump LABEL482 +LABEL427: iload 7 - sload 4 + sload 2 + sload 5 sload 0 sconst "" join_string 3 + invoke 4742 iload 9 iload 10 iconst 10682368 @@ -491,11 +507,11 @@ LABEL413: invoke 199 add istore 7 - iload 18 + iload 19 iconst 0 - if_icmpeq LABEL436 - jump LABEL447 -LABEL436: + if_icmpeq LABEL452 + jump LABEL463 +LABEL452: iload 13 iconst 500 add @@ -507,11 +523,13 @@ LABEL436: sconst "1" iconst 10616832 if_setontimer -LABEL447: - jump LABEL464 -LABEL448: +LABEL463: + jump LABEL482 +LABEL464: iload 7 + sload 2 sload 0 + invoke 4742 iload 9 iload 10 iconst 10682368 @@ -526,31 +544,31 @@ LABEL448: invoke 199 add istore 7 -LABEL464: +LABEL482: iload 10 if_clearops - iload 17 + iload 18 iconst 3 - if_icmpeq LABEL476 - iload 17 + if_icmpeq LABEL494 + iload 18 iconst 6 - if_icmpeq LABEL476 - iload 17 + if_icmpeq LABEL494 + iload 18 iconst 7 - if_icmpeq LABEL476 - jump LABEL510 -LABEL476: + if_icmpeq LABEL494 + jump LABEL528 +LABEL494: iload 14 iconst 1 - if_icmpeq LABEL480 - jump LABEL485 -LABEL480: + if_icmpeq LABEL498 + jump LABEL503 +LABEL498: iconst 8 sconst "Message" iload 10 if_setop - jump LABEL493 -LABEL485: + jump LABEL511 +LABEL503: iconst 8 sconst "Add friend" iload 10 @@ -559,7 +577,7 @@ LABEL485: sconst "Add ignore" iload 10 if_setop -LABEL493: +LABEL511: iconst 10 sconst "Report" iload 10 @@ -576,13 +594,13 @@ LABEL493: sconst "is" iload 10 if_setonop - jump LABEL514 -LABEL510: + jump LABEL532 +LABEL528: iconst -1 sconst "" iload 10 if_setonop -LABEL514: +LABEL532: iconst -1 sconst "" iload 10 @@ -601,17 +619,17 @@ LABEL514: iload 9 enum istore 10 -LABEL532: +LABEL550: iload 12 chat_getprevuid istore 12 - jump LABEL328 -LABEL536: + jump LABEL336 +LABEL554: iload 10 iconst -1 - if_icmpne LABEL540 - jump LABEL623 -LABEL540: + if_icmpne LABEL558 + jump LABEL641 +LABEL558: iload 10 if_clearops iconst -1 @@ -638,14 +656,14 @@ LABEL540: multiply cc_find iconst 1 - if_icmpeq LABEL568 - jump LABEL572 -LABEL568: + if_icmpeq LABEL586 + jump LABEL590 +LABEL586: sconst "" cc_settext iconst 1 cc_sethide -LABEL572: +LABEL590: iconst 10682368 iload 9 iconst 4 @@ -654,14 +672,14 @@ LABEL572: add cc_find iconst 1 - if_icmpeq LABEL582 - jump LABEL586 -LABEL582: + if_icmpeq LABEL600 + jump LABEL604 +LABEL600: sconst "" cc_settext iconst 1 cc_sethide -LABEL586: +LABEL604: iconst 10682368 iload 9 iconst 4 @@ -670,14 +688,14 @@ LABEL586: add cc_find iconst 1 - if_icmpeq LABEL596 - jump LABEL600 -LABEL596: + if_icmpeq LABEL614 + jump LABEL618 +LABEL614: sconst "" cc_settext iconst 1 cc_sethide -LABEL600: +LABEL618: iconst 10682368 iload 9 iconst 4 @@ -686,12 +704,12 @@ LABEL600: add cc_find iconst 1 - if_icmpeq LABEL610 - jump LABEL612 -LABEL610: + if_icmpeq LABEL628 + jump LABEL630 +LABEL628: iconst 1 cc_sethide -LABEL612: +LABEL630: iload 9 iconst 1 add @@ -702,6 +720,6 @@ LABEL612: iload 9 enum istore 10 - jump LABEL536 -LABEL623: + jump LABEL554 +LABEL641: return diff --git a/runelite-client/src/main/scripts/LayoutResizableStones.hash b/runelite-client/src/main/scripts/LayoutResizableStones.hash index a9153c2d3a..2c7e47c900 100644 --- a/runelite-client/src/main/scripts/LayoutResizableStones.hash +++ b/runelite-client/src/main/scripts/LayoutResizableStones.hash @@ -1 +1 @@ -1D8F698FFDA4B0D72798938A0EFB4D7F58988E9AF3FA706A7CD9402FE14E201C \ No newline at end of file +C3095F0E7973E9EF0E8035AF4B4AC7CE28D692B71A63DE31B7820F1D2AB09F2E \ No newline at end of file diff --git a/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm b/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm index e9368bc8d8..2f5f8e0c57 100644 --- a/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm +++ b/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm @@ -20,11 +20,11 @@ 1131: LABEL9 jump LABEL204 LABEL9: - iconst 10747939 + iconst 10747944 if_getwidth iconst 33 sub - iconst 10747939 + iconst 10747944 if_getheight istore 3 istore 2 @@ -33,7 +33,7 @@ LABEL9: iconst 73 iconst 73 iload 1 - iconst 10551328 + iconst 10551333 enum if_getwidth sub @@ -48,7 +48,7 @@ LABEL9: LABEL29: iconst 0 iload 3 - iconst 10747954 + iconst 10747959 if_getheight add iconst 2 @@ -56,14 +56,14 @@ LABEL29: iconst 73 iconst 73 iload 1 - iconst 10747971 + iconst 10747976 enum if_setposition iconst 0 iload 3 iconst 2 iconst 2 - iconst 10747954 + iconst 10747959 if_setposition jump LABEL65 LABEL49: @@ -74,14 +74,14 @@ LABEL49: iconst 73 iconst 73 iload 1 - iconst 10747971 + iconst 10747976 enum if_setposition iload 2 iconst 0 iconst 2 iconst 2 - iconst 10747954 + iconst 10747959 if_setposition LABEL65: get_varbit 4084 @@ -93,7 +93,7 @@ LABEL69: iconst 73 iconst 73 iload 1 - iconst 10551324 + iconst 10551329 enum 2122 jump LABEL84 @@ -102,7 +102,7 @@ LABEL77: iconst 73 iconst 73 iload 1 - iconst 10551324 + iconst 10551329 enum 2122 LABEL84: @@ -119,7 +119,7 @@ LABEL91: iconst 73 iconst 73 iload 1 - iconst 10551324 + iconst 10551329 enum 2122 jump LABEL106 @@ -128,7 +128,7 @@ LABEL99: iconst 73 iconst 73 iload 1 - iconst 10551324 + iconst 10551329 enum 2122 LABEL106: @@ -145,7 +145,7 @@ LABEL113: iconst 73 iconst 73 iload 1 - iconst 10551324 + iconst 10551329 enum 2122 jump LABEL128 @@ -154,7 +154,7 @@ LABEL121: iconst 73 iconst 73 iload 1 - iconst 10551324 + iconst 10551329 enum 2122 LABEL128: @@ -169,15 +169,15 @@ LABEL129: jump LABEL140 LABEL136: iconst 1 - iconst 39387169 + iconst 39387175 if_sethide jump LABEL195 LABEL140: iconst 0 - iconst 39387169 + iconst 39387175 if_sethide iconst 1 - iconst 39387169 + iconst 39387175 2308 get_varbit 6255 switch @@ -187,38 +187,38 @@ LABEL140: jump LABEL173 LABEL149: iconst 1718 - iconst 39387171 + iconst 39387177 if_setgraphic iconst 1 sconst "Toggle single-tap mode" - iconst 39387169 + iconst 39387175 if_setop jump LABEL180 LABEL157: iconst 1717 - iconst 39387171 + iconst 39387177 if_setgraphic iconst 1 sconst "Toggle tap-to-drop mode" - iconst 39387169 + iconst 39387175 if_setop jump LABEL180 LABEL165: iconst 1716 - iconst 39387171 + iconst 39387177 if_setgraphic iconst 1 sconst "Show Keyboard" - iconst 39387169 + iconst 39387175 if_setop jump LABEL180 LABEL173: iconst 1715 - iconst 39387171 + iconst 39387177 if_setgraphic iconst 1 sconst "" - iconst 39387169 + iconst 39387175 if_setop LABEL180: get_varbit 6255 @@ -232,18 +232,18 @@ LABEL184: jump LABEL192 LABEL188: iconst 155 - iconst 39387171 + iconst 39387177 if_settrans jump LABEL195 LABEL192: iconst 0 - iconst 39387171 + iconst 39387177 if_settrans LABEL195: invoke 2581 get_varbit 6254 invoke 633 - iconst 39387160 + iconst 39387166 if_sethide invoke 2526 pop_int diff --git a/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash b/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash index ee1e580218..13847a16fe 100644 --- a/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash +++ b/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash @@ -1 +1 @@ -F62F3A22CA5AEAECCEFAA3A9EEDA095D778CC8BE08CD15CC4ECDC91159924746 \ No newline at end of file +90BE2B2F4CE3D5C7C00D2ECF6D552D9A285FD08DC47DDA93E5BFE86529B01E6E \ No newline at end of file diff --git a/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm b/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm index 3ea36dbf2a..1b0029a5de 100644 --- a/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm +++ b/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm @@ -12,19 +12,19 @@ iconst 73 iconst 73 iload 1 - iconst 10551308 + iconst 10551313 enum istore 3 iconst 73 iconst 73 iload 1 - iconst 10551302 + iconst 10551305 enum istore 4 iconst 73 iconst 73 iload 1 - iconst 10551310 + iconst 10551315 enum istore 5 iconst 103 @@ -76,14 +76,14 @@ LABEL70: iconst 0 iload 16 - iconst 39387150 + iconst 39387155 if_getwidth sub invoke 1045 istore 14 iconst 0 iload 17 - iconst 39387150 + iconst 39387155 if_getheight sub invoke 1045 @@ -279,7 +279,7 @@ LABEL189: iconst 73 iconst 73 iload 1 - iconst 10551309 + iconst 10551314 enum iload 5 iload 8 @@ -291,7 +291,7 @@ LABEL268: iconst 73 iconst 73 iload 1 - iconst 10551309 + iconst 10551314 enum iload 3 iconst 0 @@ -417,7 +417,7 @@ LABEL342: iconst 73 iconst 73 iload 1 - iconst 10551309 + iconst 10551314 enum iload 5 iload 8 @@ -429,7 +429,7 @@ LABEL385: iconst 73 iconst 73 iload 1 - iconst 10551309 + iconst 10551314 enum iload 3 iconst 0 @@ -439,7 +439,7 @@ LABEL395: iconst 73 iconst 73 iload 1 - iconst 10551311 + iconst 10551316 enum istore 18 iload 18 @@ -503,7 +503,7 @@ LABEL449: iconst 73 iconst 73 iload 1 - iconst 10551313 + iconst 10551318 enum istore 18 iconst 0 @@ -518,7 +518,7 @@ LABEL463: iconst 73 iconst 73 iload 1 - iconst 10551304 + iconst 10551307 enum if_hassub iconst 1 @@ -578,7 +578,7 @@ LABEL511: iconst 73 iconst 73 iload 1 - iconst 10551304 + iconst 10551307 enum istore 18 iconst 0 diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.hash b/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.hash index 1f6beef765..03cd95c44c 100644 --- a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.hash +++ b/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.hash @@ -1 +1 @@ -A1B6D1B291AA3594728DDEA47049E17119F5CCB6F8E757E1524FA89DE92F9A34 \ No newline at end of file +581520BBF672827101447FABB2D0F515AB1AF23FDABFAF374032DF36A82B0658 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm b/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm index 32595fbc27..93974dca56 100644 --- a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm +++ b/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm @@ -23,9 +23,9 @@ runelite_callback sub istore 1 - iconst 7602235 + iconst 7602237 if_getwidth - iconst 7602236 + iconst 7602238 if_getwidth sub istore 2 @@ -78,6 +78,6 @@ LABEL44: iconst 0 iconst 0 iconst 0 - iconst 7602236 + iconst 7602238 if_setposition return diff --git a/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash b/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash index f3f2393a6d..ea2bd47d4f 100644 --- a/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash +++ b/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash @@ -1 +1 @@ -1CEB4F2F85A8FECA9D9CB80DCAF0CB6A1FB3670607C6CDE80363BC40E95CA1E3 \ No newline at end of file +1BB0517CD647510451A0AF5FC160252892F4C3627BED106FEDEE44E62027A2D4 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm b/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm index 9b5c1d580a..b5ceb426f6 100644 --- a/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm +++ b/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm @@ -219,18 +219,100 @@ LABEL183: iload 1 iconst 0 if_icmpeq LABEL189 - jump LABEL339 + jump LABEL417 LABEL189: - invoke 1972 - iconst 0 + invoke 2357 + iconst 1 if_icmpeq LABEL193 - jump LABEL273 + jump LABEL267 LABEL193: iload 4 iconst 20 if_icmplt LABEL197 - jump LABEL272 + jump LABEL226 LABEL197: + iconst 10616867 + iconst 3 + iload 4 + cc_create + iconst 0 + iload 3 + iconst 1 + iconst 2 + cc_setsize + iconst 0 + iconst 0 + iconst 1 + iconst 2 + cc_setposition + iconst 0 + cc_setcolour + iconst 1 + cc_setfill + iconst 252 + cc_settrans + iload 4 + iconst 1 + add + iload 3 + iload 2 + sub + istore 3 + istore 4 + jump LABEL193 +LABEL226: + iconst 10616886 + iconst 3 + iconst 0 + cc_create + iconst 10616886 + iconst 3 + iconst 1 + cc_create 1 + iconst 16384 + iconst 1 + iconst 2 + iconst 0 + cc_setsize + iconst 16384 + iconst 1 + iconst 2 + iconst 0 + cc_setsize 1 + iconst 0 + iconst 0 + iconst 0 + iconst 0 + cc_setposition + iconst 0 + iconst 15 + iconst 0 + iconst 2 + cc_setposition 1 + iconst 16777215 + cc_setcolour + iconst 16777215 + cc_setcolour 1 + iconst 1 + cc_setfill + iconst 1 + cc_setfill 1 + iconst 100 + cc_settrans + iconst 120 + cc_settrans 1 + jump LABEL417 +LABEL267: + invoke 1972 + iconst 0 + if_icmpeq LABEL271 + jump LABEL351 +LABEL271: + iload 4 + iconst 20 + if_icmplt LABEL275 + jump LABEL350 +LABEL275: iconst 10616867 iconst 3 iload 4 @@ -293,7 +375,7 @@ LABEL197: cc_setfill iconst 1 cc_setfill 1 - iconst 251 + iconst 250 cc_settrans iconst 250 cc_settrans 1 @@ -305,12 +387,12 @@ LABEL197: sub istore 3 istore 4 - jump LABEL193 -LABEL272: + jump LABEL271 +LABEL350: sconst "chatboxBackgroundBuilt" runelite_callback - jump LABEL339 -LABEL273: + jump LABEL417 +LABEL351: iconst 10616867 iconst 3 iload 4 @@ -377,7 +459,7 @@ LABEL273: cc_settrans iconst 130 cc_settrans 1 -LABEL339: +LABEL417: iconst 10617389 iconst 1190 iconst 1187 @@ -389,24 +471,24 @@ LABEL339: invoke 838 iload 0 iconst 1 - if_icmpeq LABEL352 - jump LABEL356 -LABEL352: + if_icmpeq LABEL430 + jump LABEL434 +LABEL430: iconst 255 iconst 10616835 if_settrans - jump LABEL387 -LABEL356: + jump LABEL465 +LABEL434: invoke 1972 iconst 0 - if_icmpeq LABEL360 - jump LABEL364 -LABEL360: + if_icmpeq LABEL438 + jump LABEL442 +LABEL438: iconst 155 iconst 10616835 if_settrans - jump LABEL387 -LABEL364: + jump LABEL465 +LABEL442: iconst 255 iconst 10616835 if_settrans @@ -430,5 +512,5 @@ LABEL364: cc_setfill iconst 225 cc_settrans -LABEL387: +LABEL465: return diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java index dae0188f42..5213e5e174 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java @@ -27,7 +27,6 @@ package net.runelite.client.plugins.discord; import com.google.inject.Guice; import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; -import java.util.List; import javax.inject.Inject; import javax.inject.Named; import net.runelite.api.Client; @@ -35,7 +34,6 @@ import net.runelite.client.discord.DiscordPresence; import net.runelite.client.discord.DiscordService; import net.runelite.client.ws.PartyService; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,6 +42,7 @@ import static org.mockito.ArgumentMatchers.any; import org.mockito.Mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import org.mockito.junit.MockitoJUnitRunner; @@ -90,13 +89,12 @@ public class DiscordStateTest when(discordConfig.elapsedTimeType()).thenReturn(DiscordConfig.ElapsedTimeType.ACTIVITY); discordState.triggerEvent(DiscordGameEventType.IN_MENU); - verify(discordService).updatePresence(any(DiscordPresence.class)); + verify(discordService).updatePresence(any(DiscordPresence.class)); // menu presence discordState.checkForTimeout(); - ArgumentCaptor captor = ArgumentCaptor.forClass(DiscordPresence.class); - verify(discordService, times(2)).updatePresence(captor.capture()); - List captured = captor.getAllValues(); - assertNull(captured.get(captured.size() - 1).getEndTimestamp()); + + // menu is not clearable and so no changes will be made + verifyNoMoreInteractions(discordService); } @Test diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/timers/TimersPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/timers/TimersPluginTest.java index 69e2b1eec1..88fb40823d 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/timers/TimersPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/timers/TimersPluginTest.java @@ -30,6 +30,7 @@ import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; import java.time.Duration; import java.time.Instant; +import java.util.function.Predicate; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.Experience; @@ -37,15 +38,19 @@ import net.runelite.api.InventoryID; import net.runelite.api.ItemContainer; import net.runelite.api.ItemID; import net.runelite.api.Skill; +import net.runelite.api.Varbits; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.StatChanged; +import net.runelite.api.events.VarbitChanged; import net.runelite.client.game.ItemManager; import net.runelite.client.game.SpriteManager; import net.runelite.client.ui.overlay.infobox.InfoBox; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; +import net.runelite.client.util.RSTimeUnit; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @@ -377,6 +382,165 @@ public class TimersPluginTest assertEquals("00:06", timer.getText()); } + // region Arceuus spells + @Test + public void testDeathChargeCast() + { + when(timersConfig.showArceuus()).thenReturn(true); + when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(50); + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Upon the death of your next foe, some of your special attack energy will be restored.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor ibcaptor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(ibcaptor.capture()); + TimerTimer infoBox = (TimerTimer) ibcaptor.getValue(); + assertEquals(GameTimer.DEATH_CHARGE, infoBox.getTimer()); + assertEquals(Duration.of(50, RSTimeUnit.GAME_TICKS), infoBox.getDuration()); + } + + @Test + public void testDeathChargeCooldown() + { + when(timersConfig.showArceuusCooldown()).thenReturn(true); + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Upon the death of your next foe, some of your special attack energy will be restored.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor ibcaptor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(ibcaptor.capture()); + TimerTimer infoBox = (TimerTimer) ibcaptor.getValue(); + assertEquals(GameTimer.DEATH_CHARGE_COOLDOWN, infoBox.getTimer()); + } + + @Test + public void testDeathChargeRestore() + { + when(timersConfig.showArceuus()).thenReturn(true); + + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Some of your special attack energy has been restored.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + TimerTimer correctInfoBox = new TimerTimer(GameTimer.DEATH_CHARGE, Duration.ofSeconds(1), timersPlugin); + TimerTimer incorrectInfoBox = new TimerTimer(GameTimer.WARD_OF_ARCEUUS, Duration.ofSeconds(1), timersPlugin); + ArgumentCaptor> prcaptor = ArgumentCaptor.forClass(Predicate.class); + verify(infoBoxManager).removeIf(prcaptor.capture()); + Predicate pred = prcaptor.getValue(); + assertTrue(pred.test(correctInfoBox)); + assertFalse(pred.test(incorrectInfoBox)); + } + + @Test + public void testArceuusWard() + { + when(timersConfig.showArceuus()).thenReturn(true); + when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(57); + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Your defence against Arceuus magic has been strengthened.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor captor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(captor.capture()); + TimerTimer infoBox = (TimerTimer) captor.getValue(); + assertEquals(GameTimer.WARD_OF_ARCEUUS, infoBox.getTimer()); + assertEquals(Duration.of(57, RSTimeUnit.GAME_TICKS), infoBox.getDuration()); + } + + @Test + public void testArceuusWardCooldown() + { + when(timersConfig.showArceuusCooldown()).thenReturn(true); + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Your defence against Arceuus magic has been strengthened.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor captor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(captor.capture()); + TimerTimer infoBox = (TimerTimer) captor.getValue(); + assertEquals(GameTimer.WARD_OF_ARCEUUS_COOLDOWN, infoBox.getTimer()); + } + + @Test + public void testCorruptionCooldown() + { + when(timersConfig.showArceuusCooldown()).thenReturn(true); + when(client.getVar(any(Varbits.class))).thenReturn(0); + when(client.getVar(Varbits.CORRUPTION_COOLDOWN)).thenReturn(1); + timersPlugin.onVarbitChanged(new VarbitChanged()); + + ArgumentCaptor captor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(captor.capture()); + TimerTimer infoBox = (TimerTimer) captor.getValue(); + assertEquals(GameTimer.CORRUPTION_COOLDOWN, infoBox.getTimer()); + } + + @Test + public void testShadowVail() + { + when(timersConfig.showArceuus()).thenReturn(true); + when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(57); + + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Your thieving abilities have been enhanced.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor captor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(captor.capture()); + TimerTimer infoBox = (TimerTimer) captor.getValue(); + assertEquals(GameTimer.SHADOW_VEIL, infoBox.getTimer()); + } + + @Test + public void testShadowVailCooldown() + { + when(timersConfig.showArceuusCooldown()).thenReturn(true); + + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Your thieving abilities have been enhanced.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor captor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(captor.capture()); + TimerTimer infoBox = (TimerTimer) captor.getValue(); + assertEquals(GameTimer.SHADOW_VEIL_COOLDOWN, infoBox.getTimer()); + } + + @Test + public void testThrall() + { + when(timersConfig.showArceuus()).thenReturn(true); + when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(50); + + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "You resurrect a greater zombified thrall.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor ibcaptor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(ibcaptor.capture()); + TimerTimer infoBox = (TimerTimer) ibcaptor.getValue(); + assertEquals(GameTimer.RESURRECT_THRALL, infoBox.getTimer()); + } + + @Test + public void testThrallCooldown() + { + when(timersConfig.showArceuusCooldown()).thenReturn(true); + + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "You resurrect a greater zombified thrall.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + ArgumentCaptor ibcaptor = ArgumentCaptor.forClass(InfoBox.class); + verify(infoBoxManager).addInfoBox(ibcaptor.capture()); + TimerTimer infoBox = (TimerTimer) ibcaptor.getValue(); + assertEquals(GameTimer.RESURRECT_THRALL_COOLDOWN, infoBox.getTimer()); + } + + @Test + public void testThrallEnd() + { + when(timersConfig.showArceuus()).thenReturn(true); + when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(50); + + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", "Your greater zombified thrall returns to the grave.", "", 0); + timersPlugin.onChatMessage(chatMessage); + + verify(infoBoxManager).removeIf(any()); + } + // endregion + @Test public void testImbuedHeartBoost() { diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java b/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java index a61ced9d4f..925b3ae6c1 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java @@ -195,4 +195,10 @@ public interface RSActor extends RSRenderable, Actor @Import("pathLength") int getPathLength(); + + @Import("overheadTextCyclesRemaining") + int getOverheadCycle(); + + @Import("overheadTextCyclesRemaining") + void setOverheadCycle(int cycle); }