From 4d35174d97b83b53c57a38018ccbef88588ddb68 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 5 Aug 2018 13:28:17 -0400 Subject: [PATCH] chat commands: add !cmb command Co-authored-by: Magic fTail --- .../chatcommands/ChatCommandsPlugin.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) 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 473892fbf5..ef7df50c62 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 @@ -38,6 +38,7 @@ import lombok.Value; import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; +import net.runelite.api.Experience; import net.runelite.api.GameState; import net.runelite.api.ItemComposition; import net.runelite.api.MessageNode; @@ -91,6 +92,7 @@ public class ChatCommandsPlugin extends Plugin implements ChatboxInputListener private static final String LEVEL_COMMAND_STRING = "!lvl"; private static final String CLUES_COMMAND_STRING = "!clues"; private static final String KILLCOUNT_COMMAND_STRING = "!kc"; + private static final String CMB_COMMAND_STRING = "!cmb"; private final HiscoreClient hiscoreClient = new HiscoreClient(); private final KillCountClient killCountClient = new KillCountClient(); @@ -194,6 +196,11 @@ public class ChatCommandsPlugin extends Plugin implements ChatboxInputListener log.debug("Running total level lookup"); executor.submit(() -> playerSkillLookup(setMessage, "total")); } + else if (config.lvl() && message.toLowerCase().equals(CMB_COMMAND_STRING)) + { + log.debug("Running combat level lookup"); + executor.submit(() -> combatLevelLookup(setMessage.getType(), setMessage)); + } else if (config.price() && message.toLowerCase().startsWith(PRICE_COMMAND_STRING + " ")) { String search = message.substring(PRICE_COMMAND_STRING.length() + 1); @@ -559,6 +566,78 @@ public class ChatCommandsPlugin extends Plugin implements ChatboxInputListener } } + private void combatLevelLookup(ChatMessageType type, SetMessage setMessage) + { + String player; + if (type == ChatMessageType.PRIVATE_MESSAGE_SENT) + { + player = client.getLocalPlayer().getName(); + } + else + { + player = sanitize(setMessage.getName()); + } + + try + { + HiscoreResult playerStats = hiscoreClient.lookup(player); + + int attack = playerStats.getAttack().getLevel(); + int strength = playerStats.getStrength().getLevel(); + int defence = playerStats.getDefence().getLevel(); + int hitpoints = playerStats.getHitpoints().getLevel(); + int ranged = playerStats.getRanged().getLevel(); + int prayer = playerStats.getPrayer().getLevel(); + int magic = playerStats.getMagic().getLevel(); + int combatLevel = Experience.getCombatLevel(attack, strength, defence, hitpoints, magic, ranged, prayer); + + String response = new ChatMessageBuilder() + .append(ChatColorType.NORMAL) + .append("Combat Level: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(combatLevel)) + .append(ChatColorType.NORMAL) + .append(" A: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(attack)) + .append(ChatColorType.NORMAL) + .append(" S: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(strength)) + .append(ChatColorType.NORMAL) + .append(" D: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(defence)) + .append(ChatColorType.NORMAL) + .append(" H: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(hitpoints)) + .append(ChatColorType.NORMAL) + .append(" R: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(ranged)) + .append(ChatColorType.NORMAL) + .append(" P: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(prayer)) + .append(ChatColorType.NORMAL) + .append(" M: ") + .append(ChatColorType.HIGHLIGHT) + .append(String.valueOf(magic)) + .build(); + + log.debug("Setting response {}", response); + final MessageNode messageNode = setMessage.getMessageNode(); + messageNode.setRuneLiteFormatMessage(response); + chatMessageManager.update(messageNode); + client.refreshChat(); + } + catch (IOException ex) + { + log.warn("Error fetching hiscore data", ex); + } + } + /** * Looks up the quantities of clues completed * for the requested clue-level (no arg if requesting total)