From fbab82c3e5cf9cf910d08bf9c7178563bb08dcbf Mon Sep 17 00:00:00 2001 From: Kyleeld <48519776+Kyleeld@users.noreply.github.com> Date: Wed, 12 Jun 2019 13:23:13 +0100 Subject: [PATCH 01/14] Update PvpToolsPlugin.java --- .../net/runelite/client/plugins/pvptools/PvpToolsPlugin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java index 277b918716..74fedb9fa8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java @@ -105,10 +105,12 @@ public class PvpToolsPlugin extends Plugin private static final String WALK_HERE = "WALK HERE"; private static final String CANCEL = "CANCEL"; + private static final String CAST = "CAST"; private static final String ATTACK_OPTIONS_ATTACK = "ATTACK"; public static final HashSet ATTACK_OPTIONS_KEYWORDS = new HashSet<>(); static { + ATTACK_OPTIONS_KEYWORDS.add(CAST), ATTACK_OPTIONS_KEYWORDS.add(ATTACK_OPTIONS_ATTACK); } From 5a4ceb5ef6cb559e829b79243b6b8ac37d55f8ab Mon Sep 17 00:00:00 2001 From: Kyleeld <48519776+Kyleeld@users.noreply.github.com> Date: Wed, 12 Jun 2019 13:27:21 +0100 Subject: [PATCH 02/14] Update PvpToolsPlugin.java --- .../net/runelite/client/plugins/pvptools/PvpToolsPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java index 74fedb9fa8..1b9856210d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java @@ -110,7 +110,7 @@ public class PvpToolsPlugin extends Plugin public static final HashSet ATTACK_OPTIONS_KEYWORDS = new HashSet<>(); static { - ATTACK_OPTIONS_KEYWORDS.add(CAST), + ATTACK_OPTIONS_KEYWORDS.add(CAST); ATTACK_OPTIONS_KEYWORDS.add(ATTACK_OPTIONS_ATTACK); } From 8b294467f9ccaef354b0d6947d9fcfecb5fe9f36 Mon Sep 17 00:00:00 2001 From: Kyleeld <48519776+Kyleeld@users.noreply.github.com> Date: Fri, 14 Jun 2019 22:24:19 +0100 Subject: [PATCH 03/14] Update ClanManModePlugin.java --- .../runelite/client/plugins/clanmanmode/ClanManModePlugin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/clanmanmode/ClanManModePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/clanmanmode/ClanManModePlugin.java index a1a798e55f..e5e82c8477 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/clanmanmode/ClanManModePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/clanmanmode/ClanManModePlugin.java @@ -62,10 +62,12 @@ public class ClanManModePlugin extends Plugin @Inject private ClanManager clanManager; + private static final String CAST = "CAST"; private static final String ATTACK_OPTIONS_ATTACK = "ATTACK"; public static final HashSet ATTACK_OPTIONS_KEYWORDS = new HashSet<>(); static { + ATTACK_OPTIONS_KEYWORDS.add(CAST); ATTACK_OPTIONS_KEYWORDS.add(ATTACK_OPTIONS_ATTACK); } From cebde1ac45690eedc4d7237760060d452b5eba66 Mon Sep 17 00:00:00 2001 From: FrostyFridge <> Date: Sat, 15 Jun 2019 01:21:10 -0700 Subject: [PATCH 04/14] Generating scout overlay is no longer dependant on unrelated config settings --- .../client/plugins/raids/RaidsOverlay.java | 145 +++++++++--------- 1 file changed, 71 insertions(+), 74 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java index 6073433e9b..fddff0ea4f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java @@ -158,89 +158,86 @@ public class RaidsOverlay extends Overlay boolean unknownCombat = false; String puzzles = ""; String roomName = ""; - if (config.enhanceScouterTitle() || config.scavsBeforeIce() || sharable) + for (Room layoutRoom : plugin.getRaid().getLayout().getRooms()) { - for (Room layoutRoom : plugin.getRaid().getLayout().getRooms()) - { - int position = layoutRoom.getPosition(); - RaidRoom room = plugin.getRaid().getRoom(position); + int position = layoutRoom.getPosition(); + RaidRoom room = plugin.getRaid().getRoom(position); - if (room == null) - { - continue; - } - - switch (room.getType()) - { - case COMBAT: - combatCount++; - roomName = room.getBoss().getName(); - switch (RaidRoom.Boss.fromString(roomName)) - { - case VANGUARDS: - vanguards = true; - break; - case UNKNOWN: - unknownCombat = true; - break; - } - break; - case PUZZLE: - roomName = room.getPuzzle().getName(); - switch (RaidRoom.Puzzle.fromString(roomName)) - { - case CRABS: - crabs = true; - break; - case ICE_DEMON: - iceDemon = true; - iceRooms.add(roomCount); - break; - case THIEVING: - thieving = true; - break; - case TIGHTROPE: - tightrope = true; - break; - } - break; - case SCAVENGERS: - scavRooms.add(roomCount); - break; - } - roomCount++; - } - if (tightrope) + if (room == null) { - puzzles = crabs ? "cr" : iceDemon ? "ri" : thieving ? "tr" : "?r"; + continue; } - if ((config.hideVanguards() && vanguards) || (config.hideRopeless() && !tightrope) || (config.hideUnknownCombat() && unknownCombat)) + switch (room.getType()) { - panelComponent.getChildren().add(TitleComponent.builder() - .text("Bad Raid!") - .color(Color.RED) - .build()); - - return panelComponent.render(graphics); - } - - scouterActive = true; - displayLayout = (config.enhanceScouterTitle() ? "" + combatCount + "c " + puzzles + " " : "") + displayLayout; - - for (Integer i : iceRooms) - { - int prev = 0; - for (Integer s : scavRooms) - { - if (s > i) + case COMBAT: + combatCount++; + roomName = room.getBoss().getName(); + switch (RaidRoom.Boss.fromString(roomName)) { - break; + case VANGUARDS: + vanguards = true; + break; + case UNKNOWN: + unknownCombat = true; + break; } - prev = s; - } - scavsBeforeIceRooms.add(prev); + break; + case PUZZLE: + roomName = room.getPuzzle().getName(); + switch (RaidRoom.Puzzle.fromString(roomName)) + { + case CRABS: + crabs = true; + break; + case ICE_DEMON: + iceDemon = true; + iceRooms.add(roomCount); + break; + case THIEVING: + thieving = true; + break; + case TIGHTROPE: + tightrope = true; + break; + } + break; + case SCAVENGERS: + scavRooms.add(roomCount); + break; } + roomCount++; + } + if (tightrope) + { + puzzles = crabs ? "cr" : iceDemon ? "ri" : thieving ? "tr" : "?r"; + } + + if ((config.hideVanguards() && vanguards) || (config.hideRopeless() && !tightrope) || (config.hideUnknownCombat() && unknownCombat)) + { + panelComponent.getChildren().add(TitleComponent.builder() + .text("Bad Raid!") + .color(Color.RED) + .build()); + + return panelComponent.render(graphics); + } + + scouterActive = true; + displayLayout = (config.enhanceScouterTitle() ? "" + combatCount + "c " + puzzles + " " : "") + displayLayout; + + for (Integer i : iceRooms) + { + int prev = 0; + for (Integer s : scavRooms) + { + if (s > i) + { + break; + } + prev = s; + } + scavsBeforeIceRooms.add(prev); } int lastScavs = scavRooms.get(scavRooms.size() - 1); panelComponent.getChildren().add(TitleComponent.builder() From b2cddc1309b44d31b672999a377b5a4755f2f13f Mon Sep 17 00:00:00 2001 From: Justin Date: Sun, 16 Jun 2019 02:49:06 +1000 Subject: [PATCH 05/14] made bank keypin work in cox bank --- .../runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java index 36de7b7b9e..257d2e470a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java @@ -252,6 +252,7 @@ public class RuneLitePlusPlugin extends Plugin { if (client.getWidget(WidgetID.BANK_PIN_GROUP_ID, 0) == null || !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Bank of Gielinor") + && !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Chambers of Xeric") && !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Grand Exchange") && !client.getWidget(WidgetInfo.BANK_PIN_TOP_LEFT_TEXT).getText().equals("Housing Security System")) { From 89652a45dfffb97db167a75907c6c24065b969c5 Mon Sep 17 00:00:00 2001 From: Ganom Date: Sat, 15 Jun 2019 17:06:01 -0400 Subject: [PATCH 06/14] Fix Lizardmen Shaman Previously this was using google eventbus rather than runelites own eventbus. --- .../LizardmenShamanPlugin.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/lizardmenshaman/LizardmenShamanPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/lizardmenshaman/LizardmenShamanPlugin.java index ba8a011e25..e9eb807ca8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/lizardmenshaman/LizardmenShamanPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/lizardmenshaman/LizardmenShamanPlugin.java @@ -24,7 +24,6 @@ */ package net.runelite.client.plugins.lizardmenshaman; -import com.google.common.eventbus.Subscribe; import com.google.inject.Provides; import java.util.HashMap; import java.util.Map; @@ -36,8 +35,10 @@ import net.runelite.api.Actor; import net.runelite.api.Client; import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.AnimationChanged; +import net.runelite.api.events.ChatMessage; import net.runelite.client.Notifier; import net.runelite.client.config.ConfigManager; +import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginType; @@ -94,6 +95,18 @@ public class LizardmenShamanPlugin extends Plugin spawns.clear(); } + @Subscribe + public void onChatMessage(ChatMessage event) + { + if (config.notifyOnSpawn()) + { + if (event.getMessage().contains(MESSAGE)) + { + notifier.notify(MESSAGE); + } + } + } + @Subscribe public void onAnimationChanged(AnimationChanged event) { @@ -102,17 +115,13 @@ public class LizardmenShamanPlugin extends Plugin { return; } - else if (actor.getName().equals(SHAMAN) && actor.getAnimation() == 7157) + + if (actor.getName().equals(SHAMAN) && actor.getAnimation() == 7157) { if (config.showTimer()) { spawns.put(event.getActor().getLocalLocation(), new LizardmenShamanSpawn(8.4, null)); } - - if (config.notifyOnSpawn()) - { - notifier.notify(MESSAGE); - } } } } From d1cd2d791ca0cfba9d7b7f1863c548f5413f2ea0 Mon Sep 17 00:00:00 2001 From: gazivodag Date: Sat, 15 Jun 2019 21:25:02 -0400 Subject: [PATCH 07/14] Widget item ID's now return -1 and that broke the plugin. Added if check for item.getId() to catch -1 Added some licenses --- .../plugins/runedoku/RunedokuConfig.java | 24 ++++++++++++++ .../client/plugins/runedoku/RunedokuUtil.java | 33 ++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuConfig.java index ddfc69a4dd..48d0d3efb3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuConfig.java @@ -1,3 +1,27 @@ +/* + * Copyright (c) 2019, gazivodag + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package net.runelite.client.plugins.runedoku; import java.awt.Color; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuUtil.java b/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuUtil.java index 94cae519be..8dba20275d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuUtil.java @@ -1,3 +1,27 @@ +/* + * Copyright (c) 2019, gazivodag + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package net.runelite.client.plugins.runedoku; import java.awt.Color; @@ -138,7 +162,14 @@ class RunedokuUtil item = sudokuScreen.getWidgetItem(myIndex); if (item != null) { - myArr[i][ii] = RunedokuPiece.getById(item.getId()).getPieceForSudoku(); + if (item.getId() != -1) + { + myArr[i][ii] = RunedokuPiece.getById(item.getId()).getPieceForSudoku(); + } + else + { + myArr[i][ii] = 0; + } } else { From 4e4a66956340c72377d5551f2394bb0ba85cd01f Mon Sep 17 00:00:00 2001 From: FrostyFridge <> Date: Sun, 16 Jun 2019 00:46:33 -0700 Subject: [PATCH 08/14] Fix push-through wheat not working --- .../plugins/menuentryswapper/MenuEntrySwapperPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java index e556076a0e..37fadbecca 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java @@ -727,8 +727,10 @@ public class MenuEntrySwapperPlugin extends Plugin { if (event.getType() == WALK.getId()) { - MenuEntry menuEntry = entries[entries.length - 1]; + MenuEntry[] menuEntries = client.getMenuEntries(); + MenuEntry menuEntry = menuEntries[menuEntries.length - 1]; menuEntry.setType(MenuAction.WALK.getId() + MENU_ACTION_DEPRIORITIZE_OFFSET); + client.setMenuEntries(menuEntries); } else if (option.equalsIgnoreCase("examine")) { From 2f121804d5b3dc799536ac1acd91bfca7167085a Mon Sep 17 00:00:00 2001 From: FrostyFridge <> Date: Sun, 16 Jun 2019 10:53:14 -0700 Subject: [PATCH 09/14] Fix option name for claim dynamite, make claim higher priority than trade --- .../menuentryswapper/MenuEntrySwapperPlugin.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java index e556076a0e..3fd57d6978 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java @@ -938,6 +938,11 @@ public class MenuEntrySwapperPlugin extends Plugin swap(client, "buy-plank", option, target, true); } + if (config.claimDynamite() && target.equals("thirus")) + { + swap(client, "claim", option, target, true); + } + if (config.swapTrade()) { swap(client, "trade", option, target, true); @@ -950,11 +955,6 @@ public class MenuEntrySwapperPlugin extends Plugin swap(client, "claim-slime", option, target, true); } - if (config.claimDynamite() && target.contains("Thirus")) - { - swap(client, "claim-dynamite", option, target, true); - } - if (config.swapTravel()) { swap(client, "travel", option, target, true); From 9be685dd2c6b2cca118cb8f7d1c14bbcb75c85af Mon Sep 17 00:00:00 2001 From: Ganom Date: Mon, 17 Jun 2019 07:57:24 -0400 Subject: [PATCH 10/14] Add temporary fix to NPC_stats (#628) Currently, the wiki scraper has the hitpoints key name as hitpoints1/2/3/4 for challenge mode mobs, this adds an annoying obstacle. But i'm working on it. --- .../src/main/resources/npc_stats.json | 944 +++++++++++++----- 1 file changed, 709 insertions(+), 235 deletions(-) diff --git a/runelite-client/src/main/resources/npc_stats.json b/runelite-client/src/main/resources/npc_stats.json index 978c1f18ad..9b820a41db 100644 --- a/runelite-client/src/main/resources/npc_stats.json +++ b/runelite-client/src/main/resources/npc_stats.json @@ -2401,6 +2401,70 @@ "crushDef": 10, "rangeDef": 10 }, + "397": { + "name": "Town Guard", + "hitpoints": 22, + "combatLevel": 22, + "attackLevel": 15, + "strengthLevel": 15, + "defenceLevel": 16, + "rangeLevel": 26, + "magicLevel": 1, + "stabDef": 5, + "slashDef": 5, + "crushDef": 5, + "rangeDef": 5, + "bonusAttack": 6, + "bonusStrength": 10 + }, + "398": { + "name": "Town Guard", + "hitpoints": 22, + "combatLevel": 22, + "attackLevel": 15, + "strengthLevel": 15, + "defenceLevel": 16, + "rangeLevel": 26, + "magicLevel": 1, + "stabDef": 5, + "slashDef": 5, + "crushDef": 5, + "rangeDef": 5, + "bonusAttack": 6, + "bonusStrength": 10 + }, + "399": { + "name": "Town Guard", + "hitpoints": 22, + "combatLevel": 19, + "attackLevel": 15, + "strengthLevel": 15, + "defenceLevel": 16, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 5, + "slashDef": 5, + "crushDef": 5, + "rangeDef": 5, + "bonusAttack": 6, + "bonusStrength": 10 + }, + "400": { + "name": "Town Guard", + "hitpoints": 22, + "combatLevel": 19, + "attackLevel": 15, + "strengthLevel": 15, + "defenceLevel": 16, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 5, + "slashDef": 5, + "crushDef": 5, + "rangeDef": 5, + "bonusAttack": 6, + "bonusStrength": 10 + }, "406": { "name": "Cave crawler", "hitpoints": 22, @@ -3136,6 +3200,40 @@ "magicDef": 20, "bonusAttack": 30 }, + "473": { + "name": "Zygomite", + "hitpoints": 65, + "combatLevel": 74, + "slayerLevel": 57, + "attackLevel": 65, + "strengthLevel": 65, + "defenceLevel": 65, + "rangeLevel": 65, + "magicLevel": 65, + "stabDef": 10, + "slashDef": 10, + "crushDef": 10, + "rangeDef": 20, + "magicDef": 20, + "bonusAttack": 30 + }, + "474": { + "name": "Zygomite", + "hitpoints": 75, + "combatLevel": 86, + "slayerLevel": 57, + "attackLevel": 75, + "strengthLevel": 75, + "defenceLevel": 75, + "rangeLevel": 75, + "magicLevel": 75, + "stabDef": 10, + "slashDef": 10, + "crushDef": 10, + "rangeDef": 20, + "magicDef": 20, + "bonusAttack": 30 + }, "475": { "name": "Hole in the wall", "hitpoints": 105, @@ -4685,21 +4783,25 @@ }, "720": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, "721": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, "722": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, "723": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, @@ -4710,21 +4812,25 @@ }, "725": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, "726": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, "727": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, "728": { "name": "Mummy", + "hitpoints": 68, "combatLevel": 103, "undead": true }, @@ -5006,6 +5112,22 @@ "rangeDef": 50, "magicDef": 90 }, + "794": { + "name": "Scarab mage", + "hitpoints": 50, + "combatLevel": 93, + "slayerLevel": 1, + "attackLevel": 90, + "strengthLevel": 90, + "defenceLevel": 90, + "rangeLevel": 1, + "magicLevel": 70, + "magic": 70, + "stabDef": 40, + "slashDef": 90, + "crushDef": 90, + "magicDef": 34 + }, "795": { "name": "Locust rider", "hitpoints": 90, @@ -5070,8 +5192,25 @@ "rangeDef": 149, "magicDef": 159 }, + "799": { + "name": "Scarab mage", + "hitpoints": 50, + "combatLevel": 66, + "slayerLevel": 1, + "attackLevel": 90, + "strengthLevel": 90, + "defenceLevel": 90, + "rangeLevel": 1, + "magicLevel": 70, + "magic": 70, + "stabDef": 40, + "slashDef": 90, + "crushDef": 90, + "magicDef": 34 + }, "800": { "name": "Locust rider", + "hitpoints": 90, "combatLevel": 68, "slayerLevel": 1, "attackLevel": 100, @@ -5085,6 +5224,7 @@ }, "801": { "name": "Locust rider", + "hitpoints": 90, "combatLevel": 68, "slayerLevel": 1, "attackLevel": 105, @@ -5446,6 +5586,22 @@ "bonusAttack": 40, "bonusStrength": 70 }, + "928": { + "name": "Kraka", + "hitpoints": 120, + "combatLevel": 91, + "slayerLevel": 1, + "attackLevel": 50, + "strengthLevel": 100, + "defenceLevel": 50, + "stabDef": 25, + "slashDef": 25, + "crushDef": 40, + "rangeDef": 200, + "magicDef": 200, + "bonusAttack": 40, + "bonusStrength": 70 + }, "931": { "name": "Thrower Troll", "hitpoints": 95, @@ -6112,42 +6268,102 @@ "1066": { "name": "Fear reaper", "hitpoints": 25, - "combatLevel": 42 + "combatLevel": 42, + "attackLevel": 39, + "strengthLevel": 41, + "defenceLevel": 40, + "rangeLevel": 1, + "magicLevel": 1 }, "1067": { "name": "Confusion beast", - "combatLevel": 43 + "hitpoints": 28, + "combatLevel": 43, + "attackLevel": 42, + "strengthLevel": 41, + "defenceLevel": 40, + "rangeLevel": 1, + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "1068": { "name": "Confusion beast", - "combatLevel": 43 + "hitpoints": 28, + "combatLevel": 43, + "attackLevel": 42, + "strengthLevel": 41, + "defenceLevel": 40, + "rangeLevel": 1, + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "1069": { "name": "Confusion beast", - "combatLevel": 43 + "hitpoints": 28, + "combatLevel": 43, + "attackLevel": 42, + "strengthLevel": 41, + "defenceLevel": 40, + "rangeLevel": 1, + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "1070": { "name": "Confusion beast", - "combatLevel": 43 + "hitpoints": 28, + "combatLevel": 43, + "attackLevel": 42, + "strengthLevel": 41, + "defenceLevel": 40, + "rangeLevel": 1, + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "1071": { "name": "Confusion beast", - "combatLevel": 43 + "hitpoints": 28, + "combatLevel": 43, + "attackLevel": 42, + "strengthLevel": 41, + "defenceLevel": 40, + "rangeLevel": 1, + "magicLevel": 1, + "poisonImmune": true, + "venomImmune": true }, "1072": { "name": "Hopeless creature", "hitpoints": 25, - "combatLevel": 40 + "combatLevel": 40, + "attackLevel": 38, + "strengthLevel": 36, + "defenceLevel": 39, + "rangeLevel": 1, + "magicLevel": 1 }, "1073": { "name": "Hopeless creature", "hitpoints": 25, - "combatLevel": 40 + "combatLevel": 40, + "attackLevel": 38, + "strengthLevel": 36, + "defenceLevel": 39, + "rangeLevel": 1, + "magicLevel": 1 }, "1074": { "name": "Hopeless creature", "hitpoints": 25, - "combatLevel": 40 + "combatLevel": 40, + "attackLevel": 38, + "strengthLevel": 36, + "defenceLevel": 39, + "rangeLevel": 1, + "magicLevel": 1 }, "1075": { "name": "Tolna", @@ -6856,7 +7072,7 @@ "1282": { "name": "Riyl Shade", "hitpoints": 76, - "combatLevel": 76, + "combatLevel": 80, "slayerLevel": 1, "attackLevel": 88, "strengthLevel": 55, @@ -8064,6 +8280,7 @@ }, "1713": { "name": "Spinner", + "hitpoints": 33, "combatLevel": 88 }, "1714": { @@ -8166,6 +8383,31 @@ "hitpoints": 97, "combatLevel": 92 }, + "1734": { + "name": "Brawler", + "hitpoints": 53, + "combatLevel": 51 + }, + "1735": { + "name": "Brawler", + "hitpoints": 83, + "combatLevel": 76 + }, + "1736": { + "name": "Brawler", + "hitpoints": 97, + "combatLevel": 101 + }, + "1737": { + "name": "Brawler", + "hitpoints": 113, + "combatLevel": 129 + }, + "1738": { + "name": "Brawler", + "hitpoints": 143, + "combatLevel": 158 + }, "1777": { "name": "Double agent", "hitpoints": 80, @@ -8446,6 +8688,7 @@ }, "1863": { "name": "Tree spirit", + "hitpoints": 60, "combatLevel": 49, "attackLevel": 48, "strengthLevel": 48, @@ -11116,6 +11359,7 @@ }, "2507": { "name": "Zombie", + "hitpoints": 71, "combatLevel": 53, "slayerLevel": 1, "attackLevel": 19, @@ -11134,6 +11378,7 @@ }, "2508": { "name": "Zombie", + "hitpoints": 71, "combatLevel": 53, "slayerLevel": 1, "attackLevel": 19, @@ -11152,6 +11397,7 @@ }, "2509": { "name": "Zombie", + "hitpoints": 71, "combatLevel": 53, "slayerLevel": 1, "attackLevel": 19, @@ -11399,134 +11645,114 @@ }, "2527": { "name": "Ghost", - "hitpoints": 80, - "combatLevel": 77, + "hitpoints": 75, + "combatLevel": 76, "slayerLevel": 1, "attackLevel": 63, "strengthLevel": 63, "defenceLevel": 68, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 55, - "slashDef": 55, + "stabDef": 45, + "slashDef": 45, "crushDef": 5, - "rangeDef": 55, - "magicDef": 55, + "rangeDef": 45, "undead": true }, "2528": { "name": "Ghost", - "hitpoints": 80, - "combatLevel": 77, + "hitpoints": 75, + "combatLevel": 76, "slayerLevel": 1, "attackLevel": 63, "strengthLevel": 63, "defenceLevel": 68, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 55, - "slashDef": 55, + "stabDef": 45, + "slashDef": 45, "crushDef": 5, - "rangeDef": 55, - "magicDef": 55, + "rangeDef": 45, "undead": true }, "2529": { "name": "Ghost", - "hitpoints": 80, - "combatLevel": 77, + "hitpoints": 75, + "combatLevel": 76, "slayerLevel": 1, "attackLevel": 63, "strengthLevel": 63, "defenceLevel": 68, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 55, - "slashDef": 55, + "stabDef": 45, + "slashDef": 45, "crushDef": 5, - "rangeDef": 55, - "magicDef": 55, + "rangeDef": 45, "undead": true }, "2530": { "name": "Ghost", - "hitpoints": 80, - "combatLevel": 77, + "hitpoints": 75, + "combatLevel": 76, "slayerLevel": 1, "attackLevel": 63, "strengthLevel": 63, "defenceLevel": 68, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 55, - "slashDef": 55, + "stabDef": 45, + "slashDef": 45, "crushDef": 5, - "rangeDef": 55, - "magicDef": 55, + "rangeDef": 45, "undead": true }, "2531": { "name": "Ghost", - "hitpoints": 75, - "combatLevel": 76, + "hitpoints": 30, + "combatLevel": 24, "slayerLevel": 1, - "attackLevel": 63, - "strengthLevel": 63, - "defenceLevel": 68, + "attackLevel": 23, + "strengthLevel": 23, + "defenceLevel": 20, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 45, - "slashDef": 45, - "crushDef": 5, - "rangeDef": 45, "undead": true }, "2532": { "name": "Ghost", - "hitpoints": 75, - "combatLevel": 76, + "hitpoints": 30, + "combatLevel": 24, "slayerLevel": 1, - "attackLevel": 63, - "strengthLevel": 63, - "defenceLevel": 68, + "attackLevel": 23, + "strengthLevel": 23, + "defenceLevel": 20, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 45, - "slashDef": 45, - "crushDef": 5, - "rangeDef": 45, "undead": true }, "2533": { "name": "Ghost", - "hitpoints": 75, - "combatLevel": 76, + "hitpoints": 30, + "combatLevel": 24, "slayerLevel": 1, - "attackLevel": 63, - "strengthLevel": 63, - "defenceLevel": 68, + "attackLevel": 23, + "strengthLevel": 23, + "defenceLevel": 20, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 45, - "slashDef": 45, - "crushDef": 5, - "rangeDef": 45, "undead": true }, "2534": { "name": "Ghost", - "hitpoints": 75, - "combatLevel": 76, + "hitpoints": 30, + "combatLevel": 24, "slayerLevel": 1, - "attackLevel": 63, - "strengthLevel": 63, - "defenceLevel": 68, + "attackLevel": 23, + "strengthLevel": 23, + "defenceLevel": 20, "rangeLevel": 1, "magicLevel": 1, - "stabDef": 45, - "slashDef": 45, - "crushDef": 5, - "rangeDef": 45, "undead": true }, "2536": { @@ -12790,7 +13016,6 @@ "defenceLevel": 4, "rangeLevel": 1, "magicLevel": 1, - "stab": 6, "slashDef": 3, "crushDef": 2, "rangeDef": 2, @@ -12806,7 +13031,6 @@ "defenceLevel": 4, "rangeLevel": 1, "magicLevel": 1, - "stab": 6, "slashDef": 3, "crushDef": 2, "rangeDef": 2, @@ -13755,13 +13979,12 @@ "name": "Barbarian", "hitpoints": 24, "combatLevel": 17, - "attackLevel": 8, - "strengthLevel": 7, - "defenceLevel": 3, + "attackLevel": 15, + "strengthLevel": 14, + "defenceLevel": 10, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13776,8 +13999,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13787,13 +14009,12 @@ "name": "Barbarian", "hitpoints": 24, "combatLevel": 17, - "attackLevel": 8, - "strengthLevel": 7, - "defenceLevel": 3, + "attackLevel": 15, + "strengthLevel": 14, + "defenceLevel": 10, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13803,13 +14024,12 @@ "name": "Barbarian", "hitpoints": 24, "combatLevel": 17, - "attackLevel": 8, - "strengthLevel": 7, - "defenceLevel": 3, + "attackLevel": 15, + "strengthLevel": 14, + "defenceLevel": 10, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13824,8 +14044,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13840,8 +14059,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13856,8 +14074,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13867,13 +14084,12 @@ "name": "Barbarian", "hitpoints": 24, "combatLevel": 17, - "attackLevel": 8, - "strengthLevel": 7, - "defenceLevel": 3, + "attackLevel": 15, + "strengthLevel": 14, + "defenceLevel": 10, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13888,8 +14104,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13904,8 +14119,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13920,8 +14134,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13936,8 +14149,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13947,13 +14159,12 @@ "name": "Barbarian", "hitpoints": 24, "combatLevel": 15, - "attackLevel": 8, - "strengthLevel": 7, - "defenceLevel": 3, - "rangeLevel": 1, + "attackLevel": 15, + "strengthLevel": 3, + "defenceLevel": 10, + "rangeLevel": 15, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13963,13 +14174,12 @@ "name": "Barbarian", "hitpoints": 24, "combatLevel": 17, - "attackLevel": 8, - "strengthLevel": 7, - "defenceLevel": 3, + "attackLevel": 15, + "strengthLevel": 14, + "defenceLevel": 10, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -13984,8 +14194,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -14000,8 +14209,7 @@ "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, + "slashDef": 3, "crushDef": 2, "rangeDef": 2, "bonusAttack": 9, @@ -14009,19 +14217,19 @@ }, "3072": { "name": "Barbarian", - "hitpoints": 18, + "hitpoints": 20, "combatLevel": 9, - "attackLevel": 8, + "attackLevel": 6, "strengthLevel": 7, "defenceLevel": 3, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, - "crushDef": 2, - "rangeDef": 2, + "stabDef": 9, + "slashDef": 10, + "crushDef": 10, + "rangeDef": 5, "bonusAttack": 9, - "bonusStrength": 15 + "bonusStrength": 16 }, "3073": { "name": "Goblin", @@ -14273,17 +14481,15 @@ "name": "Barbarian", "hitpoints": 14, "combatLevel": 8, - "attackLevel": 8, - "strengthLevel": 7, - "defenceLevel": 3, + "attackLevel": 6, + "strengthLevel": 5, + "defenceLevel": 5, "rangeLevel": 1, "magicLevel": 1, - "crush": 9, - "slashDef": 2, - "crushDef": 2, - "rangeDef": 2, - "bonusAttack": 9, - "bonusStrength": 15 + "stabDef": 1, + "slashDef": 1, + "bonusAttack": 8, + "bonusStrength": 10 }, "3103": { "name": "Al-Kharid warrior", @@ -14360,7 +14566,7 @@ "combatLevel": 46, "attackLevel": 38, "strengthLevel": 40, - "defenceLevel": 41, + "defenceLevel": 31, "rangeLevel": 1, "magicLevel": 1, "stabDef": 39, @@ -14396,7 +14602,7 @@ "combatLevel": 46, "attackLevel": 38, "strengthLevel": 40, - "defenceLevel": 41, + "defenceLevel": 31, "rangeLevel": 1, "magicLevel": 1, "stabDef": 39, @@ -14695,6 +14901,21 @@ "rangeLevel": 1, "magicLevel": 1 }, + "3139": { + "name": "Pyrefiend", + "hitpoints": 48, + "combatLevel": 48, + "slayerLevel": 30, + "attackLevel": 60, + "strengthLevel": 36, + "defenceLevel": 22, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 10, + "slashDef": 10, + "crushDef": 10, + "rangeDef": 10 + }, "3140": { "name": "Icefiend", "hitpoints": 20, @@ -17917,6 +18138,46 @@ "rangeDef": 50, "magicDef": 60 }, + "4043": { + "name": "Pirate", + "hitpoints": 20 + }, + "4044": { + "name": "Pirate", + "hitpoints": 20 + }, + "4045": { + "name": "Pirate", + "hitpoints": 20 + }, + "4046": { + "name": "Pirate", + "hitpoints": 20 + }, + "4047": { + "name": "Pirate", + "hitpoints": 20 + }, + "4048": { + "name": "Pirate", + "hitpoints": 20 + }, + "4049": { + "name": "Pirate", + "hitpoints": 20 + }, + "4050": { + "name": "Pirate", + "hitpoints": 20 + }, + "4051": { + "name": "Pirate", + "hitpoints": 20 + }, + "4052": { + "name": "Pirate", + "hitpoints": 20 + }, "4067": { "name": "Black Knight Titan", "hitpoints": 142, @@ -18248,7 +18509,7 @@ "hitpoints": 120, "combatLevel": 101, "slayerLevel": 1, - "attackLevel": 120, + "attackLevel": 60, "strengthLevel": 120, "defenceLevel": 50, "stabDef": 25, @@ -21648,6 +21909,7 @@ }, "5242": { "name": "Scorpion", + "hitpoints": 15, "combatLevel": 38, "slayerLevel": 1 }, @@ -23866,8 +24128,6 @@ "rangeDef": 60, "magicDef": 20, "bonusAttack": 65, - "poisonImmune": true, - "venomImmune": true, "demon": true }, "5887": { @@ -23886,8 +24146,6 @@ "rangeDef": 60, "magicDef": 20, "bonusAttack": 65, - "poisonImmune": true, - "venomImmune": true, "demon": true }, "5888": { @@ -23906,8 +24164,6 @@ "rangeDef": 60, "magicDef": 20, "bonusAttack": 65, - "poisonImmune": true, - "venomImmune": true, "demon": true }, "5889": { @@ -23926,8 +24182,6 @@ "rangeDef": 60, "magicDef": 20, "bonusAttack": 65, - "poisonImmune": true, - "venomImmune": true, "demon": true }, "5890": { @@ -23946,8 +24200,6 @@ "rangeDef": 60, "magicDef": 20, "bonusAttack": 65, - "poisonImmune": true, - "venomImmune": true, "demon": true }, "5891": { @@ -23966,8 +24218,6 @@ "rangeDef": 60, "magicDef": 20, "bonusAttack": 65, - "poisonImmune": true, - "venomImmune": true, "demon": true }, "5908": { @@ -23986,8 +24236,6 @@ "rangeDef": 60, "magicDef": 20, "bonusAttack": 65, - "poisonImmune": true, - "venomImmune": true, "demon": true }, "5916": { @@ -25017,18 +25265,19 @@ }, "6309": { "name": "Flambeed (hard)", - "hitpoints": 240, - "combatLevel": 201, - "attackLevel": 186, - "strengthLevel": 186, - "defenceLevel": 81, - "rangeLevel": 120, + "hitpoints": 255, + "combatLevel": 238, + "attackLevel": 240, + "strengthLevel": 240, + "defenceLevel": 75, + "rangeLevel": 1, "magicLevel": 1, - "stabDef": 150, - "slashDef": 150, - "crushDef": 150, + "stabDef": 50, + "slashDef": 50, + "crushDef": 5, "rangeDef": 50, - "magicDef": 50 + "magicDef": 5, + "bonusAttack": 100 }, "6310": { "name": "Karamel (hard)", @@ -25065,6 +25314,96 @@ "bonusAttack": 50, "bonusStrength": 50 }, + "6312": { + "name": "Gelatinnoth Mother (hard)", + "hitpoints": 240, + "combatLevel": 201, + "attackLevel": 186, + "strengthLevel": 186, + "defenceLevel": 81, + "rangeLevel": 120, + "magicLevel": 1, + "stabDef": 150, + "slashDef": 150, + "crushDef": 150, + "rangeDef": 50, + "magicDef": 50 + }, + "6313": { + "name": "Gelatinnoth Mother (hard)", + "hitpoints": 240, + "combatLevel": 201, + "attackLevel": 186, + "strengthLevel": 186, + "defenceLevel": 81, + "rangeLevel": 120, + "magicLevel": 1, + "stabDef": 150, + "slashDef": 150, + "crushDef": 150, + "rangeDef": 50, + "magicDef": 50 + }, + "6314": { + "name": "Gelatinnoth Mother (hard)", + "hitpoints": 240, + "combatLevel": 201, + "attackLevel": 186, + "strengthLevel": 186, + "defenceLevel": 81, + "rangeLevel": 120, + "magicLevel": 1, + "stabDef": 150, + "slashDef": 150, + "crushDef": 150, + "rangeDef": 50, + "magicDef": 50 + }, + "6315": { + "name": "Gelatinnoth Mother (hard)", + "hitpoints": 240, + "combatLevel": 201, + "attackLevel": 186, + "strengthLevel": 186, + "defenceLevel": 81, + "rangeLevel": 120, + "magicLevel": 1, + "stabDef": 150, + "slashDef": 150, + "crushDef": 150, + "rangeDef": 50, + "magicDef": 50 + }, + "6316": { + "name": "Gelatinnoth Mother (hard)", + "hitpoints": 240, + "combatLevel": 201, + "attackLevel": 186, + "strengthLevel": 186, + "defenceLevel": 81, + "rangeLevel": 120, + "magicLevel": 1, + "stabDef": 150, + "slashDef": 150, + "crushDef": 150, + "rangeDef": 50, + "magicDef": 50 + }, + "6317": { + "name": "Gelatinnoth Mother (hard)", + "hitpoints": 240, + "combatLevel": 201, + "attackLevel": 186, + "strengthLevel": 186, + "defenceLevel": 81, + "rangeLevel": 120, + "magicLevel": 1, + "stabDef": 150, + "slashDef": 150, + "crushDef": 150, + "rangeDef": 50, + "magicDef": 50 + }, "6318": { "name": "Nezikchened (hard)", "hitpoints": 150, @@ -25344,6 +25683,7 @@ }, "6340": { "name": "Cow (hard)", + "hitpoints": 8, "combatLevel": 170, "slayerLevel": 1 }, @@ -26022,7 +26362,7 @@ "hitpoints": 120, "combatLevel": 101, "slayerLevel": 1, - "attackLevel": 120, + "attackLevel": 60, "strengthLevel": 120, "defenceLevel": 50, "stabDef": 25, @@ -27111,17 +27451,6 @@ "magicLevel": 480, "magic": 60 }, - "6529": { - "name": "Feral Vampyre", - "hitpoints": 50, - "combatLevel": 72, - "slayerLevel": 1, - "attackLevel": 65, - "strengthLevel": 70, - "defenceLevel": 65, - "rangeLevel": 1, - "magicLevel": 50 - }, "6574": { "name": "Gnome guard", "hitpoints": 800, @@ -28586,16 +28915,7 @@ "7033": { "name": "Reanimated dagannoth", "hitpoints": 35, - "slayerLevel": 1, - "strengthLevel": 1000, - "defenceLevel": 140, - "rangeLevel": 1, - "magicLevel": 480, - "stab": 1, - "slash": 1, - "crush": 2, - "range": 48, - "magic": 100000 + "slayerLevel": 1 }, "7034": { "name": "Reanimated bloodveld", @@ -29610,6 +29930,26 @@ "magicLevel": 1, "demon": true }, + "7288": { + "name": "Awakened Altar", + "hitpoints": 100, + "demon": true + }, + "7290": { + "name": "Awakened Altar", + "hitpoints": 100, + "demon": true + }, + "7292": { + "name": "Awakened Altar", + "hitpoints": 100, + "demon": true + }, + "7294": { + "name": "Awakened Altar", + "hitpoints": 100, + "demon": true + }, "7296": { "name": "Dark Ankou", "hitpoints": 60, @@ -29719,6 +30059,24 @@ "rangeDef": 10, "magicDef": 5 }, + "7390": { + "name": "Screaming banshee", + "hitpoints": 61, + "combatLevel": 70, + "slayerLevel": 15, + "attackLevel": 65, + "strengthLevel": 61, + "defenceLevel": 56, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 13, + "slashDef": 13, + "crushDef": 13, + "rangeDef": 13, + "poisonImmune": true, + "venomImmune": true, + "undead": true + }, "7391": { "name": "Screaming twisted banshee", "hitpoints": 220, @@ -30291,21 +30649,25 @@ }, "7530": { "name": "Vespula", + "hitpoints": 200, "rangeDef": 60, "magicDef": 70 }, "7531": { "name": "Vespula", + "hitpoints": 200, "rangeDef": 60, "magicDef": 70 }, "7532": { "name": "Vespula", + "hitpoints": 200, "rangeDef": 60, "magicDef": 70 }, "7533": { "name": "Abyssal portal", + "hitpoints": 250, "attackLevel": 1, "strengthLevel": 1, "rangeLevel": 1, @@ -30314,11 +30676,13 @@ }, "7538": { "name": "Vespine soldier", + "hitpoints": 100, "rangeLevel": 1, "magicDef": 30 }, "7539": { "name": "Vespine soldier", + "hitpoints": 100, "rangeLevel": 1, "magicDef": 30 }, @@ -30528,6 +30892,7 @@ }, "7559": { "name": "Deathly ranger", + "hitpoints": 120, "attackLevel": 1, "strengthLevel": 1, "range": 120, @@ -30535,13 +30900,27 @@ }, "7560": { "name": "Deathly mage", + "hitpoints": 120, "attackLevel": 1, "strengthLevel": 1, "rangeLevel": 1, "magic": 120 }, + "7561": { + "name": "Muttadile", + "hitpoints": 250 + }, + "7562": { + "name": "Muttadile", + "hitpoints": 250 + }, + "7563": { + "name": "Muttadile", + "hitpoints": 250 + }, "7566": { "name": "Vasa Nistirio", + "hitpoints": 300, "attackLevel": 1, "strengthLevel": 1, "range": 100, @@ -30553,6 +30932,7 @@ }, "7567": { "name": "Vasa Nistirio", + "hitpoints": 300, "attackLevel": 1, "strengthLevel": 1, "range": 100, @@ -30564,6 +30944,7 @@ }, "7568": { "name": "Glowing crystal", + "hitpoints": 120, "attackLevel": 1, "strengthLevel": 1, "rangeLevel": 1, @@ -30572,6 +30953,7 @@ }, "7573": { "name": "Lizardman shaman", + "hitpoints": 190, "slayerLevel": 1, "range": 56, "stabDef": 102, @@ -30584,6 +30966,7 @@ }, "7574": { "name": "Lizardman shaman", + "hitpoints": 190, "slayerLevel": 1, "range": 56, "stabDef": 102, @@ -30626,6 +31009,7 @@ }, "7604": { "name": "Skeletal Mystic", + "hitpoints": 160, "slayerLevel": 1, "rangeLevel": 1, "magic": 40, @@ -30640,6 +31024,7 @@ }, "7605": { "name": "Skeletal Mystic", + "hitpoints": 160, "slayerLevel": 1, "rangeLevel": 1, "magic": 40, @@ -30654,6 +31039,7 @@ }, "7606": { "name": "Skeletal Mystic", + "hitpoints": 160, "slayerLevel": 1, "rangeLevel": 1, "magic": 40, @@ -31256,16 +31642,6 @@ "rangeLevel": 1, "magicLevel": 1 }, - "7800": { - "name": "Fossil Rock", - "hitpoints": 100, - "combatLevel": 25, - "attackLevel": 1, - "strengthLevel": 1, - "defenceLevel": 1, - "rangeLevel": 1, - "magicLevel": 1 - }, "7802": { "name": "Hoop Snake", "hitpoints": 25, @@ -32499,6 +32875,60 @@ "rangeLevel": 1, "magicLevel": 128 }, + "8067": { + "name": "Zombie", + "hitpoints": 54, + "combatLevel": 132, + "slayerLevel": 1, + "attackLevel": 160, + "strengthLevel": 180, + "defenceLevel": 62, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 25, + "slashDef": 20, + "crushDef": 25, + "rangeDef": 30, + "magicDef": 10, + "bonusAttack": 30, + "undead": true + }, + "8068": { + "name": "Zombie", + "hitpoints": 54, + "combatLevel": 132, + "slayerLevel": 1, + "attackLevel": 160, + "strengthLevel": 1, + "defenceLevel": 62, + "rangeLevel": 180, + "magicLevel": 1, + "range": 20, + "stabDef": 15, + "slashDef": 10, + "crushDef": 15, + "rangeDef": 20, + "magicDef": 30, + "undead": true + }, + "8069": { + "name": "Zombie", + "hitpoints": 54, + "combatLevel": 132, + "slayerLevel": 1, + "attackLevel": 160, + "strengthLevel": 1, + "defenceLevel": 62, + "rangeLevel": 1, + "magicLevel": 180, + "magic": 20, + "stabDef": 35, + "slashDef": 30, + "crushDef": 35, + "rangeDef": 10, + "magicDef": 20, + "undead": true + }, "8070": { "name": "Skeleton", "hitpoints": 54, @@ -32570,23 +33000,6 @@ "magicDef": 30, "dragon": true }, - "8074": { - "name": "Blue dragon", - "hitpoints": 105, - "combatLevel": 111, - "slayerLevel": 1, - "attackLevel": 95, - "strengthLevel": 95, - "defenceLevel": 95, - "rangeLevel": 1, - "magicLevel": 1, - "stabDef": 50, - "slashDef": 70, - "crushDef": 70, - "rangeDef": 50, - "magicDef": 60, - "dragon": true - }, "8075": { "name": "Red dragon", "hitpoints": 140, @@ -32621,23 +33034,6 @@ "magicDef": 30, "dragon": true }, - "8077": { - "name": "Blue dragon", - "hitpoints": 105, - "combatLevel": 111, - "slayerLevel": 1, - "attackLevel": 95, - "strengthLevel": 95, - "defenceLevel": 95, - "rangeLevel": 1, - "magicLevel": 1, - "stabDef": 50, - "slashDef": 70, - "crushDef": 70, - "rangeDef": 50, - "magicDef": 60, - "dragon": true - }, "8078": { "name": "Red dragon", "hitpoints": 140, @@ -34278,7 +34674,7 @@ }, "8514": { "name": "Trapped Soul", - "hitpoints": 22, + "hitpoints": 30, "combatLevel": 30, "attackLevel": 25, "strengthLevel": 29, @@ -34288,7 +34684,7 @@ }, "8528": { "name": "Trapped Soul", - "hitpoints": 22, + "hitpoints": 30, "combatLevel": 30, "attackLevel": 25, "strengthLevel": 29, @@ -34667,5 +35063,83 @@ "bonusRangeStrength": 20, "bonusMagicDamage": 20, "dragon": true + }, + "8633": { + "name": "The Mimic", + "hitpoints": 230, + "combatLevel": 186, + "attackLevel": 185, + "strengthLevel": 120, + "defenceLevel": 120, + "rangeLevel": 1, + "magicLevel": 60, + "magic": 180, + "stabDef": 160, + "slashDef": 165, + "crushDef": 150, + "rangeDef": 145, + "magicDef": 30, + "bonusAttack": 135, + "bonusStrength": 48 + }, + "8635": { + "name": "Third Age Warrior", + "hitpoints": 40, + "combatLevel": 83, + "attackLevel": 90, + "strengthLevel": 75, + "defenceLevel": 80, + "rangeLevel": 1, + "magicLevel": 1, + "stabDef": 96, + "slashDef": 108, + "crushDef": 113, + "rangeDef": 97, + "bonusAttack": 105, + "bonusStrength": 75 + }, + "8636": { + "name": "Third Age Ranger", + "hitpoints": 40, + "combatLevel": 76, + "attackLevel": 1, + "strengthLevel": 1, + "defenceLevel": 80, + "rangeLevel": 95, + "magicLevel": 1, + "range": 140, + "stabDef": 55, + "slashDef": 47, + "crushDef": 60, + "rangeDef": 55, + "magicDef": 60, + "bonusRangeStrength": 7 + }, + "8637": { + "name": "Third Age Mage", + "hitpoints": 40, + "combatLevel": 83, + "attackLevel": 1, + "strengthLevel": 1, + "defenceLevel": 80, + "rangeLevel": 1, + "magicLevel": 110, + "magic": 145, + "stabDef": 5, + "slashDef": 6, + "crushDef": 5, + "magicDef": 65, + "bonusMagicDamage": 24 + }, + "8678": { + "name": "Feral Vampyre", + "hitpoints": 50, + "combatLevel": 72, + "slayerLevel": 1, + "attackLevel": 65, + "strengthLevel": 70, + "defenceLevel": 65, + "rangeLevel": 1, + "magicLevel": 50 } -} \ No newline at end of file +} From 68ce7cdd2916a5f67774397982ea983e599f9fb4 Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Mon, 17 Jun 2019 20:21:58 +0100 Subject: [PATCH 11/14] Rename shift walk plugin to be less confusing --- .../runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java index 89ebd4324b..54bb308a7e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java @@ -39,7 +39,7 @@ import net.runelite.client.plugins.PluginType; * Shift Walker Plugin. Credit to MenuEntrySwapperPlugin for code some code structure used here. */ @PluginDescriptor( - name = "Shift To Walk", + name = "Shift Walk Here", description = "Use Shift to toggle the Walk Here menu option. While pressed you will Walk rather than interact with objects.", tags = {"npcs", "items", "objects"}, type = PluginType.UTILITY, From ae3a97f2db16e6fe7a98295c014f932ca204a771 Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Mon, 17 Jun 2019 20:37:20 +0100 Subject: [PATCH 12/14] Update ShiftWalkerPlugin.java --- .../runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java index 54bb308a7e..e9378e6f99 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerPlugin.java @@ -39,7 +39,7 @@ import net.runelite.client.plugins.PluginType; * Shift Walker Plugin. Credit to MenuEntrySwapperPlugin for code some code structure used here. */ @PluginDescriptor( - name = "Shift Walk Here", + name = "Shift Walk Under", description = "Use Shift to toggle the Walk Here menu option. While pressed you will Walk rather than interact with objects.", tags = {"npcs", "items", "objects"}, type = PluginType.UTILITY, From 308d981c0da3c6cad425783b491a4d6d864b39b7 Mon Sep 17 00:00:00 2001 From: zeruth Date: Mon, 17 Jun 2019 17:31:47 -0400 Subject: [PATCH 13/14] Initial RS-Mod Release! Adds runtime injection of rsa keys via RSBufferMixin :) Pretty easy to get going. Enjoy! --- README.md | 4 +- .../net/runelite/mixins/RSBufferMixin.java | 50 +++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java diff --git a/README.md b/README.md index b6f8641df6..aea4952d75 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ https://www.rune-server.ee/runescape-development/rs2-server/downloads/684206-180 ## Usage -It's ran much like RuneLite or RuneLitePlus, install then run RuneLite.main() +To setup your rsa keys, navigate to runelite-mixins and go to RSBufferMixin and set modulus and exponent -First you will want to use [Recaf](https://github.com/Col-E/Recaf/releases) to modify the RSA class (currently cm.class for 180) instructions for the server keys you use in the vanilla-RSVERSION.jar in the root of the project. I will implement mixins but this works for now. +After that it's ran much like RuneLite or RuneLitePlus, install then run RuneLite.main() ## License diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java new file mode 100644 index 0000000000..a7c39eb17f --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2019, Null (zeruth) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.mixins; + +import java.math.BigInteger; +import net.runelite.api.mixins.Copy; +import net.runelite.api.mixins.Inject; +import net.runelite.api.mixins.Mixin; +import net.runelite.api.mixins.Replace; +import net.runelite.rs.api.RSBuffer; + +@Mixin(RSBuffer.class) +public abstract class RSBufferMixin implements RSBuffer +{ + @Inject + private static BigInteger modulus = new BigInteger("10001", 16); + + @Inject + private static BigInteger exponent = new BigInteger("db7adc8af6f44b1359c5d1701d6bddc3eb47ce3ff2c690521ec8a9ea27525bf69263cea25648540cb572db8c703eeab85e740d1b44342555ab5733e9884f979fb42929d0a21b79d4a180fe83e48e1abaf08ec41e9dc2c0d8b087dc1a9637df68a64b82dddfdfbc6ae31a3c077434c892c7e8425a0184eed3971fa77b0ec895399d7b683042ee981990d9dd2ce3c436be9b2ec93587fb25d1f17cbb771e0f0bf88b27c47af0fd5417f4d1977e3f5483f787a71f59820d1b29a9af9460c6ad8a713ee2a1bf4021e51ce9776aa4eddae3616a808174493b572218c957c15b06df5aef889dbfd5de3a1326ea2d47dbf68b5bd06201b36d6ca5dedb69a8be84c254bb", 16); + + @Copy("encryptRsa") + public void rs$encryptRsa(BigInteger var1, BigInteger var2) { } + + @Replace("encryptRsa") + public void rl$encryptRsa(BigInteger var1, BigInteger var2) { + rs$encryptRsa(modulus, exponent); + } +} From f131966b572fd15eaad5ef9627ede5e90e6f6767 Mon Sep 17 00:00:00 2001 From: Tyler Bochard Date: Mon, 17 Jun 2019 17:42:44 -0400 Subject: [PATCH 14/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aea4952d75..2f04ad4e70 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ -# RuneLitePlus-PS [![Build Status](https://travis-ci.org/runelite-extended/runelite.svg?branch=master)](https://travis-ci.org/runelite-extended/runelite) [![Discord](https://img.shields.io/discord/373382904769675265.svg)](https://discord.gg/HN5gf3m) +# RuneLitePlus-PS rev180 [![Build Status](https://travis-ci.org/runelite-extended/runelite.svg?branch=master)](https://travis-ci.org/runelite-extended/runelite) [![Discord](https://img.shields.io/discord/373382904769675265.svg)](https://discord.gg/HN5gf3m) [RuneLitePlus-PS](https://runelitepl.us) is a fork of [RuneLite](https://github.com/runelite/runelite) that provides more functionality and less restrictions while staying open source. This is specific version meant for rs-mod which can be found here: https://www.rune-server.ee/runescape-development/rs2-server/downloads/684206-180-rs-mod-release.html