|
|
|
|
@@ -64,6 +64,7 @@ import net.runelite.client.plugins.PluginDescriptor;
|
|
|
|
|
import net.runelite.client.util.StackFormatter;
|
|
|
|
|
import static net.runelite.client.util.Text.sanitize;
|
|
|
|
|
import net.runelite.http.api.chat.ChatClient;
|
|
|
|
|
import net.runelite.http.api.chat.Duels;
|
|
|
|
|
import net.runelite.http.api.hiscore.HiscoreClient;
|
|
|
|
|
import net.runelite.http.api.hiscore.HiscoreEndpoint;
|
|
|
|
|
import net.runelite.http.api.hiscore.HiscoreResult;
|
|
|
|
|
@@ -89,6 +90,8 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
private static final Pattern BARROWS_PATTERN = Pattern.compile("Your Barrows chest count is: <col=ff0000>(\\d+)</col>");
|
|
|
|
|
private static final Pattern KILL_DURATION_PATTERN = Pattern.compile("Fight duration: <col=ff0000>[0-9:]+</col>. Personal best: ([0-9:]+)");
|
|
|
|
|
private static final Pattern NEW_PB_PATTERN = Pattern.compile("Fight duration: <col=ff0000>([0-9:]+)</col> \\(new personal best\\)");
|
|
|
|
|
private static final Pattern DUEL_ARENA_WINS_PATTERN = Pattern.compile("You (were defeated|won)! You have(?: now)? won (\\d+) duels?");
|
|
|
|
|
private static final Pattern DUEL_ARENA_LOSSES_PATTERN = Pattern.compile("You have(?: now)? lost (\\d+) duels?");
|
|
|
|
|
private static final String TOTAL_LEVEL_COMMAND_STRING = "!total";
|
|
|
|
|
private static final String PRICE_COMMAND_STRING = "!price";
|
|
|
|
|
private static final String LEVEL_COMMAND_STRING = "!lvl";
|
|
|
|
|
@@ -98,7 +101,7 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
private static final String QP_COMMAND_STRING = "!qp";
|
|
|
|
|
private static final String GC_COMMAND_STRING = "!gc";
|
|
|
|
|
private static final String PB_COMMAND = "!pb";
|
|
|
|
|
private static final String GC_COMMAND_STRING = "!gc";
|
|
|
|
|
private static final String DUEL_ARENA_COMMAND = "!duels";
|
|
|
|
|
|
|
|
|
|
private final HiscoreClient hiscoreClient = new HiscoreClient();
|
|
|
|
|
private final ChatClient chatClient = new ChatClient();
|
|
|
|
|
@@ -149,7 +152,7 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
chatCommandManager.registerCommandAsync(QP_COMMAND_STRING, this::questPointsLookup, this::questPointsSubmit);
|
|
|
|
|
chatCommandManager.registerCommandAsync(GC_COMMAND_STRING, this::gambleCountLookup, this::gambleCountSubmit);
|
|
|
|
|
chatCommandManager.registerCommandAsync(PB_COMMAND, this::personalBestLookup, this::personalBestSubmit);
|
|
|
|
|
chatCommandManager.registerCommandAsync(GC_COMMAND_STRING, this::gambleCountLookup, this::gambleCountSubmit);
|
|
|
|
|
chatCommandManager.registerCommandAsync(DUEL_ARENA_COMMAND, this::duelArenaLookup, this::duelArenaSubmit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@@ -168,6 +171,7 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
chatCommandManager.unregisterCommand(QP_COMMAND_STRING);
|
|
|
|
|
chatCommandManager.unregisterCommand(PB_COMMAND);
|
|
|
|
|
chatCommandManager.unregisterCommand(GC_COMMAND_STRING);
|
|
|
|
|
chatCommandManager.unregisterCommand(DUEL_ARENA_COMMAND);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Provides
|
|
|
|
|
@@ -205,7 +209,9 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
@Subscribe
|
|
|
|
|
public void onChatMessage(ChatMessage chatMessage)
|
|
|
|
|
{
|
|
|
|
|
if (chatMessage.getType() != ChatMessageType.GAMEMESSAGE && chatMessage.getType() != ChatMessageType.SPAM)
|
|
|
|
|
if (chatMessage.getType() != ChatMessageType.TRADE
|
|
|
|
|
&& chatMessage.getType() != ChatMessageType.GAMEMESSAGE
|
|
|
|
|
&& chatMessage.getType() != ChatMessageType.SPAM)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
@@ -241,6 +247,43 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
matcher = DUEL_ARENA_WINS_PATTERN.matcher(message);
|
|
|
|
|
if (matcher.find())
|
|
|
|
|
{
|
|
|
|
|
final int oldWins = getKc("Duel Arena Wins");
|
|
|
|
|
final int wins = Integer.parseInt(matcher.group(2));
|
|
|
|
|
final String result = matcher.group(1);
|
|
|
|
|
int winningStreak = getKc("Duel Arena Win Streak");
|
|
|
|
|
int losingStreak = getKc("Duel Arena Lose Streak");
|
|
|
|
|
|
|
|
|
|
if (result.equals("won") && wins > oldWins)
|
|
|
|
|
{
|
|
|
|
|
losingStreak = 0;
|
|
|
|
|
winningStreak += 1;
|
|
|
|
|
}
|
|
|
|
|
else if (result.equals("were defeated"))
|
|
|
|
|
{
|
|
|
|
|
losingStreak += 1;
|
|
|
|
|
winningStreak = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log.warn("unrecognized duel streak chat message: {}", message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setKc("Duel Arena Wins", wins);
|
|
|
|
|
setKc("Duel Arena Win Streak", winningStreak);
|
|
|
|
|
setKc("Duel Arena Lose Streak", losingStreak);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
matcher = DUEL_ARENA_LOSSES_PATTERN.matcher(message);
|
|
|
|
|
if (matcher.find())
|
|
|
|
|
{
|
|
|
|
|
int losses = Integer.parseInt(matcher.group(1));
|
|
|
|
|
|
|
|
|
|
setKc("Duel Arena Losses", losses);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
matcher = BARROWS_PATTERN.matcher(message);
|
|
|
|
|
if (matcher.find())
|
|
|
|
|
{
|
|
|
|
|
@@ -421,6 +464,96 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
client.refreshChat();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean duelArenaSubmit(ChatInput chatInput, String value)
|
|
|
|
|
{
|
|
|
|
|
final int wins = getKc("Duel Arena Wins");
|
|
|
|
|
final int losses = getKc("Duel Arena Losses");
|
|
|
|
|
final int winningStreak = getKc("Duel Arena Win Streak");
|
|
|
|
|
final int losingStreak = getKc("Duel Arena Lose Streak");
|
|
|
|
|
|
|
|
|
|
if (wins <= 0 && losses <= 0 && winningStreak <= 0 && losingStreak <= 0)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final String playerName = client.getLocalPlayer().getName();
|
|
|
|
|
|
|
|
|
|
executor.execute(() ->
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
chatClient.submitDuels(playerName, wins, losses, winningStreak, losingStreak);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.warn("unable to submit duels", ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
chatInput.resume();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void duelArenaLookup(ChatMessage chatMessage, String message)
|
|
|
|
|
{
|
|
|
|
|
if (!config.duels())
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ChatMessageType type = chatMessage.getType();
|
|
|
|
|
|
|
|
|
|
final String player;
|
|
|
|
|
if (type == ChatMessageType.PRIVATECHATOUT)
|
|
|
|
|
{
|
|
|
|
|
player = client.getLocalPlayer().getName();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
player = sanitize(chatMessage.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Duels duels;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
duels = chatClient.getDuels(player);
|
|
|
|
|
}
|
|
|
|
|
catch (IOException ex)
|
|
|
|
|
{
|
|
|
|
|
log.debug("unable to lookup duels", ex);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
final int wins = duels.getWins();
|
|
|
|
|
final int losses = duels.getLosses();
|
|
|
|
|
final int winningStreak = duels.getWinningStreak();
|
|
|
|
|
final int losingStreak = duels.getLosingStreak();
|
|
|
|
|
|
|
|
|
|
String response = new ChatMessageBuilder()
|
|
|
|
|
.append(ChatColorType.NORMAL)
|
|
|
|
|
.append("Duel Arena wins: ")
|
|
|
|
|
.append(ChatColorType.HIGHLIGHT)
|
|
|
|
|
.append(Integer.toString(wins))
|
|
|
|
|
.append(ChatColorType.NORMAL)
|
|
|
|
|
.append(" losses: ")
|
|
|
|
|
.append(ChatColorType.HIGHLIGHT)
|
|
|
|
|
.append(Integer.toString(losses))
|
|
|
|
|
.append(ChatColorType.NORMAL)
|
|
|
|
|
.append(" streak: ")
|
|
|
|
|
.append(ChatColorType.HIGHLIGHT)
|
|
|
|
|
.append(Integer.toString((winningStreak != 0 ? winningStreak : -losingStreak)))
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
log.debug("Setting response {}", response);
|
|
|
|
|
final MessageNode messageNode = chatMessage.getMessageNode();
|
|
|
|
|
messageNode.setRuneLiteFormatMessage(response);
|
|
|
|
|
chatMessageManager.update(messageNode);
|
|
|
|
|
client.refreshChat();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void questPointsLookup(ChatMessage chatMessage, String message)
|
|
|
|
|
{
|
|
|
|
|
if (!config.qp())
|
|
|
|
|
@@ -649,74 +782,6 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void gambleCountLookup(ChatMessage chatMessage, String message)
|
|
|
|
|
{
|
|
|
|
|
if (!config.gc())
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ChatMessageType type = chatMessage.getType();
|
|
|
|
|
|
|
|
|
|
final String player;
|
|
|
|
|
if (type == ChatMessageType.PRIVATECHATOUT)
|
|
|
|
|
{
|
|
|
|
|
player = client.getLocalPlayer().getName();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
player = sanitize(chatMessage.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int gc;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
gc = chatClient.getGc(player);
|
|
|
|
|
}
|
|
|
|
|
catch (IOException ex)
|
|
|
|
|
{
|
|
|
|
|
log.debug("unable to lookup gamble count", ex);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String response = new ChatMessageBuilder()
|
|
|
|
|
.append(ChatColorType.NORMAL)
|
|
|
|
|
.append("Barbarian Assault High-level gambles: ")
|
|
|
|
|
.append(ChatColorType.HIGHLIGHT)
|
|
|
|
|
.append(Integer.toString(gc))
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
log.debug("Setting response {}", response);
|
|
|
|
|
final MessageNode messageNode = chatMessage.getMessageNode();
|
|
|
|
|
messageNode.setRuneLiteFormatMessage(response);
|
|
|
|
|
chatMessageManager.update(messageNode);
|
|
|
|
|
client.refreshChat();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean gambleCountSubmit(ChatInput chatInput, String value)
|
|
|
|
|
{
|
|
|
|
|
final int gc = client.getVar(Varbits.BA_GC);
|
|
|
|
|
final String playerName = client.getLocalPlayer().getName();
|
|
|
|
|
|
|
|
|
|
executor.execute(() ->
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
chatClient.submitGc(playerName, gc);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.warn("unable to submit gamble count", ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
chatInput.resume();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Looks up the item price and changes the original message to the
|
|
|
|
|
* response.
|
|
|
|
|
@@ -1301,4 +1366,4 @@ public class ChatCommandsPlugin extends Plugin
|
|
|
|
|
return WordUtils.capitalize(boss);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|