+ * 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.
+ */
+
+rootProject.name = "runelite-api"
+apply(from = "../common.settings.gradle.kts")
+
+includeBuild("../runelite-gradle-plugin")
diff --git a/runelite-api/src/main/interfaces/interfaces.toml b/runelite-api/src/main/interfaces/interfaces.toml
index f302980514e..0742286b166 100644
--- a/runelite-api/src/main/interfaces/interfaces.toml
+++ b/runelite-api/src/main/interfaces/interfaces.toml
@@ -58,24 +58,23 @@ tutorial_button=4
item_count_top=5
item_count_bar=6
item_count_bottom=7
-group_storage_button=8
-content_container=10
-tab_container=11
-item_container=13
-scrollbar=14
-search_button_background=42
-deposit_inventory=44
-deposit_equipment=46
-potion_store=48
-incinerator=49
-incinerator_confirm=50
-potionstore_content=52
-equipment_parent=80
-equipment_set_bonus=121
-settings_button=125
-equipment_button=126
-popup=128
-equipment_stat_bonus=134
+content_container=9
+tab_container=10
+item_container=12
+scrollbar=13
+search_button_background=41
+deposit_inventory=43
+deposit_equipment=45
+potion_store=119
+incinerator=48
+incinerator_confirm=49
+potionstore_content=51
+equipment_parent=54
+equipment_set_bonus=95
+settings_button=99
+equipment_button=100
+popup=102
+equipment_stat_bonus=108
[bank_inventory]
id=15
diff --git a/runelite-api/src/main/java/net/runelite/api/ActorSpotAnim.java b/runelite-api/src/main/java/net/runelite/api/ActorSpotAnim.java
index e2a0bb04159..4ba77383e7a 100644
--- a/runelite-api/src/main/java/net/runelite/api/ActorSpotAnim.java
+++ b/runelite-api/src/main/java/net/runelite/api/ActorSpotAnim.java
@@ -40,6 +40,18 @@ public interface ActorSpotAnim extends Node
*/
void setId(int id);
+ /**
+ * Get the client cycle that the spotanim starts at
+ * @return
+ */
+ int getStartCycle();
+
+ /**
+ * Set the client cycle that the spotanim starts at
+ * @param cycle
+ */
+ void setStartCycle(int cycle);
+
/**
* Get the spotanim height
* @return
diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java
index 08faddd452d..b841ff4f307 100644
--- a/runelite-api/src/main/java/net/runelite/api/Client.java
+++ b/runelite-api/src/main/java/net/runelite/api/Client.java
@@ -27,6 +27,7 @@
import com.jagex.oldscape.pub.OAuthApi;
import java.awt.Canvas;
import java.awt.Dimension;
+import java.io.FileDescriptor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
@@ -145,8 +146,7 @@ public interface Client extends OAuthApi, GameEngine
void setGameState(GameState gameState);
/**
- * Causes the client to shutdown. It is faster than
- * {@link java.applet.Applet#stop()} because it doesn't wait for 4000ms.
+ * Causes the client to shutdown.
* This will call {@link System#exit} when it is done
*/
void stopNow();
@@ -2438,4 +2438,7 @@ default Tile getSelectedSceneTile()
*/
@Nonnull
WorldView findWorldViewFromWorldPoint(WorldPoint point);
+
+ @Nullable
+ FileDescriptor getSocketFD();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/ClientConfiguration.java b/runelite-api/src/main/java/net/runelite/api/ClientConfiguration.java
new file mode 100644
index 00000000000..f7d0eb891e3
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/ClientConfiguration.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2025 Abex
+ * 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.api;
+
+import java.net.URL;
+
+public interface ClientConfiguration
+{
+ URL getCodeBase();
+ String getParameter(String key);
+ void onError(String code);
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java b/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java
index 4b80d581f50..15081b5584f 100644
--- a/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java
+++ b/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java
@@ -55,6 +55,10 @@ public interface DecorativeObject extends TileObject
*/
int getYOffset();
+ int getXOffset2();
+
+ int getYOffset2();
+
/**
* A bitfield containing various flags:
* {@code
diff --git a/runelite-api/src/main/java/net/runelite/api/GameEngine.java b/runelite-api/src/main/java/net/runelite/api/GameEngine.java
index 30faa9691d8..c37befbdfb7 100644
--- a/runelite-api/src/main/java/net/runelite/api/GameEngine.java
+++ b/runelite-api/src/main/java/net/runelite/api/GameEngine.java
@@ -31,6 +31,9 @@
*/
public interface GameEngine
{
+ void setConfiguration(ClientConfiguration configuration);
+ void initialize();
+
/**
* Gets the canvas that contains everything.
*
@@ -53,4 +56,9 @@ public interface GameEngine
boolean isClientThread();
void resizeCanvas();
+
+ /**
+ * Releases the startup block if "runelite.delaystart" is set true
+ */
+ public void unblockStartup();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/IconID.java b/runelite-api/src/main/java/net/runelite/api/IconID.java
index dccf3bbc07b..8c40b8ed29d 100644
--- a/runelite-api/src/main/java/net/runelite/api/IconID.java
+++ b/runelite-api/src/main/java/net/runelite/api/IconID.java
@@ -48,7 +48,10 @@ public enum IconID
NO_ENTRY(11),
CHAIN_LINK(12),
BOUNTY_HUNTER_EMBLEM(20),
- LEAGUE(22);
+ LEAGUE(22),
+ GROUP_IRONMAN(41),
+ HARDCORE_GROUP_IRONMAN(42),
+ UNRANKED_GROUP_IRONMAN(43);
private final int index;
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 d35518552e4..2ff20148c04 100644
--- a/runelite-api/src/main/java/net/runelite/api/ItemID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java
@@ -5615,10 +5615,10 @@ public final class ItemID
public static final int BLACK_MASK_1 = 8919;
public static final int BLACK_MASK = 8921;
public static final int WITCHWOOD_ICON = 8923;
- public static final int BANDANA_EYEPATCH = 8924;
- public static final int BANDANA_EYEPATCH_8925 = 8925;
- public static final int BANDANA_EYEPATCH_8926 = 8926;
- public static final int BANDANA_EYEPATCH_8927 = 8927;
+ public static final int BANDANA_EYEPATCH_WHITE = 8924;
+ public static final int BANDANA_EYEPATCH_RED = 8925;
+ public static final int BANDANA_EYEPATCH_BLUE = 8926;
+ public static final int BANDANA_EYEPATCH_BROWN = 8927;
public static final int HAT_EYEPATCH = 8928;
public static final int CRABCLAW_HOOK = 8929;
public static final int PIPE_SECTION = 8930;
@@ -13552,8 +13552,8 @@ public final class ItemID
public static final int SIGIL_OF_AGILE_FORTUNE_28493 = 28493;
public static final int SIGIL_OF_THE_FOOD_MASTER = 28495;
public static final int SIGIL_OF_THE_FOOD_MASTER_28496 = 28496;
- public static final int SIGIL_OF_THE_WELLFED = 28498;
- public static final int SIGIL_OF_THE_WELLFED_28499 = 28499;
+ public static final int SIGIL_OF_THE_WELL_FED = 28498;
+ public static final int SIGIL_OF_THE_WELL_FED_28499 = 28499;
public static final int SIGIL_OF_THE_INFERNAL_CHEF = 28501;
public static final int SIGIL_OF_THE_INFERNAL_CHEF_28502 = 28502;
public static final int SIGIL_OF_THE_INFERNAL_SMITH = 28504;
@@ -13582,10 +13582,10 @@ public final class ItemID
public static final int CORRUPTED_SCYTHE_OF_VITUR_UNCHARGED = 28545;
public static final int CORRUPTED_TUMEKENS_SHADOW = 28547;
public static final int CORRUPTED_TUMEKENS_SHADOW_UNCHARGED = 28549;
- public static final int QUEST_LAMP = 28551;
- public static final int QUEST_LAMP_28552 = 28552;
- public static final int QUEST_LAMP_28553 = 28553;
- public static final int QUEST_LAMP_28554 = 28554;
+ public static final int FREMENNIK_QUEST_LAMP = 28551;
+ public static final int ELF_QUEST_LAMP = 28552;
+ public static final int GNOME_QUEST_LAMP = 28553;
+ public static final int MAHJARRAT_1_QUEST_LAMP = 28554;
public static final int STARTER_BOW_28555 = 28555;
public static final int STARTER_STAFF_28557 = 28557;
public static final int STARTER_SWORD_28559 = 28559;
@@ -14125,22 +14125,22 @@ public final class ItemID
public static final int SIGIL_OF_METICULOUSNESS_29649 = 29649;
public static final int SIGIL_OF_REVOKED_LIMITATION = 29651;
public static final int SIGIL_OF_REVOKED_LIMITATION_29652 = 29652;
- public static final int SIGIL_OF_RAMPART = 29654;
- public static final int SIGIL_OF_RAMPART_29655 = 29655;
+ public static final int SIGIL_OF_THE_RAMPART = 29654;
+ public static final int SIGIL_OF_THE_RAMPART_29655 = 29655;
public static final int SIGIL_OF_DECEPTION = 29657;
public static final int SIGIL_OF_DECEPTION_29658 = 29658;
- public static final int SIGIL_OF_LITHE = 29660;
- public static final int SIGIL_OF_LITHE_29661 = 29661;
- public static final int SIGIL_OF_ADROIT = 29663;
- public static final int SIGIL_OF_ADROIT_29664 = 29664;
+ public static final int SIGIL_OF_LITHENESS = 29660;
+ public static final int SIGIL_OF_LITHENESS_29661 = 29661;
+ public static final int SIGIL_OF_THE_ADROIT = 29663;
+ public static final int SIGIL_OF_THE_ADROIT_29664 = 29664;
public static final int SIGIL_OF_ONSLAUGHT = 29666;
public static final int SIGIL_OF_ONSLAUGHT_29667 = 29667;
public static final int SIGIL_OF_RESTORATION = 29669;
public static final int SIGIL_OF_RESTORATION_29670 = 29670;
- public static final int SIGIL_OF_SWASHBUCKLER = 29672;
- public static final int SIGIL_OF_SWASHBUCKLER_29673 = 29673;
- public static final int SIGIL_OF_GUNSLINGER = 29675;
- public static final int SIGIL_OF_GUNSLINGER_29676 = 29676;
+ public static final int SIGIL_OF_THE_SWASHBUCKLER = 29672;
+ public static final int SIGIL_OF_THE_SWASHBUCKLER_29673 = 29673;
+ public static final int SIGIL_OF_THE_GUNSLINGER = 29675;
+ public static final int SIGIL_OF_THE_GUNSLINGER_29676 = 29676;
public static final int SIGIL_OF_ARCANE_SWIFTNESS = 29678;
public static final int SIGIL_OF_ARCANE_SWIFTNESS_29679 = 29679;
public static final int GUTHIXIAN_TEMPLE_TELEPORT = 29684;
@@ -15116,17 +15116,17 @@ public final class ItemID
public static final int FETID_KEY = 31744;
public static final int CAPTURED_WIND_MOTE = 31745;
public static final int GURTOBS_FABRIC_ROLL = 31746;
- public static final int NIFTY_HAT = 31748;
- public static final int NIFTY_JACKET = 31750;
- public static final int NIFTY_TROUSERS = 31752;
- public static final int NIFTY_SHOES = 31754;
+ public static final int SWAMP_CRUISERS_HAT = 31748;
+ public static final int SWAMP_CRUISERS_JACKET = 31750;
+ public static final int SWAMP_CRUISERS_TROUSERS = 31752;
+ public static final int SWAMP_CRUISERS_SHOES = 31754;
public static final int SERRATED_KEY = 31756;
public static final int HEART_OF_ITHELL = 31757;
public static final int GWYNAS_FABRIC_ROLL = 31758;
- public static final int SLEEK_HAT = 31760;
- public static final int SLEEK_JACKET = 31762;
- public static final int SLEEK_TROUSERS = 31764;
- public static final int SLEEK_SHOES = 31766;
+ public static final int CRYSTAL_GLIDERS_HAT = 31760;
+ public static final int CRYSTAL_GLIDERS_JACKET = 31762;
+ public static final int CRYSTAL_GLIDERS_TROUSERS = 31764;
+ public static final int CRYSTAL_GLIDERS_SHOES = 31766;
public static final int SUNKEN_RUM = 31768;
public static final int TINY_PEARL = 31770;
public static final int SMALL_PEARL = 31773;
@@ -15352,8 +15352,8 @@ public final class ItemID
public static final int TEAK_MAST_AND_LINEN_SAILS = 32167;
public static final int TEAK_MAST_AND_LINEN_SAILS_32168 = 32168;
public static final int MAHOGANY_MAST_AND_CANVAS_SAILS = 32169;
- public static final int MAHOGANY_MAST_AND_LINEN_SAILS = 32170;
- public static final int MAHOGANY_MAST_AND_LINEN_SAILS_32171 = 32171;
+ public static final int MAHOGANY_MAST_AND_CANVAS_SAILS_32170 = 32170;
+ public static final int MAHOGANY_MAST_AND_CANVAS_SAILS_32171 = 32171;
public static final int CAMPHOR_MAST_AND_CANVAS_SAILS = 32172;
public static final int CAMPHOR_MAST_AND_LINEN_SAILS = 32173;
public static final int CAMPHOR_MAST_AND_LINEN_SAILS_32174 = 32174;
@@ -15550,7 +15550,7 @@ public final class ItemID
public static final int SMALL_KEY_THE_PANDEMONIUM = 32411;
public static final int SMALL_KEY_THE_ONYX_CREST = 32412;
public static final int SMALL_KEY_TEAR_OF_THE_SOUL = 32413;
- public static final int SMALL_KEY_YNSDAIL = 32414;
+ public static final int SMALL_KEY_YNYSDAIL = 32414;
public static final int SMALL_KEY_MINOTAURS_REST = 32415;
public static final int SMALL_KEY_BUCCANEERS_HAVEN = 32416;
public static final int SMALL_KEY_ISLE_OF_BONES = 32417;
@@ -16018,5 +16018,121 @@ public final class ItemID
public static final int IRONWOOD_LOGS = 32907;
public static final int ROSEWOOD_LOGS = 32910;
public static final int JAR_OF_FEATHERS = 32921;
+ public static final int STEEL_NAILS_32923 = 32923;
+ public static final int CRATE_OF_ARROWTIPS_32924 = 32924;
+ public static final int CRATE_OF_CLOTHES_32925 = 32925;
+ public static final int LOVLEY_JUBBLY_BIB = 32928;
+ public static final int BEER_BELLY_SWEATER = 32930;
+ public static final int JAD_JUMPER = 32932;
+ public static final int CHRISTMAS_DINNER = 32934;
+ public static final int CRATE_OF_FURS_32936 = 32936;
+ public static final int CRATE_OF_FISH_32937 = 32937;
+ public static final int CRATE_OF_FISH_32938 = 32938;
+ public static final int CRATE_OF_FISH_32939 = 32939;
+ public static final int CRATE_OF_SAND_32940 = 32940;
+ public static final int CRATE_OF_RED_CORAL_32941 = 32941;
+ public static final int CRATE_OF_FISH_32942 = 32942;
+ public static final int CRATE_OF_SPICES_32943 = 32943;
+ public static final int CRATE_OF_JEWELLERY_32944 = 32944;
+ public static final int CRATE_OF_BAIT_32945 = 32945;
+ public static final int CRATE_OF_COCONUTS_32946 = 32946;
+ public static final int CRATE_OF_ARROWTIPS_32947 = 32947;
+ public static final int CRATE_OF_PINEAPPLES_32948 = 32948;
+ public static final int CRATE_OF_LOGS_32949 = 32949;
+ public static final int CRATE_OF_PLANKS_32950 = 32950;
+ public static final int CRATE_OF_LOGS_32951 = 32951;
+ public static final int CRATE_OF_ALPACA_WOOL_32952 = 32952;
+ public static final int CRATE_OF_PLANKS_32953 = 32953;
+ public static final int CRATE_OF_FABRICS_32954 = 32954;
+ public static final int CRATE_OF_PLANKS_32955 = 32955;
+ public static final int CRATE_OF_LOGS_32956 = 32956;
+ public static final int CRATE_OF_PLANKS_32957 = 32957;
+ public static final int CRATE_OF_FISH_32958 = 32958;
+ public static final int CRATE_OF_FISH_32959 = 32959;
+ public static final int CRATE_OF_GEMS_32960 = 32960;
+ public static final int CRATE_OF_FISH_32961 = 32961;
+ public static final int CRATE_OF_FISH_32962 = 32962;
+ public static final int CRATE_OF_POTIONS_32963 = 32963;
+ public static final int CRATE_OF_FURS_32964 = 32964;
+ public static final int CRATE_OF_SWAMP_PASTE_32965 = 32965;
+ public static final int CRATE_OF_PLANKS_32966 = 32966;
+ public static final int CRATE_OF_BOOKS_32967 = 32967;
+ public static final int CRATE_OF_BOOKS_32968 = 32968;
+ public static final int CRATE_OF_JEWELLERY_32969 = 32969;
+ public static final int CRATE_OF_JEWELLERY_32970 = 32970;
+ public static final int CRATE_OF_PLANKS_32971 = 32971;
+ public static final int CRATE_OF_FURS_32972 = 32972;
+ public static final int CRATE_OF_FISH_32973 = 32973;
+ public static final int CRATE_OF_FISH_32974 = 32974;
+ public static final int CRATE_OF_SILK_32975 = 32975;
+ public static final int CRATE_OF_FISH_32976 = 32976;
+ public static final int CRATE_OF_LOGS_32977 = 32977;
+ public static final int CRATE_OF_SWORDS_32978 = 32978;
+ public static final int CRATE_OF_FISH_32979 = 32979;
+ public static final int CRATE_OF_FISH_32980 = 32980;
+ public static final int CRATE_OF_SEEDS_32981 = 32981;
+ public static final int CRATE_OF_SWORDS_32982 = 32982;
+ public static final int CRATE_OF_PLATEBODIES_32983 = 32983;
+ public static final int CRATE_OF_SWORDS_32984 = 32984;
+ public static final int CRATE_OF_ORES_32985 = 32985;
+ public static final int CRATE_OF_LOGS_32986 = 32986;
+ public static final int CRATE_OF_POTIONS_32987 = 32987;
+ public static final int CRATE_OF_FISH_32988 = 32988;
+ public static final int CRATE_OF_FISH_32989 = 32989;
+ public static final int CRATE_OF_RUNES_32990 = 32990;
+ public static final int CRATE_OF_FISH_32991 = 32991;
+ public static final int CRATE_OF_PLANKS_32992 = 32992;
+ public static final int CRATE_OF_TEAK_LOGS_32993 = 32993;
+ public static final int CRATE_OF_RUNES_32994 = 32994;
+ public static final int CRATE_OF_COCKTAILS_32995 = 32995;
+ public static final int CRATE_OF_SHIP_PARTS_32996 = 32996;
+ public static final int CRATE_OF_RUM_32997 = 32997;
+ public static final int CRATE_OF_JAVELINS_32998 = 32998;
+ public static final int CRATE_OF_POTIONS_32999 = 32999;
+ public static final int CRATE_OF_ORES_33000 = 33000;
+ public static final int CRATE_OF_POTIONS_33001 = 33001;
+ public static final int HOLY_MOLEYS = 33002;
+ public static final int KHARIDIAN_QUEST_LAMP = 33004;
+ public static final int MYREQUE_QUEST_LAMP = 33005;
+ public static final int DRAGONKIN_QUEST_LAMP = 33006;
+ public static final int MAHJARRAT_2_QUEST_LAMP = 33007;
+ public static final int CAMELOT_QUEST_LAMP = 33008;
+ public static final int RECIPE_FOR_DISASTER_QUEST_LAMP = 33009;
+ public static final int RUINOUS_POWERS_33010 = 33010;
+ public static final int ANNIHILATION_WEAPON_SCROLL = 33012;
+ public static final int ANNIHILATION_BLUEPRINTS = 33015;
+ public static final int ANNIHILATION_TELEPORT_SCROLL = 33018;
+ public static final int BOW_OF_FAERDHINEN_C_33021 = 33021;
+ public static final int CRYSTAL_BODY_33023 = 33023;
+ public static final int CRYSTAL_BODY_INACTIVE_33025 = 33025;
+ public static final int CRYSTAL_LEGS_33027 = 33027;
+ public static final int CRYSTAL_LEGS_INACTIVE_33029 = 33029;
+ public static final int CRYSTAL_HELM_33031 = 33031;
+ public static final int CRYSTAL_HELM_INACTIVE_33033 = 33033;
+ public static final int TOXIC_STAFF_UNCHARGED_33035 = 33035;
+ public static final int TOXIC_STAFF_DEADMAN = 33036;
+ public static final int THE_DOGSWORD_33038 = 33038;
+ public static final int THUNDER_KHOPESH_33041 = 33041;
+ public static final int TRINKET_OF_AVARICE = 33044;
+ public static final int TRINKET_OF_FORTUITY_INACTIVE = 33047;
+ public static final int TRINKET_OF_FORTUITY_ACTIVE = 33050;
+ public static final int SIGIL_OF_THE_GODS = 33053;
+ public static final int SIGIL_OF_THE_GODS_33054 = 33054;
+ public static final int SIGIL_OF_CONCLUSION = 33055;
+ public static final int SIGIL_OF_CONCLUSION_33056 = 33056;
+ public static final int SIGIL_OF_AUTOMATION = 33057;
+ public static final int SIGIL_OF_AUTOMATION_33058 = 33058;
+ public static final int SIGIL_OF_ETERNAL_BELIEF = 33059;
+ public static final int SIGIL_OF_ETERNAL_BELIEF_33060 = 33060;
+ public static final int SIGIL_OF_EFFICIENCY = 33061;
+ public static final int SIGIL_OF_EFFICIENCY_33062 = 33062;
+ public static final int STARTER_CAPE = 33063;
+ public static final int DEADMANS_SKULL = 33065;
+ public static final int HOODED_SLAYER_HELMET = 33066;
+ public static final int HOODED_SLAYER_HELMET_I = 33068;
+ public static final int HOODED_SLAYER_HELMET_I_33070 = 33070;
+ public static final int HOODED_SLAYER_HELMET_I_33072 = 33072;
+ public static final int FACILITY_BOTTLE_EMPTY = 33074;
+ public static final int FACILITY_BOTTLE_FULL = 33077;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/NpcID.java b/runelite-api/src/main/java/net/runelite/api/NpcID.java
index 7b672f40f3c..a9d7037b598 100644
--- a/runelite-api/src/main/java/net/runelite/api/NpcID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NpcID.java
@@ -12360,6 +12360,7 @@ public final class NpcID
public static final int RUSTY_CHEST = 14811;
public static final int TARNISHED_CHEST = 14812;
public static final int RUSTY_CHEST_14813 = 14813;
+ public static final int REVENANT_IMP_14814 = 14814;
public static final int SPOOKY_CHAIR = 14815;
public static final int MAKO = 14816;
public static final int MORA = 14817;
@@ -12402,6 +12403,8 @@ public final class NpcID
public static final int SHELLBANE_GRYPHON = 14860;
public static final int ELDER_KELMO = 14861;
public static final int ELDER_NAMA = 14863;
+ public static final int REVENANT_GOBLIN_14864 = 14864;
+ public static final int REVENANT_PYREFIEND_14865 = 14865;
public static final int HENDERSON = 14866;
public static final int ONE_EYED_ROSALEE = 14867;
public static final int CAPTAIN_DAWSON = 14868;
@@ -12672,6 +12675,14 @@ public final class NpcID
public static final int DRINK_TROLL_QUEEN = 15175;
public static final int DRINK_TROLL_QUEEN_15176 = 15176;
public static final int SAILING_CAT = 15177;
+ public static final int REVENANT_HOBGOBLIN_15178 = 15178;
+ public static final int REVENANT_CYCLOPS_15179 = 15179;
+ public static final int REVENANT_HELLHOUND_15180 = 15180;
+ public static final int REVENANT_DEMON_15181 = 15181;
+ public static final int REVENANT_ORK_15182 = 15182;
+ public static final int REVENANT_DARK_BEAST_15183 = 15183;
+ public static final int REVENANT_KNIGHT_15184 = 15184;
+ public static final int REVENANT_DRAGON_15185 = 15185;
public static final int PUNCHING_BAG = 15191;
public static final int PUNCHING_BAG_15192 = 15192;
public static final int DPS_CALC = 15193;
@@ -12718,6 +12729,7 @@ public final class NpcID
public static final int DOLPHIN = 15234;
public static final int DOLPHIN_15235 = 15235;
public static final int DOLPHIN_CALF = 15236;
+ public static final int ZEMOUREGAL_15237 = 15237;
public static final int JUNIOR_JIM_15238 = 15238;
public static final int JUMBO_JIM = 15239;
public static final int CREW_REGISTRAR = 15245;
@@ -12980,5 +12992,28 @@ public final class NpcID
public static final int TRADER_CREWMEMBER_15544 = 15544;
public static final int TRADER_CREWMEMBER_15545 = 15545;
public static final int TRADER_CREWMEMBER_15546 = 15546;
+ public static final int BIG_EVIL_CHICKEN = 15547;
+ public static final int SCURRIUS_15548 = 15548;
+ public static final int PHANTOM_MUSPAH_15549 = 15549;
+ public static final int SPLATTER_15550 = 15550;
+ public static final int TUMEKENS_WARDEN_15551 = 15551;
+ public static final int ELIDINIS_WARDEN_15552 = 15552;
+ public static final int I_DSCIM_YOU = 15553;
+ public static final int SOL_HEREDIT_15554 = 15554;
+ public static final int YAMA_15555 = 15555;
+ public static final int PESTILENT_BLOAT_15556 = 15556;
+ public static final int TZTOKJADREK = 15557;
+ public static final int ZEMOUREGAL_SUMMON = 15558;
+ public static final int ZEMOUREGAL_SUMMON_15559 = 15559;
+ public static final int ZEMOUREGAL_SUMMON_15560 = 15560;
+ public static final int ZEMOUREGAL_SUMMON_15561 = 15561;
+ public static final int ZEMOUREGAL_SUMMON_15562 = 15562;
+ public static final int ZEMOUREGAL_SUMMON_15563 = 15563;
+ public static final int ZEMOUREGAL_15564 = 15564;
+ public static final int GUARD_15566 = 15566;
+ public static final int GUARD_15568 = 15568;
+ public static final int KETZEK_15572 = 15572;
+ public static final int KETZEK_15573 = 15573;
+ public static final int TZTOKJAD_15574 = 15574;
/* This file is automatically generated. Do not edit. */
}
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 1b5bfb58e7d..9eeb7134727 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullItemID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullItemID.java
@@ -13686,59 +13686,6 @@ public final class NullItemID
public static final int NULL_25987 = 25987;
public static final int NULL_25988 = 25988;
public static final int NULL_25989 = 25989;
- public static final int NULL_25992 = 25992;
- public static final int NULL_25995 = 25995;
- public static final int NULL_25998 = 25998;
- public static final int NULL_26001 = 26001;
- public static final int NULL_26004 = 26004;
- public static final int NULL_26007 = 26007;
- public static final int NULL_26010 = 26010;
- public static final int NULL_26013 = 26013;
- public static final int NULL_26016 = 26016;
- public static final int NULL_26019 = 26019;
- public static final int NULL_26022 = 26022;
- public static final int NULL_26025 = 26025;
- public static final int NULL_26028 = 26028;
- public static final int NULL_26031 = 26031;
- public static final int NULL_26034 = 26034;
- public static final int NULL_26037 = 26037;
- public static final int NULL_26040 = 26040;
- public static final int NULL_26043 = 26043;
- public static final int NULL_26046 = 26046;
- public static final int NULL_26049 = 26049;
- public static final int NULL_26052 = 26052;
- public static final int NULL_26055 = 26055;
- public static final int NULL_26058 = 26058;
- public static final int NULL_26061 = 26061;
- public static final int NULL_26064 = 26064;
- public static final int NULL_26067 = 26067;
- public static final int NULL_26070 = 26070;
- public static final int NULL_26073 = 26073;
- public static final int NULL_26076 = 26076;
- public static final int NULL_26079 = 26079;
- public static final int NULL_26082 = 26082;
- public static final int NULL_26085 = 26085;
- public static final int NULL_26088 = 26088;
- public static final int NULL_26091 = 26091;
- public static final int NULL_26094 = 26094;
- public static final int NULL_26097 = 26097;
- public static final int NULL_26100 = 26100;
- public static final int NULL_26103 = 26103;
- public static final int NULL_26106 = 26106;
- public static final int NULL_26109 = 26109;
- public static final int NULL_26112 = 26112;
- public static final int NULL_26115 = 26115;
- public static final int NULL_26118 = 26118;
- public static final int NULL_26121 = 26121;
- public static final int NULL_26124 = 26124;
- public static final int NULL_26127 = 26127;
- public static final int NULL_26130 = 26130;
- public static final int NULL_26133 = 26133;
- public static final int NULL_26136 = 26136;
- public static final int NULL_26139 = 26139;
- public static final int NULL_26142 = 26142;
- public static final int NULL_26145 = 26145;
- public static final int NULL_26148 = 26148;
public static final int NULL_26155 = 26155;
public static final int NULL_26157 = 26157;
public static final int NULL_26159 = 26159;
@@ -14738,24 +14685,6 @@ public final class NullItemID
public static final int NULL_28391 = 28391;
public static final int NULL_28411 = 28411;
public static final int NULL_28472 = 28472;
- public static final int NULL_28479 = 28479;
- public static final int NULL_28482 = 28482;
- public static final int NULL_28485 = 28485;
- public static final int NULL_28488 = 28488;
- public static final int NULL_28491 = 28491;
- public static final int NULL_28494 = 28494;
- public static final int NULL_28497 = 28497;
- public static final int NULL_28500 = 28500;
- public static final int NULL_28503 = 28503;
- public static final int NULL_28506 = 28506;
- public static final int NULL_28509 = 28509;
- public static final int NULL_28512 = 28512;
- public static final int NULL_28515 = 28515;
- public static final int NULL_28518 = 28518;
- public static final int NULL_28521 = 28521;
- public static final int NULL_28524 = 28524;
- public static final int NULL_28527 = 28527;
- public static final int NULL_28530 = 28530;
public static final int NULL_28532 = 28532;
public static final int NULL_28533 = 28533;
public static final int NULL_28535 = 28535;
@@ -15326,17 +15255,6 @@ public final class NullItemID
public static final int NULL_29644 = 29644;
public static final int NULL_29645 = 29645;
public static final int NULL_29647 = 29647;
- public static final int NULL_29650 = 29650;
- public static final int NULL_29653 = 29653;
- public static final int NULL_29656 = 29656;
- public static final int NULL_29659 = 29659;
- public static final int NULL_29662 = 29662;
- public static final int NULL_29665 = 29665;
- public static final int NULL_29668 = 29668;
- public static final int NULL_29671 = 29671;
- public static final int NULL_29674 = 29674;
- public static final int NULL_29677 = 29677;
- public static final int NULL_29680 = 29680;
public static final int NULL_29681 = 29681;
public static final int NULL_29682 = 29682;
public static final int NULL_29683 = 29683;
@@ -16678,5 +16596,45 @@ public final class NullItemID
public static final int NULL_32919 = 32919;
public static final int NULL_32920 = 32920;
public static final int NULL_32922 = 32922;
+ public static final int NULL_32926 = 32926;
+ public static final int NULL_32929 = 32929;
+ public static final int NULL_32931 = 32931;
+ public static final int NULL_32933 = 32933;
+ public static final int NULL_32935 = 32935;
+ public static final int NULL_33003 = 33003;
+ public static final int NULL_33011 = 33011;
+ public static final int NULL_33013 = 33013;
+ public static final int NULL_33014 = 33014;
+ public static final int NULL_33016 = 33016;
+ public static final int NULL_33017 = 33017;
+ public static final int NULL_33019 = 33019;
+ public static final int NULL_33020 = 33020;
+ public static final int NULL_33022 = 33022;
+ public static final int NULL_33024 = 33024;
+ public static final int NULL_33026 = 33026;
+ public static final int NULL_33028 = 33028;
+ public static final int NULL_33030 = 33030;
+ public static final int NULL_33032 = 33032;
+ public static final int NULL_33034 = 33034;
+ public static final int NULL_33037 = 33037;
+ public static final int NULL_33039 = 33039;
+ public static final int NULL_33040 = 33040;
+ public static final int NULL_33042 = 33042;
+ public static final int NULL_33043 = 33043;
+ public static final int NULL_33045 = 33045;
+ public static final int NULL_33046 = 33046;
+ public static final int NULL_33048 = 33048;
+ public static final int NULL_33049 = 33049;
+ public static final int NULL_33051 = 33051;
+ public static final int NULL_33052 = 33052;
+ public static final int NULL_33064 = 33064;
+ public static final int NULL_33067 = 33067;
+ public static final int NULL_33069 = 33069;
+ public static final int NULL_33071 = 33071;
+ public static final int NULL_33073 = 33073;
+ public static final int NULL_33075 = 33075;
+ public static final int NULL_33076 = 33076;
+ public static final int NULL_33078 = 33078;
+ public static final int NULL_33079 = 33079;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
index 35a4c0af240..58a72148a36 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
@@ -2545,5 +2545,10 @@ public final class NullNpcID
public static final int NULL_15493 = 15493;
public static final int NULL_15494 = 15494;
public static final int NULL_15495 = 15495;
+ public static final int NULL_15565 = 15565;
+ public static final int NULL_15567 = 15567;
+ public static final int NULL_15569 = 15569;
+ public static final int NULL_15570 = 15570;
+ public static final int NULL_15571 = 15571;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
index cc2c7944ccf..327141d4bfd 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
@@ -30266,6 +30266,7 @@ public final class NullObjectID
public static final int NULL_58523 = 58523;
public static final int NULL_58524 = 58524;
public static final int NULL_58526 = 58526;
+ public static final int NULL_58527 = 58527;
public static final int NULL_58528 = 58528;
public static final int NULL_58529 = 58529;
public static final int NULL_58530 = 58530;
@@ -31130,6 +31131,45 @@ public final class NullObjectID
public static final int NULL_60237 = 60237;
public static final int NULL_60238 = 60238;
public static final int NULL_60239 = 60239;
+ public static final int NULL_60245 = 60245;
+ public static final int NULL_60247 = 60247;
+ public static final int NULL_60249 = 60249;
+ public static final int NULL_60251 = 60251;
+ public static final int NULL_60252 = 60252;
+ public static final int NULL_60253 = 60253;
+ public static final int NULL_60254 = 60254;
+ public static final int NULL_60255 = 60255;
+ public static final int NULL_60256 = 60256;
+ public static final int NULL_60257 = 60257;
+ public static final int NULL_60258 = 60258;
+ public static final int NULL_60259 = 60259;
+ public static final int NULL_60260 = 60260;
+ public static final int NULL_60261 = 60261;
+ public static final int NULL_60262 = 60262;
+ public static final int NULL_60263 = 60263;
+ public static final int NULL_60264 = 60264;
+ public static final int NULL_60265 = 60265;
+ public static final int NULL_60266 = 60266;
+ public static final int NULL_60267 = 60267;
+ public static final int NULL_60268 = 60268;
+ public static final int NULL_60269 = 60269;
+ public static final int NULL_60270 = 60270;
+ public static final int NULL_60271 = 60271;
+ public static final int NULL_60272 = 60272;
+ public static final int NULL_60273 = 60273;
+ public static final int NULL_60274 = 60274;
+ public static final int NULL_60275 = 60275;
+ public static final int NULL_60276 = 60276;
+ public static final int NULL_60277 = 60277;
+ public static final int NULL_60278 = 60278;
+ public static final int NULL_60279 = 60279;
+ public static final int NULL_60280 = 60280;
+ public static final int NULL_60281 = 60281;
+ public static final int NULL_60282 = 60282;
+ public static final int NULL_60283 = 60283;
+ public static final int NULL_60284 = 60284;
+ public static final int NULL_60285 = 60285;
+ public static final int NULL_60286 = 60286;
public static final int NULL_60311 = 60311;
public static final int NULL_60322 = 60322;
public static final int NULL_60323 = 60323;
@@ -31285,5 +31325,12 @@ public final class NullObjectID
public static final int NULL_60550 = 60550;
public static final int NULL_60565 = 60565;
public static final int NULL_60569 = 60569;
+ public static final int NULL_60615 = 60615;
+ public static final int NULL_60617 = 60617;
+ public static final int NULL_60618 = 60618;
+ public static final int NULL_60643 = 60643;
+ public static final int NULL_60646 = 60646;
+ public static final int NULL_60661 = 60661;
+ public static final int NULL_60662 = 60662;
/* 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 9814fbcbeba..f26d96b5662 100644
--- a/runelite-api/src/main/java/net/runelite/api/ObjectID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ObjectID.java
@@ -28508,6 +28508,7 @@ public final class ObjectID
public static final int ROCKS_58922 = 58922;
public static final int NICKEL_ROCKS = 58923;
public static final int ROCKS_58924 = 58924;
+ public static final int CABINET_58925 = 58925;
public static final int SCOREBOARD_58926 = 58926;
public static final int SCOREBOARD_58927 = 58927;
public static final int SCOREBOARD_58928 = 58928;
@@ -28717,6 +28718,7 @@ public final class ObjectID
public static final int SAILS_59549 = 59549;
public static final int SAILS_59550 = 59550;
public static final int SAILS_59551 = 59551;
+ public static final int CREVICE_59552 = 59552;
public static final int SAILS_59553 = 59553;
public static final int HELM = 59555;
public static final int HELM_59556 = 59556;
@@ -29105,48 +29107,9 @@ public final class ObjectID
public static final int HELM_60242 = 60242;
public static final int SAILS_60243 = 60243;
public static final int SAILS_60244 = 60244;
- public static final int BASIC_CARGO_HOLD = 60245;
- public static final int BASIC_CARGO_HOLD_60246 = 60246;
- public static final int OAK_CARGO_HOLD = 60247;
- public static final int OAK_CARGO_HOLD_60248 = 60248;
- public static final int TEAK_CARGO_HOLD = 60249;
- public static final int TEAK_CARGO_HOLD_60250 = 60250;
- public static final int MAHOGANY_CARGO_HOLD = 60251;
- public static final int MAHOGANY_CARGO_HOLD_60252 = 60252;
- public static final int CAMPHOR_CARGO_HOLD = 60253;
- public static final int CAMPHOR_CARGO_HOLD_60254 = 60254;
- public static final int IRONWOOD_CARGO_HOLD = 60255;
- public static final int IRONWOOD_CARGO_HOLD_60256 = 60256;
- public static final int ROSEWOOD_CARGO_HOLD = 60257;
- public static final int ROSEWOOD_CARGO_HOLD_60258 = 60258;
- public static final int BASIC_CARGO_HOLD_60259 = 60259;
- public static final int BASIC_CARGO_HOLD_60260 = 60260;
- public static final int OAK_CARGO_HOLD_60261 = 60261;
- public static final int OAK_CARGO_HOLD_60262 = 60262;
- public static final int TEAK_CARGO_HOLD_60263 = 60263;
- public static final int TEAK_CARGO_HOLD_60264 = 60264;
- public static final int MAHOGANY_CARGO_HOLD_60265 = 60265;
- public static final int MAHOGANY_CARGO_HOLD_60266 = 60266;
- public static final int CAMPHOR_CARGO_HOLD_60267 = 60267;
- public static final int CAMPHOR_CARGO_HOLD_60268 = 60268;
- public static final int IRONWOOD_CARGO_HOLD_60269 = 60269;
- public static final int IRONWOOD_CARGO_HOLD_60270 = 60270;
- public static final int ROSEWOOD_CARGO_HOLD_60271 = 60271;
- public static final int ROSEWOOD_CARGO_HOLD_60272 = 60272;
- public static final int BASIC_CARGO_HOLD_60273 = 60273;
- public static final int BASIC_CARGO_HOLD_60274 = 60274;
- public static final int OAK_CARGO_HOLD_60275 = 60275;
- public static final int OAK_CARGO_HOLD_60276 = 60276;
- public static final int TEAK_CARGO_HOLD_60277 = 60277;
- public static final int TEAK_CARGO_HOLD_60278 = 60278;
- public static final int MAHOGANY_CARGO_HOLD_60279 = 60279;
- public static final int MAHOGANY_CARGO_HOLD_60280 = 60280;
- public static final int CAMPHOR_CARGO_HOLD_60281 = 60281;
- public static final int CAMPHOR_CARGO_HOLD_60282 = 60282;
- public static final int IRONWOOD_CARGO_HOLD_60283 = 60283;
- public static final int IRONWOOD_CARGO_HOLD_60284 = 60284;
- public static final int ROSEWOOD_CARGO_HOLD_60285 = 60285;
- public static final int ROSEWOOD_CARGO_HOLD_60286 = 60286;
+ public static final int DEADMANS_CHEST = 60246;
+ public static final int DEADMANS_CHEST_60248 = 60248;
+ public static final int DEADMANS_CHEST_60250 = 60250;
public static final int NOTICE_BOARD_60287 = 60287;
public static final int NOTICE_BOARD_60288 = 60288;
public static final int NOTICE_BOARD_60289 = 60289;
@@ -29281,5 +29244,83 @@ public final class ObjectID
public static final int SHRIMP = 60573;
public static final int HAROLD = 60574;
public static final int TENTACLE_60575 = 60575;
+ public static final int TABLE_60576 = 60576;
+ public static final int BASIC_CARGO_HOLD = 60577;
+ public static final int TABLE_60578 = 60578;
+ public static final int TABLE_60579 = 60579;
+ public static final int TABLE_60580 = 60580;
+ public static final int BASIC_CARGO_HOLD_60581 = 60581;
+ public static final int OAK_CARGO_HOLD = 60582;
+ public static final int OAK_CARGO_HOLD_60583 = 60583;
+ public static final int TEAK_CARGO_HOLD = 60584;
+ public static final int BAR_60585 = 60585;
+ public static final int TEAK_CARGO_HOLD_60586 = 60586;
+ public static final int BAR_60587 = 60587;
+ public static final int MAHOGANY_CARGO_HOLD = 60588;
+ public static final int BAR_60589 = 60589;
+ public static final int MAHOGANY_CARGO_HOLD_60590 = 60590;
+ public static final int BAR_60591 = 60591;
+ public static final int CAMPHOR_CARGO_HOLD = 60592;
+ public static final int BAR_60593 = 60593;
+ public static final int CAMPHOR_CARGO_HOLD_60594 = 60594;
+ public static final int BAR_60595 = 60595;
+ public static final int IRONWOOD_CARGO_HOLD = 60596;
+ public static final int BAR_60597 = 60597;
+ public static final int IRONWOOD_CARGO_HOLD_60598 = 60598;
+ public static final int BAR_60599 = 60599;
+ public static final int BAR_60600 = 60600;
+ public static final int ROSEWOOD_CARGO_HOLD = 60601;
+ public static final int ROSEWOOD_CARGO_HOLD_60602 = 60602;
+ public static final int BASIC_CARGO_HOLD_60603 = 60603;
+ public static final int BASIC_CARGO_HOLD_60604 = 60604;
+ public static final int OAK_CARGO_HOLD_60605 = 60605;
+ public static final int OAK_CARGO_HOLD_60606 = 60606;
+ public static final int TEAK_CARGO_HOLD_60607 = 60607;
+ public static final int CRATE_60608 = 60608;
+ public static final int CRATE_60609 = 60609;
+ public static final int CRATE_60610 = 60610;
+ public static final int CRATE_60611 = 60611;
+ public static final int CRATE_60612 = 60612;
+ public static final int CRATE_60613 = 60613;
+ public static final int CRATE_60614 = 60614;
+ public static final int SNOWBALL_PILE_60616 = 60616;
+ public static final int SHELLBANE_GRYPHON_DISPLAY = 60619;
+ public static final int TEAK_CARGO_HOLD_60620 = 60620;
+ public static final int MAHOGANY_CARGO_HOLD_60621 = 60621;
+ public static final int MAHOGANY_CARGO_HOLD_60622 = 60622;
+ public static final int CAMPHOR_CARGO_HOLD_60623 = 60623;
+ public static final int CAMPHOR_CARGO_HOLD_60624 = 60624;
+ public static final int IRONWOOD_CARGO_HOLD_60625 = 60625;
+ public static final int IRONWOOD_CARGO_HOLD_60626 = 60626;
+ public static final int ROSEWOOD_CARGO_HOLD_60627 = 60627;
+ public static final int ROSEWOOD_CARGO_HOLD_60628 = 60628;
+ public static final int BASIC_CARGO_HOLD_60629 = 60629;
+ public static final int BASIC_CARGO_HOLD_60630 = 60630;
+ public static final int OAK_CARGO_HOLD_60631 = 60631;
+ public static final int OAK_CARGO_HOLD_60632 = 60632;
+ public static final int TEAK_CARGO_HOLD_60633 = 60633;
+ public static final int TEAK_CARGO_HOLD_60634 = 60634;
+ public static final int MAHOGANY_CARGO_HOLD_60635 = 60635;
+ public static final int MAHOGANY_CARGO_HOLD_60636 = 60636;
+ public static final int CAMPHOR_CARGO_HOLD_60637 = 60637;
+ public static final int CAMPHOR_CARGO_HOLD_60638 = 60638;
+ public static final int IRONWOOD_CARGO_HOLD_60639 = 60639;
+ public static final int IRONWOOD_CARGO_HOLD_60640 = 60640;
+ public static final int ROSEWOOD_CARGO_HOLD_60641 = 60641;
+ public static final int ROSEWOOD_CARGO_HOLD_60642 = 60642;
+ public static final int STAINEDGLASS_WINDOW_60647 = 60647;
+ public static final int STAINEDGLASS_WINDOW_60648 = 60648;
+ public static final int SHUTTERED_WINDOW_60649 = 60649;
+ public static final int DECORATIVE_WINDOW_60650 = 60650;
+ public static final int STAINEDGLASS_WINDOW_60651 = 60651;
+ public static final int DECORATIVE_WINDOW_60652 = 60652;
+ public static final int STAINEDGLASS_WINDOW_60653 = 60653;
+ public static final int DECORATIVE_WINDOW_60654 = 60654;
+ public static final int STAINEDGLASS_WINDOW_60655 = 60655;
+ public static final int DECORATIVE_WINDOW_60656 = 60656;
+ public static final int STAINEDGLASS_WINDOW_60657 = 60657;
+ public static final int DECORATIVE_WINDOW_60658 = 60658;
+ public static final int STAINEDGLASS_WINDOW_60659 = 60659;
+ public static final int WINDOW_SPACE_60660 = 60660;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Perspective.java b/runelite-api/src/main/java/net/runelite/api/Perspective.java
index aa3b2098c78..c8cd4e1b5d7 100644
--- a/runelite-api/src/main/java/net/runelite/api/Perspective.java
+++ b/runelite-api/src/main/java/net/runelite/api/Perspective.java
@@ -122,8 +122,8 @@ public static Point localToCanvas(@Nonnull Client client, @Nonnull LocalPoint po
}
LocalPoint entityLocation = we.getLocalLocation();
- int height = getTileHeight(we.getWorldView(), point.getX(), point.getY(), plane); // height in wv
- height += getTileHeight(wv, entityLocation.getX(), entityLocation.getY(), wv.getPlane()); // height of we
+ int height = we.getWorldView().getTileHeight(point.getX(), point.getY(), plane); // height in wv
+ height += wv.getTileHeight(entityLocation.getX(), entityLocation.getY(), wv.getPlane()); // height of we
height -= heightOffset;
WorldView subWv = we.getWorldView();
@@ -661,30 +661,6 @@ public static int getFootprintTileHeight(@Nonnull Client client, @Nonnull LocalP
return h;
}
- /**
- * Get the height of a location, in local coordinates. Interpolates the height from the adjacent tiles.
- * Does not account for bridges.
- * @return
- */
- private static int getTileHeight(@Nonnull WorldView wv, int localX, int localY, int plane)
- {
- int offset = wv.isTopLevel() ? ESCENE_OFFSET : 0;
- int sceneX = (localX >> LOCAL_COORD_BITS) + offset;
- int sceneY = (localY >> LOCAL_COORD_BITS) + offset;
- if (sceneX >= 0 && sceneY >= 0 && sceneX < wv.getSizeX() + offset && sceneY < wv.getSizeY() + offset)
- {
- int[][][] tileHeights = wv.getScene().getTileHeights();
-
- int x = localX & (LOCAL_TILE_SIZE - 1);
- int y = localY & (LOCAL_TILE_SIZE - 1);
- int var8 = x * tileHeights[plane][sceneX + 1][sceneY] + (LOCAL_TILE_SIZE - x) * tileHeights[plane][sceneX][sceneY] >> LOCAL_COORD_BITS;
- int var9 = tileHeights[plane][sceneX][sceneY + 1] * (LOCAL_TILE_SIZE - x) + x * tileHeights[plane][sceneX + 1][sceneY + 1] >> LOCAL_COORD_BITS;
- return (LOCAL_TILE_SIZE - y) * var8 + y * var9 >> LOCAL_COORD_BITS;
- }
-
- return 0;
- }
-
/**
* Calculates a tile polygon from offset worldToScreen() points.
*
@@ -751,10 +727,11 @@ public static Polygon getCanvasTileAreaPoly(
}
int offset = wv.isTopLevel() ? ESCENE_OFFSET : 0;
+ int escene = offset << 1;
final int msx = localLocation.getSceneX() + offset;
final int msy = localLocation.getSceneY() + offset;
- if (msx < 0 || msy < 0 || msx >= wv.getSizeX() + offset || msy >= wv.getSizeY() + offset)
+ if (msx < 0 || msy < 0 || msx >= wv.getSizeX() + escene || msy >= wv.getSizeY() + escene)
{
// out of scene
return null;
@@ -768,10 +745,10 @@ public static Polygon getCanvasTileAreaPoly(
var scene = wv.getScene();
final byte[][][] tileSettings = scene.getExtendedTileSettings();
- int tilePlane = level;
+ int mapLevel = level;
if (level < Constants.MAX_Z - 1 && (tileSettings[1][msx][msy] & TILE_FLAG_BRIDGE) == TILE_FLAG_BRIDGE)
{
- tilePlane = level + 1;
+ mapLevel = level + 1;
}
final int swX = localLocation.getX() - (sizeX * LOCAL_TILE_SIZE / 2);
@@ -786,10 +763,10 @@ public static Polygon getCanvasTileAreaPoly(
final int nwX = neX;
final int nwY = swY;
- final int swHeight = getTileHeight(wv, swX, swY, tilePlane) - heightOffset;
- final int nwHeight = getTileHeight(wv, nwX, nwY, tilePlane) - heightOffset;
- final int neHeight = getTileHeight(wv, neX, neY, tilePlane) - heightOffset;
- final int seHeight = getTileHeight(wv, seX, seY, tilePlane) - heightOffset;
+ final int swHeight = wv.getTileHeight(swX, swY, mapLevel) - heightOffset;
+ final int nwHeight = wv.getTileHeight(nwX, nwY, mapLevel) - heightOffset;
+ final int neHeight = wv.getTileHeight(neX, neY, mapLevel) - heightOffset;
+ final int seHeight = wv.getTileHeight(seX, seY, mapLevel) - heightOffset;
Point p1 = localToCanvas(client, wv.getId(), swX, swY, swHeight);
Point p2 = localToCanvas(client, wv.getId(), nwX, nwY, nwHeight);
diff --git a/runelite-api/src/main/java/net/runelite/api/Player.java b/runelite-api/src/main/java/net/runelite/api/Player.java
index 5771c500d83..fdd2e252bf2 100644
--- a/runelite-api/src/main/java/net/runelite/api/Player.java
+++ b/runelite-api/src/main/java/net/runelite/api/Player.java
@@ -24,7 +24,6 @@
*/
package net.runelite.api;
-import java.awt.Polygon;
import org.intellij.lang.annotations.MagicConstant;
/**
@@ -49,13 +48,6 @@ public interface Player extends Actor
*/
PlayerComposition getPlayerComposition();
- /**
- * Gets the polygons that make up the players model.
- *
- * @return the model polygons
- */
- Polygon[] getPolygons();
-
/**
* Gets the current team cape team number the player is on.
*
diff --git a/runelite-api/src/main/java/net/runelite/api/Projection.java b/runelite-api/src/main/java/net/runelite/api/Projection.java
index 288714c99f3..5d6027fd8da 100644
--- a/runelite-api/src/main/java/net/runelite/api/Projection.java
+++ b/runelite-api/src/main/java/net/runelite/api/Projection.java
@@ -27,4 +27,6 @@
public interface Projection
{
float[] project(float x, float y, float z);
+
+ float[] project(float x, float y, float z, float[] out);
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Quest.java b/runelite-api/src/main/java/net/runelite/api/Quest.java
index e042e514032..8d4b9e2988e 100644
--- a/runelite-api/src/main/java/net/runelite/api/Quest.java
+++ b/runelite-api/src/main/java/net/runelite/api/Quest.java
@@ -231,8 +231,6 @@ public enum Quest
THE_FINAL_DAWN(5189, "The Final Dawn"),
SHADOWS_OF_CUSTODIA(5190, "Shadows of Custodia"),
SCRAMBLED(5191, "Scrambled!"),
- AN_EXISTENTIAL_CRISIS(5192, "An Existential Crisis"),
- IMPENDING_CHAOS(5193, "Impending Chaos"),
VALE_TOTEMS(5194, "Vale Totems"),
TUTORIAL_ISLAND(7033, "Tutorial Island"),
PANDEMONIUM(7103, "Pandemonium"),
@@ -240,7 +238,6 @@ public enum Quest
CURRENT_AFFAIRS(7105, "Current Affairs"),
TROUBLED_TORTUGANS(7106, "Troubled Tortugans"),
THE_RED_REEF(7107, "The Red Reef"),
- BURIAL_AT_SEA(7108, "Burial at Sea"),
;
@Getter
diff --git a/runelite-api/src/main/java/net/runelite/api/Renderable.java b/runelite-api/src/main/java/net/runelite/api/Renderable.java
index b47d52fcd28..b3162b3e91b 100644
--- a/runelite-api/src/main/java/net/runelite/api/Renderable.java
+++ b/runelite-api/src/main/java/net/runelite/api/Renderable.java
@@ -24,6 +24,8 @@
*/
package net.runelite.api;
+import org.intellij.lang.annotations.MagicConstant;
+
/**
* Represents an object that can be rendered.
*/
@@ -42,4 +44,12 @@ public interface Renderable extends Node
void setModelHeight(int modelHeight);
int getAnimationHeightOffset();
+
+ @MagicConstant(intValues = {RENDERMODE_DEFAULT, RENDERMODE_SORTED, RENDERMODE_SORTED_NO_DEPTH, RENDERMODE_UNSORTED})
+ int getRenderMode();
+
+ int RENDERMODE_DEFAULT = 0;
+ int RENDERMODE_SORTED = 1;
+ int RENDERMODE_SORTED_NO_DEPTH = 2;
+ int RENDERMODE_UNSORTED = 3;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptID.java b/runelite-api/src/main/java/net/runelite/api/ScriptID.java
index 57921c24880..82758bcea62 100644
--- a/runelite-api/src/main/java/net/runelite/api/ScriptID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ScriptID.java
@@ -272,7 +272,7 @@ public final class ScriptID
* int (WidgetID) * 16, various widgets making up the bank interface
*
*/
- @ScriptArguments(integer = 17)
+ @ScriptArguments(integer = 20)
public static final int BANKMAIN_SEARCH_REFRESH = 283;
@ScriptArguments(integer = 6)
@@ -308,7 +308,7 @@ public final class ScriptID
@ScriptArguments(integer = 4, string = 1)
public static final int XPDROPS_SETDROPSIZE = 996;
- @ScriptArguments(integer = 34)
+ @ScriptArguments(integer = 35)
public static final int BANKMAIN_INIT = 274;
/**
@@ -317,10 +317,10 @@ public final class ScriptID
* int (WidgetID) * 17, various widgets making up the bank interface
*
*/
- @ScriptArguments(integer = 17)
+ @ScriptArguments(integer = 20)
public static final int BANKMAIN_BUILD = 277;
- @ScriptArguments(integer = 19)
+ @ScriptArguments(integer = 22)
public static final int BANKMAIN_FINISHBUILDING = 505;
@ScriptArguments()
@@ -337,7 +337,7 @@ public final class ScriptID
* These can be retrieved from the onInvTransmitListener of BANK_ITEM_CONTAINER. Note that this array also
* contains the script ID for the bank layout script in the first index
*/
- @ScriptArguments(integer = 18)
+ @ScriptArguments(integer = 21)
public static final int BANKMAIN_SEARCH_TOGGLE = 281;
@ScriptArguments(integer = 6)
@@ -477,7 +477,7 @@ public final class ScriptID
@ScriptArguments(integer = 3)
public static final int POTIONSTORE_DOSE_CHANGE = 6555;
- @ScriptArguments(integer = 5)
+ @ScriptArguments(integer = 6)
public static final int FAIRYRINGS_SORT_UPDATE = 402;
@ScriptArguments(integer = 1, string = 1)
@@ -500,4 +500,7 @@ public final class ScriptID
@ScriptArguments(integer = 6, string = 9)
public static final int INTERFACE_INV_DRAW_SLOT_BIG = 154;
+
+ @ScriptArguments(integer = 4)
+ public static final int BANKMAIN_POPUP_TAB_DRAW = 9221;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/WorldView.java b/runelite-api/src/main/java/net/runelite/api/WorldView.java
index 01bf39cb8fe..34c1636d9f7 100644
--- a/runelite-api/src/main/java/net/runelite/api/WorldView.java
+++ b/runelite-api/src/main/java/net/runelite/api/WorldView.java
@@ -264,4 +264,10 @@ Projectile createProjectile(int id, int plane, int startX, int startY, int start
*/
@MagicConstant(intValues = {Constants.CLICK_ACTION_NONE, Constants.CLICK_ACTION_WALK, Constants.CLICK_ACTION_SET_HEADING})
int getYellowClickAction();
+
+ /**
+ * Gets the tile height at the given coordinates, interpolating the height from adjacent tiles.
+ * @return
+ */
+ int getTileHeight(int x, int y, int maplevel);
}
diff --git a/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java b/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
index cefa4b1be08..36c3e7ea98e 100644
--- a/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
+++ b/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
@@ -33,6 +33,7 @@
import net.runelite.api.Client;
import static net.runelite.api.Constants.CHUNK_SIZE;
import static net.runelite.api.Constants.REGION_SIZE;
+import static net.runelite.api.Constants.SCENE_SIZE;
import net.runelite.api.Perspective;
import net.runelite.api.Scene;
import net.runelite.api.WorldView;
@@ -298,8 +299,11 @@ private static WorldPoint fromLocalInstance(int[][][] instanceTemplateChunks, Lo
int chunkX = sceneX / CHUNK_SIZE;
int chunkY = sceneY / CHUNK_SIZE;
- // get the template chunk for the chunk
- int templateChunk = instanceTemplateChunks[plane][chunkX][chunkY];
+ int templateChunk = -1;
+ if (chunkX >= 0 && chunkX < (SCENE_SIZE / CHUNK_SIZE) && chunkY >= 0 && chunkY < (SCENE_SIZE / CHUNK_SIZE))
+ {
+ templateChunk = instanceTemplateChunks[plane][chunkX][chunkY];
+ }
int rotation = templateChunk >> 1 & 0x3;
int templateChunkY = (templateChunk >> 3 & 0x7FF) * CHUNK_SIZE;
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/AnimationID.java b/runelite-api/src/main/java/net/runelite/api/gameval/AnimationID.java
index 2cb67272d86..967aca8d874 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/AnimationID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/AnimationID.java
@@ -13693,5 +13693,28 @@ public final class AnimationID
public static final int VFX_WIND_SAIL_3X10_SPEEDBOOST01 = 13693;
public static final int HUMAN_WORKBENCH_CRAFTING_LOOP = 13694;
public static final int TURTLE_IDLE01_LOOP = 13695;
+ public static final int HUMAN_XMAS25_CHRISTMAS_DINNER_READY = 13696;
+ public static final int HUMAN_XMAS25_CHRISTMAS_DINNER_WALK_F = 13697;
+ public static final int HUMAN_XMAS25_CHRISTMAS_DINNER_WALK_B = 13698;
+ public static final int HUMAN_XMAS25_CHRISTMAS_DINNER_RUN = 13699;
+ public static final int HUMAN_XMAS25_CHRISTMAS_DINNER_ATTACK = 13700;
+ public static final int HUMAN_DEADMAN_ANNIHILATION_REWARD_TELEPORT_FULL = 13701;
+ public static final int HUMAN_DEADMAN_ANNIHILATION_REWARD_TELEPORT_01 = 13702;
+ public static final int HUMAN_DEADMAN_ANNIHILATION_REWARD_TELEPORT_02 = 13703;
+ public static final int HUMAN_DEADMAN_ANNIHILATION_REWARD_TELEPORT_03 = 13704;
+ public static final int HUMAN_DEADMAN_ANNIHILATION_REWARD_TELEPORT_04 = 13705;
+ public static final int HUMAN_DEADMAN_ANNIHILATION_REWARD_TELEPORT_05 = 13706;
+ public static final int HUMAN_DEADMAN_ANNIHILATION_REWARD_TELEPORT_06 = 13707;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_FULL = 13708;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_01 = 13709;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_02 = 13710;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_03 = 13711;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_04 = 13712;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_05 = 13713;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_06 = 13714;
+ public static final int DEADMAN_2026_SOTD_SPECIAL_TOXIC_UNCHARGED = 13715;
+ public static final int DEADMAN_2026_SOTD_SPECIAL_TOXIC_CHARGED = 13716;
+ public static final int ZUK_SPAWN_NO_ROCK = 13717;
+ public static final int FEVER_SPIDER_DEATH = 13718;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/DBTableID.java b/runelite-api/src/main/java/net/runelite/api/gameval/DBTableID.java
index 747de726020..376141b2449 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/DBTableID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/DBTableID.java
@@ -164,45 +164,50 @@ public static final class Quest
*/
public static final int COL_SPEEDRUN = 31;
+ /**
+ * (stat, integer)
+ */
+ public static final int COL_STAT_XP_AWARDED = 33;
+
/**
* integer
*/
- public static final int COL_PREREQUISITE_DIRECT = 33;
+ public static final int COL_PREREQUISITE_DIRECT = 34;
/**
* integer
*/
- public static final int COL_PREREQUISITE_INDIRECT = 34;
+ public static final int COL_PREREQUISITE_INDIRECT = 35;
/**
* integer
*/
- public static final int COL_FTUE_STARTER = 35;
+ public static final int COL_FTUE_STARTER = 36;
/**
* boolean
*/
- public static final int COL_CR_CAN_RECOMMEND = 36;
+ public static final int COL_CR_CAN_RECOMMEND = 37;
/**
* integer
*/
- public static final int COL_CR_EXPERIENCE_PROFILE = 37;
+ public static final int COL_CR_EXPERIENCE_PROFILE = 38;
/**
* string
*/
- public static final int COL_CR_RECOMMENDATION_REASON = 38;
+ public static final int COL_CR_RECOMMENDATION_REASON = 39;
/**
* boolean
*/
- public static final int COL_CR_RECOMMENDATION_REASON_IS_PRIMARY = 39;
+ public static final int COL_CR_RECOMMENDATION_REASON_IS_PRIMARY = 40;
/**
* integer
*/
- public static final int COL_RELATED_CONTENT = 47;
+ public static final int COL_RELATED_CONTENT = 48;
public static final class Row
{
@@ -438,6 +443,7 @@ public static final class Row
public static final int HALLOWEEN_2024 = 3935;
public static final int XMAS_2024 = 4228;
public static final int BIRTHDAY_2025 = 4318;
+ public static final int XMAS_2025 = 4968;
public static final int EASTER_2025 = 5107;
public static final int HALLOWEEN_2025 = 6989;
}
@@ -1957,9 +1963,9 @@ public static final class Row
public static final int CLUEHELPER_HOTCOLD_MASTER_VARLAMORE_SUNSET = 3488;
public static final int CLUEHELPER_HOTCOLD_MASTER_VARLAMORE_BAZAAR = 3489;
public static final int CLUEHELPER_HOTCOLD_MASTER_VARLAMORE_ALDARIN_THEATRE = 3689;
+ public static final int CLUEHELPER_HOTCOLD_MASTER_SAIL_BUCCANEERS_HAVEN = 4963;
public static final int CLUEHELPER_HOTCOLD_MASTER_VARLAMORE_RAINFOREST_CENTRE = 5182;
public static final int CLUEHELPER_HOTCOLD_MASTER_SAIL_GREAT_CONCH = 7051;
- public static final int CLUEHELPER_HOTCOLD_MASTER_SAIL_ISLE_OF_SERPENTS = 7052;
public static final int CLUEHELPER_HOTCOLD_MASTER_SAIL_DRUMSTICK_ISLE = 7053;
}
}
@@ -3078,6 +3084,7 @@ public static final class Row
public static final int CLUEHELPER_TARGET_COORD_0_26_50_30_47 = 3810;
public static final int CLUEHELPER_TARGET_COORD_0_25_51_10_38 = 3811;
public static final int CLUEHELPER_TARGET_COORD_1_25_83_40_54 = 3936;
+ public static final int CLUEHELPER_TARGET_COORD_0_32_57_30_17 = 4964;
public static final int CLUEHELPER_TARGET_COORD_VARLAMORE_RAINFOREST_CENTRE = 5172;
public static final int CLUEHELPER_TARGET_COORD_0_20_51_41_59 = 5173;
public static final int CLUEHELPER_TARGET_COORD_0_58_60_52_60 = 6152;
@@ -3089,7 +3096,6 @@ public static final class Row
public static final int CLUEHELPER_TARGET_COORD_0_32_49_33_48 = 7064;
public static final int CLUEHELPER_TARGET_COORD_0_30_63_26_42 = 7065;
public static final int CLUEHELPER_TARGET_COORD_0_50_36_49_45 = 7066;
- public static final int CLUEHELPER_TARGET_COORD_0_29_37_0_47 = 7067;
public static final int CLUEHELPER_TARGET_COORD_0_33_55_27_42 = 7068;
public static final int CLUEHELPER_TARGET_COORD_0_32_40_21_48 = 7069;
}
@@ -4422,6 +4428,7 @@ public static final class Row
public static final int ENT_TOTEMS_SHOP = 5458;
public static final int ENT_TOTEMS_SHOP_IRONMAN = 5459;
public static final int SAILING_BOAT_SHOP = 8548;
+ public static final int DEADMAN_SKULL_SHOP = 9575;
}
}
@@ -4529,6 +4536,16 @@ public static final class OmnishopStockData
*/
public static final int COL_OMNISHOP_STOCK_DESCRIPTION_DYNAMIC = 22;
+ /**
+ * boolean
+ */
+ public static final int COL_OMNISHOP_STOCK_USE_SHORTNAME = 23;
+
+ /**
+ * string
+ */
+ public static final int COL_OMNISHOP_STOCK_SHORTNAME = 24;
+
public static final class Row
{
public static final int DEADMAN_SHOP_2024_WEAPON_ORNAMENT_SCROLL = 1355;
@@ -4739,6 +4756,70 @@ public static final class Row
public static final int SAILING_SHIP_STOCK_RAFT = 8549;
public static final int SAILING_SHIP_STOCK_SKIFF = 8550;
public static final int SAILING_SHIP_STOCK_SLOOP = 8551;
+ public static final int DEADMAN_SHOP_2026_WEAPON_ORNAMENT_SCROLL = 9572;
+ public static final int DEADMAN_SHOP_2026_POH_ORNAMENT_SCROLL = 9573;
+ public static final int DEADMAN_SHOP_2026_HOME_TELEPORT_SCROLL = 9574;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_AGILE_FORTUNE = 9577;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_HOARDING = 9578;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_DECEPTION = 9579;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_LITHE = 9580;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_FOOD_MASTER = 9581;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_WELL_FED = 9582;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_POTION_MASTER = 9583;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_TREASURE_HUNTER = 9584;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_HUNTER = 9585;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_INFERNAL_CHEF = 9586;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_NATURE = 9587;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_DEVOTION = 9588;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_FAITH = 9589;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_ALCHEMANIAC = 9590;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_RESISTANCE = 9591;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_DEFT_STRIKES = 9592;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_AUGMENTED_THRALL = 9593;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_ONSLAUGHT = 9594;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_RESTORATION = 9595;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_TITANIUM = 9596;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_METICULOUSNESS = 9597;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_ENHANCED_HARVEST = 9598;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_SLAUGHTER = 9599;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_WOODCRAFT = 9600;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_REMOTE_STORAGE = 9601;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_CONSISTENCY = 9602;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_RIGOROUS_RANGER = 9603;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_METICULOUS_MAGE = 9604;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_LIGHTBEARER = 9605;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_SPECIALISED_STRIKES = 9606;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_PORCUPINE = 9607;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_FORTIFICATION = 9608;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_RUTHLESS_RANGER = 9609;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_FORMIDABLE_FIGHTER = 9610;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_MENACING_MAGE = 9611;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_SWASHBUCKLER = 9612;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_GUNSLINGER = 9613;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_ARCANE_SWIFTNESS = 9614;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_ADROIT = 9615;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_BARROWS = 9616;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_FINALITY = 9617;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_PIOUS_PROTECTION = 9618;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_AGGRESSION = 9619;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_RAMPAGE = 9620;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_THE_GODS = 9621;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_REVOKED_LIMITATION = 9622;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_CONCLUSION = 9623;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_AUTOMATION = 9624;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_ETERNAL_BELIEF = 9625;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_EFFICIENCY = 9626;
+ public static final int DEADMAN_SKULL_SHOP_SIGIL_OF_RUINOUS_PRAYER_BOOK = 9627;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_RECIPE_FOR_DISASTER = 9628;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_CAMELOT_STORYLINE = 9629;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_FREMENNIK_STORYLINE = 9630;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_ELF_STORYLINE = 9631;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_GNOME_STORYLINE = 9632;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_KHARIDIAN_STORYLINE = 9633;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_MYREQUE_STORYLINE = 9634;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_DRAGONKIN_STORYLINE = 9635;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_MAHJARRAT_STORYLINE_1 = 9636;
+ public static final int DEADMAN_SKULL_SHOP_QUEST_LAMP_MAHJARRAT_STORYLINE_2 = 9637;
}
}
@@ -4811,6 +4892,7 @@ public static final class Row
public static final int OMNISHOP_CURRENCY_CW_TICKETS = 5104;
public static final int OMNISHOP_CURRENCY_CW_PLAUDITS = 5105;
public static final int OMNISHOP_CURRENCY_ENT_TOTEMS_RESEARCH_POINTS = 5460;
+ public static final int OMNISHOP_CURRENCY_DEADMAN_SKULL_POINTS = 9576;
}
}
@@ -5724,6 +5806,7 @@ public static final class Row
public static final int MUSIC_THE_HEIST = 3971;
public static final int MUSIC_HEAVY_SECURITY = 3972;
public static final int MUSIC_THE_PLUNDERED_TOMB = 3973;
+ public static final int MUSIC_CHRISTMAS_2025 = 4969;
public static final int MUSIC_YAMA_COMBAT = 5154;
public static final int MUSIC_TLATI_RAINFOREST = 5377;
public static final int MUSIC_AUBURN_VALLEY_1 = 5378;
@@ -6562,6 +6645,21 @@ public static final class Row
}
}
+ public static final class DynamicBuildersDemoSets
+ {
+ public static final int ID = 76;
+
+ /**
+ * (struct, integer, integer, string, boolean)
+ */
+ public static final int COL_BUTTON_STYLES = 0;
+
+ public static final class Row
+ {
+ public static final int DYNAMIC_BUILDERS_DEMO = 4965;
+ }
+ }
+
public static final class PrepotDeviceLoadoutUi
{
public static final int ID = 77;
@@ -9365,15 +9463,20 @@ public static final class SlayerTask
*/
public static final int COL_EXTENSION_MIN_MAX = 15;
+ /**
+ * (dbrow, integer, integer)
+ */
+ public static final int COL_EXTENSION_ADDITIVE = 16;
+
/**
* dbrow
*/
- public static final int COL_BLOCK_UNLOCK = 16;
+ public static final int COL_BLOCK_UNLOCK = 17;
/**
* integer
*/
- public static final int COL_RELATED_CONTENT = 17;
+ public static final int COL_RELATED_CONTENT = 18;
public static final class Row
{
@@ -9935,6 +10038,11 @@ public static final class SlayerArea
*/
public static final int COL_AREA_NAME_IN_HELPER = 3;
+ /**
+ * string
+ */
+ public static final int COL_AREA_HINT = 4;
+
/**
* integer
*/
@@ -10163,6 +10271,8 @@ public static final class Row
public static final int SLAYER_REWARDS_LONGER_AQUANITES = 9418;
public static final int SLAYER_REWARDS_LONGER_WYRMS = 9419;
public static final int SLAYER_REWARDS_UNLOCK_GRYPHONS = 9420;
+ public static final int SLAYER_REWARDS_UNLOCK_HELM_HOODED = 9641;
+ public static final int SLAYER_REWARDS_LONGER_GRYPHONS = 9642;
}
}
@@ -12854,62 +12964,67 @@ public static final class SailingBoatFacilityStats
/**
* integer
*/
- public static final int COL_BOAT_BASESPEED = 23;
+ public static final int COL_BOAT_CRYSTALHELM_RESISTANCE = 23;
+
+ /**
+ * integer
+ */
+ public static final int COL_BOAT_BASESPEED = 24;
/**
* integer
*/
- public static final int COL_BOAT_SPEEDCAP = 24;
+ public static final int COL_BOAT_SPEEDCAP = 25;
/**
* integer
*/
- public static final int COL_BOAT_ACCELERATION = 25;
+ public static final int COL_BOAT_ACCELERATION = 26;
/**
* integer
*/
- public static final int COL_BOAT_SPEEDBOOST_DURATION = 26;
+ public static final int COL_BOAT_SPEEDBOOST_DURATION = 27;
/**
* integer
*/
- public static final int COL_BOAT_CARGOHOLD_SIZE = 27;
+ public static final int COL_BOAT_CARGOHOLD_SIZE = 28;
/**
* integer
*/
- public static final int COL_BOAT_CARGOHOLD_SIZE_UIM = 28;
+ public static final int COL_BOAT_CARGOHOLD_SIZE_UIM = 29;
/**
* integer
*/
- public static final int COL_BOAT_FETID_WATER_RESISTANT = 29;
+ public static final int COL_BOAT_FETID_WATER_RESISTANT = 30;
/**
* integer
*/
- public static final int COL_BOAT_CRYSTAL_FLECKED_RESISTANT = 30;
+ public static final int COL_BOAT_CRYSTAL_FLECKED_RESISTANT = 31;
/**
* integer
*/
- public static final int COL_BOAT_TANGLED_KELP_RESISTANT = 31;
+ public static final int COL_BOAT_TANGLED_KELP_RESISTANT = 32;
/**
* integer
*/
- public static final int COL_BOAT_ICY_SEAS_RESISTANT = 32;
+ public static final int COL_BOAT_ICY_SEAS_RESISTANT = 33;
/**
* integer
*/
- public static final int COL_BOAT_MAX_WIND_MOTES = 33;
+ public static final int COL_BOAT_MAX_WIND_MOTES = 34;
/**
* integer
*/
- public static final int COL_BOAT_ADDITIONAL_RECOVERY_COST_PERCENTAGE = 34;
+ public static final int COL_BOAT_ADDITIONAL_RECOVERY_COST_PERCENTAGE = 35;
public static final class Row
{
@@ -13589,6 +13704,11 @@ public static final class SailingBoatFacility
*/
public static final int COL_FACILITY_CUSTOMISATION_ORDER = 25;
+ /**
+ * integer
+ */
+ public static final int COL_FACILITY_BOTTLE_ID = 26;
+
public static final class Row
{
public static final int SAILING_BOAT_FACILITY_BRONZE_CANNON = 8427;
@@ -14657,6 +14777,11 @@ public static final class SailingDock
*/
public static final int COL_LEVEL_REQUIRED = 4;
+ /**
+ * dbrow
+ */
+ public static final int COL_QUEST_REQUIRED = 5;
+
/**
* graphic
*/
@@ -14898,6 +15023,8 @@ public static final class PortTask
public static final class Row
{
+ public static final int PORT_TASK_RELLEKKA_COURIER_19 = 4966;
+ public static final int PORT_TASK_RELLEKKA_COURIER_20 = 4967;
public static final int PORT_TASK_PORT_SARIM_COURIER_0 = 8664;
public static final int PORT_TASK_PORT_SARIM_COURIER_1 = 8665;
public static final int PORT_TASK_PORT_SARIM_COURIER_2 = 8666;
@@ -15866,5 +15993,222 @@ public static final class Row
public static final int CHARTERING_COSTS = 9454;
}
}
+
+ public static final class PatchyData
+ {
+ public static final int ID = 208;
+
+ /**
+ * integer
+ */
+ public static final int COL_ID = 0;
+
+ /**
+ * namedobj
+ */
+ public static final int COL_COMBINED = 1;
+
+ /**
+ * (namedobj, namedobj)
+ */
+ public static final int COL_INGREDIENTS = 2;
+
+ public static final class Row
+ {
+ public static final int PATCHY_DATA_BIG_HAT_EYEPATCH = 4970;
+ public static final int PATCHY_DATA_SMALL_HAT_EYEPATCH = 5121;
+ public static final int PATCHY_DATA_BANDANA_EYEPATCH_BLUE = 5122;
+ public static final int PATCHY_DATA_BANDANA_EYEPATCH_BROWN = 7052;
+ public static final int PATCHY_DATA_BANDANA_EYEPATCH_RED = 7067;
+ public static final int PATCHY_DATA_BANDANA_EYEPATCH_WHITE = 9455;
+ public static final int PATCHY_DATA_HAT_CAVALIER_MASK = 9456;
+ public static final int PATCHY_DATA_DOUBLE_EYE_PATCH = 9457;
+ public static final int PATCHY_DATA_HAT_BERRET_MIME_MASK = 9458;
+ public static final int PATCHY_DATA_WOM_HEAD = 9459;
+ public static final int PATCHY_DATA_TOPHAT_MONACLE = 9460;
+ public static final int PATCHY_DATA_CRABCLAW_HOOK = 9461;
+ public static final int PATCHY_DATA_DARK_FLIPPERS = 9462;
+ }
+ }
+
+ public static final class SkillGuideV2InlineIcon
+ {
+ public static final int ID = 209;
+
+ /**
+ * integer
+ */
+ public static final int COL_ID = 0;
+
+ /**
+ * graphic
+ */
+ public static final int COL_GRAPHIC = 1;
+
+ /**
+ * (integer, integer)
+ */
+ public static final int COL_SIZE = 2;
+
+ /**
+ * (integer, integer)
+ */
+ public static final int COL_OFFSET = 3;
+
+ /**
+ * (integer, integer)
+ */
+ public static final int COL_MARGIN = 4;
+
+ public static final class Row
+ {
+ public static final int SKILL_GUIDE_V2_ICON_ATTACK = 9463;
+ public static final int SKILL_GUIDE_V2_ICON_STRENGTH = 9464;
+ public static final int SKILL_GUIDE_V2_ICON_DEFENCE = 9465;
+ public static final int SKILL_GUIDE_V2_ICON_RANGED = 9466;
+ public static final int SKILL_GUIDE_V2_ICON_PRAYER = 9467;
+ public static final int SKILL_GUIDE_V2_ICON_MAGIC = 9468;
+ public static final int SKILL_GUIDE_V2_ICON_RUNECRAFT = 9469;
+ public static final int SKILL_GUIDE_V2_ICON_HITPOINTS = 9470;
+ public static final int SKILL_GUIDE_V2_ICON_AGILITY = 9471;
+ public static final int SKILL_GUIDE_V2_ICON_HERBLORE = 9472;
+ public static final int SKILL_GUIDE_V2_ICON_THIEVING = 9473;
+ public static final int SKILL_GUIDE_V2_ICON_CRAFTING = 9474;
+ public static final int SKILL_GUIDE_V2_ICON_FLETCHING = 9475;
+ public static final int SKILL_GUIDE_V2_ICON_MINING = 9476;
+ public static final int SKILL_GUIDE_V2_ICON_SMITHING = 9477;
+ public static final int SKILL_GUIDE_V2_ICON_FISHING = 9478;
+ public static final int SKILL_GUIDE_V2_ICON_COOKING = 9479;
+ public static final int SKILL_GUIDE_V2_ICON_FIREMAKING = 9480;
+ public static final int SKILL_GUIDE_V2_ICON_WOODCUTTING = 9481;
+ public static final int SKILL_GUIDE_V2_ICON_SLAYER = 9482;
+ public static final int SKILL_GUIDE_V2_ICON_FARMING = 9483;
+ public static final int SKILL_GUIDE_V2_ICON_CONSTRUCTION = 9484;
+ public static final int SKILL_GUIDE_V2_ICON_HUNTER = 9485;
+ public static final int SKILL_GUIDE_V2_ICON_SAILING = 9486;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_AGILITY_SHORTCUT = 9487;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ALTAR = 9488;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ANVIL = 9489;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ARCHERY_SHOP = 9490;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_AXE_SHOP = 9491;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_BANK = 9492;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_CLOTHES_SHOP = 9493;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_COOKING_RANGE = 9494;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_CRAFTING_SHOP = 9495;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ESTATE_AGENT = 9496;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_FARMING_PATCH = 9497;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_FARMING_SHOP = 9498;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_FISHING_SHOP = 9499;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_FISHING_SPOT = 9500;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_FURNACE = 9501;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_GENERAL_STORE = 9502;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_GRAND_EXCHANGE = 9503;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_HELMET_SHOP = 9504;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_HERBALIST = 9505;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_HUNTER_STORE = 9506;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_LOOM = 9507;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_MAGIC_SHOP = 9508;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_MINING_SHOP = 9509;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_MINING_SITE = 9510;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_PLATEBODY_SHOP = 9511;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_PLATELEGS_SHOP = 9512;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_PLATESKIRT_SHOP = 9513;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_POH_PORTAL = 9514;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_POTTERY_WHEEL = 9515;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_RARE_TREES = 9516;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_SAWMILL = 9517;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_SWORD_SHOP = 9518;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_SCIMITAR_SHOP = 9519;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_SLAYER_MASTER = 9520;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_SPINNING_WHEEL = 9521;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_STAFF_SHOP = 9522;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_TANNERY = 9523;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_WATER_SOURCE = 9524;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ICON_TUTOR_MINING = 9525;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ICON_TUTOR_FISHING = 9526;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ICON_TUTOR_WOODCUTTING = 9527;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ICON_TUTOR_HUNTER = 9528;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ICON_TUTOR_COMBAT = 9529;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_ICON_GARDEN_SUPPLIER = 9530;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_FORESTRY_SHOP = 9531;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_AGILITY_TRAINING = 9532;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_PORT_TASK_BOARD = 9533;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_SALVAGING_SPOT = 9534;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_BARRACUDA_TRIAL = 9535;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_FISHING_SHOAL = 9536;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_SHIPWRIGHT = 9537;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_DOCKING_POINT = 9538;
+ public static final int SKILL_GUIDE_V2_ICON_MAP_CREW_REGISTRAR = 9539;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_MISS = 9540;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_DAMAGE = 9541;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_MAXHIT = 9542;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_HEAL = 9543;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_POISON = 9544;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_DISEASE_HEALTH = 9545;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_DISEASE_STAT = 9546;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_VENOM = 9547;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_SHIELD = 9548;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_ARMOUR = 9549;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_CHARGE = 9550;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_UNCHARGE = 9551;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_CORRUPTION = 9552;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_DODGE = 9553;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_CHARGE_BLUE = 9554;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_UNCHARGE_BLUE = 9555;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_POISE = 9556;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_PRAYER_DRAIN = 9557;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_BLEED = 9558;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_SANITY_LOSE = 9559;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_SANITY_GAIN = 9560;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_DOOM = 9561;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_BURN = 9562;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_COLD = 9563;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_CORROSION = 9564;
+ public static final int SKILL_GUIDE_V2_ICON_HITMARK_BOAT = 9565;
+ public static final int SKILL_GUIDE_V2_ICON_COMBAT = 9566;
+ public static final int SKILL_GUIDE_V2_ICON_SPELLBOOK = 9567;
+ public static final int SKILL_GUIDE_V2_ICON_WIKI = 9568;
+ public static final int SKILL_GUIDE_V2_ICON_QUEST = 9569;
+ public static final int SKILL_GUIDE_V2_ICON_SAILING_OPTIONS = 9570;
+ public static final int SKILL_GUIDE_V2_ICON_CAPTAINS_LOG = 9571;
+ }
+ }
+
+ public static final class DeadmanskullInterfaceTab
+ {
+ public static final int ID = 210;
+
+ /**
+ * string
+ */
+ public static final int COL_NAME = 0;
+
+ /**
+ * integer
+ */
+ public static final int COL_TAB_NUMBER = 1;
+
+ /**
+ * (struct, dbrow)
+ */
+ public static final int COL_COMBAT_SIGIL = 2;
+
+ /**
+ * (struct, dbrow)
+ */
+ public static final int COL_SKILLING_SIGIL = 3;
+
+ /**
+ * (struct, dbrow)
+ */
+ public static final int COL_UTILITY_SIGIL = 4;
+
+ public static final class Row
+ {
+ public static final int DEADMANSKULL_INTERFACE_TAB_PERMANENT = 9638;
+ public static final int DEADMANSKULL_INTERFACE_TAB_TOGGLE = 9639;
+ public static final int DEADMANSKULL_INTERFACE_TAB_ATTUNE = 9640;
+ }
+ }
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java b/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java
index 99faf930178..d7dd56f4ed4 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/InterfaceID.java
@@ -423,7 +423,7 @@ public final class InterfaceID
public static final int CANOEING = 416;
public static final int BREW_TOOLS = 417;
public static final int BREW_WAITING_ROOM_OVERLAY = 418;
- public static final int PATCHY_INTERFACE = 419;
+ public static final int DEADMAN_TUTORIAL = 419;
public static final int BEEHIVE = 420;
public static final int PVP_ARENA_STAGINGAREA_SHARELOADOUT = 421;
public static final int POH_VIEWER = 422;
@@ -949,6 +949,11 @@ public final class InterfaceID
public static final int PORT_TASK_INFO = 942;
public static final int SAILING_BOAT_CARGOHOLD = 943;
public static final int SAILING_BOAT_CARGOHOLD_SIDE = 944;
+ public static final int REUSABLE_FLOATER = 945;
+ public static final int PATCHY = 946;
+ public static final int MENU_NEW = 947;
+ public static final int DEADMANSKULL_INTERFACE = 948;
+ public static final int QUETZALWHISTLE_MENU = 949;
public static final class _100GuideEggsOverlay
{
@@ -1215,140 +1220,145 @@ public static final class Bankmain
public static final int OCCUPIEDSLOTS = 0x000c_0005;
public static final int UNIVERSE_LINE4 = 0x000c_0006;
public static final int CAPACITY_LAYER = 0x000c_0007;
- public static final int GIM_STORAGE = 0x000c_0008;
- public static final int CAPACITY = 0x000c_0009;
- public static final int ITEMS_CONTAINER = 0x000c_000a;
- public static final int TABS = 0x000c_000b;
- public static final int TABS_LINE0 = 0x000c_000c;
- public static final int ITEMS = 0x000c_000d;
- public static final int SCROLLBAR = 0x000c_000e;
- public static final int POTIONSTORE_CONTAINER = 0x000c_000f;
- public static final int POTIONSTORE_BACKGROUND = 0x000c_0010;
- public static final int BOTTOM = 0x000c_0011;
- public static final int REARRANGE_TEXT = 0x000c_0012;
- public static final int SWAP = 0x000c_0013;
- public static final int SWAP_TEXT = 0x000c_0014;
- public static final int INSERT = 0x000c_0015;
- public static final int INSERT_TEXT = 0x000c_0016;
- public static final int WITHDRAW_TEXT = 0x000c_0017;
- public static final int ITEM = 0x000c_0018;
- public static final int ITEM_TEXT = 0x000c_0019;
- public static final int NOTE = 0x000c_001a;
- public static final int NOTE_TEXT = 0x000c_001b;
- public static final int QUANTITY_LAYER = 0x000c_001c;
- public static final int QUANTITY_LAYER_TEXT0 = 0x000c_001d;
- public static final int QUANTITY1 = 0x000c_001e;
- public static final int QUANTITY1_TEXT = 0x000c_001f;
- public static final int QUANTITY5 = 0x000c_0020;
- public static final int QUANTITY5_TEXT = 0x000c_0021;
- public static final int QUANTITY10 = 0x000c_0022;
- public static final int QUANTITY10_TEXT = 0x000c_0023;
- public static final int QUANTITYX = 0x000c_0024;
- public static final int QUANTITYX_TEXT = 0x000c_0025;
- public static final int QUANTITYALL = 0x000c_0026;
- public static final int QUANTITYALL_TEXT = 0x000c_0027;
- public static final int PLACEHOLDER = 0x000c_0028;
- public static final int PLACEHOLDER_GRAPHIC = 0x000c_0029;
- public static final int SEARCH = 0x000c_002a;
- public static final int SEARCH_GRAPHIC = 0x000c_002b;
- public static final int DEPOSITINV = 0x000c_002c;
- public static final int DEPOSITINV_GRAPHIC = 0x000c_002d;
- public static final int DEPOSITWORN = 0x000c_002e;
- public static final int DEPOSITWORN_GRAPHIC = 0x000c_002f;
- public static final int POTIONSTORE_BUTTON = 0x000c_0030;
- public static final int INCINERATOR_TARGET = 0x000c_0031;
- public static final int INCINERATOR_CONFIRM = 0x000c_0032;
- public static final int INCINERATOR_CONFIRM_GRAPHIC0 = 0x000c_0033;
- public static final int POTIONSTORE_ITEMS = 0x000c_0034;
- public static final int POTIONSTORE_SCROLLBAR = 0x000c_0035;
- public static final int MENU_CONTAINER = 0x000c_0036;
- public static final int TABDISPLAY = 0x000c_0037;
- public static final int INCINERATOR_TOGGLE = 0x000c_0038;
- public static final int BANKTUT_TOGGLE = 0x000c_0039;
- public static final int TABDISPLAY_TEXT0 = 0x000c_003a;
- public static final int TABDISPLAY_SELECT = 0x000c_003b;
- public static final int SIDEOPS_TOGGLE = 0x000c_003c;
- public static final int BANKOPS_TOGGLE = 0x000c_003d;
- public static final int DEPOSITINV_TOGGLE = 0x000c_003e;
- public static final int DEPOSITWORN_TOGGLE = 0x000c_003f;
- public static final int DEPOSITPOTION_TOGGLE = 0x000c_0040;
- public static final int CHUGGINGBARREL_TOGGLE = 0x000c_0041;
- public static final int RELEASE_PLACEHOLDERS = 0x000c_0042;
- public static final int LOCKS = 0x000c_0043;
- public static final int BANK_FILLERS = 0x000c_0044;
- public static final int BANK_FILLER_1 = 0x000c_0045;
- public static final int BANK_FILLER_1_TEXT = 0x000c_0046;
- public static final int BANK_FILLER_10 = 0x000c_0047;
- public static final int BANK_FILLER_10_TEXT = 0x000c_0048;
- public static final int BANK_FILLER_50 = 0x000c_0049;
- public static final int BANK_FILLER_50_TEXT = 0x000c_004a;
- public static final int BANK_FILLER_X = 0x000c_004b;
- public static final int BANK_FILLER_X_TEXT = 0x000c_004c;
- public static final int BANK_FILLER_ALL = 0x000c_004d;
- public static final int BANK_FILLER_ALL_TEXT = 0x000c_004e;
- public static final int BANK_FILLER_CONFIRM = 0x000c_004f;
- public static final int WORNITEMS_CONTAINER = 0x000c_0050;
- public static final int WORNITEMS_CONTAINER_MODEL0 = 0x000c_0051;
- public static final int WORNITEMS_CONTAINER_GRAPHIC1 = 0x000c_0052;
- public static final int WORNITEMS_CONTAINER_GRAPHIC2 = 0x000c_0053;
- public static final int WORNITEMS_CONTAINER_GRAPHIC3 = 0x000c_0054;
- public static final int WORNITEMS_CONTAINER_GRAPHIC4 = 0x000c_0055;
- public static final int WORNITEMS_CONTAINER_GRAPHIC5 = 0x000c_0056;
- public static final int WORNSLOT0 = 0x000c_0057;
- public static final int WORNSLOT1 = 0x000c_0058;
- public static final int WORNSLOT2 = 0x000c_0059;
- public static final int WORNSLOT3 = 0x000c_005a;
- public static final int WORNSLOT4 = 0x000c_005b;
- public static final int WORNSLOT5 = 0x000c_005c;
- public static final int WORNSLOT7 = 0x000c_005d;
- public static final int WORNSLOT9 = 0x000c_005e;
- public static final int WORNSLOT10 = 0x000c_005f;
- public static final int WORNSLOT12 = 0x000c_0060;
- public static final int WORNSLOT13 = 0x000c_0061;
- public static final int EXTRA_QUIVER_SLOT = 0x000c_0062;
- public static final int STAT_GROUP = 0x000c_0063;
- public static final int STAT_GROUP_TEXT0 = 0x000c_0064;
- public static final int STABATT = 0x000c_0065;
- public static final int SLASHATT = 0x000c_0066;
- public static final int CRUSHATT = 0x000c_0067;
- public static final int MAGICATT = 0x000c_0068;
- public static final int RANGEATT = 0x000c_0069;
- public static final int STAT_GROUP_TEXT6 = 0x000c_006a;
- public static final int STABDEF = 0x000c_006b;
- public static final int SLASHDEF = 0x000c_006c;
- public static final int CRUSHDEF = 0x000c_006d;
- public static final int MAGICDEF = 0x000c_006e;
- public static final int RANGEDEF = 0x000c_006f;
- public static final int STAT_GROUP_TEXT12 = 0x000c_0070;
- public static final int MELEESTRENGTH = 0x000c_0071;
- public static final int RANGESTRENGTH = 0x000c_0072;
- public static final int MAGICDAMAGE = 0x000c_0073;
- public static final int PRAYER = 0x000c_0074;
- public static final int STAT_GROUP_TEXT17 = 0x000c_0075;
- public static final int TYPEMULTIPLIER = 0x000c_0076;
- public static final int SLAYERMULTIPLIER = 0x000c_0077;
- public static final int STAT_GROUP_TEXT20 = 0x000c_0078;
- public static final int NEXT_PAGE = 0x000c_0079;
- public static final int SET_BONUS = 0x000c_007a;
- public static final int WORNITEMS_CONTAINER_GRAPHIC21 = 0x000c_007b;
- public static final int WORNITEMS_CONTAINER_TEXT22 = 0x000c_007c;
- public static final int MENU_BUTTON = 0x000c_007d;
- public static final int WORNITEMS_BUTTON = 0x000c_007e;
- public static final int BANK_HIGHLIGHT = 0x000c_007f;
- public static final int POPUP = 0x000c_0080;
- public static final int DROPDOWN_CONTAINER = 0x000c_0081;
- public static final int TOOLTIP = 0x000c_0082;
- public static final int SET_BONUS_TEXT0 = 0x000c_0083;
- public static final int SET_EFFECT = 0x000c_0084;
- public static final int SCROLLBAR_1 = 0x000c_0085;
- public static final int PREVIOUS_PAGE = 0x000c_0086;
- public static final int ATTACKSPEEDBASE = 0x000c_0087;
- public static final int ATTACKSPEEDACTUAL = 0x000c_0088;
- public static final int EXTRA_QUIVER_AMMO_GRAPHIC = 0x000c_0089;
- public static final int EXTRA_QUIVER_AMMO = 0x000c_008a;
- public static final int DROPDOWN = 0x000c_008b;
- public static final int DROPDOWN_CONTENT = 0x000c_008c;
- public static final int DROPDOWN_SCROLLER = 0x000c_008d;
+ public static final int CAPACITY = 0x000c_0008;
+ public static final int ITEMS_CONTAINER = 0x000c_0009;
+ public static final int TABS = 0x000c_000a;
+ public static final int TABS_LINE0 = 0x000c_000b;
+ public static final int ITEMS = 0x000c_000c;
+ public static final int SCROLLBAR = 0x000c_000d;
+ public static final int POTIONSTORE_CONTAINER = 0x000c_000e;
+ public static final int POTIONSTORE_BACKGROUND = 0x000c_000f;
+ public static final int BOTTOM = 0x000c_0010;
+ public static final int SWAP_INSERT = 0x000c_0011;
+ public static final int SWAP_INSERT_GRAPHIC = 0x000c_0012;
+ public static final int NOTE = 0x000c_0013;
+ public static final int NOTE_GRAPHIC = 0x000c_0014;
+ public static final int BOTTOM_LINE4 = 0x000c_0015;
+ public static final int QUANTITY_LAYER = 0x000c_0016;
+ public static final int QUANTITY1 = 0x000c_0017;
+ public static final int QUANTITY1_TEXT = 0x000c_0018;
+ public static final int QUANTITY5 = 0x000c_0019;
+ public static final int QUANTITY5_TEXT = 0x000c_001a;
+ public static final int QUANTITY10 = 0x000c_001b;
+ public static final int QUANTITY10_TEXT = 0x000c_001c;
+ public static final int QUANTITYX = 0x000c_001d;
+ public static final int QUANTITYX_TEXT = 0x000c_001e;
+ public static final int QUANTITYALL = 0x000c_001f;
+ public static final int QUANTITYALL_TEXT = 0x000c_0020;
+ public static final int BOTTOM_LINE6 = 0x000c_0021;
+ public static final int PLACEHOLDER = 0x000c_0022;
+ public static final int PLACEHOLDER_GRAPHIC = 0x000c_0023;
+ public static final int SEARCH = 0x000c_0024;
+ public static final int SEARCH_GRAPHIC = 0x000c_0025;
+ public static final int DEPOSIT_LINE = 0x000c_0026;
+ public static final int DEPOSITCONTAINERS = 0x000c_0027;
+ public static final int DEPOSITCONTAINERS_GRAPHIC = 0x000c_0028;
+ public static final int DEPOSITINV = 0x000c_0029;
+ public static final int DEPOSITINV_GRAPHIC = 0x000c_002a;
+ public static final int DEPOSITWORN = 0x000c_002b;
+ public static final int DEPOSITWORN_GRAPHIC = 0x000c_002c;
+ public static final int HORIZONTAL_LINE = 0x000c_002d;
+ public static final int POPUP_BUTTON_OUT = 0x000c_002e;
+ public static final int STORAGE_POPUP_TAB = 0x000c_002f;
+ public static final int INCINERATOR_TARGET = 0x000c_0030;
+ public static final int INCINERATOR_CONFIRM = 0x000c_0031;
+ public static final int INCINERATOR_CONFIRM_GRAPHIC0 = 0x000c_0032;
+ public static final int POTIONSTORE_ITEMS = 0x000c_0033;
+ public static final int POTIONSTORE_SCROLLBAR = 0x000c_0034;
+ public static final int MENU_CONTAINER = 0x000c_0035;
+ public static final int WORNITEMS_CONTAINER = 0x000c_0036;
+ public static final int WORNITEMS_CONTAINER_MODEL0 = 0x000c_0037;
+ public static final int WORNITEMS_CONTAINER_GRAPHIC1 = 0x000c_0038;
+ public static final int WORNITEMS_CONTAINER_GRAPHIC2 = 0x000c_0039;
+ public static final int WORNITEMS_CONTAINER_GRAPHIC3 = 0x000c_003a;
+ public static final int WORNITEMS_CONTAINER_GRAPHIC4 = 0x000c_003b;
+ public static final int WORNITEMS_CONTAINER_GRAPHIC5 = 0x000c_003c;
+ public static final int WORNSLOT0 = 0x000c_003d;
+ public static final int WORNSLOT1 = 0x000c_003e;
+ public static final int WORNSLOT2 = 0x000c_003f;
+ public static final int WORNSLOT3 = 0x000c_0040;
+ public static final int WORNSLOT4 = 0x000c_0041;
+ public static final int WORNSLOT5 = 0x000c_0042;
+ public static final int WORNSLOT7 = 0x000c_0043;
+ public static final int WORNSLOT9 = 0x000c_0044;
+ public static final int WORNSLOT10 = 0x000c_0045;
+ public static final int WORNSLOT12 = 0x000c_0046;
+ public static final int WORNSLOT13 = 0x000c_0047;
+ public static final int EXTRA_QUIVER_SLOT = 0x000c_0048;
+ public static final int STAT_GROUP = 0x000c_0049;
+ public static final int STAT_GROUP_TEXT0 = 0x000c_004a;
+ public static final int STABATT = 0x000c_004b;
+ public static final int SLASHATT = 0x000c_004c;
+ public static final int CRUSHATT = 0x000c_004d;
+ public static final int MAGICATT = 0x000c_004e;
+ public static final int RANGEATT = 0x000c_004f;
+ public static final int STAT_GROUP_TEXT6 = 0x000c_0050;
+ public static final int STABDEF = 0x000c_0051;
+ public static final int SLASHDEF = 0x000c_0052;
+ public static final int CRUSHDEF = 0x000c_0053;
+ public static final int MAGICDEF = 0x000c_0054;
+ public static final int RANGEDEF = 0x000c_0055;
+ public static final int STAT_GROUP_TEXT12 = 0x000c_0056;
+ public static final int MELEESTRENGTH = 0x000c_0057;
+ public static final int RANGESTRENGTH = 0x000c_0058;
+ public static final int MAGICDAMAGE = 0x000c_0059;
+ public static final int PRAYER = 0x000c_005a;
+ public static final int STAT_GROUP_TEXT17 = 0x000c_005b;
+ public static final int TYPEMULTIPLIER = 0x000c_005c;
+ public static final int SLAYERMULTIPLIER = 0x000c_005d;
+ public static final int STAT_GROUP_TEXT20 = 0x000c_005e;
+ public static final int NEXT_PAGE = 0x000c_005f;
+ public static final int SET_BONUS = 0x000c_0060;
+ public static final int WORNITEMS_CONTAINER_GRAPHIC21 = 0x000c_0061;
+ public static final int WORNITEMS_CONTAINER_TEXT22 = 0x000c_0062;
+ public static final int MENU_BUTTON = 0x000c_0063;
+ public static final int WORNITEMS_BUTTON = 0x000c_0064;
+ public static final int BANK_HIGHLIGHT = 0x000c_0065;
+ public static final int POPUP = 0x000c_0066;
+ public static final int DROPDOWN_CONTAINER = 0x000c_0067;
+ public static final int TOOLTIP = 0x000c_0068;
+ public static final int SET_BONUS_TEXT0 = 0x000c_0069;
+ public static final int SET_EFFECT = 0x000c_006a;
+ public static final int SCROLLBAR_1 = 0x000c_006b;
+ public static final int PREVIOUS_PAGE = 0x000c_006c;
+ public static final int ATTACKSPEEDBASE = 0x000c_006d;
+ public static final int ATTACKSPEEDACTUAL = 0x000c_006e;
+ public static final int EXTRA_QUIVER_AMMO_GRAPHIC = 0x000c_006f;
+ public static final int EXTRA_QUIVER_AMMO = 0x000c_0070;
+ public static final int DROPDOWN = 0x000c_0071;
+ public static final int DROPDOWN_CONTENT = 0x000c_0072;
+ public static final int DROPDOWN_SCROLLER = 0x000c_0073;
+ public static final int STORAGE_POPUP_TAB_FRAME = 0x000c_0074;
+ public static final int POPUP_BUTTON_IN = 0x000c_0075;
+ public static final int GIM_STORAGE = 0x000c_0076;
+ public static final int POTIONSTORE_BUTTON = 0x000c_0077;
+ public static final int TABDISPLAY = 0x000c_0078;
+ public static final int TABDISPLAY_TEXT0 = 0x000c_0079;
+ public static final int TABDISPLAY_SELECT_1 = 0x000c_007a;
+ public static final int INCINERATOR_TOGGLE = 0x000c_007b;
+ public static final int BANKTUT_TOGGLE = 0x000c_007c;
+ public static final int SIDEOPS_TOGGLE = 0x000c_007d;
+ public static final int BANKOPS_TOGGLE = 0x000c_007e;
+ public static final int DEPOSITINV_TOGGLE = 0x000c_007f;
+ public static final int DEPOSITWORN_TOGGLE = 0x000c_0080;
+ public static final int DEPOSITCONTAINERS_TOGGLE = 0x000c_0081;
+ public static final int POPUP_TAB_FORGETPOS = 0x000c_0082;
+ public static final int DEPOSITPOTION_TOGGLE = 0x000c_0083;
+ public static final int CHUGGINGBARREL_TOGGLE = 0x000c_0084;
+ public static final int RELEASE_PLACEHOLDERS = 0x000c_0085;
+ public static final int LOCKS = 0x000c_0086;
+ public static final int BANK_FILLERS = 0x000c_0087;
+ public static final int BANK_FILLER_1 = 0x000c_0088;
+ public static final int BANK_FILLER_1_TEXT = 0x000c_0089;
+ public static final int BANK_FILLER_10 = 0x000c_008a;
+ public static final int BANK_FILLER_10_TEXT = 0x000c_008b;
+ public static final int BANK_FILLER_50 = 0x000c_008c;
+ public static final int BANK_FILLER_50_TEXT = 0x000c_008d;
+ public static final int BANK_FILLER_X = 0x000c_008e;
+ public static final int BANK_FILLER_X_TEXT = 0x000c_008f;
+ public static final int BANK_FILLER_ALL = 0x000c_0090;
+ public static final int BANK_FILLER_ALL_TEXT = 0x000c_0091;
+ public static final int BANK_FILLER_CONFIRM = 0x000c_0092;
}
public static final class CorpBeast
@@ -1428,77 +1438,76 @@ public static final class Bankside
public static final int RUNEPOUCH_FRAME_GRAPHIC0 = 0x000f_0018;
public static final int RUNEPOUCH_CONTENTS = 0x000f_0019;
public static final int RUNEPOUCH_TOP = 0x000f_001a;
- public static final int RUNEPOUCH_CONTENTS_TEXT1 = 0x000f_001b;
- public static final int RUNEPOUCH_LOAD_A = 0x000f_001c;
- public static final int RUNEPOUCH_LOAD_B = 0x000f_001d;
- public static final int RUNEPOUCH_LOAD_C = 0x000f_001e;
- public static final int RUNEPOUCH_LOAD_D = 0x000f_001f;
- public static final int RUNEPOUCH_LOADOUT_SCROLLBAR = 0x000f_0020;
- public static final int RUNEPOUCH_LOADOUT_CONTAINER = 0x000f_0021;
- public static final int RUNEPOUCH_LOADOUT_A = 0x000f_0022;
- public static final int RUNEPOUCH_NAME_A = 0x000f_0023;
- public static final int RUNEPOUCH_SELECT_CONTAINER = 0x000f_0024;
- public static final int RUNEPOUCH_NAME_SELECT_CONTAINER = 0x000f_0025;
- public static final int RUNEPOUCH_LOADOUT_B = 0x000f_0026;
- public static final int RUNEPOUCH_NAME_B = 0x000f_0027;
- public static final int RUNEPOUCH_SELECT_CONTAINER_GRAPHIC0 = 0x000f_0028;
- public static final int RUNEPOUCH_LOADOUT_C = 0x000f_0029;
- public static final int RUNEPOUCH_NAME_C = 0x000f_002a;
- public static final int RUNEPOUCH_SELECT_LIST = 0x000f_002b;
- public static final int RUNEPOUCH_LOADOUT_D = 0x000f_002c;
- public static final int RUNEPOUCH_NAME_D = 0x000f_002d;
- public static final int RUNEPOUCH_LOADOUT_E = 0x000f_002e;
- public static final int RUNEPOUCH_NAME_E = 0x000f_002f;
- public static final int RUNEPOUCH_LOADOUT_F = 0x000f_0030;
- public static final int RUNEPOUCH_NAME_F = 0x000f_0031;
- public static final int RUNEPOUCH_LOADOUT_G = 0x000f_0032;
- public static final int RUNEPOUCH_NAME_G = 0x000f_0033;
- public static final int RUNEPOUCH_LOADOUT_H = 0x000f_0034;
- public static final int RUNEPOUCH_NAME_H = 0x000f_0035;
- public static final int RUNEPOUCH_LOADOUT_I = 0x000f_0036;
- public static final int RUNEPOUCH_NAME_I = 0x000f_0037;
- public static final int RUNEPOUCH_LOADOUT_J = 0x000f_0038;
- public static final int RUNEPOUCH_NAME_J = 0x000f_0039;
- public static final int RUNEPOUCH_SELECT_SCROLLBAR = 0x000f_003a;
- public static final int BANKSIDE_HIGHLIGHT = 0x000f_003b;
- public static final int PREPOT_DEVICE_CONTAINER = 0x000f_003c;
- public static final int PREPOT_DEVICE_BANKALL = 0x000f_003d;
- public static final int PREPOT_DEVICE_FILL = 0x000f_003e;
- public static final int PREPOT_DEVICE_CONTAINER_TEXT2 = 0x000f_003f;
- public static final int PREPOT_DEVICE_DISMISS = 0x000f_0040;
- public static final int PREPOT_DEVICE_FRAME = 0x000f_0041;
- public static final int PREPOT_DEVICE_FRAME_GRAPHIC0 = 0x000f_0042;
- public static final int PREPOT_DEVICE_CONTENTS_CONTAINER = 0x000f_0043;
- public static final int PREPOT_DEVICE_CONTENTS_BG = 0x000f_0044;
- public static final int PREPOT_DEVICE_CONTENTS = 0x000f_0045;
- public static final int PREPOT_DEVICE_CONTENTS_CONTAINER_TEXT2 = 0x000f_0046;
- public static final int PREPOT_DEVICE_LOADOUTS_SCROLLBAR = 0x000f_0047;
- public static final int PREPOT_DEVICE_LOADOUTS = 0x000f_0048;
- public static final int PREPOT_DEVICE_LOADOUT_0 = 0x000f_0049;
- public static final int PREPOT_DEVICE_LOADOUT_1 = 0x000f_004a;
- public static final int PREPOT_DEVICE_LOADOUT_2 = 0x000f_004b;
- public static final int PREPOT_DEVICE_LOADOUT_3 = 0x000f_004c;
- public static final int PREPOT_DEVICE_LOADOUT_1_LOAD = 0x000f_004d;
- public static final int PREPOT_DEVICE_LOADOUT_1_SAVE = 0x000f_004e;
- public static final int PREPOT_DEVICE_LOADOUT_1_CONTENTS = 0x000f_004f;
- public static final int PREPOT_DEVICE_LOADOUT_2_LOAD = 0x000f_0050;
- public static final int PREPOT_DEVICE_LOADOUT_2_SAVE = 0x000f_0051;
- public static final int PREPOT_DEVICE_LOADOUT_2_CONTENTS = 0x000f_0052;
- public static final int PREPOT_DEVICE_LOADOUT_3_LOAD = 0x000f_0053;
- public static final int PREPOT_DEVICE_LOADOUT_3_SAVE = 0x000f_0054;
- public static final int PREPOT_DEVICE_LOADOUT_3_CONTENTS = 0x000f_0055;
- public static final int PREPOT_DEVICE_LOADOUT_0_LOAD = 0x000f_0056;
- public static final int PREPOT_DEVICE_LOADOUT_0_SAVE = 0x000f_0057;
- public static final int PREPOT_DEVICE_LOADOUT_0_CONTENTS = 0x000f_0058;
- public static final int RUNEPOUCH_LOAD_E = 0x000f_0059;
- public static final int RUNEPOUCH_LOAD_F = 0x000f_005a;
- public static final int RUNEPOUCH_LOAD_G = 0x000f_005b;
- public static final int RUNEPOUCH_LOAD_H = 0x000f_005c;
- public static final int RUNEPOUCH_LOAD_I = 0x000f_005d;
- public static final int RUNEPOUCH_LOAD_J = 0x000f_005e;
- public static final int RUNEPOUCH_NAME_SELECT_CONTAINER_GRAPHIC0 = 0x000f_005f;
- public static final int RUNEPOUCH_NAME_SELECT_LIST = 0x000f_0060;
- public static final int RUNEPOUCH_NAME_SELECT_SCROLLBAR = 0x000f_0061;
+ public static final int RUNEPOUCH_LOAD_A = 0x000f_001b;
+ public static final int RUNEPOUCH_LOAD_B = 0x000f_001c;
+ public static final int RUNEPOUCH_LOAD_C = 0x000f_001d;
+ public static final int RUNEPOUCH_LOAD_D = 0x000f_001e;
+ public static final int RUNEPOUCH_LOADOUT_SCROLLBAR = 0x000f_001f;
+ public static final int RUNEPOUCH_LOADOUT_CONTAINER = 0x000f_0020;
+ public static final int RUNEPOUCH_LOADOUT_A = 0x000f_0021;
+ public static final int RUNEPOUCH_NAME_A = 0x000f_0022;
+ public static final int RUNEPOUCH_SELECT_CONTAINER = 0x000f_0023;
+ public static final int RUNEPOUCH_NAME_SELECT_CONTAINER = 0x000f_0024;
+ public static final int RUNEPOUCH_LOADOUT_B = 0x000f_0025;
+ public static final int RUNEPOUCH_NAME_B = 0x000f_0026;
+ public static final int RUNEPOUCH_SELECT_CONTAINER_GRAPHIC0 = 0x000f_0027;
+ public static final int RUNEPOUCH_LOADOUT_C = 0x000f_0028;
+ public static final int RUNEPOUCH_NAME_C = 0x000f_0029;
+ public static final int RUNEPOUCH_SELECT_LIST = 0x000f_002a;
+ public static final int RUNEPOUCH_LOADOUT_D = 0x000f_002b;
+ public static final int RUNEPOUCH_NAME_D = 0x000f_002c;
+ public static final int RUNEPOUCH_LOADOUT_E = 0x000f_002d;
+ public static final int RUNEPOUCH_NAME_E = 0x000f_002e;
+ public static final int RUNEPOUCH_LOADOUT_F = 0x000f_002f;
+ public static final int RUNEPOUCH_NAME_F = 0x000f_0030;
+ public static final int RUNEPOUCH_LOADOUT_G = 0x000f_0031;
+ public static final int RUNEPOUCH_NAME_G = 0x000f_0032;
+ public static final int RUNEPOUCH_LOADOUT_H = 0x000f_0033;
+ public static final int RUNEPOUCH_NAME_H = 0x000f_0034;
+ public static final int RUNEPOUCH_LOADOUT_I = 0x000f_0035;
+ public static final int RUNEPOUCH_NAME_I = 0x000f_0036;
+ public static final int RUNEPOUCH_LOADOUT_J = 0x000f_0037;
+ public static final int RUNEPOUCH_NAME_J = 0x000f_0038;
+ public static final int RUNEPOUCH_SELECT_SCROLLBAR = 0x000f_0039;
+ public static final int BANKSIDE_HIGHLIGHT = 0x000f_003a;
+ public static final int PREPOT_DEVICE_CONTAINER = 0x000f_003b;
+ public static final int PREPOT_DEVICE_BANKALL = 0x000f_003c;
+ public static final int PREPOT_DEVICE_FILL = 0x000f_003d;
+ public static final int PREPOT_DEVICE_CONTAINER_TEXT2 = 0x000f_003e;
+ public static final int PREPOT_DEVICE_DISMISS = 0x000f_003f;
+ public static final int PREPOT_DEVICE_FRAME = 0x000f_0040;
+ public static final int PREPOT_DEVICE_FRAME_GRAPHIC0 = 0x000f_0041;
+ public static final int PREPOT_DEVICE_CONTENTS_CONTAINER = 0x000f_0042;
+ public static final int PREPOT_DEVICE_CONTENTS_BG = 0x000f_0043;
+ public static final int PREPOT_DEVICE_CONTENTS = 0x000f_0044;
+ public static final int PREPOT_DEVICE_CONTENTS_CONTAINER_TEXT2 = 0x000f_0045;
+ public static final int PREPOT_DEVICE_LOADOUTS_SCROLLBAR = 0x000f_0046;
+ public static final int PREPOT_DEVICE_LOADOUTS = 0x000f_0047;
+ public static final int PREPOT_DEVICE_LOADOUT_0 = 0x000f_0048;
+ public static final int PREPOT_DEVICE_LOADOUT_1 = 0x000f_0049;
+ public static final int PREPOT_DEVICE_LOADOUT_2 = 0x000f_004a;
+ public static final int PREPOT_DEVICE_LOADOUT_3 = 0x000f_004b;
+ public static final int PREPOT_DEVICE_LOADOUT_1_LOAD = 0x000f_004c;
+ public static final int PREPOT_DEVICE_LOADOUT_1_SAVE = 0x000f_004d;
+ public static final int PREPOT_DEVICE_LOADOUT_1_CONTENTS = 0x000f_004e;
+ public static final int PREPOT_DEVICE_LOADOUT_2_LOAD = 0x000f_004f;
+ public static final int PREPOT_DEVICE_LOADOUT_2_SAVE = 0x000f_0050;
+ public static final int PREPOT_DEVICE_LOADOUT_2_CONTENTS = 0x000f_0051;
+ public static final int PREPOT_DEVICE_LOADOUT_3_LOAD = 0x000f_0052;
+ public static final int PREPOT_DEVICE_LOADOUT_3_SAVE = 0x000f_0053;
+ public static final int PREPOT_DEVICE_LOADOUT_3_CONTENTS = 0x000f_0054;
+ public static final int PREPOT_DEVICE_LOADOUT_0_LOAD = 0x000f_0055;
+ public static final int PREPOT_DEVICE_LOADOUT_0_SAVE = 0x000f_0056;
+ public static final int PREPOT_DEVICE_LOADOUT_0_CONTENTS = 0x000f_0057;
+ public static final int RUNEPOUCH_LOAD_E = 0x000f_0058;
+ public static final int RUNEPOUCH_LOAD_F = 0x000f_0059;
+ public static final int RUNEPOUCH_LOAD_G = 0x000f_005a;
+ public static final int RUNEPOUCH_LOAD_H = 0x000f_005b;
+ public static final int RUNEPOUCH_LOAD_I = 0x000f_005c;
+ public static final int RUNEPOUCH_LOAD_J = 0x000f_005d;
+ public static final int RUNEPOUCH_NAME_SELECT_CONTAINER_GRAPHIC0 = 0x000f_005e;
+ public static final int RUNEPOUCH_NAME_SELECT_LIST = 0x000f_005f;
+ public static final int RUNEPOUCH_NAME_SELECT_SCROLLBAR = 0x000f_0060;
}
public static final class Oculus
@@ -8126,8 +8135,8 @@ public static final class BankDepositbox
public static final int INVENTORY_RECT2 = 0x00c0_001a;
public static final int INVENTORY_RECT3 = 0x00c0_001b;
public static final int DEPOSIT_ALL_BUTTONS = 0x00c0_001c;
- public static final int DEPOSIT_INV = 0x00c0_001d;
- public static final int DEPOSIT_WORN = 0x00c0_001e;
+ public static final int DEPOSIT_WORN = 0x00c0_001d;
+ public static final int DEPOSIT_INV = 0x00c0_001e;
public static final int DEPOSIT_LOOTINGBAG = 0x00c0_001f;
public static final int QUANTITY_BUTTONS = 0x00c0_0020;
public static final int MENU = 0x00c0_0021;
@@ -14589,7 +14598,7 @@ public static final class FairyringsLog
public static final int SORT_1 = 0x017d_0004;
public static final int SORT_2 = 0x017d_0005;
public static final int TITLEBOX_TEXT1 = 0x017d_0006;
- public static final int TITLEBOX_GRAPHIC2 = 0x017d_0007;
+ public static final int SEARCH = 0x017d_0007;
public static final int CONTENTS = 0x017d_0008;
public static final int FAVES = 0x017d_0009;
public static final int DIVIDER = 0x017d_000a;
@@ -15817,62 +15826,56 @@ public static final class BrewWaitingRoomOverlay
public static final int CONTENTS_TEXT4 = 0x01a2_0007;
}
- public static final class PatchyInterface
- {
- public static final int PATCHY_SCROLL = 0x01a3_0000;
- public static final int UNIVERSE_PAGE_1 = 0x01a3_0001;
- public static final int PATCHY_FIRST_PAGE = 0x01a3_0002;
- public static final int UNIVERSE_PAGE_2 = 0x01a3_0003;
- public static final int PATCHY_PUNCHLINE_1 = 0x01a3_0004;
- public static final int PARTYHAT_LAYER = 0x01a3_0005;
- public static final int WOM_HEAD = 0x01a3_0006;
- public static final int PHAT_BUTTON = 0x01a3_0007;
- public static final int TOPHAT_LAYER = 0x01a3_0008;
- public static final int TOPHAT_MONACLE = 0x01a3_0009;
- public static final int TOPHAT_BUTTON = 0x01a3_000a;
- public static final int PIRATEHAT_LAYER = 0x01a3_000b;
- public static final int PIRATEHAT_PATCH = 0x01a3_000c;
- public static final int PIRATEHAT_PATCH_1 = 0x01a3_000d;
- public static final int PIRATEHAT_BUTTON = 0x01a3_000e;
- public static final int DOUBLE_EYEPATCH_LAYER = 0x01a3_000f;
- public static final int DARK_FLIPPERS_LAYER = 0x01a3_0010;
- public static final int DARK_FLIPPERS = 0x01a3_0011;
- public static final int DARK_FLIPPERS_BUTTON = 0x01a3_0012;
- public static final int DOUBLE_EYE_PATCH = 0x01a3_0013;
- public static final int DOUBLE_EYEPATCH_BUTTON = 0x01a3_0014;
- public static final int PATCHY_PUNCHLINE = 0x01a3_0015;
- public static final int BANDANA_LAYER = 0x01a3_0016;
- public static final int BANDANA_RED_LAYER = 0x01a3_0017;
- public static final int BANDANA_BLUE_LAYER = 0x01a3_0018;
- public static final int BANDANA_BROWN_LAYER = 0x01a3_0019;
- public static final int HAT_LAYER = 0x01a3_001a;
- public static final int CLAW_LAYER = 0x01a3_001b;
- public static final int CAVALIER_LAYER = 0x01a3_001c;
- public static final int BARRET_LAYER = 0x01a3_001d;
- public static final int PATCHY_BANDANA_RED = 0x01a3_001e;
- public static final int PATCHY_BANDANA_WHITE = 0x01a3_001f;
- public static final int PATCHY_BANDANA_BLUE = 0x01a3_0020;
- public static final int PATCHY_BANDANA_BROWN = 0x01a3_0021;
- public static final int PATCHY_HAT = 0x01a3_0022;
- public static final int PATCHY_HOOK_CLAW = 0x01a3_0023;
- public static final int PATCHY_CAVALIER_BLACK = 0x01a3_0024;
- public static final int PATCHY_BARRET_BLACK = 0x01a3_0025;
- public static final int BANDANA_BLUE_BUTTON = 0x01a3_0026;
- public static final int BANDANA_BROWN_BUTTON = 0x01a3_0027;
- public static final int HAT_BUTTON = 0x01a3_0028;
- public static final int CLAW_BUTTON = 0x01a3_0029;
- public static final int BANDANA_RED_BUTTON = 0x01a3_002a;
- public static final int BANDANA_BUTTON = 0x01a3_002b;
- public static final int CAVALIER_BUTTON = 0x01a3_002c;
- public static final int BARRET_BUTTON = 0x01a3_002d;
- public static final int BANDANA_RECT_WHITE = 0x01a3_002e;
- public static final int BANDANA_RECT_RED = 0x01a3_002f;
- public static final int BANDANA_RECT_BLUE = 0x01a3_0030;
- public static final int BANDANA_RECT_BROWN = 0x01a3_0031;
- public static final int HAT_RECT = 0x01a3_0032;
- public static final int HOOK_RECT = 0x01a3_0033;
- public static final int PATCHY_CLOSE = 0x01a3_0034;
- public static final int PATCHY_NEXT_PAGE = 0x01a3_0035;
+ public static final class DeadmanTutorial
+ {
+ public static final int UNIVERSE = 0x01a3_0000;
+ public static final int NOCLICK = 0x01a3_0001;
+ public static final int MAIN = 0x01a3_0002;
+ public static final int TUT_1_LAYER = 0x01a3_0003;
+ public static final int TUT_2_LAYER = 0x01a3_0004;
+ public static final int TUT_3_LAYER = 0x01a3_0005;
+ public static final int TUT_4_LAYER = 0x01a3_0006;
+ public static final int TUT_5_LAYER = 0x01a3_0007;
+ public static final int TUT_TELEPORT_LAYER = 0x01a3_0008;
+ public static final int BACKGROUND = 0x01a3_0009;
+ public static final int TUT_1_LAYER_GRAPHIC1 = 0x01a3_000a;
+ public static final int TUT_1_LAYER_GRAPHIC2 = 0x01a3_000b;
+ public static final int TUT_1_TEXT_1 = 0x01a3_000c;
+ public static final int CONTINUE_1 = 0x01a3_000d;
+ public static final int LOGOUT = 0x01a3_000e;
+ public static final int BACKGROUND_1 = 0x01a3_000f;
+ public static final int TUT_2_LAYER_GRAPHIC1 = 0x01a3_0010;
+ public static final int TUT_1_TEXT_2 = 0x01a3_0011;
+ public static final int CONTINUE_2 = 0x01a3_0012;
+ public static final int TUT_1_INDEX_1 = 0x01a3_0013;
+ public static final int TUT_2_LAYER_GRAPHIC5 = 0x01a3_0014;
+ public static final int TUT_2_LAYER_GRAPHIC6 = 0x01a3_0015;
+ public static final int BACKGROUND_2 = 0x01a3_0016;
+ public static final int TUT_3_LAYER_GRAPHIC1 = 0x01a3_0017;
+ public static final int TUT_1_TEXT_3 = 0x01a3_0018;
+ public static final int CONTINUE_3 = 0x01a3_0019;
+ public static final int BACK_3 = 0x01a3_001a;
+ public static final int TUT_1_INDEX_2 = 0x01a3_001b;
+ public static final int BACKGROUND_3 = 0x01a3_001c;
+ public static final int TUT_4_LAYER_GRAPHIC1 = 0x01a3_001d;
+ public static final int TUT_1_TEXT_4 = 0x01a3_001e;
+ public static final int CONTINUE_4 = 0x01a3_001f;
+ public static final int BACK_4 = 0x01a3_0020;
+ public static final int TUT_1_INDEX_3 = 0x01a3_0021;
+ public static final int BACKGROUND_4 = 0x01a3_0022;
+ public static final int TUT_TELEPORT_LAYER_GRAPHIC1 = 0x01a3_0023;
+ public static final int TUT_1_TEXT_TELEPORT = 0x01a3_0024;
+ public static final int TELE_LUMBRIDGE = 0x01a3_0025;
+ public static final int TELE_VARROCK = 0x01a3_0026;
+ public static final int TELE_ARDOUGNE = 0x01a3_0027;
+ public static final int TELE_KOUREND = 0x01a3_0028;
+ public static final int TELE_GNOMESTRONGHOLD = 0x01a3_0029;
+ public static final int BACKGROUND_5 = 0x01a3_002a;
+ public static final int TUT_5_LAYER_GRAPHIC1 = 0x01a3_002b;
+ public static final int TUT_1_TEXT_5 = 0x01a3_002c;
+ public static final int CONTINUE_5 = 0x01a3_002d;
+ public static final int BACK_5 = 0x01a3_002e;
+ public static final int TUT_1_INDEX_4 = 0x01a3_002f;
}
public static final class Beehive
@@ -16080,27 +16083,30 @@ public static final class SlayerRewards
public static final int BUY_PRICES = 0x01aa_0019;
public static final int BUY_SCROLLBAR = 0x01aa_001a;
public static final int TASKS = 0x01aa_001b;
- public static final int VIEW_TASKS = 0x01aa_001c;
- public static final int TASKS_STORED_CONTAINER = 0x01aa_001d;
- public static final int TASKS_STORED_CONTAINER_RECT0 = 0x01aa_001e;
- public static final int TASKS_INTRODUCTION = 0x01aa_001f;
- public static final int TASKS_CURRENT_CONTAINER = 0x01aa_0020;
- public static final int TASKS_CURRENT_CONTAINER_RECT0 = 0x01aa_0021;
- public static final int TASKS_CURRENT_CONTAINER_RECT1 = 0x01aa_0022;
- public static final int TASKS_CURRENT_CONTAINER_RECT2 = 0x01aa_0023;
- public static final int TASKS_CURRENT_CONTAINER_TEXT3 = 0x01aa_0024;
- public static final int TASKS_CURRENT = 0x01aa_0025;
- public static final int TASKS_TEXT4 = 0x01aa_0026;
- public static final int TASKS_SLOT_1 = 0x01aa_0027;
- public static final int TASKS_SLOT_2 = 0x01aa_0028;
- public static final int TASKS_SLOT_3 = 0x01aa_0029;
- public static final int TASKS_SLOT_4 = 0x01aa_002a;
- public static final int TASKS_SLOT_5 = 0x01aa_002b;
- public static final int TASKS_SLOT_6 = 0x01aa_002c;
- public static final int TASKS_SLOT_DIARY = 0x01aa_002d;
- public static final int TASKS_STORED_CONTAINER_RECT1 = 0x01aa_002e;
- public static final int TASKS_STORED_CONTAINER_RECT2 = 0x01aa_002f;
- public static final int TASKS_STORED = 0x01aa_0030;
+ public static final int REWARDS = 0x01aa_001c;
+ public static final int VIEW_TASKS = 0x01aa_001d;
+ public static final int TASKS_STORED_CONTAINER = 0x01aa_001e;
+ public static final int TASKS_STORED_CONTAINER_RECT0 = 0x01aa_001f;
+ public static final int TASKS_INTRODUCTION = 0x01aa_0020;
+ public static final int TASKS_CURRENT_CONTAINER = 0x01aa_0021;
+ public static final int TASKS_CURRENT_CONTAINER_RECT0 = 0x01aa_0022;
+ public static final int TASKS_CURRENT_CONTAINER_RECT1 = 0x01aa_0023;
+ public static final int TASKS_CURRENT_CONTAINER_RECT2 = 0x01aa_0024;
+ public static final int TASKS_CURRENT_CONTAINER_TEXT3 = 0x01aa_0025;
+ public static final int TASKS_CURRENT = 0x01aa_0026;
+ public static final int TASKS_TEXT4 = 0x01aa_0027;
+ public static final int TASKS_SLOT_1 = 0x01aa_0028;
+ public static final int TASKS_SLOT_2 = 0x01aa_0029;
+ public static final int TASKS_SLOT_3 = 0x01aa_002a;
+ public static final int TASKS_SLOT_4 = 0x01aa_002b;
+ public static final int TASKS_SLOT_5 = 0x01aa_002c;
+ public static final int TASKS_SLOT_6 = 0x01aa_002d;
+ public static final int TASKS_SLOT_DIARY = 0x01aa_002e;
+ public static final int TASKS_STORED_CONTAINER_RECT1 = 0x01aa_002f;
+ public static final int TASKS_STORED_CONTAINER_RECT2 = 0x01aa_0030;
+ public static final int TASKS_STORED = 0x01aa_0031;
+ public static final int REWARDS_CONTENTS = 0x01aa_0032;
+ public static final int REWARDS_SCROLLBAR = 0x01aa_0033;
}
public static final class ScrollGodfather
@@ -24659,34 +24665,27 @@ public static final class SharedBank
public static final int SEARCH_GRAPHIC = 0x02d4_0011;
public static final int DEPOSITINV = 0x02d4_0012;
public static final int DEPOSITINV_GRAPHIC = 0x02d4_0013;
- public static final int BOTTOM = 0x02d4_0014;
- public static final int MODE_LAYER = 0x02d4_0015;
- public static final int REARRANGE_TEXT = 0x02d4_0016;
- public static final int SWAP = 0x02d4_0017;
- public static final int SWAP_TEXT = 0x02d4_0018;
- public static final int INSERT = 0x02d4_0019;
- public static final int INSERT_TEXT = 0x02d4_001a;
- public static final int WITHDRAWAL_LAYER = 0x02d4_001b;
- public static final int WITHDRAW_TEXT = 0x02d4_001c;
- public static final int ITEM = 0x02d4_001d;
- public static final int ITEM_TEXT = 0x02d4_001e;
- public static final int NOTE = 0x02d4_001f;
- public static final int NOTE_TEXT = 0x02d4_0020;
- public static final int BOTTOM_TEXT2 = 0x02d4_0021;
- public static final int SAVE_BUTTON = 0x02d4_0022;
- public static final int QUANTITY_LAYER = 0x02d4_0023;
- public static final int QUANTITY_LAYER_TEXT0 = 0x02d4_0024;
- public static final int QUANTITY1 = 0x02d4_0025;
- public static final int QUANTITY1_TEXT = 0x02d4_0026;
- public static final int QUANTITY5 = 0x02d4_0027;
- public static final int QUANTITY5_TEXT = 0x02d4_0028;
- public static final int QUANTITY10 = 0x02d4_0029;
- public static final int QUANTITY10_TEXT = 0x02d4_002a;
- public static final int QUANTITYX = 0x02d4_002b;
- public static final int QUANTITYX_TEXT = 0x02d4_002c;
- public static final int QUANTITYALL = 0x02d4_002d;
- public static final int QUANTITYALL_TEXT = 0x02d4_002e;
- public static final int POPUP = 0x02d4_002f;
+ public static final int MODE_LAYER = 0x02d4_0014;
+ public static final int SWAP_INSERT = 0x02d4_0015;
+ public static final int WITHDRAWAL_LAYER = 0x02d4_0016;
+ public static final int NOTE = 0x02d4_0017;
+ public static final int SWAP_INSERT_GRAPHIC = 0x02d4_0018;
+ public static final int QUANTITY_LAYER = 0x02d4_0019;
+ public static final int BOTTOM_TEXT3 = 0x02d4_001a;
+ public static final int SAVE_BUTTON = 0x02d4_001b;
+ public static final int BOTTOM = 0x02d4_001c;
+ public static final int POPUP = 0x02d4_001d;
+ public static final int NOTE_GRAPHIC = 0x02d4_001e;
+ public static final int QUANTITY1 = 0x02d4_001f;
+ public static final int QUANTITY1_TEXT = 0x02d4_0020;
+ public static final int QUANTITY5 = 0x02d4_0021;
+ public static final int QUANTITY5_TEXT = 0x02d4_0022;
+ public static final int QUANTITY10 = 0x02d4_0023;
+ public static final int QUANTITY10_TEXT = 0x02d4_0024;
+ public static final int QUANTITYX = 0x02d4_0025;
+ public static final int QUANTITYX_TEXT = 0x02d4_0026;
+ public static final int QUANTITYALL = 0x02d4_0027;
+ public static final int QUANTITYALL_TEXT = 0x02d4_0028;
}
public static final class SharedBankSide
@@ -28665,9 +28664,21 @@ public static final class SkillGuideV2
public static final int CONTENT = 0x035c_0005;
public static final int TAB_CONTENT = 0x035c_0006;
public static final int TABS = 0x035c_0007;
- public static final int LIST = 0x035c_0008;
- public static final int LIST_BORDER = 0x035c_0009;
- public static final int LIST_SCROLLER = 0x035c_000a;
+ public static final int OVERVIEW = 0x035c_0008;
+ public static final int OVERVIEW_BORDER = 0x035c_0009;
+ public static final int OVERVIEW_TABS = 0x035c_000a;
+ public static final int OVERVIEW_CONTENT = 0x035c_000b;
+ public static final int OVERVIEW_CONTENT_RIGHT_BORDER_OUTER = 0x035c_000c;
+ public static final int OVERVIEW_CONTENT_RIGHT_BORDER_INNER = 0x035c_000d;
+ public static final int OVERVIEW_CONTENT_1 = 0x035c_000e;
+ public static final int OVERVIEW_CONTENT_2 = 0x035c_000f;
+ public static final int OVERVIEW_SCROLLBAR = 0x035c_0010;
+ public static final int QUEST_JOURNAL_BUTTON_TRIGGER = 0x035c_0011;
+ public static final int SKILL_GUIDE_BUTTON_TRIGGER = 0x035c_0012;
+ public static final int GUIDE_DATA = 0x035c_0013;
+ public static final int LIST_BORDER = 0x035c_0014;
+ public static final int LIST = 0x035c_0015;
+ public static final int LIST_SCROLLER = 0x035c_0016;
}
public static final class BondMain
@@ -30335,40 +30346,41 @@ public static final class EventRewards
public static final class Ballot
{
public static final int UNIVERSE = 0x03a0_0000;
- public static final int CONTENT = 0x03a0_0001;
- public static final int FRAME = 0x03a0_0002;
- public static final int CLOSE = 0x03a0_0003;
- public static final int ROOT_LIST = 0x03a0_0004;
- public static final int LIST_FILTERS = 0x03a0_0005;
- public static final int LIST_YEARS_CONTAINER = 0x03a0_0006;
- public static final int LIST_YEARS_SCROLLBAR = 0x03a0_0007;
- public static final int LIST_YEARS_CONTENT = 0x03a0_0008;
- public static final int LIST_BOX = 0x03a0_0009;
- public static final int LIST = 0x03a0_000a;
- public static final int LIST_SCROLLBAR = 0x03a0_000b;
- public static final int ROOT_OVERVIEW = 0x03a0_000c;
- public static final int OVERVIEW_SCROLLING = 0x03a0_000d;
- public static final int OVERVIEW_BACKGROUNDS = 0x03a0_000e;
- public static final int OVERVIEW_CONTENTS = 0x03a0_000f;
- public static final int OVERVIEW_SCROLLBAR = 0x03a0_0010;
- public static final int EXIT_OVERVIEW = 0x03a0_0011;
- public static final int ROOT_VOTING = 0x03a0_0012;
- public static final int VOTING = 0x03a0_0013;
- public static final int VOTING_SCROLLBAR = 0x03a0_0014;
- public static final int SINGLE_CHOICE = 0x03a0_0015;
- public static final int MULTIPLE_CHOICE = 0x03a0_0016;
- public static final int TEXT = 0x03a0_0017;
- public static final int MATRIX = 0x03a0_0018;
- public static final int RANKED = 0x03a0_0019;
- public static final int EXIT_VOTING = 0x03a0_001a;
- public static final int LOADING_CONTAINER = 0x03a0_001b;
- public static final int LOADING_ICON = 0x03a0_001c;
- public static final int POPUP_CONTAINER = 0x03a0_001d;
- public static final int POPUP_CONTAINER_RECT0 = 0x03a0_001e;
- public static final int POPUP_WINDOW = 0x03a0_001f;
- public static final int POPUP_FRAME = 0x03a0_0020;
- public static final int POPUP_DISMISS = 0x03a0_0021;
- public static final int POPUP_OTHER = 0x03a0_0022;
+ public static final int DODGER = 0x03a0_0001;
+ public static final int CONTENT = 0x03a0_0002;
+ public static final int FRAME = 0x03a0_0003;
+ public static final int CLOSE = 0x03a0_0004;
+ public static final int ROOT_LIST = 0x03a0_0005;
+ public static final int LIST_FILTERS = 0x03a0_0006;
+ public static final int LIST_YEARS_CONTAINER = 0x03a0_0007;
+ public static final int LIST_YEARS_SCROLLBAR = 0x03a0_0008;
+ public static final int LIST_YEARS_CONTENT = 0x03a0_0009;
+ public static final int LIST_BOX = 0x03a0_000a;
+ public static final int LIST = 0x03a0_000b;
+ public static final int LIST_SCROLLBAR = 0x03a0_000c;
+ public static final int ROOT_OVERVIEW = 0x03a0_000d;
+ public static final int OVERVIEW_SCROLLING = 0x03a0_000e;
+ public static final int OVERVIEW_BACKGROUNDS = 0x03a0_000f;
+ public static final int OVERVIEW_CONTENTS = 0x03a0_0010;
+ public static final int OVERVIEW_SCROLLBAR = 0x03a0_0011;
+ public static final int EXIT_OVERVIEW = 0x03a0_0012;
+ public static final int ROOT_VOTING = 0x03a0_0013;
+ public static final int VOTING = 0x03a0_0014;
+ public static final int VOTING_SCROLLBAR = 0x03a0_0015;
+ public static final int SINGLE_CHOICE = 0x03a0_0016;
+ public static final int MULTIPLE_CHOICE = 0x03a0_0017;
+ public static final int TEXT = 0x03a0_0018;
+ public static final int MATRIX = 0x03a0_0019;
+ public static final int RANKED = 0x03a0_001a;
+ public static final int EXIT_VOTING = 0x03a0_001b;
+ public static final int LOADING_CONTAINER = 0x03a0_001c;
+ public static final int LOADING_ICON = 0x03a0_001d;
+ public static final int POPUP_CONTAINER = 0x03a0_001e;
+ public static final int POPUP_CONTAINER_RECT0 = 0x03a0_001f;
+ public static final int POPUP_WINDOW = 0x03a0_0020;
+ public static final int POPUP_FRAME = 0x03a0_0021;
+ public static final int POPUP_DISMISS = 0x03a0_0022;
+ public static final int POPUP_OTHER = 0x03a0_0023;
}
public static final class TutorialPlayerExperience
@@ -30778,5 +30790,83 @@ public static final class SailingBoatCargoholdSide
public static final int TEXT = 0x03b0_0007;
public static final int DISMISS = 0x03b0_0008;
}
+
+ public static final class ReusableFloater
+ {
+ public static final int UNIVERSE = 0x03b1_0000;
+ }
+
+ public static final class Patchy
+ {
+ public static final int UNIVERSE = 0x03b2_0000;
+ public static final int UNIVERSE_MODEL0 = 0x03b2_0001;
+ public static final int UNIVERSE_GRAPHIC1 = 0x03b2_0002;
+ public static final int CONTENTS = 0x03b2_0003;
+ public static final int LIST = 0x03b2_0004;
+ public static final int INFO_CONTAINER = 0x03b2_0005;
+ public static final int INFO_CONTAINER_GRAPHIC0 = 0x03b2_0006;
+ public static final int INFO_CONTENTS = 0x03b2_0007;
+ public static final int CONFIRM = 0x03b2_0008;
+ public static final int CONFIRM_GRAPHIC0 = 0x03b2_0009;
+ public static final int SCROLLBAR = 0x03b2_000a;
+ }
+
+ public static final class MenuNew
+ {
+ public static final int INFINITE = 0x03b3_0000;
+ public static final int UNIVERSE = 0x03b3_0001;
+ public static final int FRAME = 0x03b3_0002;
+ public static final int TITLE = 0x03b3_0003;
+ public static final int CONTENT_FRAME = 0x03b3_0004;
+ public static final int CONTENT = 0x03b3_0005;
+ public static final int KEYLISTENERS = 0x03b3_0006;
+ public static final int CONTENT_SCROLL = 0x03b3_0007;
+ public static final int GRAPHICS = 0x03b3_0008;
+ public static final int TEXT = 0x03b3_0009;
+ public static final int SCROLLBAR = 0x03b3_000a;
+ }
+
+ public static final class DeadmanskullInterface
+ {
+ public static final int INFINITY = 0x03b4_0000;
+ public static final int FRAME = 0x03b4_0001;
+ public static final int CLOSE = 0x03b4_0002;
+ public static final int CONTENT = 0x03b4_0003;
+ public static final int TABS = 0x03b4_0004;
+ public static final int PERMANENT_TAB = 0x03b4_0005;
+ public static final int TOGGLE_TAB = 0x03b4_0006;
+ public static final int ATTUNE_TAB = 0x03b4_0007;
+ public static final int MAIN = 0x03b4_0008;
+ public static final int ITEMS = 0x03b4_0009;
+ public static final int ITEMS_CONTENTS = 0x03b4_000a;
+ public static final int ITEMS_SCROLLBAR = 0x03b4_000b;
+ public static final int ITEMS_RECT2 = 0x03b4_000c;
+ public static final int UNIVERSE = 0x03b4_000d;
+ public static final int RESIZE_PREVIEW = 0x03b4_000e;
+ public static final int TOOLTIP = 0x03b4_000f;
+ }
+
+ public static final class QuetzalwhistleMenu
+ {
+ public static final int UNIVERSE = 0x03b5_0000;
+ public static final int CONTENTS = 0x03b5_0001;
+ public static final int BACKGROUND = 0x03b5_0002;
+ public static final int SCROLL = 0x03b5_0003;
+ public static final int MAP = 0x03b5_0004;
+ public static final int BACKGROUND_MODEL2 = 0x03b5_0005;
+ public static final int BACKGROUND_MODEL3 = 0x03b5_0006;
+ public static final int BACKGROUND_MODEL4 = 0x03b5_0007;
+ public static final int BACKGROUND_MODEL5 = 0x03b5_0008;
+ public static final int BACKGROUND_MODEL6 = 0x03b5_0009;
+ public static final int BACKGROUND_MODEL7 = 0x03b5_000a;
+ public static final int BACKGROUND_MODEL8 = 0x03b5_000b;
+ public static final int ICONS = 0x03b5_000c;
+ public static final int CURRENT = 0x03b5_000d;
+ public static final int SELECTED_BACK = 0x03b5_000e;
+ public static final int SELECTED_FRONT = 0x03b5_000f;
+ public static final int SELECTED_LOCKED = 0x03b5_0010;
+ public static final int SELECTED_CURRENT = 0x03b5_0011;
+ public static final int CLOSE = 0x03b5_0012;
+ }
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/InventoryID.java b/runelite-api/src/main/java/net/runelite/api/gameval/InventoryID.java
index 1727d028dd6..4d64a3c6d66 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/InventoryID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/InventoryID.java
@@ -1007,5 +1007,8 @@ public final class InventoryID
public static final int TRADER_SHOP_PORT_ROBERTS_IRON = 1000;
public static final int TRADER_SHOP_PORT_ROBERTS_UIM = 1001;
public static final int TRADER_SHOP_PORT_ROBERTS_GIM = 1002;
+ public static final int RAZMIREBUILDINGSTORE_IRON = 1003;
+ public static final int RAZMIREBUILDINGSTORE_UIM = 1004;
+ public static final int RAZMIREBUILDINGSTORE_GIM = 1005;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/ItemID.java b/runelite-api/src/main/java/net/runelite/api/gameval/ItemID.java
index e54d576744f..170f664dc4c 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/ItemID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/ItemID.java
@@ -29608,22 +29608,22 @@ public final class ItemID
public static final int WITCHWOOD_ICON = 8923;
/**
- * Bandana eyepatch
+ * Bandana eyepatch (white)
*/
public static final int PIRATE_BANDANA_EYEPATCH = 8924;
/**
- * Bandana eyepatch
+ * Bandana eyepatch (red)
*/
public static final int PIRATE_BANDANA_EYEPATCH_RED = 8925;
/**
- * Bandana eyepatch
+ * Bandana eyepatch (blue)
*/
public static final int PIRATE_BANDANA_EYEPATCH_BLUE = 8926;
/**
- * Bandana eyepatch
+ * Bandana eyepatch (brown)
*/
public static final int PIRATE_BANDANA_EYEPATCH_BROWN = 8927;
@@ -72799,12 +72799,12 @@ public final class ItemID
public static final int SIGIL_OF_THE_FOOD_MASTER_UNATTUNED = 28496;
/**
- * Sigil of the well-fed
+ * Sigil of the well fed
*/
public static final int SIGIL_OF_THE_WELL_FED_ATTUNED = 28498;
/**
- * Sigil of the well-fed
+ * Sigil of the well fed
*/
public static final int SIGIL_OF_THE_WELL_FED_UNATTUNED = 28499;
@@ -72949,22 +72949,22 @@ public final class ItemID
public static final int DEADMAN_BLIGHTED_TUMEKENS_SHADOW_UNCHARGED = 28549;
/**
- * Quest lamp
+ * Fremennik quest lamp
*/
public static final int DEADMAN_QUEST_LAMP_TIER_1 = 28551;
/**
- * Quest lamp
+ * Elf quest lamp
*/
public static final int DEADMAN_QUEST_LAMP_TIER_2 = 28552;
/**
- * Quest lamp
+ * Gnome quest lamp
*/
public static final int DEADMAN_QUEST_LAMP_TIER_3 = 28553;
/**
- * Quest lamp
+ * Mahjarrat 1 quest lamp
*/
public static final int DEADMAN_QUEST_LAMP_TIER_4 = 28554;
@@ -75830,12 +75830,12 @@ public final class ItemID
public static final int SIGIL_OF_REVOKED_LIMITATION_UNATTUNED = 29652;
/**
- * Sigil of rampart
+ * Sigil of the rampart
*/
public static final int SIGIL_OF_RAMPART_ATTUNED = 29654;
/**
- * Sigil of rampart
+ * Sigil of the rampart
*/
public static final int SIGIL_OF_RAMPART_UNATTUNED = 29655;
@@ -75850,22 +75850,22 @@ public final class ItemID
public static final int SIGIL_OF_DECEPTION_UNATTUNED = 29658;
/**
- * Sigil of lithe
+ * Sigil of litheness
*/
public static final int SIGIL_OF_LITHE_ATTUNED = 29660;
/**
- * Sigil of lithe
+ * Sigil of litheness
*/
public static final int SIGIL_OF_LITHE_UNATTUNED = 29661;
/**
- * Sigil of adroit
+ * Sigil of the adroit
*/
public static final int SIGIL_OF_ADROIT_ATTUNED = 29663;
/**
- * Sigil of adroit
+ * Sigil of the adroit
*/
public static final int SIGIL_OF_ADROIT_UNATTUNED = 29664;
@@ -75890,22 +75890,22 @@ public final class ItemID
public static final int SIGIL_OF_RESTORATION_UNATTUNED = 29670;
/**
- * Sigil of swashbuckler
+ * Sigil of the swashbuckler
*/
public static final int SIGIL_OF_SWASHBUCKLER_ATTUNED = 29672;
/**
- * Sigil of swashbuckler
+ * Sigil of the swashbuckler
*/
public static final int SIGIL_OF_SWASHBUCKLER_UNATTUNED = 29673;
/**
- * Sigil of gunslinger
+ * Sigil of the gunslinger
*/
public static final int SIGIL_OF_GUNSLINGER_ATTUNED = 29675;
/**
- * Sigil of gunslinger
+ * Sigil of the gunslinger
*/
public static final int SIGIL_OF_GUNSLINGER_UNATTUNED = 29676;
@@ -81519,22 +81519,22 @@ public final class ItemID
public static final int GURTOBS_FABRIC_ROLL = 31746;
/**
- * Nifty hat
+ * Swamp cruiser's hat
*/
public static final int JUBBLY_JIVE_COSMETIC_HEAD = 31748;
/**
- * Nifty jacket
+ * Swamp cruiser's jacket
*/
public static final int JUBBLY_JIVE_COSMETIC_CHEST = 31750;
/**
- * Nifty trousers
+ * Swamp cruiser's trousers
*/
public static final int JUBBLY_JIVE_COSMETIC_LEGS = 31752;
/**
- * Nifty shoes
+ * Swamp cruiser's shoes
*/
public static final int JUBBLY_JIVE_COSMETIC_FEET = 31754;
@@ -81554,22 +81554,22 @@ public final class ItemID
public static final int GWYNAS_FABRIC_ROLL = 31758;
/**
- * Sleek hat
+ * Crystal glider's hat
*/
public static final int GWENITH_GLIDE_COSMETIC_HEAD = 31760;
/**
- * Sleek jacket
+ * Crystal glider's jacket
*/
public static final int GWENITH_GLIDE_COSMETIC_CHEST = 31762;
/**
- * Sleek trousers
+ * Crystal glider's trousers
*/
public static final int GWENITH_GLIDE_COSMETIC_LEGS = 31764;
/**
- * Sleek shoes
+ * Crystal glider's shoes
*/
public static final int GWENITH_GLIDE_COSMETIC_FEET = 31766;
@@ -82708,12 +82708,12 @@ public final class ItemID
public static final int SAILING_SKILLGUIDE_MAST_MAHOGANY = 32169;
/**
- * Mahogany mast and linen sails
+ * Mahogany mast and canvas sails
*/
public static final int SAILING_SKILLGUIDE_MAST_MAHOGANY_SKIFF = 32170;
/**
- * Mahogany mast and linen sails
+ * Mahogany mast and canvas sails
*/
public static final int SAILING_SKILLGUIDE_MAST_MAHOGANY_SLOOP = 32171;
@@ -83698,7 +83698,7 @@ public final class ItemID
public static final int LOST_SCHEMATIC_KEY_BUCCANEERS = 32413;
/**
- * Small key (ynsdail)
+ * Small key (ynysdail)
*/
public static final int LOST_SCHEMATIC_KEY_LLEDRITH = 32414;
@@ -86051,6 +86051,591 @@ public final class ItemID
*/
public static final int JAR_OF_FEATHERS = 32921;
+ /**
+ * Steel nails
+ */
+ public static final int ANY_NAILS = 32923;
+
+ /**
+ * Crate of arrowtips
+ */
+ public static final int CARGO_CRATE_ARROWTIPS_RELLEKKA = 32924;
+
+ /**
+ * Crate of clothes
+ */
+ public static final int CARGO_CRATE_CLOTHES_VOID_KNIGHTS_OUTPOST = 32925;
+
+ /**
+ * Null
+ */
+ public static final int XMAS25_SERVING_PLATTER = 32926;
+
+ /**
+ * Lovley jubbly bib
+ */
+ public static final int XMAS25_BIB = 32928;
+
+ /**
+ * Beer belly sweater
+ */
+ public static final int XMAS25_BEER_BELLY_SWEATER = 32930;
+
+ /**
+ * Jad jumper
+ */
+ public static final int XMAS25_CONTEST_JUMPER = 32932;
+
+ /**
+ * Christmas dinner
+ */
+ public static final int XMAS25_CHRISTMAS_DINNER = 32934;
+
+ /**
+ * Crate of furs
+ */
+ public static final int CARGO_CRATE_FURS_ALDARIN_1 = 32936;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_ARDOUGNE_1 = 32937;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_ARDOUGNE_2 = 32938;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_ARDOUGNE_3 = 32939;
+
+ /**
+ * Crate of sand
+ */
+ public static final int CARGO_CRATE_SAND_ARDOUGNE_1 = 32940;
+
+ /**
+ * Crate of red coral
+ */
+ public static final int CARGO_CRATE_RED_CORAL_ARDOUGNE_1 = 32941;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_BRIMHAVEN_1 = 32942;
+
+ /**
+ * Crate of spices
+ */
+ public static final int CARGO_CRATE_SPICES_BRIMHAVEN_1 = 32943;
+
+ /**
+ * Crate of jewellery
+ */
+ public static final int CARGO_CRATE_JEWELLERY_BRIMHAVEN_1 = 32944;
+
+ /**
+ * Crate of bait
+ */
+ public static final int CARGO_CRATE_BAIT_CATHERBY_1 = 32945;
+
+ /**
+ * Crate of coconuts
+ */
+ public static final int CARGO_CRATE_COCONUTS_CATHERBY_1 = 32946;
+
+ /**
+ * Crate of arrowtips
+ */
+ public static final int CARGO_CRATE_ARROWTIPS_CATHERBY_1 = 32947;
+
+ /**
+ * Crate of pineapples
+ */
+ public static final int CARGO_CRATE_PINEAPPLES_CIVITAS_ILLA_FORTIS_1 = 32948;
+
+ /**
+ * Crate of logs
+ */
+ public static final int CARGO_CRATE_LOGS_DEEPFIN_POINT_1 = 32949;
+
+ /**
+ * Crate of planks
+ */
+ public static final int CARGO_CRATE_PLANKS_DEEPFIN_POINT_1 = 32950;
+
+ /**
+ * Crate of logs
+ */
+ public static final int CARGO_CRATE_LOGS_DEEPFIN_POINT_2 = 32951;
+
+ /**
+ * Crate of alpaca wool
+ */
+ public static final int CARGO_CRATE_ALPACA_WOOL_DEEPFIN_POINT_1 = 32952;
+
+ /**
+ * Crate of planks
+ */
+ public static final int CARGO_CRATE_PLANKS_DEEPFIN_POINT_2 = 32953;
+
+ /**
+ * Crate of fabrics
+ */
+ public static final int CARGO_CRATE_FABRICS_DEEPFIN_POINT_1 = 32954;
+
+ /**
+ * Crate of planks
+ */
+ public static final int CARGO_CRATE_PLANKS_DEEPFIN_POINT_3 = 32955;
+
+ /**
+ * Crate of logs
+ */
+ public static final int CARGO_CRATE_LOGS_DEEPFIN_POINT_3 = 32956;
+
+ /**
+ * Crate of planks
+ */
+ public static final int CARGO_CRATE_PLANKS_DEEPFIN_POINT_4 = 32957;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_LANDS_END_1 = 32958;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_LANDS_END_2 = 32959;
+
+ /**
+ * Crate of gems
+ */
+ public static final int CARGO_CRATE_GEMS_LANDS_END_1 = 32960;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_LUNAR_ISLE_1 = 32961;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_LUNAR_ISLE_2 = 32962;
+
+ /**
+ * Crate of potions
+ */
+ public static final int CARGO_CRATE_POTIONS_LUNAR_ISLE_1 = 32963;
+
+ /**
+ * Crate of furs
+ */
+ public static final int CARGO_CRATE_FURS_PISCATORIS_1 = 32964;
+
+ /**
+ * Crate of swamp paste
+ */
+ public static final int CARGO_CRATE_SWAMP_PASTE_PORT_KHAZARD_1 = 32965;
+
+ /**
+ * Crate of planks
+ */
+ public static final int CARGO_CRATE_PLANKS_PORT_PISCARILIUS_1 = 32966;
+
+ /**
+ * Crate of books
+ */
+ public static final int CARGO_CRATE_BOOKS_PORT_PISCARILIUS_1 = 32967;
+
+ /**
+ * Crate of books
+ */
+ public static final int CARGO_CRATE_BOOKS_PORT_PISCARILIUS_2 = 32968;
+
+ /**
+ * Crate of jewellery
+ */
+ public static final int CARGO_CRATE_JEWELLERY_PORT_PISCARILIUS_1 = 32969;
+
+ /**
+ * Crate of jewellery
+ */
+ public static final int CARGO_CRATE_JEWELLERY_PORT_PISCARILIUS_2 = 32970;
+
+ /**
+ * Crate of planks
+ */
+ public static final int CARGO_CRATE_PLANKS_PORT_PISCARILIUS_2 = 32971;
+
+ /**
+ * Crate of furs
+ */
+ public static final int CARGO_CRATE_FURS_PORT_PISCARILIUS_1 = 32972;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_PORT_ROBERTS_1 = 32973;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_PORT_ROBERTS_2 = 32974;
+
+ /**
+ * Crate of silk
+ */
+ public static final int CARGO_CRATE_SILK_PORT_ROBERTS_1 = 32975;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_PORT_ROBERTS_3 = 32976;
+
+ /**
+ * Crate of logs
+ */
+ public static final int CARGO_CRATE_LOGS_PORT_SARIM_1 = 32977;
+
+ /**
+ * Crate of swords
+ */
+ public static final int CARGO_CRATE_SWORDS_PORT_SARIM_1 = 32978;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_PORT_SARIM_1 = 32979;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_PORT_SARIM_2 = 32980;
+
+ /**
+ * Crate of seeds
+ */
+ public static final int CARGO_CRATE_SEEDS_PORT_SARIM_1 = 32981;
+
+ /**
+ * Crate of swords
+ */
+ public static final int CARGO_CRATE_SWORDS_PORT_TYRAS_1 = 32982;
+
+ /**
+ * Crate of platebodies
+ */
+ public static final int CARGO_CRATE_PLATEBODIES_PORT_TYRAS_1 = 32983;
+
+ /**
+ * Crate of swords
+ */
+ public static final int CARGO_CRATE_SWORDS_PORT_TYRAS_2 = 32984;
+
+ /**
+ * Crate of ores
+ */
+ public static final int CARGO_CRATE_ORES_PORT_TYRAS_1 = 32985;
+
+ /**
+ * Crate of logs
+ */
+ public static final int CARGO_CRATE_LOGS_PRIFDDINAS_1 = 32986;
+
+ /**
+ * Crate of potions
+ */
+ public static final int CARGO_CRATE_POTIONS_PRIFDDINAS_1 = 32987;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_RED_ROCK_1 = 32988;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_RED_ROCK_2 = 32989;
+
+ /**
+ * Crate of runes
+ */
+ public static final int CARGO_CRATE_RUNES_RED_ROCK_1 = 32990;
+
+ /**
+ * Crate of fish
+ */
+ public static final int CARGO_CRATE_FISH_RED_ROCK_3 = 32991;
+
+ /**
+ * Crate of planks
+ */
+ public static final int CARGO_CRATE_PLANKS_RELLEKKA_1 = 32992;
+
+ /**
+ * Crate of teak logs
+ */
+ public static final int CARGO_CRATE_TEAK_LOGS_RELLEKKA_1 = 32993;
+
+ /**
+ * Crate of runes
+ */
+ public static final int CARGO_CRATE_RUNES_RUINS_OF_UNKAH_1 = 32994;
+
+ /**
+ * Crate of cocktails
+ */
+ public static final int CARGO_CRATE_COCKTAILS_RUINS_OF_UNKAH_1 = 32995;
+
+ /**
+ * Crate of ship parts
+ */
+ public static final int CARGO_CRATE_SHIP_PARTS_RUINS_OF_UNKAH_1 = 32996;
+
+ /**
+ * Crate of rum
+ */
+ public static final int CARGO_CRATE_RUM_THE_PANDEMONIUM_1 = 32997;
+
+ /**
+ * Crate of javelins
+ */
+ public static final int CARGO_CRATE_JAVELINS_THE_SUMMER_SHORE_1 = 32998;
+
+ /**
+ * Crate of potions
+ */
+ public static final int CARGO_CRATE_POTIONS_VOID_KNIGHTS_OUTPOST_1 = 32999;
+
+ /**
+ * Crate of ores
+ */
+ public static final int CARGO_CRATE_ORES_VOID_KNIGHTS_OUTPOST_1 = 33000;
+
+ /**
+ * Crate of potions
+ */
+ public static final int CARGO_CRATE_POTIONS_VOID_KNIGHTS_OUTPOST_2 = 33001;
+
+ /**
+ * Holy moleys
+ */
+ public static final int HOLY_MOLEYS = 33002;
+
+ /**
+ * Kharidian quest lamp
+ */
+ public static final int DEADMAN_QUEST_LAMP_TIER_5 = 33004;
+
+ /**
+ * Myreque quest lamp
+ */
+ public static final int DEADMAN_QUEST_LAMP_TIER_6 = 33005;
+
+ /**
+ * Dragonkin quest lamp
+ */
+ public static final int DEADMAN_QUEST_LAMP_TIER_7 = 33006;
+
+ /**
+ * Mahjarrat 2 quest lamp
+ */
+ public static final int DEADMAN_QUEST_LAMP_TIER_8 = 33007;
+
+ /**
+ * Camelot quest lamp
+ */
+ public static final int DEADMAN_QUEST_LAMP_TIER_9 = 33008;
+
+ /**
+ * Recipe for disaster quest lamp
+ */
+ public static final int DEADMAN_QUEST_LAMP_TIER_10 = 33009;
+
+ /**
+ * Ruinous powers
+ */
+ public static final int DEADMAN_RUINOUS_POWERS_BOOK = 33010;
+
+ /**
+ * Annihilation weapon scroll
+ */
+ public static final int DEADMAN_2026_WEAPON_ORNAMENT_SCROLL = 33012;
+
+ /**
+ * Annihilation blueprints
+ */
+ public static final int DEADMAN_2026_POH_ORNAMENT_SCROLL = 33015;
+
+ /**
+ * Annihilation teleport scroll
+ */
+ public static final int DEADMAN_2026_HOME_TELEPORT_SCROLL = 33018;
+
+ /**
+ * Bow of faerdhinen (c)
+ */
+ public static final int BOW_OF_FAERDHINEN_INFINITE_DEADMAN = 33021;
+
+ /**
+ * Crystal body
+ */
+ public static final int CRYSTAL_CHESTPLATE_DEADMAN = 33023;
+
+ /**
+ * Crystal body (inactive)
+ */
+ public static final int CRYSTAL_CHESTPLATE_INACTIVE_DEADMAN = 33025;
+
+ /**
+ * Crystal legs
+ */
+ public static final int CRYSTAL_PLATELEGS_DEADMAN = 33027;
+
+ /**
+ * Crystal legs (inactive)
+ */
+ public static final int CRYSTAL_PLATELEGS_INACTIVE_DEADMAN = 33029;
+
+ /**
+ * Crystal helm
+ */
+ public static final int CRYSTAL_HELMET_DEADMAN = 33031;
+
+ /**
+ * Crystal helm (inactive)
+ */
+ public static final int CRYSTAL_HELMET_INACTIVE_DEADMAN = 33033;
+
+ /**
+ * Toxic staff (uncharged)
+ */
+ public static final int TOXIC_SOTD_DEADMAN = 33035;
+
+ /**
+ * Toxic staff (deadman)
+ */
+ public static final int TOXIC_SOTD_CHARGED_DEADMAN = 33036;
+
+ /**
+ * The dogsword
+ */
+ public static final int DEADMAN_DOGSWORD = 33038;
+
+ /**
+ * Thunder khopesh
+ */
+ public static final int DEADMAN_THUNDER_KHOPESH = 33041;
+
+ /**
+ * Trinket of avarice
+ */
+ public static final int MAGIC_ROCK_OF_AVARICE = 33044;
+
+ /**
+ * Trinket of fortuity (inactive)
+ */
+ public static final int MAGIC_ROCK_OF_FORTUITY_INACTIVE = 33047;
+
+ /**
+ * Trinket of fortuity (active)
+ */
+ public static final int MAGIC_ROCK_OF_FORTUITY_ACTIVE = 33050;
+
+ /**
+ * Sigil of the gods
+ */
+ public static final int SIGIL_OF_THE_GODS_ATTUNED = 33053;
+
+ /**
+ * Sigil of the gods
+ */
+ public static final int SIGIL_OF_THE_GODS_UNATTUNED = 33054;
+
+ /**
+ * Sigil of conclusion
+ */
+ public static final int SIGIL_OF_CONCLUSION_ATTUNED = 33055;
+
+ /**
+ * Sigil of conclusion
+ */
+ public static final int SIGIL_OF_CONCLUSION_UNATTUNED = 33056;
+
+ /**
+ * Sigil of automation
+ */
+ public static final int SIGIL_OF_AUTOMATION_ATTUNED = 33057;
+
+ /**
+ * Sigil of automation
+ */
+ public static final int SIGIL_OF_AUTOMATION_UNATTUNED = 33058;
+
+ /**
+ * Sigil of eternal belief
+ */
+ public static final int SIGIL_OF_ETERNAL_BELIEF_ATTUNED = 33059;
+
+ /**
+ * Sigil of eternal belief
+ */
+ public static final int SIGIL_OF_ETERNAL_BELIEF_UNATTUNED = 33060;
+
+ /**
+ * Sigil of efficiency
+ */
+ public static final int SIGIL_OF_EFFICIENCY_ATTUNED = 33061;
+
+ /**
+ * Sigil of efficiency
+ */
+ public static final int SIGIL_OF_EFFICIENCY_UNATTUNED = 33062;
+
+ /**
+ * Starter cape
+ */
+ public static final int DEADMAN_STARTER_CAPE = 33063;
+
+ /**
+ * Deadman's skull
+ */
+ public static final int DEADMAN_SKULL = 33065;
+
+ /**
+ * Hooded slayer helmet
+ */
+ public static final int SLAYER_HELM_HOODED = 33066;
+
+ /**
+ * Hooded slayer helmet (i)
+ */
+ public static final int SLAYER_HELM_I_HOODED = 33068;
+
+ /**
+ * Hooded slayer helmet (i)
+ */
+ public static final int SW_SLAYER_HELM_I_HOODED = 33070;
+
+ /**
+ * Hooded slayer helmet (i)
+ */
+ public static final int PVPA_SLAYER_HELM_I_HOODED = 33072;
+
+ /**
+ * Facility bottle (empty)
+ */
+ public static final int SAILING_FACILITY_BOTTLE_EMPTY = 33074;
+
+ /**
+ * Facility bottle (full)
+ */
+ public static final int SAILING_FACILITY_BOTTLE_FULL = 33077;
+
public static final class Cert
{
public static final int TWPART1 = 7;
@@ -90019,59 +90604,6 @@ public static final class Cert
public static final int RAW_BOAR_MEAT = 25834;
public static final int PRIF_WEAPON_SEED_ENHANCED = 25860;
public static final int BOW_OF_FAERDHINEN_INACTIVE = 25863;
- public static final int SIGIL_OF_RESILIENCE_UNATTUNED = 25992;
- public static final int SIGIL_OF_CONSISTENCY_UNATTUNED = 25995;
- public static final int SIGIL_OF_THE_FORMIDABLE_FIGHTER_UNATTUNED = 25998;
- public static final int SIGIL_OF_THE_RIGOROUS_RANGER_UNATTUNED = 26001;
- public static final int SIGIL_OF_THE_METICULOUS_MAGE_UNATTUNED = 26004;
- public static final int SIGIL_OF_FORTIFICATION_UNATTUNED = 26007;
- public static final int SIGIL_OF_BARROWS_UNATTUNED = 26010;
- public static final int SIGIL_OF_DEFT_STRIKES_UNATTUNED = 26013;
- public static final int SIGIL_OF_FREEDOM_UNATTUNED = 26016;
- public static final int SIGIL_OF_ENHANCED_HARVEST_UNATTUNED = 26019;
- public static final int SIGIL_OF_STORAGE_UNATTUNED = 26022;
- public static final int SIGIL_OF_THE_SMITH_UNATTUNED = 26025;
- public static final int SIGIL_OF_THE_ALCHEMIST_UNATTUNED = 26028;
- public static final int SIGIL_OF_THE_FLETCHER_UNATTUNED = 26031;
- public static final int SIGIL_OF_THE_CHEF_UNATTUNED = 26034;
- public static final int SIGIL_OF_THE_CRAFTER_UNATTUNED = 26037;
- public static final int SIGIL_OF_THE_ABYSS_UNATTUNED = 26040;
- public static final int SIGIL_OF_STAMINA_UNATTUNED = 26043;
- public static final int SIGIL_OF_THE_POTION_MASTER_UNATTUNED = 26046;
- public static final int SIGIL_OF_THE_ETERNAL_JEWELLER_UNATTUNED = 26049;
- public static final int SIGIL_OF_THE_TREASURE_HUNTER_UNATTUNED = 26052;
- public static final int SIGIL_OF_MOBILITY_UNATTUNED = 26055;
- public static final int SIGIL_OF_EXAGGERATION_UNATTUNED = 26058;
- public static final int SIGIL_OF_SPECIALISED_STRIKES_UNATTUNED = 26061;
- public static final int SIGIL_OF_THE_PORCUPINE_UNATTUNED = 26064;
- public static final int SIGIL_OF_BINDING_UNATTUNED = 26067;
- public static final int SIGIL_OF_ESCAPING_UNATTUNED = 26070;
- public static final int SIGIL_OF_THE_RUTHLESS_RANGER_UNATTUNED = 26073;
- public static final int SIGIL_OF_THE_FERAL_FIGHTER_UNATTUNED = 26076;
- public static final int SIGIL_OF_THE_MENACING_MAGE_UNATTUNED = 26079;
- public static final int SIGIL_OF_PROSPERITY_UNATTUNED = 26082;
- public static final int SIGIL_OF_THE_DWARVES_UNATTUNED = 26085;
- public static final int SIGIL_OF_THE_ELVES_UNATTUNED = 26088;
- public static final int SIGIL_OF_THE_BARBARIANS_UNATTUNED = 26091;
- public static final int SIGIL_OF_THE_GNOMES_UNATTUNED = 26094;
- public static final int SIGIL_OF_NATURE_UNATTUNED = 26097;
- public static final int SIGIL_OF_DEVOTION_UNATTUNED = 26100;
- public static final int SIGIL_OF_THE_FORAGER_UNATTUNED = 26103;
- public static final int SIGIL_OF_GARMENTS_UNATTUNED = 26106;
- public static final int SIGIL_OF_SLAUGHTER_UNATTUNED = 26109;
- public static final int SIGIL_OF_THE_FORTUNE_FARMER_UNATTUNED = 26112;
- public static final int SIGIL_OF_VERSATILITY_UNATTUNED = 26115;
- public static final int SIGIL_OF_THE_SERPENT_UNATTUNED = 26118;
- public static final int SIGIL_OF_SUPREME_STAMINA_UNATTUNED = 26121;
- public static final int SIGIL_OF_PRESERVATION_UNATTUNED = 26124;
- public static final int SIGIL_OF_FINALITY_UNATTUNED = 26127;
- public static final int SIGIL_OF_PIOUS_PROTECTION_UNATTUNED = 26130;
- public static final int SIGIL_OF_AGGRESSION_UNATTUNED = 26133;
- public static final int SIGIL_OF_RAMPAGE_UNATTUNED = 26136;
- public static final int SIGIL_OF_THE_SKILLER_UNATTUNED = 26139;
- public static final int SIGIL_OF_REMOTE_STORAGE_UNATTUNED = 26142;
- public static final int SIGIL_OF_LAST_RECALL_UNATTUNED = 26145;
- public static final int SIGIL_OF_THE_GUARDIAN_ANGEL_UNATTUNED = 26148;
public static final int POH_CONDENSED_GOLD = 26267;
public static final int BRUTAL_2DOSEANCIENTBREW = 26351;
public static final int BRUTAL_1DOSEANCIENTBREW = 26354;
@@ -90216,24 +90748,6 @@ public static final class Cert
public static final int DT2_AWAKENERS_ORB = 28335;
public static final int SOULREAPER = 28339;
public static final int DT2_STRANGLEWOOD_SURVIVAL_BARRICADE = 28391;
- public static final int SIGIL_OF_SUSTENANCE_UNATTUNED = 28479;
- public static final int SIGIL_OF_HOARDING_UNATTUNED = 28482;
- public static final int SIGIL_OF_THE_ALCHEMANIAC_UNATTUNED = 28485;
- public static final int SIGIL_OF_THE_HUNTER_UNATTUNED = 28488;
- public static final int SIGIL_OF_RESISTANCE_UNATTUNED = 28491;
- public static final int SIGIL_OF_AGILE_FORTUNE_UNATTUNED = 28494;
- public static final int SIGIL_OF_THE_FOOD_MASTER_UNATTUNED = 28497;
- public static final int SIGIL_OF_THE_WELL_FED_UNATTUNED = 28500;
- public static final int SIGIL_OF_THE_INFERNAL_CHEF_UNATTUNED = 28503;
- public static final int SIGIL_OF_THE_INFERNAL_SMITH_UNATTUNED = 28506;
- public static final int SIGIL_OF_THE_LIGHTBEARER_UNATTUNED = 28509;
- public static final int SIGIL_OF_THE_BLOODHOUND_UNATTUNED = 28512;
- public static final int SIGIL_OF_PRECISION_UNATTUNED = 28515;
- public static final int SIGIL_OF_THE_AUGMENTED_THRALL_UNATTUNED = 28518;
- public static final int SIGIL_OF_FAITH_UNATTUNED = 28521;
- public static final int SIGIL_OF_TITANIUM_UNATTUNED = 28524;
- public static final int SIGIL_OF_THE_NINJA_UNATTUNED = 28527;
- public static final int SIGIL_OF_WOODCRAFT_UNATTUNED = 28530;
public static final int DEADMAN_BLIGHTED_VOIDWAKER = 28532;
public static final int DEADMAN_BLIGHTED_DRAGON_CLAWS = 28535;
public static final int DEADMAN_BLIGHTED_AGS = 28538;
@@ -90380,17 +90894,6 @@ public static final class Cert
public static final int DEADMAN2DOSEOVERLOAD = 29638;
public static final int DEADMAN1DOSEOVERLOAD = 29641;
public static final int DEADMAN_OVERLOAD_CHITIN = 29644;
- public static final int SIGIL_OF_METICULOUSNESS_UNATTUNED = 29650;
- public static final int SIGIL_OF_REVOKED_LIMITATION_UNATTUNED = 29653;
- public static final int SIGIL_OF_RAMPART_UNATTUNED = 29656;
- public static final int SIGIL_OF_DECEPTION_UNATTUNED = 29659;
- public static final int SIGIL_OF_LITHE_UNATTUNED = 29662;
- public static final int SIGIL_OF_ADROIT_UNATTUNED = 29665;
- public static final int SIGIL_OF_ONSLAUGHT_UNATTUNED = 29668;
- public static final int SIGIL_OF_RESTORATION_UNATTUNED = 29671;
- public static final int SIGIL_OF_SWASHBUCKLER_UNATTUNED = 29674;
- public static final int SIGIL_OF_GUNSLINGER_UNATTUNED = 29677;
- public static final int SIGIL_OF_ARCANE_SWIFTNESS_UNATTUNED = 29680;
public static final int NOXIOUS_HALBERD = 29797;
public static final int AMULET_OF_RANCOUR = 29802;
public static final int ARANEA_BOOTS = 29807;
@@ -90705,6 +91208,17 @@ public static final class Cert
public static final int CAMPHOR_LOGS = 32905;
public static final int IRONWOOD_LOGS = 32908;
public static final int ROSEWOOD_LOGS = 32911;
+ public static final int DEADMAN_2026_WEAPON_ORNAMENT_SCROLL = 33013;
+ public static final int DEADMAN_2026_POH_ORNAMENT_SCROLL = 33016;
+ public static final int DEADMAN_2026_HOME_TELEPORT_SCROLL = 33019;
+ public static final int DEADMAN_DOGSWORD = 33039;
+ public static final int DEADMAN_THUNDER_KHOPESH = 33042;
+ public static final int MAGIC_ROCK_OF_AVARICE = 33045;
+ public static final int MAGIC_ROCK_OF_FORTUITY_INACTIVE = 33048;
+ public static final int MAGIC_ROCK_OF_FORTUITY_ACTIVE = 33051;
+ public static final int SAILING_FACILITY_BOTTLE_EMPTY = 33075;
+ public static final int BREW_RED_RUM = 33078;
+ public static final int BREW_BLUE_RUM = 33079;
}
public static final class Placeholder
@@ -100130,6 +100644,34 @@ public static final class Placeholder
public static final int IRONWOOD_LOGS = 32909;
public static final int ROSEWOOD_LOGS = 32912;
public static final int JAR_OF_FEATHERS = 32922;
+ public static final int XMAS25_BIB = 32929;
+ public static final int XMAS25_BEER_BELLY_SWEATER = 32931;
+ public static final int XMAS25_CONTEST_JUMPER = 32933;
+ public static final int XMAS25_CHRISTMAS_DINNER = 32935;
+ public static final int HOLY_MOLEYS = 33003;
+ public static final int DEADMAN_RUINOUS_POWERS_BOOK = 33011;
+ public static final int DEADMAN_2026_WEAPON_ORNAMENT_SCROLL = 33014;
+ public static final int DEADMAN_2026_POH_ORNAMENT_SCROLL = 33017;
+ public static final int DEADMAN_2026_HOME_TELEPORT_SCROLL = 33020;
+ public static final int BOW_OF_FAERDHINEN_INFINITE_DEADMAN = 33022;
+ public static final int CRYSTAL_CHESTPLATE_DEADMAN = 33024;
+ public static final int CRYSTAL_CHESTPLATE_INACTIVE_DEADMAN = 33026;
+ public static final int CRYSTAL_PLATELEGS_DEADMAN = 33028;
+ public static final int CRYSTAL_PLATELEGS_INACTIVE_DEADMAN = 33030;
+ public static final int CRYSTAL_HELMET_DEADMAN = 33032;
+ public static final int CRYSTAL_HELMET_INACTIVE_DEADMAN = 33034;
+ public static final int TOXIC_SOTD_CHARGED_DEADMAN = 33037;
+ public static final int DEADMAN_DOGSWORD = 33040;
+ public static final int DEADMAN_THUNDER_KHOPESH = 33043;
+ public static final int MAGIC_ROCK_OF_AVARICE = 33046;
+ public static final int MAGIC_ROCK_OF_FORTUITY_INACTIVE = 33049;
+ public static final int MAGIC_ROCK_OF_FORTUITY_ACTIVE = 33052;
+ public static final int DEADMAN_STARTER_CAPE = 33064;
+ public static final int SLAYER_HELM_HOODED = 33067;
+ public static final int SLAYER_HELM_I_HOODED = 33069;
+ public static final int SW_SLAYER_HELM_I_HOODED = 33071;
+ public static final int PVPA_SLAYER_HELM_I_HOODED = 33073;
+ public static final int SAILING_FACILITY_BOTTLE_EMPTY = 33076;
}
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java b/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java
index df29c4fce58..9e1b1f5d4e2 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/NpcID.java
@@ -64331,6 +64331,11 @@ public final class NpcID
*/
public static final int REINFORCED_PIRATE_THIEVING_CHEST_GLE = 14813;
+ /**
+ * Revenant imp
+ */
+ public static final int WILD_CAVE_IMP_DEADMAN = 14814;
+
/**
* Spooky chair
*/
@@ -64548,6 +64553,16 @@ public final class NpcID
*/
public static final int SLAYER_GRYPHON_BOSS_GUARDIAN_VIS = 14863;
+ /**
+ * Revenant goblin
+ */
+ public static final int WILD_CAVE_GOBLIN_DEADMAN = 14864;
+
+ /**
+ * Revenant pyrefiend
+ */
+ public static final int WILD_CAVE_PYREFIEND_DEADMAN = 14865;
+
/**
* Henderson
*/
@@ -65939,6 +65954,46 @@ public final class NpcID
* Sailing cat
*/
public static final int SAILING_CHARTING_DRINK_CRATE_SAILING_CAT_EFFECT = 15177;
+
+ /**
+ * Revenant hobgoblin
+ */
+ public static final int WILD_CAVE_HOBGOBLIN_DEADMAN = 15178;
+
+ /**
+ * Revenant cyclops
+ */
+ public static final int WILD_CAVE_CYCLOPS_DEADMAN = 15179;
+
+ /**
+ * Revenant hellhound
+ */
+ public static final int WILD_CAVE_HELLHOUND_DEADMAN = 15180;
+
+ /**
+ * Revenant demon
+ */
+ public static final int WILD_CAVE_DEMON_DEADMAN = 15181;
+
+ /**
+ * Revenant ork
+ */
+ public static final int WILD_CAVE_ORK_DEADMAN = 15182;
+
+ /**
+ * Revenant dark beast
+ */
+ public static final int WILD_CAVE_DARKBEAST_DEADMAN = 15183;
+
+ /**
+ * Revenant knight
+ */
+ public static final int WILD_CAVE_KNIGHT_DEADMAN = 15184;
+
+ /**
+ * Revenant dragon
+ */
+ public static final int WILD_CAVE_DRAGON_DEADMAN = 15185;
public static final int BOAT_HP_NPC_TINY = 15186;
public static final int BOAT_HP_NPC_SMALL = 15187;
public static final int BOAT_HP_NPC_MEDIUM = 15188;
@@ -66175,6 +66230,11 @@ public final class NpcID
*/
public static final int SAILING_DOLPHIN_BABY = 15236;
+ /**
+ * Zemouregal
+ */
+ public static final int DEADMAN_BREACH_LUCIEN = 15237;
+
/**
* Junior Jim
*/
@@ -67531,5 +67591,125 @@ public final class NpcID
* Trader Crewmember
*/
public static final int SAILING_TRANSPORT_TRADER_STAN_CREW_WOMAN3_PORT_ROBERTS = 15546;
+
+ /**
+ * Big Evil Chicken
+ */
+ public static final int DEADMAN_BREACH_EVIL_CHICKEN = 15547;
+
+ /**
+ * Scurrius
+ */
+ public static final int DEADMAN_BREACH_SCURRIUS = 15548;
+
+ /**
+ * Phantom Muspah
+ */
+ public static final int DEADMAN_BREACH_MUSPAH = 15549;
+
+ /**
+ * Splatter
+ */
+ public static final int DEADMAN_BREACH_SPLATTER = 15550;
+
+ /**
+ * Tumeken's Warden
+ */
+ public static final int DEADMAN_BREACH_WARDEN_TUMEKEN_RANGE = 15551;
+
+ /**
+ * Elidinis' Warden
+ */
+ public static final int DEADMAN_BREACH_WARDEN_TUMEKEN_MAGE = 15552;
+
+ /**
+ * I DSCIM YOU
+ */
+ public static final int DEADMAN_BREACH_DSCIM_NPC = 15553;
+
+ /**
+ * Sol Heredit
+ */
+ public static final int DEADMAN_BREACH_SOL_HEREDIT = 15554;
+
+ /**
+ * Yama
+ */
+ public static final int DEADMAN_BREACH_YAMA = 15555;
+
+ /**
+ * Pestilent Bloat
+ */
+ public static final int DEADMAN_BREACH_BLOAT = 15556;
+
+ /**
+ * TzTok-Jad-Rek
+ */
+ public static final int DEADMAN_BREACH_JAD_MINION = 15557;
+
+ /**
+ * Zemouregal Summon
+ */
+ public static final int DEADMAN_BREACH_MUMMY_MINION = 15558;
+
+ /**
+ * Zemouregal Summon
+ */
+ public static final int DEADMAN_BREACH_SHADE_MINION = 15559;
+
+ /**
+ * Zemouregal Summon
+ */
+ public static final int DEADMAN_BREACH_UNDEAD_ONE_MINION = 15560;
+
+ /**
+ * Zemouregal Summon
+ */
+ public static final int DEADMAN_BREACH_PIRATE_MINION = 15561;
+
+ /**
+ * Zemouregal Summon
+ */
+ public static final int DEADMAN_BREACH_ULFRIC_MINION = 15562;
+
+ /**
+ * Zemouregal Summon
+ */
+ public static final int DEADMAN_BREACH_KHAZARD_MINION = 15563;
+
+ /**
+ * Zemouregal
+ */
+ public static final int DEADMAN_CHEST_ZEMOUREGAL = 15564;
+ public static final int DEADMAN_GUARD_UNKAH = 15565;
+
+ /**
+ * Guard
+ */
+ public static final int DEADMAN_GUARD_UNKAH_VIS = 15566;
+ public static final int DEADMAN_GUARD_WINTERTODT = 15567;
+
+ /**
+ * Guard
+ */
+ public static final int DEADMAN_GUARD_WINTERTODT_VIS = 15568;
+ public static final int DEADMAN_THRALL_ZOMBIE_GREATER_ZUK = 15569;
+ public static final int DEADMAN_THRALL_SKELETAL_GREATER_PRINCESS = 15570;
+ public static final int DEADMAN_THRALL_GHOSTLY_GREATER_WISP = 15571;
+
+ /**
+ * Ket-Zek
+ */
+ public static final int TZHAAR_FIGHTPIT_SWARM_4A = 15572;
+
+ /**
+ * Ket-Zek
+ */
+ public static final int TZHAAR_FIGHTPIT_SWARM_4B = 15573;
+
+ /**
+ * TzTok-Jad
+ */
+ public static final int TZHAAR_FIGHTPIT_SWARM_BOSS = 15574;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java b/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java
index 6c1f7b8c6e8..9129a400bf7 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/ObjectID1.java
@@ -71723,6 +71723,7 @@ class ObjectID1
*/
public static final int TOA_ZEBAK_BUBBLES_BLUE = 58525;
public static final int BGSOUND_SAILING_OCEAN_WATER_LOOP_01 = 58526;
+ public static final int CASTLEARROWSLIT_OFFSET = 58527;
public static final int BGSOUND_SAILING_COOKING_LOOP_2 = 58528;
public static final int BGSOUND_SAILING_NORTHERN_OCEAN_WIND_LOOP = 58529;
public static final int BGSOUND_SAILING_CLOCK = 58530;
@@ -73137,6 +73138,11 @@ class ObjectID1
*/
public static final int NICKELROCK1_EMPTY = 58924;
+ /**
+ * Cabinet
+ */
+ public static final int CABINET_OFFSET1 = 58925;
+
/**
* Scoreboard
*/
@@ -73881,7 +73887,7 @@ class ObjectID1
public static final int SAILING_CHARTING_GENERIC_GLIDER_KHARAZI_STRAIT = 59308;
/**
- * Tiny briny shrimp
+ * <col=ffff00>Tiny briny shrimp</col>
*/
public static final int SAILING_CHARTING_GENERIC_SEA_MONKEYS = 59309;
@@ -74056,7 +74062,7 @@ class ObjectID1
public static final int SAILING_CHARTING_GENERIC_SAND_PIT = 59343;
/**
- * Suspicious eyes
+ * <col=ffff00>Suspicious eyes</col>
*/
public static final int SAILING_CHARTING_GENERIC_CRAB_EYES = 59344;
@@ -74151,12 +74157,12 @@ class ObjectID1
public static final int SAILING_CHARTING_GENERIC_ATOLL_DICTIONARY = 59362;
/**
- * Lurking Shadow
+ * <col=ffff00>Lurking Shadow</col>
*/
public static final int SAILING_CHARTING_GENERIC_SCARY_SHADOW = 59363;
/**
- * Horde of tiny sea creatures
+ * <col=ffff00>Horde of tiny sea creatures</col>
*/
public static final int SAILING_CHARTING_GENERIC_SEA_SAPPHIRES = 59364;
@@ -74599,6 +74605,11 @@ class ObjectID1
*/
public static final int SAILING_BOAT_SAILS_COLOSSAL_REGULAR = 59551;
+ /**
+ * Crevice
+ */
+ public static final int GRIMSTONE_CAVE_WALL_UPPER_CREVICE = 59552;
+
/**
* Sails
*/
@@ -76842,216 +76853,60 @@ class ObjectID1
* Sails
*/
public static final int SAILING_NPC_BOAT_BASIC_MEDIUM_SAIL = 60244;
-
- /**
- * Basic cargo hold
- */
public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_RAFT = 60245;
/**
- * Basic cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_RAFT_OPEN = 60246;
-
- /**
- * Oak cargo hold
+ * Deadman's chest
*/
+ public static final int DEADMAN_RARE_CHEST_SPAWN = 60246;
public static final int SAILING_BOAT_CARGO_HOLD_OAK_RAFT = 60247;
/**
- * Oak cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_OAK_RAFT_OPEN = 60248;
-
- /**
- * Teak cargo hold
+ * Deadman's chest
*/
+ public static final int DEADMAN_RARE_CHEST_IDLE = 60248;
public static final int SAILING_BOAT_CARGO_HOLD_TEAK_RAFT = 60249;
/**
- * Teak cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_TEAK_RAFT_OPEN = 60250;
-
- /**
- * Mahogany cargo hold
+ * Deadman's chest
*/
+ public static final int DEADMAN_RARE_CHEST_OPENED = 60250;
public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_RAFT = 60251;
-
- /**
- * Mahogany cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_RAFT_OPEN = 60252;
-
- /**
- * Camphor cargo hold
- */
+ public static final int DEADMAN_POH_WALL = 60252;
public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_RAFT = 60253;
-
- /**
- * Camphor cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_RAFT_OPEN = 60254;
-
- /**
- * Ironwood cargo hold
- */
+ public static final int DEADMAN_POH_WINDOW = 60254;
public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_RAFT = 60255;
-
- /**
- * Ironwood cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_RAFT_OPEN = 60256;
-
- /**
- * Rosewood cargo hold
- */
+ public static final int DEADMAN_POH_WALL_CRUMBLY01_L = 60256;
public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_RAFT = 60257;
-
- /**
- * Rosewood cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_RAFT_OPEN = 60258;
-
- /**
- * Basic cargo hold
- */
+ public static final int DEADMAN_POH_WALL_CRUMBLY01_R = 60258;
public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_2X5 = 60259;
-
- /**
- * Basic cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_2X5_OPEN = 60260;
-
- /**
- * Oak cargo hold
- */
+ public static final int DEADMAN_POH_WALL_CRUMBLY02_L = 60260;
public static final int SAILING_BOAT_CARGO_HOLD_OAK_2X5 = 60261;
-
- /**
- * Oak cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_OAK_2X5_OPEN = 60262;
-
- /**
- * Teak cargo hold
- */
+ public static final int DEADMAN_POH_WALL_CRUMBLY02_R = 60262;
public static final int SAILING_BOAT_CARGO_HOLD_TEAK_2X5 = 60263;
-
- /**
- * Teak cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_TEAK_2X5_OPEN = 60264;
-
- /**
- * Mahogany cargo hold
- */
+ public static final int DEADMAN_POH_WALL_CRUMBLY03_L = 60264;
public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_2X5 = 60265;
-
- /**
- * Mahogany cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_2X5_OPEN = 60266;
-
- /**
- * Camphor cargo hold
- */
+ public static final int DEADMAN_POH_WALL_CRUMBLY03_R = 60266;
public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_2X5 = 60267;
-
- /**
- * Camphor cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_2X5_OPEN = 60268;
-
- /**
- * Ironwood cargo hold
- */
+ public static final int DEADMAN_RUBBLE01 = 60268;
public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_2X5 = 60269;
-
- /**
- * Ironwood cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_2X5_OPEN = 60270;
-
- /**
- * Rosewood cargo hold
- */
+ public static final int DEADMAN_RUBBLE02 = 60270;
public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_2X5 = 60271;
-
- /**
- * Rosewood cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_2X5_OPEN = 60272;
-
- /**
- * Basic cargo hold
- */
+ public static final int POH_FLOORDECOR_DEADMAN = 60272;
public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_LARGE = 60273;
-
- /**
- * Basic cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_LARGE_OPEN = 60274;
-
- /**
- * Oak cargo hold
- */
+ public static final int DEADMAN_DUNGEON_INSIDEWALL_CORNER = 60274;
public static final int SAILING_BOAT_CARGO_HOLD_OAK_LARGE = 60275;
-
- /**
- * Oak cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_OAK_LARGE_OPEN = 60276;
-
- /**
- * Teak cargo hold
- */
+ public static final int DEADMAN_DUNGEON_OUTSIDEWALL_CORNER = 60276;
public static final int SAILING_BOAT_CARGO_HOLD_TEAK_LARGE = 60277;
-
- /**
- * Teak cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_TEAK_LARGE_OPEN = 60278;
-
- /**
- * Mahogany cargo hold
- */
+ public static final int DEADMAN_DUNGEON_OUTSIDEWALL_LCORNER = 60278;
public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_LARGE = 60279;
-
- /**
- * Mahogany cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_LARGE_OPEN = 60280;
-
- /**
- * Camphor cargo hold
- */
+ public static final int DEADMAN_DUNGEON_OUTSIDEWALL_RCORNER = 60280;
public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_LARGE = 60281;
-
- /**
- * Camphor cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_LARGE_OPEN = 60282;
-
- /**
- * Ironwood cargo hold
- */
+ public static final int DEADMAN_DUNGEON_WALLTOP = 60282;
public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_LARGE = 60283;
-
- /**
- * Ironwood cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_LARGE_OPEN = 60284;
-
- /**
- * Rosewood cargo hold
- */
+ public static final int DEADMAN_DUNGEON_OUTSIDEWALL = 60284;
public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_LARGE = 60285;
-
- /**
- * Rosewood cargo hold
- */
- public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_LARGE_OPEN = 60286;
+ public static final int DEADMAN_DUNGEON_INSIDEWALL = 60286;
/**
* Notice board
@@ -77877,5 +77732,402 @@ class ObjectID1
* Tentacle
*/
public static final int HAZARDOUS_WATER_PROFANE_GHOST = 60575;
+
+ /**
+ * Table
+ */
+ public static final int XMAS25_TABLE01_EMPTY01 = 60576;
+
+ /**
+ * Basic cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_RAFT_NO_CARGO = 60577;
+
+ /**
+ * Table
+ */
+ public static final int XMAS25_TABLE01_DRINK01 = 60578;
+
+ /**
+ * Table
+ */
+ public static final int XMAS25_TABLE01_FOOD01 = 60579;
+
+ /**
+ * Table
+ */
+ public static final int XMAS25_TABLE01_VEGETABLE01 = 60580;
+
+ /**
+ * Basic cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_RAFT_CARGO = 60581;
+
+ /**
+ * Oak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_OAK_RAFT_NO_CARGO = 60582;
+
+ /**
+ * Oak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_OAK_RAFT_CARGO = 60583;
+
+ /**
+ * Teak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_TEAK_RAFT_NO_CARGO = 60584;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_DRINKS_BAR_MIDDLE = 60585;
+
+ /**
+ * Teak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_TEAK_RAFT_CARGO = 60586;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_DRINKS_BAR_MIDDLE2 = 60587;
+
+ /**
+ * Mahogany cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_RAFT_NO_CARGO = 60588;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_DRINKS_BAR_LEFT = 60589;
+
+ /**
+ * Mahogany cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_RAFT_CARGO = 60590;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_DRINKS_BAR_RIGHT = 60591;
+
+ /**
+ * Camphor cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_RAFT_NO_CARGO = 60592;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_BAR_MIDDLE = 60593;
+
+ /**
+ * Camphor cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_RAFT_CARGO = 60594;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_BAR_MIDDLE2 = 60595;
+
+ /**
+ * Ironwood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_RAFT_NO_CARGO = 60596;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_BAR_MIDDLE3 = 60597;
+
+ /**
+ * Ironwood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_RAFT_CARGO = 60598;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_BAR_LEFT = 60599;
+
+ /**
+ * Bar
+ */
+ public static final int XMAS25_BLUE_INN_BAR_RIGHT = 60600;
+
+ /**
+ * Rosewood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_RAFT_NO_CARGO = 60601;
+
+ /**
+ * Rosewood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_RAFT_CARGO = 60602;
+
+ /**
+ * Basic cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_2X5_NO_CARGO = 60603;
+
+ /**
+ * Basic cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_2X5_CARGO = 60604;
+
+ /**
+ * Oak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_OAK_2X5_NO_CARGO = 60605;
+
+ /**
+ * Oak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_OAK_2X5_CARGO = 60606;
+
+ /**
+ * Teak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_TEAK_2X5_NO_CARGO = 60607;
+
+ /**
+ * Crate
+ */
+ public static final int XMAS25_CRATE01_CARROT01 = 60608;
+
+ /**
+ * Crate
+ */
+ public static final int XMAS25_CRATE01_TOMATO01 = 60609;
+
+ /**
+ * Crate
+ */
+ public static final int XMAS25_CRATE01_VEGETABLE01 = 60610;
+
+ /**
+ * Crate
+ */
+ public static final int XMAS25_CRATE01_BROCCOLI01 = 60611;
+
+ /**
+ * Crate
+ */
+ public static final int XMAS25_CRATE01_FRUIT01 = 60612;
+
+ /**
+ * Crate
+ */
+ public static final int XMAS25_CRATE01_FISH01 = 60613;
+
+ /**
+ * Crate
+ */
+ public static final int XMAS25_CRATE01_MEAT01 = 60614;
+ public static final int XMAS22_DECORATION_HOLLYWREATH01_WALL01 = 60615;
+
+ /**
+ * Snowball pile
+ */
+ public static final int XMAS25_SNOWBALL_PILE = 60616;
+ public static final int AGILITY_ONEWAY_RIGHT_ICON = 60617;
+ public static final int AGILITY_ONEWAY_LEFT_ICON = 60618;
+
+ /**
+ * Shellbane Gryphon display
+ */
+ public static final int POH_DISPLAY_GRYPHON = 60619;
+
+ /**
+ * Teak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_TEAK_2X5_CARGO = 60620;
+
+ /**
+ * Mahogany cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_2X5_NO_CARGO = 60621;
+
+ /**
+ * Mahogany cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_2X5_CARGO = 60622;
+
+ /**
+ * Camphor cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_2X5_NO_CARGO = 60623;
+
+ /**
+ * Camphor cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_2X5_CARGO = 60624;
+
+ /**
+ * Ironwood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_2X5_NO_CARGO = 60625;
+
+ /**
+ * Ironwood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_2X5_CARGO = 60626;
+
+ /**
+ * Rosewood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_2X5_NO_CARGO = 60627;
+
+ /**
+ * Rosewood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_2X5_CARGO = 60628;
+
+ /**
+ * Basic cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_LARGE_NO_CARGO = 60629;
+
+ /**
+ * Basic cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_REGULAR_LARGE_CARGO = 60630;
+
+ /**
+ * Oak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_OAK_LARGE_NO_CARGO = 60631;
+
+ /**
+ * Oak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_OAK_LARGE_CARGO = 60632;
+
+ /**
+ * Teak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_TEAK_LARGE_NO_CARGO = 60633;
+
+ /**
+ * Teak cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_TEAK_LARGE_CARGO = 60634;
+
+ /**
+ * Mahogany cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_LARGE_NO_CARGO = 60635;
+
+ /**
+ * Mahogany cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_MAHOGANY_LARGE_CARGO = 60636;
+
+ /**
+ * Camphor cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_LARGE_NO_CARGO = 60637;
+
+ /**
+ * Camphor cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_CAMPHOR_LARGE_CARGO = 60638;
+
+ /**
+ * Ironwood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_LARGE_NO_CARGO = 60639;
+
+ /**
+ * Ironwood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_IRONWOOD_LARGE_CARGO = 60640;
+
+ /**
+ * Rosewood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_LARGE_NO_CARGO = 60641;
+
+ /**
+ * Rosewood cargo hold
+ */
+ public static final int SAILING_BOAT_CARGO_HOLD_ROSEWOOD_LARGE_CARGO = 60642;
+ public static final int DEADMAN_DUNGEON_CORRIDORFILLER = 60643;
+ public static final int BLACK_WALL02 = 60646;
+
+ /**
+ * Stained-glass window
+ */
+ public static final int POH_DEADMAN_WINDOW_BINGO_01 = 60647;
+
+ /**
+ * Stained-glass window
+ */
+ public static final int POH_DEADMAN_WINDOW_BINGO_02 = 60648;
+
+ /**
+ * Shuttered window
+ */
+ public static final int POH_DEADMAN_WINDOW_SHUTTERS = 60649;
+
+ /**
+ * Decorative window
+ */
+ public static final int POH_DEADMAN_WINDOW_BOB = 60650;
+
+ /**
+ * Stained-glass window
+ */
+ public static final int POH_DEADMAN_WINDOW_BOB2 = 60651;
+
+ /**
+ * Decorative window
+ */
+ public static final int POH_DEADMAN_WINDOW_GUTHIX = 60652;
+
+ /**
+ * Stained-glass window
+ */
+ public static final int POH_DEADMAN_WINDOW_GUTHIX2 = 60653;
+
+ /**
+ * Decorative window
+ */
+ public static final int POH_DEADMAN_WINDOW_SARADOMIN = 60654;
+
+ /**
+ * Stained-glass window
+ */
+ public static final int POH_DEADMAN_WINDOW_SARADOMIN2 = 60655;
+
+ /**
+ * Decorative window
+ */
+ public static final int POH_DEADMAN_WINDOW_ZAMORAK = 60656;
+
+ /**
+ * Stained-glass window
+ */
+ public static final int POH_DEADMAN_WINDOW_ZAMORAK2 = 60657;
+
+ /**
+ * Decorative window
+ */
+ public static final int POH_DEADMAN_WINDOW_GNOMECHILD = 60658;
+
+ /**
+ * Stained-glass window
+ */
+ public static final int POH_DEADMAN_WINDOW_GNOMECHILD2 = 60659;
+
+ /**
+ * Window space
+ */
+ public static final int POH_CHAPELWINDOW_HOTSPOT_DEADMAN = 60660;
+ public static final int DEADMAN_DUNGEON_INSIDEWALL_SIDER = 60661;
+ public static final int DEADMAN_DUNGEON_INSIDEWALL_SIDEL = 60662;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/SpotanimID.java b/runelite-api/src/main/java/net/runelite/api/gameval/SpotanimID.java
index bd72fff6a45..aa0d430bc8f 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/SpotanimID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/SpotanimID.java
@@ -3569,5 +3569,15 @@ public final class SpotanimID
public static final int VFX_WIND_SAIL_3X10_01 = 3562;
public static final int VFX_WIND_SAIL_3X10_SPEEDBOOST01 = 3563;
public static final int SHIPYARD_DOG_BALL = 3564;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_FULL = 3565;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_01 = 3566;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_02 = 3567;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_03 = 3568;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_04 = 3569;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_05 = 3570;
+ public static final int DEADMAN_2026_HOME_TELE_SPOTANIM_06 = 3571;
+ public static final int DEADMAN_2026_SOTD_SPECIAL_START = 3572;
+ public static final int DEADMAN_2026_SOTD_SPECIAL_EXTRA = 3573;
+ public static final int SARADOMIN_LIGHTNING_DEADMAN = 3574;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/SpriteID.java b/runelite-api/src/main/java/net/runelite/api/gameval/SpriteID.java
index 94615d9f153..d6085b9ae04 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/SpriteID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/SpriteID.java
@@ -4454,6 +4454,13 @@ public static final class Mapfunction
public static final int _144 = 7285;
public static final int _145 = 7286;
public static final int _146 = 7287;
+ public static final int _147 = 7311;
+ public static final int _148 = 7312;
+ public static final int _149 = 7313;
+ public static final int _150 = 7314;
+ public static final int _151 = 7315;
+ public static final int _152 = 7316;
+ public static final int _153 = 7317;
public static final int GENERAL_STORE = _0;
public static final int SWORD_SHOP = _1;
@@ -6695,6 +6702,7 @@ public static final class AccountIcons
public static final int _2 = 3388;
public static final int _3 = 3389;
public static final int _4 = 3390;
+ public static final int _5 = 7318;
}
public static final class CaProgressBar
@@ -10892,4 +10900,131 @@ public static final class HeadbarIce40
public static final int _0 = 6838;
public static final int _1 = 6839;
}
+
+ public static final class Sideicons18x18
+ {
+ public static final int _0 = 7319;
+ public static final int _1 = 7320;
+ public static final int _2 = 7321;
+ }
+
+ public static final class DeadmanSigilCombatIconsLargeInactive
+ {
+ public static final int _0 = 7322;
+ public static final int _1 = 7323;
+ public static final int _2 = 7324;
+ public static final int _3 = 7325;
+ public static final int _4 = 7326;
+ public static final int _5 = 7327;
+ public static final int _6 = 7328;
+ public static final int _7 = 7329;
+ public static final int _8 = 7330;
+ public static final int _9 = 7331;
+ public static final int _10 = 7332;
+ public static final int _11 = 7333;
+ public static final int _12 = 7334;
+ public static final int _13 = 7335;
+ public static final int _14 = 7336;
+ public static final int _15 = 7337;
+ public static final int _16 = 7338;
+ public static final int _17 = 7339;
+ public static final int _18 = 7340;
+ public static final int _19 = 7341;
+ public static final int _20 = 7342;
+ public static final int _21 = 7343;
+ public static final int _22 = 7344;
+ public static final int _23 = 7345;
+ public static final int _24 = 7346;
+ public static final int _25 = 7347;
+ public static final int _26 = 7348;
+ public static final int _27 = 7349;
+ public static final int _28 = 7350;
+ public static final int _29 = 7351;
+ public static final int _30 = 7352;
+ public static final int _31 = 7353;
+ }
+
+ public static final class DeadmanSigilSkillingIconsLargeInactive
+ {
+ public static final int _0 = 7354;
+ public static final int _1 = 7355;
+ public static final int _2 = 7356;
+ public static final int _3 = 7357;
+ public static final int _4 = 7358;
+ public static final int _5 = 7359;
+ public static final int _6 = 7360;
+ public static final int _7 = 7361;
+ public static final int _8 = 7362;
+ public static final int _9 = 7363;
+ public static final int _10 = 7364;
+ public static final int _11 = 7365;
+ public static final int _12 = 7366;
+ public static final int _13 = 7367;
+ public static final int _14 = 7368;
+ public static final int _15 = 7369;
+ public static final int _16 = 7370;
+ public static final int _17 = 7371;
+ public static final int _18 = 7372;
+ public static final int _19 = 7373;
+ public static final int _20 = 7374;
+ public static final int _21 = 7375;
+ public static final int _22 = 7376;
+ public static final int _23 = 7377;
+ public static final int _24 = 7378;
+ public static final int _25 = 7379;
+ public static final int _26 = 7380;
+ public static final int _27 = 7381;
+ public static final int _28 = 7382;
+ public static final int _29 = 7383;
+ public static final int _30 = 7384;
+ public static final int _31 = 7385;
+ }
+
+ public static final class DeadmanSigilUtilityIconsLargeInactive
+ {
+ public static final int _0 = 7386;
+ public static final int _1 = 7387;
+ public static final int _2 = 7388;
+ public static final int _3 = 7389;
+ public static final int _4 = 7390;
+ public static final int _5 = 7391;
+ public static final int _6 = 7392;
+ public static final int _7 = 7393;
+ public static final int _8 = 7394;
+ public static final int _9 = 7395;
+ public static final int _10 = 7396;
+ public static final int _11 = 7397;
+ public static final int _12 = 7398;
+ public static final int _13 = 7399;
+ public static final int _14 = 7400;
+ public static final int _15 = 7401;
+ public static final int _16 = 7402;
+ public static final int _17 = 7403;
+ public static final int _18 = 7404;
+ public static final int _19 = 7405;
+ public static final int _20 = 7406;
+ public static final int _21 = 7407;
+ public static final int _22 = 7408;
+ public static final int _23 = 7409;
+ public static final int _24 = 7410;
+ public static final int _25 = 7411;
+ public static final int _26 = 7412;
+ public static final int _27 = 7413;
+ public static final int _28 = 7414;
+ public static final int _29 = 7415;
+ public static final int _30 = 7416;
+ public static final int _31 = 7417;
+ }
+
+ public static final class BankStorage
+ {
+ public static final int _0 = 7418;
+ public static final int _1 = 7419;
+ public static final int _2 = 7420;
+ public static final int _3 = 7421;
+ public static final int _4 = 7422;
+ public static final int _5 = 7423;
+ public static final int _6 = 7424;
+ public static final int _7 = 7425;
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/VarClientID.java b/runelite-api/src/main/java/net/runelite/api/gameval/VarClientID.java
index 0fe1e0e9c9b..277e28bb7d7 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/VarClientID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/VarClientID.java
@@ -1347,5 +1347,8 @@ public final class VarClientID
public static final int CAMERA_ZOOM_BIG_MIN = 1340;
public static final int CAMERA_ZOOM_BIG_MAX = 1341;
public static final int SAILING_LAST_BOAT_HP = 1342;
+ public static final int SETTINGS_DEV_EXAMPLE_INT = 1343;
+ public static final int FAIRYRINGS_SEARCHSTRING = 1344;
+ public static final int SKILL_GUIDE_V2_OVERVIEW_CURRENT_TAB = 1345;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java b/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java
index 451b9cfedf5..3c8a0cbde6e 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/VarPlayerID.java
@@ -2582,5 +2582,18 @@ public final class VarPlayerID
public static final int SAILING_BOAT_CARGOHOLD_SIDE_WHITELIST = 5205;
public static final int PORT_TASKS_COMPLETED = 5207;
public static final int SAILING_SHIPWRECK_RAREITEMS = 5208;
+ public static final int XMAS_25_1 = 5214;
+ public static final int XMAS_25_2 = 5215;
+ public static final int XMAS_25_3 = 5216;
+ public static final int COLLECTION_PERSONAL_BEST_TRANSMIT = 5217;
+ public static final int COLLECTION_PERSONAL_BEST_TRANSMIT_2 = 5218;
+ public static final int ERNESTHANDIN = 5219;
+ public static final int DEADMAN_POINTS_2026 = 5220;
+ public static final int DEADMAN_TUTORIAL = 5224;
+ public static final int DEADMAN_SKULL_POINTS = 5225;
+ public static final int DEADMAN_SKULL_POINTS_USED = 5226;
+ public static final int DEADMAN_SKULL_GENERAL = 5227;
+ public static final int SIGIL_STATE_1 = 5228;
+ public static final int SIGIL_TOGGLE_1 = 5229;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java b/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java
index 581b2ce6c83..1d71ae1cada 100644
--- a/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java
+++ b/runelite-api/src/main/java/net/runelite/api/gameval/VarbitID.java
@@ -11122,6 +11122,7 @@ public final class VarbitID
public static final int SETTINGS_HD_NEW_RENDERER_TOGGLE = 16617;
public static final int SETTINGS_HD_WARNING_SHOWN = 16618;
public static final int SETTINGS_SD_BETA_ENABLED = 16619;
+ public static final int SAILING_WARNING_TELEPORTOFFBOAT = 16620;
public static final int SETTINGS_WORLD_MAP_HOTKEY_DISABLED = 16621;
public static final int CHARGES_EYE_OF_AYAK_QUANTITY = 16623;
public static final int PMOON_EYATLALLI_VIS = 16624;
@@ -13841,5 +13842,104 @@ public final class VarbitID
public static final int SAILING_CREW_GHOST_JENKINS_VISIBILITY_CRANDOR = 19610;
public static final int SETTINGS_IRONMAN_CARGO_WARNING_TEMP = 19612;
public static final int SAILING_CREW_GHOST_JENKINS_VISIBILITY_CONTROL = 19613;
+ public static final int SETTINGS_CARGO_HOLD_PRIVACY = 19614;
+ public static final int SETTINGS_NEW_MENU_INTERFACE = 19615;
+ public static final int BOAT_REPAIR_COST_WARNING_DISMISSED = 19616;
+ public static final int XMAS_25_MAIN = 19618;
+ public static final int XMAS_25_NPC_QUEUE = 19619;
+ public static final int XMAS_25_SEAT_ID_1 = 19620;
+ public static final int XMAS_25_SEAT_ID_2 = 19621;
+ public static final int XMAS_25_SEAT_ID_3 = 19622;
+ public static final int XMAS_25_SEAT_ID_4 = 19623;
+ public static final int XMAS25_CURRENT_TABLE = 19624;
+ public static final int XMAS25_FOOD_CORRECT_MAIN = 19625;
+ public static final int XMAS25_FOOD_CORRECT_SIDE_1 = 19626;
+ public static final int XMAS_25_TABLE_ID_1 = 19627;
+ public static final int XMAS_25_TABLE_ID_2 = 19628;
+ public static final int XMAS_25_TABLE_ID_3 = 19629;
+ public static final int XMAS_25_TABLE_ID_4 = 19630;
+ public static final int XMAS_25_BAR_INTERACTABLE = 19631;
+ public static final int XMAS_25_BAR_DRINKS = 19632;
+ public static final int XMAS_25_BAR_CORRECT_DRINK = 19633;
+ public static final int XMAS25_TABLE_1_STATE = 19634;
+ public static final int XMAS25_TABLE_2_STATE = 19635;
+ public static final int XMAS25_TABLE_3_STATE = 19636;
+ public static final int XMAS25_TABLE_4_STATE = 19637;
+ public static final int XMAS25_FOOD_CORRECT_SIDE_2 = 19638;
+ public static final int XMAS25_FOOD_CORRECT_SIDE_3 = 19639;
+ public static final int XMAS25_FOOD_MAIN = 19640;
+ public static final int XMAS25_FOOD_SIDE_1 = 19641;
+ public static final int XMAS25_FOOD_SIDE_2 = 19642;
+ public static final int XMAS25_FOOD_SIDE_3 = 19643;
+ public static final int SAILING_UNEXPECTED_INPUT_LOGGED = 19645;
+ public static final int SETTINGS_NEW_MENU_TRANSPARENT_INTERFACE_DISABLED = 19646;
+ public static final int SETTINGS_RUNEPOUCH_LOADOUT_NAMES_DISABLED = 19647;
+ public static final int SETTINGS_FAIRYRING_MOBILE_KEYBOARD_AUTOOPEN_DISABLED = 19648;
+ public static final int MY2ARM_STRONGHOLD_TELE_TOGGLE = 19649;
+ public static final int SAILING_SIDEPANEL_BOAT_CRYSTALHELM_RESISTANCE = 19652;
+ public static final int DRAGONSLAYER_MET_SAWMILL = 19653;
+ public static final int DRAGONSLAYER_PLANKS_MADE = 19654;
+ public static final int ERNESTHANDIN_COMPLETE = 19655;
+ public static final int DEADMAN_FINALE_TELEPORT_BH_COMPLETE = 19656;
+ public static final int DEADMAN_FINALE_TELEPORT_COLOSSEUM_COMPLETE = 19657;
+ public static final int DEADMAN_FINALE_TEAM = 19658;
+ public static final int DEADMAN_QUEST_LAMP_TIER_5 = 19660;
+ public static final int DEADMAN_QUEST_LAMP_TIER_6 = 19661;
+ public static final int DEADMAN_QUEST_LAMP_TIER_7 = 19662;
+ public static final int DEADMAN_QUEST_LAMP_TIER_8 = 19663;
+ public static final int DEADMAN_QUEST_LAMP_TIER_9 = 19664;
+ public static final int DEADMAN_QUEST_LAMP_TIER_10 = 19665;
+ public static final int DEADMAN_RUINOUS_PRAYERS_UNLOCK_CHECK = 19666;
+ public static final int DEADMAN_2026_WEAPON_ORNAMENT_UNLOCKED = 19671;
+ public static final int DEADMAN_2026_POH_ORNAMENT_UNLOCKED = 19672;
+ public static final int DEADMAN_2026_TELEPORT_UNLOCKED = 19673;
+ public static final int DEADMAN_2026_TUTORIAL_STEP = 19677;
+ public static final int DEADMAN_2026_INITIAL_SETUP_DONE = 19678;
+ public static final int DEADMAN_2026_TUTORIAL_END = 19679;
+ public static final int DEADMAN_2026_TUTORIAL_TELEPORT_DEST = 19680;
+ public static final int SETTINGS_QUETZALWHISTLE_DEFAULT_TP = 19681;
+ public static final int DEADMAN_SKULL_TAB = 19682;
+ public static final int SIGIL_OF_AGILE_FORTUNE_STATE = 19683;
+ public static final int SIGIL_OF_HOARDING_STATE = 19684;
+ public static final int SIGIL_OF_DECEPTION_STATE = 19685;
+ public static final int SIGIL_OF_LITHE_STATE = 19686;
+ public static final int SIGIL_OF_THE_FOOD_MASTER_STATE = 19687;
+ public static final int SIGIL_OF_THE_WELL_FED_STATE = 19688;
+ public static final int SIGIL_OF_THE_POTION_MASTER_STATE = 19689;
+ public static final int SIGIL_OF_THE_TREASURE_HUNTER_STATE = 19690;
+ public static final int SIGIL_OF_THE_HUNTER_STATE = 19691;
+ public static final int SIGIL_OF_THE_INFERNAL_CHEF_STATE = 19692;
+ public static final int SIGIL_OF_NATURE_STATE = 19693;
+ public static final int SIGIL_OF_FAITH_STATE = 19694;
+ public static final int SIGIL_OF_DEVOTION_STATE = 19695;
+ public static final int SIGIL_OF_THE_ALCHEMANIAC_STATE = 19696;
+ public static final int SIGIL_OF_RESISTANCE_STATE = 19697;
+ public static final int SIGIL_OF_DEFT_STRIKES_STATE = 19698;
+ public static final int SIGIL_OF_THE_AUGMENTED_THRALL_STATE = 19699;
+ public static final int SIGIL_OF_ONSLAUGHT_STATE = 19700;
+ public static final int SIGIL_OF_RESTORATION_STATE = 19701;
+ public static final int SIGIL_OF_TITANIUM_STATE = 19702;
+ public static final int SIGIL_OF_METICULOUSNESS_STATE = 19703;
+ public static final int SIGIL_OF_ENHANCED_HARVEST_STATE = 19704;
+ public static final int SIGIL_OF_MOBILITY_STATE = 19705;
+ public static final int SIGIL_OF_SLAUGHTER_STATE = 19706;
+ public static final int SIGIL_OF_WOODCRAFT_STATE = 19707;
+ public static final int SIGIL_OF_REMOTE_STORAGE_STATE = 19708;
+ public static final int SIGIL_OF_CONCLUSION_STATE = 19709;
+ public static final int SIGIL_OF_AUTOMATION_STATE = 19710;
+ public static final int SIGIL_OF_ETERNAL_BELIEF_STATE = 19711;
+ public static final int SIGIL_OF_EFFICIENCY_STATE = 19712;
+ public static final int SIGIL_OF_REVOKED_LIMITATION_STATE = 19713;
+ public static final int SIGIL_OF_ENHANCED_HARVEST_TOGGLE = 19714;
+ public static final int SIGIL_OF_MOBILITY_TOGGLE = 19715;
+ public static final int SIGIL_OF_SLAUGHTER_TOGGLE = 19716;
+ public static final int SIGIL_OF_WOODCRAFT_TOGGLE = 19717;
+ public static final int SIGIL_OF_REMOTE_STORAGE_TOGGLE = 19718;
+ public static final int SIGIL_OF_DEVOTION_TOGGLE = 19719;
+ public static final int SLAYER_UNLOCK_HELM_HOODED = 19720;
+ public static final int BANK_HIDEDEPOSITCONTAINERS = 19721;
+ public static final int BANK_POPUPTAB_OPEN = 19722;
+ public static final int BANK_SETTING_FORGET_POPUP = 19723;
+ public static final int DEADMAN_2026_GE_WIPE = 19724;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java b/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java
index c2dae84e95a..71aa1356b14 100644
--- a/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java
+++ b/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java
@@ -68,10 +68,17 @@ public interface DrawCallbacks
* Enable the {@link Model#getUnlitFaceColors()} method
*/
int UNLIT_FACE_COLORS = 0x40;
+ int RENDER_THREADS_MASK = 15;
+ int RENDER_THREADS_SHIFT = 7;
int PASS_OPAQUE = 0;
int PASS_ALPHA = 1;
+ static int RENDER_THREADS(int num)
+ {
+ return (num & RENDER_THREADS_MASK) << RENDER_THREADS_SHIFT;
+ }
+
default void draw(Projection projection, Scene scene, Renderable renderable, int orientation, int x, int y, int z, long hash)
{
}
@@ -160,6 +167,11 @@ default void drawDynamic(Projection worldProjection, Scene scene, TileObject til
{
}
+ default void drawDynamic(int renderThreadId, Projection worldProjection, Scene scene, TileObject tileObject, Renderable r, Model m, int orient, int x, int y, int z)
+ {
+ drawDynamic(worldProjection, scene, tileObject, r, m, orient, x, y, z);
+ }
+
default void drawTemp(Projection worldProjection, Scene scene, GameObject gameObject, Model m, int orient, int x, int y, int z)
{
}
diff --git a/runelite-client/build.gradle.kts b/runelite-client/build.gradle.kts
new file mode 100644
index 00000000000..9e15e99a385
--- /dev/null
+++ b/runelite-client/build.gradle.kts
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2024, LlemonDuck
+ * 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.
+ */
+
+import java.io.ByteArrayOutputStream
+
+plugins {
+ java
+ `java-library`
+ `maven-publish`
+ pmd
+ alias(libs.plugins.lombok)
+
+ id("net.runelite.runelite-gradle-plugin.assemble")
+ id("net.runelite.runelite-gradle-plugin.index")
+ id("net.runelite.runelite-gradle-plugin.jarsign")
+}
+
+lombok.version = libs.versions.lombok.get()
+
+java {
+ withJavadocJar()
+ withSourcesJar()
+}
+
+dependencies {
+ api("net.runelite:runelite-api:${project.version}")
+ implementation(project(":jshell"))
+ runtimeOnly("net.runelite:injected-client:${project.version}")
+
+ api(libs.rl.http.api)
+ api(libs.rl.discord)
+ api(libs.rl.awt)
+ compileOnly(libs.rl.orange)
+
+ api(libs.slf4j.api)
+ api(libs.logback.classic) {
+ exclude("org.slf4j", "slf4j-api")
+ }
+ api(libs.jopt)
+ api(libs.guava) {
+ exclude("com.google.code.findbugs", "jsr305")
+ exclude("com.google.errorprone", "error_prone_annotations")
+ exclude("com.google.j2objc", "j2objc-annotations")
+ exclude("org.codehaus.mojo", "animal-sniffer-annotations")
+ }
+ api(variantOf(libs.guice.core) { classifier("no_aop") }) {
+ exclude("com.google.guava", "guava")
+ }
+ api(libs.gson)
+ api(libs.flatlaf.core)
+ implementation(libs.flatlaf.extras)
+ api(libs.commons.text)
+ api(libs.jna.core)
+ api(libs.jna.platform)
+ api(libs.findbugs)
+ compileOnly(libs.jetbrains.annotations)
+ api(libs.protobuf)
+ api(libs.lwjgl.core)
+ api(libs.lwjgl.opengl)
+ api(libs.lwjgl.opencl)
+
+ for (platform in listOf(
+ "linux",
+ "linux-arm64",
+ "macos",
+ "macos-arm64",
+ "windows-x86",
+ "windows",
+ "windows-arm64",
+ )) {
+ runtimeOnly(variantOf(libs.lwjgl.core) { classifier("natives-$platform") })
+ runtimeOnly(variantOf(libs.lwjgl.opengl) { classifier("natives-$platform") })
+ }
+
+ testImplementation(libs.junit)
+ testImplementation(libs.hamcrest)
+ testImplementation(libs.mockito)
+ testImplementation(libs.guice.testlib)
+ testImplementation(libs.guice.grapher)
+ testImplementation(libs.okhttp.mockserver)
+}
+
+val shadowJar = tasks.register("shadowJar") {
+ dependsOn(configurations.runtimeClasspath)
+ manifest {
+ attributes["Main-Class"] = "net.runelite.client.RuneLite"
+ }
+
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+
+ from(sourceSets.main.get().output)
+ from(configurations.runtimeClasspath.map { it.map { if (it.isDirectory) it else zipTree(it) } })
+
+ exclude(
+ "META-INF/INDEX.LIST",
+ "META-INF/*.SF",
+ "META-INF/*.DSA",
+ "META-INF/*.RSA",
+ "**/module-info.class"
+ )
+
+ group = BasePlugin.BUILD_GROUP
+ archiveClassifier = "shadow"
+ archiveFileName = project.name + "-" + project.version + "-shaded.jar"
+}
+tasks.assemble { dependsOn(shadowJar) }
+
+publishing {
+ publications {
+ create("runelite-client") {
+ from(components["java"])
+ artifact(shadowJar) { classifier = "shaded" }
+ }
+ }
+}
+
+val assemble = tasks.withType {
+ scriptDirectory = file("src/main/scripts")
+ outputDirectory = sourceSets.main.map { File(it.output.resourcesDir, "runelite") }
+ componentsFile = file("../runelite-api/src/main/interfaces/interfaces.toml")
+}
+
+tasks.withType {
+ archiveOverlayDirectory = assemble.single().outputDirectory
+ indexFile = archiveOverlayDirectory.file("index")
+}
+
+tasks.processResources {
+ inputs.property("projectVersion", project.version)
+
+ val commit = ByteArrayOutputStream()
+ exec {
+ commandLine("git", "rev-parse", "--short=7", "HEAD")
+ standardOutput = commit
+ }
+
+ val dirty = ByteArrayOutputStream()
+ exec {
+ commandLine("git", "status", "--short")
+ standardOutput = dirty
+ }
+
+ filesMatching("net/runelite/client/runelite.properties") {
+ filter { it.replace("\${project.version}", project.version.toString()) }
+ filter { it.replace("\${git.commit.id.abbrev}", commit.toString().trim()) }
+ filter { it.replace("\${git.dirty}", dirty.toString().isNotBlank().toString()) }
+ }
+}
+
+tasks.compileJava {
+ options.isFork = true
+}
+
+tasks.jar {
+ exclude("**/.clang-format")
+}
+
+pmd {
+ toolVersion = "7.2.0"
+ ruleSetFiles("./pmd-ruleset.xml")
+ isConsoleOutput = true
+ incrementalAnalysis = true
+ isIgnoreFailures = false
+ threads = Runtime.getRuntime().availableProcessors()
+}
+tasks.pmdMain {
+ exclude("**/RuntimeTypeAdapterFactory.java")
+ exclude("**/net/runelite/client/party/Party.java")
+}
+tasks.pmdTest { enabled = false }
+
+tasks.checkstyleMain {
+ exclude("net/runelite/client/util/RuntimeTypeAdapterFactory.java") // vendored
+ exclude("net/runelite/client/party/Party.java") // generated by protobuf
+}
+
+tasks.withType {
+ systemProperty("glslang.path", providers.gradleProperty("glslangPath").getOrElse(""))
+}
+
+tasks.javadoc {
+ title = "RuneLite Client ${project.version} API"
+}
diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml
deleted file mode 100644
index a6e3553bf20..00000000000
--- a/runelite-client/pom.xml
+++ /dev/null
@@ -1,505 +0,0 @@
-
-
-
- 4.0.0
-
-
- net.runelite
- runelite-parent
- 1.12.7-SNAPSHOT
-
-
- client
- RuneLite Client
-
-
- true
- true
- nogit
- false
- false
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- ch.qos.logback
- logback-classic
-
-
- net.sf.jopt-simple
- jopt-simple
- 5.0.1
-
-
- com.google.guava
- guava
-
-
-
- com.google.code.findbugs
- jsr305
-
-
- com.google.errorprone
- error_prone_annotations
-
-
- com.google.j2objc
- j2objc-annotations
-
-
- org.codehaus.mojo
- animal-sniffer-annotations
-
-
-
-
- com.google.inject
- guice
- no_aop
-
-
- com.google.code.gson
- gson
-
-
- net.runelite
- flatlaf
- ${flatlaf.version}
-
-
- org.projectlombok
- lombok
- provided
-
-
- org.apache.commons
- commons-text
- 1.2
-
-
- net.java.dev.jna
- jna
- 5.9.0
-
-
- net.java.dev.jna
- jna-platform
- 5.9.0
-
-
- com.google.code.findbugs
- jsr305
-
-
- org.jetbrains
- annotations
- 23.0.0
- provided
-
-
- com.google.protobuf
- protobuf-javalite
- 3.21.12
-
-
- net.runelite
- rlawt
- 1.5
-
-
-
-
- org.lwjgl
- lwjgl
-
-
- org.lwjgl
- lwjgl
- natives-linux
- runtime
-
-
- org.lwjgl
- lwjgl
- natives-macos
- runtime
-
-
- org.lwjgl
- lwjgl
- natives-macos-arm64
- runtime
-
-
- org.lwjgl
- lwjgl
- natives-windows-x86
- runtime
-
-
- org.lwjgl
- lwjgl
- natives-windows
- runtime
-
-
- org.lwjgl
- lwjgl
- natives-windows-arm64
- runtime
-
-
-
-
- org.lwjgl
- lwjgl-opengl
-
-
- org.lwjgl
- lwjgl-opengl
- natives-linux
- runtime
-
-
- org.lwjgl
- lwjgl-opengl
- natives-macos
- runtime
-
-
- org.lwjgl
- lwjgl-opengl
- natives-macos-arm64
- runtime
-
-
- org.lwjgl
- lwjgl-opengl
- natives-windows-x86
- runtime
-
-
- org.lwjgl
- lwjgl-opengl
- natives-windows
- runtime
-
-
- org.lwjgl
- lwjgl-opengl
- natives-windows-arm64
- runtime
-
-
-
-
- org.lwjgl
- lwjgl-opencl
-
-
-
- net.runelite
- runelite-api
- ${project.version}
-
-
- net.runelite
- jshell
- ${project.version}
- true
-
-
- net.runelite
- injected-client
- ${project.version}
- runtime
-
-
- net.runelite.arn
- http-api
- 1.2.21
-
-
- net.runelite
- discord
- 1.4
-
-
- net.runelite
- orange-extensions
- 1.1
- provided
-
-
-
- junit
- junit
- 4.12
- test
-
-
- org.hamcrest
- hamcrest-library
- 1.3
- test
-
-
- org.mockito
- mockito-core
- 3.1.0
- test
-
-
- com.google.inject.extensions
- guice-testlib
- test
-
-
- com.google.inject.extensions
- guice-grapher
- test
-
-
- com.squareup.okhttp3
- mockwebserver
- 3.14.9
- test
-
-
-
-
-
-
- org.lwjgl
- lwjgl-bom
- 3.3.2
- pom
- import
-
-
-
-
-
-
-
- src/main/resources
-
- logback.xml
-
- true
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
-
-
- **/.clang-format
-
-
-
-
-
- test-jar
-
-
-
-
-
- org.apache.maven.plugins
- maven-resources-plugin
- 3.0.2
-
-
- ttf
- png
- gif
- wav
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.3.0
-
-
- package
-
- shade
-
-
- ${shade.skip}
- true
- shaded
- false
-
-
- *:*
-
- META-INF/versions/**/module-info.class
-
-
-
-
-
-
-
- net.runelite.client.RuneLite
- true
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-jarsigner-plugin
- 1.4
-
-
- sign
-
- sign
-
-
-
-
- ${jarsigner.skip}
- ${jarsigner.keystore}
- ${jarsigner.alias}
- ${jarsigner.storepass}
- ${jarsigner.keypass}
-
-
-
- net.runelite
- runelite-maven-plugin
- ${project.version}
-
-
- assemble
-
- assemble
-
-
- src/main/scripts
- ${project.build.outputDirectory}/runelite
- ../runelite-api/src/main/interfaces/interfaces.toml
-
-
-
- build-index
-
- build-index
-
-
- ${project.build.outputDirectory}/runelite
- ${project.build.outputDirectory}/runelite/index
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
-
-
-
- ${project.build.sourceDirectory}
- ${project.basedir}/src/main/java11
-
-
-
-
- org.apache.maven.plugins
- maven-pmd-plugin
-
- true
- true
-
- ${basedir}/pmd-ruleset.xml
-
- false
- true
-
- **/RuntimeTypeAdapterFactory.java
- net/runelite/client/party/Party.java
-
-
-
-
-
- check
-
-
-
-
-
- pl.project13.maven
- git-commit-id-plugin
- 2.2.6
-
-
- query-git-info
-
- revision
-
-
- false
- false
-
- true
-
-
- git.commit.id.abbrev
- git.dirty
-
-
-
-
-
-
-
-
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 3d9cf223cb0..05ea29d9ac9 100644
--- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java
+++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java
@@ -32,7 +32,6 @@
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
-import java.applet.Applet;
import java.io.File;
import java.io.IOException;
import java.lang.management.ManagementFactory;
@@ -76,7 +75,6 @@
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
-import net.runelite.api.Constants;
import net.runelite.client.account.SessionManager;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.discord.DiscordService;
@@ -155,7 +153,6 @@ public class RuneLite
private Gson gson;
@Inject
- @Nullable
private Client client;
@Inject
@@ -212,7 +209,7 @@ public static void main(String[] args) throws Exception
log.error("Uncaught exception:", throwable);
if (throwable instanceof AbstractMethodError)
{
- log.error("Classes are out of date; Build with maven again.");
+ log.error("Classes are out of date; Build with Gradle again.");
}
});
@@ -304,15 +301,10 @@ public void start() throws Exception
// Start the applet
copyJagexCache();
- // Client size must be set prior to init
- var applet = (Applet) client;
- applet.setSize(Constants.GAME_FIXED_SIZE);
-
System.setProperty("jagex.disableBouncyCastle", "true");
System.setProperty("jagex.userhome", RUNELITE_DIR.getAbsolutePath());
- applet.init();
- applet.start();
+ client.initialize();
SplashScreen.stage(.57, null, "Loading configuration");
@@ -370,6 +362,8 @@ public void start() throws Exception
clientUI.show();
+ client.unblockStartup();
+
if (telemetryClient != null)
{
scheduledExecutorService.execute(() ->
diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java b/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java
index 1939ac89011..f4c7bac208d 100644
--- a/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java
+++ b/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java
@@ -32,7 +32,6 @@
import com.google.inject.binder.ConstantBindingBuilder;
import com.google.inject.name.Names;
import com.google.inject.util.Providers;
-import java.applet.Applet;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
@@ -148,13 +147,6 @@ else if (entry.getValue() instanceof Boolean)
.to(DeferredEventBus.class);
}
- @Provides
- @Singleton
- Applet provideApplet(Client client)
- {
- return (Applet) client;
- }
-
@Provides
@Singleton
Client provideClient()
diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java
index bf79e47f92c..05fd1769b09 100644
--- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java
+++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java
@@ -51,6 +51,8 @@
import net.runelite.api.Player;
import net.runelite.api.Renderable;
import net.runelite.api.Skill;
+import net.runelite.api.WorldView;
+import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.BeforeRender;
import net.runelite.api.events.FakeXpDrop;
@@ -643,12 +645,13 @@ public void error(String message, Throwable reason)
}
String coord = "unk";
- if (client.getClientThread() == Thread.currentThread())
+ Player player = client.getLocalPlayer();
+ if (player != null)
{
- Player player = client.getLocalPlayer();
- if (player != null)
+ LocalPoint lp = player.getLocalLocation();
+ if (lp.getWorldView() == WorldView.TOPLEVEL || client.getClientThread() == Thread.currentThread())
{
- WorldPoint p = WorldPoint.fromLocalInstance(client, player.getLocalLocation());
+ WorldPoint p = WorldPoint.fromLocalInstance(client, lp);
coord = String.format("%d_%d_%d_%d_%d", p.getPlane(), p.getX() / 64, p.getY() / 64, p.getX() & 63, p.getY() & 63);
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/config/RuneScapeProfileType.java b/runelite-client/src/main/java/net/runelite/client/config/RuneScapeProfileType.java
index 3978a4ae245..51cb1a9dcc3 100644
--- a/runelite-client/src/main/java/net/runelite/client/config/RuneScapeProfileType.java
+++ b/runelite-client/src/main/java/net/runelite/client/config/RuneScapeProfileType.java
@@ -46,7 +46,7 @@ public enum RuneScapeProfileType
SHATTERED_RELICS_LEAGUE,
TRAILBLAZER_RELOADED_LEAGUE,
RAGING_ECHOES_LEAGUE,
- GRID_MASTER(client -> client.getWorldType().contains(WorldType.TOURNAMENT_WORLD)),
+ GRID_MASTER,
;
private final Predicate test;
diff --git a/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java b/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java
index 22808ac867f..29703676da0 100644
--- a/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java
+++ b/runelite-client/src/main/java/net/runelite/client/hiscore/HiscoreEndpoint.java
@@ -39,7 +39,7 @@ public enum HiscoreEndpoint
ULTIMATE_IRONMAN("Ultimate Ironman", "https://services.runescape.com/m=hiscore_oldschool_ultimate/index_lite.json"),
DEADMAN("Deadman", "https://services.runescape.com/m=hiscore_oldschool_deadman/index_lite.json"),
SEASONAL("Leagues", "https://services.runescape.com/m=hiscore_oldschool_seasonal/index_lite.json"),
- TOURNAMENT("Grid Master", "https://services.runescape.com/m=hiscore_oldschool_tournament/index_lite.json"),
+ TOURNAMENT("Tournament", "https://services.runescape.com/m=hiscore_oldschool_tournament/index_lite.json"),
FRESH_START_WORLD("Fresh Start", "https://secure.runescape.com/m=hiscore_oldschool_fresh_start/index_lite.json"),
PURE("1 Defence Pure", "https://secure.runescape.com/m=hiscore_oldschool_skiller_defence/index_lite.json"),
LEVEL_3_SKILLER("Level 3 Skiller", "https://secure.runescape.com/m=hiscore_oldschool_skiller/index_lite.json");
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java
index 7b6651574b6..4ab70bd5a2d 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java
@@ -343,8 +343,9 @@ public List loadPlugins(List> plugins, BiConsumer= GameState.LOGGED_IN.getState())
+ {
+ limitsChanged();
+ }
});
}
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 89f23713da9..85cfc867201 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
@@ -189,7 +189,7 @@ public class CoordinateClue extends ClueScroll implements LocationClueScroll
CoordinateClue.builder()
.itemId(ItemID.TRAIL_CLUE_MEDIUM_SEXTANT006)
.location(new WorldPoint(2512, 3467, 0))
- .directions("Baxtorian Falls (Bring rope).")
+ .directionsProvider((plugin) -> "Baxtorian Falls" + getBaxtorianFallsDirections(plugin))
.build(),
CoordinateClue.builder()
.itemId(ItemID.TRAIL_MEDIUM_SEXTANT_EXP7)
@@ -1184,4 +1184,13 @@ private static String getHardwoodGroveCost(ClueScrollPlugin plugin)
return " An entry fee of 100 trading sticks is required.";
}
+
+ private static String getBaxtorianFallsDirections(ClueScrollPlugin plugin)
+ {
+ if (plugin.getClient().getVarbitValue(VarbitID.KANDARIN_DIARY_MEDIUM_COMPLETE) == 1)
+ {
+ return "";
+ }
+ return " (Bring rope)";
+ }
}
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 11a4fdd819a..e1b0dd33201 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
@@ -1206,7 +1206,7 @@ public class CrypticClue extends ClueScroll implements NpcClueScroll, ObjectClue
.text("Robin wishes to see your finest ranged equipment.")
.location(new WorldPoint(3673, 3492, 0))
.npc("Robin")
- .solution("Robin at the inn in Port Phasmatys. Speak to him with +181 in ranged attack bonus. Bonus granted by the toxic blowpipe is ignored.")
+ .solution("Robin at the inn in Port Phasmatys. Speak to him with +180 in ranged attack bonus. Bonus granted by the toxic blowpipe is ignored.")
.build(),
CrypticClue.builder()
.itemId(ItemID.TRAIL_CLUE_HARD_RIDDLE001)
@@ -2030,7 +2030,7 @@ public class CrypticClue extends ClueScroll implements NpcClueScroll, ObjectClue
CrypticClue.builder()
.itemId(ItemID.TRAIL_ELITE_RIDDLE_SAIL)
.text("Their bane awaits, but don't be going in there without permission.")
- .location(new WorldPoint(3120, 2424, 0))
+ .location(new WorldPoint(3176, 2478, 0))
.npc("Shellbane gryphon")
.solution("Kill the shellbane gryphon.")
.build(),
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 c3694ac87cc..6b9fb0c0a5d 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
@@ -152,6 +152,7 @@ public enum HotColdLocation
SAIL_GREAT_CONCH(MASTER, new WorldPoint(3249, 2349, 0), OCEAN, "In the south-eastern mine of the Great Conch", BRASSICAN_MAGE),
SAIL_ISLE_OF_SERPENTS(MASTER, new WorldPoint(1856, 2415, 0), OCEAN, "On the Isle of Serpents", BRASSICAN_MAGE),
SAIL_DRUMSTICK_ISLE(MASTER, new WorldPoint(2139, 3562, 0), OCEAN, "On Drumstick Isle", BRASSICAN_MAGE),
+ SAIL_BUCCANEERS_HAVEN(MASTER, new WorldPoint(2078, 3665, 0), OCEAN, "On Buccaneers' Haven", BRASSICAN_MAGE),
VARLAMORE_BAZAAR(MASTER, new WorldPoint(1680, 3107, 0), VARLAMORE, "In the centre of the Bazaar in Civitas illa Fortis.", BRASSICAN_MAGE),
VARLAMORE_LOCUS_OASIS(MASTER, new WorldPoint(1695, 2990, 0), VARLAMORE, "Amongst the trees at the Locus Oasis.", BRASSICAN_MAGE),
VARLAMORE_RAINFOREST_CENTRE(MASTER, new WorldPoint(1312, 3108, 0), VARLAMORE, "In the centre of the Tlati Rainforest.", BRASSICAN_MAGE),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java
index d761da4147f..ec426dab8fe 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java
@@ -164,8 +164,6 @@ public Dimension render(Graphics2D graphics)
private void renderTileFlags(WorldView wv, Graphics2D graphics)
{
- Scene scene = wv.getScene();
- Tile[][][] tiles = scene.getTiles();
byte[][][] settings = wv.getTileSettings();
int z = wv.getPlane();
@@ -173,13 +171,6 @@ private void renderTileFlags(WorldView wv, Graphics2D graphics)
{
for (int y = 0; y < Constants.SCENE_SIZE; ++y)
{
- Tile tile = tiles[z][x][y];
-
- if (tile == null)
- {
- continue;
- }
-
boolean isbridge = (settings[1][x][y] & Constants.TILE_FLAG_BRIDGE) != 0;
int flag = settings[z][x][y];
boolean isvisbelow = (flag & Constants.TILE_FLAG_VIS_BELOW) != 0;
@@ -203,7 +194,8 @@ private void renderTileFlags(WorldView wv, Graphics2D graphics)
s += "R";
}
- Point loc = Perspective.getCanvasTextLocation(client, graphics, tile.getLocalLocation(), s, z);
+ LocalPoint lp = new LocalPoint(x << Perspective.LOCAL_COORD_BITS, y << Perspective.LOCAL_COORD_BITS, wv);
+ Point loc = Perspective.getCanvasTextLocation(client, graphics, lp, s, z);
if (loc == null)
{
continue;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/SceneOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/SceneOverlay.java
index 06b1f7e2174..7ab426f1084 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/SceneOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/SceneOverlay.java
@@ -32,15 +32,16 @@
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.util.List;
-import java.util.stream.Stream;
import javax.inject.Inject;
import net.runelite.api.Actor;
import net.runelite.api.Client;
import net.runelite.api.Constants;
+import net.runelite.api.IndexedObjectSet;
import net.runelite.api.NPC;
import net.runelite.api.Perspective;
import net.runelite.api.Player;
import net.runelite.api.Point;
+import net.runelite.api.WorldView;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldArea;
import net.runelite.api.coords.WorldPoint;
@@ -385,10 +386,22 @@ private void renderLineOfSight(Graphics2D graphics)
private void renderInteracting(Graphics2D graphics)
{
- Stream.concat(
- client.getPlayers().stream(),
- client.getNpcs().stream()
- ).forEach(fa ->
+ WorldView tlwv = client.getTopLevelWorldView();
+ WorldView playerWv = client.getLocalPlayer().getWorldView();
+
+ renderInteracting(graphics, tlwv.players());
+ renderInteracting(graphics, tlwv.npcs());
+
+ if (playerWv != tlwv)
+ {
+ renderInteracting(graphics, playerWv.players());
+ renderInteracting(graphics, playerWv.npcs());
+ }
+ }
+
+ private void renderInteracting(Graphics2D graphics, IndexedObjectSet extends Actor> set)
+ {
+ for (var fa : set)
{
Actor ta = fa.getInteracting();
if (ta == null)
@@ -426,6 +439,6 @@ private void renderInteracting(Graphics2D graphics)
graphics.fill(ARROW_HEAD);
graphics.setTransform(ot);
- });
+ }
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
index f25ea3b84bc..e9b3a691b5a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
@@ -122,13 +122,13 @@ public void onChatMessage(ChatMessage event)
return;
}
- PendingExamine pendingExamine = pending.poll();
+ PendingExamine pendingExamine = pending.peek();
if (pendingExamine.getResponseType() != event.getType())
{
log.debug("Type mismatch for pending examine: {} != {}", pendingExamine.getResponseType(), event.getType());
- pending.clear(); // eh
return;
}
+ pending.pop();
log.debug("Got examine type {} {}: {}", pendingExamine.getResponseType(), pendingExamine.getId(), event.getMessage());
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingConfig.java
index ddc3ab8c16a..c533fc225ec 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingConfig.java
@@ -26,21 +26,10 @@
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
-import net.runelite.client.config.ConfigItem;
@ConfigGroup(FairyRingConfig.CONFIG_GROUP)
public interface FairyRingConfig extends Config
{
String CONFIG_GROUP = "fairyrings";
String CONFIG_GROUP_TAGS = "fairyringtags";
-
- @ConfigItem(
- keyName = "autoOpen",
- name = "Open search automatically",
- description = "Open the search widget every time you enter a fairy ring."
- )
- default boolean autoOpen()
- {
- return true;
- }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java
index 6aba4ce7f0d..3d43ee0379b 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java
@@ -125,11 +125,6 @@ public void onWidgetLoaded(WidgetLoaded widgetLoaded)
if (widgetLoaded.getGroupId() == InterfaceID.FAIRYRINGS_LOG)
{
setWidgetTextToDestination();
-
- if (config.autoOpen())
- {
- clientThread.invokeLater(() -> openSearch());
- }
}
}
@@ -156,9 +151,10 @@ private void setWidgetTextToDestination()
private void openSearch()
{
- var widget = client.getWidget(InterfaceID.FairyringsLog.TITLEBOX_GRAPHIC2);
+ var widget = client.getWidget(InterfaceID.FairyringsLog.SEARCH);
if (widget != null)
{
+ client.setVarcStrValue(VarClientID.MESLAYERINPUT, "");
client.createScriptEvent(widget.getOnOpListener())
.setOp(1)
.run();
@@ -193,7 +189,7 @@ else if ("fairyringFilterDbrow".equals(ev.getEventName()))
tags = ring.getTags();
}
- var filter = client.getVarcStrValue(VarClientID.MESLAYERINPUT).toLowerCase();
+ var filter = client.getVarcStrValue(VarClientID.FAIRYRINGS_SEARCHSTRING).toLowerCase();
if (code.toLowerCase().contains(filter)
|| tags != null && tags.contains(filter)
@@ -270,10 +266,7 @@ private void setTagMenuOpen(MenuEntry menuEntry)
.onDone(s ->
{
setConfigTags(code, s);
- if (config.autoOpen())
- {
- clientThread.invokeLater(this::openSearch);
- }
+ clientThread.invokeLater(() -> clientThread.invokeLater(this::openSearch));
})
.build();
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/FacePrioritySorter.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/FacePrioritySorter.java
index 62f09394dff..7ac55e8dcb8 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/FacePrioritySorter.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/FacePrioritySorter.java
@@ -33,8 +33,7 @@
class FacePrioritySorter
{
static final int[] distances;
- static final char[] distanceFaceCount;
- static final char[][] distanceToFaces;
+ static final char[] zsortHead, zsortTail, zsortNext;
private static final float[] modelProjectedX;
private static final float[] modelProjectedY;
@@ -49,16 +48,20 @@ class FacePrioritySorter
private static final int[] lt10;
static final int[][] orderedFaces;
+ private static final int[] vertexBuffer;
+
static final int MAX_VERTEX_COUNT = 6500;
- private static final int MAX_DIAMETER = 6000;
- private static final int ZSORT_GROUP_SIZE = 1024; // was 512
+ static final int MAX_FACE_COUNT = 8192; // was 6500
+ static final int MAX_DIAMETER = 6000;
private static final int MAX_FACES_PER_PRIORITY = 4000; // was 2500
+ private static final int FACE_SIZE = (VAO.VERT_SIZE >> 2) * 3;
static
{
distances = new int[MAX_VERTEX_COUNT];
- distanceFaceCount = new char[MAX_DIAMETER];
- distanceToFaces = new char[MAX_DIAMETER][ZSORT_GROUP_SIZE];
+ zsortHead = new char[MAX_DIAMETER];
+ zsortTail = new char[MAX_DIAMETER];
+ zsortNext = new char[MAX_FACE_COUNT];
modelProjectedX = new float[MAX_VERTEX_COUNT];
modelProjectedY = new float[MAX_VERTEX_COUNT];
@@ -72,6 +75,8 @@ class FacePrioritySorter
eq11 = new int[MAX_FACES_PER_PRIORITY];
lt10 = new int[12];
orderedFaces = new int[12][MAX_FACES_PER_PRIORITY];
+
+ vertexBuffer = new int[MAX_FACE_COUNT * FACE_SIZE];
}
private final SceneUploader sceneUploader;
@@ -88,14 +93,21 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
final float[] verticesY = model.getVerticesY();
final float[] verticesZ = model.getVerticesZ();
- final int faceCount = model.getFaceCount();
+ final int faceCount = Math.min(model.getFaceCount(), MAX_FACE_COUNT);
final int[] indices1 = model.getFaceIndices1();
final int[] indices2 = model.getFaceIndices2();
final int[] indices3 = model.getFaceIndices3();
+ final int[] faceColors1 = model.getFaceColors1();
+ final int[] faceColors2 = model.getFaceColors2();
final int[] faceColors3 = model.getFaceColors3();
final byte[] faceRenderPriorities = model.getFaceRenderPriorities();
+ final short[] faceTextures = model.getFaceTextures();
+
+ final byte[] transparencies = model.getFaceTransparencies();
+ final byte[] bias = model.getFaceBias();
+
float orientSine = 0;
float orientCosine = 0;
if (orientation != 0)
@@ -135,27 +147,29 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
return 0;
}
- modelProjectedX[v] = p[0];
- modelProjectedY[v] = p[1];
+ modelProjectedX[v] = p[0] / p[2];
+ modelProjectedY[v] = p[1] / p[2];
distances[v] = (int) p[2] - zero;
}
final int diameter = model.getDiameter();
final int radius = model.getRadius();
- if (diameter >= 6000)
+ if (diameter >= MAX_DIAMETER)
{
return 0;
}
- Arrays.fill(distanceFaceCount, 0, diameter, (char) 0);
+ Arrays.fill(zsortHead, 0, diameter, (char) -1);
+ Arrays.fill(zsortTail, 0, diameter, (char) -1);
- for (char i = 0; i < faceCount; ++i)
+ int minFz = diameter, maxFz = 0;
+ for (char faceIdx = 0; faceIdx < faceCount; ++faceIdx)
{
- if (faceColors3[i] != -2)
+ if (faceColors3[faceIdx] != -2)
{
- final int v1 = indices1[i];
- final int v2 = indices2[i];
- final int v3 = indices3[i];
+ final int v1 = indices1[faceIdx];
+ final int v2 = indices2[faceIdx];
+ final int v3 = indices3[faceIdx];
final float
aX = modelProjectedX[v1],
@@ -169,7 +183,80 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
{
int distance = radius + (distances[v1] + distances[v2] + distances[v3]) / 3;
assert distance >= 0 && distance < diameter;
- distanceToFaces[distance][distanceFaceCount[distance]++] = i;
+
+ if (zsortTail[distance] == (char) -1)
+ {
+ zsortHead[distance] = zsortTail[distance] = faceIdx;
+ zsortNext[faceIdx] = (char) -1;
+ }
+ else
+ {
+ char lastFace = zsortTail[distance];
+ zsortNext[lastFace] = faceIdx;
+ zsortNext[faceIdx] = (char) -1;
+ zsortTail[distance] = faceIdx;
+ }
+
+ minFz = Math.min(minFz, distance);
+ maxFz = Math.max(maxFz, distance);
+
+ sceneUploader.computeFaceUvs(model, faceIdx);
+
+ int su0 = (int) (sceneUploader.u0 * 256f);
+ int sv0 = (int) (sceneUploader.v0 * 256f);
+
+ int su1 = (int) (sceneUploader.u1 * 256f);
+ int sv1 = (int) (sceneUploader.v1 * 256f);
+
+ int su2 = (int) (sceneUploader.u2 * 256f);
+ int sv2 = (int) (sceneUploader.v2 * 256f);
+
+ int color1 = faceColors1[faceIdx];
+ int color2 = faceColors2[faceIdx];
+ int color3 = faceColors3[faceIdx];
+
+ if (color3 == -1)
+ {
+ color2 = color3 = color1;
+ }
+
+ // HSL override is not applied to textured faces
+ if (faceTextures == null || faceTextures[faceIdx] == -1)
+ {
+ if (model.getOverrideAmount() > 0)
+ {
+ color1 = SceneUploader.interpolateHSL(color1, model.getOverrideHue(), model.getOverrideSaturation(), model.getOverrideLuminance(), model.getOverrideAmount());
+ color2 = SceneUploader.interpolateHSL(color2, model.getOverrideHue(), model.getOverrideSaturation(), model.getOverrideLuminance(), model.getOverrideAmount());
+ color3 = SceneUploader.interpolateHSL(color3, model.getOverrideHue(), model.getOverrideSaturation(), model.getOverrideLuminance(), model.getOverrideAmount());
+ }
+ }
+
+ int alphaBias = 0;
+ alphaBias |= transparencies != null ? (transparencies[faceIdx] & 0xff) << 24 : 0;
+ alphaBias |= bias != null ? (bias[faceIdx] & 0xff) << 16 : 0;
+ int texture = faceTextures != null ? faceTextures[faceIdx] + 1 : 0;
+
+ int vbOff = faceIdx * FACE_SIZE;
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalX[v1]);
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalY[v1]);
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalZ[v1]);
+ vertexBuffer[vbOff++] = alphaBias | color1;
+ vertexBuffer[vbOff++] = ((su0 & 0xffff) << 16 | (texture & 0xffff));
+ vertexBuffer[vbOff++] = sv0 & 0xffff;
+
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalX[v2]);
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalY[v2]);
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalZ[v2]);
+ vertexBuffer[vbOff++] = alphaBias | color2;
+ vertexBuffer[vbOff++] = ((su1 & 0xffff) << 16 | (texture & 0xffff));
+ vertexBuffer[vbOff++] = sv1 & 0xffff;
+
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalX[v3]);
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalY[v3]);
+ vertexBuffer[vbOff++] = Float.floatToIntBits(modelLocalZ[v3]);
+ vertexBuffer[vbOff++] = alphaBias | color3;
+ vertexBuffer[vbOff++] = ((su2 & 0xffff) << 16 | (texture & 0xffff));
+ vertexBuffer[vbOff++] = sv2 & 0xffff;
}
}
}
@@ -177,18 +264,12 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
int len = 0;
if (faceRenderPriorities == null)
{
- for (int i = diameter - 1; i >= 0; --i)
+ for (int i = maxFz; i >= minFz; --i)
{
- final int cnt = distanceFaceCount[i];
- if (cnt > 0)
+ for (char face = zsortHead[i]; face != (char) -1; face = zsortNext[face])
{
- final char[] faces = distanceToFaces[i];
-
- for (int faceIdx = 0; faceIdx < cnt; ++faceIdx)
- {
- final int face = faces[faceIdx];
- len += pushFace(model, face, opaqueBuffer, alphaBuffer);
- }
+ var b = transparencies != null && transparencies[face] != 0 ? alphaBuffer : opaqueBuffer;
+ b.put(vertexBuffer, face * FACE_SIZE, FACE_SIZE);
}
}
}
@@ -197,32 +278,25 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
Arrays.fill(numOfPriority, 0);
Arrays.fill(lt10, 0);
- for (int i = diameter - 1; i >= 0; --i)
+ for (int i = maxFz; i >= minFz; --i)
{
- final int cnt = distanceFaceCount[i];
- if (cnt > 0)
+ for (char face = zsortHead[i]; face != (char) -1; face = zsortNext[face])
{
- final char[] faces = distanceToFaces[i];
+ final byte pri = faceRenderPriorities[face];
+ final int distIdx = numOfPriority[pri]++;
- for (int faceIdx = 0; faceIdx < cnt; ++faceIdx)
+ orderedFaces[pri][distIdx] = face;
+ if (pri < 10)
{
- final int face = faces[faceIdx];
- final byte pri = faceRenderPriorities[face];
- final int distIdx = numOfPriority[pri]++;
-
- orderedFaces[pri][distIdx] = face;
- if (pri < 10)
- {
- lt10[pri] += i;
- }
- else if (pri == 10)
- {
- eq10[distIdx] = i;
- }
- else
- {
- eq11[distIdx] = i;
- }
+ lt10[pri] += i;
+ }
+ else if (pri == 10)
+ {
+ eq10[distIdx] = i;
+ }
+ else
+ {
+ eq11[distIdx] = i;
}
}
}
@@ -272,7 +346,8 @@ else if (pri == 10)
while (pri == 0 && currFaceDistance > avg12)
{
final int face = dynFaces[drawnFaces++];
- len += pushFace(model, face, opaqueBuffer, alphaBuffer);
+ var b = transparencies != null && transparencies[face] != 0 ? alphaBuffer : opaqueBuffer;
+ b.put(vertexBuffer, face * FACE_SIZE, FACE_SIZE);
if (drawnFaces == numDynFaces && dynFaces != orderedFaces[11])
{
@@ -295,7 +370,8 @@ else if (pri == 10)
while (pri == 3 && currFaceDistance > avg34)
{
final int face = dynFaces[drawnFaces++];
- len += pushFace(model, face, opaqueBuffer, alphaBuffer);
+ var b = transparencies != null && transparencies[face] != 0 ? alphaBuffer : opaqueBuffer;
+ b.put(vertexBuffer, face * FACE_SIZE, FACE_SIZE);
if (drawnFaces == numDynFaces && dynFaces != orderedFaces[11])
{
@@ -318,7 +394,8 @@ else if (pri == 10)
while (pri == 5 && currFaceDistance > avg68)
{
final int face = dynFaces[drawnFaces++];
- len += pushFace(model, face, opaqueBuffer, alphaBuffer);
+ var b = transparencies != null && transparencies[face] != 0 ? alphaBuffer : opaqueBuffer;
+ b.put(vertexBuffer, face * FACE_SIZE, FACE_SIZE);
if (drawnFaces == numDynFaces && dynFaces != orderedFaces[11])
{
@@ -344,14 +421,16 @@ else if (pri == 10)
for (int faceIdx = 0; faceIdx < priNum; ++faceIdx)
{
final int face = priFaces[faceIdx];
- len += pushFace(model, face, opaqueBuffer, alphaBuffer);
+ var b = transparencies != null && transparencies[face] != 0 ? alphaBuffer : opaqueBuffer;
+ b.put(vertexBuffer, face * FACE_SIZE, FACE_SIZE);
}
}
while (currFaceDistance != -1000)
{
final int face = dynFaces[drawnFaces++];
- len += pushFace(model, face, opaqueBuffer, alphaBuffer);
+ var b = transparencies != null && transparencies[face] != 0 ? alphaBuffer : opaqueBuffer;
+ b.put(vertexBuffer, face * FACE_SIZE, FACE_SIZE);
if (drawnFaces == numDynFaces && dynFaces != orderedFaces[11])
{
@@ -374,92 +453,4 @@ else if (pri == 10)
return len;
}
-
- private int pushFace(Model model, int face, IntBuffer opaqueBuffer, IntBuffer alphaBuffer)
- {
- final int[] indices1 = model.getFaceIndices1();
- final int[] indices2 = model.getFaceIndices2();
- final int[] indices3 = model.getFaceIndices3();
-
- final int[] faceColors1 = model.getFaceColors1();
- final int[] faceColors2 = model.getFaceColors2();
- final int[] faceColors3 = model.getFaceColors3();
-
- final byte overrideAmount = model.getOverrideAmount();
- final byte overrideHue = model.getOverrideHue();
- final byte overrideSat = model.getOverrideSaturation();
- final byte overrideLum = model.getOverrideLuminance();
-
- final short[] faceTextures = model.getFaceTextures();
-
- final byte[] transparencies = model.getFaceTransparencies();
- final byte[] bias = model.getFaceBias();
-
- final int triangleA = indices1[face];
- final int triangleB = indices2[face];
- final int triangleC = indices3[face];
-
- int color1 = faceColors1[face];
- int color2 = faceColors2[face];
- int color3 = faceColors3[face];
-
- boolean alpha = (transparencies != null && transparencies[face] != 0);
-
- if (color3 == -1)
- {
- color2 = color3 = color1;
- }
-
- // HSL override is not applied to textured faces
- if (faceTextures == null || faceTextures[face] == -1)
- {
- if (overrideAmount > 0)
- {
- color1 = SceneUploader.interpolateHSL(color1, overrideHue, overrideSat, overrideLum, overrideAmount);
- color2 = SceneUploader.interpolateHSL(color2, overrideHue, overrideSat, overrideLum, overrideAmount);
- color3 = SceneUploader.interpolateHSL(color3, overrideHue, overrideSat, overrideLum, overrideAmount);
- }
- }
-
- float vx1 = modelLocalX[triangleA];
- float vy1 = modelLocalY[triangleA];
- float vz1 = modelLocalZ[triangleA];
-
- float vx2 = modelLocalX[triangleB];
- float vy2 = modelLocalY[triangleB];
- float vz2 = modelLocalZ[triangleB];
-
- float vx3 = modelLocalX[triangleC];
- float vy3 = modelLocalY[triangleC];
- float vz3 = modelLocalZ[triangleC];
-
- sceneUploader.computeFaceUvs(model, face);
-
- int su0 = (int) (sceneUploader.u0 * 256f);
- int sv0 = (int) (sceneUploader.v0 * 256f);
-
- int su1 = (int) (sceneUploader.u1 * 256f);
- int sv1 = (int) (sceneUploader.v1 * 256f);
-
- int su2 = (int) (sceneUploader.u2 * 256f);
- int sv2 = (int) (sceneUploader.v2 * 256f);
-
- int alphaBias = 0;
- alphaBias |= transparencies != null ? (transparencies[face] & 0xff) << 24 : 0;
- alphaBias |= bias != null ? (bias[face] & 0xff) << 16 : 0;
- int texture = faceTextures != null ? faceTextures[face] + 1 : 0;
-
- var vb = alpha ? alphaBuffer : opaqueBuffer;
-
- SceneUploader.putfff4(vb, vx1, vy1, vz1, alphaBias | color1);
- SceneUploader.put2222(vb, texture, su0, sv0, 0);
-
- SceneUploader.putfff4(vb, vx2, vy2, vz2, alphaBias | color2);
- SceneUploader.put2222(vb, texture, su1, sv1, 0);
-
- SceneUploader.putfff4(vb, vx3, vy3, vz3, alphaBias | color3);
- SceneUploader.put2222(vb, texture, su2, sv2, 0);
-
- return 3;
- }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java
index 24c67b947dc..f9a18cd3c85 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java
@@ -52,7 +52,6 @@
import net.runelite.api.GameState;
import net.runelite.api.Model;
import net.runelite.api.Perspective;
-import net.runelite.api.Player;
import net.runelite.api.Projection;
import net.runelite.api.Renderable;
import net.runelite.api.Scene;
@@ -176,10 +175,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private GpuFloatBuffer uniformBuffer;
- private int cameraX, cameraY, cameraZ;
private int cameraYaw, cameraPitch;
- private int minLevel, level, maxLevel;
- private Set hideRoofIds;
private VAOList vaoO;
private VAOList vaoA;
@@ -193,6 +189,10 @@ static class SceneContext
final int sizeX, sizeZ;
Zone[][] zones;
+ private int cameraX, cameraY, cameraZ;
+ private int minLevel, level, maxLevel;
+ private Set hideRoofIds;
+
SceneContext(int sizeX, int sizeZ)
{
this.sizeX = sizeX;
@@ -803,18 +803,22 @@ public void preSceneDraw(Scene scene,
float cameraX, float cameraY, float cameraZ, float cameraPitch, float cameraYaw,
int minLevel, int level, int maxLevel, Set hideRoofIds)
{
- this.cameraX = (int) cameraX;
- this.cameraY = (int) cameraY;
- this.cameraZ = (int) cameraZ;
- this.cameraYaw = client.getCameraYaw();
- this.cameraPitch = client.getCameraPitch();
- this.minLevel = minLevel;
- this.level = level;
- this.maxLevel = maxLevel;
- this.hideRoofIds = hideRoofIds;
+ SceneContext ctx = context(scene);
+ if (ctx != null)
+ {
+ ctx.cameraX = (int) cameraX;
+ ctx.cameraY = (int) cameraY;
+ ctx.cameraZ = (int) cameraZ;
+ ctx.minLevel = minLevel;
+ ctx.level = level;
+ ctx.maxLevel = maxLevel;
+ ctx.hideRoofIds = hideRoofIds;
+ }
if (scene.getWorldViewId() == WorldView.TOPLEVEL)
{
+ this.cameraYaw = client.getCameraYaw();
+ this.cameraPitch = client.getCameraPitch();
preSceneDrawToplevel(scene, cameraX, cameraY, cameraZ, cameraPitch, cameraYaw);
}
else
@@ -1050,7 +1054,7 @@ public void drawZoneOpaque(Projection entityProjection, Scene scene, int zx, int
}
int offset = scene.getWorldViewId() == -1 ? (SCENE_OFFSET >> 3) : 0;
- z.renderOpaque(zx - offset, zz - offset, minLevel, level, maxLevel, hideRoofIds);
+ z.renderOpaque(zx - offset, zz - offset, ctx.minLevel, ctx.level, ctx.maxLevel, ctx.hideRoofIds);
checkGLErrors();
}
@@ -1060,8 +1064,6 @@ public void drawZoneOpaque(Projection entityProjection, Scene scene, int zx, int
@Override
public void drawZoneAlpha(Projection entityProjection, Scene scene, int level, int zx, int zz)
{
- updateEntityProjection(entityProjection);
-
SceneContext ctx = context(scene);
if (ctx == null)
{
@@ -1077,18 +1079,21 @@ public void drawZoneAlpha(Projection entityProjection, Scene scene, int level, i
return;
}
+ updateEntityProjection(entityProjection);
+ glUniform4i(uniEntityTint, scene.getOverrideHue(), scene.getOverrideSaturation(), scene.getOverrideLuminance(), scene.getOverrideAmount());
+
int offset = scene.getWorldViewId() == -1 ? (SCENE_OFFSET >> 3) : 0;
- int dx = cameraX - ((zx - offset) << 10);
- int dz = cameraZ - ((zz - offset) << 10);
+ int dx = ctx.cameraX - ((zx - offset) << 10);
+ int dz = ctx.cameraZ - ((zz - offset) << 10);
boolean close = dx * dx + dz * dz < ALPHA_ZSORT_CLOSE * ALPHA_ZSORT_CLOSE;
if (level == 0)
{
- z.alphaSort(zx - offset, zz - offset, cameraX, cameraY, cameraZ);
- z.multizoneLocs(scene, zx - offset, zz - offset, cameraX, cameraZ, ctx.zones);
+ z.alphaSort(zx - offset, zz - offset, ctx.cameraX, ctx.cameraY, ctx.cameraZ);
+ z.multizoneLocs(scene, zx - offset, zz - offset, ctx.cameraX, ctx.cameraZ, ctx.zones);
}
- z.renderAlpha(zx - offset, zz - offset, cameraYaw, cameraPitch, minLevel, this.level, maxLevel, level, hideRoofIds, !close);
+ z.renderAlpha(zx - offset, zz - offset, cameraYaw, cameraPitch, ctx.minLevel, ctx.level, ctx.maxLevel, level, ctx.hideRoofIds, !close || (scene.getOverrideAmount() > 0));
checkGLErrors();
}
@@ -1202,7 +1207,7 @@ public void drawDynamic(Projection worldProjection, Scene scene, TileObject tile
// level is checked prior to this callback being run, in order to cull clickboxes, but
// tileObject.getPlane()>maxLevel if visbelow is set - lower the object to the max level
- int plane = Math.min(maxLevel, tileObject.getPlane());
+ int plane = Math.min(ctx.maxLevel, tileObject.getPlane());
// renderable modelheight is typically not set here because DynamicObject doesn't compute it on the returned model
zone.addTempAlphaModel(a.vao, start, end, plane, x & 1023, y, z & 1023);
}
@@ -1225,12 +1230,13 @@ public void drawTemp(Projection worldProjection, Scene scene, GameObject gameObj
Renderable renderable = gameObject.getRenderable();
int size = m.getFaceCount() * 3 * VAO.VERT_SIZE;
- if (renderable instanceof Player || m.getFaceTransparencies() != null)
+ int renderMode = renderable.getRenderMode();
+ if (renderMode == Renderable.RENDERMODE_SORTED_NO_DEPTH || m.getFaceTransparencies() != null)
{
// opaque player faces have their own vao and are drawn in a separate pass from normal opaque faces
// because they are not depth tested. transparent player faces don't need their own vao because normal
// transparent faces are already not depth tested
- VAO o = renderable instanceof Player ? vaoPO.get(size) : vaoO.get(size);
+ VAO o = renderMode == Renderable.RENDERMODE_SORTED_NO_DEPTH ? vaoPO.get(size) : vaoO.get(size);
VAO a = vaoA.get(size);
int start = a.vbo.vb.position();
@@ -1251,7 +1257,8 @@ public void drawTemp(Projection worldProjection, Scene scene, GameObject gameObj
int zx = (gameObject.getX() >> 10) + offset;
int zz = (gameObject.getY() >> 10) + offset;
Zone zone = ctx.zones[zx][zz];
- zone.addTempAlphaModel(a.vao, start, end, gameObject.getPlane(), x & 1023, y - renderable.getModelHeight() /* to render players over locs */, z & 1023);
+ int plane = Math.min(ctx.maxLevel, gameObject.getPlane());
+ zone.addTempAlphaModel(a.vao, start, end, plane, x & 1023, y - renderable.getModelHeight() /* to render players over locs */, z & 1023);
}
}
else
@@ -1596,7 +1603,39 @@ public void loadScene(WorldView worldView, Scene scene)
assert scene.getWorldViewId() == -1;
if (nextZones != null)
{
- throw new RuntimeException("Double zone load!");
+ log.debug("Double zone load!");
+ // The previous scene load just gets dropped, this is uncommon and requires a back to back map build packet
+ // while having the first load take more than a full server cycle to complete
+ CountDownLatch latch = new CountDownLatch(1);
+ clientThread.invoke(() ->
+ {
+ for (int x = 0; x < NUM_ZONES; ++x)
+ {
+ for (int z = 0; z < NUM_ZONES; ++z)
+ {
+ Zone zone = nextZones[x][z];
+ assert !zone.cull;
+ // anything initialized is a reused zone and so shouldn't be freed
+ if (!zone.initialized)
+ {
+ zone.unmap();
+ zone.initialized = true;
+ zone.free();
+ }
+ }
+ }
+ latch.countDown();
+ });
+ try
+ {
+ latch.await();
+ }
+ catch (InterruptedException e)
+ {
+ throw new RuntimeException(e);
+ }
+ nextZones = null;
+ nextRoofChanges = null;
}
SceneContext ctx = root;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/SceneUploader.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/SceneUploader.java
index 65c90c91eda..1989414d130 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/SceneUploader.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/SceneUploader.java
@@ -322,7 +322,7 @@ private int uploadZoneTile(Scene scene, Zone zone, Tile t, GpuIntBuffer vertexBu
uploadZoneRenderable(renderable, zone, 0, decorativeObject.getX() + decorativeObject.getXOffset(), decorativeObject.getZ(), decorativeObject.getY() + decorativeObject.getYOffset(), -1, -1, -1, -1, decorativeObject.getId(), vertexBuffer, ab);
Renderable renderable2 = decorativeObject.getRenderable2();
- uploadZoneRenderable(renderable2, zone, 0, decorativeObject.getX(), decorativeObject.getZ(), decorativeObject.getY(), -1, -1, -1, -1, decorativeObject.getId(), vertexBuffer, ab);
+ uploadZoneRenderable(renderable2, zone, 0, decorativeObject.getX() + decorativeObject.getXOffset2(), decorativeObject.getZ(), decorativeObject.getY() + decorativeObject.getYOffset2(), -1, -1, -1, -1, decorativeObject.getId(), vertexBuffer, ab);
}
GroundObject groundObject = t.getGroundObject();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/VBO.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/VBO.java
index 8e0aa13f361..c20fc96c58c 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/VBO.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/VBO.java
@@ -73,7 +73,8 @@ void map()
buffer = glMapBufferRange(GL_ARRAY_BUFFER, 0, size, GL_MAP_WRITE_BIT | (usage == GL_STATIC_DRAW ? 0 : (GL_MAP_INVALIDATE_BUFFER_BIT | GL_MAP_FLUSH_EXPLICIT_BIT)), buffer);
if (buffer == null)
{
- throw new RuntimeException("unable to map GL buffer " + bufId + " size " + size);
+ int err = glGetError();
+ throw new RuntimeException("unable to map GL buffer (bufId: " + bufId + " size: " + size + " renderer: " + glGetString(GL_RENDERER) + " version: " + glGetString(GL_VERSION) + " err: " + err + ")");
}
this.vb = buffer.asIntBuffer();
glBindBuffer(GL_ARRAY_BUFFER, 0);
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Zone.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Zone.java
index 326212b1524..5bc9bed8e19 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Zone.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Zone.java
@@ -38,8 +38,10 @@
import net.runelite.api.Model;
import net.runelite.api.Perspective;
import net.runelite.api.Scene;
-import static net.runelite.client.plugins.gpu.FacePrioritySorter.distanceFaceCount;
-import static net.runelite.client.plugins.gpu.FacePrioritySorter.distanceToFaces;
+import static net.runelite.client.plugins.gpu.FacePrioritySorter.MAX_DIAMETER;
+import static net.runelite.client.plugins.gpu.FacePrioritySorter.zsortHead;
+import static net.runelite.client.plugins.gpu.FacePrioritySorter.zsortNext;
+import static net.runelite.client.plugins.gpu.FacePrioritySorter.zsortTail;
import static net.runelite.client.plugins.gpu.GpuPlugin.uniBase;
import org.lwjgl.BufferUtils;
import static org.lwjgl.opengl.GL33C.*;
@@ -311,7 +313,6 @@ static class AlphaModel
// only set for static geometry as they require sorting
int radius;
int[] packedFaces;
- byte[] renderPriorities;
static final int SKIP = 1; // temporary model is in a closer zone
static final int TEMP = 2; // temporary model added to a closer zone
@@ -420,7 +421,6 @@ void addAlphaModel(int vao, Model model, int startpos, int endpos, int x, int y,
assert radius >= 0;
- m.renderPriorities = model.getFaceRenderPriorities();
m.radius = 2 + (int) Math.sqrt(radius);
assert packedFaces.length > 0;
@@ -460,7 +460,6 @@ void removeTemp()
{
alphaModels.remove(i);
m.packedFaces = null;
- m.renderPriorities = null;
modelCache.add(m);
}
m.flags &= ~AlphaModel.SKIP;
@@ -494,19 +493,38 @@ static void freeBuffer()
elementBufferId = 0;
}
+ static class AlphaModelComparator implements Comparator
+ {
+ int zx, zz;
+ int cx, cy, cz;
+
+ @Override
+ public int compare(AlphaModel o1, AlphaModel o2)
+ {
+ return Integer.compare(z(o2), z(o1));
+ }
+
+ private int z(AlphaModel m)
+ {
+ final int mx = (m.x + ((zx - m.zofx) << 10));
+ final int mz = (m.z + ((zz - m.zofz) << 10));
+ return (mx - cx) * (mx - cx) +
+ (m.y - cy) * (m.y - cy) +
+ (mz - cz) * (mz - cz);
+ }
+ }
+
+ private static final AlphaModelComparator alphaModelComparator = new AlphaModelComparator();
+
void alphaSort(int zx, int zz, int cx, int cy, int cz)
{
- alphaModels.sort(Comparator.comparingInt((AlphaModel m) ->
- {
- final int mx = (m.x + ((zx - m.zofx) << 10));
- final int mz = (m.z + ((zz - m.zofz) << 10));
- return (mx - cx) * (mx - cx) +
- (m.y - cy) * (m.y - cy) +
- (mz - cz) * (mz - cz);
- }
- )
- .reversed()
- );
+ alphaModelComparator.zx = zx;
+ alphaModelComparator.zz = zz;
+ alphaModelComparator.cx = cx;
+ alphaModelComparator.cy = cy;
+ alphaModelComparator.cz = cz;
+
+ alphaModels.sort(alphaModelComparator);
}
void renderAlpha(int zx, int zz, int cyaw, int cpitch, int minLevel, int currentLevel, int maxLevel, int level, Set hiddenRoofIds, boolean useStaticUnsorted)
@@ -575,14 +593,15 @@ void renderAlpha(int zx, int zz, int cyaw, int cpitch, int minLevel, int current
final int radius = m.radius;
int diameter = 1 + radius * 2;
final int[] packedFaces = m.packedFaces;
- if (diameter >= 6000)
+ if (diameter >= MAX_DIAMETER)
{
continue;
}
- Arrays.fill(distanceFaceCount, 0, diameter, (char) 0);
+ Arrays.fill(zsortHead, 0, diameter, (char) -1);
+ Arrays.fill(zsortTail, 0, diameter, (char) -1);
- for (int i = 0; i < packedFaces.length; ++i)
+ for (char i = 0; i < packedFaces.length; ++i)
{
int pack = packedFaces[i];
@@ -595,7 +614,19 @@ void renderAlpha(int zx, int zz, int cyaw, int cpitch, int minLevel, int current
fz += radius;
assert fz >= 0 && fz < diameter : fz;
- distanceToFaces[fz][distanceFaceCount[fz]++] = (char) i;
+
+ if (zsortTail[fz] == (char) -1)
+ {
+ zsortHead[fz] = zsortTail[fz] = i;
+ zsortNext[i] = (char) -1;
+ }
+ else
+ {
+ char lastFace = zsortTail[fz];
+ zsortNext[lastFace] = i;
+ zsortNext[i] = (char) -1;
+ zsortTail[fz] = i;
+ }
}
if (packedFaces.length * 3 > alphaElements.remaining())
@@ -609,68 +640,16 @@ void renderAlpha(int zx, int zz, int cyaw, int cpitch, int minLevel, int current
flush();
}
- byte[] faceRenderPriorities = m.renderPriorities;
final int start = m.startpos / (VERT_SIZE >> 2); // ints to verts
- if (faceRenderPriorities == null)
+ for (int i = diameter - 1; i >= 0; --i)
{
- for (int i = diameter - 1; i >= 0; --i)
+ for (char face = zsortHead[i]; face != (char) -1; face = zsortNext[face])
{
- final int cnt = distanceFaceCount[i];
- if (cnt > 0)
- {
- final char[] faces = distanceToFaces[i];
-
- for (int faceIdx = 0; faceIdx < cnt; ++faceIdx)
- {
- int face = faces[faceIdx];
- face *= 3;
- face += start;
- alphaElements.put(face++);
- alphaElements.put(face++);
- alphaElements.put(face++);
- }
- }
- }
- }
- else
- {
- // Vanilla uses priority draw order for alpha faces and not depth draw order
- // And since we don't have the full model here, only the alpha faces, we can't compute the
- // 10/11 insertion points either. Just ignore those since I think they are mostly for players,
- // which are rendered differently anyway.
- Arrays.fill(numOfPriority, 0);
-
- for (int i = diameter - 1; i >= 0; --i)
- {
- final int cnt = distanceFaceCount[i];
- if (cnt > 0)
- {
- final char[] faces = distanceToFaces[i];
-
- for (int faceIdx = 0; faceIdx < cnt; ++faceIdx)
- {
- final int face = faces[faceIdx];
- final byte pri = faceRenderPriorities[face];
- final int distIdx = numOfPriority[pri]++;
-
- orderedFaces[pri][distIdx] = face;
- }
- }
- }
-
- for (int pri = 0; pri < 12; ++pri)
- {
- final int priNum = numOfPriority[pri];
- final int[] priFaces = orderedFaces[pri];
-
- for (int faceIdx = 0; faceIdx < priNum; ++faceIdx)
- {
- final int face = priFaces[faceIdx];
- int idx = face * 3 + start;
- alphaElements.put(idx++);
- alphaElements.put(idx++);
- alphaElements.put(idx++);
- }
+ int faceIdx = face * 3;
+ faceIdx += start;
+ alphaElements.put(faceIdx++);
+ alphaElements.put(faceIdx++);
+ alphaElements.put(faceIdx++);
}
}
}
@@ -786,7 +765,6 @@ void multizoneLocs(Scene scene, int zx, int zz, int cx, int cz, Zone[][] zones)
m2.zofz = (byte) (closestZoneZ - zz);
m2.packedFaces = m.packedFaces;
- m2.renderPriorities = m.renderPriorities;
m2.radius = m.radius;
m2.flags = AlphaModel.TEMP;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java
index 5e7115e3f2d..e04d3dc41fb 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java
@@ -216,6 +216,7 @@ public void onAnimationChanged(AnimationChanged event)
case AnimationID.HUMAN_FIRECOOKING:
case AnimationID.HUMAN_COOKING:
case AnimationID.HUMAN_MAKE_WINE:
+ case AnimationID.HUMAN_CUT_FOOD:
/* Crafting(Gem Cutting, Glassblowing, Spinning, Weaving, Battlestaves, Pottery) */
case AnimationID.HUMAN_OPALCUTTING:
case AnimationID.HUMAN_JADECUTTING:
@@ -389,6 +390,7 @@ public void onAnimationChanged(AnimationChanged event)
case AnimationID.HUMAN_MACHINERY_ALCHEMY01_ALEMBIC01_INTERACT01:
case AnimationID.HUMAN_MACHINERY_ALCHEMY01_AGITATOR01_INTERACT01:
case AnimationID.HUMAN_ALCHEMY01_MILL01_INTERACT01:
+ case AnimationID.HUMAN_HERBING_VIAL_RESTART:
/* Magic */
case AnimationID.HUMAN_CASTCHARGEORB:
case AnimationID.DREAM_PLAYER_MAKE_PLANK_SPELL:
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java
index 213ff355fe7..2f3b6c3bf44 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java
@@ -133,6 +133,10 @@ enum ItemWithCharge
BELLOWS3(BELLOWS, ItemID.FILLED_OGRE_BELLOW3, 3),
BLACK_WARLOCK_MIX1(POTION, ItemID.HUNTER_MIX_WARLOCK_1DOSE, 1),
BLACK_WARLOCK_MIX2(POTION, ItemID.HUNTER_MIX_WARLOCK_2DOSE, 2),
+ BLIGHTED_OVERLOAD1(POTION, ItemID.DEADMAN1DOSEOVERLOAD, 1),
+ BLIGHTED_OVERLOAD2(POTION, ItemID.DEADMAN2DOSEOVERLOAD, 2),
+ BLIGHTED_OVERLOAD3(POTION, ItemID.DEADMAN3DOSEOVERLOAD, 3),
+ BLIGHTED_OVERLOAD4(POTION, ItemID.DEADMAN4DOSEOVERLOAD, 4),
BLIGHTED_SUPER_REST1(POTION, ItemID.BLIGHTED_1DOSE2RESTORE, 1),
BLIGHTED_SUPER_REST2(POTION, ItemID.BLIGHTED_2DOSE2RESTORE, 2),
BLIGHTED_SUPER_REST3(POTION, ItemID.BLIGHTED_3DOSE2RESTORE, 3),
@@ -640,6 +644,30 @@ enum ItemWithCharge
PRAYER_REGENERATION2(POTION, ItemID._2DOSE1PRAYER_REGENERATION, 2),
PRAYER_REGENERATION3(POTION, ItemID._3DOSE1PRAYER_REGENERATION, 3),
PRAYER_REGENERATION4(POTION, ItemID._4DOSE1PRAYER_REGENERATION, 4),
+ ARMA_BREW1(POTION, ItemID._1DOSEARMADYLBREW, 1),
+ ARMA_BREW2(POTION, ItemID._2DOSEARMADYLBREW, 2),
+ ARMA_BREW3(POTION, ItemID._3DOSEARMADYLBREW, 3),
+ ARMA_BREW4(POTION, ItemID._4DOSEARMADYLBREW, 4),
+ EXTENDED_STAM1(POTION, ItemID._1DOSE2STAMINA, 1),
+ EXTENDED_STAM2(POTION, ItemID._2DOSE2STAMINA, 2),
+ EXTENDED_STAM3(POTION, ItemID._3DOSE2STAMINA, 3),
+ EXTENDED_STAM4(POTION, ItemID._4DOSE2STAMINA, 4),
+ EXTREME_ENERGY1(POTION, ItemID._1DOSE3ENERGY, 1),
+ EXTREME_ENERGY2(POTION, ItemID._2DOSE3ENERGY, 2),
+ EXTREME_ENERGY3(POTION, ItemID._3DOSE3ENERGY, 3),
+ EXTREME_ENERGY4(POTION, ItemID._4DOSE3ENERGY, 4),
+ HAEMOSTATIC_DRESS1(POTION, ItemID._1DOSEHAEMOSTATICDRESSING, 1),
+ HAEMOSTATIC_DRESS2(POTION, ItemID._2DOSEHAEMOSTATICDRESSING, 2),
+ HAEMOSTATIC_DRESS3(POTION, ItemID._3DOSEHAEMOSTATICDRESSING, 3),
+ HAEMOSTATIC_DRESS4(POTION, ItemID._4DOSEHAEMOSTATICDRESSING, 4),
+ SUPER_FISHING1(POTION, ItemID._1DOSE2FISHERSPOTION, 1),
+ SUPER_FISHING2(POTION, ItemID._2DOSE2FISHERSPOTION, 2),
+ SUPER_FISHING3(POTION, ItemID._3DOSE2FISHERSPOTION, 3),
+ SUPER_FISHING4(POTION, ItemID._4DOSE2FISHERSPOTION, 4),
+ SUPER_HUNTER1(POTION, ItemID._1DOSE2HUNTING, 1),
+ SUPER_HUNTER2(POTION, ItemID._2DOSE2HUNTING, 2),
+ SUPER_HUNTER3(POTION, ItemID._3DOSE2HUNTING, 3),
+ SUPER_HUNTER4(POTION, ItemID._4DOSE2HUNTING, 4),
;
private final ItemChargeType type;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java
index fee3fe1bcb6..93afd60bf68 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentification.java
@@ -75,6 +75,9 @@ enum ItemIdentification
REDWOOD_SEED(Type.SEED_TREE, "Red", "RED", ItemID.REDWOOD_TREE_SEED),
TEAK_SEED(Type.SEED_TREE, "Teak", "TEAK", ItemID.TEAK_SEED),
MAHOGANY_SEED(Type.SEED_TREE, "Mahog", "MAH", ItemID.MAHOGANY_SEED),
+ CAMPHOR_SEED(Type.SEED_TREE, "Camphor", "CAM", ItemID.CAMPHOR_SEED),
+ IRONWOOD_SEED(Type.SEED_TREE, "Iron", "IRON", ItemID.IRONWOOD_SEED),
+ ROSEWOOD_SEED(Type.SEED_TREE, "Rose", "ROSE", ItemID.ROSEWOOD_SEED),
CRYSTAL_ACORN(Type.SEED_TREE, "Crystal", "CRY", ItemID.CRYSTAL_TREE_SEED),
CELASTRUS_SEED(Type.SEED_TREE, "Celas", "CEL", ItemID.CELASTRUS_TREE_SEED),
SPIRIT_SEED(Type.SEED_TREE, "Spirit", "SPI", ItemID.SPIRIT_TREE_SEED),
@@ -110,8 +113,15 @@ enum ItemIdentification
ASGARNIAN_SEED(Type.HOPS_SEED, "Asgar", "ASG", ItemID.ASGARNIAN_HOP_SEED),
JUTE_SEED(Type.HOPS_SEED, "Jute", "JUTE", ItemID.JUTE_SEED),
YANILLIAN_SEED(Type.HOPS_SEED, "Yani", "YAN", ItemID.YANILLIAN_HOP_SEED),
+ FLAX_SEED(Type.HOPS_SEED, "Flax", "FLAX", ItemID.FLAX_SEED),
KRANDORIAN_SEED(Type.HOPS_SEED, "Krand", "KRA", ItemID.KRANDORIAN_HOP_SEED),
WILDBLOOD_SEED(Type.HOPS_SEED, "Wild.B", "WILD", ItemID.WILDBLOOD_HOP_SEED),
+ HEMP_SEED(Type.HOPS_SEED, "Hemp", "HEMP", ItemID.HEMP_SEED),
+ COTTON_SEED(Type.HOPS_SEED, "Cotton", "COT", ItemID.COTTON_SEED),
+
+ ELKHORN_FRAG(Type.CORAL_FRAG, "Elk", "ELK", ItemID.CORAL_ELKHORN_FRAG),
+ PILLAR_FRAG(Type.CORAL_FRAG, "Pillar", "PIL", ItemID.CORAL_PILLAR_FRAG),
+ UMBRAL_FRAG(Type.CORAL_FRAG, "Umbral", "UMB", ItemID.CORAL_UMBRAL_FRAG),
//Sacks
SACK(Type.SACK, "Empty", "EMP", ItemID.SACK_EMPTY),
@@ -156,14 +166,18 @@ enum ItemIdentification
OAK_LOG(Type.LOGS, "Oak", "OAK", ItemID.OAK_LOGS),
WILLOW_LOG(Type.LOGS, "Willow", "WIL", ItemID.WILLOW_LOGS),
TEAK_LOG(Type.LOGS, "Teak", "TEAK", ItemID.TEAK_LOGS),
+ JATOBA_LOG(Type.LOGS, "Jatoba", "JAT", ItemID.JATOBA_LOGS),
JUNIPER_LOG(Type.LOGS, "Juniper", "JUN", ItemID.JUNIPER_LOGS),
MAPLE_LOG(Type.LOGS, "Maple", "MAP", ItemID.MAPLE_LOGS),
MAHOGANY_LOG(Type.LOGS, "Mahog", "MAH", ItemID.MAHOGANY_LOGS),
ARCTIC_PINE_LOG(Type.LOGS, "Arctic", "ARC", ItemID.ARCTIC_PINE_LOG),
YEW_LOG(Type.LOGS, "Yew", "YEW", ItemID.YEW_LOGS),
BLISTERWOOD_LOG(Type.LOGS, "Blister", "BLI", ItemID.BLISTERWOOD_LOGS),
+ CAMPHOR_LOG(Type.LOGS, "Camphor", "CAM", ItemID.CAMPHOR_LOGS),
MAGIC_LOG(Type.LOGS, "Magic", "MAG", ItemID.MAGIC_LOGS),
+ IRONWOOD_LOG(Type.LOGS, "Iron", "IRON", ItemID.IRONWOOD_LOGS),
REDWOOD_LOG(Type.LOGS, "Red", "RED", ItemID.REDWOOD_LOGS),
+ ROSEWOOD_LOG(Type.LOGS, "Rose", "ROSE", ItemID.ROSEWOOD_LOGS),
PYRE_LOGS(Type.LOGS_PYRE, "Pyre", "P", ItemID.LOGS_PYRE),
ARCTIC_PYRE_LOGS(Type.LOGS_PYRE, "Art P", "AP", ItemID.ARCTIC_PINE_LOGS_PYRE),
@@ -173,17 +187,44 @@ enum ItemIdentification
MAPLE_PYRE_LOGS(Type.LOGS_PYRE, "Map P", "MAPP", ItemID.MAPLE_LOGS_PYRE),
MAHOGANY_PYRE_LOGS(Type.LOGS_PYRE, "Mah P", "MAHP", ItemID.MAHOGANY_LOGS_PYRE),
YEW_PYRE_LOGS(Type.LOGS_PYRE, "Yew P", "YEWP", ItemID.YEW_LOGS_PYRE),
+ CAMPHOR_PYRE_LOGS(Type.LOGS_PYRE, "Cam P", "CAMP", ItemID.CAMPHOR_LOGS_PYRE),
MAGIC_PYRE_LOGS(Type.LOGS_PYRE, "Mag P", "MAGP", ItemID.MAGIC_LOGS_PYRE),
+ IRONWOOD_PYRE_LOGS(Type.LOGS_PYRE, "Iron P", "IRONP", ItemID.IRONWOOD_LOGS_PYRE),
REDWOOD_PYRE_LOGS(Type.LOGS_PYRE, "Red P", "REDP", ItemID.REDWOOD_LOGS_PYRE),
+ ROSEWOOD_PYRE_LOGS(Type.LOGS_PYRE, "Rose P", "ROSEP", ItemID.ROSEWOOD_LOGS_PYRE),
+
+ //Repair Kits
+ WOODEN_REPAIR_KIT(Type.REPAIR_KIT, "Wooden", "WOOD", ItemID.BOAT_REPAIR_KIT),
+ OAK_REPAIR_KIT(Type.REPAIR_KIT, "Oak", "OAK", ItemID.BOAT_REPAIR_KIT_OAK),
+ TEAK_REPAIR_KIT(Type.REPAIR_KIT, "Teak", "TEAK", ItemID.BOAT_REPAIR_KIT_TEAK),
+ MAHOGANY_REPAIR_KIT(Type.REPAIR_KIT, "Mahog", "MAH", ItemID.BOAT_REPAIR_KIT_MAHOGANY),
+ CAMPHOR_REPAIR_KIT(Type.REPAIR_KIT, "Camphor", "CAM", ItemID.BOAT_REPAIR_KIT_CAMPHOR),
+ IRONWOOD_REPAIR_KIT(Type.REPAIR_KIT, "Iron", "IRON", ItemID.BOAT_REPAIR_KIT_IRONWOOD),
+ ROSEWOOD_REPAIR_KIT(Type.REPAIR_KIT, "Rose", "ROSE", ItemID.BOAT_REPAIR_KIT_ROSEWOOD),
//Planks
PLANK(Type.PLANK, "Plank", "PLANK", ItemID.WOODPLANK),
OAK_PLANK(Type.PLANK, "Oak", "OAK", ItemID.PLANK_OAK),
TEAK_PLANK(Type.PLANK, "Teak", "TEAK", ItemID.PLANK_TEAK),
MAHOGANY_PLANK(Type.PLANK, "Mahog", "MAH", ItemID.PLANK_MAHOGANY),
+ CAMPHOR_PLANK(Type.PLANK, "Camphor", "CAM", ItemID.PLANK_CAMPHOR),
+ IRONWOOD_PLANK(Type.PLANK, "Iron", "IRON", ItemID.PLANK_IRONWOOD),
+ ROSEWOOD_PLANK(Type.PLANK, "Rose", "ROSE", ItemID.PLANK_ROSEWOOD),
WAXWOOD_PLANK(Type.PLANK, "Wax", "WAX", ItemID.DADDYSHOME_WAXWOOD_PLANK),
MALLIGNUM_ROOT_PLANK(Type.PLANK, "Mallig", "MALL", ItemID.RAIDS_PLANK),
+ //Yarn
+ BALL_OF_WOOL(Type.YARN, "Wool", "WOOL", ItemID.BALL_OF_WOOL),
+ LINEN_YARN(Type.YARN, "Linen", "LIN", ItemID.LINEN_YARN),
+ HEMP_YARN(Type.YARN, "Hemp", "HEMP", ItemID.HEMP_YARN),
+ COTTON_YARN(Type.YARN, "Cotton", "COT", ItemID.COTTON_YARN),
+
+ //Cloth
+ BOLT_OF_CLOTH(Type.CLOTH, "Cloth", "CLO", ItemID.CLOTH),
+ BOLT_OF_LINEN(Type.CLOTH, "Linen", "LIN", ItemID.BOLT_OF_LINEN),
+ BOLT_OF_CANVAS(Type.CLOTH, "Canvas", "CAN", ItemID.BOLT_OF_CANVAS),
+ BOLT_OF_COTTON(Type.CLOTH, "Cotton", "COT", ItemID.BOLT_OF_COTTON),
+
//Saplings
OAK_SAPLING(Type.SAPLING, "Oak", "OAK", ItemID.PLANTPOT_OAK_SAPLING, ItemID.PLANTPOT_ACORN, ItemID.PLANTPOT_ACORN_WATERED),
WILLOW_SAPLING(Type.SAPLING, "Willow", "WIL", ItemID.PLANTPOT_WILLOW_SAPLING, ItemID.PLANTPOT_WILLOW_SEED, ItemID.PLANTPOT_WILLOW_SEED_WATERED),
@@ -205,6 +246,9 @@ enum ItemIdentification
TEAK_SAPLING(Type.SAPLING, "Teak", "TEAK", ItemID.PLANTPOT_TEAK_SAPLING, ItemID.PLANTPOT_TEAK_SEED, ItemID.PLANTPOT_TEAK_SEED_WATERED),
MAHOGANY_SAPLING(Type.SAPLING, "Mahog", "MAHOG", ItemID.PLANTPOT_MAHOGANY_SAPLING, ItemID.PLANTPOT_MAHOGANY_SEED, ItemID.PLANTPOT_MAHOGANY_SEED_WATERED),
+ CAMPHOR_SAPLING(Type.SAPLING, "Camphor", "CAM", ItemID.PLANTPOT_CAMPHOR_SAPLING, ItemID.PLANTPOT_CAMPHOR_SEED, ItemID.PLANTPOT_CAMPHOR_SEED_WATERED),
+ IRONWOOD_SAPLING(Type.SAPLING, "Iron", "IRON", ItemID.PLANTPOT_IRONWOOD_SAPLING, ItemID.PLANTPOT_IRONWOOD_SEED, ItemID.PLANTPOT_IRONWOOD_SEED_WATERED),
+ ROSEWOOD_SAPLING(Type.SAPLING, "Rose", "ROSE", ItemID.PLANTPOT_ROSEWOOD_SAPLING, ItemID.PLANTPOT_ROSEWOOD_SEED, ItemID.PLANTPOT_ROSEWOOD_SEED_WATERED),
CALQUAT_SAPLING(Type.SAPLING, "Calquat", "CALQ", ItemID.PLANTPOT_CALQUAT_SAPLING, ItemID.PLANTPOT_CALQUAT_SEED, ItemID.PLANTPOT_CALQUAT_SEED_WATERED),
CELASTRUS_SAPLING(Type.SAPLING, "Celas", "CEL", ItemID.PLANTPOT_CELASTRUS_TREE_SAPLING, ItemID.PLANTPOT_CELASTRUS_TREE_SEED, ItemID.PLANTPOT_CELASTRUS_TREE_SEED_WATERED),
@@ -218,10 +262,12 @@ enum ItemIdentification
TIN_ORE(Type.ORE, "Tin", "TIN", ItemID.TIN_ORE),
IRON_ORE(Type.ORE, "Iron", "IRO", ItemID.IRON_ORE),
SILVER_ORE(Type.ORE, "Silver", "SIL", ItemID.SILVER_ORE),
+ LEAD_ORE(Type.ORE, "Lead", "LEA", ItemID.LEAD_ORE),
COAL_ORE(Type.ORE, "Coal", "COA", ItemID.COAL),
GOLD_ORE(Type.ORE, "Gold", "GOL", ItemID.GOLD_ORE),
MITHRIL_ORE(Type.ORE, "Mithril", "MIT", ItemID.MITHRIL_ORE),
ADAMANTITE_ORE(Type.ORE, "Adaman", "ADA", ItemID.ADAMANTITE_ORE),
+ NICKEL_ORE(Type.ORE, "Nickel", "NIC", ItemID.NICKEL_ORE),
RUNITE_ORE(Type.ORE, "Runite", "RUN", ItemID.RUNITE_ORE),
RUNE_ESSENCE(Type.ORE, "R.Ess", "R.E.", ItemID.BLANKRUNE),
@@ -239,10 +285,12 @@ enum ItemIdentification
BRONZE_BAR(Type.BAR, "Bronze", "BRO", ItemID.BRONZE_BAR),
IRON_BAR(Type.BAR, "Iron", "IRO", ItemID.IRON_BAR),
SILVER_BAR(Type.BAR, "Silver", "SIL", ItemID.SILVER_BAR),
+ LEAD_BAR(Type.BAR, "Lead", "LEA", ItemID.LEAD_BAR),
STEEL_BAR(Type.BAR, "Steel", "STE", ItemID.STEEL_BAR),
GOLD_BAR(Type.BAR, "Gold", "GOL", ItemID.GOLD_BAR),
MITHRIL_BAR(Type.BAR, "Mithril", "MIT", ItemID.MITHRIL_BAR),
ADAMANTITE_BAR(Type.BAR, "Adaman", "ADA", ItemID.ADAMANTITE_BAR),
+ CUPRONICKEL_BAR(Type.BAR, "Cupro", "CUP", ItemID.CUPRONICKEL_BAR),
RUNITE_BAR(Type.BAR, "Runite", "RUN", ItemID.RUNITE_BAR),
BLURITE_BAR(Type.BAR, "Blurite", "BLU", ItemID.BLURITE_BAR),
@@ -312,7 +360,9 @@ enum ItemIdentification
ENERGY_MIX(Type.POTION, "Energy", "En", ItemID.BRUTAL_1DOSE1ENERGY, ItemID.BRUTAL_2DOSE1ENERGY),
SUPER_ENERGY(Type.POTION, "S.Energ", "S.En", ItemID._4DOSE2ENERGY, ItemID._3DOSE2ENERGY, ItemID._2DOSE2ENERGY, ItemID._1DOSE2ENERGY),
SUPER_ENERGY_MIX(Type.POTION, "S.Energ", "S.En", ItemID.BRUTAL_1DOSE2ENERGY, ItemID.BRUTAL_2DOSE2ENERGY),
+ EXTREME_ENERGY(Type.POTION, "E.Energy", "E.En", ItemID._4DOSE3ENERGY, ItemID._3DOSE3ENERGY, ItemID._2DOSE3ENERGY, ItemID._1DOSE3ENERGY),
STAMINA(Type.POTION, "Stamina", "St", ItemID._4DOSESTAMINA, ItemID._3DOSESTAMINA, ItemID._2DOSESTAMINA, ItemID._1DOSESTAMINA),
+ EXTENDED_STAMINA(Type.POTION, "E.Stamina", "E.St", ItemID._4DOSE2STAMINA, ItemID._3DOSE2STAMINA, ItemID._2DOSE2STAMINA, ItemID._1DOSE2STAMINA),
STAMINA_MIX(Type.POTION, "Stamina", "Sta", ItemID.BRUTAL_1DOSESTAMINA, ItemID.BRUTAL_2DOSESTAMINA),
OVERLOAD(Type.POTION, "Overloa", "OL", ItemID.NZONE4DOSEOVERLOADPOTION, ItemID.NZONE3DOSEOVERLOADPOTION, ItemID.NZONE2DOSEOVERLOADPOTION, ItemID.NZONE1DOSEOVERLOADPOTION),
ABSORPTION(Type.POTION, "Absorb", "Ab", ItemID.NZONE4DOSEABSORPTIONPOTION, ItemID.NZONE3DOSEABSORPTIONPOTION, ItemID.NZONE2DOSEABSORPTIONPOTION, ItemID.NZONE1DOSEABSORPTIONPOTION),
@@ -324,6 +374,7 @@ enum ItemIdentification
SARADOMIN_BREW(Type.POTION, "SaraBr", "Sa", ItemID._4DOSEPOTIONOFSARADOMIN, ItemID._3DOSEPOTIONOFSARADOMIN, ItemID._2DOSEPOTIONOFSARADOMIN, ItemID._1DOSEPOTIONOFSARADOMIN),
ANCIENT_BREW(Type.POTION, "AncBr", "A.Br", ItemID._4DOSEANCIENTBREW, ItemID._3DOSEANCIENTBREW, ItemID._2DOSEANCIENTBREW, ItemID._1DOSEANCIENTBREW),
ANCIENT_MIX(Type.POTION, "AncBr", "Anc", ItemID.BRUTAL_1DOSEANCIENTBREW, ItemID.BRUTAL_2DOSEANCIENTBREW),
+ ARMADYL_BREW(Type.POTION, "Armadyl", "Arm", ItemID._4DOSEARMADYLBREW, ItemID._3DOSEARMADYLBREW, ItemID._2DOSEARMADYLBREW, ItemID._1DOSEARMADYLBREW),
FORGOTTEN_BREW(Type.POTION, "ForgBr", "F.Br", ItemID._4DOSEFORGOTTENBREW, ItemID._3DOSEFORGOTTENBREW, ItemID._2DOSEFORGOTTENBREW, ItemID._1DOSEFORGOTTENBREW),
SURGE_POTION(Type.POTION, "Surge", "Sur", ItemID._4DOSESURGE, ItemID._3DOSESURGE, ItemID._2DOSESURGE, ItemID._1DOSESURGE),
@@ -362,6 +413,8 @@ enum ItemIdentification
FISHING_MIX(Type.POTION, "Fishing", "Fi", ItemID.BRUTAL_1DOSEFISHERSPOTION, ItemID.BRUTAL_2DOSEFISHERSPOTION),
HUNTER(Type.POTION, "Hunter", "Hu", ItemID._4DOSEHUNTING, ItemID._3DOSEHUNTING, ItemID._2DOSEHUNTING, ItemID._1DOSEHUNTING),
HUNTING_MIX(Type.POTION, "Hunter", "Hu", ItemID.BRUTAL_1DOSE1HUNTING, ItemID.BRUTAL_2DOSE1HUNTING),
+ SUPER_FISHING(Type.POTION, "S.Fishing", "S.Fi", ItemID._4DOSE2FISHERSPOTION, ItemID._3DOSE2FISHERSPOTION, ItemID._2DOSE2FISHERSPOTION, ItemID._1DOSE2FISHERSPOTION),
+ SUPER_HUNTING(Type.POTION, "S.Hunter", "S.Hu", ItemID._4DOSE2HUNTING, ItemID._3DOSE2HUNTING, ItemID._2DOSE2HUNTING, ItemID._1DOSE2HUNTING),
GOBLIN(Type.POTION, "Goblin", "G", ItemID.LOTG_4DOSEGOBLIN, ItemID.LOTG_3DOSEGOBLIN, ItemID.LOTG_2DOSEGOBLIN, ItemID.LOTG_1DOSEGOBLIN),
MAGIC_ESS(Type.POTION, "MagEss", "M.E", ItemID._4DOSEMAGICESS, ItemID._3DOSEMAGICESS, ItemID._2DOSEMAGICESS, ItemID._1DOSEMAGICESS),
@@ -394,11 +447,15 @@ enum ItemIdentification
IRIT_POTION(Type.POTION, "Irit", "I", ItemID.IRITVIAL),
AVANTOE_POTION(Type.POTION, "Avan", "A", ItemID.AVANTOEVIAL),
KWUARM_POTION(Type.POTION, "Kwuarm", "K", ItemID.KWUARMVIAL),
+ ELKHORN_POTION(Type.POTION, "Elkhorn", "ELK", ItemID.ELKHORNVIAL),
+ HAEMOSTATIC_POULTICE(Type.POTION, "Haem.P.", "HAEM", ItemID.HAEMOSTATIC_POULTICE),
+ PILLAR_POTION(Type.POTION, "Pillar", "PIL", ItemID.PILLARVIAL),
SNAPDRAGON_POTION(Type.POTION, "Snap", "S", ItemID.SNAPDRAGONVIAL),
CADANTINE_POTION(Type.POTION, "Cadan", "C", ItemID.CADANTINEVIAL),
LANTADYME_POTION(Type.POTION, "Lanta", "L", ItemID.LANTADYMEVIAL),
DWARF_WEED_POTION(Type.POTION, "Dwarf", "D", ItemID.DWARFWEEDVIAL),
TORSTOL_POTION(Type.POTION, "Torstol", "TOR", ItemID.TORSTOLVIAL),
+ UMBRAL_POTION(Type.POTION, "Umbral", "UMB", ItemID.UMBRALVIAL),
HUASCA_POTION(Type.POTION, "Huasca", "HUA", ItemID.HUASCAVIAL),
// Moth & butterfly jars
@@ -642,11 +699,15 @@ enum Type
SEED_FRUIT_TREE(ItemIdentificationConfig::showFruitTreeSeeds),
SEED_FLOWER(ItemIdentificationConfig::showFlowerSeeds),
HOPS_SEED(ItemIdentificationConfig::showHopsSeeds),
+ CORAL_FRAG(ItemIdentificationConfig::showCoralFrags),
SACK(ItemIdentificationConfig::showSacks),
HERB(ItemIdentificationConfig::showHerbs),
LOGS(ItemIdentificationConfig::showLogs),
LOGS_PYRE(ItemIdentificationConfig::showPyreLogs),
PLANK(ItemIdentificationConfig::showPlanks),
+ REPAIR_KIT(ItemIdentificationConfig::showRepairKits),
+ YARN(ItemIdentificationConfig::showYarn),
+ CLOTH(ItemIdentificationConfig::showCloth),
SAPLING(ItemIdentificationConfig::showSaplings),
COMPOST(ItemIdentificationConfig::showComposts),
ORE(ItemIdentificationConfig::showOres),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationConfig.java
index acc2f336061..27d712034b4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationConfig.java
@@ -150,6 +150,17 @@ default boolean showHopsSeeds()
return false;
}
+ @ConfigItem(
+ keyName = "showCoralFrags",
+ name = "Coral Frags",
+ description = "Show identification on coral frags.",
+ section = identificationSection
+ )
+ default boolean showCoralFrags()
+ {
+ return false;
+ }
+
@ConfigItem(
keyName = "showSacks",
name = "Sacks",
@@ -205,6 +216,39 @@ default boolean showPlanks()
return false;
}
+ @ConfigItem(
+ keyName = "showRepairKits",
+ name = "Repair Kits",
+ description = "Show identification on repair kits.",
+ section = identificationSection
+ )
+ default boolean showRepairKits()
+ {
+ return false;
+ }
+
+ @ConfigItem(
+ keyName = "showYarn",
+ name = "Yarn",
+ description = "Show identification on yarns.",
+ section = identificationSection
+ )
+ default boolean showYarn()
+ {
+ return false;
+ }
+
+ @ConfigItem(
+ keyName = "showCloth",
+ name = "Cloth",
+ description = "Show identification on bolts of cloth.",
+ section = identificationSection
+ )
+ default boolean showCloth()
+ {
+ return false;
+ }
+
@ConfigItem(
keyName = "showSaplings",
name = "Saplings",
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java
index b49130403a3..9acd04a10f4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java
@@ -91,7 +91,7 @@ private void init()
add(food(7), ItemID.ELID_CHOC_ICE, ItemID.TROUT, ItemID.COD, ItemID.PLAIN_PIZZA, ItemID.HALF_PLAIN_PIZZA, ItemID.APPLE_PIE, ItemID.HALF_AN_APPLE_PIE, ItemID.SPIT_ROASTED_RABBIT_MEAT,
ItemID.PREMADE_CHOCCHIP_CRUNCHIES, ItemID.CHOCCHIP_CRUNCHIES, ItemID.PREMADE_SPICY_CRUNCHIES, ItemID.SPICY_CRUNCHIES);
add(food(8), ItemID.PIKE, ItemID.SPIT_ROASTED_BEAST_MEAT, ItemID.MEAT_PIZZA, ItemID.HALF_MEAT_PIZZA, ItemID.PREMADE_WORM_CRUNCHIES, ItemID.WORM_CRUNCHIES, ItemID.PREMADE_TOAD_CRUNCHIES,
- ItemID.TOAD_CRUNCHIES, ItemID.BOWL_EGG_TOMATO, ItemID.RAIDS_BAT1_COOKED, ItemID.PEACH, ItemID.RAIDS_FISH1_COOKED);
+ ItemID.TOAD_CRUNCHIES, ItemID.BOWL_EGG_TOMATO, ItemID.RAIDS_BAT1_COOKED, ItemID.PEACH, ItemID.RAIDS_FISH1_COOKED, ItemID.RED_CRAB_MEAT);
add(food(9), ItemID.PREMADE_PINEAPPLE_PUNCH, ItemID.PINEAPPLE_PUNCH, ItemID.PREMADE_FRUIT_BLAST, ItemID.FRUIT_BLAST, ItemID.SALMON, ItemID.ANCHOVIE_PIZZA,
ItemID.HALF_ANCHOVIE_PIZZA);
add(food(10), ItemID.TUNA, ItemID.HUNDRED_PIRATE_GIANT_CRAB_MEAT_5, ItemID.BOWL_TUNA, ItemID.COOKED_CHOMPY, ItemID.PEST_FIELD_RATION, ItemID.DRAGONFRUIT,
@@ -102,16 +102,17 @@ private void init()
add(food(12), ItemID.LOBSTER, ItemID.PREMADE_WORM_HOLE, ItemID.WORM_HOLE, ItemID.PREMADE_VEG_BALL, ItemID.VEG_BALL);
add(food(13), ItemID.BASS, ItemID.BOWL_TUNA_SWEETCORN);
add(food(14), ItemID.POTATO_BUTTER, ItemID.POTATO_CHILLI_CARNE, ItemID.SWORDFISH, ItemID.RAIDS_BAT3_COOKED, ItemID.PUMPKIN, ItemID.EASTER_EGG, ItemID.RAIDS_FISH3_COOKED,
- ItemID.COOKED_OOMLIE);
- add(food(15), ItemID.PREMADE_TANGLED_TOADS_LEGS, ItemID.TANGLED_TOADS_LEGS, ItemID.PREMADE_CHOCOLATE_BOMB, ItemID.CHOCOLATE_BOMB, ItemID._100_JUBBLY_MEAT_COOKED);
+ ItemID.COOKED_OOMLIE, ItemID.BLUE_CRAB_MEAT);
+ add(food(15), ItemID.PREMADE_TANGLED_TOADS_LEGS, ItemID.TANGLED_TOADS_LEGS, ItemID.PREMADE_CHOCOLATE_BOMB, ItemID.CHOCOLATE_BOMB, ItemID._100_JUBBLY_MEAT_COOKED, ItemID.SWORDTIP_SQUID);
add(food(16), ItemID.MONKFISH, ItemID.POTATO_CHEESE, ItemID.POTATO_EGG_TOMATO, ItemID.GAUNTLET_COMBO_FOOD, ItemID.GAUNTLET_COMBO_FOOD_HM);
- add(food(17), ItemID.RAIDS_FISH4_COOKED, ItemID.RAIDS_BAT4_COOKED);
+ add(food(17), ItemID.RAIDS_FISH4_COOKED, ItemID.RAIDS_BAT4_COOKED, ItemID.GIANT_KRILL, ItemID.JUMBO_SQUID);
add(food(18), ItemID.TBWT_COOKED_KARAMBWAN, ItemID.BLIGHTED_KARAMBWAN, ItemID.BR_TBWT_COOKED_KARAMBWAN /* LMS */);
- add(food(19), ItemID.CURRY, ItemID.UGTHANKI_KEBAB_BAD, ItemID.UGTHANKI_KEBAB);
- add(food(20), ItemID.POTATO_MUSHROOM_ONION, ItemID.SHARK, ItemID.RAIDS_FISH5_COOKED, ItemID.RAIDS_BAT5_COOKED, ItemID.HUNDRED_ILM_COOKED_STUFFED_SNAKE, ItemID.BR_SHARK /* LMS */, ItemID.GAUNTLET_FOOD, ItemID.EVENT_CORRUPTED_SHARK);
+ add(food(19), ItemID.CURRY, ItemID.UGTHANKI_KEBAB_BAD, ItemID.UGTHANKI_KEBAB, ItemID.RAINBOW_CRAB_MEAT);
+ add(food(20), ItemID.POTATO_MUSHROOM_ONION, ItemID.SHARK, ItemID.RAIDS_FISH5_COOKED, ItemID.RAIDS_BAT5_COOKED, ItemID.HUNDRED_ILM_COOKED_STUFFED_SNAKE, ItemID.BR_SHARK /* LMS */, ItemID.GAUNTLET_FOOD, ItemID.EVENT_CORRUPTED_SHARK, ItemID.HALIBUT);
add(food(21), ItemID.SEATURTLE);
add(food(22), ItemID.MANTARAY, ItemID.BLIGHTED_MANTARAY, ItemID.DARK_CRAB, ItemID.POTATO_TUNA_SWEETCORN);
add(food(23), ItemID.RAIDS_FISH6_COOKED, ItemID.RAIDS_BAT6_COOKED);
+ add(food(24), ItemID.MARLIN);
add(new Anglerfish(), ItemID.ANGLERFISH, ItemID.BLIGHTED_ANGLERFISH);
add(food(maxHP -> (int) Math.ceil(maxHP * .06)), ItemID.STRAWBERRY);
add(food(maxHP -> (int) Math.ceil(maxHP * .05)), ItemID.WATERMELON_SLICE);
@@ -132,6 +133,9 @@ private void init()
add(combo(food(13), food(10), heal(RUN_ENERGY, 10)), ItemID.DASHINGKEBBIT_COOKED);
add(combo(food(12), food(9)), ItemID.ANTELOPESUN_COOKED);
add(combo(food(14), food(12)), ItemID.ANTELOPEMOON_COOKED);
+ add(new CappedStatBoost(HITPOINTS, max -> 18, max -> Math.min((int) (max * 0.2), 10)), ItemID.HADDOCK);
+ add(combo(food(19), heal(RUN_ENERGY, 20)), ItemID.YELLOWFIN);
+ add(combo(food(22), heal(PRAYER, 5)), ItemID.BLUEFIN);
// Dorgeshuun Cuisine
add(food(2), ItemID.DORGESH_BAT_SHISH, ItemID.DORGESH_CRISPY_FROGLEGS, ItemID.DORGESH_CAVE_CRAWLER_FILLETS, ItemID.DORGESH_WALL_BEAST_FINGERS, ItemID.DORGESH_FROG_BURGER, ItemID.DORGESH_FROG_SPAWN_GUMBO, ItemID.DORGESH_GREEN_GLOOP_SOUP,
@@ -195,6 +199,14 @@ private void init()
add(combo(food(16), boost(PRAYER, 1), dec(ATTACK, 5), dec(THIEVING, 1)), ItemID.TONAMEYO_WHITE);
add(combo(food(16), boost(HERBLORE, 1), dec(ATTACK, 5), dec(FARMING, 1)), ItemID.CHICHILIHUI_ROSE);
add(combo(food(16), boost(SLAYER, 1), dec(ATTACK, 5), dec(AGILITY, 1)), ItemID.IMPERIAL_ROSE);
+ add(combo(boost(SAILING, 1), boost(MAGIC, 2), dec(ATTACK, 2)), ItemID.KRAKEN_INK_STOUT);
+ add(combo(boost(SAILING, 1), boost(RANGED, 2), boost(STRENGTH, 2), dec(MAGIC, 2)), ItemID.PERILDANCE_BITTER);
+ add(combo(boost(SAILING, 2), boost(FISHING, 2), dec(ATTACK, 2)), ItemID.TRAWLERS_TRUST);
+ add(combo(boost(SAILING, 3), boost(COOKING, 2), dec(AGILITY, 2)), ItemID.WHIRLPOOL_SURPRISE);
+ add(combo(boost(SAILING, 4), dec(THIEVING, 2)), ItemID.HORIZONS_LURE);
+ add(combo(boost(SLAYER, 1), new BoostedStatBoost(SAILING, false, perc(.02, -2)), new BoostedStatBoost(ATTACK, false, perc(.02, -2)), new BoostedStatBoost(STRENGTH, false, perc(.02, -2)), new BoostedStatBoost(DEFENCE, false, perc(.02, -2))), ItemID.KRAKEN_COLADA);
+ add(combo(boost(FISHING, 1), new BoostedStatBoost(SAILING, false, perc(.02, -2)), new BoostedStatBoost(ATTACK, false, perc(.02, -2)), new BoostedStatBoost(STRENGTH, false, perc(.02, -2)), new BoostedStatBoost(DEFENCE, false, perc(.02, -2))), ItemID.BARNACLE_BLASTER);
+ add(combo(boost(HUNTER, 1), new BoostedStatBoost(SAILING, false, perc(.02, -2)), new BoostedStatBoost(ATTACK, false, perc(.02, -2)), new BoostedStatBoost(STRENGTH, false, perc(.02, -2)), new BoostedStatBoost(DEFENCE, false, perc(.02, -2))), ItemID.SAILORS_MIRAGE);
// Sq'irk Juice
add(heal(RUN_ENERGY, 5), ItemID.OSMAN_SQUIRK_J_WINTER);
@@ -248,6 +260,8 @@ private void init()
add(ancientBrew, ItemID._1DOSEANCIENTBREW, ItemID._2DOSEANCIENTBREW, ItemID._3DOSEANCIENTBREW, ItemID._4DOSEANCIENTBREW);
add(new AncientBrew(.08, 3), ItemID._1DOSEFORGOTTENBREW, ItemID._2DOSEFORGOTTENBREW, ItemID._3DOSEFORGOTTENBREW, ItemID._4DOSEFORGOTTENBREW);
add(new MoonlightPotion(), ItemID._1DOSEMOONLIGHTPOTION, ItemID._2DOSEMOONLIGHTPOTION, ItemID._3DOSEMOONLIGHTPOTION, ItemID._4DOSEMOONLIGHTPOTION);
+ add(combo(boost(HITPOINTS, perc(.10, 2)), boost(RANGED, perc(.10, 4)), new BoostedStatBoost(ATTACK, false, perc(.10, -2)), new BoostedStatBoost(STRENGTH, false, perc(.10, -2)), new BoostedStatBoost(DEFENCE, false, perc(.10, -2)), new BoostedStatBoost(MAGIC, false, perc(.10, -2))),
+ ItemID._1DOSEARMADYLBREW, ItemID._2DOSEARMADYLBREW, ItemID._3DOSEARMADYLBREW, ItemID._4DOSEARMADYLBREW);
// Mixed combat potions
add(new MixedPotion(3, ATTACK_POT), ItemID.BRUTAL_1DOSE1ATTACK, ItemID.BRUTAL_2DOSE1ATTACK);
@@ -265,6 +279,8 @@ private void init()
// Regular overload (NMZ)
add(combo(SUPER_ATTACK_POT, SUPER_STRENGTH_POT, SUPER_DEFENCE_POT, superRangingPot, superMagicPot, heal(HITPOINTS, -50)), ItemID.NZONE1DOSEOVERLOADPOTION, ItemID.NZONE2DOSEOVERLOADPOTION, ItemID.NZONE3DOSEOVERLOADPOTION, ItemID.NZONE4DOSEOVERLOADPOTION);
+ // Blighted overload (DMM)
+ add(combo(boost(ATTACK, perc(.15, 8)), boost(STRENGTH, perc(.15, 8)), new BoostedStatBoost(DEFENCE, false, perc(.1, -1)), boost(RANGED, perc(.1, 7)), boost(MAGIC, perc(.1, 1)), heal(HITPOINTS, -10)), ItemID.DEADMAN1DOSEOVERLOAD, ItemID.DEADMAN2DOSEOVERLOAD, ItemID.DEADMAN3DOSEOVERLOAD, ItemID.DEADMAN4DOSEOVERLOAD);
// Bandages (Castle Wars)
add(new CastleWarsBandage(), ItemID.CASTLEWARS_BANDAGES);
@@ -278,7 +294,7 @@ private void init()
final SingleEffect prayerPot = new PrayerPotion(7);
final Effect superEnergyPot = heal(RUN_ENERGY, 20);
final Effect superRestorePot = new SuperRestore(.25, 8);
- final SingleEffect staminaPot = new StaminaPotion();
+ final SingleEffect staminaPot = new StaminaPotion(20);
final DeltaPercentage remedyHeal = perc(0.16, 6);
add(restorePot, ItemID._1DOSESTATRESTORE, ItemID._2DOSESTATRESTORE, ItemID._3DOSESTATRESTORE, ItemID._4DOSESTATRESTORE);
add(energyPot, ItemID._1DOSE1ENERGY, ItemID._2DOSE1ENERGY, ItemID._3DOSE1ENERGY, ItemID._4DOSE1ENERGY);
@@ -291,6 +307,8 @@ private void init()
ItemID.BR_SANFEW_SALVE_4_DOSE, ItemID.BR_SANFEW_SALVE_3_DOSE, ItemID.BR_SANFEW_SALVE_2_DOSE, ItemID.BR_SANFEW_SALVE_1_DOSE /* LMS */);
add(combo(heal(ATTACK, remedyHeal), heal(STRENGTH, remedyHeal), heal(DEFENCE, remedyHeal), heal(RANGED, remedyHeal), heal(MAGIC, remedyHeal)), ItemID._1DOSESTATRENEWAL, ItemID._2DOSESTATRENEWAL, ItemID._3DOSESTATRENEWAL, ItemID._4DOSESTATRENEWAL);
add(staminaPot, ItemID._1DOSESTAMINA, ItemID._2DOSESTAMINA, ItemID._3DOSESTAMINA, ItemID._4DOSESTAMINA);
+ add(new StaminaPotion(40), ItemID._1DOSE2STAMINA, ItemID._2DOSE2STAMINA, ItemID._3DOSE2STAMINA, ItemID._4DOSE2STAMINA);
+ add(heal(RUN_ENERGY, 40), ItemID._1DOSE3ENERGY, ItemID._2DOSE3ENERGY, ItemID._3DOSE3ENERGY, ItemID._4DOSE3ENERGY);
// Mixed recovery potions
add(new MixedPotion(3, restorePot), ItemID.BRUTAL_1DOSESTATRESTORE, ItemID.BRUTAL_2DOSESTATRESTORE);
@@ -341,7 +359,9 @@ private void init()
final Effect hunterPot = boost(HUNTER, 3);
add(agilityPot, ItemID._1DOSE1AGILITY, ItemID._2DOSE1AGILITY, ItemID._3DOSE1AGILITY, ItemID._4DOSE1AGILITY);
add(fishingPot, ItemID._1DOSEFISHERSPOTION, ItemID._2DOSEFISHERSPOTION, ItemID._3DOSEFISHERSPOTION, ItemID._4DOSEFISHERSPOTION);
+ add(boost(FISHING, 6), ItemID._1DOSE2FISHERSPOTION, ItemID._2DOSE2FISHERSPOTION, ItemID._3DOSE2FISHERSPOTION, ItemID._4DOSE2FISHERSPOTION);
add(hunterPot, ItemID._1DOSEHUNTING, ItemID._2DOSEHUNTING, ItemID._3DOSEHUNTING, ItemID._4DOSEHUNTING);
+ add(boost(HUNTER, 6), ItemID._1DOSE2HUNTING, ItemID._2DOSE2HUNTING, ItemID._3DOSE2HUNTING, ItemID._4DOSE2HUNTING);
add(combo(boost(HITPOINTS, 5), heal(RUN_ENERGY, 5)), ItemID.CUP_GUTHIX_REST_1, ItemID.CUP_GUTHIX_REST_2, ItemID.CUP_GUTHIX_REST_3, ItemID.CUP_GUTHIX_REST_4);
// Mixed skill potions
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/StaminaPotion.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/StaminaPotion.java
index 4f4611dad96..987ac97fdd3 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/StaminaPotion.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/StaminaPotion.java
@@ -36,9 +36,12 @@
public class StaminaPotion extends StatBoost
{
- public StaminaPotion()
+ private final int baseRestore;
+
+ public StaminaPotion(int baseRestore)
{
super(RUN_ENERGY, false);
+ this.baseRestore = baseRestore;
}
@Override
@@ -50,9 +53,9 @@ public int heals(Client client)
Item ring = equipContainer.getItem(EquipmentInventorySlot.RING.getSlotIdx());
if (ring != null && ring.getId() == ItemID.RING_OF_ENDURANCE)
{
- return 40;
+ return baseRestore * 2;
}
}
- return 20;
+ return baseRestore;
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootReceived.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootReceived.java
index ecaa869a2a0..7cfaae0f5f5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootReceived.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootReceived.java
@@ -42,4 +42,5 @@ public class LootReceived
private LootRecordType type;
private Collection items;
private int amount;
+ private Object metadata;
}
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 dcba540882d..e00ba619928 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
@@ -204,6 +204,12 @@ public class LootTrackerPlugin extends Plugin
put(5422, "Chest (Aldarin Villas)").
put(6550, "Chest (Moon key)").
put(5521, "Chest (Alchemist's signet)").
+ put(12073, "Rusty chest").
+ put(7470, "Rusty chest").
+ put(6187, "Tarnished chest").
+ put(6953, "Tarnished chest").
+ put(7743, "Reinforced chest").
+ put(8758, "Reinforced chest").
build();
// Chests opened with keys from slayer tasks
@@ -675,7 +681,7 @@ void addLoot(@NonNull String name, int combatLevel, LootRecordType type, Object
queuedLoots.add(lootRecord);
}
- eventBus.post(new LootReceived(name, combatLevel, type, items, amount));
+ eventBus.post(new LootReceived(name, combatLevel, type, items, amount, metadata));
}
private Integer getLootWorldId()
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 676abc7fc96..74321af9b6c 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
@@ -1602,7 +1602,7 @@ else if (parent != null && menuEntry.getOption().hashCode() == wornItemSwapConfi
{
final int componentId = w.getId(); // on dynamic components, this is the parent layer id
final int itemId = w.getIndex() == -1 ? -1 : ItemVariationMapping.map(w.getItemId());
- final Integer op = getUiSwapConfig(shiftModifier(), componentId, itemId);
+ final Integer op = getMigratedUiSwapConfig(shiftModifier(), componentId, itemId);
if (op != null && op == menuEntry.getIdentifier())
{
swap(menu, menuEntries, index, menuEntries.length - 1);
@@ -1982,6 +1982,30 @@ private int defaultOp(ItemComposition itemComposition, boolean shift)
return -1; // use
}
+ private Integer getMigratedUiSwapConfig(boolean shift, int componentId, int itemId)
+ {
+ Integer swap = getUiSwapConfig(shift, componentId, itemId);
+ if (componentId == InterfaceID.Bankmain.ITEMS)
+ {
+ // remap 12.13 -> 12.12 for 1/28/2026 game update
+ if (swap == null)
+ {
+ swap = getUiSwapConfig(shift, InterfaceID.Bankmain.SCROLLBAR, itemId);
+ if (swap != null)
+ {
+ unsetUiSwapConfig(shift, InterfaceID.Bankmain.SCROLLBAR, itemId);
+ setUiSwapConfig(shift, InterfaceID.Bankmain.ITEMS, itemId, swap);
+ log.debug("Migrated swap {} for {} from scrollbar to items", swap, itemId);
+ }
+ }
+ else
+ {
+ unsetUiSwapConfig(shift, InterfaceID.Bankmain.SCROLLBAR, itemId);
+ }
+ }
+ return swap;
+ }
+
private Integer getUiSwapConfig(boolean shift, int componentId, int itemId)
{
String config = configManager.getConfiguration(MenuEntrySwapperConfig.GROUP,
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java
index b41c8c893e2..dcf08f32660 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java
@@ -26,6 +26,7 @@
import com.google.inject.Provides;
import java.awt.Color;
+import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import javax.inject.Inject;
import net.runelite.api.Client;
@@ -43,6 +44,7 @@
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.task.Schedule;
@PluginDescriptor(
name = "Minimap",
@@ -68,6 +70,9 @@ public class MinimapPlugin extends Plugin
@Inject
private ClientThread clientThread;
+ @Inject
+ private ConfigManager configManager;
+
private SpritePixels[] originalDotSprites;
@Provides
@@ -83,6 +88,11 @@ protected void startUp()
storeOriginalDots();
replaceMapDots();
client.setMinimapZoom(config.zoom());
+ Double zoomLevel = configManager.getConfiguration(MinimapConfig.GROUP, "zoomLevel", double.class);
+ if (zoomLevel != null && zoomLevel > 0d)
+ {
+ client.setMinimapZoom(zoomLevel);
+ }
}
@Override
@@ -131,6 +141,13 @@ else if (event.getKey().equals("zoom"))
replaceMapDots();
}
+ @Schedule(period = 11, unit = ChronoUnit.SECONDS, asynchronous = true)
+ public void saveZoom()
+ {
+ double zoom = client.getMinimapZoom();
+ configManager.setConfiguration(MinimapConfig.GROUP, "zoomLevel", zoom);
+ }
+
@Subscribe
public void onScriptPostFired(ScriptPostFired scriptPostFired)
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java
index 1e2381f6db5..92273b527ff 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java
@@ -157,7 +157,7 @@ protected void shutDown()
@Subscribe
public void onVarbitChanged(VarbitChanged event)
{
- if (inMlm)
+ if (inMlm && event.getVarbitId() == VarbitID.MOTHERLODE_SACK_TRANSMIT)
{
int lastSackValue = curSackSize;
refreshSackValues();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
index 4acd0053c5a..9e7b89204fd 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
@@ -211,6 +211,11 @@ private void loadPoints()
points.clear();
WorldView wv = client.getTopLevelWorldView();
+ if (wv == null)
+ {
+ return;
+ }
+
loadPoints(wv);
for (WorldEntity we : wv.worldEntities())
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java
index b12fc4a75a6..ec56fb5f183 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java
@@ -273,17 +273,16 @@ private void applyRoofOverrides(Scene scene)
return;
}
- Tile[][][] tiles = scene.getTiles();
+ Tile[][][] tiles = scene.getExtendedTiles();
// the extended tile settings control what is actually drawn, the normal
// tile settings are just a copy
byte[][][] settings = scene.getExtendedTileSettings();
- final int SCENE_OFFSET = (Constants.EXTENDED_SCENE_SIZE - Constants.SCENE_SIZE) / 2;
for (int z = 0; z < Constants.MAX_Z; z++)
{
- for (int x = 0; x < Constants.SCENE_SIZE; x++)
+ for (int x = 0; x < Constants.EXTENDED_SCENE_SIZE; x++)
{
- for (int y = 0; y < Constants.SCENE_SIZE; y++)
+ for (int y = 0; y < Constants.EXTENDED_SCENE_SIZE; y++)
{
Tile tile = tiles[z][x][y];
if (tile == null)
@@ -297,7 +296,7 @@ private void applyRoofOverrides(Scene scene)
int regionAndPlane = wp.getRegionID() << 2 | wp.getPlane();
if (configOverrideRegions.contains(wp.getRegionID()))
{
- settings[z][x + SCENE_OFFSET][y + SCENE_OFFSET] |= Constants.TILE_FLAG_UNDER_ROOF;
+ settings[z][x][y] |= Constants.TILE_FLAG_UNDER_ROOF;
}
else if (overrides.containsKey(regionAndPlane))
{
@@ -306,7 +305,7 @@ else if (overrides.containsKey(regionAndPlane))
long[] region = overrides.get(regionAndPlane);
if ((region[ry] & (1L << rx)) != 0)
{
- settings[z][x + SCENE_OFFSET][y + SCENE_OFFSET] |= Constants.TILE_FLAG_UNDER_ROOF;
+ settings[z][x][y] |= Constants.TILE_FLAG_UNDER_ROOF;
}
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java
index 43bb5f59912..ab54f738aaf 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java
@@ -50,7 +50,8 @@ enum CalculatorType
RUNECRAFT(Skill.RUNECRAFT, RunecraftBonus.values(), RunecraftAction.values()),
FARMING(Skill.FARMING, FarmingBonus.values(), FarmingAction.values()),
CONSTRUCTION(Skill.CONSTRUCTION, ConstructionBonus.values(), ConstructionAction.values()),
- HUNTER(Skill.HUNTER, null, HunterAction.values());
+ HUNTER(Skill.HUNTER, null, HunterAction.values()),
+ SAILING(Skill.SAILING, null, SailingAction.values());
private final Skill skill;
@Nullable
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java
index e0bf79698b1..fa74f628af8 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java
@@ -608,6 +608,8 @@ public void focusLost(FocusEvent e)
return VarPlayerID.XPDROPS_CRAFTING_END;
case SMITHING:
return VarPlayerID.XPDROPS_SMITHING_END;
+ case SAILING:
+ return VarPlayerID.XPDROPS_SAILING_END;
case THIEVING:
return VarPlayerID.XPDROPS_THIEVING_END;
case FLETCHING:
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionAction.java
index 5b37a806f71..0ea83977790 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionAction.java
@@ -38,7 +38,9 @@ public enum ConstructionAction implements NamedSkillAction
FERN_BIG_PLANT("Fern (big plant)", 1, 31, ItemID.POH_PLANTBIG1A),
PLANT("Plant", 1, 31, ItemID.POH_PLANTSMALL1A),
SHORT_PLANT("Short Plant", 1, 31, ItemID.POH_PLANTBIG2A),
+ REPAIR_KIT("Repair Kit", 1, 43.5f, ItemID.BOAT_REPAIR_KIT),
CRUDE_WOODEN_CHAIR("Crude Wooden Chair", 1, 58, ItemID.POH_ARMCHAIR_1),
+ WOODEN_HULL_PARTS("Wooden Hull Parts", 1, 72.5f, ItemID.SAILING_BOAT_HULL_PART_WOODEN),
EXIT_PORTAL("Exit Portal", 1, 100, ItemID.POH_GARDEN_CENTREPIECE_1),
BROWN_RUG("Brown Rug", 2, 30, ItemID.POH_RUG_1),
TORN_CURTAINS("Torn Curtains", 2, 132, ItemID.POH_CURTAINS_1),
@@ -56,6 +58,7 @@ public enum ConstructionAction implements NamedSkillAction
BEER_BARREL("Beer Barrel", 7, 87, ItemID.POH_BARREL_1),
PUMP_AND_DRAIN("Pump and Drain", 7, 100, ItemID.POH_SINK_1),
WOODEN_CHAIR("Wooden Chair", 8, 87, ItemID.POH_ARMCHAIR_2),
+ OAK_HULL_PARTS("Oak Hull Parts", 8, 150, ItemID.SAILING_BOAT_HULL_PART_OAK),
WOODEN_LARDER("Wooden Larder", 9, 228, ItemID.POH_LARDER_1),
NICE_TREE("Nice Tree", 10, 44, ItemID.POH_TREE_2),
POND("Pond", 10, 100, ItemID.POH_GARDEN_CENTREPIECE_3),
@@ -79,6 +82,7 @@ public enum ConstructionAction implements NamedSkillAction
ASGARNIAN_ALE("Asgarnian Ale", 18, 184, ItemID.ASGARNIAN_ALE),
CURTAINS("Curtains", 18, 225, ItemID.POH_CURTAINS_2),
CAT_BASKET("Cat Basket", 19, 58, ItemID.POH_CAT_BASKET_2),
+ OAK_REPAIR_KIT("Oak Repair Kit", 19, 90, ItemID.BOAT_REPAIR_KIT_OAK),
OAK_CHAIR("Oak Chair", 19, 120, ItemID.POH_ARMCHAIR_4),
SHOE_BOX("Shoe Box", 20, 58, ItemID.POH_WARDROBE_1),
WOODEN_BED("Wooden Bed", 20, 117, ItemID.POH_BED_1),
@@ -86,6 +90,7 @@ public enum ConstructionAction implements NamedSkillAction
OAK_BENCH("Oak Bench", 22, 240, ItemID.POH_DINING_CHAIRS_2),
OAK_DINING_TABLE("Oak Dining Table", 22, 240, ItemID.POH_DINING_TABLE_2),
WOODEN_SHELVES_3("Wooden Shelves 3", 23, 147, ItemID.POH_KITCHEN_SHELVES_3),
+ TEAK_HULL_PARTS("Teak Hull Parts", 23, 225, ItemID.SAILING_BOAT_HULL_PART_TEAK),
SMALL_OVEN("Small Oven", 24, 80, ItemID.POH_STOVE_4),
OAK_CLOCK("Oak Clock", 25, 142, ItemID.POH_CLOCK_1),
ROPE_BELL_PULL("Rope Bell-Pull", 26, 64, ItemID.POH_BELLPULL_1),
@@ -98,6 +103,7 @@ public enum ConstructionAction implements NamedSkillAction
LARGE_OVEN("Large Oven", 29, 100, ItemID.POH_STOVE_5),
OAK_BOOKCASE("Oak Bookcase", 29, 180, ItemID.POH_BOOKCASE_2),
WILLOW_TREE("Willow Tree", 30, 100, ItemID.POH_TREE_4),
+ TEAK_REPAIR_KIT("Teak Repair Kit", 30, 135, ItemID.BOAT_REPAIR_KIT_TEAK),
OAK_BED("Oak Bed", 30, 210, ItemID.POH_BED_2),
LONG_BONE("Long Bone", 30, 4500, ItemID.DORGESH_CONSTRUCTION_BONE),
CURVED_BONE("Curved Bone", 30, 6750, ItemID.DORGESH_CONSTRUCTION_BONE_CURVED),
@@ -127,6 +133,7 @@ public enum ConstructionAction implements NamedSkillAction
OPULENT_CURTAINS("Opulent Curtains", 40, 315, ItemID.POH_CURTAINS_3),
MAHOGANY_BOOKCASE("Mahogany Bookcase", 40, 420, ItemID.POH_BOOKCASE_3),
GLOBE("Globe", 41, 180, ItemID.POH_GLOBE_1),
+ MAHOGANY_HULL_PARTS("Mahogany Hull Parts", 41, 350, ItemID.SAILING_BOAT_HULL_PART_MAHOGANY),
FENCING_RING("Fencing Ring", 41, 570, ItemID.POH_COMBAT_RING_2),
FANCY_RANGE("Fancy Range", 42, 160, ItemID.POH_STOVE_7),
CRYSTAL_BALL("Crystal Ball", 42, 280, ItemID.POH_CRYSTALBALL_1),
@@ -142,6 +149,7 @@ public enum ConstructionAction implements NamedSkillAction
TEAK_DRESSER("Teak Dresser", 46, 181, ItemID.POH_MIRROR_4),
DEMON_LECTERN("Demon Lectern", 47, 120, ItemID.POH_LECTERN_3),
EAGLE_LECTERN("Eagle Lectern", 47, 120, ItemID.POH_LECTERN_2),
+ MAHOGANY_REPAIR_KIT("Mahogany Repair Kit", 47, 210, ItemID.BOAT_REPAIR_KIT_MAHOGANY),
SINK("Sink", 47, 300, ItemID.POH_SINK_3),
MOUNTED_MYTHICAL_CAPE("Mounted Mythical Cape", 47, 370, ItemID.POH_TROPHY_MYTHICAL_CAPE),
GOLD_SINK("Gold Sink", 47, 11144, ItemID.POH_SINK_4),
@@ -165,12 +173,14 @@ public enum ConstructionAction implements NamedSkillAction
TEAK_DEMON_LECTERN("Teak Demon Lectern", 57, 180, ItemID.POH_LECTERN_5),
TEAK_EAGLE_LECTERN("Teak Eagle Lectern", 57, 180, ItemID.POH_LECTERN_4),
LIMESTONE_ATTACK_STONE("Limestone attack stone", 59, 200, ItemID.POH_ATTACK_STONE_2),
+ CAMPHOR_HULL_PARTS("Camphor Hull Parts", 59, 400, ItemID.SAILING_BOAT_HULL_PART_CAMPHOR),
LUNAR_GLOBE("Lunar Globe", 59, 570, ItemID.POH_GLOBE_3),
YEW_TREE("Yew Tree", 60, 141, ItemID.POH_TREE_6),
SPICE_RACK("Spice Rack", 60, 374, ItemID.POH_KITCHEN_RACK_1),
POSH_BELL_PULL("Posh Bell-Pull", 60, 420, ItemID.POH_BELLPULL_3),
GILDED_FOUR_POSTER_BED("Gilded 4-Poster Bed", 60, 1330, ItemID.POH_BED_7),
GILDED_BENCH("Gilded Bench", 61, 1760, ItemID.POH_DINING_CHAIRS_7),
+ CAMPHOR_CRATE("Camphor Crate", 62, 50, ItemID.CAMPHOR_CRATE),
ASTRONOMICAL_CHART("Astronomical Chart", 63, 45, ItemID.POH_WALLCHART_2),
TEAK_WARDROBE("Teak Wardrobe", 63, 270, ItemID.POH_WARDROBE_5),
MARBLE_FIREPLACE("Marble Fireplace", 63, 500, ItemID.POH_FIREPLACE_3),
@@ -179,6 +189,7 @@ public enum ConstructionAction implements NamedSkillAction
OPULENT_RUG("Opulent Rug", 65, 360, ItemID.POH_RUG_3),
MAHOGANY_PORTAL("Mahogany Portal", 65, 420, ItemID.POH_PORTAL_FRAME_2),
GREATER_FOCUS("Greater Focus", 65, 500, ItemID.POH_TELEPORT_CENTREPIECE_2),
+ CAMPHOR_REPAIR_KIT("Camphor Repair Kit", 66, 255, ItemID.BOAT_REPAIR_KIT_CAMPHOR),
TEAK_GARDEN_BENCH("Teak Garden Bench", 66, 540, ItemID.POH_SUPERIOR_GARDEN_BENCH_TEAK),
CRYSTAL_OF_POWER("Crystal of Power", 66, 890, ItemID.POH_CRYSTALBALL_3),
MAHOGANY_DEMON_LECTERN("Mahogany Demon Lectern", 67, 580, ItemID.POH_LECTERN_7),
@@ -192,17 +203,21 @@ public enum ConstructionAction implements NamedSkillAction
OAK_DOOR("Oak Door", 74, 600, ItemID.POH_DUNGEON_DOOR_OAK),
MAGIC_TREE("Magic Tree", 75, 223, ItemID.POH_TREE_7),
MAHOGANY_WARDROBE("Mahogany Wardrobe", 75, 420, ItemID.POH_WARDROBE_6),
+ IRONWOOD_HULL_PARTS("Ironwood Hull Parts", 77, 437.5f, ItemID.SAILING_BOAT_HULL_PART_IRONWOOD),
GNOME_BENCH("Gnome Bench", 77, 840, ItemID.POH_SUPERIOR_GARDEN_BENCH_MAHOGANY),
ARMILLARY_GLOBE("Armillary Globe", 77, 960, ItemID.POH_GLOBE_1),
MARBLE_WALL("Marble Wall", 79, 4000, ItemID.POH_FENCING7),
+ IRONWOOD_REPAIR_KIT("Ironwood Repair Kit", 80, 300, ItemID.BOAT_REPAIR_KIT_IRONWOOD),
MARBLE_PORTAL("Marble Portal", 80, 1500, ItemID.POH_PORTAL_FRAME_3),
SCRYING_POOL("Scrying Pool", 80, 2000, ItemID.POH_TELEPORT_CENTREPIECE_3),
BALANCE_BEAM("Balance Beam", 81, 1000, ItemID.POH_COMBAT_RING_5),
INFERNAL_CHART("Infernal Chart", 83, 60, ItemID.POH_WALLCHART_3),
MAHOGANY_TELESCOPE("Mahogany Telescope", 84, 281, ItemID.POH_TELESCOPE_3),
+ ROSEWOOD_HULL_PARTS("Rosewood Hull Parts", 84, 475, ItemID.SAILING_BOAT_HULL_PART_ROSEWOOD),
GILDED_CLOCK("Gilded Clock", 85, 602, ItemID.POH_CLOCK_3),
SMALL_ORRERY("Small Orrery", 86, 1320, ItemID.POH_GLOBE_6),
GILDED_WARDROBE("Gilded Wardrobe", 87, 720, ItemID.POH_WARDROBE_7),
+ ROSEWOOD_REPAIR_KIT("Rosewood Repair Kit", 92, 330, ItemID.BOAT_REPAIR_KIT_ROSEWOOD),
LARGE_ORRERY("Large Orrery", 95, 1420, ItemID.POH_GLOBE_7),
CRYSTAL_THRONE("Crystal Throne", 95, 15000, ItemID.POH_THRONE_6),
DEMONIC_THRONE("Demonic Throne", 99, 25000, ItemID.POH_THRONE_7),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CookingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CookingAction.java
index bce36e86feb..52df99ad120 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CookingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CookingAction.java
@@ -76,6 +76,7 @@ public enum CookingAction implements ItemSkillAction
SERVERY_MEAT_PIE(ItemID.HOSIDIUS_SERVERY_MEAT_PIE, 20, 160),
POT_OF_CREAM(ItemID.POT_OF_CREAM, 21, 18),
ROAST_BEAST_MEAT(ItemID.SPIT_ROASTED_BEAST_MEAT, 21, 82.5f),
+ RED_CRAB_MEAT(ItemID.RED_CRAB_MEAT, 21, 90),
COOKED_CRAB_MEAT(ItemID.HUNDRED_PIRATE_GIANT_CRAB_MEAT_5, 21, 100),
FAT_SNAIL_MEAT(ItemID.SNAIL_CORPSE_COOKED3, 22, 95),
EGG_AND_TOMATO(ItemID.BOWL_EGG_TOMATO, 23, 50),
@@ -134,6 +135,7 @@ public enum CookingAction implements ItemSkillAction
POTATO_WITH_CHEESE(ItemID.POTATO_CHEESE, 47, 40),
FISH_PIE(ItemID.FISH_PIE, 47, 164),
CHEESE(ItemID.CHEESE, 48, 64, true),
+ BLUE_CRAB_MEAT(ItemID.BLUE_CRAB_MEAT, 48, 153),
AXEMANS_FOLLY(ItemID.AXEMANS_FOLLY, 49, 413),
COOKED_OOMLIE_WRAP(ItemID.COOKED_OOMLIE, 50, 30),
CHOCOLATE_CAKE(ItemID.CHOCOLATE_CAKE, 50, 210),
@@ -143,6 +145,7 @@ public enum CookingAction implements ItemSkillAction
LAVA_EEL(ItemID.LAVA_EEL, 53, 30),
CHEFS_DELIGHT(ItemID.CHEFS_DELIGHT, 54, 446),
ANCHOVY_PIZZA(ItemID.ANCHOVIE_PIZZA, 55, 182),
+ SWORDTIP_SQUID(ItemID.SWORDTIP_SQUID, 56, 150),
MUSHROOM_AND_ONION(ItemID.BOWL_MUSHROOM_ONION, 57, 120),
PITTA_BREAD(ItemID.PITTA_BREAD, 58, 40),
UGTHANKI_KEBAB_FRESH(ItemID.UGTHANKI_KEBAB_BAD, 58, 80),
@@ -158,17 +161,25 @@ public enum CookingAction implements ItemSkillAction
TUNA_AND_CORN(ItemID.BOWL_TUNA_SWEETCORN, 67, 204),
COOKED_SUNLIGHT_ANTELOPE(ItemID.ANTELOPESUN_COOKED, 68, 175),
TUNA_POTATO(ItemID.POTATO_TUNA_SWEETCORN, 68, 309.5f),
+ GIANT_KRILL(ItemID.GIANT_KRILL, 69, 177.5f),
ADMIRAL_PIE(ItemID.ADMIRAL_PIE, 70, 210),
+ JUMBO_SQUID(ItemID.JUMBO_SQUID, 71, 180),
SACRED_EEL(ItemID.SNAKEBOSS_EEL, 72, 109),
+ HADDOCK(ItemID.HADDOCK, 73, 180),
DRAGONFRUIT_PIE(ItemID.DRAGONFRUIT_PIE, 73, 220),
+ RAINBOW_CRAB_MEAT(ItemID.RAINBOW_CRAB_MEAT, 77, 212),
+ YELLOWFIN(ItemID.YELLOWFIN, 79, 200),
SHARK(ItemID.SHARK, 80, 210),
SEA_TURTLE(ItemID.SEATURTLE, 82, 211.3f),
COOKED_DASHING_KEBBIT(ItemID.DASHINGKEBBIT_COOKED, 82, 215),
+ HALIBUT(ItemID.HALIBUT, 83, 212.5f),
ANGLERFISH(ItemID.ANGLERFISH, 84, 230),
WILD_PIE(ItemID.WILD_PIE, 85, 240),
+ BLUEFIN(ItemID.BLUEFIN, 87, 215),
DARK_CRAB(ItemID.DARK_CRAB, 90, 215),
MANTA_RAY(ItemID.MANTARAY, 91, 216.3f),
COOKED_MOONLIGHT_ANTELOPE(ItemID.ANTELOPEMOON_COOKED, 92, 220),
+ MARLIN(ItemID.MARLIN, 93, 225),
SUMMER_PIE(ItemID.SUMMER_PIE, 95, 260),
;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CraftingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CraftingAction.java
index 40a8c80d03c..d9bf4672097 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CraftingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CraftingAction.java
@@ -56,6 +56,8 @@ public enum CraftingAction implements ItemSkillAction
BOW_STRING(ItemID.BOW_STRING, 10, 15),
CROSSBOW_STRING(ItemID.XBOWS_CROSSBOW_STRING, 10, 15),
LEATHER_VAMBRACES(ItemID.LEATHER_VAMBRACES, 11, 22),
+ LINEN_YARN(ItemID.LINEN_YARN, 12, 16),
+ BOLT_OF_LINEN(ItemID.BOLT_OF_LINEN, 12, 20),
EMPTY_OIL_LAMP(ItemID.OIL_LAMP_EMPTY, 12, 25),
JADE(ItemID.JADE, 13, 20),
JADE_RING(ItemID.JADE_RING, 13, 32),
@@ -103,6 +105,8 @@ public enum CraftingAction implements ItemSkillAction
BASKET(ItemID.BASKET_EMPTY, 36, 56),
COIF(ItemID.COIF, 38, 37, true),
TOPAZ_BRACELET(ItemID.TOPAZ_BRACELET, 38, 75),
+ HEMP_YARN(ItemID.HEMP_YARN, 39, 60),
+ BOLT_OF_CANVAS(ItemID.BOLT_OF_CANVAS, 39, 75),
RUBY_NECKLACE(ItemID.RUBY_NECKLACE, 40, 75),
HARD_LEATHER_SHIELD(ItemID.LEATHER_SHIELD, 41, 70),
GOLD_TIARA(ItemID.TIARA_GOLD, 42, 35),
@@ -144,6 +148,8 @@ public enum CraftingAction implements ItemSkillAction
BLUE_DHIDE_BODY(ItemID.BLUE_DRAGONHIDE_BODY, 71, 210),
DRAGONSTONE_NECKLACE(ItemID.DRAGONSTONE_NECKLACE, 72, 105),
RED_DHIDE_VAMB(ItemID.RED_DRAGON_VAMBRACES, 73, 78),
+ COTTON_YARN(ItemID.COTTON_YARN, 73, 105),
+ BOLT_OF_COTTON(ItemID.BOLT_OF_COTTON, 73, 132),
DRAGONSTONE_BRACELET(ItemID.JEWL_DRAGONSTONE_BRACELET, 74, 110),
MAGIC_BIRD_HOUSE(ItemID.BIRDHOUSE_MAGIC, 75, 50),
RED_DHIDE_CHAPS(ItemID.RED_DRAGONHIDE_CHAPS, 75, 156),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingAction.java
index 6f02fe8c21c..024a2510310 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingAction.java
@@ -56,18 +56,21 @@ public enum FarmingAction implements NamedSkillAction
TOMATOES("Tomatoes", 12, 12.5f, ItemID.TOMATO),
MARRENTILL("Marrentill", 14, 13.5f, ItemID.MARENTILL),
OAK_TREE("Oak Tree", 15, 481.3f, ItemID.OAK_LOGS),
+ FLAX("Flax", 18, 16, ItemID.FLAX),
TARROMIN("Tarromin", 19, 16, ItemID.TARROMIN),
SWEETCORN("Sweetcorn", 20, 17, ItemID.SWEETCORN),
GIANT_SEAWEED("Giant seaweed", 23, 21, ItemID.GIANT_SEAWEED),
HARRALANDER("Harralander", 26, 21.5f, ItemID.HARRALANDER),
LIMPWURT_PLANT("Limpwurt Plant", 26, 40, ItemID.LIMPWURT_ROOT),
APPLE_TREE("Apple Tree", 27, 1221.5f, ItemID.COOKING_APPLE),
+ ELKHRON_CORAL("Elkhorn Coral", 28, 20.5f, ItemID.CORAL_ELKHORN),
GOUTWEED("Goutweed", 29, 105, ItemID.EADGAR_GOUTWEED_HERB),
WILLOW_TREE("Willow Tree", 30, 1481.5f, ItemID.WILLOW_LOGS),
STRAWBERRIES("Strawberries", 31, 26, ItemID.STRAWBERRY),
RANARR_WEED("Ranarr Weed", 32, 27, ItemID.RANARR_WEED),
BANANA_TREE("Banana Tree", 33, 1778.5f, ItemID.BANANA),
TEAK_TREE("Teak Tree", 35, 7315, ItemID.TEAK_LOGS),
+ HEMP("Hemp", 37, 33, ItemID.HEMP),
TOADFLAX("Toadflax", 38, 34, ItemID.TOADFLAX),
ORANGE_TREE("Orange Tree", 39, 2505.7f, ItemID.ORANGE),
CURRY_TREE("Curry Tree", 42, 2946.9f, ItemID.CURRY_LEAF),
@@ -76,6 +79,7 @@ public enum FarmingAction implements NamedSkillAction
WATERMELONS("Watermelons", 47, 49, ItemID.WATERMELON),
AVANTOE("Avantoe", 50, 54.5f, ItemID.AVANTOE),
PINEAPPLE_PLANT("Pineapple Plant", 51, 4662.7f, ItemID.PINEAPPLE),
+ PILLAR_CORAL("Pillar Coral", 52, 52, ItemID.CORAL_PILLAR),
MAHOGANY_TREE("Mahogany Tree", 55, 15783, ItemID.MAHOGANY_LOGS),
KWUARM("Kwuarm", 56, 69, ItemID.KWUARM),
PAPAYA_TREE("Papaya Tree", 57, 6218.4f, ItemID.PAPAYA),
@@ -85,18 +89,23 @@ public enum FarmingAction implements NamedSkillAction
SNAPDRAGON("Snapdragon", 62, 87.5f, ItemID.SNAPDRAGON),
HUASCA("Huasca", 65, 86.5f, ItemID.HUASCA),
HESPORI("Hespori", 65, 12662, ItemID.HESPORI),
+ CAMPHOR_TREE("Camphor Tree", 66, 17928, ItemID.CAMPHOR_LOGS),
CADANTINE("Cadantine", 67, 106.5f, ItemID.CADANTINE),
PALM_TREE("Palm Tree", 68, 10260.6f, ItemID.COCONUT),
+ COTTON_BOLL("Cotton Boll", 71, 72, ItemID.COTTON_BOLL),
CALQUAT_TREE("Calquat Tree", 72, 12225.5f, ItemID.CALQUAT_FRUIT),
LANTADYME("Lantadyme", 73, 134.5f, ItemID.LANTADYME),
CRYSTAL_TREE("Crystal Tree", 74, 13366, ItemID.PRIF_CRYSTAL_SHARD),
MAGIC_TREE("Magic Tree", 75, 13913.8f, ItemID.MAGIC_LOGS),
+ UMBRAL_CORAL("Umbral Coral", 77, 136, ItemID.CORAL_UMBRAL),
DWARF_WEED("Dwarf Weed", 79, 170.5f, ItemID.DWARF_WEED),
+ IRONWOOD_TREE("Ironwood Tree", 80, 20525, ItemID.IRONWOOD_LOGS),
DRAGONFRUIT_TREE("Dragonfruit Tree", 81, 17895, ItemID.DRAGONFRUIT),
SPIRIT_TREE("Spirit Tree", 83, 19501.3f, ItemID.SPIRIT_TREE_DUMMY),
TORSTOL("Torstol", 85, 199.5f, ItemID.TORSTOL),
CELASTRUS_TREE("Celastrus Tree", 85, 14334, ItemID.CELASTRUS_WOOD),
REDWOOD_TREE("Redwood Tree", 90, 22680, ItemID.REDWOOD_LOGS),
+ ROSEWOOD_TREE("Rosewood Tree", 92, 23352, ItemID.ROSEWOOD_LOGS),
;
private final String name;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingAction.java
index 0d4f7607c3c..f3b51a2edb5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingAction.java
@@ -47,6 +47,7 @@ public enum FiremakingAction implements ItemSkillAction
WILLOW_LOGS(ItemID.WILLOW_LOGS, 30, 90, FiremakingMethod.NORMAL_LOGS),
WILLOW_PYRE_LOGS(ItemID.WILLOW_LOGS_PYRE, 35, 100, FiremakingMethod.PYRE_LOGS),
TEAK_LOGS(ItemID.TEAK_LOGS, 35, 105, FiremakingMethod.NORMAL_LOGS),
+ JATOBA_LOGS(ItemID.JATOBA_LOGS, 40, 120, FiremakingMethod.NORMAL_LOGS),
TEAK_PYRE_LOGS(ItemID.TEAK_LOGS_PYRE, 40, 120, FiremakingMethod.PYRE_LOGS),
ARCTIC_PINE_LOGS(ItemID.ARCTIC_PINE_LOG, 42, 125, FiremakingMethod.NORMAL_LOGS),
MAPLE_LOGS(ItemID.MAPLE_LOGS, 45, 135, FiremakingMethod.NORMAL_LOGS),
@@ -57,10 +58,40 @@ public enum FiremakingAction implements ItemSkillAction
YEW_LOGS(ItemID.YEW_LOGS, 60, 202.5f, FiremakingMethod.NORMAL_LOGS),
BLISTERWOOD_LOGS(ItemID.BLISTERWOOD_LOGS, 62, 96, FiremakingMethod.NORMAL_LOGS),
YEW_PYRE_LOGS(ItemID.YEW_LOGS_PYRE, 65, 255, FiremakingMethod.PYRE_LOGS),
+ CAMPHOR_LOGS(ItemID.CAMPHOR_LOGS, 66, 180, FiremakingMethod.NORMAL_LOGS),
+ CAMPHOR_PYRE_LOGS(ItemID.CAMPHOR_LOGS_PYRE, 71, 320, FiremakingMethod.PYRE_LOGS),
MAGIC_LOGS(ItemID.MAGIC_LOGS, 75, 303.8f, FiremakingMethod.NORMAL_LOGS),
+ IRONWOOD_LOGS(ItemID.IRONWOOD_LOGS, 80, 220.5f, FiremakingMethod.NORMAL_LOGS),
MAGIC_PYRE_LOGS(ItemID.MAGIC_LOGS_PYRE, 80, 404.5f, FiremakingMethod.PYRE_LOGS),
+ IRONWOOD_PYRE_LOGS(ItemID.IRONWOOD_LOGS_PYRE, 85, 435, FiremakingMethod.PYRE_LOGS),
+ CAMPHOR_LOGS_BARBARIAN(ItemID.CAMPHOR_LOGS, 86, 245, FiremakingMethod.NORMAL_LOGS)
+ {
+ @Override
+ public String getName(final ItemManager itemManager)
+ {
+ return "Camphor logs (barbarian)";
+ }
+ },
REDWOOD_LOGS(ItemID.REDWOOD_LOGS, 90, 350, FiremakingMethod.NORMAL_LOGS),
+ ROSEWOOD_LOGS(ItemID.ROSEWOOD_LOGS, 92, 268, FiremakingMethod.NORMAL_LOGS),
REDWOOD_PYRE_LOGS(ItemID.REDWOOD_LOGS_PYRE, 95, 500, FiremakingMethod.PYRE_LOGS),
+ ROSEWOOD_PYRE_LOGS(ItemID.ROSEWOOD_LOGS_PYRE, 97, 580, FiremakingMethod.PYRE_LOGS),
+ IRONWOOD_LOGS_BARBARIAN(ItemID.IRONWOOD_LOGS, 99, 320, FiremakingMethod.NORMAL_LOGS)
+ {
+ @Override
+ public String getName(final ItemManager itemManager)
+ {
+ return "Ironwood logs (barbarian)";
+ }
+ },
+ ROSEWOOD_LOGS_BARBARIAN(ItemID.ROSEWOOD_LOGS, 99, 420, FiremakingMethod.NORMAL_LOGS)
+ {
+ @Override
+ public String getName(final ItemManager itemManager)
+ {
+ return "Rosewood logs (barbarian)";
+ }
+ },
;
private final int itemId;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingAction.java
index b6007121da5..489dbe82c7a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingAction.java
@@ -24,9 +24,12 @@
*/
package net.runelite.client.plugins.skillcalculator.skills;
+import java.util.Collections;
+import java.util.Set;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.runelite.api.gameval.ItemID;
+import static net.runelite.client.plugins.skillcalculator.skills.FishingBonus.ANGLERS_OUTFIT;
@AllArgsConstructor
@Getter
@@ -55,21 +58,47 @@ public enum FishingAction implements ItemSkillAction
RAW_BASS(ItemID.RAW_BASS, 46, 100),
LEAPING_TROUT(ItemID.BRUT_SPAWNING_TROUT, 48, 50),
RAW_SWORDFISH(ItemID.RAW_SWORDFISH, 50, 100),
+ RAW_SWORDTIP_SQUID(ItemID.RAW_SWORDTIP_SQUID, 52, 55),
LEAPING_SALMON(ItemID.BRUT_SPAWNING_SALMON, 58, 70),
RAW_MONKFISH(ItemID.RAW_MONKFISH, 62, 120),
RAW_KARAMBWAN(ItemID.TBWT_RAW_KARAMBWAN, 65, 50),
+ RAW_JUMBO_SQUID(ItemID.RAW_JUMBO_SQUID, 69, 75),
+ RAW_GIANT_KRILL(ItemID.RAW_GIANT_KRILL, 69, 112.5f),
LEAPING_STURGEON(ItemID.BRUT_STURGEON, 70, 80),
+ RAW_HADDOCK(ItemID.RAW_HADDOCK, 73, 128.5f),
RAW_SHARK(ItemID.RAW_SHARK, 76, 110),
RAW_SEA_TURTLE(ItemID.RAW_SEATURTLE, 79, 38),
+ RAW_YELLOWFIN(ItemID.RAW_YELLOWFIN, 79, 155.5f),
INFERNAL_EEL(ItemID.INFERNAL_EEL, 80, 95),
RAW_MANTA_RAY(ItemID.RAW_MANTARAY, 81, 46),
MINNOW(ItemID.MINNOW, 82, 26.5f),
RAW_ANGLERFISH(ItemID.RAW_ANGLERFISH, 82, 120),
+ RAW_HALIBUT(ItemID.RAW_HALIBUT, 83, 195.5f),
RAW_DARK_CRAB(ItemID.RAW_DARK_CRAB, 85, 130),
SACRED_EEL(ItemID.SNAKEBOSS_EEL, 87, 105),
+ RAW_BLUEFIN(ItemID.RAW_BLUEFIN, 87, 220.5f),
+ RAW_MARLIN(ItemID.RAW_MARLIN, 91, 265.5f),
;
private final int itemId;
private final int level;
private final float xp;
+
+ @Override
+ public Set getExcludedSkillBonuses()
+ {
+ switch (this)
+ {
+ case RAW_GIANT_KRILL:
+ case RAW_HADDOCK:
+ case RAW_YELLOWFIN:
+ case RAW_HALIBUT:
+ case RAW_BLUEFIN:
+ case RAW_MARLIN:
+ return Set.of(ANGLERS_OUTFIT);
+ default:
+ return Collections.emptySet();
+ }
+ }
+
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FletchingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FletchingAction.java
index 31ffc5edcbe..eae56a5b8e5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FletchingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FletchingAction.java
@@ -122,6 +122,7 @@ public String getName(final ItemManager itemManager)
SAPPHIRE_BOLTS(ItemID.XBOWS_CROSSBOW_BOLTS_MITHRIL_TIPPED_SAPPHIRE, 56, 4.7f),
MAPLE_SHIELD(ItemID.MAPLE_SHIELD, 57, 116.5f),
EMERALD_BOLTS(ItemID.XBOWS_CROSSBOW_BOLTS_MITHRIL_TIPPED_EMERALD, 58, 5.5f),
+ CAMPHOR_BLOWPIPE(ItemID.CAMPHOR_BLOWPIPE, 58, 140),
HUNTERS_SPEAR(ItemID.HG_HUNTER_SPEAR, 60, 9.5f),
ADAMANT_ARROW(ItemID.ADAMANT_ARROW, 60, 10),
ADAMANT_BOLTS(ItemID.XBOWS_CROSSBOW_BOLTS_ADAMANTITE, 61, 7),
@@ -150,6 +151,7 @@ public String getName(final ItemManager itemManager)
YEW_LONGBOW_U(ItemID.UNSTRUNG_YEW_LONGBOW, 70, 75),
DRAGONSTONE_BOLTS(ItemID.XBOWS_CROSSBOW_BOLTS_RUNITE_TIPPED_DRAGONSTONE, 71, 8.2f),
YEW_SHIELD(ItemID.YEW_SHIELD, 72, 150),
+ IRONWOOD_BLOWPIPE(ItemID.IRONWOOD_BLOWPIPE, 72, 170),
ONYX_BOLTS(ItemID.XBOWS_CROSSBOW_BOLTS_RUNITE_TIPPED_ONYX, 73, 9.4f),
ATLATL_DART_TIPS(ItemID.ATLATL_DART_TIPS, 74, 0.1f),
ATLATL_DART_SHAFT(ItemID.ATLATL_DART_SHAFT, 74, 0.3f),
@@ -184,6 +186,7 @@ public String getName(final ItemManager itemManager)
AMETHYST_ARROW(ItemID.AMETHYST_ARROW, 82, 13.5f),
DRAGON_BOLTS(ItemID.DRAGON_BOLTS_UNFEATHERED, 84, 12),
AMETHYST_JAVELIN(ItemID.AMETHYST_JAVELIN, 84, 13.5f),
+ ROSEWOOD_BLOWPIPE(ItemID.ROSEWOOD_BLOWPIPE, 84, 200),
MAGIC_LONGBOW(ItemID.MAGIC_LONGBOW, 85, 91.5f),
MAGIC_LONGBOW_U(ItemID.UNSTRUNG_MAGIC_LONGBOW, 85, 91.5f),
MAGIC_SHIELD(ItemID.MAGIC_SHIELD, 87, 183),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java
index 7ae81e989f0..5aa5be17644 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java
@@ -60,6 +60,7 @@ public enum HerbloreAction implements ItemSkillAction
SUPER_ATTACK_3(ItemID._3DOSE2ATTACK, 45, 100),
AVANTOE(ItemID.AVANTOE, 48, 10),
SUPERANTIPOISON_3(ItemID._3DOSE2ANTIPOISON, 48, 106.3f),
+ ANTI_ODOUR_SALT(ItemID.ANTI_ODOUR_SALT, 49, 11),
FISHING_POTION_3(ItemID._3DOSEFISHERSPOTION, 50, 112.5f),
SUPER_ENERGY_3(ItemID._3DOSE2ENERGY, 52, 117.5f),
HUNTER_POTION_3(ItemID._3DOSEHUNTING, 53, 120),
@@ -67,6 +68,8 @@ public enum HerbloreAction implements ItemSkillAction
GOADING_POTION_3(ItemID._3DOSEGOADING, 54, 132),
IRIT_TAR(ItemID.SALAMANDER_TAR_MOUNTAIN, 55, 85),
SUPER_STRENGTH_3(ItemID._3DOSE2STRENGTH, 55, 125),
+ HAEMOSTATIC_POULTICE(ItemID.HAEMOSTATIC_POULTICE, 56, 27),
+ HAEMOSTATIC_DRESSING_3(ItemID._3DOSEHAEMOSTATICDRESSING, 56, 100),
MAGIC_ESSENCE_POTION_3(ItemID._3DOSEMAGICESS, 57, 130),
HUASCA(ItemID.HUASCA, 58, 11.8f),
PRAYER_REGENERATION_POTION(ItemID._3DOSE1PRAYER_REGENERATION, 58, 132),
@@ -75,13 +78,16 @@ public enum HerbloreAction implements ItemSkillAction
ALCOAUGMENTATOR(ItemID.MM_POTION_AAA_UNFINISHED, 60, 190),
LIPLACK_LIQUOR(ItemID.MM_POTION_LLL_UNFINISHED, 60, 190),
MAMMOTHMIGHT_MIX(ItemID.MM_POTION_MMM_UNFINISHED, 60, 190),
+ SUPER_FISHING_POTION_3(ItemID._3DOSE2FISHERSPOTION, 62, 140.5f),
SUPER_RESTORE_3(ItemID._3DOSE2RESTORE, 63, 142.5f),
MYSTIC_MANA_AMALGAM(ItemID.MM_POTION_MMA_UNFINISHED, 63, 215),
CADANTINE(ItemID.CADANTINE, 65, 12.5f),
SANFEW_SERUM_3(ItemID.SANFEW_SALVE_3_DOSE, 65, 160),
+ EXTREME_ENERGY_POTION_4(ItemID._4DOSE3ENERGY, 66, 84),
SUPER_DEFENCE_3(ItemID._3DOSE2DEFENSE, 66, 150),
MARLEYS_MOONLIGHT(ItemID.MM_POTION_MML_UNFINISHED, 66, 240),
LANTADYME(ItemID.LANTADYME, 67, 13.1f),
+ SUPER_HUNTER_POTION_3(ItemID._3DOSE2HUNTING, 67, 154),
ANTIDOTE_PLUS_4(ItemID.ANTIDOTE_4, 68, 155),
ANTIFIRE_POTION_3(ItemID._3DOSE1ANTIDRAGON, 69, 157.5f),
AZURE_AURA_MIX(ItemID.MM_POTION_AAM_UNFINISHED, 69, 265),
@@ -96,7 +102,6 @@ public enum HerbloreAction implements ItemSkillAction
TORSTOL(ItemID.TORSTOL, 75, 15),
MEGALITE_LIQUID(ItemID.MM_POTION_LLM_UNFINISHED, 75, 315),
MAGIC_POTION_3(ItemID._3DOSE1MAGIC, 76, 172.5f),
- STAMINA_POTION_3(ItemID._3DOSESTAMINA, 77, 76.5f),
STAMINA_POTION_4(ItemID._4DOSESTAMINA, 77, 102),
DIVINE_MAGIC_POTION_4(ItemID._4DOSEDIVINEMAGIC, 78, 2),
ZAMORAK_BREW_3(ItemID._3DOSEPOTIONOFZAMORAK, 78, 175),
@@ -108,21 +113,20 @@ public enum HerbloreAction implements ItemSkillAction
SURGE_POTION_3(ItemID._3DOSESURGE, 81, 185),
MIXALOT(ItemID.MM_POTION_MAL_UNFINISHED, 81, 365),
WEAPON_POISON_PLUS_PLUS(ItemID.WEAPON_POISON__, 82, 190),
- EXTENDED_ANTIFIRE_3(ItemID._3DOSE2ANTIDRAGON, 84, 82.5f),
EXTENDED_ANTIFIRE_4(ItemID._4DOSE2ANTIDRAGON, 84, 110),
+ EXTENDED_STAMINA_POTION_4(ItemID._4DOSE2STAMINA, 85, 110),
ANCIENT_BREW_4(ItemID._4DOSEANCIENTBREW, 85, 190),
DIVINE_BASTION_POTION_4(ItemID._4DOSEDIVINEBASTION, 86, 2),
DIVINE_BATTLEMAGE_POTION_4(ItemID._4DOSEDIVINEBATTLEMAGE, 86, 2),
- ANTIVENOM_3(ItemID.ANTIVENOM3, 87, 90),
ANTIVENOM_4(ItemID.ANTIVENOM4, 87, 120),
MENAPHITE_REMEDY_3(ItemID._3DOSESTATRENEWAL, 88, 200),
+ ARMADYL_BREW_3(ItemID._3DOSEARMADYLBREW, 89, 205),
SUPER_COMBAT_POTION_4(ItemID._4DOSE2COMBAT, 90, 150),
FORGOTTEN_BREW_4(ItemID._4DOSEFORGOTTENBREW, 91, 145),
SUPER_ANTIFIRE_4(ItemID._4DOSE3ANTIDRAGON, 92, 130),
EXTENDED_ANTIVENOM_PLUS_4(ItemID.EXTENDED_ANTIVENOM_4, 94, 80),
ANTIVENOM_PLUS_4(ItemID.ANTIVENOM_4, 94, 125),
DIVINE_SUPER_COMBAT_POTION_4(ItemID._4DOSEDIVINECOMBAT, 97, 2),
- EXTENDED_SUPER_ANTIFIRE_3(ItemID._3DOSE4ANTIDRAGON, 98, 120),
EXTENDED_SUPER_ANTIFIRE_4(ItemID._4DOSE4ANTIDRAGON, 98, 160),
;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HunterAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HunterAction.java
index d33f2ba61f3..a0f547f1011 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HunterAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HunterAction.java
@@ -47,6 +47,7 @@ public enum HunterAction implements NamedSkillAction
BABY_IMPLING("Baby Impling", 17, 18, ItemID.II_CAPTURED_IMPLING_1),
TROPICAL_WAGTAIL("Tropical Wagtail", 19, 95, ItemID.HUNTGUIDE_COLOURED_BIRD),
MOSS_LIZARD("Moss Lizard", 20, 90, ItemID.RAW_LIZARD),
+ RED_CRAB("Red Crab", 21, 64, ItemID.RED_CRAB),
YOUNG_IMPLING("Young Impling", 22, 20, ItemID.II_CAPTURED_IMPLING_2),
WILD_KEBBIT("Wild Kebbit", 23, 128, ItemID.HUNTGUIDE_POLAR_BEAST),
WILLOW_BIRD_HOUSE("Willow Bird House", 24, 560, ItemID.BIRDHOUSE_WILLOW),
@@ -68,6 +69,7 @@ public enum HunterAction implements NamedSkillAction
MAPLE_BIRD_HOUSE("Maple Bird House", 44, 820, ItemID.BIRDHOUSE_MAPLE),
BLACK_WARLOCK("Black Warlock", 45, 54, ItemID.HUNTGUIDE_BLACK_BUTTERFLY),
ORANGE_SALAMANDER("Orange Salamander", 47, 224, ItemID.ORANGE_SALAMANDER),
+ BLUE_CRAB("Blue Crab", 48, 136, ItemID.BLUE_CRAB),
RAZOR_BACKED_KEBBIT("Razor-backed Kebbit", 49, 348, ItemID.HUNTGUIDE_RAZOR2_BEAST),
MAHOGANY_BIRD_HOUSE("Mahogany Bird House", 49, 960, ItemID.BIRDHOUSE_MAHOGANY),
ECLECTIC_IMPLING("Eclectic Impling", 50, 32, ItemID.II_CAPTURED_IMPLING_6),
@@ -92,6 +94,7 @@ public enum HunterAction implements NamedSkillAction
NINJA_IMPLING_GIELINOR("Ninja Impling (Gielinor)", 74, 240, ItemID.II_CAPTURED_IMPLING_9),
MAGIC_BIRD_HOUSE("Magic Bird House", 74, 1140, ItemID.BIRDHOUSE_MAGIC),
MOONLIGHT_MOTH("Moonlight Moth", 75, 84, ItemID.HUNTGUIDE_MOONLIGHT_MOTH),
+ RAINBOW_CRAB("Rainbow Crab", 77, 216, ItemID.RAINBOW_CRAB_C),
TECU_SALAMANDER("Tecu Salamander", 79, 344, ItemID.MOUNTAIN_SALAMANDER),
CRYSTAL_IMPLING("Crystal Impling", 80, 280, ItemID.II_CAPTURED_IMPLING_12),
DRAGON_IMPLING("Dragon Impling", 83, 65, ItemID.II_CAPTURED_IMPLING_10),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningAction.java
index 61611dd47cb..3ddb7be3692 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningAction.java
@@ -49,6 +49,7 @@ public String getName(final ItemManager itemManager)
BARRONITE_DEPOSIT(ItemID.CAMDOZAAL_BARRONITE_DEPOSIT, 14, 32),
IRON_ORE(ItemID.IRON_ORE, 15, 35),
SILVER_ORE(ItemID.SILVER_ORE, 20, 40),
+ LEAD_ORE(ItemID.LEAD_ORE, 25, 40.5f),
PURE_ESSENCE(ItemID.BLANKRUNE_HIGH, 30, 5)
{
@Override
@@ -77,12 +78,13 @@ public String getName(final ItemManager itemManager)
@Override
public String getName(final ItemManager itemManager)
{
- return "Calcified Rocks";
+ return "Calcified rocks";
}
},
GRANITE_500G(ItemID.ENAKH_GRANITE_TINY, 45, 50),
GRANITE_2KG(ItemID.ENAKH_GRANITE_SMALL, 45, 60),
GRANITE_5KG(ItemID.ENAKH_GRANITE_MEDIUM, 45, 75),
+ RUBIUM_SPLINTERS(ItemID.RUBIUM_SPLINTERS, 48, 72),
MITHRIL_ORE(ItemID.MITHRIL_ORE, 55, 80),
SOFT_CLAY(ItemID.SOFTCLAY, 70, 5)
{
@@ -93,6 +95,7 @@ public boolean isMembers(final ItemManager itemManager)
}
},
ADAMANTITE_ORE(ItemID.ADAMANTITE_ORE, 70, 95),
+ NICKEL_ORE(ItemID.NICKEL_ORE, 74, 80.5f),
RUNITE_ORE(ItemID.RUNITE_ORE, 85, 125),
AMETHYST(ItemID.AMETHYST, 92, 240),
;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerAction.java
index 934a2375773..cb19a2b23da 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerAction.java
@@ -60,6 +60,7 @@ public enum PrayerAction implements ItemSkillAction
PHRIN_REMAINS(ItemID.SHADE_BONES2, 1, 46.5f, PrayerMethod.SHADE_REMAINS),
WYRM_BONES(ItemID.WYRM_BONES, 1, 50, PrayerMethod.BONES),
RIYL_REMAINS(ItemID.SHADE_BONES3, 1, 59.5f, PrayerMethod.SHADE_REMAINS),
+ STRYKEWYRM_BONES(ItemID.STRYKEWYRM_BONES, 1, 60, PrayerMethod.BONES),
MALICIOUS_ASHES(ItemID.MALICIOUS_ASHES, 1, 65, PrayerMethod.DEMONIC_ASHES),
DRAGON_BONES(ItemID.DRAGON_BONES, 1, 72, PrayerMethod.BONES),
WYVERN_BONES(ItemID.WYVERN_BONES, 1, 72, PrayerMethod.BONES),
@@ -70,6 +71,7 @@ public enum PrayerAction implements ItemSkillAction
ABYSSAL_ASHES(ItemID.ABYSSAL_ASHES, 1, 85, PrayerMethod.DEMONIC_ASHES),
LAVA_DRAGON_BONES(ItemID.LAVA_DRAGON_BONES, 1, 85, PrayerMethod.BONES),
RAURG_BONES(ItemID.ZOGRE_ANCESTRAL_BONES_RAURG, 1, 96, PrayerMethod.BONES),
+ FROST_DRAGON_BONES(ItemID.FROST_DRAGON_BONES, 1, 100, PrayerMethod.BONES),
HYDRA_BONES(ItemID.HYDRA_BONES, 1, 110, PrayerMethod.BONES),
INFERNAL_ASHES(ItemID.INFERNAL_ASHES, 1, 110, PrayerMethod.DEMONIC_ASHES),
URIUM_REMAINS(ItemID.SHADE_BONES6, 1, 120.5f, PrayerMethod.SHADE_REMAINS),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SailingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SailingAction.java
new file mode 100644
index 00000000000..66f0b700f85
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SailingAction.java
@@ -0,0 +1,64 @@
+package net.runelite.client.plugins.skillcalculator.skills;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import net.runelite.api.gameval.ItemID;
+import net.runelite.client.game.ItemManager;
+
+@AllArgsConstructor
+@Getter
+public enum SailingAction implements NamedSkillAction
+{
+ SMALL_SHIPWRECK_SORTING("Small Shipwreck Salvage (Sorting)", 15, 5, ItemID.SAILING_SMALL_SHIPWRECK_SALVAGE),
+ SMALL_SHIPWRECK_SALVAGE("Small Shipwreck Salvage (Salvaging)", 15, 10, ItemID.SAILING_SMALL_SHIPWRECK_SALVAGE),
+ FISHY_SHIPWRECK_SORTING("Fishy Shipwreck Salvage (Sorting)", 26, 9, ItemID.SAILING_FISHERMAN_SHIPWRECK_SALVAGE),
+ FISHY_SHIPWRECK_SALVAGE("Fishy Shipwreck Salvage (Salvaging)", 26, 17, ItemID.SAILING_FISHERMAN_SHIPWRECK_SALVAGE),
+ TEMPEST_TRIAL_UNRANKED("Unranked Tempor Trial", 30, 300, ItemID.RALPHS_FABRIC_ROLL),
+ TEMPEST_TRIAL_SWORDFISH("Swordfish Tempor Trial", 30, 595, ItemID.RALPHS_FABRIC_ROLL),
+ TEMPEST_TRIAL_SHARK("Shark Tempor Trial", 30, 1025, ItemID.RALPHS_FABRIC_ROLL),
+ TEMPEST_TRIAL_MARLIN("Marlin Tempor Trial", 30, 1790, ItemID.RALPHS_FABRIC_ROLL),
+ TEST_BOUNTY_30("Level 30 Bounty", 30, 1790, ItemID.SAILING_BULL_SHARK_JAW),
+ BARRACUDA_SHIPWRECK_SORTING("Barracuda Shipwreck Salvage (Sorting)", 35, 15.5f, ItemID.SAILING_BARRACUDA_SHIPWRECK_SALVAGE),
+ BARRACUDA_SHIPWRECK_SALVAGE("Barracuda Shipwreck Salvage (Salvaging)", 35, 31, ItemID.SAILING_BARRACUDA_SHIPWRECK_SALVAGE),
+ BOUNTY_38("Level 38 Bounty", 38, 2020, ItemID.SAILING_BULL_SHARK_JAW),
+ BOUNTY_40("Level 40 Bounty", 40, 3400, ItemID.SAILING_BULL_SHARK_JAW),
+ BOUNTY_45_48("Level 45-48 Bounty", 45, 3650, ItemID.SAILING_BULL_SHARK_JAW),
+ BOUNTY_50("Level 50 Bounty", 50, 4390, ItemID.SAILING_BULL_SHARK_JAW),
+ LARGE_SHIPWRECK_SORTING("Large Shipwreck Salvage (Sorting)", 53, 24, ItemID.SAILING_LARGE_SHIPWRECK_SALVAGE),
+ LARGE_SHIPWRECK_SALVAGE("Large Shipwreck Salvage (Salvaging)", 53, 48, ItemID.SAILING_LARGE_SHIPWRECK_SALVAGE),
+ JIVE_TRIAL_UNRANKED("Unranked Jubbly Jive Trial", 55, 1400, ItemID.GURTOBS_FABRIC_ROLL),
+ JIVE_TRIAL_SWORDFISH("Swordfish Jubbly Jive Trial", 55, 2200, ItemID.GURTOBS_FABRIC_ROLL),
+ JIVE_TRIAL_SHARK("Shark Jubbly Jive Trial", 55, 3950, ItemID.GURTOBS_FABRIC_ROLL),
+ JEST_BOUNTY_55("Level 50 Bounty", 55, 6360, ItemID.SAILING_BULL_SHARK_JAW),
+ JIVE_TRIAL_MARLIN("Marlin Jubbly Jive Trial", 55, 7500, ItemID.GURTOBS_FABRIC_ROLL),
+ BOUNTY_60_62("Level 60-62 Bounty", 60, 6760, ItemID.SAILING_BULL_SHARK_JAW),
+ PLUNDERED_SHIPWRECK_SORTING("Plundered Shipwreck Salvage (Sorting)", 64, 31.5f, ItemID.SAILING_PIRATE_SHIPWRECK_SALVAGE),
+ PLUNDERED_SHIPWRECK_SALVAGE("Plundered Shipwreck Salvage (Salvaging)", 64, 63, ItemID.SAILING_PIRATE_SHIPWRECK_SALVAGE),
+ BOUNTY_65_67("Level 65-67 Bounty", 65, 7500, ItemID.SAILING_BULL_SHARK_JAW),
+ BOUNTY_70("Level 70 Bounty", 70, 7730, ItemID.SAILING_BULL_SHARK_JAW),
+ GLIDE_TRIAL_UNRANKED("Unranked Gwenith Glide Trial", 72,3100, ItemID.GWYNAS_FABRIC_ROLL),
+ GLIDE_TRIAL_SWORDFISH("Swordfish Gwenith Glide Trial", 72,4100, ItemID.GWYNAS_FABRIC_ROLL),
+ GLIDE_TRIAL_SHARK("Shark Gwenith Glide Trial", 72, 9315, ItemID.GWYNAS_FABRIC_ROLL),
+ GLIDE_TRIAL_MARLIN("Marlin Gwenith Glide Trial", 72, 18160, ItemID.GWYNAS_FABRIC_ROLL),
+ MARTIAL_SHIPWRECK_SORTING("Martial Shipwreck Salvage (Sorting)", 73, 63.5f, ItemID.SAILING_MERCENARY_SHIPWRECK_SALVAGE),
+ MARTIAL_SHIPWRECK_SALVAGE("Martial Shipwreck Salvage (Salvaging)", 73, 127, ItemID.SAILING_MERCENARY_SHIPWRECK_SALVAGE),
+ BOUNTY_75_76("Level 75-76 Bounty", 75, 8540, ItemID.SAILING_BULL_SHARK_JAW),
+ FREMENNIK_SHIPWRECK_SORTING("Fremennik Shipwreck Salvage (Sorting)", 80, 75, ItemID.SAILING_FREMENNIK_SHIPWRECK_SALVAGE),
+ FREMENNIK_SHIPWRECK_SALVAGE("Fremennik Shipwreck Salvage (Salvaging)", 80, 150, ItemID.SAILING_FREMENNIK_SHIPWRECK_SALVAGE),
+ ARMOURED_KRAKEN_BOUNTY("Level 80 Bounty", 80, 9540, ItemID.SAILING_BULL_SHARK_JAW),
+ OPULENT_SHIPWRECK_SORTING("Opulent Shipwreck Salvage (Sorting)", 87, 95, ItemID.SAILING_MERCHANT_SHIPWRECK_SALVAGE),
+ OPULENT_SHIPWRECK_SALVAGE("Opulent Shipwreck Salvage (Salvaging)", 87, 190, ItemID.SAILING_MERCHANT_SHIPWRECK_SALVAGE),
+
+ ;
+
+ private final String name;
+ private final int level;
+ private final float xp;
+ private final int icon;
+
+ @Override
+ public boolean isMembers(final ItemManager itemManager)
+ {
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SailingBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SailingBonus.java
new file mode 100644
index 00000000000..46c7c486f2b
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SailingBonus.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021, Jordan Atwood
+ * 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.skillcalculator.skills;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter(onMethod_ = @Override)
+public enum SailingBonus implements SkillBonus
+{
+ HORIZONS_LURE("Horizon's Lure", 1.025f),
+ ;
+
+ private final String name;
+ private final float value;
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SmithingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SmithingAction.java
index 88c9c03b7f3..9c79ba936a0 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SmithingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SmithingAction.java
@@ -44,6 +44,7 @@ public enum SmithingAction implements ItemSkillAction
BRONZE_NAILS(ItemID.NAILS_BRONZE, 4, 12.5f),
BRONZE_SWORD(ItemID.BRONZE_SWORD, 4, 12.5f),
BRONZE_WIRE(ItemID.BRONZECRAFTWIRE, 4, 12.5f),
+ BRONZE_CANNONBALL(ItemID.BRONZE_CANNONBALL, 5, 9),
BRONZE_ARROWTIPS(ItemID.BRONZE_ARROWHEADS, 5, 12.5f),
BRONZE_HASTA(ItemID.BRUT_BRONZE_SPEAR, 5, 25),
BRONZE_SCIMITAR(ItemID.BRONZE_SCIMITAR, 5, 25),
@@ -56,6 +57,7 @@ public enum SmithingAction implements ItemSkillAction
BRONZE_SQ_SHIELD(ItemID.BRONZE_SQ_SHIELD, 8, 25),
BRONZE_WARHAMMER(ItemID.BRONZE_WARHAMMER, 9, 37.5f),
BRONZE_BATTLEAXE(ItemID.BRONZE_BATTLEAXE, 10, 37.5f),
+ BRONZE_KEEL_PARTS(ItemID.SAILING_BOAT_KEEL_PART_BRONZE, 10, 62.5f),
BRONZE_CHAINBODY(ItemID.BRONZE_CHAINBODY, 11, 37.5f),
BRONZE_KITESHIELD(ItemID.BRONZE_KITESHIELD, 12, 37.5f),
BRONZE_CLAWS(ItemID.BRONZE_CLAWS, 13, 25),
@@ -75,6 +77,7 @@ public enum SmithingAction implements ItemSkillAction
IRON_NAILS(ItemID.NAILS_IRON, 19, 25),
IRON_SWORD(ItemID.IRON_SWORD, 19, 25),
SILVER_BAR(ItemID.SILVER_BAR, 20, 13.7f),
+ IRON_CANNONBALL(ItemID.IRON_CANNONBALL, 20, 17),
IRON_ARROWTIPS(ItemID.IRON_ARROWHEADS, 20, 25),
IRON_HASTA(ItemID.BRUT_IRON_SPEAR, 20, 50),
IRON_SCIMITAR(ItemID.IRON_SCIMITAR, 20, 50),
@@ -83,9 +86,11 @@ public enum SmithingAction implements ItemSkillAction
IRON_LONGSWORD(ItemID.IRON_LONGSWORD, 21, 50),
IRON_KNIFE(ItemID.IRON_KNIFE, 22, 25),
IRON_FULL_HELM(ItemID.IRON_FULL_HELM, 22, 50),
+ IRON_KEEL_PARTS(ItemID.SAILING_BOAT_KEEL_PART_IRON, 22, 125f),
IRON_LIMBS(ItemID.XBOWS_CROSSBOW_LIMBS_IRON, 23, 25),
IRON_SQ_SHIELD(ItemID.IRON_SQ_SHIELD, 23, 50),
IRON_WARHAMMER(ItemID.IRON_WARHAMMER, 24, 75),
+ LEAD_BAR(ItemID.LEAD_BAR, 25, 15.5f),
IRON_BATTLEAXE(ItemID.IRON_BATTLEAXE, 25, 75),
OIL_LANTERN_FRAME(ItemID.OIL_LANTERN_FRAME, 26, 25),
IRON_CHAINBODY(ItemID.IRON_CHAINBODY, 26, 75),
@@ -104,7 +109,7 @@ public enum SmithingAction implements ItemSkillAction
STEEL_DART_TIP(ItemID.STEEL_DART_TIP, 34, 37.5f),
STEEL_NAILS(ItemID.NAILS, 34, 37.5f),
STEEL_SWORD(ItemID.STEEL_SWORD, 34, 37.5f),
- CANNONBALL(ItemID.MCANNONBALL, 35, 25.6f),
+ STEEL_CANNONBALL(ItemID.MCANNONBALL, 35, 25.6f),
STEEL_ARROWTIPS(ItemID.STEEL_ARROWHEADS, 35, 37.5f),
STEEL_HASTA(ItemID.BRUT_STEEL_SPEAR, 35, 75),
STEEL_SCIMITAR(ItemID.STEEL_SCIMITAR, 35, 75),
@@ -116,6 +121,7 @@ public enum SmithingAction implements ItemSkillAction
STEEL_KNIFE(ItemID.STEEL_KNIFE, 37, 37.5f),
STEEL_FULL_HELM(ItemID.STEEL_FULL_HELM, 37, 75),
STEEL_SQ_SHIELD(ItemID.STEEL_SQ_SHIELD, 38, 75),
+ STEEL_KEEL_PARTS(ItemID.SAILING_BOAT_KEEL_PART_STEEL, 38, 187.5f),
STEEL_WARHAMMER(ItemID.STEEL_WARHAMMER, 39, 112.5f),
GOLD_BAR(ItemID.GOLD_BAR, 40, 22.5f),
STEEL_BATTLEAXE(ItemID.STEEL_BATTLEAXE, 40, 112.5f),
@@ -136,6 +142,7 @@ public enum SmithingAction implements ItemSkillAction
MITHRIL_DART_TIP(ItemID.MITHRIL_DART_TIP, 54, 50),
MITHRIL_NAILS(ItemID.NAILS_MITHRIL, 54, 50),
MITHRIL_SWORD(ItemID.MITHRIL_SWORD, 54, 50),
+ MITHRIL_CANNONBALL(ItemID.MITHRIL_CANNONBALL, 55, 34),
MITHRIL_ARROWTIPS(ItemID.MITHRIL_ARROWHEADS, 55, 50),
MITHRIL_HASTA(ItemID.BRUT_MITHRIL_SPEAR, 55, 100),
MITHRIL_SCIMITAR(ItemID.MITHRIL_SCIMITAR, 55, 100),
@@ -143,6 +150,7 @@ public enum SmithingAction implements ItemSkillAction
MITHRIL_JAVELIN_HEADS(ItemID.MITHRIL_JAVELIN_HEAD, 56, 50),
MITHRIL_LIMBS(ItemID.XBOWS_CROSSBOW_LIMBS_MITHRIL, 56, 50),
MITHRIL_LONGSWORD(ItemID.MITHRIL_LONGSWORD, 56, 100),
+ MITHRIL_KEEL_PARTS(ItemID.SAILING_BOAT_KEEL_PART_MITHRIL, 56, 250),
MITHRIL_KNIFE(ItemID.MITHRIL_KNIFE, 57, 50),
MITHRIL_FULL_HELM(ItemID.MITHRIL_FULL_HELM, 57, 100),
MITHRIL_SQ_SHIELD(ItemID.MITHRIL_SQ_SHIELD, 58, 100),
@@ -163,9 +171,12 @@ public enum SmithingAction implements ItemSkillAction
ADAMANT_MACE(ItemID.ADAMANT_MACE, 72, 62.5f),
ADAMANT_BOLTS_UNF(ItemID.XBOWS_CROSSBOW_BOLTS_ADAMANTITE_UNFEATHERED, 73, 62.5f),
ADAMANT_MED_HELM(ItemID.ADAMANT_MED_HELM, 73, 62.5f),
+ CUPRONICKEL_BAR(ItemID.CUPRONICKEL_BAR, 74, 42),
ADAMANTITE_NAILS(ItemID.NAILS_ADAMANT, 74, 62.5f),
ADAMANT_DART_TIP(ItemID.ADAMANT_DART_TIP, 74, 62.5f),
ADAMANT_SWORD(ItemID.ADAMANT_SWORD, 74, 62.5f),
+ ADAMANT_KEEL_PARTS(ItemID.SAILING_BOAT_KEEL_PART_ADAMANT, 74, 312.5f),
+ ADAMANT_CANNONBALL(ItemID.ADAMANT_CANNONBALL, 75, 42.5f),
ADAMANT_ARROWTIPS(ItemID.ADAMANT_ARROWHEADS, 75, 62.5f),
ADAMANT_HASTA(ItemID.BRUT_ADAMANT_SPEAR, 75, 125),
ADAMANT_SCIMITAR(ItemID.ADAMANT_SCIMITAR, 75, 125),
@@ -187,6 +198,7 @@ public enum SmithingAction implements ItemSkillAction
RUNE_AXE(ItemID.RUNE_AXE, 86, 75),
ADAMANT_PLATELEGS(ItemID.ADAMANT_PLATELEGS, 86, 187.5f),
ADAMANT_PLATESKIRT(ItemID.ADAMANT_PLATESKIRT, 86, 187.5f),
+ RUNE_KEEL_PARTS(ItemID.SAILING_BOAT_KEEL_PART_RUNE, 86, 375),
RUNE_MACE(ItemID.RUNE_MACE, 87, 75),
RUNE_MED_HELM(ItemID.RUNE_MED_HELM, 88, 75),
RUNITE_BOLTS_UNF(ItemID.XBOWS_CROSSBOW_BOLTS_RUNITE_UNFEATHERED, 88, 75),
@@ -194,6 +206,7 @@ public enum SmithingAction implements ItemSkillAction
RUNE_DART_TIP(ItemID.RUNE_DART_TIP, 89, 75),
RUNE_NAILS(ItemID.NAILS_RUNE, 89, 75),
RUNE_SWORD(ItemID.RUNE_SWORD, 89, 75),
+ RUNE_CANNONBALL(ItemID.RUNE_CANNONBALL, 90, 50.5f),
RUNE_ARROWTIPS(ItemID.RUNE_ARROWHEADS, 90, 75),
RUNE_HASTA(ItemID.BRUT_RUNE_SPEAR, 90, 150),
RUNE_SCIMITAR(ItemID.RUNE_SCIMITAR, 90, 150),
@@ -206,6 +219,7 @@ public enum SmithingAction implements ItemSkillAction
RUNE_FULL_HELM(ItemID.RUNE_FULL_HELM, 92, 150),
RUNE_SQ_SHIELD(ItemID.RUNE_SQ_SHIELD, 93, 150),
RUNE_WARHAMMER(ItemID.RUNE_WARHAMMER, 94, 225),
+ DRAGON_KEEL_PARTS(ItemID.SAILING_BOAT_KEEL_PART_DRAGON, 94, 700),
RUNE_BATTLEAXE(ItemID.RUNE_BATTLEAXE, 95, 225),
RUNE_CHAINBODY(ItemID.RUNE_CHAINBODY, 96, 225),
RUNE_KITESHIELD(ItemID.RUNE_KITESHIELD, 97, 225),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ThievingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ThievingAction.java
index 7f10c88be23..169aa752679 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ThievingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ThievingAction.java
@@ -53,6 +53,7 @@ public enum ThievingAction implements NamedSkillAction
NATURE_RUNE_CHEST("Nature Rune Chest", 28, 25, ItemID.NATURERUNE),
ISLE_OF_SOULS_CHEST("Isle of Souls Dungeon Chest", 28, 150, ItemID.SW_DUNGEON_CHEST_KEY),
ROGUE("Rogue", 32, 36.5f, ItemID.PICKPOCKET_GUIDE_ROGUE),
+ RUSTY_CHEST("Rusty Chest", 33, 90, ItemID.BRONZE_CANNONBALL),
FUR_STALL("Fur Stall", 35, 45, ItemID.GREY_WOLF_FUR),
CAVE_GOBLIN("Cave Goblin", 36, 40, ItemID.PICKPOCKET_GUIDE_DORGESH),
MASTER_FARMER("Master Farmer", 38, 43, ItemID.PICKPOCKET_GUIDE_MASTER_FARMER),
@@ -69,8 +70,10 @@ public enum ThievingAction implements NamedSkillAction
SILVER_STALL("Silver Stall", 50, 205, ItemID.SILVER_BAR),
DORGESH_KAAN_AVERAGE_CHEST("Dorgesh-Kaan Average Chest", 52, 200, ItemID.OIL_LANTERN_UNLIT),
DESERT_BANDIT("Desert Bandit", 53, 79.4f, ItemID.PICKPOCKET_GUIDE_DESERT_BANDIT),
+ TARNISHED_CHEST("Tarnished Chest", 54, 122.5f, ItemID.MCANNONBALL),
KNIGHT("Knight", 55, 84.3f, ItemID.PICKPOCKET_GUIDE_KNIGHT),
POLLNIVNIAN_BANDIT("Pollnivnian Bandit", 55, 84.3f, ItemID.PICKPOCKET_GUIDE_FEUD_ARABIAN_GUARD1),
+ PIRATE("Pirate", 60, 72, ItemID.PICKPOCKET_GUIDE_PIRATE),
STONE_CHEST("Stone Chest", 64, 280, ItemID.XERIC_FABRIC),
MAGIC_STALL("Magic Stall", 65, 90, ItemID.ROGUETRADER_AIRRUNE),
SPICE_STALL("Spice Stall", 65, 92, ItemID.SPICESPOT),
@@ -81,12 +84,14 @@ public enum ThievingAction implements NamedSkillAction
PALADIN("Paladin", 70, 131.8f, ItemID.PICKPOCKET_GUIDE_PALADIN),
GNOME("Gnome", 75, 133.5f, ItemID.PICKPOCKET_GUIDE_GNOME),
GEM_STALL("Gem Stall", 75, 408, ItemID.SAPPHIRE),
+ REINFORCED_CHEST("Reinforced Chest", 76, 182.5f, ItemID.ADAMANT_CANNONBALL),
DORGESH_KAAN_RICH_CHEST("Dorgesh-Kaan Rich Chest", 78, 650, ItemID.CAVE_GOBLIN_MINING_HELMET_LIT),
HERO("Hero", 80, 163.3f, ItemID.PICKPOCKET_GUIDE_HERO),
VYRE("Vyre", 82, 306.9f, ItemID.PICKPOCKET_GUIDE_VYRE),
ORE_STALL("Ore Stall", 82, 350, ItemID.RUNITE_ORE),
ROGUES_CASTLE_CHEST("Wilderness Rogues' Chest", 84, 701.7f, ItemID.DRAGONSTONE),
ELF("Elf", 85, 353.3f, ItemID.PICKPOCKET_GUIDE_WOODELF),
+ CANNONBALL_STALL("Cannonball Stall", 87, 223, ItemID.MCANNONBALL),
TZHAAR_HUR("TzHaar-Hur", 90, 103.4f, ItemID.PICKPOCKET_GUIDE_TZHAAR),
;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingAction.java
index 0032e6aa3ab..0022730b09e 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingAction.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingAction.java
@@ -38,6 +38,7 @@ public enum WoodcuttingAction implements ItemSkillAction
OAK_LOGS(ItemID.OAK_LOGS, 15, 37.5f),
WILLOW_LOGS(ItemID.WILLOW_LOGS, 30, 67.5f),
TEAK_LOGS(ItemID.TEAK_LOGS, 35, 85),
+ JATOBA_lOGS(ItemID.JATOBA_LOGS, 40, 92),
JUNIPER_LOGS(ItemID.JUNIPER_LOGS, 42, 35),
BARK(ItemID.HOLLOW_BARK, 45, 82.5f),
MAPLE_LOGS(ItemID.MAPLE_LOGS, 45, 100),
@@ -53,8 +54,11 @@ public String getName(final ItemManager itemManager)
return "Sulliusceps";
}
},
+ CAMPHOR_LOGS(ItemID.CAMPHOR_LOGS, 66, 143.5f),
MAGIC_LOGS(ItemID.MAGIC_LOGS, 75, 250),
+ IRONWOOD_LOGS(ItemID.IRONWOOD_LOGS, 80, 175),
REDWOOD_LOGS(ItemID.REDWOOD_LOGS, 90, 380),
+ ROSEWOOD_LOGS(ItemID.ROSEWOOD_LOGS, 92, 212.5f),
;
private final int itemId;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java
index 7d4eb238c5b..b5b032111b5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java
@@ -41,6 +41,7 @@ enum Task
ABYSSAL_SIRE("The Abyssal Sire", ItemID.ABYSSALSIRE_PET),
ALCHEMICAL_HYDRA("The Alchemical Hydra", ItemID.HYDRAPET),
ANKOU("Ankou", ItemID.ANKOU_HEAD),
+ AQUANITES("Aquanite", ItemID.SLAYERGUIDE_AQUANITE),
ARAXXOR("Araxxor", ItemID.ARAXXORPET),
ARAXYTES("Araxytes", ItemID.POH_ARAXYTE_HEAD, "Araxxor"),
AVIANSIES("Aviansies", ItemID.ARCEUUS_CORPSE_AVIANSIE_INITIAL, "Kree'arra", "Flight Kilisa", "Flockleader Geerin", "Wingman Skree"),
@@ -92,6 +93,7 @@ enum Task
FIRE_GIANTS("Fire giants", ItemID.RTBRANDAPET, "Branda the Fire Queen"),
FLESH_CRAWLERS("Fleshcrawlers", ItemID.ARCEUUS_CORPSE_SCORPION_INITIAL, "Flesh crawler"),
FOSSIL_ISLAND_WYVERNS("Fossil island wyverns", ItemID.SLAYERGUIDE_FOSSILWYVERN, "Ancient wyvern", "Long-tailed wyvern", "Spitting wyvern", "Taloned wyvern"),
+ FROST_DRAGONS("Frost dragons", ItemID.FROST_DRAGON_BONES),
GARGOYLES("Gargoyles", ItemID.SLAYERGUIDE_GARGOYLE, 9, ItemID.SLAYER_ROCK_HAMMER, "Dusk", "Dawn"),
GENERAL_GRAARDOR("General Graardor", ItemID.BANDOSPET),
GHOSTS("Ghosts", ItemID.AMULET_OF_GHOSTSPEAK, "Death wing", "Tortured soul", "Forgotten Soul", "Revenant"),
@@ -101,6 +103,7 @@ enum Task
GREATER_DEMONS("Greater demons", ItemID.GREATER_DEMON_MASK, "K'ril Tsutsaroth", "Tstanon Karlak", "Skotizo", "Tormented Demon"),
GREEN_DRAGONS("Green dragons", ItemID.DRAGONMASK_GREEN, "Elvarg"),
GROTESQUE_GUARDIANS("The Grotesque Guardians", ItemID.DUSKPET, 0, ItemID.SLAYER_ROCK_HAMMER, "Dusk", "Dawn"),
+ GRYPHONS("Gryphons", ItemID.SLAYERGUIDE_GRYPHON),
HARPIE_BUG_SWARMS("Harpie bug swarms", ItemID.SLAYERGUIDE_SWARM),
HELLHOUNDS("Hellhounds", ItemID.POH_HELLHOUND, "Cerberus"),
HILL_GIANTS("Hill giants", ItemID.ARCEUUS_CORPSE_GIANT_INITIAL, "Cyclops", "Reanimated giant", "Obor"),
@@ -153,6 +156,7 @@ enum Task
SEA_SNAKES("Sea snakes", ItemID.HUNDRED_ILM_SNAKE_CORPSE),
SHADES("Shades", ItemID.BLACKROBETOP, "Loar", "Phrin", "Riyl", "Asyn", "Fiyr", "Urium"),
SHADOW_WARRIORS("Shadow warriors", ItemID.BLACK_FULL_HELM),
+ SHELLBANE_GRYPHON("Shellbane Gryphon", ItemID.GRYPHONBOSSPET_ADULT),
SKELETAL_WYVERNS("Skeletal wyverns", ItemID.SLAYERGUIDE_SKELETALWYVERN),
SKELETONS("Skeletons", ItemID.POH_SKELETON_GUARD, "Vet'ion", "Calvar'ion", "Skeletal Mystic"),
SMOKE_DEVILS("Smoke devils", ItemID.CERT_GUIDE_ICON_DUMMY),
@@ -177,7 +181,7 @@ enum Task
WATERFIENDS("Waterfiends", ItemID.WATER_ORB),
WEREWOLVES("Werewolves", ItemID.DAGGER_WOLFBANE, "Werewolf"),
WOLVES("Wolves", ItemID.GREY_WOLF_FUR, "Wolf"),
- WYRMS("Wyrms", ItemID.SLAYERGUIDE_WYRM, "Wyrmling"),
+ WYRMS("Wyrms", ItemID.SLAYERGUIDE_WYRM, "Wyrmling", "Strykewyrm"),
ZILYANA("Commander Zilyana", ItemID.SARADOMINPET),
ZOMBIES("Zombies", ItemID.TRICK_OR_TREAT_HEAD, "Undead", "Vorkath", "Zogre"),
ZUK("TzKal-Zuk", ItemID.INFERNOPET_ZUK),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/GameTimer.java b/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/GameTimer.java
index c38d3529fe4..a0f69c2408e 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/GameTimer.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/GameTimer.java
@@ -103,6 +103,7 @@ enum GameTimer
GOADING(ItemID._4DOSEGOADING, GameTimerImageType.ITEM, "Goading potion", false),
PRAYER_REGENERATION(ItemID._4DOSE1PRAYER_REGENERATION, GameTimerImageType.ITEM, "Prayer regeneration", false),
SURGE_POTION(ItemID._4DOSESURGE, GameTimerImageType.ITEM, "Surge potion", false),
+ BLIGHTED_OVERLOAD(ItemID.DEADMAN4DOSEOVERLOAD, GameTimerImageType.ITEM, "Blighted Overload", false),
;
@Nullable
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPlugin.java
index 6c5160fbc1c..c26ca978b6e 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timersandbuffs/TimersAndBuffsPlugin.java
@@ -362,7 +362,8 @@ else if (nextPoisonTick - tickCount <= 0)
}
if ((event.getVarbitId() == VarbitID.NZONE_OVERLOAD_POTION_EFFECTS
- || event.getVarbitId() == VarbitID.RAIDS_OVERLOAD_TIMER) && config.showOverload())
+ || event.getVarbitId() == VarbitID.RAIDS_OVERLOAD_TIMER
+ || event.getVarbitId() == VarbitID.DEADMAN_OVERLOAD_POTION_EFFECTS) && config.showOverload())
{
final int overloadVarb = event.getValue();
final int tickCount = client.getTickCount();
@@ -376,7 +377,16 @@ else if (nextOverloadRefreshTick - tickCount <= 0)
nextOverloadRefreshTick = tickCount + OVERLOAD_TICK_LENGTH;
}
- GameTimer overloadTimer = client.getVarbitValue(VarbitID.RAIDS_CLIENT_INDUNGEON) == 1 ? OVERLOAD_RAID : OVERLOAD;
+ GameTimer overloadTimer;
+ if (event.getVarbitId() == VarbitID.DEADMAN_OVERLOAD_POTION_EFFECTS)
+ {
+ overloadTimer = BLIGHTED_OVERLOAD;
+ }
+ else
+ {
+ overloadTimer = client.getVarbitValue(VarbitID.RAIDS_CLIENT_INDUNGEON) == 1 ? OVERLOAD_RAID : OVERLOAD;
+ }
+
updateVarTimer(overloadTimer, overloadVarb, i -> nextOverloadRefreshTick - tickCount + (i - 1) * OVERLOAD_TICK_LENGTH);
}
@@ -705,6 +715,7 @@ else if (client.getGameState() == GameState.LOGGED_IN)
{
removeGameTimer(OVERLOAD);
removeGameTimer(OVERLOAD_RAID);
+ removeGameTimer(BLIGHTED_OVERLOAD);
removeGameTimer(SMELLING_SALTS);
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PaymentTracker.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PaymentTracker.java
index 46731a69ae6..e90bb529972 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PaymentTracker.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/PaymentTracker.java
@@ -31,9 +31,11 @@
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.MenuAction;
import net.runelite.api.ScriptID;
+import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.events.ScriptPreFired;
@@ -60,6 +62,8 @@ public class PaymentTracker
"Alright, leave it with me. I'll look after that nursery for
you."
);
+ private static final String FALADOR_DIARY_TEXT = "The gardener protects your tree for you, free of charge, as a token of gratitude for completing the Falador elite diary.";
+
private final Client client;
private final ConfigManager configManager;
private final FarmingWorld farmingWorld;
@@ -120,6 +124,35 @@ else if ((action == MenuAction.NPC_THIRD_OPTION || action == MenuAction.NPC_FOUR
}
}
+ @Subscribe
+ public void onChatMessage(ChatMessage event)
+ {
+ if (event.getType() != ChatMessageType.GAMEMESSAGE || !event.getMessage().equals(FALADOR_DIARY_TEXT))
+ {
+ return;
+ }
+
+ FarmingPatch p = null;
+ for (FarmingRegion region : farmingWorld.getRegionsForLocation(client.getLocalPlayer().getWorldLocation()))
+ {
+ for (FarmingPatch patch : region.getPatches())
+ {
+ if (region.getName().equals("Falador") && patch.getImplementation() == PatchImplementation.TREE)
+ {
+ p = patch;
+ }
+ }
+ }
+
+ if (p == null || getProtectedState(p))
+ {
+ return;
+ }
+
+ log.debug("Detected patch protection for {}", p);
+ setProtectedState(p, true);
+ }
+
@Subscribe
public void onScriptPreFired(ScriptPreFired scriptPreFired)
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java
index 13b972f579b..e54cb22e7fb 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java
@@ -563,6 +563,12 @@ public void onScriptPreFired(ScriptPreFired scriptPreFired)
case ObjectID.FARMING_REDWOOD_TREE_PATCH_1_4:
case ObjectID.FARMING_REDWOOD_TREE_PATCH_1_6:
case ObjectID.FARMING_REDWOOD_TREE_PATCH_1_8:
+
+ // sailing trees
+ case ObjectID.JATOBA_TREE_STUMP:
+ case ObjectID.CAMPHOR_TREE_UPDATE_STUMP:
+ case ObjectID.IRONWOOD_TREE_UPDATE_STUMP:
+ case ObjectID.ROSEWOOD_TREE_UPDATE_STUMP:
{
WorldPoint worldPoint = WorldPoint.fromCoord(locCoord);
GameObject gameObject = findObject(worldPoint);
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPingOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPingOverlay.java
index 9f2ecf24067..b080b9d5719 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPingOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPingOverlay.java
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019, gregg1494
+ * Copyright (c) 2026, Adam
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,6 +27,7 @@
import java.awt.Color;
import java.awt.Dimension;
+import java.awt.FontMetrics;
import java.awt.Graphics2D;
import javax.inject.Inject;
import net.runelite.api.Client;
@@ -65,27 +67,36 @@ public Dimension render(Graphics2D graphics)
return null;
}
- final int ping = worldHopperPlugin.getCurrentPing();
- if (ping < 0)
- {
- return null;
- }
-
- final String text = ping + " ms";
- final int textWidth = graphics.getFontMetrics().stringWidth(text);
- final int textHeight = graphics.getFontMetrics().getAscent() - graphics.getFontMetrics().getDescent();
+ int xOffset = X_OFFSET;
- // Adjust ping offset for logout button
+ // Adjust offset for logout button
Widget logoutButton = client.getWidget(InterfaceID.ToplevelPreEoc.ICON10);
- int xOffset = X_OFFSET;
if (logoutButton != null && !logoutButton.isHidden())
{
xOffset += logoutButton.getWidth();
}
+ final FontMetrics fm = graphics.getFontMetrics();
+ final int textHeight = fm.getAscent() - fm.getDescent();
final int width = (int) client.getRealDimensions().getWidth();
- final Point point = new Point(width - textWidth - xOffset, textHeight + Y_OFFSET);
- OverlayUtil.renderTextLocation(graphics, point, text, Color.YELLOW);
+
+ final int ping = worldHopperPlugin.getCurrentPing();
+ if (ping >= 0)
+ {
+ String text = ping + " ms";
+ int textWidth = fm.stringWidth(text);
+ Point point = new Point(width - textWidth - xOffset, textHeight + Y_OFFSET);
+ OverlayUtil.renderTextLocation(graphics, point, text, Color.YELLOW);
+ xOffset += textWidth + fm.stringWidth(" ");
+ }
+
+ int percRetransmit = worldHopperPlugin.retransmitCalculator.getRetransmitPercent();
+ if (percRetransmit > 0)
+ {
+ String text = percRetransmit + "% loss";
+ Point point = new Point(width - fm.stringWidth(text) - xOffset, textHeight + Y_OFFSET);
+ OverlayUtil.renderTextLocation(graphics, point, text, Color.RED);
+ }
return null;
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java
index bf330c3c01e..7805e0cc9be 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java
@@ -30,6 +30,7 @@
import com.google.common.collect.ImmutableList;
import com.google.inject.Provides;
import java.awt.image.BufferedImage;
+import java.io.FileDescriptor;
import java.time.Instant;
import java.util.EnumSet;
import java.util.HashMap;
@@ -81,6 +82,8 @@
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.worldhopper.ping.Ping;
+import net.runelite.client.plugins.worldhopper.ping.RetransmitCalculator;
+import net.runelite.client.plugins.worldhopper.ping.TCP_INFO_v0;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -163,6 +166,8 @@ public class WorldHopperPlugin extends Plugin
private final Map storedPings = new HashMap<>();
+ final RetransmitCalculator retransmitCalculator = new RetransmitCalculator();
+
private final HotkeyListener previousKeyListener = new HotkeyListener(() -> config.previousKey())
{
@Override
@@ -445,13 +450,17 @@ else if (BEFORE_OPTIONS.contains(option))
@Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged)
{
- // If the player has disabled the side bar plugin panel, do not update the UI
- if (config.showSidebar() && gameStateChanged.getGameState() == GameState.LOGGED_IN)
+ if (gameStateChanged.getGameState() == GameState.LOGGED_IN)
{
if (lastWorld != client.getWorld())
{
int newWorld = client.getWorld();
- panel.switchCurrentHighlight(newWorld, lastWorld);
+ // If the player has disabled the side bar plugin panel, do not update the UI
+ if (config.showSidebar())
+ {
+ panel.switchCurrentHighlight(newWorld, lastWorld);
+ }
+ currentPing = -1;
lastWorld = newWorld;
}
}
@@ -505,8 +514,14 @@ private void updateList()
{
clientThread.invokeLater(() ->
{
- var locationEnum = client.getGameState().getState() >= GameState.LOGIN_SCREEN.getState() ? client.getEnum(EnumID.WORLD_LOCATIONS) : null;
+ if (client.getGameState().getState() < GameState.LOGIN_SCREEN.getState())
+ {
+ return false;
+ }
+
+ var locationEnum = client.getEnum(EnumID.WORLD_LOCATIONS);
SwingUtilities.invokeLater(() -> panel.populate(worldResult.getWorlds(), locationEnum));
+ return true;
});
}
}
@@ -821,7 +836,7 @@ private void pingInitialWorlds()
for (World world : worldResult.getWorlds())
{
- int ping = ping(world);
+ int ping = ping(world, false);
SwingUtilities.invokeLater(() -> panel.updatePing(world.getId(), ping));
}
@@ -862,7 +877,7 @@ private void pingNextWorld()
return;
}
- int ping = ping(world);
+ int ping = ping(world, false);
log.trace("Ping for world {} is: {}", world.getId(), ping);
if (panel.isActive())
@@ -890,8 +905,26 @@ private void pingCurrentWorld()
return;
}
- int ping = ping(currentWorld);
- log.trace("Ping for current world is: {}", currentPing);
+ int ping = ping(currentWorld, true);
+ log.trace("Ping for current world is: {}", ping);
+
+ FileDescriptor fd = client.getSocketFD();
+ int rtt = -1;
+ if (fd != null)
+ {
+ TCP_INFO_v0 tcpInfo = Ping.getTcpInfo(fd);
+ if (tcpInfo != null)
+ {
+ rtt = (int) (tcpInfo.RttUs.longValue() / 1000L);
+ retransmitCalculator.record(tcpInfo);
+ }
+ }
+
+ if (ping < 0)
+ {
+ ping = rtt; // use rtt for ping if icmp is blocked
+ storedPings.put(currentWorld.getId(), rtt);
+ }
if (ping < 0)
{
@@ -916,9 +949,9 @@ Integer getStoredPing(World world)
return storedPings.get(world.getId());
}
- private int ping(World world)
+ private int ping(World world, boolean isCurrentWorld)
{
- int ping = Ping.ping(world);
+ int ping = Ping.ping(world, !isCurrentWorld);
storedPings.put(world.getId(), ping);
return ping;
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTypeFilter.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTypeFilter.java
index 6972a1c1d46..ad96367b214 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTypeFilter.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTypeFilter.java
@@ -94,7 +94,7 @@ boolean matches(Set types)
@Override
boolean matches(Set types)
{
- return types.contains(WorldType.HIGH_RISK);
+ return types.contains(WorldType.HIGH_RISK) && !types.contains(WorldType.PVP);
}
},
BOUNTY_HUNTER
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/Ping.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/Ping.java
index cd542567d72..8c11174ab33 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/Ping.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/Ping.java
@@ -29,7 +29,11 @@
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
+import com.sun.jna.platform.win32.WinNT;
+import com.sun.jna.ptr.IntByReference;
+import java.io.FileDescriptor;
import java.io.IOException;
+import java.lang.reflect.Field;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -49,7 +53,13 @@ public class Ping
private static short seq;
+ @Deprecated
public static int ping(World world)
+ {
+ return ping(world, false);
+ }
+
+ public static int ping(World world, boolean useTcpPing)
{
InetAddress inetAddress;
try
@@ -73,14 +83,19 @@ public static int ping(World world)
switch (OSType.getOSType())
{
case Windows:
- return windowsPing(inetAddress);
+ int p = windowsPing(inetAddress);
+ if (p == -1 && useTcpPing)
+ {
+ p = tcpPing(inetAddress);
+ }
+ return p;
case MacOS:
case Linux:
try
{
return icmpPing(inetAddress, OSType.getOSType() == OSType.MacOS);
}
- catch (Exception ex)
+ catch (IOException ex)
{
log.debug("error during icmp ping", ex);
return tcpPing(inetAddress);
@@ -269,4 +284,58 @@ private static int tcpPing(InetAddress inetAddress) throws IOException
return (int) ((end - start) / 1000000L);
}
}
+
+ public static TCP_INFO_v0 getTcpInfo(FileDescriptor fd)
+ {
+ if (OSType.getOSType() != OSType.Windows)
+ {
+ return null;
+ }
+
+ int handle;
+ try
+ {
+ Field f = FileDescriptor.class.getDeclaredField("fd");
+ f.setAccessible(true);
+ handle = f.getInt(fd);
+ }
+ catch (NoSuchFieldException | IllegalAccessException ex)
+ {
+ log.debug(null, ex);
+ return null;
+ }
+
+ IntByReference tcpInfoVersion = new IntByReference(0); // Version 0 of TCP_INFO
+ TCP_INFO_v0 info = new TCP_INFO_v0();
+ IntByReference bytesReturned = new IntByReference();
+
+ Ws2_32 winsock = Ws2_32.INSTANCE;
+ int rc;
+ try
+ {
+ rc = winsock.WSAIoctl(
+ new WinNT.HANDLE(Pointer.createConstant(handle)),
+ Ws2_32.SIO_TCP_INFO,
+ tcpInfoVersion.getPointer(), Integer.BYTES,
+ info.getPointer(), info.size(),
+ bytesReturned,
+ Pointer.NULL,
+ Pointer.NULL
+ );
+ }
+ catch (UnsatisfiedLinkError ex)
+ {
+ // probably Windows 7
+ log.debug("WSAIoctl()", ex);
+ return null;
+ }
+ if (rc != 0)
+ {
+ log.debug("WSAIoctl(SIO_TCP_INFO) error"); // WSAGetLastError() seems to always be 0?
+ return null;
+ }
+
+ info.read();
+ return info;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/RetransmitCalculator.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/RetransmitCalculator.java
new file mode 100644
index 00000000000..3ced1859c3e
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/RetransmitCalculator.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2026, Adam
+ * 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.worldhopper.ping;
+
+import java.util.Arrays;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class RetransmitCalculator
+{
+ private static final int SAMPLES = 16;
+
+ private int index;
+ private long connectionTime;
+ private final long[] bytesOut = new long[SAMPLES];
+ private final long[] bytesRetrans = new long[SAMPLES];
+ private int loss;
+
+ public void record(TCP_INFO_v0 info)
+ {
+ int nextIndex = index++ & (SAMPLES - 1);
+
+ long connectionTime = info.ConnectionTimeMs.longValue();
+ long out = info.BytesOut.longValue();
+ long rt = info.BytesRetrans.longValue();
+
+ log.trace("rtt: {}us bytes out: {} retrans: {}", info.RttUs.longValue(), out, rt);
+
+ if (connectionTime < this.connectionTime)
+ {
+ Arrays.fill(bytesOut, 0L);
+ Arrays.fill(bytesRetrans, 0L);
+ }
+
+ this.connectionTime = connectionTime;
+ bytesOut[nextIndex] = out;
+ bytesRetrans[nextIndex] = rt;
+
+ loss = computeRetransmitPercent();
+ }
+
+ private int computeRetransmitPercent()
+ {
+ int startIndex = (index - 1) & (SAMPLES - 1);
+ int endIndex = index & (SAMPLES - 1);
+
+ long deltaOut = bytesOut[startIndex] - bytesOut[endIndex];
+ long deltaRt = bytesRetrans[startIndex] - bytesRetrans[endIndex];
+
+ if (deltaOut == 0)
+ {
+ return 0;
+ }
+
+ return (int) (deltaRt * 100L / deltaOut);
+ }
+
+ public int getRetransmitPercent()
+ {
+ return loss;
+ }
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/TCP_INFO_v0.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/TCP_INFO_v0.java
new file mode 100644
index 00000000000..a4596729087
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/TCP_INFO_v0.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2026, Adam
+ * 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.worldhopper.ping;
+
+import com.sun.jna.Structure;
+import com.sun.jna.platform.win32.WinDef;
+import java.util.List;
+
+public class TCP_INFO_v0 extends Structure
+{
+ public WinDef.ULONG State;
+ public WinDef.ULONG Mss;
+ public WinDef.ULONGLONG ConnectionTimeMs;
+ public WinDef.BOOL TimestampsEnabled;
+ public WinDef.ULONG RttUs;
+ public WinDef.ULONG MinRttUs;
+ public WinDef.ULONG BytesInFlight;
+ public WinDef.ULONG Cwnd;
+ public WinDef.ULONG SndWnd;
+ public WinDef.ULONG RcvWnd;
+ public WinDef.ULONG RcvBuf;
+ public WinDef.ULONGLONG BytesOut;
+ public WinDef.ULONGLONG BytesIn;
+ public WinDef.ULONG BytesReordered;
+ public WinDef.ULONG BytesRetrans;
+ public WinDef.ULONG FastRetrans;
+ public WinDef.ULONG DupAcksIn;
+ public WinDef.ULONG TimeoutEpisodes;
+ public WinDef.UCHAR SynRetrans;
+
+ @Override
+ protected List getFieldOrder()
+ {
+ return List.of(
+ "State",
+ "Mss",
+ "ConnectionTimeMs",
+ "TimestampsEnabled",
+ "RttUs",
+ "MinRttUs",
+ "BytesInFlight",
+ "Cwnd",
+ "SndWnd",
+ "RcvWnd",
+ "RcvBuf",
+ "BytesOut",
+ "BytesIn",
+ "BytesReordered",
+ "BytesRetrans",
+ "FastRetrans",
+ "DupAcksIn",
+ "TimeoutEpisodes",
+ "SynRetrans"
+ );
+ }
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/Ws2_32.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/Ws2_32.java
new file mode 100644
index 00000000000..1026f7fc859
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/ping/Ws2_32.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2026, Adam
+ * 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.worldhopper.ping;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.platform.win32.WinNT;
+import com.sun.jna.ptr.IntByReference;
+
+interface Ws2_32 extends Library
+{
+ Ws2_32 INSTANCE = Native.loadLibrary("Ws2_32", Ws2_32.class);
+
+ int SIO_TCP_INFO = 0xD800_0027;
+
+ int WSAIoctl(WinNT.HANDLE socket, int dwIoControlCode, Pointer lpvInBuffer, int cbInBuffer, Pointer lpvOutBuffer, int cbOutBuffer, IntByReference lpcbBytesReturned, Pointer lpOverlapped, Pointer lpCompletionRoutine);
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FarmingPatchLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FarmingPatchLocation.java
index 0b209f21285..a2ebc2a877a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FarmingPatchLocation.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FarmingPatchLocation.java
@@ -62,11 +62,15 @@ enum FarmingPatchLocation
),
CALQUAT("Calquat",
new WorldPoint(2793, 3099, 0),
- new WorldPoint(1365, 3035, 0)
+ new WorldPoint(1365, 3035, 0),
+ new WorldPoint(3125, 2403, 0)
),
CELASTRUS_FRUIT_TREE("Celastrus/Fruit Tree",
new WorldPoint(1242, 3755, 0)
),
+ CORAL("Coral",
+ new WorldPoint(3296, 8861, 0)
+ ),
CRYSTAL_TREE("Crystal Tree",
new WorldPoint(3292, 6120, 0)
),
@@ -82,7 +86,8 @@ enum FarmingPatchLocation
GRAPES("Grapes", new WorldPoint(1807, 3555, 0)),
HARDWOOD("Hardwood",
new WorldPoint(3707, 3838, 0),
- new WorldPoint(1683, 2971, 0)
+ new WorldPoint(1683, 2971, 0),
+ new WorldPoint(2472, 2705, 0)
),
HERB("Herb",
new WorldPoint(3789, 2840, 0),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MooringLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MooringLocation.java
index 57761953381..794acbd8edc 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MooringLocation.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MooringLocation.java
@@ -50,7 +50,7 @@ public enum MooringLocation
CAIRN_ISLE("Cairn Isle", 42, new WorldPoint(2749, 2951, 0)),
CHINCHOMPA_ISLAND("Chinchompa Island", 42, new WorldPoint(1892, 3429, 0)),
SUNSET_COAST("Sunset Coast", 44, new WorldPoint(1511, 2975, 0)),
- REMOTE_ISLAND("Remote Island", 45, new WorldPoint(2791, 2603, 0)),
+ REMOTE_ISLAND("Remote Island", 45, new WorldPoint(2971, 2603, 0)),
THE_SUMMER_SHORE("The Summer Shore", 45, new WorldPoint(3174, 2367, 0)),
THE_LITTLE_PEARL("The Little Pearl", 45, new WorldPoint(3354, 2216, 0)),
ALDARIN("Aldarin", 46, new WorldPoint(1452, 2970, 0)),
@@ -75,7 +75,7 @@ public enum MooringLocation
LLEDRITH_ISLAND("Lledrith Island", 66, new WorldPoint(2097, 3188, 0)),
DEEPFIN_POINT("Deepfin Point", 67, new WorldPoint(1923, 2758, 0)),
JATIZSO("Jatizso", 68, new WorldPoint(2412, 3780, 0)),
- NETIZNOT("Netiznot", 68, new WorldPoint(2308, 3783, 0)),
+ NEITIZNOT("Neitiznot", 68, new WorldPoint(2308, 3783, 0)),
RAINBOWS_END("Rainbow's End", 69, new WorldPoint(2344, 2270, 0)),
PRIFDDINAS("Prifddinas", 70, new WorldPoint(2158, 3324, 0)),
SUNBLEAK_ISLAND("Sunbleak Island", 72, new WorldPoint(2189, 2327, 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 083b2b15959..2abd402748d 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
@@ -43,6 +43,9 @@ enum RareTreeLocation
new WorldPoint(3510, 3073, 0),
new WorldPoint(3440, 2789, 0),
+ // Great Conch
+ new WorldPoint(3129, 2446, 0),
+
// Mos Le'Harmless
new WorldPoint(3832, 3067, 0),
@@ -56,6 +59,9 @@ enum RareTreeLocation
// Prifddinas
new WorldPoint(3309, 6123, 0),
+ // Shimmering Atoll
+ new WorldPoint(1540, 2802, 0),
+
// Varlamore
new WorldPoint(1694, 2989, 0),
new WorldPoint(1363, 3143, 0),
@@ -124,6 +130,9 @@ enum RareTreeLocation
// Prifddinas
new WorldPoint(3301, 6129, 0),
+ // Shimmering Atoll
+ new WorldPoint(1586, 2786, 0),
+
// Tlati Rainforest
new WorldPoint(1249, 3077, 0),
new WorldPoint(1263, 3002, 0)),
@@ -226,11 +235,34 @@ enum RareTreeLocation
new WorldPoint(2147, 2972, 0),
new WorldPoint(2165, 2863, 0),
+ // Tear of the Soul
+ new WorldPoint(2340, 2762, 0),
+
+ // Shipyard
+ new WorldPoint(2077, 2707, 0),
+
+ // Deepfin Point
+ new WorldPoint(1950, 2786, 0),
+
+ // Laguna Aurorae
+ new WorldPoint(1224, 2781, 0),
+
+ // Great Conch
+ new WorldPoint(3276, 2339, 0),
+
// Zanaris
new WorldPoint(2412, 4464, 0),
new WorldPoint(2465, 4427, 0),
new WorldPoint(2491, 4426, 0)),
+ YEW_JATOBA("Yew/Jatoba trees", 60,
+ // Great Conch
+ new WorldPoint(3144, 2520, 0)),
+
+ WILLOW_YEW("Willow/Yew trees", 60,
+ // Anglers' Retreat
+ new WorldPoint(2476, 2707, 0)),
+
MAPLE_YEW("Maple/Yew trees", 60,
// Feldip Hills
new WorldPoint(2476, 2893, 0),
@@ -238,6 +270,11 @@ enum RareTreeLocation
// Aldarin
new WorldPoint(1379, 2876, 0),
+ // Shipyard
+ new WorldPoint(2086, 2737, 0),
+ new WorldPoint(2074, 2723, 0),
+ new WorldPoint(2061, 2720, 0),
+
// Auburnvale
new WorldPoint(1358, 3302, 0)),
@@ -254,6 +291,19 @@ enum RareTreeLocation
new WorldPoint(3682, 3775, 0),
new WorldPoint(3682, 3758, 0)),
+ CAMPHOR("Camphor tree", 66,
+ // Great Conch
+ new WorldPoint(3192, 2487, 0),
+ new WorldPoint(3204, 2481, 0)),
+
+ CAMPHOR_MAHOGANY("Camphor/Mahogany trees", 66,
+ // Great Conch
+ new WorldPoint(3245, 2397, 0)),
+
+ CAMPHOR_JATOBA("Camphor/Jatoba trees", 66,
+ // Great Conch
+ new WorldPoint(3109, 2413, 0)),
+
MAGIC("Magic tree", 75,
// Zeah
new WorldPoint(1373, 3821, 0),
@@ -299,13 +349,32 @@ enum RareTreeLocation
// Feldip Hills
new WorldPoint(2443, 2845, 0),
+ // Dognose Island
+ new WorldPoint(3043, 2640, 0),
+
+ // Lledrith Island
+ new WorldPoint(2090, 3178, 0),
+
// Wilderness
new WorldPoint(3175, 3931, 0)),
+ IRONWOOD("Ironwood tree", 80,
+ // Sunbleak Island
+ new WorldPoint(2223, 2341, 0),
+ new WorldPoint(2221, 2322, 0),
+ new WorldPoint(2205, 2321, 0)),
+
REDWOOD("Redwood tree", 90,
// Zeah
new WorldPoint(1569, 3493, 0),
- new WorldPoint(1569, 3483, 0));
+ new WorldPoint(1569, 3483, 0)),
+
+ ROSEWOOD("Rosewood tree", 92,
+ // Drumstick Isle
+ new WorldPoint(2152, 3540, 0),
+ new WorldPoint(2136, 3546, 0),
+ new WorldPoint(2149, 3557, 0)),
+ ;
private final String tooltip;
private final WorldPoint[] locations;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TransportationPointLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TransportationPointLocation.java
index 4db8f34dabf..20646032186 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TransportationPointLocation.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TransportationPointLocation.java
@@ -116,7 +116,7 @@ enum TransportationPointLocation
SMALL_BOAT_KASTORI("Rowboat to Tal Teklan/Gloomthorn Trail", new WorldPoint(1389, 3074, 0)),
OGRE_BOAT_FELDIP("Ogre Boat to Karamja", new WorldPoint(2653, 2964, 0), new WorldPoint(2757, 3085, 0)),
OGRE_BOAT_KARAMJA("Ogre Boat to Feldip", new WorldPoint(2757, 3085, 0), new WorldPoint(2653, 2964, 0)),
- ROW_BOAT_CONCH_NORTH("Rowboat to The Summer Short/Eastern Coast", new WorldPoint(3196, 2532, 0), new WorldPoint(3264, 2462, 0)),
+ ROW_BOAT_CONCH_NORTH("Rowboat to The Summer Shore/Eastern Coast", new WorldPoint(3196, 2532, 0), new WorldPoint(3264, 2462, 0)),
ROW_BOAT_CONCH_EAST("Rowboat to The Summer Shore/Northern Coast", new WorldPoint(3264, 2462, 0), new WorldPoint(3190, 2371, 0)),
ROW_BOAT_CONCH_SUMMER_SHORE("Rowboat to The Northern Coast/Eastern Coast", new WorldPoint(3190, 2371, 0), new WorldPoint(3196, 2532, 0)),
ROW_BOAT_TEAR_OF_THE_SOUL("Rowboat to Isle of Souls", new WorldPoint(2320, 2780, 0), new WorldPoint(2291, 2796, 0)),
diff --git a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
index 563f29019af..02b2cedf6f9 100644
--- a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
+++ b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
@@ -27,7 +27,6 @@
package net.runelite.client.rs;
import com.google.common.base.Strings;
-import java.applet.Applet;
import java.io.IOException;
import java.util.Map;
import java.util.function.Supplier;
@@ -193,7 +192,7 @@ private Client loadClient(RSConfig config) throws ClassNotFoundException, Illega
.loadClass(initialClass);
Client rs = (Client) clientClass.newInstance();
- ((Applet) rs).setStub(new RSAppletStub(config, runtimeConfigLoader));
+ rs.setConfiguration(new RSAppletStub(config, runtimeConfigLoader));
log.info("injected-client {}", rs.getBuildID());
diff --git a/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java b/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java
index 327526ba4fd..54adf8c5818 100644
--- a/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java
+++ b/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java
@@ -25,42 +25,22 @@
*/
package net.runelite.client.rs;
-import java.applet.Applet;
-import java.applet.AppletContext;
-import java.applet.AppletStub;
-import java.applet.AudioClip;
-import java.awt.Image;
-import java.io.IOException;
-import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.Enumeration;
-import java.util.Iterator;
import javax.swing.SwingUtilities;
import lombok.RequiredArgsConstructor;
+import net.runelite.api.ClientConfiguration;
import net.runelite.client.RuntimeConfig;
import net.runelite.client.RuntimeConfigLoader;
import net.runelite.client.ui.FatalErrorDialog;
import net.runelite.client.util.LinkBrowser;
@RequiredArgsConstructor
-class RSAppletStub implements AppletStub
+class RSAppletStub implements ClientConfiguration
{
private final RSConfig config;
private final RuntimeConfigLoader runtimeConfigLoader;
- @Override
- public boolean isActive()
- {
- return true;
- }
-
- @Override
- public URL getDocumentBase()
- {
- return getCodeBase();
- }
-
@Override
public URL getCodeBase()
{
@@ -81,129 +61,58 @@ public String getParameter(String name)
}
@Override
- public AppletContext getAppletContext()
+ public void onError(String code)
{
- return new AppletContext()
+ try
{
- @Override
- public AudioClip getAudioClip(URL url)
- {
- return null;
- }
-
- @Override
- public Image getImage(URL url)
- {
- return null;
- }
-
- @Override
- public Applet getApplet(String name)
- {
- return null;
- }
-
- @Override
- public Enumeration