tob board highlight,moveable tob health orbs and boss hp bar

This commit is contained in:
James Munson
2019-06-14 22:47:29 -07:00
parent eabc7d23b2
commit d75ea74abd
6 changed files with 132 additions and 3 deletions

View File

@@ -114,7 +114,7 @@ public class WidgetID
public static final int VARROCK_MUSEUM_QUIZ_GROUP_ID = 533;
public static final int KILL_LOGS_GROUP_ID = 549;
public static final int DIARY_QUEST_GROUP_ID = 119;
public static final int THEATRE_OF_BLOOD_GROUP_ID = 23;
public static final int THEATRE_OF_BLOOD_GROUP_ID = 28;
public static final int WORLD_SWITCHER_GROUP_ID = 69;
public static final int DIALOG_OPTION_GROUP_ID = 219;
public static final int DIALOG_PLAYER_GROUP_ID = 217;
@@ -122,6 +122,8 @@ public class WidgetID
public static final int MINIGAME_TAB_ID = 76;
public static final int SPELLBOOK_GROUP_ID = 218;
public static final int PVP_GROUP_ID = 90;
public static final int PERFORMERS_FOR_THE_THEATRE_GROUPS_GROUP_ID = 364;
public static final int PERFORMERS_FOR_THE_THEATRE_PLAYERS_GROUP_ID = 50;
public static final int FISHING_TRAWLER_GROUP_ID = 366;
public static final int ZEAH_MESS_HALL_GROUP_ID = 235;
public static final int KOUREND_FAVOUR_GROUP_ID = 246;
@@ -650,6 +652,12 @@ public class WidgetID
static final int POINTS_INFOBOX = 6;
}
static class TheatreOfBlood
{
static final int ORB_BOX = 10;
static final int BOSS_HEALTH_BAR = 35;
}
static class ExperienceDrop
{
static final int DROP_1 = 15;

View File

@@ -436,6 +436,9 @@ public enum WidgetInfo
RAIDS_POINTS_INFOBOX(WidgetID.RAIDS_GROUP_ID, WidgetID.Raids.POINTS_INFOBOX),
THEATRE_OF_BLOOD_HEALTH_ORBS(WidgetID.THEATRE_OF_BLOOD_GROUP_ID, WidgetID.TheatreOfBlood.ORB_BOX),
THEATRE_OF_BLOOD_BOSS_HEALTH(WidgetID.THEATRE_OF_BLOOD_GROUP_ID, WidgetID.TheatreOfBlood.BOSS_HEALTH_BAR),
BLAST_FURNACE_COFFER(WidgetID.BLAST_FURNACE_GROUP_ID, 2),
PYRAMID_PLUNDER_DATA(WidgetID.PYRAMID_PLUNDER_GROUP_ID, 2),

View File

@@ -430,7 +430,7 @@ public class LootTrackerPlugin extends Plugin
eventType = "Chambers of Xeric";
container = client.getItemContainer(InventoryID.CHAMBERS_OF_XERIC_CHEST);
break;
case (WidgetID.THEATRE_OF_BLOOD_GROUP_ID):
case (WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID):
int region = WorldPoint.fromLocalInstance(client, client.getLocalPlayer().getLocalLocation()).getRegionID();
if (region != THEATRE_OF_BLOOD_REGION)
{

View File

@@ -293,7 +293,7 @@ public class StonedLootTrackerPlugin extends Plugin
eventType = "Chambers of Xeric";
container = client.getItemContainer(InventoryID.CHAMBERS_OF_XERIC_CHEST);
break;
case (WidgetID.THEATRE_OF_BLOOD_GROUP_ID):
case (WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID):
int region = WorldPoint.fromLocalInstance(client, client.getLocalPlayer().getLocalLocation()).getRegionID();
if (region != THEATRE_OF_BLOOD_REGION)
{

View File

@@ -13,10 +13,16 @@ import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import net.runelite.api.Client;
import net.runelite.api.Ignore;
import java.util.LinkedList;
import java.util.List;
import net.runelite.api.events.*;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.theatre.rooms.BloatHandler;
@@ -28,6 +34,7 @@ import net.runelite.client.plugins.theatre.rooms.nylocas.NyloHandler;
import net.runelite.client.ui.overlay.OverlayManager;
import javax.inject.Inject;
import java.awt.*;
@PluginDescriptor(
name = "Theatre of Blood",
@@ -65,6 +72,8 @@ public class TheatrePlugin extends Plugin
@Inject
private Client client;
private Widget widget = null;
@Getter(AccessLevel.PUBLIC)
@Inject
private OverlayManager overlayManager;
@@ -173,6 +182,25 @@ public class TheatrePlugin extends Plugin
verzikHandler.onAnimationChanged(event);
}
@Subscribe
public void onWidgetLoaded(WidgetLoaded event)
{
if (event.getGroupId() != WidgetID.PERFORMERS_FOR_THE_THEATRE_GROUPS_GROUP_ID && event.getGroupId() != WidgetID.PERFORMERS_FOR_THE_THEATRE_PLAYERS_GROUP_ID)
{
return;
}
if (event.getGroupId() == WidgetID.PERFORMERS_FOR_THE_THEATRE_GROUPS_GROUP_ID)
{
widget = client.getWidget(WidgetID.PERFORMERS_FOR_THE_THEATRE_GROUPS_GROUP_ID, 0);
}
if (event.getGroupId() == WidgetID.PERFORMERS_FOR_THE_THEATRE_PLAYERS_GROUP_ID)
{
widget = client.getWidget(WidgetID.PERFORMERS_FOR_THE_THEATRE_PLAYERS_GROUP_ID, 0);
}
}
@Subscribe
public void onGameTick(GameTick event)
{
@@ -193,6 +221,95 @@ public class TheatrePlugin extends Plugin
if (verzikHandler != null)
verzikHandler.onGameTick();
if (widget == null)
{
return;
}
// recheck if the widget is still active
int p_id = WidgetInfo.TO_GROUP(widget.getId());
List<Widget> widgetList = new LinkedList<>();
if (p_id == WidgetID.PERFORMERS_FOR_THE_THEATRE_GROUPS_GROUP_ID)
{
Widget w = client.getWidget(p_id, 16);
if (w == null)
{
return;
}
Widget[] ws = w.getStaticChildren();
for (Widget widget : ws)
{
Widget[] widgets = widget.getDynamicChildren();
if (widgets.length > 3)
{
widgetList.add(widgets[3]);
}
}
}
else if (p_id == WidgetID.PERFORMERS_FOR_THE_THEATRE_PLAYERS_GROUP_ID)
{
Widget w1 = client.getWidget(p_id, 26);
if (w1 != null)
{
Widget[] dChildsAccepted = w1.getDynamicChildren();
if (dChildsAccepted.length > 2)
{
for (int i = 1; i < dChildsAccepted.length; i += 11)
{
if (!dChildsAccepted[i].getText().equals("-"))
{
widgetList.add(dChildsAccepted[i]);
}
}
}
}
Widget w2 = client.getWidget(p_id, 41);
if (w2 != null)
{
Widget[] dChildsApplied = w2.getDynamicChildren();
if (dChildsApplied.length > 2)
{
for (int i = 1; i < dChildsApplied.length; i+=11)
{
if (!dChildsApplied[i].getText().equals("-"))
{
widgetList.add(dChildsApplied[i]);
}
}
}
}
}
for (Widget w : widgetList)
{
String wtext = w.getText();
if (client.isFriended(wtext, false))
{
w.setTextColor(Color.green.getRGB());
continue;
}
for (int i = 0; i < client.getIgnoreCount(); i++)
{
String name = client.getIgnores()[i].getName();
if (name.replace('\u00A0',' ').equals(wtext))
{
w.setTextColor(Color.red.getRGB());
break;
}
}
}
widget = null;
}
@Subscribe

View File

@@ -57,6 +57,7 @@ public class WidgetOverlay extends Overlay
.put(WidgetInfo.MULTICOMBAT_FIXED, OverlayPosition.BOTTOM_RIGHT)
.put(WidgetInfo.MULTICOMBAT_RESIZEABLE, OverlayPosition.CANVAS_TOP_RIGHT)
.put(WidgetInfo.PYRAMID_PLUNDER_DATA, OverlayPosition.TOP_CENTER)
.put(WidgetInfo.THEATRE_OF_BLOOD_HEALTH_ORBS, OverlayPosition.TOP_LEFT)
.build();
public static Collection<WidgetOverlay> createOverlays(final Client client)