diff --git a/runelite-api/src/main/java/net/runelite/api/Actor.java b/runelite-api/src/main/java/net/runelite/api/Actor.java
index 10d51113f9..e3becbf73d 100644
--- a/runelite-api/src/main/java/net/runelite/api/Actor.java
+++ b/runelite-api/src/main/java/net/runelite/api/Actor.java
@@ -25,6 +25,12 @@
package net.runelite.api;
+import net.runelite.rs.api.CombatInfo1;
+import net.runelite.rs.api.CombatInfo2;
+import net.runelite.rs.api.CombatInfoList;
+import net.runelite.rs.api.CombatInfoListHolder;
+import net.runelite.rs.api.Node;
+
public abstract class Actor extends Renderable
{
private Client client;
@@ -38,6 +44,8 @@ public abstract class Actor extends Renderable
this.actor = actor;
}
+ public abstract int getCombatLevel();
+
public abstract String getName();
public Actor getInteracting()
@@ -58,4 +66,45 @@ public abstract class Actor extends Renderable
i = i - 32767 - 1;
return client.getPlayers()[i];
}
+
+ public int getHealthRatio()
+ {
+ CombatInfoList combatInfoList = actor.getCombatInfoList();
+ if (combatInfoList != null)
+ {
+ Node node = combatInfoList.getNode();
+ Node next = node.getNext();
+ if (next instanceof CombatInfoListHolder)
+ {
+ CombatInfoListHolder combatInfoListWrapper = (CombatInfoListHolder) next;
+ CombatInfoList combatInfoList1 = combatInfoListWrapper.getCombatInfo1();
+
+ Node node2 = combatInfoList1.getNode();
+ Node next2 = node2.getNext();
+ if (next2 instanceof CombatInfo1)
+ {
+ CombatInfo1 combatInfo = (CombatInfo1) next2;
+ return combatInfo.getHealthRatio();
+ }
+ }
+ }
+ return -1;
+ }
+
+ public int getHealth()
+ {
+ CombatInfoList combatInfoList = actor.getCombatInfoList();
+ if (combatInfoList != null)
+ {
+ Node node = combatInfoList.getNode();
+ Node next = node.getNext();
+ if (next instanceof CombatInfoListHolder)
+ {
+ CombatInfoListHolder combatInfoListWrapper = (CombatInfoListHolder) next;
+ CombatInfo2 cf = combatInfoListWrapper.getCombatInfo2();
+ return cf.getHealthScale();
+ }
+ }
+ return -1;
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/NPC.java b/runelite-api/src/main/java/net/runelite/api/NPC.java
index 8b2e0f7338..f6f2ecd281 100644
--- a/runelite-api/src/main/java/net/runelite/api/NPC.java
+++ b/runelite-api/src/main/java/net/runelite/api/NPC.java
@@ -42,4 +42,11 @@ public class NPC extends Actor
{
return npc.getComposition().getName();
}
+
+ @Override
+ public int getCombatLevel()
+ {
+ return npc.getComposition().getCombatLevel();
+ }
+
}
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 9e6deb9b4c..1ded49b923 100644
--- a/runelite-api/src/main/java/net/runelite/api/Player.java
+++ b/runelite-api/src/main/java/net/runelite/api/Player.java
@@ -43,4 +43,11 @@ public class Player extends Actor
{
return player.getName();
}
+
+ @Override
+ public int getCombatLevel()
+ {
+ return player.getCombatLevel();
+ }
}
+
diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml
index aede0c9eef..897fa562be 100644
--- a/runelite-client/pom.xml
+++ b/runelite-client/pom.xml
@@ -62,6 +62,11 @@
guava
21.0
+
+ com.google.code.gson
+ gson
+ 2.4
+
net.runelite
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfo.java b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfo.java
index 77fb3ace54..a36f840b60 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfo.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfo.java
@@ -25,6 +25,12 @@
package net.runelite.client.plugins.opponentinfo;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Type;
+import java.util.Map;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.ui.overlay.Overlay;
@@ -37,4 +43,13 @@ public class OpponentInfo extends Plugin
{
return overlay;
}
+
+ public static Map loadNpcHealth()
+ {
+ Gson gson = new Gson();
+ Type type = new TypeToken