From 654f40f7f6fc74e4cf425453d19dfc7ef6f428cf Mon Sep 17 00:00:00 2001 From: Harry <37844423+HSJ-OSRS@users.noreply.github.com> Date: Mon, 30 Sep 2019 13:19:51 +0100 Subject: [PATCH 1/9] slayer: fix task tracking & bracelet tracking (#1691) * fix task tracking * fix slayer bracelet tracking --- .../plugins/itemcharges/ItemChargePlugin.java | 56 ++++++++++--------- .../client/plugins/slayer/SlayerPlugin.java | 35 +++--------- 2 files changed, 37 insertions(+), 54 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java index 96aaf49328..601728dd0e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java @@ -76,16 +76,18 @@ public class ItemChargePlugin extends Plugin { private static final Pattern DODGY_CHECK_PATTERN = Pattern.compile( "Your dodgy necklace has (\\d+) charges? left\\."); - private static final Pattern SLAUGHTER_CHECK_PATTERN = Pattern.compile( + private static final String CHAT_BRACELET_SLAUGHTER = "Your bracelet of slaughter prevents your slayer"; + private static final Pattern CHAT_BRACELET_SLAUGHTER_REGEX = Pattern.compile( + "Your bracelet of slaughter prevents your slayer count decreasing. It has (\\d{1,2}) charge[s]? left."); + private static final String CHAT_BRACELET_EXPEDITIOUS = "Your expeditious bracelet helps you progress your"; + private static final Pattern CHAT_BRACELET_EXPEDITIOUS_REGEX = Pattern.compile( + "Your expeditious bracelet helps you progress your slayer (?:task )?faster. It has (\\d{1,2}) charge[s]? left."); + private static final Pattern CHAT_BRACELET_SLAUGHTER_CHARGE_REGEX = Pattern.compile( "Your bracelet of slaughter has (\\d{1,2}) charge[s]? left."); - private static final Pattern EXPEDITIOUS_CHECK_PATTERN = Pattern.compile( + private static final Pattern CHAT_BRACELET_EXPEDITIOUS_CHARGE_REGEX = Pattern.compile( "Your expeditious bracelet has (\\d{1,2}) charge[s]? left."); private static final Pattern DODGY_PROTECT_PATTERN = Pattern.compile( "Your dodgy necklace protects you\\..*It has (\\d+) charges? left\\."); - private static final Pattern SLAUGHTER_ACTIVATE_PATTERN = Pattern.compile( - "Your bracelet of slaughter prevents your slayer count decreasing. It has (\\d{1,2}) charge[s]? left."); - private static final Pattern EXPEDITIOUS_ACTIVATE_PATTERN = Pattern.compile( - "Your expeditious bracelet helps you progress your slayer (?:task )?faster. It has (\\d{1,2}) charge[s]? left."); private static final Pattern DODGY_BREAK_PATTERN = Pattern.compile( "Your dodgy necklace protects you\\..*It then crumbles to dust\\."); private static final String RING_OF_RECOIL_BREAK_MESSAGE = "Your Ring of Recoil has shattered."; @@ -331,11 +333,7 @@ public class ItemChargePlugin extends Plugin { String message = event.getMessage(); Matcher dodgyCheckMatcher = DODGY_CHECK_PATTERN.matcher(message); - Matcher slaughterCheckMatcher = SLAUGHTER_CHECK_PATTERN.matcher(message); - Matcher expeditiousCheckMatcher = EXPEDITIOUS_CHECK_PATTERN.matcher(message); Matcher dodgyProtectMatcher = DODGY_PROTECT_PATTERN.matcher(message); - Matcher slaughterActivateMatcher = SLAUGHTER_ACTIVATE_PATTERN.matcher(message); - Matcher expeditiousActivateMatcher = EXPEDITIOUS_ACTIVATE_PATTERN.matcher(message); Matcher dodgyBreakMatcher = DODGY_BREAK_PATTERN.matcher(message); Matcher bindingNecklaceCheckMatcher = BINDING_CHECK_PATTERN.matcher(event.getMessage()); Matcher bindingNecklaceUsedMatcher = BINDING_USED_PATTERN.matcher(event.getMessage()); @@ -347,6 +345,10 @@ public class ItemChargePlugin extends Plugin Matcher chronicleLastChargeMatcher = CHRONICLE_LAST_CHARGE_PATTERN.matcher(message); Matcher chronicleOutOfChargesMatcher = CHRONICLE_OUT_OF_CHARGES_PATTERN.matcher(message); Matcher ringOfForgingCheckMatcher = RING_OF_FORGING_CHECK_PATTERN.matcher(message); + Matcher slaughterMatcher = CHAT_BRACELET_SLAUGHTER_REGEX.matcher(Text.removeTags(message)); + Matcher expeditiousMatcher = CHAT_BRACELET_EXPEDITIOUS_REGEX.matcher(Text.removeTags(message)); + Matcher slaughterChargeMatcher = CHAT_BRACELET_SLAUGHTER_CHARGE_REGEX.matcher(Text.removeTags(message)); + Matcher expeditiousChargeMatcher = CHAT_BRACELET_EXPEDITIOUS_CHARGE_REGEX.matcher(Text.removeTags(message)); if (event.getType() == ChatMessageType.GAMEMESSAGE || event.getType() == ChatMessageType.SPAM) { @@ -354,30 +356,30 @@ public class ItemChargePlugin extends Plugin { notifier.notify("Your Ring of Recoil has shattered"); } + else if (Text.removeTags(message).startsWith(CHAT_BRACELET_SLAUGHTER)) + { + updateBraceletOfSlaughterCharges(slaughterMatcher.find() ? Integer.parseInt(slaughterMatcher.group(1)) : MAX_SLAUGHTER_CHARGES); + } + else if (Text.removeTags(message).startsWith(CHAT_BRACELET_EXPEDITIOUS)) + { + updateExpeditiousCharges(expeditiousMatcher.find() ? Integer.parseInt(expeditiousMatcher.group(1)) : MAX_EXPEDITIOUS_CHARGES); + } + else if (slaughterChargeMatcher.find()) + { + updateBraceletOfSlaughterCharges(Integer.parseInt(slaughterChargeMatcher.group(1))); + } + else if (expeditiousChargeMatcher.find()) + { + updateExpeditiousCharges(Integer.parseInt(expeditiousChargeMatcher.group(1))); + } else if (dodgyCheckMatcher.find()) { updateDodgyNecklaceCharges(Integer.parseInt(dodgyCheckMatcher.group(1))); } - else if (slaughterCheckMatcher.find()) - { - updateBraceletOfSlaughterCharges(Integer.parseInt(slaughterCheckMatcher.group(1))); - } - else if (expeditiousCheckMatcher.find()) - { - updateExpeditiousCharges(Integer.parseInt(expeditiousCheckMatcher.group(1))); - } else if (dodgyProtectMatcher.find()) { updateDodgyNecklaceCharges(Integer.parseInt(dodgyProtectMatcher.group(1))); } - else if (slaughterActivateMatcher.find()) - { - updateBraceletOfSlaughterCharges(Integer.parseInt(slaughterActivateMatcher.group(1))); - } - else if (expeditiousActivateMatcher.find()) - { - updateExpeditiousCharges(Integer.parseInt(expeditiousActivateMatcher.group(1))); - } else if (dodgyBreakMatcher.find()) { if (this.dodgyNotification) @@ -955,4 +957,4 @@ public class ItemChargePlugin extends Plugin this.chronicle = config.chronicle(); this.showSackCharges = config.showSackCharges(); } -} \ No newline at end of file +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java index 157891f502..b886982b4a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java @@ -393,8 +393,7 @@ public class SlayerPlugin extends Plugin currentTask.setPaused(true); break; case LOGGED_IN: - if (loginTick && this.amount != -1 - && !this.taskName.isEmpty()) + if (loginTick && this.amount != -1 && !this.taskName.isEmpty() && currentTask.getTaskName() == null) { setTask(this.taskName, this.amount, this.initialAmount, true, this.taskLocation, this.lastCertainAmount, false); } @@ -753,6 +752,7 @@ public class SlayerPlugin extends Plugin } final Task task = Task.getTask(taskName); + int delta = slayerExp - cachedXp; // null tasks are technically valid, it only means they arent explicitly defined in the Task enum // allow them through so that if there is a task capture failure the counter will still work @@ -762,7 +762,7 @@ public class SlayerPlugin extends Plugin // to the expected exp gain for the task. if (taskKillExp == 0 || taskKillExp == slayerExp - cachedXp) { - killedOne(); + killedOne(delta); } else { @@ -780,9 +780,7 @@ public class SlayerPlugin extends Plugin int killCount = estimateKillCount(potentialNPCs, gains); for (int i = 0; i < killCount; i++) { - killedOne(); - int delta = slayerExp - cachedXp; - currentTask.setElapsedXp(currentTask.getElapsedXp() + delta); + killedOne(delta); } } @@ -840,7 +838,7 @@ public class SlayerPlugin extends Plugin } @VisibleForTesting - private void killedOne() + private void killedOne(int delta) { if (currentTask.getAmount() == 0) { @@ -849,6 +847,7 @@ public class SlayerPlugin extends Plugin currentTask.setAmount(currentTask.getAmount() - 1); currentTask.setElapsedKills(currentTask.getElapsedKills() + 1); + currentTask.setElapsedXp(currentTask.getElapsedXp() + delta); if (doubleTroubleExtraKill()) { currentTask.setAmount(currentTask.getAmount() - 1); @@ -1208,31 +1207,13 @@ public class SlayerPlugin extends Plugin client.refreshChat(); } - void pointsLookup(ChatMessage chatMessage, String message) + private void pointsLookup(ChatMessage chatMessage, String message) { if (!this.pointsCommand) { return; } - ChatMessageType type = chatMessage.getType(); - - final String player; - if (type.equals(ChatMessageType.PRIVATECHATOUT)) - { - player = client.getLocalPlayer().getName(); - } - else - { - player = Text.removeTags(chatMessage.getName()) - .replace('\u00A0', ' '); - } - - if (Integer.toString(getPoints()) == null) - { - return; - } - String response = new ChatMessageBuilder() .append(ChatColorType.NORMAL) .append("Slayer Points: ") @@ -1313,7 +1294,7 @@ public class SlayerPlugin extends Plugin return str.substring(0, 1).toUpperCase() + str.substring(1); } - void setPoints(int points) + private void setPoints(int points) { this.points = points; this.cachedPoints = points; From 6213eb84f5cd8060232d1cca4d14b2652d2f7852 Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Mon, 30 Sep 2019 14:20:11 +0200 Subject: [PATCH 2/9] gradle: gamepackUpdate (#1690) --- deobfuscator/build.gradle | 67 +++++++ .../src/main/java/net/runelite/deob/Deob.java | 4 +- .../deob/clientver/ClientVersionMain.java | 21 +++ .../runelite/deob/updater/UpdateMappings.java | 2 +- .../java/net/runelite/gamepack/Checker.java | 166 ++++++++++++++++++ .../net/runelite/gamepack/Downloader.java | 61 +++++++ .../net/runelite/gamepack/URLDownloader.java | 35 ++++ 7 files changed, 353 insertions(+), 3 deletions(-) create mode 100644 deobfuscator/src/main/java/net/runelite/gamepack/Checker.java create mode 100644 deobfuscator/src/main/java/net/runelite/gamepack/Downloader.java create mode 100644 deobfuscator/src/main/java/net/runelite/gamepack/URLDownloader.java diff --git a/deobfuscator/build.gradle b/deobfuscator/build.gradle index 177d98c81a..0d61c904d6 100644 --- a/deobfuscator/build.gradle +++ b/deobfuscator/build.gradle @@ -1,4 +1,8 @@ import org.apache.tools.ant.filters.ReplaceTokens +import org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler +import java.nio.file.Files +import java.nio.file.Paths +import java.util.zip.ZipFile plugins { id "com.github.hauner.jarTest" version "1.0.1" @@ -6,6 +10,30 @@ plugins { description = 'Deobfuscator' +def deobfuscatedJar = "${rootPath}/runescape-client/build/libs/rs-client-${project.version}.jar" + +def unzipFile(String file, String dest) +{ + def zipFile = new ZipFile(file) + + zipFile.entries().each { it -> + def path = Paths.get(dest + File.separator + it.name) + if (it.directory) + { + Files.createDirectories(path) + } + else + { + def parentDir = path.getParent() + if (!Files.exists(parentDir)) + { + Files.createDirectories(parentDir) + } + Files.copy(zipFile.getInputStream(it), path) + } + } +} + configurations { deobjars } @@ -48,3 +76,42 @@ processTestResources { ]) } } + +task gamepackUpdate { + dependsOn ":deobfuscator:build" + dependsOn ":rs-client:build" + + doLast { + def path = sourceSets.main.runtimeClasspath + def loader = new URLClassLoader(path.collect { f -> f.toURI().toURL() } as URL[]) + def downloader = loader.loadClass('net.runelite.gamepack.Downloader') + def clientVersion = loader.loadClass('net.runelite.deob.clientver.ClientVersionMain') + def deob = loader.loadClass('net.runelite.deob.Deob') + def mappings = loader.loadClass('net.runelite.deob.updater.UpdateMappings') + + String gamepack = downloader.gamepack() + int version = clientVersion.version(gamepack) + + String gamepackVersion = gamepack.replace("gamepack.jar", "gamepack-" + version + ".jar") + String gamepackDeob = gamepack.replace("gamepack.jar", "gamepack-" + version + "-deob.jar") + String gamepackMappings = gamepack.replace("gamepack.jar", "gamepack-" + version + "-updated-mappings.jar") + String gamepackMappingsDecomp = gamepackMappings.replace(".jar", "-decomp") + String gamepackMappingsFern = gamepackMappingsDecomp + File.separator + gamepackMappings.split("/gamepack/")[1] + + if (version == -1 || version == rsversion) + { + return + } + + deob.main(gamepackVersion, gamepackDeob) + mappings.main(deobfuscatedJar, gamepackDeob, gamepackMappings) + + new File(gamepackMappingsDecomp).mkdirs() + ConsoleDecompiler.main(gamepackMappings, gamepackMappingsDecomp) + + unzipFile(gamepackMappingsFern, gamepackMappingsDecomp) + new File(gamepackMappingsFern).delete() + + loader.close() + } +} diff --git a/deobfuscator/src/main/java/net/runelite/deob/Deob.java b/deobfuscator/src/main/java/net/runelite/deob/Deob.java index bea8f623d3..06b9b176dc 100644 --- a/deobfuscator/src/main/java/net/runelite/deob/Deob.java +++ b/deobfuscator/src/main/java/net/runelite/deob/Deob.java @@ -30,8 +30,6 @@ import java.io.IOException; import net.runelite.asm.ClassGroup; import net.runelite.asm.execution.Execution; import net.runelite.deob.deobfuscators.CastNull; -import net.runelite.deob.deobfuscators.StaticShouldBeInstance; -import net.runelite.deob.deobfuscators.constparam.ConstantParameter; import net.runelite.deob.deobfuscators.EnumDeobfuscator; import net.runelite.deob.deobfuscators.FieldInliner; import net.runelite.deob.deobfuscators.IllegalStateExceptions; @@ -39,6 +37,7 @@ import net.runelite.deob.deobfuscators.Lvt; import net.runelite.deob.deobfuscators.Order; import net.runelite.deob.deobfuscators.RenameUnique; import net.runelite.deob.deobfuscators.RuntimeExceptions; +import net.runelite.deob.deobfuscators.StaticShouldBeInstance; import net.runelite.deob.deobfuscators.UnreachedCode; import net.runelite.deob.deobfuscators.UnusedClass; import net.runelite.deob.deobfuscators.UnusedFields; @@ -49,6 +48,7 @@ import net.runelite.deob.deobfuscators.arithmetic.MultiplicationDeobfuscator; import net.runelite.deob.deobfuscators.arithmetic.MultiplyOneDeobfuscator; import net.runelite.deob.deobfuscators.arithmetic.MultiplyZeroDeobfuscator; import net.runelite.deob.deobfuscators.cfg.ControlFlowDeobfuscator; +import net.runelite.deob.deobfuscators.constparam.ConstantParameter; import net.runelite.deob.deobfuscators.exprargorder.ExprArgOrder; import net.runelite.deob.deobfuscators.menuaction.MenuActionDeobfuscator; import net.runelite.deob.deobfuscators.transformers.ClientErrorTransformer; diff --git a/deobfuscator/src/main/java/net/runelite/deob/clientver/ClientVersionMain.java b/deobfuscator/src/main/java/net/runelite/deob/clientver/ClientVersionMain.java index 5b16f13bc7..9b22c68308 100644 --- a/deobfuscator/src/main/java/net/runelite/deob/clientver/ClientVersionMain.java +++ b/deobfuscator/src/main/java/net/runelite/deob/clientver/ClientVersionMain.java @@ -25,6 +25,7 @@ package net.runelite.deob.clientver; +import com.google.common.io.Files; import java.io.File; import java.io.IOException; @@ -36,4 +37,24 @@ public class ClientVersionMain ClientVersion cv = new ClientVersion(jar); System.out.println(cv.getVersion()); } + + public static int version(String loc) + { + File jar = new File(loc); + ClientVersion cv = new ClientVersion(jar); + try + { + int version = cv.getVersion(); + + Files.move(jar, new File(loc.replace("gamepack.jar", "gamepack-" + version + ".jar"))); + + return version; + } + catch (IOException e) + { + e.printStackTrace(); + } + + return -1; + } } diff --git a/deobfuscator/src/main/java/net/runelite/deob/updater/UpdateMappings.java b/deobfuscator/src/main/java/net/runelite/deob/updater/UpdateMappings.java index 0514ae7afa..456eef2c8f 100644 --- a/deobfuscator/src/main/java/net/runelite/deob/updater/UpdateMappings.java +++ b/deobfuscator/src/main/java/net/runelite/deob/updater/UpdateMappings.java @@ -96,7 +96,7 @@ public class UpdateMappings JarUtil.loadJar(new File(args[0])), JarUtil.loadJar(new File(args[1])) ); - u.update(); + u.update(); u.save(new File(args[2])); } } diff --git a/deobfuscator/src/main/java/net/runelite/gamepack/Checker.java b/deobfuscator/src/main/java/net/runelite/gamepack/Checker.java new file mode 100644 index 0000000000..cf36651cef --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/gamepack/Checker.java @@ -0,0 +1,166 @@ +package net.runelite.gamepack; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; + +public class Checker +{ + private static final String GAME_URL = "http://oldschool1.runescape.com/"; + private static final Split[] splits = { + new Split("document.write('archive=", 1), + new Split(" ');", 0) + }; + + static String getGamePack() + { + URL url; + try + { + url = new URL(GAME_URL); + } + catch (MalformedURLException e) + { + e.printStackTrace(); + return null; + } + + String content; + try + { + content = getContent(url); + } + catch (IOException e) + { + e.printStackTrace(); + return null; + } + + for (Split split : splits) + { + String[] str = splitAtFirst(content, split.splitAt); + content = str[split.index]; + } + + return content; + } + + private static String[] splitAtFirst(String subject, String splitAt) + { + if (subject == null || subject.length() == 0) + { + return new String[]{"", ""}; + } + + if (splitAt == null || splitAt.length() == 0) + { + return new String[]{subject, ""}; + } + + char[] subjectArray = subject.toCharArray(); + char[] split = splitAt.toCharArray(); + + StringBuilder builder = null; + for (int i = 0; i < subjectArray.length; i++) + { + char c = subjectArray[i]; + + if (builder == null && c == split[0]) + { + builder = new StringBuilder(); + } + + if (builder != null) + { + builder.append(c); + + if (startsWith(splitAt, builder.toString())) + { + if (builder.length() == splitAt.length()) + { + return new String[]{subject.substring(0, i - builder.length() + 1), subject.substring(i + 1)}; + } + } + else + { + builder = null; + } + } + } + + return new String[]{subject, ""}; + } + + private static boolean startsWith(String subject, String start) + { + if (subject == null || subject.length() == 0 || start == null || start.length() == 0 || start.length() > subject.length()) + { + return false; + } + + char[] c1 = subject.toCharArray(); + char[] c2 = start.toCharArray(); + for (int i = 0; i < c2.length; i++) + { + if (c1[i] != c2[i]) + { + return false; + } + } + + return true; + } + + private static String getContent(URL url) throws IOException + { + BufferedReader rd = null; + + try + { + URLConnection conn = url.openConnection(); + + if (conn instanceof HttpURLConnection) + { + ((HttpURLConnection) conn).setInstanceFollowRedirects(false); + } + + HttpURLConnection.setFollowRedirects(false); + + rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); + StringBuilder sb = new StringBuilder(); + + String line; + while ((line = rd.readLine()) != null) + { + sb.append(line); + sb.append('\n'); + } + + return sb.toString(); + + } + finally + { + if (rd != null) + { + rd.close(); + } + } + } + + public static class Split + { + public int index; + String splitAt; + + Split(String splitAt, int index) + { + this.splitAt = splitAt; + this.index = index; + } + } +} \ No newline at end of file diff --git a/deobfuscator/src/main/java/net/runelite/gamepack/Downloader.java b/deobfuscator/src/main/java/net/runelite/gamepack/Downloader.java new file mode 100644 index 0000000000..350454ac8b --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/gamepack/Downloader.java @@ -0,0 +1,61 @@ +package net.runelite.gamepack; + + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class Downloader +{ + private static final String REPLACE = "%archive%"; + private static final String GAMEPACK_URL = "http://oldschool1.runescape.com/" + REPLACE; + + private static String getGamepackUrl() + { + String archive = Checker.getGamePack(); + return archive == null ? "" : GAMEPACK_URL.replace(REPLACE, archive); + } + + public static String gamepack() + { + Path path = Paths.get(System.getProperty("user.home"), "gamepack"); + final File folder = new File(String.valueOf(path)); + + if (!folder.exists()) + { + folder.mkdir(); + } + + downloadLatest(folder); + + return path + File.separator + "gamepack.jar"; + } + + private static void downloadLatest(File folder) + { + File output = new File(folder, "gamepack.jar"); + + try + { + URL url = new URL(getGamepackUrl()); + + final URLDownloader downloader = new URLDownloader(url, output); + downloader.download(); + + try + { + Thread.sleep(100); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + catch (IOException e) + { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/deobfuscator/src/main/java/net/runelite/gamepack/URLDownloader.java b/deobfuscator/src/main/java/net/runelite/gamepack/URLDownloader.java new file mode 100644 index 0000000000..07d74fcf70 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/gamepack/URLDownloader.java @@ -0,0 +1,35 @@ +package net.runelite.gamepack; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.FileChannel; +import java.nio.channels.ReadableByteChannel; + +class URLDownloader +{ + private URL url; + private File output; + + URLDownloader(URL url, File output) + { + this.url = url; + this.output = output; + } + + void download() throws IOException + { + this.downloadFromURL(); + } + + private void downloadFromURL() throws IOException + { + ReadableByteChannel rbc = Channels.newChannel(url.openStream()); + FileOutputStream fos = new FileOutputStream(output); + + FileChannel channel = fos.getChannel(); + channel.transferFrom(rbc, 0, Long.MAX_VALUE); + } +} \ No newline at end of file From 9f869c6ec98b504edd05a68360fb3b18bc06368a Mon Sep 17 00:00:00 2001 From: ST0NEWALL <46624825+pklite@users.noreply.github.com> Date: Mon, 30 Sep 2019 08:20:28 -0400 Subject: [PATCH 3/9] Fix player attack options and player indicators (#1685) * Fix player attack options and player indicators * player attack options * buying checkstyle bypass method --- .../asm/attributes/code/instructions/VReturn.java | 1 + .../main/java/net/runelite/injector/Inject.java | 4 ++-- .../runelite/injector/raw/HidePlayerAttacks.java | 15 ++++++--------- .../playerindicators/PlayerIndicatorsOverlay.java | 11 ++++++----- .../WildernessLocationsMapOverlay.java | 2 +- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/VReturn.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/VReturn.java index 132337a4f9..9b57fa240a 100644 --- a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/VReturn.java +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/VReturn.java @@ -49,6 +49,7 @@ public class VReturn extends Instruction implements ReturnInstruction public InstructionContext execute(Frame frame) { InstructionContext ins = new InstructionContext(this, frame); + frame.stop(); diff --git a/injector-plugin/src/main/java/net/runelite/injector/Inject.java b/injector-plugin/src/main/java/net/runelite/injector/Inject.java index 6dd0a7f35d..9d9b372f07 100644 --- a/injector-plugin/src/main/java/net/runelite/injector/Inject.java +++ b/injector-plugin/src/main/java/net/runelite/injector/Inject.java @@ -56,9 +56,9 @@ import net.runelite.mapping.Import; import net.runelite.rs.api.RSClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import net.runelite.injector.raw.HidePlayerAttacks; // import net.runelite.injector.raw.DrawMenu; -// import net.runelite.injector.raw.HidePlayerAttacks; public class Inject { @@ -319,7 +319,7 @@ public class Inject new RenderDraw(this).inject(); // new DrawMenu(this).inject(); new Occluder(this).inject(); - // new HidePlayerAttacks(this).inject(); + new HidePlayerAttacks(this).inject(); } private java.lang.Class injectInterface(ClassFile cf, ClassFile other) diff --git a/injector-plugin/src/main/java/net/runelite/injector/raw/HidePlayerAttacks.java b/injector-plugin/src/main/java/net/runelite/injector/raw/HidePlayerAttacks.java index e4160e7519..8d15fd69d2 100644 --- a/injector-plugin/src/main/java/net/runelite/injector/raw/HidePlayerAttacks.java +++ b/injector-plugin/src/main/java/net/runelite/injector/raw/HidePlayerAttacks.java @@ -160,6 +160,7 @@ public class HidePlayerAttacks // add option n such Instructions ins = addPlayerOptions.getCode().getInstructions(); + log.info(String.valueOf(ins.getInstructions().size())); ListIterator iterator = ins.getInstructions().listIterator(); while (iterator.hasNext()) { @@ -169,22 +170,18 @@ public class HidePlayerAttacks continue; } - i = iterator.next(); - while (!(i instanceof BiPush) || (byte) ((BiPush) i).getConstant() != 8) - { - i = iterator.next(); - } - i = iterator.next(); if (!(i instanceof IAnd)) { - throw new InjectionException("Yikes I didn't expect this"); + continue; + /*log.info(i.getClass().getName() + i.getClass().getSuperclass() + i.getType().getName() + + i.getType().getInstructionClass() + i.getInstructions() + i.toString()); + throw new InjectionException("Yikes I didn't expect this");**/ } - i = iterator.next(); if (!(i instanceof IfICmpNe)) { - throw new InjectionException("Yikes I didn't expect this"); + continue; } Label target = ((IfICmpNe) i).getJumps().get(0); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java index 4e96aa08b8..a3ceee1087 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsOverlay.java @@ -31,7 +31,6 @@ import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Arrays; import java.util.List; -import java.util.Objects; import javax.inject.Inject; import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; @@ -124,10 +123,12 @@ public class PlayerIndicatorsOverlay extends Overlay { if (clanManager.getRank(actor.getName()) != null) { - OverlayUtil.renderActorTextAndImage(graphics, actor, builtString, color, - ImageUtil.resizeImage(Objects.requireNonNull(clanManager - .getClanImage(clanManager.getRank(actor.getName()))), y, y), 0, ACTOR_HORIZONTAL_TEXT_MARGIN); - return; + final BufferedImage clanRankImage = clanManager.getClanImage(clanManager.getRank(actor.getName())); + if (clanRankImage != null) + { + OverlayUtil.renderActorTextAndImage(graphics, actor, builtString, color, + ImageUtil.resizeImage(clanRankImage, y, y), 0, ACTOR_HORIZONTAL_TEXT_MARGIN); + } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/wildernesslocations/WildernessLocationsMapOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/wildernesslocations/WildernessLocationsMapOverlay.java index cbf56934e0..d264cf4451 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/wildernesslocations/WildernessLocationsMapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/wildernesslocations/WildernessLocationsMapOverlay.java @@ -37,7 +37,7 @@ public class WildernessLocationsMapOverlay extends Overlay { setPosition(OverlayPosition.DYNAMIC); setPriority(OverlayPriority.HIGH); - setLayer(OverlayLayer.ALWAYS_ON_TOP); + setLayer(OverlayLayer.ABOVE_MAP); this.client = client; this.plugin = plugin; } From e6ed2190f7061189ec3456ef2f4ac36d39a3a63a Mon Sep 17 00:00:00 2001 From: Ganom Date: Tue, 1 Oct 2019 00:08:17 +0000 Subject: [PATCH 4/9] project: Update gradle dependencies --- build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index f02c82d723..54bebd6724 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,7 @@ ext { apacheCommonsCompress = '1.19' apacheCommonsCsv = '1.7' apacheCommonsText = '1.8' - asm = '7.1' + asm = '7.2' commonsCli = '1.4' discord = '1.1' fernflower = '07082019' @@ -43,7 +43,7 @@ ext { h2 = '1.4.199' hamcrest = '2.1' httpcore = '4.4.12' - httpmime = '4.5.9' + httpmime = '4.5.10' javassist = '3.25.0-GA' javax = '1.3.2' javaxInject = '1' @@ -59,7 +59,7 @@ ext { jupiter = '5.5.2' logback = '1.2.3' lombok = '1.18.10' - mapstruct = '1.3.0.Final' + mapstruct = '1.3.1.Final' mariadbJdbc = '2.4.4' mavenPluginAnnotations = '3.6.0' mavenPluginApi = '3.6.2' @@ -67,7 +67,7 @@ ext { mockito = '3.0.0' mongodbDriverSync = '3.11.0' mysqlConnectorJava = '8.0.17' - netty = '4.1.39.Final' + netty = '4.1.42.Final' okhttp3 = '4.2.0' orangeExtensions = '1.0' petitparser = '2.2.0' @@ -77,7 +77,7 @@ ext { scribejava = '6.8.1' sisu = '0.3.3' slf4j = '1.7.28' - springJdbc = '5.1.9.RELEASE' + springJdbc = '5.2.0.RELEASE' springboot = '2.1.8.RELEASE' sql2o = '1.6.0' substance = '8.0.02' From a532e49d020c05caa69afbd96ba7d57ad7992aa8 Mon Sep 17 00:00:00 2001 From: Ganom Date: Tue, 1 Oct 2019 00:21:42 +0000 Subject: [PATCH 5/9] Client: Update item stats --- .../src/main/resources/npc_stats.json | 319 +++++++++++++----- 1 file changed, 232 insertions(+), 87 deletions(-) diff --git a/runelite-client/src/main/resources/npc_stats.json b/runelite-client/src/main/resources/npc_stats.json index 9a39353bba..5958fc857f 100644 --- a/runelite-client/src/main/resources/npc_stats.json +++ b/runelite-client/src/main/resources/npc_stats.json @@ -5801,16 +5801,7 @@ "combatLevel": 66, "slayerLevel": 1, "attackSpeed": 15, - "attackLevel": 90, - "strengthLevel": 90, - "defenceLevel": 90, - "rangeLevel": 1, - "magicLevel": 70, - "magic": 70, - "stabDef": 40, - "slashDef": 90, - "crushDef": 90, - "magicDef": 34 + "magic": 70 }, "800": { "name": "Locust rider", @@ -6958,18 +6949,6 @@ "rangeLevel": 1, "magicLevel": 1 }, - "1038": { - "name": "Monkey", - "hitpoints": 6, - "combatLevel": 3, - "slayerLevel": 1, - "attackSpeed": 4, - "attackLevel": 2, - "strengthLevel": 3, - "defenceLevel": 2, - "rangeLevel": 1, - "magicLevel": 1 - }, "1039": { "name": "Albino bat", "hitpoints": 33, @@ -8168,7 +8147,9 @@ "strengthLevel": 35, "defenceLevel": 35, "rangeLevel": 30, - "magicLevel": 10 + "magicLevel": 10, + "poisonImmune": true, + "venomImmune": true }, "1369": { "name": "Air elemental", @@ -11839,24 +11820,6 @@ "crushDef": 175, "rangeDef": 250 }, - "2263": { - "name": "Bardur", - "hitpoints": 99, - "combatLevel": 94, - "attackSpeed": 6, - "attackLevel": 99, - "strengthLevel": 40, - "defenceLevel": 99, - "rangeLevel": 1, - "magicLevel": 1, - "stabDef": 150, - "slashDef": 150, - "crushDef": 150, - "rangeDef": 150, - "magicDef": 150, - "bonusAttack": 100, - "bonusStrength": 100 - }, "2264": { "name": "Dagannoth fledgeling", "hitpoints": 100, @@ -13681,7 +13644,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2791": { "name": "Cow", @@ -13693,7 +13658,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2792": { "name": "Cow calf", @@ -13717,7 +13684,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2794": { "name": "Cow calf", @@ -13741,7 +13710,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2801": { "name": "Cow calf", @@ -16031,7 +16002,7 @@ "hitpoints": 20, "combatLevel": 18, "slayerLevel": 1, - "attackSpeed": 6, + "attackSpeed": 4, "attackLevel": 12, "strengthLevel": 16, "defenceLevel": 19, @@ -18716,26 +18687,6 @@ "rangeLevel": 1, "magicLevel": 1 }, - "3897": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, - "3898": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, - "3899": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, - "3900": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, "3901": { "name": "Fox", "hitpoints": 30, @@ -18877,18 +18828,6 @@ "magicLevel": 1, "bonusStrength": 20 }, - "3942": { - "name": "Freygerd", - "hitpoints": 50, - "combatLevel": 48, - "attackSpeed": 4, - "attackLevel": 40, - "strengthLevel": 40, - "defenceLevel": 40, - "rangeLevel": 1, - "magicLevel": 1, - "bonusStrength": 20 - }, "3943": { "name": "Lensa", "hitpoints": 50, @@ -22127,7 +22066,7 @@ "hitpoints": 15, "combatLevel": 13, "slayerLevel": 1, - "attackSpeed": 6, + "attackSpeed": 4, "attackLevel": 10, "strengthLevel": 10, "defenceLevel": 12, @@ -25428,7 +25367,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "5848": { "name": "Tanglefoot", @@ -27385,10 +27326,15 @@ }, "6340": { "name": "Cow (hard)", - "hitpoints": 8, + "hitpoints": 160, "combatLevel": 170, "slayerLevel": 1, - "attackSpeed": 4 + "attackSpeed": 4, + "attackLevel": 200, + "strengthLevel": 200, + "defenceLevel": 1, + "rangeLevel": 1, + "magicLevel": 1 }, "6342": { "name": "Barrelchest", @@ -28249,7 +28195,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "6402": { "name": "Mosquito swarm", @@ -29533,7 +29481,7 @@ "hitpoints": 130, "combatLevel": 80, "slayerLevel": 1, - "attackSpeed": 6, + "attackSpeed": 4, "attackLevel": 55, "strengthLevel": 60, "defenceLevel": 50, @@ -35559,6 +35507,7 @@ "name": "Galvek", "hitpoints": 1200, "combatLevel": 608, + "attackSpeed": 6, "attackLevel": 632, "strengthLevel": 268, "defenceLevel": 188, @@ -35575,12 +35524,14 @@ "bonusRangeStrength": 6, "bonusMagicDamage": 42, "poisonImmune": true, - "venomImmune": true + "venomImmune": true, + "dragon": true }, "8095": { "name": "Galvek", "hitpoints": 1200, "combatLevel": 608, + "attackSpeed": 6, "attackLevel": 632, "strengthLevel": 268, "defenceLevel": 188, @@ -35597,7 +35548,8 @@ "bonusRangeStrength": 6, "bonusMagicDamage": 42, "poisonImmune": true, - "venomImmune": true + "venomImmune": true, + "dragon": true }, "8096": { "name": "Galvek", @@ -35753,6 +35705,7 @@ "name": "Galvek", "hitpoints": 1200, "combatLevel": 608, + "attackSpeed": 6, "attackLevel": 632, "strengthLevel": 268, "defenceLevel": 188, @@ -35769,7 +35722,8 @@ "bonusRangeStrength": 6, "bonusMagicDamage": 42, "poisonImmune": true, - "venomImmune": true + "venomImmune": true, + "dragon": true }, "8178": { "name": "Galvek", @@ -38227,5 +38181,196 @@ "bonusAttack": 14, "bonusStrength": 28, "bonusRangeStrength": 28 + }, + "9258": { + "name": "Basilisk Sentinel", + "hitpoints": 460, + "combatLevel": 351, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 274, + "strengthLevel": 274, + "defenceLevel": 274, + "rangeLevel": 1, + "magicLevel": 274, + "stabDef": 40, + "slashDef": 40, + "magicDef": 40 + }, + "9282": { + "name": "Basilisk Youngling", + "hitpoints": 60, + "combatLevel": 57, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 25, + "strengthLevel": 40, + "defenceLevel": 70, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 20, + "slashDef": 20, + "magicDef": 20 + }, + "9287": { + "name": "Monstrous Basilisk", + "hitpoints": 170, + "combatLevel": 135, + "attackSpeed": 4, + "attackLevel": 88, + "strengthLevel": 98, + "defenceLevel": 130, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 35, + "slashDef": 35, + "magicDef": 35, + "poisonImmune": true, + "venomImmune": true + }, + "9288": { + "name": "Monstrous Basilisk", + "hitpoints": 170, + "combatLevel": 135, + "attackSpeed": 4, + "attackLevel": 88, + "strengthLevel": 98, + "defenceLevel": 130, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 35, + "slashDef": 35, + "magicDef": 35, + "poisonImmune": true, + "venomImmune": true + }, + "9289": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9290": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9291": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9292": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9293": { + "name": "Basilisk Knight", + "hitpoints": 200, + "combatLevel": 182, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 150, + "strengthLevel": 150, + "defenceLevel": 150, + "rangeLevel": 1, + "magicLevel": 150, + "stabDef": 25, + "slashDef": 25, + "magicDef": 25 + }, + "9295": { + "name": "Typhor", + "hitpoints": 280, + "combatLevel": 194, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 150, + "strengthLevel": 150, + "defenceLevel": 150, + "rangeLevel": 1, + "magicLevel": 150, + "stabDef": 25, + "slashDef": 25, + "magicDef": 25, + "poisonImmune": true, + "venomImmune": true + }, + "9296": { + "name": "Typhor", + "hitpoints": 280, + "combatLevel": 194, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 150, + "strengthLevel": 150, + "defenceLevel": 150, + "rangeLevel": 1, + "magicLevel": 150, + "stabDef": 25, + "slashDef": 25, + "magicDef": 25, + "poisonImmune": true, + "venomImmune": true } } \ No newline at end of file From 73b0ace71ff4cd9c8ea40dbce01abaf0609dcc8e Mon Sep 17 00:00:00 2001 From: Ganom Date: Tue, 1 Oct 2019 00:21:42 +0000 Subject: [PATCH 6/9] Client: Update NPC stats --- .../src/main/resources/npc_stats.json | 319 +++++++++++++----- 1 file changed, 232 insertions(+), 87 deletions(-) diff --git a/runelite-client/src/main/resources/npc_stats.json b/runelite-client/src/main/resources/npc_stats.json index 9a39353bba..5958fc857f 100644 --- a/runelite-client/src/main/resources/npc_stats.json +++ b/runelite-client/src/main/resources/npc_stats.json @@ -5801,16 +5801,7 @@ "combatLevel": 66, "slayerLevel": 1, "attackSpeed": 15, - "attackLevel": 90, - "strengthLevel": 90, - "defenceLevel": 90, - "rangeLevel": 1, - "magicLevel": 70, - "magic": 70, - "stabDef": 40, - "slashDef": 90, - "crushDef": 90, - "magicDef": 34 + "magic": 70 }, "800": { "name": "Locust rider", @@ -6958,18 +6949,6 @@ "rangeLevel": 1, "magicLevel": 1 }, - "1038": { - "name": "Monkey", - "hitpoints": 6, - "combatLevel": 3, - "slayerLevel": 1, - "attackSpeed": 4, - "attackLevel": 2, - "strengthLevel": 3, - "defenceLevel": 2, - "rangeLevel": 1, - "magicLevel": 1 - }, "1039": { "name": "Albino bat", "hitpoints": 33, @@ -8168,7 +8147,9 @@ "strengthLevel": 35, "defenceLevel": 35, "rangeLevel": 30, - "magicLevel": 10 + "magicLevel": 10, + "poisonImmune": true, + "venomImmune": true }, "1369": { "name": "Air elemental", @@ -11839,24 +11820,6 @@ "crushDef": 175, "rangeDef": 250 }, - "2263": { - "name": "Bardur", - "hitpoints": 99, - "combatLevel": 94, - "attackSpeed": 6, - "attackLevel": 99, - "strengthLevel": 40, - "defenceLevel": 99, - "rangeLevel": 1, - "magicLevel": 1, - "stabDef": 150, - "slashDef": 150, - "crushDef": 150, - "rangeDef": 150, - "magicDef": 150, - "bonusAttack": 100, - "bonusStrength": 100 - }, "2264": { "name": "Dagannoth fledgeling", "hitpoints": 100, @@ -13681,7 +13644,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2791": { "name": "Cow", @@ -13693,7 +13658,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2792": { "name": "Cow calf", @@ -13717,7 +13684,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2794": { "name": "Cow calf", @@ -13741,7 +13710,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "2801": { "name": "Cow calf", @@ -16031,7 +16002,7 @@ "hitpoints": 20, "combatLevel": 18, "slayerLevel": 1, - "attackSpeed": 6, + "attackSpeed": 4, "attackLevel": 12, "strengthLevel": 16, "defenceLevel": 19, @@ -18716,26 +18687,6 @@ "rangeLevel": 1, "magicLevel": 1 }, - "3897": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, - "3898": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, - "3899": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, - "3900": { - "name": "Koschei the deathless", - "hitpoints": 79, - "attackSpeed": 4 - }, "3901": { "name": "Fox", "hitpoints": 30, @@ -18877,18 +18828,6 @@ "magicLevel": 1, "bonusStrength": 20 }, - "3942": { - "name": "Freygerd", - "hitpoints": 50, - "combatLevel": 48, - "attackSpeed": 4, - "attackLevel": 40, - "strengthLevel": 40, - "defenceLevel": 40, - "rangeLevel": 1, - "magicLevel": 1, - "bonusStrength": 20 - }, "3943": { "name": "Lensa", "hitpoints": 50, @@ -22127,7 +22066,7 @@ "hitpoints": 15, "combatLevel": 13, "slayerLevel": 1, - "attackSpeed": 6, + "attackSpeed": 4, "attackLevel": 10, "strengthLevel": 10, "defenceLevel": 12, @@ -25428,7 +25367,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "5848": { "name": "Tanglefoot", @@ -27385,10 +27326,15 @@ }, "6340": { "name": "Cow (hard)", - "hitpoints": 8, + "hitpoints": 160, "combatLevel": 170, "slayerLevel": 1, - "attackSpeed": 4 + "attackSpeed": 4, + "attackLevel": 200, + "strengthLevel": 200, + "defenceLevel": 1, + "rangeLevel": 1, + "magicLevel": 1 }, "6342": { "name": "Barrelchest", @@ -28249,7 +28195,9 @@ "strengthLevel": 1, "defenceLevel": 1, "rangeLevel": 1, - "magicLevel": 1 + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "6402": { "name": "Mosquito swarm", @@ -29533,7 +29481,7 @@ "hitpoints": 130, "combatLevel": 80, "slayerLevel": 1, - "attackSpeed": 6, + "attackSpeed": 4, "attackLevel": 55, "strengthLevel": 60, "defenceLevel": 50, @@ -35559,6 +35507,7 @@ "name": "Galvek", "hitpoints": 1200, "combatLevel": 608, + "attackSpeed": 6, "attackLevel": 632, "strengthLevel": 268, "defenceLevel": 188, @@ -35575,12 +35524,14 @@ "bonusRangeStrength": 6, "bonusMagicDamage": 42, "poisonImmune": true, - "venomImmune": true + "venomImmune": true, + "dragon": true }, "8095": { "name": "Galvek", "hitpoints": 1200, "combatLevel": 608, + "attackSpeed": 6, "attackLevel": 632, "strengthLevel": 268, "defenceLevel": 188, @@ -35597,7 +35548,8 @@ "bonusRangeStrength": 6, "bonusMagicDamage": 42, "poisonImmune": true, - "venomImmune": true + "venomImmune": true, + "dragon": true }, "8096": { "name": "Galvek", @@ -35753,6 +35705,7 @@ "name": "Galvek", "hitpoints": 1200, "combatLevel": 608, + "attackSpeed": 6, "attackLevel": 632, "strengthLevel": 268, "defenceLevel": 188, @@ -35769,7 +35722,8 @@ "bonusRangeStrength": 6, "bonusMagicDamage": 42, "poisonImmune": true, - "venomImmune": true + "venomImmune": true, + "dragon": true }, "8178": { "name": "Galvek", @@ -38227,5 +38181,196 @@ "bonusAttack": 14, "bonusStrength": 28, "bonusRangeStrength": 28 + }, + "9258": { + "name": "Basilisk Sentinel", + "hitpoints": 460, + "combatLevel": 351, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 274, + "strengthLevel": 274, + "defenceLevel": 274, + "rangeLevel": 1, + "magicLevel": 274, + "stabDef": 40, + "slashDef": 40, + "magicDef": 40 + }, + "9282": { + "name": "Basilisk Youngling", + "hitpoints": 60, + "combatLevel": 57, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 25, + "strengthLevel": 40, + "defenceLevel": 70, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 20, + "slashDef": 20, + "magicDef": 20 + }, + "9287": { + "name": "Monstrous Basilisk", + "hitpoints": 170, + "combatLevel": 135, + "attackSpeed": 4, + "attackLevel": 88, + "strengthLevel": 98, + "defenceLevel": 130, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 35, + "slashDef": 35, + "magicDef": 35, + "poisonImmune": true, + "venomImmune": true + }, + "9288": { + "name": "Monstrous Basilisk", + "hitpoints": 170, + "combatLevel": 135, + "attackSpeed": 4, + "attackLevel": 88, + "strengthLevel": 98, + "defenceLevel": 130, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 35, + "slashDef": 35, + "magicDef": 35, + "poisonImmune": true, + "venomImmune": true + }, + "9289": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9290": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9291": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9292": { + "name": "The Jormungand", + "hitpoints": 600, + "combatLevel": 363, + "slayerLevel": 40, + "attackSpeed": 5, + "attackLevel": 180, + "strengthLevel": 180, + "defenceLevel": 180, + "rangeLevel": 180, + "magicLevel": 180, + "stabDef": 50, + "slashDef": 50, + "crushDef": 10, + "rangeDef": 50, + "magicDef": 50, + "bonusStrength": 12, + "bonusRangeStrength": 12, + "bonusMagicDamage": 12 + }, + "9293": { + "name": "Basilisk Knight", + "hitpoints": 200, + "combatLevel": 182, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 150, + "strengthLevel": 150, + "defenceLevel": 150, + "rangeLevel": 1, + "magicLevel": 150, + "stabDef": 25, + "slashDef": 25, + "magicDef": 25 + }, + "9295": { + "name": "Typhor", + "hitpoints": 280, + "combatLevel": 194, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 150, + "strengthLevel": 150, + "defenceLevel": 150, + "rangeLevel": 1, + "magicLevel": 150, + "stabDef": 25, + "slashDef": 25, + "magicDef": 25, + "poisonImmune": true, + "venomImmune": true + }, + "9296": { + "name": "Typhor", + "hitpoints": 280, + "combatLevel": 194, + "slayerLevel": 40, + "attackSpeed": 4, + "attackLevel": 150, + "strengthLevel": 150, + "defenceLevel": 150, + "rangeLevel": 1, + "magicLevel": 150, + "stabDef": 25, + "slashDef": 25, + "magicDef": 25, + "poisonImmune": true, + "venomImmune": true } } \ No newline at end of file From 34eb048ea9511fead929c2932a3716b6013aee33 Mon Sep 17 00:00:00 2001 From: HSJ-OSRS Date: Tue, 1 Oct 2019 10:10:45 +0100 Subject: [PATCH 7/9] fix config update --- .../client/plugins/slayer/SlayerPlugin.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java index b886982b4a..41f3423515 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java @@ -820,20 +820,23 @@ public class SlayerPlugin extends Plugin private void onConfigChanged(ConfigChanged event) { - if (!event.getGroup().equals("slayer") || !event.getKey().equals("infobox")) + if (!event.getGroup().equals("slayer")) { return; } updateConfig(); - if (this.showInfobox) + if (event.getKey().equals("infobox")) { - clientThread.invoke(this::addCounter); - } - else - { - removeCounter(); + if (this.showInfobox) + { + clientThread.invoke(this::addCounter); + } + else + { + removeCounter(); + } } } From b51a1cd249665817740d5edc0be480c36ac94b19 Mon Sep 17 00:00:00 2001 From: Netami1 Date: Tue, 1 Oct 2019 12:24:05 -0400 Subject: [PATCH 8/9] sanitize text for Jagex non-breaking spaces (#1697) add null check player name --- .../runelite/client/plugins/coxhelper/CoxPlugin.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/coxhelper/CoxPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/coxhelper/CoxPlugin.java index 6126f409a7..dbb1dc6ec1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/coxhelper/CoxPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/coxhelper/CoxPlugin.java @@ -217,9 +217,16 @@ public class CoxPlugin extends Plugin { for (Player player : client.getPlayers()) { - if (player.getName().equals(tpMatcher.group(1))) + final String rawPlayerName = player.getName(); + + if (rawPlayerName != null) { - victims.add(new Victim(player, Victim.Type.TELEPORT)); + final String fixedPlayerName = Text.sanitize(rawPlayerName); + + if (fixedPlayerName.equals(tpMatcher.group(1))) + { + victims.add(new Victim(player, Victim.Type.TELEPORT)); + } } } } From 4b310a694d5e729aa2a47b6d6e760d4079645c96 Mon Sep 17 00:00:00 2001 From: Ganom Date: Wed, 2 Oct 2019 00:07:56 +0000 Subject: [PATCH 9/9] project: Update gradle dependencies --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 54bebd6724..a697d93212 100644 --- a/build.gradle +++ b/build.gradle @@ -64,7 +64,7 @@ ext { mavenPluginAnnotations = '3.6.0' mavenPluginApi = '3.6.2' minio = '6.0.11' - mockito = '3.0.0' + mockito = '3.1.0' mongodbDriverSync = '3.11.0' mysqlConnectorJava = '8.0.17' netty = '4.1.42.Final'