Merge pull request #4255 from MagicfTail/kc-updater

ChatCommandsPlugin: Update boss kc when looking at RoW
This commit is contained in:
Adam
2018-07-15 19:32:40 -04:00
committed by GitHub
3 changed files with 72 additions and 1 deletions

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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)
{