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 1024b2b7f4..4c82b13fab 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -101,6 +101,13 @@ public interface Client extends GameEngine */ int getRealSkillLevel(Skill skill); + /** + * Calculates the total level from real skill levels. + * + * @return the total level + */ + int getTotalLevel(); + /** * Adds a new chat message to the chatbox. * diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 5ffd2acac9..68645e51d0 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -300,6 +300,26 @@ public abstract class RSClientMixin implements RSClient return realLevels[skill.ordinal()]; } + @Inject + @Override + public int getTotalLevel() + { + int totalLevel = 0; + + int[] realLevels = client.getRealSkillLevels(); + int lastSkillIdx = Skill.CONSTRUCTION.ordinal(); + + for (int i = 0; i < realLevels.length; i++) + { + if (i <= lastSkillIdx) + { + totalLevel += realLevels[i]; + } + } + + return totalLevel; + } + @Inject @Override public void addChatMessage(ChatMessageType type, String name, String message, String sender)