From 3f8c10d036190a9de1e64309d09067195133d396 Mon Sep 17 00:00:00 2001 From: Magic fTail Date: Fri, 13 Jul 2018 00:43:04 +0200 Subject: [PATCH] chat commands: update boss kc from boss log --- .../net/runelite/api/widgets/WidgetID.java | 9 +++ .../net/runelite/api/widgets/WidgetInfo.java | 7 ++- .../chatcommands/ChatCommandsPlugin.java | 57 +++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) 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 92b118ca7e..64d6037e14 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 @@ -104,6 +104,7 @@ public class WidgetID public static final int CORP_DAMAGE = 13; public static final int DESTROY_ITEM_GROUP_ID = 584; public static final int VARROCK_MUSEUM_QUIZ_GROUP_ID = 533; + public static final int KILL_LOGS_GROUP_ID = 549; static class WorldMap { @@ -551,4 +552,12 @@ public class WidgetID static final int VARROCK_MUSEUM_SECOND_ANSWER = 30; static final int VARROCK_MUSEUM_THIRD_ANSWER = 31; } + + static class KillLog + { + static final int TITLE = 3; + static final int MONSTER = 13; + static final int KILLS = 14; + static final int STREAK = 15; + } } \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index 51b7490208..7378e54774 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -354,7 +354,12 @@ public enum WidgetInfo VARROCK_MUSEUM_QUESTION(WidgetID.VARROCK_MUSEUM_QUIZ_GROUP_ID, WidgetID.VarrockMuseum.VARROCK_MUSEUM_QUESTION), VARROCK_MUSEUM_FIRST_ANSWER(WidgetID.VARROCK_MUSEUM_QUIZ_GROUP_ID, WidgetID.VarrockMuseum.VARROCK_MUSEUM_FIRST_ANSWER), VARROCK_MUSEUM_SECOND_ANSWER(WidgetID.VARROCK_MUSEUM_QUIZ_GROUP_ID, WidgetID.VarrockMuseum.VARROCK_MUSEUM_SECOND_ANSWER), - VARROCK_MUSEUM_THIRD_ANSWER(WidgetID.VARROCK_MUSEUM_QUIZ_GROUP_ID, WidgetID.VarrockMuseum.VARROCK_MUSEUM_THIRD_ANSWER); + VARROCK_MUSEUM_THIRD_ANSWER(WidgetID.VARROCK_MUSEUM_QUIZ_GROUP_ID, WidgetID.VarrockMuseum.VARROCK_MUSEUM_THIRD_ANSWER), + + KILL_LOG_TITLE(WidgetID.KILL_LOGS_GROUP_ID, WidgetID.KillLog.TITLE), + KILL_LOG_MONSTER(WidgetID.KILL_LOGS_GROUP_ID, WidgetID.KillLog.MONSTER), + KILL_LOG_KILLS(WidgetID.KILL_LOGS_GROUP_ID, WidgetID.KillLog.KILLS), + KILL_LOG_STREAK(WidgetID.KILL_LOGS_GROUP_ID, WidgetID.KillLog.STREAK); private final int groupId; private final int childId; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java index b2acbf3285..c24b8f0c01 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java @@ -42,8 +42,13 @@ import net.runelite.api.GameState; import net.runelite.api.ItemComposition; import net.runelite.api.MessageNode; import net.runelite.api.events.ChatMessage; +import net.runelite.api.events.GameTick; import net.runelite.api.events.SetMessage; +import net.runelite.api.events.WidgetLoaded; import net.runelite.api.vars.AccountType; +import net.runelite.api.widgets.Widget; +import static net.runelite.api.widgets.WidgetID.KILL_LOGS_GROUP_ID; +import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.chat.ChatColorType; import net.runelite.client.chat.ChatMessageBuilder; import net.runelite.client.chat.ChatMessageManager; @@ -84,6 +89,8 @@ public class ChatCommandsPlugin extends Plugin implements ChatboxInputListener private final HiscoreClient hiscoreClient = new HiscoreClient(); private final KillCountClient killCountClient = new KillCountClient(); + private boolean logKills; + @Inject private Client client; @@ -259,6 +266,56 @@ public class ChatCommandsPlugin extends Plugin implements ChatboxInputListener } } + @Subscribe + public void onGameTick(GameTick event) + { + if (!logKills) + { + return; + } + + logKills = false; + + Widget title = client.getWidget(WidgetInfo.KILL_LOG_TITLE); + Widget bossMonster = client.getWidget(WidgetInfo.KILL_LOG_MONSTER); + Widget bossKills = client.getWidget(WidgetInfo.KILL_LOG_KILLS); + + if (title == null || bossMonster == null || bossKills == null + || !"Boss Kill Log".equals(title.getText())) + { + return; + } + + Widget[] bossChildren = bossMonster.getChildren(); + Widget[] killsChildren = bossKills.getChildren(); + + for (int i = 0; i < bossChildren.length; ++i) + { + Widget boss = bossChildren[i]; + Widget kill = killsChildren[i]; + + String bossName = boss.getText(); + int kc = Integer.parseInt(kill.getText().replace(",", "")); + if (kc != getKc(bossName)) + { + setKc(bossName, kc); + } + } + } + + @Subscribe + public void onWidgetLoaded(WidgetLoaded widget) + { + // don't load kc if in an instance, if the player is in another players poh + // and reading their boss log + if (widget.getGroupId() != KILL_LOGS_GROUP_ID || client.isInInstancedRegion()) + { + return; + } + + logKills = true; + } + @Override public boolean onChatboxInput(ChatboxInput chatboxInput) {