diff --git a/cache/src/main/java/net/runelite/cache/util/Xtea.java b/cache/src/main/java/net/runelite/cache/util/Xtea.java
index c79dc5a511..d970979e50 100644
--- a/cache/src/main/java/net/runelite/cache/util/Xtea.java
+++ b/cache/src/main/java/net/runelite/cache/util/Xtea.java
@@ -24,8 +24,8 @@
*/
package net.runelite.cache.util;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
+import net.runelite.cache.io.InputStream;
+import net.runelite.cache.io.OutputStream;
public class Xtea
{
@@ -42,13 +42,13 @@ public class Xtea
public byte[] encrypt(byte[] data, int len)
{
- ByteBuf buf = Unpooled.wrappedBuffer(data, 0, len);
- ByteBuf out = Unpooled.buffer(len);
+ InputStream in = new InputStream(data);
+ OutputStream out = new OutputStream(len);
int numBlocks = len / 8;
for (int block = 0; block < numBlocks; ++block)
{
- int v0 = buf.readInt();
- int v1 = buf.readInt();
+ int v0 = in.readInt();
+ int v1 = in.readInt();
int sum = 0;
for (int i = 0; i < ROUNDS; ++i)
{
@@ -59,19 +59,19 @@ public class Xtea
out.writeInt(v0);
out.writeInt(v1);
}
- out.writeBytes(buf);
- return out.array();
+ out.writeBytes(in.getRemaining());
+ return out.flip();
}
public byte[] decrypt(byte[] data, int len)
{
- ByteBuf buf = Unpooled.wrappedBuffer(data, 0, len);
- ByteBuf out = Unpooled.buffer(len);
+ InputStream in = new InputStream(data);
+ OutputStream out = new OutputStream(len);
int numBlocks = len / 8;
for (int block = 0; block < numBlocks; ++block)
{
- int v0 = buf.readInt();
- int v1 = buf.readInt();
+ int v0 = in.readInt();
+ int v1 = in.readInt();
int sum = GOLDEN_RATIO * ROUNDS;
for (int i = 0; i < ROUNDS; ++i)
{
@@ -82,7 +82,7 @@ public class Xtea
out.writeInt(v0);
out.writeInt(v1);
}
- out.writeBytes(buf);
- return out.array();
+ out.writeBytes(in.getRemaining());
+ return out.flip();
}
}
diff --git a/runelite-api/src/main/java/net/runelite/api/AnimationID.java b/runelite-api/src/main/java/net/runelite/api/AnimationID.java
index 0d4350fbcf..59c61ab497 100644
--- a/runelite-api/src/main/java/net/runelite/api/AnimationID.java
+++ b/runelite-api/src/main/java/net/runelite/api/AnimationID.java
@@ -205,6 +205,7 @@ public final class AnimationID
public static final int LEAGUE_HOME_TELEPORT_5 = 8805;
public static final int LEAGUE_HOME_TELEPORT_6 = 8807;
public static final int RAID_LIGHT_ANIMATION = 3101;
+ public static final int LOOTBEAM_ANIMATION = 9260;
public static final int CONSTRUCTION = 3676;
public static final int CONSTRUCTION_IMCANDO = 8912;
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 cf99e610f6..ce0d70e902 100644
--- a/runelite-api/src/main/java/net/runelite/api/Client.java
+++ b/runelite-api/src/main/java/net/runelite/api/Client.java
@@ -456,6 +456,11 @@ public interface Client extends GameEngine
*/
IndexDataBase getIndexConfig();
+ /**
+ * Gets an index by id
+ */
+ IndexDataBase getIndex(int id);
+
/**
* Returns the x-axis base coordinate.
*
@@ -1131,7 +1136,26 @@ public interface Client extends GameEngine
RuneLiteObject createRuneLiteObject();
/**
- * Loads a model from the cache
+ * Loads an unlit model from the cache. The returned model shares
+ * data such as faces, face colors, face transparencies, and vertex points with
+ * other models. If you want to mutate these you MUST call the relevant {@code cloneX}
+ * method.
+ *
+ * @see ModelData#cloneColors()
+ *
+ * @param id the ID of the model
+ * @return the model or null if it is loading or nonexistent
+ */
+ @Nullable
+ ModelData loadModelData(int id);
+
+ ModelData mergeModels(ModelData[] models, int length);
+ ModelData mergeModels(ModelData ...models);
+
+ /**
+ * Loads and lights a model from the cache
+ *
+ * This is equivalent to {@code loadModelData(id).light()}
*
* @param id the ID of the model
* @return the model or null if it is loading or nonexistent
diff --git a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java
index 2a6f761b1e..8ffba7c9ef 100644
--- a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java
+++ b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java
@@ -54,4 +54,6 @@ public interface IndexDataBase
int getGroupFileCount(int groupId);
int[] getFileCounts();
+
+ byte[] loadData(int archiveID, int fileID);
}
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 dcd48656ce..6c164688a1 100644
--- a/runelite-api/src/main/java/net/runelite/api/ItemID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java
@@ -12284,5 +12284,69 @@ public final class ItemID
public static final int BLOOD_ESSENCE = 26390;
public static final int BLOOD_ESSENCE_ACTIVE = 26392;
public static final int BANDOSIAN_COMPONENTS = 26394;
+ public static final int CABBAGE_26417 = 26417;
+ public static final int CABBAGE_26419 = 26419;
+ public static final int SHATTERED_RELICS_VARIETY_ORNAMENT_KIT = 26421;
+ public static final int SHATTERED_BANNER = 26424;
+ public static final int SHATTERED_HOOD_T1 = 26427;
+ public static final int SHATTERED_TOP_T1 = 26430;
+ public static final int SHATTERED_TROUSERS_T1 = 26433;
+ public static final int SHATTERED_BOOTS_T1 = 26436;
+ public static final int SHATTERED_HOOD_T2 = 26439;
+ public static final int SHATTERED_TOP_T2 = 26442;
+ public static final int SHATTERED_TROUSERS_T2 = 26445;
+ public static final int SHATTERED_BOOTS_T2 = 26448;
+ public static final int SHATTERED_HOOD_T3 = 26451;
+ public static final int SHATTERED_TOP_T3 = 26454;
+ public static final int SHATTERED_TROUSERS_T3 = 26457;
+ public static final int SHATTERED_BOOTS_T3 = 26460;
+ public static final int VOID_KNIGHT_TOP_OR = 26463;
+ public static final int VOID_KNIGHT_ROBE_OR = 26465;
+ public static final int VOID_KNIGHT_GLOVES_OR = 26467;
+ public static final int ELITE_VOID_TOP_OR = 26469;
+ public static final int ELITE_VOID_ROBE_OR = 26471;
+ public static final int VOID_MAGE_HELM_OR = 26473;
+ public static final int VOID_RANGER_HELM_OR = 26475;
+ public static final int VOID_MELEE_HELM_OR = 26477;
+ public static final int SHATTERED_RELICS_VOID_ORNAMENT_KIT = 26479;
+ public static final int ABYSSAL_WHIP_OR = 26482;
+ public static final int ABYSSAL_TENTACLE_OR = 26484;
+ public static final int RUNE_CROSSBOW_OR = 26486;
+ public static final int BOOK_OF_BALANCE_OR = 26488;
+ public static final int BOOK_OF_DARKNESS_OR = 26490;
+ public static final int BOOK_OF_LAW_OR = 26492;
+ public static final int BOOK_OF_WAR_OR = 26494;
+ public static final int HOLY_BOOK_OR = 26496;
+ public static final int UNHOLY_BOOK_OR = 26498;
+ public static final int SHATTERED_TELEPORT_SCROLL = 26500;
+ public static final int SHATTERED_RELICS_BRONZE_TROPHY = 26503;
+ public static final int SHATTERED_RELICS_IRON_TROPHY = 26505;
+ public static final int SHATTERED_RELICS_STEEL_TROPHY = 26507;
+ public static final int SHATTERED_RELICS_MITHRIL_TROPHY = 26509;
+ public static final int SHATTERED_RELICS_ADAMANT_TROPHY = 26511;
+ public static final int SHATTERED_RELICS_RUNE_TROPHY = 26513;
+ public static final int SHATTERED_RELICS_DRAGON_TROPHY = 26515;
+ public static final int SHATTERED_CANE = 26517;
+ public static final int CANNON_BASE_OR = 26520;
+ public static final int CANNON_STAND_OR = 26522;
+ public static final int CANNON_BARRELS_OR = 26524;
+ public static final int CANNON_FURNACE_OR = 26526;
+ public static final int SHATTERED_CANNON_ORNAMENT_KIT = 26528;
+ public static final int MYSTIC_HAT_OR = 26531;
+ public static final int MYSTIC_ROBE_TOP_OR = 26533;
+ public static final int MYSTIC_ROBE_BOTTOM_OR = 26535;
+ public static final int MYSTIC_GLOVES_OR = 26537;
+ public static final int MYSTIC_BOOTS_OR = 26539;
+ public static final int SHATTERED_RELICS_MYSTIC_ORNAMENT_KIT = 26541;
+ public static final int UNIDENTIFIED_FRAGMENT_HARVESTING = 26544;
+ public static final int UNIDENTIFIED_FRAGMENT_PRODUCTION = 26545;
+ public static final int UNIDENTIFIED_FRAGMENT_SKILLING = 26546;
+ public static final int UNIDENTIFIED_FRAGMENT_COMBAT = 26547;
+ public static final int UNIDENTIFIED_FRAGMENT_MISC = 26548;
+ public static final int PORTABLE_WAYSTONE = 26549;
+ public static final int ARCANE_GRIMOIRE = 26551;
+ public static final int SHATTERED_RELIC_HUNTER_T1_ARMOUR_SET = 26554;
+ public static final int SHATTERED_RELIC_HUNTER_T2_ARMOUR_SET = 26557;
+ public static final int SHATTERED_RELIC_HUNTER_T3_ARMOUR_SET = 26560;
/* This file is automatically generated. Do not edit. */
}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/JagexColor.java b/runelite-api/src/main/java/net/runelite/api/JagexColor.java
index 618ed002fa..1175f194e7 100644
--- a/runelite-api/src/main/java/net/runelite/api/JagexColor.java
+++ b/runelite-api/src/main/java/net/runelite/api/JagexColor.java
@@ -28,11 +28,35 @@ import java.awt.Color;
public final class JagexColor
{
+ public static final int HUE_MAX = 63;
+ public static final int SATURATION_MAX = 7;
+ public static final int LUMINANCE_MAX = 127;
+
public static short packHSL(int hue, int saturation, int luminance)
{
- return (short) ((short) (hue & 63) << 10
- | (short) (saturation & 7) << 7
- | (short) (luminance & 127));
+ return (short) ((short) (hue & HUE_MAX) << 10
+ | (short) (saturation & SATURATION_MAX) << 7
+ | (short) (luminance & LUMINANCE_MAX));
+ }
+
+ public static int unpackHue(short hsl)
+ {
+ return hsl >> 10 & HUE_MAX;
+ }
+
+ public static int unpackSaturation(short hsl)
+ {
+ return hsl >> 7 & SATURATION_MAX;
+ }
+
+ public static int unpackLuminance(short hsl)
+ {
+ return hsl & LUMINANCE_MAX;
+ }
+
+ public static String formatHSL(short hsl)
+ {
+ return String.format("%02Xh%Xs%02Xl", unpackHue(hsl), unpackSaturation(hsl), unpackLuminance(hsl));
}
public static short rgbToHSL(int rgb, double brightness)
diff --git a/runelite-api/src/main/java/net/runelite/api/Mesh.java b/runelite-api/src/main/java/net/runelite/api/Mesh.java
new file mode 100644
index 0000000000..b149a5fd10
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/Mesh.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2022 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.util.List;
+import net.runelite.api.model.Triangle;
+import net.runelite.api.model.Vertex;
+
+/**
+ * A {@link Model} or {@link ModelData}
+ */
+public interface Mesh>
+{
+ /**
+ * Gets a list of all vertices of the model.
+ *
+ * @return the vertices
+ */
+ List getVertices();
+
+ /**
+ * Gets a list of all triangles of the model.
+ *
+ * @return the triangle
+ */
+ List getTriangles();
+
+ int getVerticesCount();
+ int[] getVerticesX();
+ int[] getVerticesY();
+ int[] getVerticesZ();
+
+ int getFaceCount();
+ int[] getFaceIndices1();
+ int[] getFaceIndices2();
+ int[] getFaceIndices3();
+ byte[] getFaceTransparencies();
+ short[] getFaceTextures();
+
+ /**
+ * Rotates this model 90 degrees around the vertical axis.
+ * {@link ModelData#cloneVertices()} should be called before calling this method
+ */
+ T rotateY90Ccw();
+
+ /**
+ * Rotates this model 180 degrees around the vertical axis.
+ * {@link ModelData#cloneVertices()} should be called before calling this method
+ */
+ T rotateY180Ccw();
+
+ /**
+ * Rotates this model 270 degrees around the vertical axis.
+ * {@link ModelData#cloneVertices()} should be called before calling this method
+ */
+ T rotateY270Ccw();
+
+ /**
+ * Offsets this model by the passed amount (1/128ths of a tile).
+ * {@link ModelData#cloneVertices()} should be called before calling this method
+ */
+ T translate(int x, int y, int z);
+
+ /**
+ * Resizes this model by the passed amount (1/128ths).
+ * {@link ModelData#cloneVertices()} should be called before calling this method
+ */
+ T scale(int x, int y, int z);
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/Model.java b/runelite-api/src/main/java/net/runelite/api/Model.java
index 71338a968b..0b38bcf3af 100644
--- a/runelite-api/src/main/java/net/runelite/api/Model.java
+++ b/runelite-api/src/main/java/net/runelite/api/Model.java
@@ -31,46 +31,14 @@ import java.util.List;
/**
* Represents the model of an object.
*/
-public interface Model extends Renderable
+public interface Model extends Mesh, Renderable
{
- /**
- * Gets a list of all vertices of the model.
- *
- * @return the vertices
- */
- List getVertices();
-
- /**
- * Gets a list of all triangles of the model.
- *
- * @return the triangle
- */
- List getTriangles();
-
- int getVerticesCount();
-
- int[] getVerticesX();
-
- int[] getVerticesY();
-
- int[] getVerticesZ();
-
- int getFaceCount();
-
- int[] getFaceIndices1();
-
- int[] getFaceIndices2();
-
- int[] getFaceIndices3();
-
int[] getFaceColors1();
int[] getFaceColors2();
int[] getFaceColors3();
- byte[] getFaceTransparencies();
-
int getSceneId();
void setSceneId(int sceneId);
@@ -88,8 +56,6 @@ public interface Model extends Renderable
int getRadius();
- short[] getFaceTextures();
-
float[] getFaceTextureUVCoordinates();
void calculateExtreme(int orientation);
diff --git a/runelite-api/src/main/java/net/runelite/api/ModelData.java b/runelite-api/src/main/java/net/runelite/api/ModelData.java
new file mode 100644
index 0000000000..f98da89ca8
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/ModelData.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2022 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;
+
+/**
+ * An unlit model
+ */
+public interface ModelData extends Mesh, Renderable
+{
+ int DEFAULT_AMBIENT = 64;
+ int DEFAULT_CONTRAST = 768;
+ int DEFAULT_X = -50;
+ int DEFAULT_Y = -10;
+ int DEFAULT_Z = -50;
+
+ /**
+ * Gets colors as Jagex HSL
+ *
+ * @see JagexColor
+ */
+ short[] getFaceColors();
+
+ /**
+ * Lights a model.
+ *
+ * The produced model shares verticies, face transparencies, face indicies, and textures with
+ * the underlying ModelData. If any of these may be mutated the corresponding {@code cloneX}
+ * method should be called before {@code light}ing
+ */
+ Model light(int ambient, int contrast, int x, int y, int z);
+
+ /**
+ * Lights a model with default values
+ *
+ * @see #light(int, int, int, int, int)
+ */
+ Model light();
+
+ /**
+ * Applies a recolor using Jagex's HSL format. You should call {@link #cloneColors()} ()} before calling
+ * this method
+ */
+ ModelData recolor(short colorToReplace, short colorToReplaceWith);
+
+ /**
+ * Applies a retexture, changing texture ids. You should call {@link #cloneTextures()} before calling
+ * this method
+ */
+ ModelData retexture(short find, short replace);
+
+ /**
+ * Shallow-copies a model. Does not copy any arrays, which are still shared with this object.
+ */
+ ModelData shallowCopy();
+
+ /**
+ * Clones {@link #getVerticesX()}, {@link #getVerticesY()}, and {@link #getVerticesZ()} so
+ * they can be safely mutated
+ */
+ ModelData cloneVertices();
+
+ /**
+ * Clones {@link #getFaceColors()} so they can be safely mutated
+ */
+ ModelData cloneColors();
+
+ /**
+ * Clones {@link #getFaceTextures()} so they can be safely mutated
+ */
+ ModelData cloneTextures();
+
+ /**
+ * Clones {@link #getFaceTransparencies()} so they can be safely mutated
+ */
+ ModelData cloneTransparencies();
+}
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 cd8c383e63..cfd04862de 100644
--- a/runelite-api/src/main/java/net/runelite/api/NpcID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NpcID.java
@@ -9477,31 +9477,9 @@ public final class NpcID
public static final int REGENT = 11229;
public static final int GROUP_STORAGE_TUTOR = 11230;
public static final int GROUP_IRON_TUTOR = 11231;
- public static final int TINY_SNOWBALL = 11232;
- public static final int MINI_SNOWBALL = 11233;
- public static final int LITTLE_SNOWBALL = 11234;
- public static final int SMALL_SNOWBALL = 11235;
- public static final int NORMAL_SNOWBALL = 11236;
- public static final int BIG_SNOWBALL = 11237;
- public static final int LARGE_SNOWBALL = 11238;
- public static final int HUGE_SNOWBALL = 11239;
- public static final int HUMONGOUS_SNOWBALL = 11240;
- public static final int BUOY = 11241;
- public static final int GURL = 11242;
- public static final int BUOY_11243 = 11243;
- public static final int GURL_11244 = 11244;
- public static final int HERQUIN_11245 = 11245;
- public static final int CECILIA_11247 = 11247;
- public static final int LARRY_11248 = 11248;
- public static final int SANTAS_THRONE = 11249;
- public static final int SANTA = 11250;
- public static final int WAYNE_11251 = 11251;
- public static final int WYSON_THE_GARDENER_11252 = 11252;
- public static final int HAIRDRESSER_11254 = 11254;
- public static final int SIR_VYVIN_11255 = 11255;
- public static final int XI_PLZPETDOGZ_XIX = 11259;
- public static final int DRAKE_11260 = 11260;
- public static final int DUCK_11261 = 11261;
+ public static final int THE_SAGE = 11232;
+ public static final int LEAGUE_TUTOR = 11233;
+ public static final int LEAGUES_ASSISTANT_11234 = 11234;
public static final int NEXLING = 11276;
public static final int NEXLING_11277 = 11277;
public static final int NEX = 11278;
@@ -9521,5 +9499,6 @@ public final class NpcID
public static final int SPIRITUAL_MAGE_11292 = 11292;
public static final int BLOOD_REAVER = 11293;
public static final int BLOOD_REAVER_11294 = 11294;
+ public static final int GULL_11297 = 11297;
/* 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 3adbbe4a12..bb4bda7a6b 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullItemID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullItemID.java
@@ -13901,5 +13901,108 @@ public final class NullItemID
public static final int NULL_26391 = 26391;
public static final int NULL_26393 = 26393;
public static final int NULL_26395 = 26395;
+ public static final int NULL_26396 = 26396;
+ public static final int NULL_26397 = 26397;
+ public static final int NULL_26398 = 26398;
+ public static final int NULL_26399 = 26399;
+ public static final int NULL_26400 = 26400;
+ public static final int NULL_26401 = 26401;
+ public static final int NULL_26402 = 26402;
+ public static final int NULL_26403 = 26403;
+ public static final int NULL_26404 = 26404;
+ public static final int NULL_26405 = 26405;
+ public static final int NULL_26406 = 26406;
+ public static final int NULL_26407 = 26407;
+ public static final int NULL_26408 = 26408;
+ public static final int NULL_26409 = 26409;
+ public static final int NULL_26410 = 26410;
+ public static final int NULL_26411 = 26411;
+ public static final int NULL_26412 = 26412;
+ public static final int NULL_26413 = 26413;
+ public static final int NULL_26414 = 26414;
+ public static final int NULL_26415 = 26415;
+ public static final int NULL_26416 = 26416;
+ public static final int NULL_26418 = 26418;
+ public static final int NULL_26420 = 26420;
+ public static final int NULL_26422 = 26422;
+ public static final int NULL_26423 = 26423;
+ public static final int NULL_26425 = 26425;
+ public static final int NULL_26426 = 26426;
+ public static final int NULL_26428 = 26428;
+ public static final int NULL_26429 = 26429;
+ public static final int NULL_26431 = 26431;
+ public static final int NULL_26432 = 26432;
+ public static final int NULL_26434 = 26434;
+ public static final int NULL_26435 = 26435;
+ public static final int NULL_26437 = 26437;
+ public static final int NULL_26438 = 26438;
+ public static final int NULL_26440 = 26440;
+ public static final int NULL_26441 = 26441;
+ public static final int NULL_26443 = 26443;
+ public static final int NULL_26444 = 26444;
+ public static final int NULL_26446 = 26446;
+ public static final int NULL_26447 = 26447;
+ public static final int NULL_26449 = 26449;
+ public static final int NULL_26450 = 26450;
+ public static final int NULL_26452 = 26452;
+ public static final int NULL_26453 = 26453;
+ public static final int NULL_26455 = 26455;
+ public static final int NULL_26456 = 26456;
+ public static final int NULL_26458 = 26458;
+ public static final int NULL_26459 = 26459;
+ public static final int NULL_26461 = 26461;
+ public static final int NULL_26462 = 26462;
+ public static final int NULL_26464 = 26464;
+ public static final int NULL_26466 = 26466;
+ public static final int NULL_26468 = 26468;
+ public static final int NULL_26470 = 26470;
+ public static final int NULL_26472 = 26472;
+ public static final int NULL_26474 = 26474;
+ public static final int NULL_26476 = 26476;
+ public static final int NULL_26478 = 26478;
+ public static final int NULL_26480 = 26480;
+ public static final int NULL_26481 = 26481;
+ public static final int NULL_26483 = 26483;
+ public static final int NULL_26485 = 26485;
+ public static final int NULL_26487 = 26487;
+ public static final int NULL_26489 = 26489;
+ public static final int NULL_26491 = 26491;
+ public static final int NULL_26493 = 26493;
+ public static final int NULL_26495 = 26495;
+ public static final int NULL_26497 = 26497;
+ public static final int NULL_26499 = 26499;
+ public static final int NULL_26501 = 26501;
+ public static final int NULL_26502 = 26502;
+ public static final int NULL_26504 = 26504;
+ public static final int NULL_26506 = 26506;
+ public static final int NULL_26508 = 26508;
+ public static final int NULL_26510 = 26510;
+ public static final int NULL_26512 = 26512;
+ public static final int NULL_26514 = 26514;
+ public static final int NULL_26516 = 26516;
+ public static final int NULL_26518 = 26518;
+ public static final int NULL_26519 = 26519;
+ public static final int NULL_26521 = 26521;
+ public static final int NULL_26523 = 26523;
+ public static final int NULL_26525 = 26525;
+ public static final int NULL_26527 = 26527;
+ public static final int NULL_26529 = 26529;
+ public static final int NULL_26530 = 26530;
+ public static final int NULL_26532 = 26532;
+ public static final int NULL_26534 = 26534;
+ public static final int NULL_26536 = 26536;
+ public static final int NULL_26538 = 26538;
+ public static final int NULL_26540 = 26540;
+ public static final int NULL_26542 = 26542;
+ public static final int NULL_26543 = 26543;
+ public static final int NULL_26550 = 26550;
+ public static final int NULL_26552 = 26552;
+ public static final int NULL_26553 = 26553;
+ public static final int NULL_26555 = 26555;
+ public static final int NULL_26556 = 26556;
+ public static final int NULL_26558 = 26558;
+ public static final int NULL_26559 = 26559;
+ public static final int NULL_26561 = 26561;
+ public static final int NULL_26562 = 26562;
/* 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 73396db288..9e9d6158d6 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
@@ -1738,25 +1738,12 @@ public final class NullNpcID
public static final int NULL_11222 = 11222;
public static final int NULL_11223 = 11223;
public static final int NULL_11224 = 11224;
- public static final int NULL_11246 = 11246;
+ public static final int NULL_11235 = 11235;
+ public static final int NULL_11236 = 11236;
public static final int NULL_11253 = 11253;
public static final int NULL_11256 = 11256;
public static final int NULL_11257 = 11257;
public static final int NULL_11258 = 11258;
- public static final int NULL_11262 = 11262;
- public static final int NULL_11263 = 11263;
- public static final int NULL_11264 = 11264;
- public static final int NULL_11265 = 11265;
- public static final int NULL_11266 = 11266;
- public static final int NULL_11267 = 11267;
- public static final int NULL_11268 = 11268;
- public static final int NULL_11269 = 11269;
- public static final int NULL_11270 = 11270;
- public static final int NULL_11271 = 11271;
- public static final int NULL_11272 = 11272;
- public static final int NULL_11273 = 11273;
- public static final int NULL_11274 = 11274;
- public static final int NULL_11275 = 11275;
public static final int NULL_11295 = 11295;
public static final int NULL_11296 = 11296;
/* 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 ae2f7ee931..d65f6bb4c6 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
@@ -21006,18 +21006,7 @@ public final class NullObjectID
public static final int NULL_42849 = 42849;
public static final int NULL_42850 = 42850;
public static final int NULL_42851 = 42851;
- public static final int NULL_42873 = 42873;
- public static final int NULL_42874 = 42874;
- public static final int NULL_42875 = 42875;
- public static final int NULL_42876 = 42876;
- public static final int NULL_42877 = 42877;
- public static final int NULL_42882 = 42882;
- public static final int NULL_42883 = 42883;
- public static final int NULL_42884 = 42884;
- public static final int NULL_42893 = 42893;
- public static final int NULL_42894 = 42894;
- public static final int NULL_42896 = 42896;
- public static final int NULL_42897 = 42897;
+ public static final int NULL_42853 = 42853;
public static final int NULL_42898 = 42898;
public static final int NULL_42899 = 42899;
public static final int NULL_42900 = 42900;
@@ -21040,12 +21029,6 @@ public final class NullObjectID
public static final int NULL_42919 = 42919;
public static final int NULL_42920 = 42920;
public static final int NULL_42921 = 42921;
- public static final int NULL_42922 = 42922;
- public static final int NULL_42923 = 42923;
- public static final int NULL_42924 = 42924;
- public static final int NULL_42925 = 42925;
- public static final int NULL_42926 = 42926;
- public static final int NULL_42927 = 42927;
public static final int NULL_42945 = 42945;
public static final int NULL_42946 = 42946;
public static final int NULL_42947 = 42947;
@@ -21068,5 +21051,60 @@ public final class NullObjectID
public static final int NULL_42964 = 42964;
public static final int NULL_42967 = 42967;
public static final int NULL_42968 = 42968;
+ public static final int NULL_42991 = 42991;
+ public static final int NULL_43000 = 43000;
+ public static final int NULL_43001 = 43001;
+ public static final int NULL_43002 = 43002;
+ public static final int NULL_43032 = 43032;
+ public static final int NULL_43033 = 43033;
+ public static final int NULL_43034 = 43034;
+ public static final int NULL_43035 = 43035;
+ public static final int NULL_43036 = 43036;
+ public static final int NULL_43037 = 43037;
+ public static final int NULL_43038 = 43038;
+ public static final int NULL_43039 = 43039;
+ public static final int NULL_43040 = 43040;
+ public static final int NULL_43041 = 43041;
+ public static final int NULL_43042 = 43042;
+ public static final int NULL_43043 = 43043;
+ public static final int NULL_43044 = 43044;
+ public static final int NULL_43045 = 43045;
+ public static final int NULL_43046 = 43046;
+ public static final int NULL_43047 = 43047;
+ public static final int NULL_43048 = 43048;
+ public static final int NULL_43049 = 43049;
+ public static final int NULL_43050 = 43050;
+ public static final int NULL_43051 = 43051;
+ public static final int NULL_43052 = 43052;
+ public static final int NULL_43053 = 43053;
+ public static final int NULL_43054 = 43054;
+ public static final int NULL_43055 = 43055;
+ public static final int NULL_43056 = 43056;
+ public static final int NULL_43057 = 43057;
+ public static final int NULL_43058 = 43058;
+ public static final int NULL_43059 = 43059;
+ public static final int NULL_43060 = 43060;
+ public static final int NULL_43061 = 43061;
+ public static final int NULL_43062 = 43062;
+ public static final int NULL_43063 = 43063;
+ public static final int NULL_43064 = 43064;
+ public static final int NULL_43065 = 43065;
+ public static final int NULL_43066 = 43066;
+ public static final int NULL_43067 = 43067;
+ public static final int NULL_43068 = 43068;
+ public static final int NULL_43069 = 43069;
+ public static final int NULL_43070 = 43070;
+ public static final int NULL_43071 = 43071;
+ public static final int NULL_43072 = 43072;
+ public static final int NULL_43073 = 43073;
+ public static final int NULL_43074 = 43074;
+ public static final int NULL_43075 = 43075;
+ public static final int NULL_43076 = 43076;
+ public static final int NULL_43077 = 43077;
+ public static final int NULL_43078 = 43078;
+ public static final int NULL_43079 = 43079;
+ public static final int NULL_43082 = 43082;
+ public static final int NULL_43083 = 43083;
+ public static final int NULL_43084 = 43084;
/* 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 016f9487e5..36497059d5 100644
--- a/runelite-api/src/main/java/net/runelite/api/ObjectID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ObjectID.java
@@ -21832,49 +21832,66 @@ public final class ObjectID
public static final int FROZEN_DOOR = 42840;
public static final int FROZEN_DOOR_42841 = 42841;
public static final int GOLD_SINK_42852 = 42852;
- public static final int SIGN_42853 = 42853;
- public static final int SCUFFED_SNOW = 42854;
- public static final int SNOWMAN = 42855;
- public static final int SNOWMAN_42856 = 42856;
- public static final int SNOWMAN_42857 = 42857;
- public static final int SNOWMAN_42858 = 42858;
- public static final int SNOWMAN_42859 = 42859;
- public static final int SNOWMAN_42860 = 42860;
- public static final int SNOWMAN_42861 = 42861;
- public static final int SNOWMAN_42862 = 42862;
- public static final int SNOWMAN_42863 = 42863;
- public static final int SNOWMAN_42864 = 42864;
- public static final int SPADE_42865 = 42865;
- public static final int PILE_OF_SNOW = 42866;
- public static final int BUSH_42867 = 42867;
- public static final int PILE_OF_SNOW_42868 = 42868;
- public static final int PILE_OF_SNOW_42869 = 42869;
- public static final int CHRISTMAS_TREE = 42870;
- public static final int CHRISTMAS_TREE_42871 = 42871;
- public static final int CHRISTMAS_TREE_42872 = 42872;
- public static final int PRESENTS = 42878;
- public static final int PRESENTS_42879 = 42879;
- public static final int PRESENTS_42880 = 42880;
- public static final int PRESENTS_42881 = 42881;
- public static final int POTTED_TREE = 42885;
- public static final int POTTED_TREE_42886 = 42886;
- public static final int MARKET_STALL_42887 = 42887;
- public static final int MARKET_STALL_42888 = 42888;
- public static final int MARKET_STALL_42889 = 42889;
- public static final int MARKET_STALL_42890 = 42890;
- public static final int MARKET_STALL_42891 = 42891;
- public static final int MARKET_STALL_42892 = 42892;
- public static final int ROBIN = 42895;
+ public static final int CHEST_42854 = 42854;
+ public static final int DOOR_42855 = 42855;
+ public static final int ANCIENT_PLAQUE = 42856;
+ public static final int SCOREBOARD_42857 = 42857;
+ public static final int CHEST_42858 = 42858;
+ public static final int ANCIENT_FORGE = 42859;
+ public static final int ANVIL_42860 = 42860;
+ public static final int TROPHY_PEDESTAL_42861 = 42861;
+ public static final int TROPHY_PEDESTAL_42862 = 42862;
+ public static final int TROPHY_PEDESTAL_42863 = 42863;
+ public static final int TROPHY_PEDESTAL_42864 = 42864;
+ public static final int TROPHY_PEDESTAL_42865 = 42865;
+ public static final int TROPHY_PEDESTAL_42866 = 42866;
+ public static final int TROPHY_PEDESTAL_42867 = 42867;
+ public static final int ORNATE_TROPHY_PEDESTAL_42868 = 42868;
+ public static final int ORNATE_TROPHY_PEDESTAL_42869 = 42869;
+ public static final int ORNATE_TROPHY_PEDESTAL_42870 = 42870;
+ public static final int ORNATE_TROPHY_PEDESTAL_42871 = 42871;
+ public static final int ORNATE_TROPHY_PEDESTAL_42872 = 42872;
+ public static final int ORNATE_TROPHY_PEDESTAL_42873 = 42873;
+ public static final int ORNATE_TROPHY_PEDESTAL_42874 = 42874;
+ public static final int TROPHY_PEDESTAL_42875 = 42875;
+ public static final int TROPHY_PEDESTAL_42876 = 42876;
+ public static final int TROPHY_PEDESTAL_42877 = 42877;
+ public static final int TROPHY_PEDESTAL_42878 = 42878;
+ public static final int TROPHY_PEDESTAL_42879 = 42879;
+ public static final int TROPHY_PEDESTAL_42880 = 42880;
+ public static final int TROPHY_PEDESTAL_42881 = 42881;
+ public static final int ORNATE_TROPHY_PEDESTAL_42882 = 42882;
+ public static final int ORNATE_TROPHY_PEDESTAL_42883 = 42883;
+ public static final int ORNATE_TROPHY_PEDESTAL_42884 = 42884;
+ public static final int ORNATE_TROPHY_PEDESTAL_42885 = 42885;
+ public static final int ORNATE_TROPHY_PEDESTAL_42886 = 42886;
+ public static final int ORNATE_TROPHY_PEDESTAL_42887 = 42887;
+ public static final int ORNATE_TROPHY_PEDESTAL_42888 = 42888;
+ public static final int TROPHY_PEDESTAL_42889 = 42889;
+ public static final int TROPHY_PEDESTAL_42890 = 42890;
+ public static final int TROPHY_PEDESTAL_42891 = 42891;
+ public static final int TROPHY_PEDESTAL_42892 = 42892;
+ public static final int TROPHY_PEDESTAL_42893 = 42893;
+ public static final int TROPHY_PEDESTAL_42894 = 42894;
+ public static final int TROPHY_PEDESTAL_42895 = 42895;
+ public static final int ORNATE_TROPHY_PEDESTAL_42896 = 42896;
+ public static final int ORNATE_TROPHY_PEDESTAL_42897 = 42897;
public static final int DEAD_TREE_42907 = 42907;
public static final int DEAD_OAK_42908 = 42908;
- public static final int SANTAS_SLEIGH = 42928;
- public static final int SANTAS_THRONE = 42929;
- public static final int SANTAS_SACK = 42930;
+ public static final int ORNATE_TROPHY_PEDESTAL_42922 = 42922;
+ public static final int ORNATE_TROPHY_PEDESTAL_42923 = 42923;
+ public static final int ORNATE_TROPHY_PEDESTAL_42924 = 42924;
+ public static final int ORNATE_TROPHY_PEDESTAL_42925 = 42925;
+ public static final int ORNATE_TROPHY_PEDESTAL_42926 = 42926;
+ public static final int BANNER_STAND_42927 = 42927;
+ public static final int ORNATE_BANNER_STAND_42928 = 42928;
+ public static final int OAK_OUTFIT_STAND_42929 = 42929;
+ public static final int OAK_OUTFIT_STAND_42930 = 42930;
public static final int FROZEN_DOOR_42931 = 42931;
public static final int FROZEN_DOOR_42932 = 42932;
public static final int DOOR_42933 = 42933;
public static final int DOOR_42934 = 42934;
- public static final int ANCIENT_PLAQUE = 42935;
+ public static final int ANCIENT_PLAQUE_42935 = 42935;
public static final int SCOREBOARD_42936 = 42936;
public static final int ANCIENT_BARRIER = 42937;
public static final int ANCIENT_BARRIER_42938 = 42938;
@@ -21885,7 +21902,67 @@ public final class ObjectID
public static final int STALAGMITE_42943 = 42943;
public static final int STALAGMITE_42944 = 42944;
public static final int ALTAR_42965 = 42965;
- public static final int ANCIENT_FORGE = 42966;
+ public static final int ANCIENT_FORGE_42966 = 42966;
public static final int BROKEN_CROSSBOW_42969 = 42969;
+ public static final int OAK_OUTFIT_STAND_42970 = 42970;
+ public static final int MAHOGANY_OUTFIT_STAND_42971 = 42971;
+ public static final int MAHOGANY_OUTFIT_STAND_42972 = 42972;
+ public static final int MAHOGANY_OUTFIT_STAND_42973 = 42973;
+ public static final int LOCK_42974 = 42974;
+ public static final int LOCK_42975 = 42975;
+ public static final int LOCK_42976 = 42976;
+ public static final int LOCK_42977 = 42977;
+ public static final int LOCK_42978 = 42978;
+ public static final int LOCK_42979 = 42979;
+ public static final int LOCK_42980 = 42980;
+ public static final int LOCK_42981 = 42981;
+ public static final int LOCK_42982 = 42982;
+ public static final int LOCK_42983 = 42983;
+ public static final int LOCK_42984 = 42984;
+ public static final int LOCK_42985 = 42985;
+ public static final int LOCK_42986 = 42986;
+ public static final int LOCK_42987 = 42987;
+ public static final int REPLACE_ME = 42988;
+ public static final int REPLACE_ME_42989 = 42989;
+ public static final int REPLACE_ME_42990 = 42990;
+ public static final int RUNESTONE_BASALT = 42992;
+ public static final int RUNESTONE_BASALT_42993 = 42993;
+ public static final int RUNESTONE_BASALT_42994 = 42994;
+ public static final int RUNESTONE_BASALT_42995 = 42995;
+ public static final int RUNESTONE_BASALT_42996 = 42996;
+ public static final int RUNESTONE_BASALT_42997 = 42997;
+ public static final int RUNESTONE_BASALT_42998 = 42998;
+ public static final int BOAT_42999 = 42999;
+ public static final int LUMBRIDGE_WAYSTONE = 43003;
+ public static final int LUMBRIDGE_WAYSTONE_43004 = 43004;
+ public static final int FALADOR_WAYSTONE = 43005;
+ public static final int FALADOR_WAYSTONE_43006 = 43006;
+ public static final int VARROCK_WAYSTONE = 43007;
+ public static final int VARROCK_WAYSTONE_43008 = 43008;
+ public static final int AL_KHARID_WAYSTONE = 43009;
+ public static final int AL_KHARID_WAYSTONE_43010 = 43010;
+ public static final int CATHERBY_WAYSTONE = 43011;
+ public static final int CATHERBY_WAYSTONE_43012 = 43012;
+ public static final int ARDOUGNE_WAYSTONE = 43013;
+ public static final int ARDOUGNE_WAYSTONE_43014 = 43014;
+ public static final int BRIMHAVEN_WAYSTONE = 43015;
+ public static final int BRIMHAVEN_WAYSTONE_43016 = 43016;
+ public static final int RELLEKKA_WAYSTONE = 43017;
+ public static final int RELLEKKA_WAYSTONE_43018 = 43018;
+ public static final int FEROX_ENCLAVE_WAYSTONE = 43019;
+ public static final int FEROX_ENCLAVE_WAYSTONE_43020 = 43020;
+ public static final int CANIFIS_WAYSTONE = 43021;
+ public static final int CANIFIS_WAYSTONE_43022 = 43022;
+ public static final int PRIFDDINAS_WAYSTONE = 43023;
+ public static final int PRIFDDINAS_WAYSTONE_43024 = 43024;
+ public static final int KOUREND_WAYSTONE = 43025;
+ public static final int KOUREND_WAYSTONE_43026 = 43026;
+ public static final int DWARF_MULTICANNON_43027 = 43027;
+ public static final int BROKEN_MULTICANNON_43028 = 43028;
+ public static final int CANNON_BASE_43029 = 43029;
+ public static final int CANNON_STAND_43030 = 43030;
+ public static final int CANNON_BARRELS_43031 = 43031;
+ public static final int RUNESTONE_BASALT_43080 = 43080;
+ public static final int RUNESTONE_BASALT_43081 = 43081;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
index 1114c99147..1d5e5f91b2 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
@@ -185,6 +185,7 @@ public final class WidgetID
public static final int GRAVESTONE_GROUP_ID = 672;
public static final int POH_TREASURE_CHEST_INVENTORY_GROUP_ID = 674;
public static final int GROUP_IRON_GROUP_ID = 726;
+ public static final int GROUP_STORAGE_INVENTORY_GROUP_ID = 725;
public static final int GROUP_STORAGE_GROUP_ID = 724;
static class WorldMap
@@ -841,23 +842,23 @@ public final class WidgetID
public static class StandardSpellBook
{
- static final int LUMBRIDGE_HOME_TELEPORT = 5;
- public static final int KOUREND_HOME_TELEPORT = 4;
+ static final int LUMBRIDGE_HOME_TELEPORT = 6;
+ static final int KOUREND_HOME_TELEPORT = 4;
}
static class AncientSpellBook
{
- static final int EDGEVILLE_HOME_TELEPORT = 99;
+ static final int EDGEVILLE_HOME_TELEPORT = 100;
}
static class LunarSpellBook
{
- static final int LUNAR_HOME_TELEPORT = 100;
+ static final int LUNAR_HOME_TELEPORT = 101;
}
static class ArceuusSpellBook
{
- static final int ARCEUUS_HOME_TELEPORT = 144;
+ static final int ARCEUUS_HOME_TELEPORT = 145;
}
static class Pvp
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java
index 54887b7223..6af1e5d578 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java
@@ -83,6 +83,7 @@ public class DpsCounterPlugin extends Plugin
KREEARRA, KREEARRA_6492,
KRIL_TSUTSAROTH, KRIL_TSUTSAROTH_6495,
THE_MIMIC, THE_MIMIC_8633,
+ NEX, NEX_11279, NEX_11280, NEX_11281, NEX_11282,
THE_NIGHTMARE, THE_NIGHTMARE_9426, THE_NIGHTMARE_9427, THE_NIGHTMARE_9428, THE_NIGHTMARE_9429, THE_NIGHTMARE_9430, THE_NIGHTMARE_9431, THE_NIGHTMARE_9432, THE_NIGHTMARE_9433,
OBOR,
SARACHNIS,
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java
index 2e32a8e336..5869c07208 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsConfig.java
@@ -436,4 +436,15 @@ public interface GroundItemsConfig extends Config
{
return HighlightTier.HIGH;
}
+
+ @ConfigItem(
+ keyName = "lootbeamStyle",
+ name = "Lootbeam Style",
+ description = "Style of lootbeam to use",
+ position = 32
+ )
+ default Lootbeam.Style lootbeamStyle()
+ {
+ return Lootbeam.Style.MODERN;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
index 773fd8b044..af5282db14 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
@@ -99,7 +99,7 @@ import net.runelite.client.util.Text;
@PluginDescriptor(
name = "Ground Items",
description = "Highlight ground items and/or show price information",
- tags = {"grand", "exchange", "high", "alchemy", "prices", "highlight", "overlay"}
+ tags = {"grand", "exchange", "high", "alchemy", "prices", "highlight", "overlay", "lootbeam"}
)
public class GroundItemsPlugin extends Plugin
{
@@ -791,12 +791,13 @@ public class GroundItemsPlugin extends Plugin
Lootbeam lootbeam = lootbeams.get(worldPoint);
if (lootbeam == null)
{
- lootbeam = new Lootbeam(client, clientThread, worldPoint, color);
+ lootbeam = new Lootbeam(client, clientThread, worldPoint, color, config.lootbeamStyle());
lootbeams.put(worldPoint, lootbeam);
}
else
{
lootbeam.setColor(color);
+ lootbeam.setStyle(config.lootbeamStyle());
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/Lootbeam.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/Lootbeam.java
index 9e8761a93f..96d7d34409 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/Lootbeam.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/Lootbeam.java
@@ -24,10 +24,14 @@
*/
package net.runelite.client.plugins.grounditems;
+import java.util.function.Function;
+import lombok.RequiredArgsConstructor;
+import net.runelite.api.Animation;
import net.runelite.api.AnimationID;
import net.runelite.api.Client;
import net.runelite.api.JagexColor;
import net.runelite.api.Model;
+import net.runelite.api.ModelData;
import net.runelite.api.RuneLiteObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
@@ -36,22 +40,58 @@ import net.runelite.client.callback.ClientThread;
class Lootbeam
{
- private static final int RAID_LIGHT_MODEL = 5809;
- private static final short RAID_LIGHT_FIND_COLOR = 6371;
-
private final RuneLiteObject runeLiteObject;
private final Client client;
private final ClientThread clientThread;
private Color color;
+ private Style style;
- public Lootbeam(Client client, ClientThread clientThread, WorldPoint worldPoint, Color color)
+ @RequiredArgsConstructor
+ public enum Style
+ {
+ LIGHT(l -> l.client.loadModel(
+ 5809,
+ new short[]{6371},
+ new short[]{JagexColor.rgbToHSL(l.color.getRGB(), 1.0d)}
+ ), anim(AnimationID.RAID_LIGHT_ANIMATION)),
+ MODERN(l ->
+ {
+ ModelData md = l.client.loadModelData(43330);
+ if (md == null)
+ {
+ return null;
+ }
+
+ short hsl = JagexColor.rgbToHSL(l.color.getRGB(), 1.0d);
+ int hue = JagexColor.unpackHue(hsl);
+ int sat = Math.min(JagexColor.unpackSaturation(hsl) + 1, JagexColor.SATURATION_MAX);
+ int lum = JagexColor.unpackLuminance(hsl);
+
+ return md.cloneColors()
+ .recolor((short) 26432, JagexColor.packHSL(hue, sat, Math.min(lum + 12, JagexColor.LUMINANCE_MAX)))
+ .recolor((short) 26584, JagexColor.packHSL(hue, sat - 1, Math.max(lum - 12, 0)))
+ .light(75, 1875, ModelData.DEFAULT_X, ModelData.DEFAULT_Y, ModelData.DEFAULT_Z);
+ }, anim(AnimationID.LOOTBEAM_ANIMATION)),
+ ;
+
+ private final Function modelSupplier;
+ private final Function animationSupplier;
+ }
+
+ private static Function anim(int id)
+ {
+ return b -> b.client.loadAnimation(id);
+ }
+
+ public Lootbeam(Client client, ClientThread clientThread, WorldPoint worldPoint, Color color, Style style)
{
this.client = client;
this.clientThread = clientThread;
runeLiteObject = client.createRuneLiteObject();
- setColor(color);
- runeLiteObject.setAnimation(client.loadAnimation(AnimationID.RAID_LIGHT_ANIMATION));
+ this.color = color;
+ this.style = style;
+ update();
runeLiteObject.setShouldLoop(true);
LocalPoint lp = LocalPoint.fromWorld(client, worldPoint);
@@ -68,19 +108,34 @@ class Lootbeam
}
this.color = color;
+ update();
+ }
+
+ public void setStyle(Style style)
+ {
+ if (this.style == style)
+ {
+ return;
+ }
+
+ this.style = style;
+ update();
+ }
+
+ private void update()
+ {
clientThread.invoke(() ->
{
- Model m = client.loadModel(
- RAID_LIGHT_MODEL,
- new short[]{RAID_LIGHT_FIND_COLOR},
- new short[]{JagexColor.rgbToHSL(color.getRGB(), 1.0d)}
- );
- if (m == null)
+ Model model = style.modelSupplier.apply(this);
+ if (model == null)
{
return false;
}
- runeLiteObject.setModel(m);
+ Animation anim = style.animationSupplier.apply(this);
+
+ runeLiteObject.setAnimation(anim);
+ runeLiteObject.setModel(model);
return true;
});
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeConfig.java
index 82af2d77d3..eb0350e0ad 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeConfig.java
@@ -46,6 +46,7 @@ public interface ItemChargeConfig extends Config
String KEY_EXPEDITIOUS_BRACELET = "expeditiousBracelet";
String KEY_EXPLORERS_RING = "explorerRing";
String KEY_RING_OF_FORGING = "ringOfForging";
+ String KEY_BLOOD_ESSENCE = "bloodEssence";
@ConfigSection(
name = "Charge Settings",
@@ -415,4 +416,16 @@ public interface ItemChargeConfig extends Config
{
return true;
}
+
+ @ConfigItem(
+ keyName = "showBloodEssenceCharges",
+ name = "Blood Essence Charges",
+ description = "Show Blood Essence charges",
+ position = 30,
+ section = chargesSection
+ )
+ default boolean showBloodEssenceCharges()
+ {
+ return true;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java
index 6dfdb7114b..5ff384a8d0 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java
@@ -130,6 +130,13 @@ public class ItemChargePlugin extends Plugin
"Your expeditious bracelet has (\\d{1,2}) charges? left\\."
);
private static final String EXPEDITIOUS_BRACELET_BREAK_TEXT = "Your Expeditious Bracelet has crumbled to dust.";
+ private static final Pattern BLOOD_ESSENCE_CHECK_PATTERN = Pattern.compile(
+ "Your blood essence has (\\d{1,4}) charges? remaining"
+ );
+ private static final Pattern BLOOD_ESSENCE_EXTRACT_PATTERN = Pattern.compile(
+ "You manage to extract power from the Blood Essence and craft (\\d{1,3}) extra runes?\\."
+ );
+ private static final String BLOOD_ESSENCE_ACTIVATE_TEXT = "You activate the blood essence.";
private static final int MAX_DODGY_CHARGES = 10;
private static final int MAX_BINDING_CHARGES = 16;
@@ -138,6 +145,7 @@ public class ItemChargePlugin extends Plugin
private static final int MAX_AMULET_OF_CHEMISTRY_CHARGES = 5;
private static final int MAX_AMULET_OF_BOUNTY_CHARGES = 10;
private static final int MAX_SLAYER_BRACELET_CHARGES = 30;
+ private static final int MAX_BLOOD_ESSENCE_CHARGES = 1000;
private int lastExplorerRingCharge = -1;
@@ -227,6 +235,8 @@ public class ItemChargePlugin extends Plugin
Matcher slaughterCheckMatcher = BRACELET_OF_SLAUGHTER_CHECK_PATTERN.matcher(message);
Matcher expeditiousActivateMatcher = EXPEDITIOUS_BRACELET_ACTIVATE_PATTERN.matcher(message);
Matcher expeditiousCheckMatcher = EXPEDITIOUS_BRACELET_CHECK_PATTERN.matcher(message);
+ Matcher bloodEssenceCheckMatcher = BLOOD_ESSENCE_CHECK_PATTERN.matcher(message);
+ Matcher bloodEssenceExtractMatcher = BLOOD_ESSENCE_EXTRACT_PATTERN.matcher(message);
if (config.recoilNotification() && message.contains(RING_OF_RECOIL_BREAK_MESSAGE))
{
@@ -413,6 +423,18 @@ public class ItemChargePlugin extends Plugin
{
updateExpeditiousBraceletCharges(Integer.parseInt(expeditiousCheckMatcher.group(1)));
}
+ else if (bloodEssenceCheckMatcher.find())
+ {
+ updateBloodEssenceCharges(Integer.parseInt(bloodEssenceCheckMatcher.group(1)));
+ }
+ else if (bloodEssenceExtractMatcher.find())
+ {
+ updateBloodEssenceCharges(getItemCharges(ItemChargeConfig.KEY_BLOOD_ESSENCE) - Integer.parseInt(bloodEssenceExtractMatcher.group(1)));
+ }
+ else if (message.contains(BLOOD_ESSENCE_ACTIVATE_TEXT))
+ {
+ updateBloodEssenceCharges(MAX_BLOOD_ESSENCE_CHARGES);
+ }
}
}
@@ -540,6 +562,12 @@ public class ItemChargePlugin extends Plugin
updateInfoboxes();
}
+ private void updateBloodEssenceCharges(final int value)
+ {
+ setItemCharges(ItemChargeConfig.KEY_BLOOD_ESSENCE, value);
+ updateInfoboxes();
+ }
+
private void checkDestroyWidget()
{
final int currentTick = client.getTickCount();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeType.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeType.java
index 294a865c1f..3178fa9953 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeType.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeType.java
@@ -51,7 +51,8 @@ enum ItemChargeType
SACK(ItemChargeConfig::showSackCharges),
RING_OF_FORGING(ItemChargeConfig::showRingOfForgingCount),
POTION(ItemChargeConfig::showPotionDoseCount),
- GUTHIX_REST(ItemChargeConfig::showGuthixRestDoses);
+ GUTHIX_REST(ItemChargeConfig::showGuthixRestDoses),
+ BLOOD_ESSENCE(ItemChargeConfig::showBloodEssenceCharges);
private final Predicate enabled;
}
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 b9c1124423..65ee2123a1 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
@@ -62,6 +62,10 @@ enum ItemWithCharge
ANTIDOTE_PP2(POTION, ANTIDOTE2_5956, 2),
ANTIDOTE_PP3(POTION, ANTIDOTE3_5954, 3),
ANTIDOTE_PP4(POTION, ANTIDOTE4_5952, 4),
+ ANCIENT_BR1(POTION, ANCIENT_BREW1, 1),
+ ANCIENT_BR2(POTION, ANCIENT_BREW2, 2),
+ ANCIENT_BR3(POTION, ANCIENT_BREW3, 3),
+ ANCIENT_BR4(POTION, ANCIENT_BREW4, 4),
ANTIFIRE1(POTION, ANTIFIRE_POTION1, 1),
ANTIFIRE2(POTION, ANTIFIRE_POTION2, 2),
ANTIFIRE3(POTION, ANTIFIRE_POTION3, 3),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithConfig.java
index ca77f40d15..581410c1f9 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithConfig.java
@@ -46,7 +46,8 @@ enum ItemWithConfig
AMULET_OF_BOUNTY(ItemID.AMULET_OF_BOUNTY, ItemChargeConfig.KEY_AMULET_OF_BOUNTY, ItemChargeType.AMULET_OF_BOUNTY),
BRACELET_OF_SLAUGHTER(ItemID.BRACELET_OF_SLAUGHTER, ItemChargeConfig.KEY_BRACELET_OF_SLAUGHTER, ItemChargeType.BRACELET_OF_SLAUGHTER),
EXPEDITIOUS_BRACELET(ItemID.EXPEDITIOUS_BRACELET, ItemChargeConfig.KEY_EXPEDITIOUS_BRACELET, ItemChargeType.EXPEDITIOUS_BRACELET),
- CHRONICLE(ItemID.CHRONICLE, ItemChargeConfig.KEY_CHRONICLE, ItemChargeType.TELEPORT);
+ CHRONICLE(ItemID.CHRONICLE, ItemChargeConfig.KEY_CHRONICLE, ItemChargeType.TELEPORT),
+ BLOOD_ESSENCE(ItemID.BLOOD_ESSENCE_ACTIVE, ItemChargeConfig.KEY_BLOOD_ESSENCE, ItemChargeType.BLOOD_ESSENCE);
private final int itemId;
private final String configKey;
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 9661c03b61..044aeeca8a 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
@@ -293,6 +293,7 @@ enum ItemIdentification
ZAMORAK_BREW(Type.POTION, "ZammyBr", "Za", ItemID.ZAMORAK_BREW4, ItemID.ZAMORAK_BREW3, ItemID.ZAMORAK_BREW2, ItemID.ZAMORAK_BREW1),
SARADOMIN_BREW(Type.POTION, "SaraBr", "Sa", ItemID.SARADOMIN_BREW4, ItemID.SARADOMIN_BREW3, ItemID.SARADOMIN_BREW2, ItemID.SARADOMIN_BREW1),
+ ANCIENT_BREW(Type.POTION, "AncBr", "A.Br", ItemID.ANCIENT_BREW4, ItemID.ANCIENT_BREW3, ItemID.ANCIENT_BREW2, ItemID.ANCIENT_BREW1),
ANTIPOISON(Type.POTION, "AntiP", "AP", ItemID.ANTIPOISON4, ItemID.ANTIPOISON3, ItemID.ANTIPOISON2, ItemID.ANTIPOISON1),
SUPERANTIPOISON(Type.POTION, "S.AntiP", "S.AP", ItemID.SUPERANTIPOISON4, ItemID.SUPERANTIPOISON3, ItemID.SUPERANTIPOISON2, ItemID.SUPERANTIPOISON1),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java
index e083db40b0..f7a3e87722 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenOverride.java
@@ -44,6 +44,7 @@ public enum LoginScreenOverride
PRIFDDINAS("prifddinas.jpg"),
THEATRE_OF_BLOOD("tob.jpg"),
A_KINGDOM_DIVIDED("akd.jpg"),
+ NEX("nex.jpg"),
CUSTOM,
RANDOM;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java
index 98c2302fcd..82b89bea25 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java
@@ -787,6 +787,35 @@ public interface MenuEntrySwapperConfig extends Config
return false;
}
+ enum StairsMode
+ {
+ CLIMB,
+ CLIMB_UP,
+ CLIMB_DOWN,
+ }
+
+ @ConfigItem(
+ keyName = "swapStairsLeftClick",
+ name = "Stairs left-click",
+ description = "Swap this option when left-clicking stairs. Also works on ladders.",
+ section = objectSection
+ )
+ default StairsMode swapStairsLeftClick()
+ {
+ return StairsMode.CLIMB;
+ }
+
+ @ConfigItem(
+ keyName = "swapStairsShiftClick",
+ name = "Stairs shift-click",
+ description = "Swap this option when shift-clicking stairs. Also works on ladders.",
+ section = objectSection
+ )
+ default StairsMode swapStairsShiftClick()
+ {
+ return StairsMode.CLIMB;
+ }
+
@ConfigItem(
keyName = "swapTemporossLeave",
name = "Tempoross Leave",
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 9893f002dc..709a4162aa 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
@@ -416,6 +416,9 @@ public class MenuEntrySwapperPlugin extends Plugin
swap("eat", "guzzle", config::swapRockCake);
swap("travel", "dive", config::swapRowboatDive);
+
+ swap("climb", "climb-up", () -> (shiftModifier() ? config.swapStairsShiftClick() : config.swapStairsLeftClick()) == MenuEntrySwapperConfig.StairsMode.CLIMB_UP);
+ swap("climb", "climb-down", () -> (shiftModifier() ? config.swapStairsShiftClick() : config.swapStairsLeftClick()) == MenuEntrySwapperConfig.StairsMode.CLIMB_DOWN);
}
public Swap swap(String option, String swappedOption, Supplier enabled)
@@ -614,17 +617,19 @@ public class MenuEntrySwapperPlugin extends Plugin
final boolean isDepositBoxPlayerInventory = widgetGroupId == WidgetID.DEPOSIT_BOX_GROUP_ID;
final boolean isChambersOfXericStorageUnitPlayerInventory = widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_INVENTORY_GROUP_ID;
+ final boolean isGroupStoragePlayerInventory = widgetGroupId == WidgetID.GROUP_STORAGE_INVENTORY_GROUP_ID;
// Swap to shift-click deposit behavior
// Deposit- op 1 is the current withdraw amount 1/5/10/x for deposit box interface and chambers of xeric storage unit.
// Deposit- op 2 is the current withdraw amount 1/5/10/x for bank interface
if (shiftModifier() && config.bankDepositShiftClick() != ShiftDepositMode.OFF
&& menuEntryAdded.getType() == MenuAction.CC_OP.getId()
- && menuEntryAdded.getIdentifier() == (isDepositBoxPlayerInventory || isChambersOfXericStorageUnitPlayerInventory ? 1 : 2)
+ && menuEntryAdded.getIdentifier() == (isDepositBoxPlayerInventory || isGroupStoragePlayerInventory || isChambersOfXericStorageUnitPlayerInventory ? 1 : 2)
&& (menuEntryAdded.getOption().startsWith("Deposit-") || menuEntryAdded.getOption().startsWith("Store") || menuEntryAdded.getOption().startsWith("Donate")))
{
ShiftDepositMode shiftDepositMode = config.bankDepositShiftClick();
final int opId = isDepositBoxPlayerInventory ? shiftDepositMode.getIdentifierDepositBox()
: isChambersOfXericStorageUnitPlayerInventory ? shiftDepositMode.getIdentifierChambersStorageUnit()
+ : isGroupStoragePlayerInventory ? shiftDepositMode.getIdentifierGroupStorage()
: shiftDepositMode.getIdentifier();
final MenuAction action = opId >= 6 ? MenuAction.CC_OP_LOW_PRIORITY : MenuAction.CC_OP;
bankModeSwap(action, opId);
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java
index 6c7deb9149..1c8351f217 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java
@@ -31,17 +31,18 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public enum ShiftDepositMode
{
- DEPOSIT_1("Deposit-1", 3, 2, 1),
- DEPOSIT_5("Deposit-5", 4, 3, 2),
- DEPOSIT_10("Deposit-10", 5, 4, 3),
- DEPOSIT_X("Deposit-X", 6, 6, 5),
- DEPOSIT_ALL("Deposit-All", 8, 5, 4),
- EXTRA_OP("Eat/Wield/Etc.", 9, 9, 0),
- OFF("Off", 0, 0, 0);
+ DEPOSIT_1("Deposit-1", 3, 2, 1, 1),
+ DEPOSIT_5("Deposit-5", 4, 3, 3, 2),
+ DEPOSIT_10("Deposit-10", 5, 4, 4, 3),
+ DEPOSIT_X("Deposit-X", 6, 6, 5, 5),
+ DEPOSIT_ALL("Deposit-All", 8, 5, 7, 4),
+ EXTRA_OP("Eat/Wield/Etc.", 9, 9, 0, 0),
+ OFF("Off", 0, 0, 0, 0);
private final String name;
private final int identifier;
private final int identifierDepositBox;
+ private final int identifierGroupStorage;
private final int identifierChambersStorageUnit;
@Override
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 805bea57f0..ad98d978c2 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
@@ -94,6 +94,7 @@ public enum HerbloreAction implements ItemSkillAction
WEAPON_POISON_PLUS_PLUS(ItemID.WEAPON_POISON_5940, 82, 190),
EXTENDED_ANTIFIRE_3(ItemID.EXTENDED_ANTIFIRE3, 84, 82.5f),
EXTENDED_ANTIFIRE_4(ItemID.EXTENDED_ANTIFIRE4, 84, 110),
+ ANCIENT_BREW_4(ItemID.ANCIENT_BREW4, 85, 190),
DIVINE_BASTION_POTION_4(ItemID.DIVINE_BASTION_POTION4, 86, 2),
DIVINE_BATTLEMAGE_POTION_4(ItemID.DIVINE_BATTLEMAGE_POTION4, 86, 2),
ANTIVENOM_3(ItemID.ANTIVENOM3, 87, 90),
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java
index 85fef484b9..3e60e1a1a1 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java
@@ -144,7 +144,8 @@ enum MiningSiteLocation
LOVAKENGJ_SOUTH(new WorldPoint(1476, 3779, 0), new Rock(4, Ore.IRON), new Rock(6, Ore.COAL), new Rock(1, Ore.MITHRIL)),
LOVAKENGJ_SULPHUR_EAST(new WorldPoint(1445, 3870, 0), new Rock(3, Ore.VOLCANIC_SULPHUR)),
LOVAKENGJ_SULPHUR_WEST(new WorldPoint(1427, 3870, 0), new Rock(2, Ore.VOLCANIC_SULPHUR)),
- LOVAKENGJ_WEST(new WorldPoint(1432, 3845, 0), true, new Rock(45, Ore.COAL), new Rock(80, Ore.LOVAKITE)),
+ LOVAKENGJ_WEST_1(new WorldPoint(1430, 3849, 0), new Rock(33, Ore.COAL), new Rock(58, Ore.LOVAKITE)),
+ LOVAKENGJ_WEST_2(new WorldPoint(1447, 3840, 0), new Rock(12, Ore.COAL), new Rock(22, Ore.LOVAKITE)),
LUMBRIDGE_SWAMP_EAST(new WorldPoint(3226, 3146, 0), new Rock(5, Ore.COPPER), new Rock(5, Ore.TIN)),
LUMBRIDGE_SWAMP_WEST(new WorldPoint(3148, 3149, 0),
new Rock(7, Ore.COAL), new Rock(5, Ore.MITHRIL), new Rock(2, Ore.ADAMANTITE)),
diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java
index ae25265c3f..0f1964da7a 100644
--- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java
+++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java
@@ -168,7 +168,7 @@ public class ClientUI
this.clientThreadProvider = clientThreadProvider;
this.eventBus = eventBus;
this.safeMode = safeMode;
- this.title = RuneLiteProperties.getTitle();
+ this.title = RuneLiteProperties.getTitle() + (safeMode ? " (safe mode)" : "");
}
@Subscribe
diff --git a/runelite-client/src/main/resources/item_variations.json b/runelite-client/src/main/resources/item_variations.json
index 6a56701fb7..8bd791dfd0 100644
--- a/runelite-client/src/main/resources/item_variations.json
+++ b/runelite-client/src/main/resources/item_variations.json
@@ -3,6 +3,22 @@
1,
4051
],
+ "cannon base": [
+ 6,
+ 26520
+ ],
+ "cannon stand": [
+ 8,
+ 26522
+ ],
+ "cannon barrels": [
+ 10,
+ 26524
+ ],
+ "cannon furnace": [
+ 12,
+ 26526
+ ],
"excalibur": [
35,
8280
@@ -2483,7 +2499,9 @@
24971,
24973,
24994,
- 24996
+ 24996,
+ 26417,
+ 26419
],
"empty cup": [
1980,
@@ -3297,6 +3315,18 @@
12609,
12611
],
+ "holy book": [
+ 3840,
+ 26496
+ ],
+ "unholy book": [
+ 3842,
+ 26498
+ ],
+ "book of balance": [
+ 3844,
+ 26488
+ ],
"games necklace": [
3853,
3855,
@@ -3499,34 +3529,39 @@
4099,
4109,
20562,
- 23047
+ 23047,
+ 26531
],
"mystic robe top": [
4091,
4101,
4111,
20425,
- 23050
+ 23050,
+ 26533
],
"mystic robe bottom": [
4093,
4103,
4113,
20426,
- 23053
+ 23053,
+ 26535
],
"mystic gloves": [
4095,
4105,
4115,
- 23056
+ 23056,
+ 26537
],
"mystic boots": [
4097,
4107,
4117,
20579,
- 23059
+ 23059,
+ 26539
],
"crawling hand": [
4133,
@@ -3542,7 +3577,8 @@
4178,
12773,
12774,
- 20405
+ 20405,
+ 26482
],
"granite maul": [
4153,
@@ -6124,12 +6160,14 @@
"void knight top": [
8839,
20465,
- 24177
+ 24177,
+ 26463
],
"void knight robe": [
8840,
20469,
- 24179
+ 24179,
+ 26465
],
"void knight mace": [
8841,
@@ -6139,7 +6177,8 @@
"void knight gloves": [
8842,
20475,
- 24182
+ 24182,
+ 26467
],
"bronze defender": [
8844,
@@ -6359,7 +6398,8 @@
],
"rune crossbow": [
9185,
- 23601
+ 23601,
+ 26486
],
"jade bolts": [
9237,
@@ -7260,17 +7300,20 @@
"void mage helm": [
11663,
20477,
- 24183
+ 24183,
+ 26473
],
"void ranger helm": [
11664,
20479,
- 24184
+ 24184,
+ 26475
],
"void melee helm": [
11665,
20481,
- 24185
+ 24185,
+ 26477
],
"void seal": [
11666,
@@ -7620,6 +7663,10 @@
19720,
23654
],
+ "abyssal tentacle": [
+ 12006,
+ 26484
+ ],
"soft clay pack": [
12009,
12010,
@@ -7649,6 +7696,18 @@
12692,
25256
],
+ "book of war": [
+ 12608,
+ 26494
+ ],
+ "book of law": [
+ 12610,
+ 26492
+ ],
+ "book of darkness": [
+ 12612,
+ 26490
+ ],
"bandos page": [
12613,
12614,
@@ -7999,12 +8058,14 @@
"elite void top": [
13072,
20467,
- 24178
+ 24178,
+ 26469
],
"elite void robe": [
13073,
20471,
- 24180
+ 24180,
+ 26471
],
"crystal halberd": [
13080,
@@ -10240,5 +10301,37 @@
"blood essence": [
26390,
26392
+ ],
+ "shattered hood": [
+ 26427,
+ 26439,
+ 26451
+ ],
+ "shattered top": [
+ 26430,
+ 26442,
+ 26454
+ ],
+ "shattered trousers": [
+ 26433,
+ 26445,
+ 26457
+ ],
+ "shattered boots": [
+ 26436,
+ 26448,
+ 26460
+ ],
+ "unidentified fragment": [
+ 26544,
+ 26545,
+ 26546,
+ 26547,
+ 26548
+ ],
+ "shattered relic hunter armour set": [
+ 26554,
+ 26557,
+ 26560
]
}
\ No newline at end of file
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/loginscreen/nex.jpg b/runelite-client/src/main/resources/net/runelite/client/plugins/loginscreen/nex.jpg
new file mode 100644
index 0000000000..c2a3719440
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/loginscreen/nex.jpg differ
diff --git a/runelite-client/src/main/scripts/FakeXpDrop.hash b/runelite-client/src/main/scripts/FakeXpDrop.hash
index 9eba813f20..f39e7684ca 100644
--- a/runelite-client/src/main/scripts/FakeXpDrop.hash
+++ b/runelite-client/src/main/scripts/FakeXpDrop.hash
@@ -1 +1 @@
-C85469C2529D794C523505679F14AA20E988513E8FBAF249E41F4760382B4BBB
\ No newline at end of file
+49856301491D162091426F3F788EA13FDBE3E5BE758471537F5E7AB7A588066B
\ No newline at end of file
diff --git a/runelite-client/src/main/scripts/FakeXpDrop.rs2asm b/runelite-client/src/main/scripts/FakeXpDrop.rs2asm
index 0f5b817d85..c0040afc32 100644
--- a/runelite-client/src/main/scripts/FakeXpDrop.rs2asm
+++ b/runelite-client/src/main/scripts/FakeXpDrop.rs2asm
@@ -12,259 +12,224 @@
iconst 105
iconst 83
iconst 681
- get_varc_int 207
- coordx
+ get_varc_int 953
enum
iload 0
- if_icmpeq LABEL9
- jump LABEL16
-LABEL9:
- get_varc_int 207
- iconst 0
- iconst 0
+ if_icmpeq LABEL8
+ jump LABEL13
+LABEL8:
+ get_varc_int 960
iload 1
- movecoord
- set_varc_int 207
- jump LABEL227
-LABEL16:
+ add
+ set_varc_int 960
+ jump LABEL192
+LABEL13:
iconst 105
iconst 83
iconst 681
- get_varc_int 208
- coordx
+ get_varc_int 954
enum
iload 0
- if_icmpeq LABEL25
- jump LABEL32
-LABEL25:
- get_varc_int 208
- iconst 0
- iconst 0
+ if_icmpeq LABEL21
+ jump LABEL26
+LABEL21:
+ get_varc_int 961
iload 1
- movecoord
- set_varc_int 208
- jump LABEL227
-LABEL32:
+ add
+ set_varc_int 961
+ jump LABEL192
+LABEL26:
iconst 105
iconst 83
iconst 681
- get_varc_int 209
- coordx
+ get_varc_int 955
enum
iload 0
- if_icmpeq LABEL41
- jump LABEL48
-LABEL41:
- get_varc_int 209
- iconst 0
- iconst 0
+ if_icmpeq LABEL34
+ jump LABEL39
+LABEL34:
+ get_varc_int 962
iload 1
- movecoord
- set_varc_int 209
- jump LABEL227
-LABEL48:
+ add
+ set_varc_int 962
+ jump LABEL192
+LABEL39:
iconst 105
iconst 83
iconst 681
- get_varc_int 210
- coordx
+ get_varc_int 956
enum
iload 0
- if_icmpeq LABEL57
- jump LABEL64
-LABEL57:
- get_varc_int 210
- iconst 0
- iconst 0
+ if_icmpeq LABEL47
+ jump LABEL52
+LABEL47:
+ get_varc_int 963
iload 1
- movecoord
- set_varc_int 210
- jump LABEL227
-LABEL64:
+ add
+ set_varc_int 963
+ jump LABEL192
+LABEL52:
iconst 105
iconst 83
iconst 681
- get_varc_int 211
- coordx
+ get_varc_int 957
+ enum
+ iload 0
+ if_icmpeq LABEL60
+ jump LABEL65
+LABEL60:
+ get_varc_int 964
+ iload 1
+ add
+ set_varc_int 964
+ jump LABEL192
+LABEL65:
+ iconst 105
+ iconst 83
+ iconst 681
+ get_varc_int 958
enum
iload 0
if_icmpeq LABEL73
- jump LABEL80
+ jump LABEL78
LABEL73:
- get_varc_int 211
- iconst 0
- iconst 0
+ get_varc_int 965
iload 1
- movecoord
- set_varc_int 211
- jump LABEL227
-LABEL80:
+ add
+ set_varc_int 965
+ jump LABEL192
+LABEL78:
iconst 105
iconst 83
iconst 681
- get_varc_int 212
- coordx
+ get_varc_int 959
enum
iload 0
- if_icmpeq LABEL89
- jump LABEL96
-LABEL89:
- get_varc_int 212
- iconst 0
- iconst 0
+ if_icmpeq LABEL86
+ jump LABEL91
+LABEL86:
+ get_varc_int 966
iload 1
- movecoord
- set_varc_int 212
- jump LABEL227
-LABEL96:
- iconst 105
- iconst 83
- iconst 681
- get_varc_int 213
- coordx
- enum
- iload 0
- if_icmpeq LABEL105
- jump LABEL112
-LABEL105:
- get_varc_int 213
- iconst 0
- iconst 0
- iload 1
- movecoord
- set_varc_int 213
- jump LABEL227
-LABEL112:
+ add
+ set_varc_int 966
+ jump LABEL192
+LABEL91:
iload 0
iconst 3
- if_icmpeq LABEL116
- jump LABEL123
-LABEL116:
+ if_icmpeq LABEL95
+ jump LABEL102
+LABEL95:
iload 1
iconst 20000001
- if_icmpeq LABEL120
- jump LABEL123
-LABEL120:
- iconst 269500481
- set_varc_int 207
- jump LABEL227
-LABEL123:
- get_varc_int 207
+ if_icmpeq LABEL99
+ jump LABEL102
+LABEL99:
+ iconst -10
+ set_varc_int 960
+ jump LABEL192
+LABEL102:
+ get_varc_int 953
iconst -1
- if_icmpeq LABEL127
- jump LABEL138
-LABEL127:
- iconst 0
+ if_icmpeq LABEL106
+ jump LABEL115
+LABEL106:
iconst 83
iconst 105
iconst 81
iload 0
enum
- iconst 0
+ set_varc_int 953
iload 1
- movecoord
- set_varc_int 207
- jump LABEL227
-LABEL138:
- get_varc_int 208
+ set_varc_int 960
+ jump LABEL192
+LABEL115:
+ get_varc_int 954
iconst -1
- if_icmpeq LABEL142
- jump LABEL153
-LABEL142:
- iconst 0
+ if_icmpeq LABEL119
+ jump LABEL128
+LABEL119:
iconst 83
iconst 105
iconst 81
iload 0
enum
- iconst 0
+ set_varc_int 954
iload 1
- movecoord
- set_varc_int 208
- jump LABEL227
-LABEL153:
- get_varc_int 209
+ set_varc_int 961
+ jump LABEL192
+LABEL128:
+ get_varc_int 955
iconst -1
- if_icmpeq LABEL157
- jump LABEL168
-LABEL157:
- iconst 0
+ if_icmpeq LABEL132
+ jump LABEL141
+LABEL132:
iconst 83
iconst 105
iconst 81
iload 0
enum
- iconst 0
+ set_varc_int 955
iload 1
- movecoord
- set_varc_int 209
- jump LABEL227
-LABEL168:
- get_varc_int 210
+ set_varc_int 962
+ jump LABEL192
+LABEL141:
+ get_varc_int 956
iconst -1
- if_icmpeq LABEL172
- jump LABEL183
-LABEL172:
- iconst 0
+ if_icmpeq LABEL145
+ jump LABEL154
+LABEL145:
iconst 83
iconst 105
iconst 81
iload 0
enum
- iconst 0
+ set_varc_int 956
iload 1
- movecoord
- set_varc_int 210
- jump LABEL227
-LABEL183:
- get_varc_int 211
+ set_varc_int 963
+ jump LABEL192
+LABEL154:
+ get_varc_int 957
iconst -1
- if_icmpeq LABEL187
- jump LABEL198
-LABEL187:
- iconst 0
+ if_icmpeq LABEL158
+ jump LABEL167
+LABEL158:
iconst 83
iconst 105
iconst 81
iload 0
enum
- iconst 0
+ set_varc_int 957
iload 1
- movecoord
- set_varc_int 211
- jump LABEL227
-LABEL198:
- get_varc_int 212
+ set_varc_int 964
+ jump LABEL192
+LABEL167:
+ get_varc_int 958
iconst -1
- if_icmpeq LABEL202
- jump LABEL213
-LABEL202:
- iconst 0
+ if_icmpeq LABEL171
+ jump LABEL180
+LABEL171:
iconst 83
iconst 105
iconst 81
iload 0
enum
- iconst 0
+ set_varc_int 958
iload 1
- movecoord
- set_varc_int 212
- jump LABEL227
-LABEL213:
- get_varc_int 213
+ set_varc_int 965
+ jump LABEL192
+LABEL180:
+ get_varc_int 959
iconst -1
- if_icmpeq LABEL217
- jump LABEL227
-LABEL217:
- iconst 0
+ if_icmpeq LABEL184
+ jump LABEL192
+LABEL184:
iconst 83
iconst 105
iconst 81
iload 0
enum
- iconst 0
+ set_varc_int 959
iload 1
- movecoord
- set_varc_int 213
-LABEL227:
+ set_varc_int 966
+LABEL192:
return
diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/itemcharges/ItemChargePluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/itemcharges/ItemChargePluginTest.java
index f1e9c50edd..464ec09bad 100644
--- a/runelite-client/src/test/java/net/runelite/client/plugins/itemcharges/ItemChargePluginTest.java
+++ b/runelite-client/src/test/java/net/runelite/client/plugins/itemcharges/ItemChargePluginTest.java
@@ -93,6 +93,10 @@ public class ItemChargePluginTest
private static final String ACTIVATE_EXPEDITIOUS_BRACELET = "Your expeditious bracelet helps you progress your slayer task faster. It has 11 charges left.";
private static final String BREAK_EXPEDITIOUS_BRACELET = "Your expeditious bracelet helps you progress your slayer task faster. It then crumbles to dust.";
+ private static final String ACTIVATE_BLOOD_ESSENCE = "You activate the blood essence.";
+ private static final String EXTRACT_BLOOD_ESSENCE = "You manage to extract power from the Blood Essence and craft 67 extra runes.";
+ private static final String CHECK_BLOOD_ESSENCE = "Your blood essence has 56 charges remaining";
+
@Mock
@Bind
private Client client;
@@ -421,4 +425,29 @@ public class ItemChargePluginTest
itemChargePlugin.onChatMessage(chatMessage);
verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_EXPEDITIOUS_BRACELET, 30);
}
+
+ @Test
+ public void testBloodEssenceActivate()
+ {
+ ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", ACTIVATE_BLOOD_ESSENCE, "", 0);
+ itemChargePlugin.onChatMessage(chatMessage);
+ verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, 1000);
+ }
+
+ @Test
+ public void testBloodEssenceExtract()
+ {
+ ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", EXTRACT_BLOOD_ESSENCE, "", 0);
+ when(configManager.getConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, Integer.class)).thenReturn(1000);
+ itemChargePlugin.onChatMessage(chatMessage);
+ verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, 933);
+ }
+
+ @Test
+ public void testBloodEssenceCheck()
+ {
+ ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", CHECK_BLOOD_ESSENCE, "", 0);
+ itemChargePlugin.onChatMessage(chatMessage);
+ verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, 56);
+ }
}
\ No newline at end of file