diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 013ee79a05..f40bf4207a 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -2292,4 +2292,22 @@ public interface Client extends GameEngine */ @Nullable ClanSettings getGuestClanSettings(); + + /** + * Get clan channel by id. + * @param clanId the clan id + * @return + * @see net.runelite.api.clan.ClanID + */ + @Nullable + ClanChannel getClanChannel(int clanId); + + /** + * Get clan settings by id + * @param clanId the clan id + * @return + * @see net.runelite.api.clan.ClanID + */ + @Nullable + ClanSettings getClanSettings(int clanId); } diff --git a/runelite-api/src/main/java/net/runelite/api/GraphicID.java b/runelite-api/src/main/java/net/runelite/api/GraphicID.java index b65e16b8d1..0f4cadc42c 100644 --- a/runelite-api/src/main/java/net/runelite/api/GraphicID.java +++ b/runelite-api/src/main/java/net/runelite/api/GraphicID.java @@ -25,7 +25,7 @@ */ package net.runelite.api; -public class GraphicID +public final class GraphicID { public static final int WINE_MAKE = 47; public static final int SPLASH = 85; diff --git a/runelite-api/src/main/java/net/runelite/api/ParamID.java b/runelite-api/src/main/java/net/runelite/api/ParamID.java index 9be05d76ef..50d2bdf71f 100644 --- a/runelite-api/src/main/java/net/runelite/api/ParamID.java +++ b/runelite-api/src/main/java/net/runelite/api/ParamID.java @@ -27,7 +27,7 @@ package net.runelite.api; /** * @see ParamHolder */ -public class ParamID +public final class ParamID { /** * @see SettingID diff --git a/runelite-api/src/main/java/net/runelite/api/ProjectileID.java b/runelite-api/src/main/java/net/runelite/api/ProjectileID.java index a507b06925..ef1ddb2843 100644 --- a/runelite-api/src/main/java/net/runelite/api/ProjectileID.java +++ b/runelite-api/src/main/java/net/runelite/api/ProjectileID.java @@ -29,7 +29,7 @@ package net.runelite.api; *

* Note: This class is not complete and may be missing mapped IDs. */ -public class ProjectileID +public final class ProjectileID { public static final int CANNONBALL = 53; public static final int GRANITE_CANNONBALL = 1443; diff --git a/runelite-api/src/main/java/net/runelite/api/SettingID.java b/runelite-api/src/main/java/net/runelite/api/SettingID.java index 2d471d16f2..bac3bd9be4 100644 --- a/runelite-api/src/main/java/net/runelite/api/SettingID.java +++ b/runelite-api/src/main/java/net/runelite/api/SettingID.java @@ -27,7 +27,7 @@ package net.runelite.api; /** * @see ParamID#SETTING_ID */ -public class SettingID +public final class SettingID { public static final int CAMERA_ZOOM = 14; diff --git a/runelite-api/src/main/java/net/runelite/api/SpriteID.java b/runelite-api/src/main/java/net/runelite/api/SpriteID.java index ae97b2a834..6748c0263d 100644 --- a/runelite-api/src/main/java/net/runelite/api/SpriteID.java +++ b/runelite-api/src/main/java/net/runelite/api/SpriteID.java @@ -1209,17 +1209,52 @@ public final class SpriteID public static final int KOUREND_FAVOUR_LOVAKENGJ_ICON = 1244; public static final int KOUREND_FAVOUR_PISCARILIUS_ICON = 1245; public static final int KOUREND_FAVOUR_SHAYZIEN_ICON = 1246; - /* Unmapped: 1247~1296 */ + public static final int SPELL_BASIC_REANIMATION = 1247; + public static final int SPELL_ADEPT_REANIMATION = 1248; + public static final int SPELL_EXPERT_REANIMATION = 1249; + public static final int SPELL_MASTER_REANIMATION = 1250; + /* Unmapped: 1251 */ + public static final int SPELL_ARCEUUS_LIBRARY_TELEPORT = 1252; + public static final int SPELL_DRAYNOR_MANOR_TELEPORT = 1253; + public static final int SPELL_SALVE_GRAVEYARD_TELEPORT = 1254; + /* Unmapped: 1255 */ + public static final int SPELL_MIND_ALTAR_TELEPORT = 1256; + public static final int SPELL_RESPAWN_TELEPORT = 1257; + /* Unmapped 1258 */ + public static final int SPELL_FENKENSTRAINS_CASTLE_TELEPORT = 1259; + public static final int SPELL_WEST_ARDOUGNE_TELEPORT = 1260; + public static final int SPELL_HARMONY_ISLAND_TELEPORT = 1261; + public static final int SPELL_BARROWS_TELEPORT = 1262; + public static final int SPELL_APE_ATOLL_TELEPORT = 1263; + public static final int SPELL_CEMETERY_TELEPORT = 1264; + /* Unmapped: 1265 */ + public static final int SPELL_RESURRECT_CROPS = 1266; + public static final int SPELL_GHOSTLY_GRASP = 1267; + public static final int SPELL_SKELETAL_GRASP = 1268; + public static final int SPELL_UNDEAD_GRASP = 1269; + public static final int SPELL_RESURRECT_LESSER_GHOST = 1270; + /* Unmapped: 1271~1296 */ public static final int QUESTS_PAGE_ICON_PURPLE_KOUREND = 1297; public static final int UNUSED_TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1298; public static final int TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1299; - /* Unmapped: 1300~1305 */ + /* Unmapped: 1300~1301 */ + public static final int SPELL_INFERIOR_DEMONBANE = 1302; + public static final int SPELL_SUPERIOR_DEMONBANE = 1303; + public static final int SPELL_DARK_DEMONBANE = 1304; + public static final int SPELL_MARK_OF_DARKNESS = 1305; public static final int SPELL_WARD_OF_ARCEUUS = 1306; - /* Unmapped: 1307~1309 */ + public static final int SPELL_LESSER_CORRUPTION = 1307; + public static final int SPELL_GREATER_CORRUPTION = 1308; + /* Unmapped: 1309 */ public static final int SPELL_DEATH_CHARGE = 1310; - /* Unmapped: 1311~1314 */ + public static final int SPELL_DEMONIC_OFFERING = 1311; + public static final int SPELL_SINISTER_OFFERING = 1312; + /* Unmapped: 1313~1314 */ public static final int SPELL_SHADOW_VEIL = 1315; - /* Unmapped: 1316~1324 */ + public static final int SPELL_DARK_LURE = 1316; + public static final int SPELL_VILE_VIGOUR = 1317; + public static final int SPELL_DEGRIME = 1318; + /* Unmapped: 1319~1324 */ public static final int SPELL_WARD_OF_ARCEUUS_DISABLED = 1325; /* Unmapped: 1326 */ public static final int SPELL_GREATER_CORRUPTION_DISABLED = 1327; @@ -1620,6 +1655,8 @@ public final class SpriteID public static final int HEALTHBAR_YELLOW_BACK_70PX = 2978; /* Unmapped: 2979, 2980 */ public static final int SPELL_RESURRECT_SUPERIOR_SKELETON = 2981; - /* Unmapped: 2982~2986 */ + /* Unmapped: 2982~2983 */ + public static final int SPELL_RESURRECT_GREATER_ZOMBIE = 2984; + /* Unmapped: 2985~2986 */ public static final int SPELL_RESURRECT_SUPERIOR_SKELETON_DISABLED = 2987; } diff --git a/runelite-api/src/main/java/net/runelite/api/StructID.java b/runelite-api/src/main/java/net/runelite/api/StructID.java index e1dab81026..54b61c4b02 100644 --- a/runelite-api/src/main/java/net/runelite/api/StructID.java +++ b/runelite-api/src/main/java/net/runelite/api/StructID.java @@ -29,7 +29,7 @@ package net.runelite.api; * @see StructComposition * @see Client#getStructComposition(int) */ -public class StructID +public final class StructID { public static final int SETTINGS_MUSIC_VOLUME = 2753; public static final int SETTINGS_EFFECT_VOLUME = 2754; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillData.java b/runelite-api/src/main/java/net/runelite/api/clan/ClanID.java similarity index 83% rename from runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillData.java rename to runelite-api/src/main/java/net/runelite/api/clan/ClanID.java index 4c2d36aa68..5b0c59b37a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillData.java +++ b/runelite-api/src/main/java/net/runelite/api/clan/ClanID.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Kruithne + * Copyright (c) 2021, Adam * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,13 +22,16 @@ * (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.skillcalculator.beans; +package net.runelite.api.clan; -import lombok.Getter; - -@Getter -public class SkillData +public final class ClanID { - private SkillDataEntry[] actions; - private SkillDataBonus[] bonuses; -} \ No newline at end of file + /** + * The primary clan. + */ + public static final int CLAN = 0; + /** + * The group ironman clan. + */ + public static final int GROUP_IRONMAN = 1; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java index a39953492c..ef608a2be5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java @@ -27,12 +27,29 @@ package net.runelite.client.plugins.achievementdiary; import lombok.Getter; import lombok.RequiredArgsConstructor; import net.runelite.api.Client; -import net.runelite.api.Favour; +import net.runelite.api.Varbits; @RequiredArgsConstructor @Getter public class FavourRequirement implements Requirement { + /** + * An enumeration of Kourend house favour the player can earn. + */ + @RequiredArgsConstructor + @Getter + public enum Favour + { + ARCEUUS("Arceuus", Varbits.KOUREND_FAVOR_ARCEUUS), + HOSIDIUS("Hosidius", Varbits.KOUREND_FAVOR_HOSIDIUS), + LOVAKENGJ("Lovakengj", Varbits.KOUREND_FAVOR_LOVAKENGJ), + PISCARILIUS("Piscarilius", Varbits.KOUREND_FAVOR_PISCARILIUS), + SHAYZIEN("Shayzien", Varbits.KOUREND_FAVOR_SHAYZIEN); + + private final String name; + private final Varbits varbit; + } + private final Favour house; private final int percent; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/KourendDiaryRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/KourendDiaryRequirement.java index 2cde458c8e..6a44468381 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/KourendDiaryRequirement.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/diaries/KourendDiaryRequirement.java @@ -24,13 +24,12 @@ */ package net.runelite.client.plugins.achievementdiary.diaries; -import net.runelite.api.Favour; import net.runelite.api.Quest; import net.runelite.api.Skill; -import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement; -import net.runelite.client.plugins.achievementdiary.SkillRequirement; -import net.runelite.client.plugins.achievementdiary.QuestRequirement; import net.runelite.client.plugins.achievementdiary.FavourRequirement; +import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement; +import net.runelite.client.plugins.achievementdiary.QuestRequirement; +import net.runelite.client.plugins.achievementdiary.SkillRequirement; public class KourendDiaryRequirement extends GenericDiaryRequirement { @@ -41,7 +40,7 @@ public class KourendDiaryRequirement extends GenericDiaryRequirement new SkillRequirement(Skill.MINING, 15)); add("Steal from a Hosidius Food Stall.", new SkillRequirement(Skill.THIEVING, 25), - new FavourRequirement(Favour.HOSIDIUS, 15)); + new FavourRequirement(FavourRequirement.Favour.HOSIDIUS, 15)); add("Browse the Warrens General Store.", new QuestRequirement(Quest.THE_QUEEN_OF_THIEVES, true)); add("Enter your Player Owned House from Hosidius.", @@ -65,11 +64,11 @@ public class KourendDiaryRequirement extends GenericDiaryRequirement add("Enter the Farming Guild.", new SkillRequirement(Skill.FARMING, 45)); add("Switch to the Necromancy Spellbook at Tyss.", - new FavourRequirement(Favour.ARCEUUS, 60)); + new FavourRequirement(FavourRequirement.Favour.ARCEUUS, 60)); add("Repair a Piscarilius crane.", new SkillRequirement(Skill.CRAFTING, 30)); add("Deliver some intelligence to Captain Ginea.", - new FavourRequirement(Favour.SHAYZIEN, 40)); + new FavourRequirement(FavourRequirement.Favour.SHAYZIEN, 40)); add("Catch a Bluegill on Molch Island.", new SkillRequirement(Skill.FISHING, 43), new SkillRequirement(Skill.HUNTER, 35)); @@ -86,23 +85,23 @@ public class KourendDiaryRequirement extends GenericDiaryRequirement //HARD add("Enter the Woodcutting Guild.", new SkillRequirement(Skill.WOODCUTTING, 60), - new FavourRequirement(Favour.HOSIDIUS, 75)); + new FavourRequirement(FavourRequirement.Favour.HOSIDIUS, 75)); add("Smelt an Adamantite bar in The Forsaken Tower.", new SkillRequirement(Skill.SMITHING, 70), new QuestRequirement(Quest.THE_FORSAKEN_TOWER, true)); add("Kill a Lizardman Shaman in Molch.", - new FavourRequirement(Favour.SHAYZIEN, 100)); + new FavourRequirement(FavourRequirement.Favour.SHAYZIEN, 100)); add("Mine some Lovakite.", new SkillRequirement(Skill.MINING, 65), - new FavourRequirement(Favour.LOVAKENGJ, 30)); + new FavourRequirement(FavourRequirement.Favour.LOVAKENGJ, 30)); add("Plant some Logavano seeds at the Tithe Farm.", new SkillRequirement(Skill.FARMING, 74), - new FavourRequirement(Favour.HOSIDIUS, 100)); + new FavourRequirement(FavourRequirement.Favour.HOSIDIUS, 100)); add("Teleport to Xeric's Heart using Xeric's Talisman.", new QuestRequirement(Quest.ARCHITECTURAL_ALLIANCE)); add("Deliver an artefact to Captain Khaled.", new SkillRequirement(Skill.THIEVING, 49), - new FavourRequirement(Favour.PISCARILIUS, 75)); + new FavourRequirement(FavourRequirement.Favour.PISCARILIUS, 75)); add("Kill a Wyrm in the Karuulm Slayer Dungeon.", new SkillRequirement(Skill.SLAYER, 62)); add("Cast Monster Examine on a Troll south of Mount Quidamortem.", @@ -114,21 +113,21 @@ public class KourendDiaryRequirement extends GenericDiaryRequirement new SkillRequirement(Skill.RUNECRAFT, 77), new SkillRequirement(Skill.MINING, 38), new SkillRequirement(Skill.CRAFTING, 38), - new FavourRequirement(Favour.ARCEUUS, 100)); + new FavourRequirement(FavourRequirement.Favour.ARCEUUS, 100)); add("Chop some Redwood logs.", new SkillRequirement(Skill.WOODCUTTING, 90), - new FavourRequirement(Favour.HOSIDIUS, 75)); + new FavourRequirement(FavourRequirement.Favour.HOSIDIUS, 75)); add("Catch an Anglerfish and cook it whilst in Great Kourend.", new SkillRequirement(Skill.FISHING, 82), new SkillRequirement(Skill.COOKING, 84), - new FavourRequirement(Favour.PISCARILIUS, 100)); + new FavourRequirement(FavourRequirement.Favour.PISCARILIUS, 100)); add("Kill a Hydra in the Karuulm Slayer Dungeon.", new SkillRequirement(Skill.SLAYER, 95)); add("Create an Ape Atoll teleport tablet.", new SkillRequirement(Skill.MAGIC, 90), new SkillRequirement(Skill.MINING, 38), new SkillRequirement(Skill.CRAFTING, 38), - new FavourRequirement(Favour.ARCEUUS, 100)); + new FavourRequirement(FavourRequirement.Favour.ARCEUUS, 100)); add("Create your own Battlestaff from scratch within the Farming Guild.", new SkillRequirement(Skill.FARMING, 85), new SkillRequirement(Skill.FLETCHING, 40)); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java index 9168c8f150..ee1e8e2fa5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java @@ -2008,6 +2008,7 @@ public class ChatCommandsPlugin extends Plugin case "cgaunt": case "cgauntlet": case "the corrupted gauntlet": + case "cg": return "Corrupted Gauntlet"; // The Nightmare diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java index b8a533e7c9..536527b205 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java @@ -328,6 +328,24 @@ public class GpuPlugin extends Plugin implements DrawCallbacks invokeOnMainThread(() -> { + try + { + // Get and display the device and driver used by the GPU plugin + GLDrawable dummyDrawable = GLDrawableFactory.getFactory(GLProfile.getDefault()) + .createDummyDrawable(GLProfile.getDefaultDevice(), true, new GLCapabilities(GLProfile.getDefault()), null); + dummyDrawable.setRealized(true); + GLContext versionContext = dummyDrawable.createContext(null); + versionContext.makeCurrent(); + GL versionGL = versionContext.getGL(); + log.info("Using device: {}", versionGL.glGetString(GL.GL_RENDERER)); + log.info("Using driver: {}", versionGL.glGetString(GL.GL_VERSION)); + versionContext.destroy(); + } + catch (Exception ex) + { + log.warn("error checking device and driver version", ex); + } + GLProfile glProfile = GLProfile.get(GLProfile.GL4); GLCapabilities glCaps = new GLCapabilities(glProfile); 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 f1951c162e..04f16275cc 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 @@ -591,18 +591,21 @@ public class MenuEntrySwapperPlugin extends Plugin // widget ticking and prior to our client tick event. This is because drag start // is what builds the context menu row which is what the eventual click will use + final int widgetGroupId = WidgetInfo.TO_GROUP(menuEntryAdded.getActionParam1()); + + final boolean isDepositBoxPlayerInventory = widgetGroupId == WidgetID.DEPOSIT_BOX_GROUP_ID; + final boolean isChambersOfXericStorageUnitPlayerInventory = widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_INVENTORY_GROUP_ID; // Swap to shift-click deposit behavior // Deposit- op 1 is the current withdraw amount 1/5/10/x for deposit box interface and chambers of xeric storage unit. // Deposit- op 2 is the current withdraw amount 1/5/10/x for bank interface if (shiftModifier() && config.bankDepositShiftClick() != ShiftDepositMode.OFF && menuEntryAdded.getType() == MenuAction.CC_OP.getId() - && (menuEntryAdded.getIdentifier() == 2 || menuEntryAdded.getIdentifier() == 1) + && menuEntryAdded.getIdentifier() == (isDepositBoxPlayerInventory || isChambersOfXericStorageUnitPlayerInventory ? 1 : 2) && (menuEntryAdded.getOption().startsWith("Deposit-") || menuEntryAdded.getOption().startsWith("Store") || menuEntryAdded.getOption().startsWith("Donate"))) { ShiftDepositMode shiftDepositMode = config.bankDepositShiftClick(); - final int widgetGroupId = WidgetInfo.TO_GROUP(menuEntryAdded.getParam1()); - final int opId = widgetGroupId == WidgetID.DEPOSIT_BOX_GROUP_ID ? shiftDepositMode.getIdentifierDepositBox() - : widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_INVENTORY_GROUP_ID ? shiftDepositMode.getIdentifierChambersStorageUnit() + final int opId = isDepositBoxPlayerInventory ? shiftDepositMode.getIdentifierDepositBox() + : isChambersOfXericStorageUnitPlayerInventory ? shiftDepositMode.getIdentifierChambersStorageUnit() : shiftDepositMode.getIdentifier(); final int actionId = opId >= 6 ? MenuAction.CC_OP_LOW_PRIORITY.getId() : MenuAction.CC_OP.getId(); bankModeSwap(actionId, opId); @@ -615,7 +618,6 @@ public class MenuEntrySwapperPlugin extends Plugin && menuEntryAdded.getOption().startsWith("Withdraw")) { ShiftWithdrawMode shiftWithdrawMode = config.bankWithdrawShiftClick(); - final int widgetGroupId = WidgetInfo.TO_GROUP(menuEntryAdded.getParam1()); final int actionId, opId; if (widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_PRIVATE_GROUP_ID || widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_SHARED_GROUP_ID) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java index add9d4afe8..6c7deb9149 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/ShiftDepositMode.java @@ -36,7 +36,7 @@ public enum ShiftDepositMode DEPOSIT_10("Deposit-10", 5, 4, 3), DEPOSIT_X("Deposit-X", 6, 6, 5), DEPOSIT_ALL("Deposit-All", 8, 5, 4), - EXTRA_OP("Eat/Wield/Etc.", 9, 0, 0), + EXTRA_OP("Eat/Wield/Etc.", 9, 9, 0), OFF("Off", 0, 0, 0); private final String name; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java index e102988f50..8c27d8a509 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CalculatorType.java @@ -24,32 +24,36 @@ */ package net.runelite.client.plugins.skillcalculator; +import javax.annotation.Nullable; import lombok.AllArgsConstructor; import lombok.Getter; import net.runelite.api.Skill; +import net.runelite.client.plugins.skillcalculator.skills.*; @AllArgsConstructor @Getter enum CalculatorType { - MINING(Skill.MINING, "skill_mining.json"), - AGILITY(Skill.AGILITY, "skill_agility.json"), - SMITHING(Skill.SMITHING, "skill_smithing.json"), - HERBLORE(Skill.HERBLORE, "skill_herblore.json"), - FISHING(Skill.FISHING, "skill_fishing.json"), - THIEVING(Skill.THIEVING, "skill_thieving.json"), - COOKING(Skill.COOKING, "skill_cooking.json"), - PRAYER(Skill.PRAYER, "skill_prayer.json"), - CRAFTING(Skill.CRAFTING, "skill_crafting.json"), - FIREMAKING(Skill.FIREMAKING, "skill_firemaking.json"), - MAGIC(Skill.MAGIC, "skill_magic.json"), - FLETCHING(Skill.FLETCHING, "skill_fletching.json"), - WOODCUTTING(Skill.WOODCUTTING, "skill_woodcutting.json"), - RUNECRAFT(Skill.RUNECRAFT, "skill_runecraft.json"), - FARMING(Skill.FARMING, "skill_farming.json"), - CONSTRUCTION(Skill.CONSTRUCTION, "skill_construction.json"), - HUNTER(Skill.HUNTER, "skill_hunter.json"); + MINING(Skill.MINING, MiningBonus.values(), MiningAction.values()), + AGILITY(Skill.AGILITY, null, AgilityAction.values()), + SMITHING(Skill.SMITHING, null, SmithingAction.values()), + HERBLORE(Skill.HERBLORE, null, HerbloreAction.values()), + FISHING(Skill.FISHING, FishingBonus.values(), FishingAction.values()), + THIEVING(Skill.THIEVING, null, ThievingAction.values()), + COOKING(Skill.COOKING, null, CookingAction.values()), + PRAYER(Skill.PRAYER, PrayerBonus.values(), PrayerAction.values()), + CRAFTING(Skill.CRAFTING, null, CraftingAction.values()), + FIREMAKING(Skill.FIREMAKING, FiremakingBonus.values(), FiremakingAction.values()), + MAGIC(Skill.MAGIC, null, MagicAction.values()), + FLETCHING(Skill.FLETCHING, null, FletchingAction.values()), + WOODCUTTING(Skill.WOODCUTTING, WoodcuttingBonus.values(), WoodcuttingAction.values()), + RUNECRAFT(Skill.RUNECRAFT, RunecraftBonus.values(), RunecraftAction.values()), + FARMING(Skill.FARMING, FarmingBonus.values(), FarmingAction.values()), + CONSTRUCTION(Skill.CONSTRUCTION, ConstructionBonus.values(), ConstructionAction.values()), + HUNTER(Skill.HUNTER, null, HunterAction.values()); private final Skill skill; - private final String dataFile; -} \ No newline at end of file + @Nullable + private final SkillBonus[] skillBonuses; + private final SkillAction[] skillActions; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java index bd688d3788..8d9581adde 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2018, Kruithne * Copyright (c) 2018, Psikoi * All rights reserved. @@ -48,11 +48,11 @@ import net.runelite.api.Client; import net.runelite.api.Experience; import net.runelite.api.Skill; import net.runelite.api.VarPlayer; +import net.runelite.client.callback.ClientThread; import net.runelite.client.game.ItemManager; import net.runelite.client.game.SpriteManager; -import net.runelite.client.plugins.skillcalculator.beans.SkillData; -import net.runelite.client.plugins.skillcalculator.beans.SkillDataBonus; -import net.runelite.client.plugins.skillcalculator.beans.SkillDataEntry; +import net.runelite.client.plugins.skillcalculator.skills.SkillAction; +import net.runelite.client.plugins.skillcalculator.skills.SkillBonus; import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.DynamicGridLayout; import net.runelite.client.ui.FontManager; @@ -66,26 +66,26 @@ class SkillCalculator extends JPanel private final UICalculatorInputArea uiInput; private final Client client; + private final ClientThread clientThread; private final SpriteManager spriteManager; private final ItemManager itemManager; private final List uiActionSlots = new ArrayList<>(); - private final CacheSkillData cacheSkillData = new CacheSkillData(); private final UICombinedActionSlot combinedActionSlot; private final ArrayList combinedActionSlots = new ArrayList<>(); private final List bonusCheckBoxes = new ArrayList<>(); private final IconTextField searchBar = new IconTextField(); - private SkillData skillData; - private Skill currentSkill; + private CalculatorType currentCalculator; private int currentLevel = 1; private int currentXP = Experience.getXpForLevel(currentLevel); private int targetLevel = currentLevel + 1; private int targetXP = Experience.getXpForLevel(targetLevel); - private float xpFactor = 1.0f; + private float xpFactor = 1; - SkillCalculator(Client client, UICalculatorInputArea uiInput, SpriteManager spriteManager, ItemManager itemManager) + SkillCalculator(Client client, ClientThread clientThread, UICalculatorInputArea uiInput, SpriteManager spriteManager, ItemManager itemManager) { this.client = client; + this.clientThread = clientThread; this.uiInput = uiInput; this.spriteManager = spriteManager; this.itemManager = itemManager; @@ -137,15 +137,12 @@ class SkillCalculator extends JPanel currentXP = client.getSkillExperience(calculatorType.getSkill()); currentLevel = Experience.getLevelForXp(currentXP); - if (currentSkill != calculatorType.getSkill()) + if (currentCalculator != calculatorType) { - currentSkill = calculatorType.getSkill(); - - // Load the skill data. - skillData = cacheSkillData.getSkillData(calculatorType.getDataFile()); + currentCalculator = calculatorType; // Reset the XP factor, removing bonuses. - xpFactor = 1.0f; + xpFactor = 1; VarPlayer endGoalVarp = endGoalVarpForSkill(calculatorType.getSkill()); int endGoal = client.getVar(endGoalVarp); @@ -234,19 +231,22 @@ class SkillCalculator extends JPanel private void renderBonusOptions() { - if (skillData.getBonuses() != null) + final SkillBonus[] skillBonuses = currentCalculator.getSkillBonuses(); + if (skillBonuses == null) { - for (SkillDataBonus bonus : skillData.getBonuses()) - { - JPanel checkboxPanel = buildCheckboxPanel(bonus); + return; + } - add(checkboxPanel); - add(Box.createRigidArea(new Dimension(0, 5))); - } + for (SkillBonus bonus : skillBonuses) + { + JPanel checkboxPanel = buildCheckboxPanel(bonus); + + add(checkboxPanel); + add(Box.createRigidArea(new Dimension(0, 5))); } } - private JPanel buildCheckboxPanel(SkillDataBonus bonus) + private JPanel buildCheckboxPanel(SkillBonus bonus) { JPanel uiOption = new JPanel(new BorderLayout()); JLabel uiLabel = new JLabel(bonus.getName()); @@ -270,7 +270,7 @@ class SkillCalculator extends JPanel return uiOption; } - private void adjustCheckboxes(JCheckBox target, SkillDataBonus bonus) + private void adjustCheckboxes(JCheckBox target, SkillBonus bonus) { adjustXPBonus(0); bonusCheckBoxes.forEach(otherSelectedCheckbox -> @@ -293,20 +293,20 @@ class SkillCalculator extends JPanel uiActionSlots.clear(); // Create new components for the action slots. - for (SkillDataEntry action : skillData.getActions()) + for (SkillAction action : currentCalculator.getSkillActions()) { JLabel uiIcon = new JLabel(); - if (action.getIcon() != null) + if (action.getIcon() != -1) { itemManager.getImage(action.getIcon()).addTo(uiIcon); } - else if (action.getSprite() != null) + else if (action.getSprite() != -1) { spriteManager.addSpriteTo(uiIcon, action.getSprite(), 0); } - UIActionSlot slot = new UIActionSlot(action, uiIcon); + UIActionSlot slot = new UIActionSlot(action, clientThread, itemManager, uiIcon); uiActionSlots.add(slot); // Keep our own reference. add(slot); // Add component to the panel. @@ -346,7 +346,7 @@ class SkillCalculator extends JPanel { int actionCount = 0; int neededXP = targetXP - currentXP; - SkillDataEntry action = slot.getAction(); + SkillAction action = slot.getAction(); double xp = (action.isIgnoreBonus()) ? action.getXp() : action.getXp() * xpFactor; if (neededXP > 0) @@ -363,9 +363,9 @@ class SkillCalculator extends JPanel updateCombinedAction(); } - private String formatXPActionString(double xp, int actionCount, String expExpression) + private static String formatXPActionString(double xp, int actionCount, String expExpression) { - return XP_FORMAT.format(xp) + expExpression + NumberFormat.getIntegerInstance().format(actionCount) + (actionCount > 1 ? " actions" : " action"); + return XP_FORMAT.format(xp) + expExpression + NumberFormat.getIntegerInstance().format(actionCount) + (actionCount == 1 ? " action" : " actions"); } private void updateInputFields() @@ -389,7 +389,7 @@ class SkillCalculator extends JPanel private void adjustXPBonus(float value) { - xpFactor = 1f + value; + xpFactor = 1 + value; calculate(); } @@ -449,12 +449,12 @@ class SkillCalculator extends JPanel }); } - private boolean slotContainsText(UIActionSlot slot, String text) + private static boolean slotContainsText(UIActionSlot slot, String text) { - return slot.getAction().getName().toLowerCase().contains(text.toLowerCase()); + return slot.getActionName().toLowerCase().contains(text.toLowerCase()); } - private FocusAdapter buildFocusAdapter(Consumer focusLostConsumer) + private static FocusAdapter buildFocusAdapter(Consumer focusLostConsumer) { return new FocusAdapter() { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPanel.java index b6abe4577f..82d4f59648 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPanel.java @@ -23,7 +23,6 @@ * (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.skillcalculator; import java.awt.GridBagConstraints; @@ -33,6 +32,7 @@ import javax.swing.ImageIcon; import javax.swing.JScrollPane; import javax.swing.border.EmptyBorder; import net.runelite.api.Client; +import net.runelite.client.callback.ClientThread; import net.runelite.client.game.ItemManager; import net.runelite.client.game.SkillIconManager; import net.runelite.client.game.SpriteManager; @@ -47,7 +47,7 @@ class SkillCalculatorPanel extends PluginPanel private final SkillIconManager iconManager; private final MaterialTabGroup tabGroup; - SkillCalculatorPanel(SkillIconManager iconManager, Client client, SpriteManager spriteManager, ItemManager itemManager) + SkillCalculatorPanel(SkillIconManager iconManager, Client client, ClientThread clientThread, SpriteManager spriteManager, ItemManager itemManager) { super(); getScrollPane().setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); @@ -71,7 +71,7 @@ class SkillCalculatorPanel extends PluginPanel final UICalculatorInputArea uiInput = new UICalculatorInputArea(); uiInput.setBorder(new EmptyBorder(15, 0, 15, 0)); uiInput.setBackground(ColorScheme.DARK_GRAY_COLOR); - uiCalculator = new SkillCalculator(client, uiInput, spriteManager, itemManager); + uiCalculator = new SkillCalculator(client, clientThread, uiInput, spriteManager, itemManager); add(tabGroup, c); c.gridy++; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java index 8999d2ad00..1aab06820f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java @@ -22,12 +22,12 @@ * (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.skillcalculator; import java.awt.image.BufferedImage; import javax.inject.Inject; import net.runelite.api.Client; +import net.runelite.client.callback.ClientThread; import net.runelite.client.game.ItemManager; import net.runelite.client.game.SkillIconManager; import net.runelite.client.game.SpriteManager; @@ -47,6 +47,9 @@ public class SkillCalculatorPlugin extends Plugin @Inject private Client client; + @Inject + private ClientThread clientThread; + @Inject private SkillIconManager skillIconManager; @@ -65,7 +68,7 @@ public class SkillCalculatorPlugin extends Plugin protected void startUp() throws Exception { final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "calc.png"); - final SkillCalculatorPanel uiPanel = new SkillCalculatorPanel(skillIconManager, client, spriteManager, itemManager); + final SkillCalculatorPanel uiPanel = new SkillCalculatorPanel(skillIconManager, client, clientThread, spriteManager, itemManager); uiNavigationButton = NavigationButton.builder() .tooltip("Skill Calculator") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UIActionSlot.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UIActionSlot.java index 2051a0ddcd..aa2fd23937 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UIActionSlot.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UIActionSlot.java @@ -23,7 +23,6 @@ * (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.skillcalculator; import java.awt.BorderLayout; @@ -36,13 +35,16 @@ import java.awt.event.MouseListener; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.SwingUtilities; import javax.swing.border.Border; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; -import net.runelite.client.plugins.skillcalculator.beans.SkillDataEntry; +import net.runelite.client.callback.ClientThread; +import net.runelite.client.game.ItemManager; +import net.runelite.client.plugins.skillcalculator.skills.SkillAction; import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.components.shadowlabel.JShadowedLabel; @@ -64,9 +66,12 @@ class UIActionSlot extends JPanel private static final Dimension ICON_SIZE = new Dimension(32, 32); @Getter(AccessLevel.PACKAGE) - private final SkillDataEntry action; - private final JShadowedLabel uiLabelActions; + private final SkillAction action; + @Getter(AccessLevel.PACKAGE) + private String actionName; + + private final JShadowedLabel uiLabelActions; private final JPanel uiInfo; @Getter(AccessLevel.PACKAGE) @@ -80,9 +85,9 @@ class UIActionSlot extends JPanel @Getter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE) - private double value = 0; + private double value; - UIActionSlot(SkillDataEntry action, JLabel uiIcon) + UIActionSlot(SkillAction action, ClientThread clientThread, ItemManager itemManager, JLabel uiIcon) { this.action = action; @@ -121,7 +126,12 @@ class UIActionSlot extends JPanel uiInfo.setBackground(ColorScheme.DARKER_GRAY_COLOR); uiInfo.setBorder(new EmptyBorder(0, 5, 0, 0)); - JShadowedLabel uiLabelName = new JShadowedLabel(action.getName()); + JShadowedLabel uiLabelName = new JShadowedLabel(); + clientThread.invokeLater(() -> + { + actionName = action.getName(itemManager); + SwingUtilities.invokeLater(() -> uiLabelName.setText(actionName)); + }); uiLabelName.setForeground(Color.WHITE); uiLabelActions = new JShadowedLabel("Unknown"); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UICombinedActionSlot.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UICombinedActionSlot.java index fa1614c91b..46aea10dff 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UICombinedActionSlot.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/UICombinedActionSlot.java @@ -23,7 +23,6 @@ * (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.skillcalculator; import java.awt.BorderLayout; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/AgilityAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/AgilityAction.java new file mode 100644 index 0000000000..3edef73f70 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/AgilityAction.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum AgilityAction implements NamedSkillAction +{ + GNOME_STRONGHOLD_COURSE("Gnome Stronghold", 1, 86.5f, ItemID.SWAMP_TOAD), + SHAYZIEN_BASIC_COURSE("Shayzien Basic Course", 5, 133.2f, ItemID.SHAYZIEN_HELM_1), + DRAYNOR_VILLAGE_ROOFTOP("Draynor Village Rooftop", 10, 120, ItemID.MARK_OF_GRACE), + LEAPING_TROUT("Leaping trout", 15, 5, ItemID.LEAPING_TROUT), + AL_KHARID_ROOFTOP("Al Kharid Rooftop", 20, 180, ItemID.MARK_OF_GRACE), + VARROCK_ROOFTOP("Varrock Rooftop", 30, 238, ItemID.MARK_OF_GRACE), + PENGUIN_AGILITY_COURSE("Penguin Agility Course", 30, 540, ItemID.CLOCKWORK_SUIT), + LEAPING_SALMON("Leaping salmon", 30, 6, ItemID.LEAPING_SALMON), + BARBARIAN_OUTPOST("Barbarian Outpost", 35, 152.5f, ItemID.STEEL_BATTLEAXE), + CANIFIS_ROOFTOP("Canifis Rooftop", 40, 240, ItemID.MARK_OF_GRACE), + LEAPING_STURGEON("Leaping sturgeon", 45, 7, ItemID.LEAPING_STURGEON), + APE_ATOLL_COURSE("Ape Atoll", 48, 580, ItemID.GORILLA_GREEGREE), + SHAYZIEN_ADVANCED_COURSE("Shayzien Advanced Course", 48, 474.3f, ItemID.SHAYZIEN_HELM_5), + FALADOR_ROOFTOP("Falador Rooftop", 50, 440, ItemID.MARK_OF_GRACE), + WILDERNESS_AGILITY_COURSE("Wilderness Agility Course", 52, 571, ItemID.SKULL), + HALLOWED_SEPULCHRE_FLOOR_1("Hallowed Sepulchre Floor 1", 52, 575, ItemID.RING_OF_ENDURANCE), + SEERS_VILLAGE_ROOFTOP("Seers' Village Rooftop", 60, 570, ItemID.MARK_OF_GRACE), + WEREWOLF_AGILITY_COURSE("Werewolf Agility Course", 60, 730, ItemID.STICK), + HALLOWED_SEPULCHRE_FLOOR_2("Hallowed Sepulchre Floor 2", 62, 925, ItemID.RING_OF_ENDURANCE), + POLLNIVNEACH_ROOFTOP("Pollnivneach Rooftop", 70, 890, ItemID.MARK_OF_GRACE), + HALLOWED_SEPULCHRE_FLOOR_3("Hallowed Sepulchre Floor 3", 72, 1500, ItemID.RING_OF_ENDURANCE), + PRIFDDINAS_AGILITY_COURSE("Prifddinas Agility Course", 75, 1337, ItemID.CRYSTAL_SHARD), + RELLEKKA_ROOFTOP("Rellekka Rooftop", 80, 780, ItemID.MARK_OF_GRACE), + HALLOWED_SEPULCHRE_FLOOR_4("Hallowed Sepulchre Floor 4", 82, 2700, ItemID.RING_OF_ENDURANCE), + ARDOUGNE_ROOFTOP("Ardougne Rooftop", 90, 793, ItemID.MARK_OF_GRACE), + HALLOWED_SEPULCHRE_FLOOR_5("Hallowed Sepulchre Floor 5", 92, 6000, ItemID.RING_OF_ENDURANCE), + ; + + private final String name; + private final int level; + private final float xp; + private final int icon; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionAction.java new file mode 100644 index 0000000000..ed0e0c65b2 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionAction.java @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum ConstructionAction implements NamedSkillAction +{ + EXIT_PORTAL("Exit Portal", 1, 100, ItemID.EXIT_PORTAL), + PLANK("Plank", 1, 29, ItemID.PLANK), + OAK_PLANK("Oak Plank", 1, 60, ItemID.OAK_PLANK), + TEAK_PLANK("Teak Plank", 1, 90, ItemID.TEAK_PLANK), + MAHOGANY_PLANK("Mahogany Plank", 1, 140, ItemID.MAHOGANY_PLANK), + PLANT("Plant", 1, 31, ItemID.PLANT), + FERN_BIG_PLANT("Fern (big plant)", 1, 31, ItemID.FERN_8186), + SHORT_PLANT("Short Plant", 1, 31, ItemID.SHORT_PLANT), + DOCK_LEAF("Dock Leaf", 1, 31, ItemID.DOCK_LEAF), + CRUDE_WOODEN_CHAIR("Crude Wooden Chair", 1, 58, ItemID.CRUDE_WOODEN_CHAIR), + BROWN_RUG("Brown Rug", 2, 30, ItemID.BROWN_RUG), + TORN_CURTAINS("Torn Curtains", 2, 132, ItemID.TORN_CURTAINS), + CLAY_FIREPLACE("Clay Fireplace", 3, 30, ItemID.CLAY_FIREPLACE), + WOODEN_BOOKCASE("Wooden Bookcase", 4, 115, ItemID.WOODEN_BOOKCASE), + FIREPIT("Firepit", 5, 40, ItemID.FIREPIT), + CAT_BLANKET("Cat Blanket", 5, 15, ItemID.CAT_BLANKET), + DECORATIVE_ROCK("Decorative Rock", 5, 100, ItemID.DECORATIVE_ROCK), + TREE("Tree", 5, 31, ItemID.TREE), + SMALL_FERN("Small Fern", 6, 70, ItemID.SMALL_FERN), + THISTLE("Thistle", 6, 70, ItemID.THISTLE), + BUSH("Bush", 6, 70, ItemID.BUSH), + LARGE_LEAF_BUSH("Large Leaf Bush", 6, 70, ItemID.LARGELEAF_PLANT), + WOODEN_SHELVES_1("Wooden Shelves 1", 6, 87, ItemID.WOODEN_SHELVES_1), + PUMP_AND_DRAIN("Pump and Drain", 7, 100, ItemID.PUMP_AND_DRAIN), + BEER_BARREL("Beer Barrel", 7, 87, ItemID.BEER_BARREL), + WOODEN_CHAIR("Wooden Chair", 8, 87, ItemID.WOODEN_CHAIR), + WOODEN_LARDER("Wooden Larder", 9, 228, ItemID.WOODEN_LARDER), + WOOD_DINING_TABLE("Wood Dining Table", 10, 115, ItemID.WOOD_DINING_TABLE), + POND("Pond", 10, 100, ItemID.POND), + NICE_TREE("Nice Tree", 10, 44, ItemID.NICE_TREE), + WOODEN_BENCH("Wooden Bench", 10, 115, ItemID.WOODEN_BENCH), + FIREPIT_WITH_HOOK("Firepit with Hook", 11, 60, ItemID.FIREPIT_WITH_HOOK), + REEDS("Reeds", 12, 100, ItemID.REEDS), + FERN_SMALL_PLANT("Fern (small plant)", 12, 100, ItemID.FERN), + CIDER_BARREL("Cider Barrel", 12, 91, ItemID.CIDER_BARREL), + WOODEN_SHELVES_2("Wooden Shelves 2", 12, 147, ItemID.WOODEN_SHELVES_2), + WOOD_TABLE("Wood Table", 12, 87, ItemID.WOOD_DINING_TABLE), + HUGE_PLANT("Huge Plant", 12, 100, ItemID.HUGE_PLANT), + TALL_PLANT("Tall Plant", 12, 100, ItemID.TALL_PLANT), + RUG("Rug", 13, 60, ItemID.RUG), + ROCKING_CHAIR("Rocking Chair", 14, 87, ItemID.ROCKING_CHAIR), + IMP_STATUE("Imp Statue", 15, 150, ItemID.IMP_STATUE), + OAK_TREE("Oak Tree", 15, 70, ItemID.OAK_TREE), + OAK_DECORATION("Oak Decoration", 16, 120, ItemID.OAK_DECORATION), + FIREPIT_WITH_POT("Firepit with Pot", 17, 80, ItemID.FIREPIT_WITH_POT), + CURTAINS("Curtains", 18, 225, ItemID.CURTAINS), + ASGARNIAN_ALE("Asgarnian Ale", 18, 184, ItemID.ASGARNIAN_ALE), + CAT_BASKET("Cat Basket", 19, 58, ItemID.CAT_BASKET), + OAK_CHAIR("Oak Chair", 19, 120, ItemID.OAK_CHAIR), + WOODEN_BED("Wooden Bed", 20, 117, ItemID.WOODEN_BED), + SHOE_BOX("Shoe Box", 20, 58, ItemID.SHOE_BOX), + SHAVING_STAND("Shaving Stand", 21, 30, ItemID.SHAVING_STAND), + OAK_DINING_TABLE("Oak Dining Table", 22, 240, ItemID.OAK_DINING_TABLE), + OAK_BENCH("Oak Bench", 22, 240, ItemID.OAK_BENCH), + WOODEN_SHELVES_3("Wooden Shelves 3", 23, 147, ItemID.WOODEN_SHELVES_3), + SMALL_OVEN("Small Oven", 24, 80, ItemID.SMALL_OVEN), + OAK_CLOCK("Oak Clock", 25, 142, ItemID.OAK_CLOCK), + GREENMANS_ALE("Greenman's Ale", 26, 184, ItemID.GREENMANS_ALE), + OAK_ARMCHAIR("Oak Armchair", 26, 180, ItemID.OAK_ARMCHAIR), + ROPE_BELL_PULL("Rope Bell-Pull", 26, 64, ItemID.ROPE_BELLPULL), + PUMP_AND_TUB("Pump and Tub", 27, 200, ItemID.PUMP_AND_TUB), + OAK_DRAWERS("Oak Drawers", 27, 120, ItemID.OAK_DRAWERS), + OAK_BOOKCASE("Oak Bookcase", 29, 180, ItemID.OAK_BOOKCASE), + LARGE_OVEN("Large Oven", 29, 100, ItemID.LARGE_OVEN), + OAK_SHAVING_STAND("Oak Shaving Stand", 29, 61, ItemID.OAK_SHAVING_STAND), + WILLOW_TREE("Willow Tree", 30, 100, ItemID.WILLOW_TREE), + OAK_BED("Oak Bed", 30, 210, ItemID.OAK_BED), + LONG_BONE("Long Bone", 30, 4500, ItemID.LONG_BONE), + CURVED_BONE("Curved Bone", 30, 6750, ItemID.CURVED_BONE), + CARVED_OAK_BENCH("Carved Oak Bench", 31, 240, ItemID.CARVED_OAK_BENCH), + CARVED_OAK_TABLE("Carved Oak Table", 31, 360, ItemID.CARVED_OAK_TABLE), + OAK_KITCHEN_TABLE("Oak Kitchen Table", 32, 180, ItemID.TEAK_TABLE), + BOXING_RING("Boxing Ring", 32, 420, ItemID.BOXING_RING), + OAK_LARDER("Oak Larder", 33, 480, ItemID.OAK_LARDER), + CUSHIONED_BASKET("Cushioned Basket", 33, 58, ItemID.CUSHIONED_BASKET), + STONE_FIREPLACE("Stone Fireplace", 33, 40, ItemID.STONE_FIREPLACE), + STEEL_RANGE("Steel Range", 34, 120, ItemID.STEEL_RANGE), + OAK_SHELVES_1("Oak Shelves 1", 34, 240, ItemID.OAK_SHELVES_1), + GLOVE_RACK("Glove Rack", 34, 120, ItemID.GLOVE_RACK), + LARGE_OAK_BED("Large Oak Bed", 34, 330, ItemID.LARGE_OAK_BED), + TEAK_ARMCHAIR("Teak Armchair", 35, 180, ItemID.TEAK_ARMCHAIR), + DRAGON_BITTER("Dragon Bitter", 36, 224, ItemID.DRAGON_BITTER), + TEAK_DECORATION("Teak Decoration", 36, 180, ItemID.TEAK_DECORATION), + BELL_PULL("Bell-Pull", 37, 120, ItemID.BELLPULL), + OAK_DRESSER("Oak Dresser", 37, 121, ItemID.OAK_DRESSER), + TEAK_BENCH("Teak Bench", 38, 360, ItemID.CARVED_TEAK_BENCH), + TEAK_TABLE("Teak Table", 38, 360, ItemID.TEAK_TABLE), + OAK_WARDROBE("Oak Wardrobe", 39, 180, ItemID.OAK_WARDROBE), + TEAK_BED("Teak Bed", 40, 300, ItemID.TEAK_BED), + MAHOGANY_BOOKCASE("Mahogany Bookcase", 40, 420, ItemID.MAHOGANY_BOOKCASE), + OAK_LECTERN("Oak Lectern", 40, 60, ItemID.OAK_LECTERN), + OPULENT_CURTAINS("Opulent Curtains", 40, 315, ItemID.OPULENT_CURTAINS), + FENCING_RING("Fencing Ring", 41, 570, ItemID.FENCING_RING), + GLOBE("Globe", 41, 180, ItemID.GLOBE), + FANCY_RANGE("Fancy Range", 42, 160, ItemID.FANCY_RANGE), + CRYSTAL_BALL("Crystal Ball", 42, 280, ItemID.CRYSTAL_BALL), + ALCHEMICAL_CHART("Alchemical Chart", 43, 30, ItemID.ALCHEMICAL_CHART), + TEAK_LARDER("Teak larder", 43, 750, ItemID.TEAK_LARDER), + WOODEN_TELESCOPE("Wooden Telescope", 44, 121, ItemID.OAK_TELESCOPE), + WEAPONS_RACK("Weapons Rack", 44, 180, ItemID.WEAPONS_RACK), + CARVED_TEAK_BENCH("Carved Teak Bench", 44, 360, ItemID.CARVED_TEAK_BENCH), + OAK_SHELVES_2("Oak Shelves 2", 45, 240, ItemID.OAK_SHELVES_2), + CARVED_TEAK_TABLE("Carved Teak Table", 45, 600, ItemID.CARVED_TEAK_TABLE), + LARGE_TEAK_BED("Large Teak Bed", 45, 480, ItemID.LARGE_TEAK_BED), + MAPLE_TREE("Maple Tree", 45, 122, ItemID.MAPLE_TREE), + TEAK_DRESSER("Teak Dresser", 46, 181, ItemID.TEAK_DRESSER), + SINK("Sink", 47, 300, ItemID.SINK), + EAGLE_LECTERN("Eagle Lectern", 47, 120, ItemID.EAGLE_LECTERN), + DEMON_LECTERN("Demon Lectern", 47, 120, ItemID.DEMON_LECTERN), + MOUNTED_MYTHICAL_CAPE("Mounted Mythical Cape", 47, 370, ItemID.MYTHICAL_CAPE), + CHEFS_DELIGHT("Chef's Delight", 48, 224, ItemID.CHEFS_DELIGHT), + TEAK_PORTAL("Teak Portal", 50, 270, ItemID.TEAK_PORTAL), + MAHOGANY_ARMCHAIR("Mahogany Armchair", 50, 280, ItemID.MAHOGANY_ARMCHAIR), + ORNAMENTAL_GLOBE("Ornamental Globe", 50, 270, ItemID.ORNAMENTAL_GLOBE), + TELEPORT_FOCUS("Teleport Focus", 50, 40, ItemID.TELEPORT_FOCUS), + TEAK_DRAWERS("Teak Drawers", 51, 180, ItemID.TEAK_DRAWERS), + COMBAT_RING("Combat Ring", 51, 630, ItemID.COMBAT_RING), + TEAK_KITCHEN_TABLE("Teak Kitchen Table", 52, 270, ItemID.TEAK_TABLE), + MAHOGANY_BENCH("Mahogany Bench", 52, 560, ItemID.MAHOGANY_BENCH), + MAHOGANY_TABLE("Mahogany Table", 52, 840, ItemID.MAHOGANY_TABLE), + FOUR_POSTER_BED("4-Poster Bed", 53, 450, ItemID._4POSTER), + EXTRA_WEAPONS_RACK("Extra Weapons Rack", 54, 440, ItemID.EXTRA_WEAPONS_RACK), + ELEMENTAL_SPHERE("Elemental Sphere", 54, 580, ItemID.ELEMENTAL_SPHERE), + TEAK_CLOCK("Teak Clock", 55, 202, ItemID.TEAK_CLOCK), + GILDED_DECORATION("Gilded Decoration", 56, 1020, ItemID.GILDED_DECORATION), + FANCY_TEAK_DRESSER("Fancy Teak Dresser", 56, 182, ItemID.FANCY_TEAK_DRESSER), + TEAK_SHELVES_1("Teak Shelves 1", 56, 330, ItemID.TEAK_SHELVES_1), + TEAK_EAGLE_LECTERN("Teak Eagle Lectern", 57, 180, ItemID.TEAK_EAGLE_LECTERN), + TEAK_DEMON_LECTERN("Teak Demon Lectern", 57, 180, ItemID.TEAK_DEMON_LECTERN), + LIMESTONE_ATTACK_STONE("Limestone attack stone", 59, 200, ItemID.ATTACK_STONE), + LUNAR_GLOBE("Lunar Globe", 59, 570, ItemID.LUNAR_GLOBE), + GILDED_FOUR_POSTER_BED("Gilded 4-Poster Bed", 60, 1330, ItemID.GILDED_4POSTER), + POSH_BELL_PULL("Posh Bell-Pull", 60, 420, ItemID.POSH_BELLPULL), + SPICE_RACK("Spice Rack", 60, 374, ItemID.SPICE_RACK), + YEW_TREE("Yew Tree", 60, 141, ItemID.YEW_TREE), + GILDED_BENCH("Gilded Bench", 61, 1760, ItemID.GILDED_BENCH), + TEAK_WARDROBE("Teak Wardrobe", 63, 270, ItemID.TEAK_WARDROBE), + MARBLE_FIREPLACE("Marble Fireplace", 63, 500, ItemID.MARBLE_FIREPLACE), + ASTRONOMICAL_CHART("Astronomical Chart", 63, 45, ItemID.ASTRONOMICAL_CHART), + TEAK_TELESCOPE("Teak Telescope", 64, 181, ItemID.TEAK_TELESCOPE), + MAHOGANY_DRESSER("Mahogany Dresser", 64, 281, ItemID.MAHOGANY_DRESSER), + MAHOGANY_PORTAL("Mahogany Portal", 65, 420, ItemID.MAHOGANY_PORTAL), + GREATER_FOCUS("Greater Focus", 65, 500, ItemID.GREATER_FOCUS), + OPULENT_RUG("Opulent Rug", 65, 360, ItemID.OPULENT_RUG), + TEAK_GARDEN_BENCH("Teak Garden Bench", 66, 540, ItemID.TEAK_GARDEN_BENCH), + CRYSTAL_OF_POWER("Crystal of Power", 66, 890, ItemID.CRYSTAL_OF_POWER), + TEAK_SHELVES_2("Teak Shelves 2", 67, 930, ItemID.TEAK_SHELVES_2), + MAHOGANY_DEMON_LECTERN("Mahogany Demon Lectern", 67, 580, ItemID.TEAK_DEMON_LECTERN), + MAHOGANY_EAGLE_LECTERN("Mahogany Eagle Lectern", 67, 580, ItemID.TEAK_DEMON_LECTERN), + CELESTIAL_GLOBE("Celestial Globe", 68, 570, ItemID.CELESTIAL_GLOBE), + DUNGEON_ENTRANCE("Dungeon Entrance", 70, 500, ItemID.DUNGEON_ENTRANCE), + RANGING_PEDESTALS("Ranging Pedestals", 71, 720, ItemID.RANGING_PEDESTALS), + OPULENT_TABLE("Opulent Table", 72, 3100, ItemID.OPULENT_TABLE), + OAK_DOOR("Oak Door", 74, 600, ItemID.OAK_DOOR), + GILDED_DRESSER("Gilded Dresser", 74, 582, ItemID.GILDED_DRESSER), + MAHOGANY_WARDROBE("Mahogany Wardrobe", 75, 420, ItemID.MAHOGANY_WARDROBE), + MAGIC_TREE("Magic Tree", 75, 223, ItemID.MAGIC_TREE), + ARMILLARY_GLOBE("Armillary Globe", 77, 960, ItemID.GLOBE), + GNOME_BENCH("Gnome Bench", 77, 840, ItemID.GNOME_BENCH), + MARBLE_PORTAL("Marble Portal", 80, 1500, ItemID.MARBLE_PORTAL), + SCRYING_POOL("Scrying Pool", 80, 2000, ItemID.SCRYING_POOL), + BALANCE_BEAM("Balance Beam", 81, 1000, ItemID.BALANCE_BEAM), + INFERNAL_CHART("Infernal Chart", 83, 60, ItemID.INFERNAL_CHART), + MAHOGANY_TELESCOPE("Mahogany Telescope", 84, 281, ItemID.MAHOGANY_TELESCOPE), + GILDED_CLOCK("Gilded Clock", 85, 602, ItemID.GILDED_CLOCK), + SMALL_ORRERY("Small Orrery", 86, 1320, ItemID.SMALL_ORRERY), + GILDED_WARDROBE("Gilded Wardrobe", 87, 720, ItemID.GILDED_WARDROBE), + LARGE_ORRERY("Large Orrery", 95, 1420, ItemID.LARGE_ORRERY), + ; + + private final String name; + private final int level; + private final float xp; + private final int icon; +} diff --git a/runelite-api/src/main/java/net/runelite/api/Favour.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionBonus.java similarity index 71% rename from runelite-api/src/main/java/net/runelite/api/Favour.java rename to runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionBonus.java index 38904257b1..d398ea2786 100644 --- a/runelite-api/src/main/java/net/runelite/api/Favour.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ConstructionBonus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 William + * Copyright (c) 2021, Jordan Atwood * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,24 +22,18 @@ * (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.api; +package net.runelite.client.plugins.skillcalculator.skills; +import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.RequiredArgsConstructor; -/** - * An enumeration of Kourend house favour the player can earn. - */ -@RequiredArgsConstructor -@Getter -public enum Favour +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum ConstructionBonus implements SkillBonus { - ARCEUUS("Arceuus", Varbits.KOUREND_FAVOR_ARCEUUS), - HOSIDIUS("Hosidius", Varbits.KOUREND_FAVOR_HOSIDIUS), - LOVAKENGJ("Lovakengj", Varbits.KOUREND_FAVOR_LOVAKENGJ), - PISCARILIUS("Piscarilius", Varbits.KOUREND_FAVOR_PISCARILIUS), - SHAYZIEN("Shayzien", Varbits.KOUREND_FAVOR_SHAYZIEN); + CARPENTERS_OUTFIT("Carpenter's Outfit (+2.5%)", 0.025f), + ; private final String name; - private final Varbits varbit; + private final float value; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CookingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CookingAction.java new file mode 100644 index 0000000000..7a6c09cc4c --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CookingAction.java @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum CookingAction implements ItemSkillAction +{ + SINEW(ItemID.SINEW, 1, 3), + SHRIMPS(ItemID.SHRIMPS, 1, 30), + COOKED_CHICKEN(ItemID.COOKED_CHICKEN, 1, 30), + COOKED_MEAT(ItemID.COOKED_MEAT, 1, 30), + COOKED_RABBIT(ItemID.COOKED_RABBIT, 1, 30), + ANCHOVIES(ItemID.ANCHOVIES, 1, 30), + SARDINE(ItemID.SARDINE, 1, 40), + POISON_KARAMBWAN(ItemID.POISON_KARAMBWAN, 1, 80), + UGTHANKI_MEAT(ItemID.UGTHANKI_MEAT, 1, 40), + BREAD(ItemID.BREAD, 1, 40), + HERRING(ItemID.HERRING, 5, 50), + FRUIT_BLAST(ItemID.FRUIT_BLAST, 6, 50), + BAKED_POTATO(ItemID.BAKED_POTATO, 7, 15), + GUPPY(ItemID.GUPPY, 7, 12), + PINEAPPLE_PUNCH(ItemID.PINEAPPLE_PUNCH, 8, 70), + SPICY_SAUCE(ItemID.SPICY_SAUCE, 9, 25), + MACKEREL(ItemID.MACKEREL, 10, 60), + REDBERRY_PIE(ItemID.REDBERRY_PIE, 10, 78), + TOAD_CRUNCHIES(ItemID.TOAD_CRUNCHIES, 10, 100), + CHILLI_CON_CARNE(ItemID.CHILLI_CON_CARNE, 11, 55), + ROAST_BIRD_MEAT(ItemID.ROAST_BIRD_MEAT, 11, 62.5f), + THIN_SNAIL_MEAT(ItemID.THIN_SNAIL_MEAT, 12, 70), + SPICY_CRUNCHIES(ItemID.SPICY_CRUNCHIES, 12, 100), + SCRAMBLED_EGG(ItemID.SCRAMBLED_EGG, 13, 50), + CIDER(ItemID.CIDER, 14, 182), + WORM_CRUNCHIES(ItemID.WORM_CRUNCHIES, 14, 104), + TROUT(ItemID.TROUT, 15, 70), + SPIDER_ON_STICK(ItemID.SPIDER_ON_STICK, 16, 80), + SPIDER_ON_SHAFT(ItemID.SPIDER_ON_SHAFT, 16, 80), + ROAST_RABBIT(ItemID.ROAST_RABBIT, 16, 72.5f), + CHOCCHIP_CRUNCHIES(ItemID.CHOCCHIP_CRUNCHIES, 16, 100), + LEAN_SNAIL_MEAT(ItemID.LEAN_SNAIL_MEAT, 17, 80), + COD(ItemID.COD, 18, 75), + WIZARD_BLIZZARD(ItemID.WIZARD_BLIZZARD, 18, 110), + DWARVEN_STOUT(ItemID.DWARVEN_STOUT, 19, 215), + SHORT_GREEN_GUY(ItemID.SHORT_GREEN_GUY, 20, 120), + MEAT_PIE(ItemID.MEAT_PIE, 20, 110), + PIKE(ItemID.PIKE, 20, 80), + CUP_OF_TEA(ItemID.CUP_OF_TEA, 20, 52), + CAVEFISH(ItemID.CAVEFISH, 20, 23), + ROAST_BEAST_MEAT(ItemID.ROAST_BEAST_MEAT, 21, 82.5f), + COOKED_CRAB_MEAT(ItemID.COOKED_CRAB_MEAT, 21, 100), + POT_OF_CREAM(ItemID.POT_OF_CREAM, 21, 18), + FAT_SNAIL_MEAT(ItemID.FAT_SNAIL_MEAT, 22, 95), + EGG_AND_TOMATO(ItemID.EGG_AND_TOMATO, 23, 50), + ASGARNIAN_ALE(ItemID.ASGARNIAN_ALE, 24, 248), + SALMON(ItemID.SALMON, 25, 90), + STEW(ItemID.STEW, 25, 117), + FRUIT_BATTA(ItemID.FRUIT_BATTA, 25, 150), + TOAD_BATTA(ItemID.TOAD_BATTA, 26, 152), + WORM_BATTA(ItemID.WORM_BATTA, 27, 154), + VEGETABLE_BATTA(ItemID.VEGETABLE_BATTA, 28, 156), + SWEETCORN(ItemID.COOKED_SWEETCORN, 28, 104), + COOKED_SLIMY_EEL(ItemID.COOKED_SLIMY_EEL, 28, 95), + MUD_PIE(ItemID.MUD_PIE, 29, 128), + GREENMANS_ALE(ItemID.GREENMANS_ALE, 29, 281), + CHEESE_AND_TOMATO_BATTA(ItemID.CHEESETOM_BATTA, 29, 158), + TUNA(ItemID.TUNA, 30, 100), + APPLE_PIE(ItemID.APPLE_PIE, 30, 130), + WORM_HOLE(ItemID.WORM_HOLE, 30, 170), + COOKED_KARAMBWAN(ItemID.COOKED_KARAMBWAN, 30, 190), + ROASTED_CHOMPY(ItemID.COOKED_CHOMPY, 30, 100), + FISHCAKE(ItemID.COOKED_FISHCAKE, 31, 100), + DRUNK_DRAGON(ItemID.DRUNK_DRAGON, 32, 160), + CHOC_SATURDAY(ItemID.CHOC_SATURDAY, 33, 170), + TETRA(ItemID.TETRA, 33, 31), + GARDEN_PIE(ItemID.GARDEN_PIE, 34, 138), + WIZARDS_MIND_BOMB(ItemID.WIZARDS_MIND_BOMB, 34, 314), + JUG_OF_WINE(ItemID.JUG_OF_WINE, 35, 200), + PLAIN_PIZZA(ItemID.PLAIN_PIZZA, 35, 143), + RAINBOW_FISH(ItemID.RAINBOW_FISH, 35, 110), + VEG_BALL(ItemID.VEG_BALL, 35, 175), + BLURBERRY_SPECIAL(ItemID.BLURBERRY_SPECIAL, 37, 180), + CAVE_EEL(ItemID.CAVE_EEL, 38, 115), + PAT_OF_BUTTER(ItemID.PAT_OF_BUTTER, 38, 40.5f), + DRAGON_BITTER(ItemID.DRAGON_BITTER, 39, 347), + POTATO_WITH_BUTTER(ItemID.POTATO_WITH_BUTTER, 39, 40), + LOBSTER(ItemID.LOBSTER, 40, 120), + CAKE(ItemID.CAKE, 40, 180), + TANGLED_TOADS_LEGS(ItemID.TANGLED_TOADS_LEGS, 40, 185), + CHILLI_POTATO(ItemID.CHILLI_POTATO, 41, 165.5f), + COOKED_JUBBLY(ItemID.COOKED_JUBBLY, 41, 160), + CHOCOLATE_BOMB(ItemID.CHOCOLATE_BOMB, 42, 190), + FRIED_ONIONS(ItemID.FRIED_ONIONS, 42, 60), + BASS(ItemID.BASS, 43, 130), + MOONLIGHT_MEAD(ItemID.MOONLIGHT_MEAD, 44, 380), + SWORDFISH(ItemID.SWORDFISH, 45, 140), + MEAT_PIZZA(ItemID.MEAT_PIZZA, 45, 169), + FRIED_MUSHROOMS(ItemID.FRIED_MUSHROOMS, 46, 60), + CATFISH(ItemID.CATFISH, 46, 43), + FISH_PIE(ItemID.FISH_PIE, 47, 164), + POTATO_WITH_CHEESE(ItemID.POTATO_WITH_CHEESE, 47, 40), + CHEESE(ItemID.CHEESE, 48, 64), + AXEMANS_FOLLY(ItemID.AXEMANS_FOLLY, 49, 413), + COOKED_OOMLIE_WRAP(ItemID.COOKED_OOMLIE_WRAP, 50, 30), + CHOCOLATE_CAKE(ItemID.CHOCOLATE_CAKE, 50, 210), + EGG_POTATO(ItemID.EGG_POTATO, 51, 195.5f), + BOTANICAL_PIE(ItemID.BOTANICAL_PIE, 52, 180), + LAVA_EEL(ItemID.LAVA_EEL, 53, 30), + CHEFS_DELIGHT(ItemID.CHEFS_DELIGHT, 54, 446), + ANCHOVY_PIZZA(ItemID.ANCHOVY_PIZZA, 55, 182), + MUSHROOM_AND_ONION(ItemID.MUSHROOM__ONION, 57, 120), + UGTHANKI_KEBAB_FRESH(ItemID.UGTHANKI_KEBAB, 58, 80), + PITTA_BREAD(ItemID.PITTA_BREAD, 58, 40), + SLAYERS_RESPITE(ItemID.SLAYERS_RESPITE, 59, 479), + CURRY(ItemID.CURRY, 60, 280), + MUSHROOM_PIE(ItemID.MUSHROOM_PIE, 60, 200), + MONKFISH(ItemID.MONKFISH, 62, 150), + MUSHROOM_POTATO(ItemID.MUSHROOM_POTATO, 64, 270.5f), + PINEAPPLE_PIZZA(ItemID.PINEAPPLE_PIZZA, 65, 188), + WINE_OF_ZAMORAK(ItemID.WINE_OF_ZAMORAK, 65, 200), + TUNA_AND_CORN(ItemID.TUNA_AND_CORN, 67, 204), + TUNA_POTATO(ItemID.TUNA_POTATO, 68, 309.5f), + ADMIRAL_PIE(ItemID.ADMIRAL_PIE, 70, 210), + SACRED_EEL(ItemID.SACRED_EEL, 72, 109), + DRAGONFRUIT_PIE(ItemID.DRAGONFRUIT_PIE, 73, 220), + SHARK(ItemID.SHARK, 80, 210), + SEA_TURTLE(ItemID.SEA_TURTLE, 82, 211.3f), + ANGLERFISH(ItemID.ANGLERFISH, 84, 230), + WILD_PIE(ItemID.WILD_PIE, 85, 240), + DARK_CRAB(ItemID.DARK_CRAB, 90, 215), + MANTA_RAY(ItemID.MANTA_RAY, 91, 216.3f), + SUMMER_PIE(ItemID.SUMMER_PIE, 95, 260), + ; + + private final int itemId; + private final int level; + private final float xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CraftingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CraftingAction.java new file mode 100644 index 0000000000..c7c8720508 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/CraftingAction.java @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum CraftingAction implements ItemSkillAction +{ + BALL_OF_WOOL(ItemID.BALL_OF_WOOL, 1, 2.5f), + UNFIRED_POT(ItemID.UNFIRED_POT, 1, 6.3f), + POT(ItemID.POT, 1, 6.3f), + LEATHER_GLOVES(ItemID.LEATHER_GLOVES, 1, 13.8f), + OPAL(ItemID.OPAL, 1, 15), + OPAL_RING(ItemID.OPAL_RING, 1, 10), + MOLTEN_GLASS(ItemID.MOLTEN_GLASS, 1, 20), + BEER_GLASS(ItemID.BEER_GLASS, 1, 17.5f), + EMPTY_CANDLE_LANTERN(ItemID.EMPTY_CANDLE_LANTERN, 4, 19), + GOLD_RING(ItemID.GOLD_RING, 5, 15), + BIRD_HOUSE(ItemID.BIRD_HOUSE, 5, 15), + GOLD_NECKLACE(ItemID.GOLD_NECKLACE, 6, 20), + LEATHER_BOOTS(ItemID.LEATHER_BOOTS, 7, 16.3f), + UNFIRED_PIE_DISH(ItemID.UNFIRED_PIE_DISH, 7, 15), + PIE_DISH(ItemID.PIE_DISH, 7, 10), + GOLD_BRACELET(ItemID.GOLD_BRACELET, 7, 25), + UNFIRED_BOWL(ItemID.UNFIRED_BOWL, 8, 18), + BOWL(ItemID.BOWL, 8, 15), + GOLD_AMULET_U(ItemID.GOLD_AMULET_U, 8, 30), + COWL(ItemID.LEATHER_COWL, 9, 18.5f), + CROSSBOW_STRING(ItemID.CROSSBOW_STRING, 10, 15), + BOW_STRING(ItemID.BOW_STRING, 10, 15), + LEATHER_VAMBRACES(ItemID.LEATHER_VAMBRACES, 11, 22), + EMPTY_OIL_LAMP(ItemID.EMPTY_OIL_LAMP, 12, 25), + JADE(ItemID.JADE, 13, 20), + JADE_RING(ItemID.JADE_RING, 13, 32), + LEATHER_BODY(ItemID.LEATHER_BODY, 14, 25), + OAK_BIRD_HOUSE(ItemID.OAK_BIRD_HOUSE, 15, 20), + RED_TOPAZ(ItemID.RED_TOPAZ, 16, 25), + TOPAZ_RING(ItemID.TOPAZ_RING, 16, 35), + HOLY_SYMBOL(ItemID.HOLY_SYMBOL, 16, 50), + OPAL_NECKLACE(ItemID.OPAL_NECKLACE, 16, 35), + UNHOLY_SYMBOL(ItemID.UNHOLY_SYMBOL, 17, 50), + LEATHER_CHAPS(ItemID.LEATHER_CHAPS, 18, 27), + UNFIRED_PLANT_POT(ItemID.UNFIRED_PLANT_POT, 19, 20), + EMPTY_PLANT_POT(ItemID.EMPTY_PLANT_POT, 19, 17.5f), + MAGIC_STRING(ItemID.MAGIC_STRING, 19, 30), + SAPPHIRE(ItemID.SAPPHIRE, 20, 50), + SAPPHIRE_RING(ItemID.SAPPHIRE_RING, 20, 40), + EMPTY_SACK(ItemID.EMPTY_SACK, 21, 38), + SAPPHIRE_NECKLACE(ItemID.SAPPHIRE_NECKLACE, 22, 55), + OPAL_BRACELET(ItemID.OPAL_BRACELET, 22, 45), + SAPPHIRE_BRACELET(ItemID.SAPPHIRE_BRACELET, 23, 60), + TIARA(ItemID.TIARA, 23, 52.5f), + SAPPHIRE_AMULET_U(ItemID.SAPPHIRE_AMULET_U, 24, 65), + UNFIRED_POT_LID(ItemID.UNFIRED_POT_LID, 25, 20), + POT_LID(ItemID.POT_LID, 25, 20), + JADE_NECKLACE(ItemID.JADE_NECKLACE, 25, 54), + WILLOW_BIRD_HOUSE(ItemID.WILLOW_BIRD_HOUSE, 25, 25), + DRIFT_NET(ItemID.SMALL_FISHING_NET_6209, 26, 55), + EMERALD(ItemID.EMERALD, 27, 67.5f), + EMERALD_RING(ItemID.EMERALD_RING, 27, 55), + OPAL_AMULET_U(ItemID.OPAL_AMULET_U, 27, 55), + HARDLEATHER_BODY(ItemID.HARDLEATHER_BODY, 28, 35), + EMERALD_NECKLACE(ItemID.EMERALD_NECKLACE, 29, 60), + JADE_BRACELET(ItemID.JADE_BRACELET, 29, 60), + EMERALD_BRACELET(ItemID.EMERALD_BRACELET, 30, 65), + ROPE(ItemID.ROPE, 30, 25), + EMERALD_AMULET_U(ItemID.EMERALD_AMULET_U, 31, 70), + SPIKY_VAMBRACES(ItemID.SPIKY_VAMBRACES, 32, 6), + TOPAZ_NECKLACE(ItemID.TOPAZ_NECKLACE, 32, 70), + VIAL(ItemID.VIAL, 33, 35), + RUBY(ItemID.RUBY, 34, 85), + RUBY_RING(ItemID.RUBY_RING, 34, 70), + JADE_AMULET_U(ItemID.JADE_AMULET_U, 34, 70), + BROODOO_SHIELD(ItemID.BROODOO_SHIELD, 35, 100), + TEAK_BIRD_HOUSE(ItemID.TEAK_BIRD_HOUSE, 35, 30), + BASKET(ItemID.BASKET, 36, 56), + COIF(ItemID.COIF, 38, 37), + TOPAZ_BRACELET(ItemID.TOPAZ_BRACELET, 38, 75), + RUBY_NECKLACE(ItemID.RUBY_NECKLACE, 40, 75), + HARD_LEATHER_SHIELD(ItemID.HARD_LEATHER_SHIELD, 41, 70), + RUBY_BRACELET(ItemID.RUBY_BRACELET, 42, 80), + FISHBOWL(ItemID.FISHBOWL, 42, 42.5f), + DIAMOND(ItemID.DIAMOND, 43, 107.5f), + DIAMOND_RING(ItemID.DIAMOND_RING, 43, 85), + TOPAZ_AMULET_U(ItemID.TOPAZ_AMULET_U, 45, 80), + SNAKESKIN_BOOTS(ItemID.SNAKESKIN_BOOTS, 45, 30), + MAPLE_BIRD_HOUSE(ItemID.MAPLE_BIRD_HOUSE, 45, 35), + UNPOWERED_ORB(ItemID.UNPOWERED_ORB, 46, 52.5f), + SNAKESKIN_VAMBRACES(ItemID.SNAKESKIN_VAMBRACES, 47, 35), + SNAKESKIN_BANDANA(ItemID.SNAKESKIN_BANDANA, 48, 45), + LANTERN_LENS(ItemID.LANTERN_LENS, 49, 55), + RUBY_AMULET_U(ItemID.RUBY_AMULET_U, 50, 85), + MAHOGANY_BIRD_HOUSE(ItemID.MAHOGANY_BIRD_HOUSE, 50, 40), + SNAKESKIN_CHAPS(ItemID.SNAKESKIN_CHAPS, 51, 50), + SNAKESKIN_BODY(ItemID.SNAKESKIN_BODY, 53, 55), + WATER_BATTLESTAFF(ItemID.WATER_BATTLESTAFF, 54, 100), + DRAGONSTONE(ItemID.DRAGONSTONE, 55, 137.5f), + DRAGONSTONE_RING(ItemID.DRAGONSTONE_RING, 55, 100), + DIAMOND_NECKLACE(ItemID.DIAMOND_NECKLACE, 56, 90), + SNAKESKIN_SHIELD(ItemID.SNAKESKIN_SHIELD, 56, 100), + GREEN_DHIDE_VAMB(ItemID.GREEN_DHIDE_VAMBRACES, 57, 62), + DIAMOND_BRACELET(ItemID.DIAMOND_BRACELET, 58, 95), + EARTH_BATTLESTAFF(ItemID.EARTH_BATTLESTAFF, 58, 112.5f), + GREEN_DHIDE_CHAPS(ItemID.GREEN_DHIDE_CHAPS, 60, 124), + YEW_BIRD_HOUSE(ItemID.YEW_BIRD_HOUSE, 60, 45), + FIRE_BATTLESTAFF(ItemID.FIRE_BATTLESTAFF, 62, 125), + GREEN_DHIDE_SHIELD(ItemID.GREEN_DHIDE_SHIELD, 62, 124), + GREEN_DHIDE_BODY(ItemID.GREEN_DHIDE_BODY, 63, 186), + AIR_BATTLESTAFF(ItemID.AIR_BATTLESTAFF, 66, 137.5f), + BLUE_DHIDE_VAMB(ItemID.BLUE_DHIDE_VAMBRACES, 66, 70), + ONYX_RING(ItemID.ONYX_RING, 67, 115), + ONYX(ItemID.ONYX, 67, 167.5f), + BLUE_DHIDE_CHAPS(ItemID.BLUE_DHIDE_CHAPS, 68, 140), + BLUE_DHIDE_SHIELD(ItemID.BLUE_DHIDE_SHIELD, 69, 140), + DIAMOND_AMULET_U(ItemID.DIAMOND_AMULET_U, 70, 100), + BLUE_DHIDE_BODY(ItemID.BLUE_DHIDE_BODY, 71, 210), + DRAGONSTONE_NECKLACE(ItemID.DRAGON_NECKLACE, 72, 105), + RED_DHIDE_VAMB(ItemID.RED_DHIDE_VAMBRACES, 73, 78), + DRAGONSTONE_BRACELET(ItemID.DRAGONSTONE_BRACELET, 74, 110), + RED_DHIDE_CHAPS(ItemID.RED_DHIDE_CHAPS, 75, 156), + MAGIC_BIRD_HOUSE(ItemID.MAGIC_BIRD_HOUSE, 75, 50), + RED_DHIDE_SHIELD(ItemID.RED_DHIDE_SHIELD, 76, 156), + RED_DHIDE_BODY(ItemID.RED_DHIDE_BODY, 77, 234), + BLACK_DHIDE_VAMB(ItemID.BLACK_DHIDE_VAMBRACES, 79, 86), + DRAGONSTONE_AMULET_U(ItemID.DRAGONSTONE_AMULET_U, 80, 150), + BLACK_DHIDE_CHAPS(ItemID.BLACK_DHIDE_CHAPS, 82, 172), + ONYX_NECKLACE(ItemID.ONYX_NECKLACE, 82, 120), + AMETHYST_BOLT_TIPS(ItemID.AMETHYST_BOLT_TIPS, 83, 4), + BLACK_DHIDE_SHIELD(ItemID.BLACK_DHIDE_SHIELD, 83, 172), + BLACK_DHIDE_BODY(ItemID.BLACK_DHIDE_BODY, 84, 258), + ONYX_BRACELET(ItemID.ONYX_BRACELET, 84, 125), + AMETHYST_ARROWTIPS(ItemID.AMETHYST_ARROWTIPS, 85, 4), + AMETHYST_JAVELIN_HEADS(ItemID.AMETHYST_JAVELIN_HEADS, 87, 12), + LIGHT_ORB(ItemID.LIGHT_ORB, 87, 70), + AMETHYST_DART_TIP(ItemID.AMETHYST_DART_TIP, 89, 7.5f), + ZENYTE(ItemID.ZENYTE, 89, 200), + ZENYTE_RING(ItemID.ZENYTE_RING, 89, 150), + ONYX_AMULET_U(ItemID.ONYX_AMULET_U, 90, 165), + REDWOOD_BIRD_HOUSE(ItemID.REDWOOD_BIRD_HOUSE, 90, 55), + ZENYTE_NECKLACE(ItemID.ZENYTE_NECKLACE, 92, 165), + ZENYTE_BRACELET(ItemID.ZENYTE_BRACELET, 95, 180), + ZENYTE_AMULET_U(ItemID.ZENYTE_AMULET_U, 98, 200), + ; + + private final int itemId; + private final int level; + private final float xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingAction.java new file mode 100644 index 0000000000..6f17dcceb3 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingAction.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum FarmingAction implements NamedSkillAction +{ + PLANT("Plant", 1, 31, ItemID.PLANT), + FERN_BIG_PLANT("Fern (big plant)", 1, 31, ItemID.FERN_8186), + SHORT_PLANT("Short Plant", 1, 31, ItemID.SHORT_PLANT), + DOCK_LEAF("Dock Leaf", 1, 31, ItemID.DOCK_LEAF), + SMALL_FERN("Small Fern", 1, 70, ItemID.SMALL_FERN), + THISTLE("Thistle", 1, 70, ItemID.THISTLE), + BUSH("Bush", 1, 70, ItemID.BUSH), + LARGE_LEAF_BUSH("Large Leaf Bush", 1, 70, ItemID.LARGELEAF_PLANT), + HUGE_PLANT("Huge Plant", 1, 100, ItemID.HUGE_PLANT), + TALL_PLANT("Tall Plant", 1, 100, ItemID.TALL_PLANT), + REEDS("Reeds", 1, 100, ItemID.REEDS), + FERN_SMALL_PLANT("Fern (small plant)", 1, 100, ItemID.FERN), + WINTER_SQIRK("Winter Sq'irk", 1, 30, ItemID.WINTER_SQIRK), + SPRING_SQIRK("Spring Sq'irk", 1, 40, ItemID.SPRING_SQIRK), + AUTUMN_SQIRK("Autumn Sq'irk", 1, 50, ItemID.AUTUMN_SQIRK), + SUMMER_SQIRK("Summer Sq'irk", 1, 60, ItemID.SUMMER_SQIRK), + POTATOES("Potatoes", 1, 8, ItemID.POTATO), + ONIONS("Onions", 5, 10, ItemID.ONION), + CABBAGES("Cabbages", 7, 10, ItemID.CABBAGE), + GUAM_LEAF("Guam Leaf", 9, 11, ItemID.GUAM_LEAF), + TOMATOES("Tomatoes", 12, 12.5f, ItemID.TOMATO), + MARRENTILL("Marrentill", 14, 13.5f, ItemID.MARRENTILL), + OAK_TREE("Oak Tree", 15, 481.3f, ItemID.OAK_LOGS), + TARROMIN("Tarromin", 19, 16, ItemID.TARROMIN), + SWEETCORN("Sweetcorn", 20, 17, ItemID.SWEETCORN), + GIANT_SEAWEED("Giant seaweed", 23, 21, ItemID.GIANT_SEAWEED), + HARRALANDER("Harralander", 26, 21.5f, ItemID.HARRALANDER), + LIMPWURT_PLANT("Limpwurt Plant", 26, 40, ItemID.LIMPWURT_ROOT), + APPLE_TREE("Apple Tree", 27, 1221.5f, ItemID.COOKING_APPLE), + GOUTWEED("Goutweed", 29, 105, ItemID.GOUTWEED), + WILLOW_TREE("Willow Tree", 30, 1481.5f, ItemID.WILLOW_LOGS), + STRAWBERRIES("Strawberries", 31, 26, ItemID.STRAWBERRY), + RANARR_WEED("Ranarr Weed", 32, 27, ItemID.RANARR_WEED), + BANANA_TREE("Banana Tree", 33, 1778.5f, ItemID.BANANA), + TEAK_TREE("Teak Tree", 35, 7315, ItemID.TEAK_LOGS), + TOADFLAX("Toadflax", 38, 34, ItemID.TOADFLAX), + ORANGE_TREE("Orange Tree", 39, 2505.7f, ItemID.ORANGE), + CURRY_TREE("Curry Tree", 42, 2946.9f, ItemID.CURRY_LEAF), + IRIT_LEAF("Irit Leaf", 44, 43, ItemID.IRIT_LEAF), + MAPLE_TREE("Maple Tree", 45, 3448.4f, ItemID.MAPLE_LOGS), + WATERMELONS("Watermelons", 47, 49, ItemID.WATERMELON), + AVANTOE("Avantoe", 50, 54.5f, ItemID.AVANTOE), + PINEAPPLE_PLANT("Pineapple Plant", 51, 4662.7f, ItemID.PINEAPPLE), + MAHOGANY_TREE("Mahogany Tree", 55, 15783, ItemID.MAHOGANY_LOGS), + KWUARM("Kwuarm", 56, 69, ItemID.KWUARM), + PAPAYA_TREE("Papaya Tree", 57, 6218.4f, ItemID.PAPAYA_FRUIT), + WHITE_LILY("White lily", 58, 292, ItemID.WHITE_LILY), + YEW_TREE("Yew Tree", 60, 7150.9f, ItemID.YEW_LOGS), + SNAPE_GRASS("Snape grass", 61, 82, ItemID.SNAPE_GRASS), + SNAPDRAGON("Snapdragon", 62, 87.5f, ItemID.SNAPDRAGON), + HESPORI("Hespori", 65, 12662, ItemID.CLAN_WARS_CAPE_12662), + CADANTINE("Cadantine", 67, 106.5f, ItemID.CADANTINE), + PALM_TREE("Palm Tree", 68, 10260.6f, ItemID.COCONUT), + CALQUAT_TREE("Calquat Tree", 72, 12225.5f, ItemID.CALQUAT_FRUIT), + LANTADYME("Lantadyme", 73, 134.5f, ItemID.LANTADYME), + CRYSTAL_TREE("Crystal Tree", 74, 13366, ItemID.CRYSTAL_SHARD), + MAGIC_TREE("Magic Tree", 75, 13913.8f, ItemID.MAGIC_LOGS), + DWARF_WEED("Dwarf Weed", 79, 170.5f, ItemID.DWARF_WEED), + DRAGONFRUIT_TREE("Dragonfruit Tree", 81, 17895, ItemID.DRAGONFRUIT), + SPIRIT_TREE("Spirit Tree", 83, 19501.3f, ItemID.SPIRIT_TREE), + CELASTRUS_TREE("Celastrus Tree", 85, 14334, ItemID.CELASTRUS_BARK), + TORSTOL("Torstol", 85, 199.5f, ItemID.TORSTOL), + REDWOOD_TREE("Redwood Tree", 90, 22680, ItemID.REDWOOD_LOGS), + ; + + private final String name; + private final int level; + private final float xp; + private final int icon; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillDataBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingBonus.java similarity index 78% rename from runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillDataBonus.java rename to runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingBonus.java index 675fcb51db..bef0a0bf2c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillDataBonus.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FarmingBonus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Kruithne + * Copyright (c) 2021, Jordan Atwood * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,13 +22,18 @@ * (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.skillcalculator.beans; +package net.runelite.client.plugins.skillcalculator.skills; +import lombok.AllArgsConstructor; import lombok.Getter; -@Getter -public class SkillDataBonus +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum FarmingBonus implements SkillBonus { - private String name; - private float value; -} \ No newline at end of file + FARMERS_OUTFIT("Farmer's Outfit (+2.5%)", 0.025f), + ; + + private final String name; + private final float value; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingAction.java new file mode 100644 index 0000000000..424fb851a8 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingAction.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum FiremakingAction implements ItemSkillAction +{ + LOGS(ItemID.LOGS, 1, 40), + ACHEY_TREE_LOGS(ItemID.ACHEY_TREE_LOGS, 1, 40), + OAK_LOGS(ItemID.OAK_LOGS, 15, 60), + WILLOW_LOGS(ItemID.WILLOW_LOGS, 30, 90), + TEAK_LOGS(ItemID.TEAK_LOGS, 35, 105), + ARCTIC_PINE_LOGS(ItemID.ARCTIC_PINE_LOGS, 42, 125), + MAPLE_LOGS(ItemID.MAPLE_LOGS, 45, 135), + MAHOGANY_LOGS(ItemID.MAHOGANY_LOGS, 50, 157.5f), + YEW_LOGS(ItemID.YEW_LOGS, 60, 202.5f), + BLISTERWOOD_LOGS(ItemID.BLISTERWOOD_LOGS, 62, 96), + MAGIC_LOGS(ItemID.MAGIC_LOGS, 75, 303.8f), + REDWOOD_LOGS(ItemID.REDWOOD_LOGS, 90, 350), + ; + + private final int itemId; + private final int level; + private final float xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingBonus.java new file mode 100644 index 0000000000..6f4cd5a720 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FiremakingBonus.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum FiremakingBonus implements SkillBonus +{ + PYROMANCER_OUTFIT("Pyromancer Outfit (+2.5%)", 0.025f), + ; + + private final String name; + private final float value; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingAction.java new file mode 100644 index 0000000000..7f42218de2 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingAction.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum FishingAction implements ItemSkillAction +{ + RAW_SHRIMPS(ItemID.RAW_SHRIMPS, 1, 10), + RAW_SARDINE(ItemID.RAW_SARDINE, 5, 20), + RAW_KARAMBWANJI(ItemID.RAW_KARAMBWANJI, 5, 5), + RAW_GUPPY(ItemID.RAW_GUPPY, 7, 8), + RAW_HERRING(ItemID.RAW_HERRING, 10, 30), + RAW_ANCHOVIES(ItemID.RAW_ANCHOVIES, 15, 40), + RAW_MACKEREL(ItemID.RAW_MACKEREL, 16, 20), + RAW_TROUT(ItemID.RAW_TROUT, 20, 50), + RAW_CAVEFISH(ItemID.RAW_CAVEFISH, 20, 16), + RAW_COD(ItemID.RAW_COD, 23, 45), + RAW_PIKE(ItemID.RAW_PIKE, 25, 60), + RAW_SLIMY_EEL(ItemID.RAW_SLIMY_EEL, 28, 65), + RAW_SALMON(ItemID.RAW_SALMON, 30, 70), + RAW_TETRA(ItemID.RAW_TETRA, 33, 24), + RAW_TUNA(ItemID.RAW_TUNA, 35, 80), + RAW_RAINBOW_FISH(ItemID.RAW_RAINBOW_FISH, 38, 80), + RAW_CAVE_EEL(ItemID.RAW_CAVE_EEL, 38, 80), + RAW_LOBSTER(ItemID.RAW_LOBSTER, 40, 90), + RAW_BASS(ItemID.RAW_BASS, 46, 100), + RAW_CATFISH(ItemID.RAW_CATFISH, 46, 33), + LEAPING_TROUT(ItemID.LEAPING_TROUT, 48, 50), + RAW_SWORDFISH(ItemID.RAW_SWORDFISH, 50, 100), + LEAPING_SALMON(ItemID.LEAPING_SALMON, 58, 70), + RAW_MONKFISH(ItemID.RAW_MONKFISH, 62, 120), + RAW_KARAMBWAN(ItemID.RAW_KARAMBWAN, 65, 50), + LEAPING_STURGEON(ItemID.LEAPING_STURGEON, 70, 80), + RAW_SHARK(ItemID.RAW_SHARK, 76, 110), + RAW_SEA_TURTLE(ItemID.RAW_SEA_TURTLE, 79, 38), + INFERNAL_EEL(ItemID.INFERNAL_EEL, 80, 95), + RAW_MANTA_RAY(ItemID.RAW_MANTA_RAY, 81, 46), + RAW_ANGLERFISH(ItemID.RAW_ANGLERFISH, 82, 120), + MINNOW(ItemID.MINNOW, 82, 26.5f), + RAW_DARK_CRAB(ItemID.RAW_DARK_CRAB, 85, 130), + SACRED_EEL(ItemID.SACRED_EEL, 87, 105), + ; + + private final int itemId; + private final int level; + private final float xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingBonus.java new file mode 100644 index 0000000000..422d22968e --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FishingBonus.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum FishingBonus implements SkillBonus +{ + ANGLERS_OUTFIT("Angler's Outfit (+2.5%)", 0.025f), + ; + + private final String name; + private final float value; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FletchingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FletchingAction.java new file mode 100644 index 0000000000..c869ed06a2 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/FletchingAction.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum FletchingAction implements ItemSkillAction +{ + ARROW_SHAFT(ItemID.ARROW_SHAFT, 1, 0.33f), + HEADLESS_ARROW(ItemID.HEADLESS_ARROW, 1, 1), + BRONZE_ARROW(ItemID.BRONZE_ARROW, 1, 1.3f), + OGRE_ARROW(ItemID.OGRE_ARROW, 5, 1), + SHORTBOW_U(ItemID.SHORTBOW_U, 5, 5), + SHORTBOW(ItemID.SHORTBOW, 5, 5), + BRONZE_BOLTS(ItemID.BRONZE_BOLTS, 9, 0.5f), + WOODEN_STOCK(ItemID.WOODEN_STOCK, 9, 6), + BRONZE_CROSSBOW_U(ItemID.BRONZE_CROSSBOW_U, 9, 12), + BRONZE_CROSSBOW(ItemID.BRONZE_CROSSBOW, 9, 6), + BRONZE_DART(ItemID.BRONZE_DART, 10, 1.8f), + LONGBOW(ItemID.LONGBOW, 10, 10), + LONGBOW_U(ItemID.LONGBOW_U, 10, 10), + OPAL_BOLTS(ItemID.OPAL_BOLTS, 11, 1.6f), + IRON_ARROW(ItemID.IRON_ARROW, 15, 2.5f), + OAK_SHORTBOW_U(ItemID.OAK_SHORTBOW_U, 20, 16.5f), + OAK_SHORTBOW(ItemID.OAK_SHORTBOW, 20, 16.5f), + IRON_DART(ItemID.IRON_DART, 22, 3.8f), + OAK_STOCK(ItemID.OAK_STOCK, 24, 16), + BLURITE_CROSSBOW_U(ItemID.BLURITE_CROSSBOW_U, 24, 32), + BLURITE_CROSSBOW(ItemID.BLURITE_CROSSBOW, 24, 16), + OAK_LONGBOW_U(ItemID.OAK_LONGBOW_U, 25, 25), + OAK_LONGBOW(ItemID.OAK_LONGBOW, 25, 25), + OAK_SHIELD(ItemID.OAK_SHIELD, 27, 50), + STEEL_ARROW(ItemID.STEEL_ARROW, 30, 5), + KEBBIT_BOLTS(ItemID.KEBBIT_BOLTS, 32, 1), + WILLOW_SHORTBOW_U(ItemID.WILLOW_SHORTBOW_U, 35, 33.3f), + WILLOW_SHORTBOW(ItemID.WILLOW_SHORTBOW, 35, 33.3f), + STEEL_DART(ItemID.STEEL_DART, 37, 7.5f), + IRON_BOLTS(ItemID.IRON_BOLTS, 39, 1.5f), + WILLOW_STOCK(ItemID.WILLOW_STOCK, 39, 22), + IRON_CROSSBOW_U(ItemID.IRON_CROSSBOW_U, 39, 44), + IRON_CROSSBOW(ItemID.IRON_CROSSBOW, 39, 22), + WILLOW_LONGBOW_U(ItemID.WILLOW_LONGBOW_U, 40, 41.5f), + WILLOW_LONGBOW(ItemID.WILLOW_LONGBOW, 40, 41.5f), + BATTLESTAFF(ItemID.BATTLESTAFF, 40, 80), + PEARL_BOLTS(ItemID.PEARL_BOLTS, 41, 3.2f), + WILLOW_SHIELD(ItemID.WILLOW_SHIELD, 42, 83), + LONG_KEBBIT_BOLTS(ItemID.LONG_KEBBIT_BOLTS, 42, 1.3f), + SILVER_BOLTS(ItemID.SILVER_BOLTS, 43, 2.5f), + MITHRIL_ARROW(ItemID.MITHRIL_ARROW, 45, 7.5f), + STEEL_BOLTS(ItemID.STEEL_BOLTS, 46, 3.5f), + TEAK_STOCK(ItemID.TEAK_STOCK, 46, 27), + STEEL_CROSSBOW_U(ItemID.STEEL_CROSSBOW_U, 46, 54), + STEEL_CROSSBOW(ItemID.STEEL_CROSSBOW, 46, 27), + MAPLE_SHORTBOW_U(ItemID.MAPLE_SHORTBOW_U, 50, 50), + MAPLE_SHORTBOW(ItemID.MAPLE_SHORTBOW, 50, 50), + BARBED_BOLTS(ItemID.BARBED_BOLTS, 51, 9.5f), + MITHRIL_DART(ItemID.MITHRIL_DART, 52, 11.2f), + BROAD_ARROWS(ItemID.BROAD_ARROWS, 52, 10), + TOXIC_BLOWPIPE(ItemID.TOXIC_BLOWPIPE, 53, 120), + MITH_CROSSBOW(ItemID.MITHRIL_CROSSBOW, 54, 32), + MAPLE_STOCK(ItemID.MAPLE_STOCK, 54, 32), + MITHRIL_BOLTS(ItemID.MITHRIL_BOLTS, 54, 5), + MITHRIL_CROSSBOW_U(ItemID.MITHRIL_CROSSBOW_U, 54, 64), + MAPLE_LONGBOW_U(ItemID.MAPLE_LONGBOW_U, 55, 58.3f), + BROAD_BOLTS(ItemID.BROAD_BOLTS, 55, 3), + MAPLE_LONGBOW(ItemID.MAPLE_LONGBOW, 55, 58), + SAPPHIRE_BOLTS(ItemID.SAPPHIRE_BOLTS, 56, 4.7f), + MAPLE_SHIELD(ItemID.MAPLE_SHIELD, 57, 116.5f), + EMERALD_BOLTS(ItemID.EMERALD_BOLTS, 58, 5.5f), + ADAMANT_ARROW(ItemID.ADAMANT_ARROW, 60, 10), + ADAMANT_BOLTS(ItemID.ADAMANT_BOLTS, 61, 7), + MAHOGANY_STOCK(ItemID.MAHOGANY_STOCK, 61, 41), + ADAMANT_CROSSBOW_U(ItemID.ADAMANT_CROSSBOW_U, 61, 82), + ADAMANT_CROSSBOW(ItemID.ADAMANT_CROSSBOW, 61, 41), + RUBY_BOLTS(ItemID.RUBY_BOLTS, 63, 6.3f), + DIAMOND_BOLTS(ItemID.DIAMOND_BOLTS, 65, 7), + YEW_SHORTBOW(ItemID.YEW_SHORTBOW, 65, 67.5f), + YEW_SHORTBOW_U(ItemID.YEW_SHORTBOW_U, 65, 67.5f), + ADAMANT_DART(ItemID.ADAMANT_DART, 67, 15), + RUNITE_CROSSBOW_U(ItemID.RUNITE_CROSSBOW_U, 69, 100), + RUNE_CROSSBOW(ItemID.RUNE_CROSSBOW, 69, 50), + YEW_STOCK(ItemID.YEW_STOCK, 69, 50), + RUNITE_BOLTS(ItemID.RUNITE_BOLTS, 69, 10), + YEW_LONGBOW(ItemID.YEW_LONGBOW, 70, 75), + YEW_LONGBOW_U(ItemID.YEW_LONGBOW_U, 70, 75), + DRAGONSTONE_BOLTS(ItemID.DRAGONSTONE_BOLTS, 71, 8.2f), + YEW_SHIELD(ItemID.YEW_SHIELD, 72, 150), + ONYX_BOLTS(ItemID.ONYX_BOLTS, 73, 9.4f), + RUNE_ARROW(ItemID.RUNE_ARROW, 75, 12.5f), + AMETHYST_BROAD_BOLTS(ItemID.AMETHYST_BROAD_BOLTS, 76, 10.6f), + MAGIC_STOCK(ItemID.MAGIC_STOCK, 78, 70), + DRAGON_CROSSBOW_U(ItemID.DRAGON_CROSSBOW_U, 78, 135), + DRAGON_CROSSBOW(ItemID.DRAGON_CROSSBOW, 78, 70), + MAGIC_SHORTBOW(ItemID.MAGIC_SHORTBOW, 80, 83.3f), + MAGIC_SHORTBOW_U(ItemID.MAGIC_SHORTBOW_U, 80, 83.3f), + RUNE_DART(ItemID.RUNE_DART, 81, 18.8f), + AMETHYST_ARROW(ItemID.AMETHYST_ARROW, 82, 13.5f), + DRAGON_BOLTS(ItemID.DRAGON_BOLTS_UNF, 84, 12), + AMETHYST_JAVELIN(ItemID.AMETHYST_JAVELIN, 84, 13.5f), + MAGIC_LONGBOW(ItemID.MAGIC_LONGBOW, 85, 91.5f), + MAGIC_LONGBOW_U(ItemID.MAGIC_LONGBOW_U, 85, 91.5f), + MAGIC_SHIELD(ItemID.MAGIC_SHIELD, 87, 183), + AMETHYST_DART(ItemID.AMETHYST_DART, 90, 21), + DRAGON_ARROW(ItemID.DRAGON_ARROW, 90, 15), + REDWOOD_SHIELD(ItemID.REDWOOD_SHIELD, 92, 216), + DRAGON_DART(ItemID.DRAGON_DART, 95, 25), + ; + + private final int itemId; + private final int level; + private final float xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java new file mode 100644 index 0000000000..805bea57f0 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum HerbloreAction implements ItemSkillAction +{ + ATTACK_POTION_3(ItemID.ATTACK_POTION3, 3, 25), + GUAM_LEAF(ItemID.GUAM_LEAF, 3, 2.5f), + MARRENTILL(ItemID.MARRENTILL, 5, 3.8f), + ANTIPOISON_3(ItemID.ANTIPOISON3, 5, 37.5f), + RELICYMS_BALM_3(ItemID.RELICYMS_BALM3, 8, 40), + TARROMIN(ItemID.TARROMIN, 11, 5), + STRENGTH_POTION_3(ItemID.STRENGTH_POTION3, 12, 50), + SERUM_207_3(ItemID.SERUM_207_3, 15, 50), + GUTHIX_REST_3(ItemID.GUTHIX_REST3, 18, 59), + GUAM_TAR(ItemID.GUAM_TAR, 19, 30), + HARRALANDER(ItemID.HARRALANDER, 20, 6.3f), + COMPOST_POTION_3(ItemID.COMPOST_POTION3, 22, 60), + RESTORE_POTION_3(ItemID.RESTORE_POTION3, 22, 62.5f), + RANARR_WEED(ItemID.RANARR_WEED, 25, 7.5f), + ENERGY_POTION_3(ItemID.ENERGY_POTION3, 26, 67.5f), + TOADFLAX(ItemID.TOADFLAX, 30, 8), + DEFENCE_POTION_3(ItemID.DEFENCE_POTION3, 30, 75), + MARRENTILL_TAR(ItemID.MARRENTILL_TAR, 31, 42.5f), + AGILITY_POTION_3(ItemID.AGILITY_POTION3, 34, 80), + COMBAT_POTION_3(ItemID.COMBAT_POTION3, 36, 84), + PRAYER_POTION_3(ItemID.PRAYER_POTION3, 38, 87.5f), + TARROMIN_TAR(ItemID.TARROMIN_TAR, 39, 55), + IRIT_LEAF(ItemID.IRIT_LEAF, 40, 8.8f), + HARRALANDER_TAR(ItemID.HARRALANDER_TAR, 44, 72.5f), + SUPER_ATTACK_3(ItemID.SUPER_ATTACK3, 45, 100), + SUPERANTIPOISON_3(ItemID.SUPERANTIPOISON3, 48, 106.3f), + AVANTOE(ItemID.AVANTOE, 48, 10), + FISHING_POTION_3(ItemID.FISHING_POTION3, 50, 112.5f), + SUPER_ENERGY_3(ItemID.SUPER_ENERGY3, 52, 117.5f), + HUNTER_POTION_3(ItemID.HUNTER_POTION3, 53, 120), + KWUARM(ItemID.KWUARM, 54, 11.3f), + SUPER_STRENGTH_3(ItemID.SUPER_STRENGTH3, 55, 125), + MAGIC_ESSENCE_POTION_3(ItemID.MAGIC_ESSENCE3, 57, 130), + SNAPDRAGON(ItemID.SNAPDRAGON, 59, 11.8f), + WEAPON_POISON(ItemID.WEAPON_POISON, 60, 137.5f), + SUPER_RESTORE_3(ItemID.SUPER_RESTORE3, 63, 142.5f), + CADANTINE(ItemID.CADANTINE, 65, 12.5f), + SANFEW_SERUM_3(ItemID.SANFEW_SERUM3, 65, 160), + SUPER_DEFENCE_3(ItemID.SUPER_DEFENCE3, 66, 150), + LANTADYME(ItemID.LANTADYME, 67, 13.1f), + ANTIDOTE_PLUS_3(ItemID.ANTIDOTE3, 68, 155), + ANTIFIRE_POTION_3(ItemID.ANTIFIRE_POTION3, 69, 157.5f), + DIVINE_SUPER_ATTACK_POTION_4(ItemID.DIVINE_SUPER_ATTACK_POTION4, 70, 2), + DIVINE_SUPER_DEFENCE_POTION_4(ItemID.DIVINE_SUPER_DEFENCE_POTION4, 70, 2), + DIVINE_SUPER_STRENGTH_POTION_4(ItemID.DIVINE_SUPER_STRENGTH_POTION4, 70, 2), + DWARF_WEED(ItemID.DWARF_WEED, 70, 13.8f), + RANGING_POTION_3(ItemID.RANGING_POTION3, 72, 162.5f), + WEAPON_POISON_PLUS(ItemID.WEAPON_POISON_5937, 73, 165), + DIVINE_RANGING_POTION_4(ItemID.DIVINE_RANGING_POTION4, 74, 2), + TORSTOL(ItemID.TORSTOL, 75, 15), + MAGIC_POTION_3(ItemID.MAGIC_POTION3, 76, 172.5f), + STAMINA_POTION_3(ItemID.STAMINA_POTION3, 77, 76.5f), + STAMINA_POTION_4(ItemID.STAMINA_POTION4, 77, 102), + DIVINE_MAGIC_POTION_4(ItemID.DIVINE_MAGIC_POTION4, 78, 2), + ZAMORAK_BREW_3(ItemID.ZAMORAK_BREW3, 78, 175), + ANTIDOTE_PLUS_PLUS_3(ItemID.ANTIDOTE3_5954, 79, 177.5f), + BASTION_POTION_3(ItemID.BASTION_POTION3, 80, 155), + BATTLEMAGE_POTION_3(ItemID.BATTLEMAGE_POTION3, 80, 155), + SARADOMIN_BREW_3(ItemID.SARADOMIN_BREW3, 81, 180), + WEAPON_POISON_PLUS_PLUS(ItemID.WEAPON_POISON_5940, 82, 190), + EXTENDED_ANTIFIRE_3(ItemID.EXTENDED_ANTIFIRE3, 84, 82.5f), + EXTENDED_ANTIFIRE_4(ItemID.EXTENDED_ANTIFIRE4, 84, 110), + DIVINE_BASTION_POTION_4(ItemID.DIVINE_BASTION_POTION4, 86, 2), + DIVINE_BATTLEMAGE_POTION_4(ItemID.DIVINE_BATTLEMAGE_POTION4, 86, 2), + ANTIVENOM_3(ItemID.ANTIVENOM3, 87, 90), + ANTIVENOM_4(ItemID.ANTIVENOM4, 87, 120), + SUPER_COMBAT_POTION_4(ItemID.SUPER_COMBAT_POTION4, 90, 150), + SUPER_ANTIFIRE_4(ItemID.SUPER_ANTIFIRE_POTION4, 92, 130), + ANTIVENOM_PLUS_4(ItemID.ANTIVENOM4_12913, 94, 125), + DIVINE_SUPER_COMBAT_POTION_4(ItemID.DIVINE_SUPER_COMBAT_POTION4, 97, 2), + EXTENDED_SUPER_ANTIFIRE_3(ItemID.SUPER_ANTIFIRE_POTION3, 98, 120), + EXTENDED_SUPER_ANTIFIRE_4(ItemID.SUPER_ANTIFIRE_POTION4, 98, 160), + ; + + private final int itemId; + private final int level; + private final float xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HunterAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HunterAction.java new file mode 100644 index 0000000000..644bcd2598 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HunterAction.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum HunterAction implements NamedSkillAction +{ + CRIMSON_SWIFT("Crimson Swift", 1, 34, ItemID.CRIMSON_SWIFT), + POLAR_KEBBIT("Polar Kebbit", 1, 30, ItemID.KEBBIT), + COMMON_KEBBIT("Common Kebbit", 3, 36, ItemID.KEBBIT_9954), + GOLDEN_WARBLER("Golden Warbler", 5, 47, ItemID.GOLDEN_WARBLER), + REGULAR_BIRD_HOUSE("Regular Bird House", 5, 280, ItemID.BIRD_HOUSE), + FELDIP_WEASEL("Feldip Weasel", 7, 48, ItemID.KEBBIT_9955), + COPPER_LONGTAIL("Copper Longtail", 9, 61, ItemID.COPPER_LONGTAIL), + CERULEAN_TWITCH("Cerulean Twitch", 11, 64.5f, ItemID.CERULEAN_TWITCH), + DESERT_DEVIL("Desert Devil", 13, 66, ItemID.KEBBIT_9956), + OAK_BIRD_HOUSE("Oak Bird House", 14, 420, ItemID.OAK_BIRD_HOUSE), + RUBY_HARVEST("Ruby Harvest", 15, 24, ItemID.BUTTERFLY), + BABY_IMPLING("Baby Impling", 17, 18, ItemID.BABY_IMPLING_JAR), + TROPICAL_WAGTAIL("Tropical Wagtail", 19, 95, ItemID.TROPICAL_WAGTAIL), + YOUNG_IMPLING("Young Impling", 22, 20, ItemID.YOUNG_IMPLING_JAR), + WILD_KEBBIT("Wild Kebbit", 23, 128, ItemID.KEBBIT), + WILLOW_BIRD_HOUSE("Willow Bird House", 24, 560, ItemID.WILLOW_BIRD_HOUSE), + SAPPHIRE_GLACIALIS("Sapphire Glacialis", 25, 34, ItemID.BUTTERFLY_9971), + FERRET("Ferret", 27, 115, ItemID.FERRET), + WHITE_RABBIT("White Rabbit", 27, 144, ItemID.RABBIT), + GOURMET_IMPLING("Gourmet Impling", 28, 22, ItemID.GOURMET_IMPLING_JAR), + SWAMP_LIZARD("Swamp Lizard", 29, 152, ItemID.SWAMP_LIZARD), + SPINED_LARUPIA("Spined Larupia", 31, 180, ItemID.LARUPIA_HAT), + BARB_TAILED_KEBBIT("Barb-tailed Kebbit", 33, 168, ItemID.KEBBIT_9958), + TEAK_BIRD_HOUSE("Teak Bird House", 34, 700, ItemID.TEAK_BIRD_HOUSE), + SNOWY_KNIGHT("Snowy Knight", 35, 44, ItemID.BUTTERFLY_9972), + EARTH_IMPLING("Earth Impling", 36, 25, ItemID.EARTH_IMPLING_JAR), + PRICKLY_KEBBIT("Prickly Kebbit", 37, 204, ItemID.KEBBIT_9957), + HORNED_GRAAHK("Horned Graahk", 41, 240, ItemID.GRAAHK_HEADDRESS), + ESSENCE_IMPLING("Essence Impling", 42, 27, ItemID.ESSENCE_IMPLING_JAR), + SPOTTED_KEBBIT("Spotted Kebbit", 43, 104, ItemID.KEBBIT_9960), + MAPLE_BIRD_HOUSE("Maple Bird House", 44, 820, ItemID.MAPLE_BIRD_HOUSE), + BLACK_WARLOCK("Black Warlock", 45, 54, ItemID.BUTTERFLY_9973), + ORANGE_SALAMANDER("Orange Salamander", 47, 224, ItemID.ORANGE_SALAMANDER), + RAZOR_BACKED_KEBBIT("Razor-backed Kebbit", 49, 348, ItemID.KEBBIT_9961), + MAHOGANY_BIRD_HOUSE("Mahogany Bird House", 49, 960, ItemID.MAHOGANY_BIRD_HOUSE), + ECLECTIC_IMPLING("Eclectic Impling", 50, 32, ItemID.ECLECTIC_IMPLING_JAR), + SABRE_TOOTHED_KEBBIT("Sabre-toothed Kebbit", 51, 200, ItemID.KEBBIT_9959), + CHINCHOMPA("Chinchompa", 53, 198.3f, ItemID.CHINCHOMPA), + SABRE_TOOTHED_KYATT("Sabre-toothed Kyatt", 55, 300, ItemID.KYATT_HAT), + DARK_KEBBIT("Dark Kebbit", 57, 132, ItemID.KEBBIT_9963), + NATURE_IMPLING("Nature Impling", 58, 34, ItemID.NATURE_IMPLING_JAR), + RED_SALAMANDER("Red Salamander", 59, 272, ItemID.RED_SALAMANDER), + YEW_BIRD_HOUSE("Yew Bird House", 59, 1020, ItemID.YEW_BIRD_HOUSE), + MANIACAL_MONKEY("Maniacal Monkey", 60, 1000, ItemID.MONKEY_19556), + CARNIVOROUS_CHINCHOMPA("Carnivorous Chinchompa", 63, 265, ItemID.RED_CHINCHOMPA), + MAGPIE_IMPLING("Magpie Impling", 65, 44, ItemID.MAGPIE_IMPLING_JAR), + MAGPIE_IMPLING_GIELINOR("Magpie Impling (Gielinor)", 65, 216, ItemID.MAGPIE_IMPLING_JAR), + BLACK_SALAMANDER("Black Salamander", 67, 319.5f, ItemID.BLACK_SALAMANDER), + DASHING_KEBBIT("Dashing Kebbit", 69, 156, ItemID.KEBBIT_9964), + BLACK_CHINCHOMPA("Black Chinchompa", 73, 315, ItemID.BLACK_CHINCHOMPA), + MAGIC_BIRD_HOUSE("Magic Bird House", 74, 1140, ItemID.MAGIC_BIRD_HOUSE), + NINJA_IMPLING("Ninja Impling", 74, 52, ItemID.NINJA_IMPLING_JAR), + NINJA_IMPLING_GIELINOR("Ninja Impling (Gielinor)", 74, 240, ItemID.NINJA_IMPLING_JAR), + CRYSTAL_IMPLING("Crystal Impling", 80, 280, ItemID.CRYSTAL_IMPLING_JAR), + DRAGON_IMPLING("Dragon Impling", 83, 65, ItemID.DRAGON_IMPLING_JAR), + DRAGON_IMPLING_GIELINOR("Dragon Impling (Gielinor)", 83, 300, ItemID.DRAGON_IMPLING_JAR), + REDWOOD_BIRD_HOUSE("Redwood Bird House", 89, 1200, ItemID.REDWOOD_BIRD_HOUSE), + LUCKY_IMPLING("Lucky Impling", 89, 380, ItemID.LUCKY_IMPLING_JAR), + ; + + private final String name; + private final int level; + private final float xp; + private final int icon; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CacheSkillData.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ItemSkillAction.java similarity index 56% rename from runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CacheSkillData.java rename to runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ItemSkillAction.java index 4959390271..61a148749a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CacheSkillData.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ItemSkillAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Kruithne + * Copyright (c) 2021, Jordan Atwood * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,38 +22,46 @@ * (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.skillcalculator; +package net.runelite.client.plugins.skillcalculator.skills; -import com.google.gson.Gson; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.Map; -import net.runelite.client.plugins.skillcalculator.beans.SkillData; +import net.runelite.client.game.ItemManager; -class CacheSkillData +/** + * An object representing a single skill action involving an item which grants some xp. + */ +public interface ItemSkillAction extends SkillAction { - private final Map cache = new HashMap<>(); + /** + * Gets the item ID used for this action. + * + * @return The item ID used for this action. + * @see net.runelite.api.ItemID + */ + int getItemId(); - SkillData getSkillData(String dataFile) + /** + * Gets the item icon ID for this skill action. + * + * @return The item icon ID of this skill action. + * @see net.runelite.api.ItemID + * @see #getItemId() + */ + @Override + default int getIcon() { - if (cache.containsKey(dataFile)) - { - return cache.get(dataFile); - } - - try (InputStream skillDataFile = SkillCalculatorPlugin.class.getResourceAsStream(dataFile)) - { - SkillData skillData = new Gson().fromJson(new InputStreamReader(skillDataFile, StandardCharsets.UTF_8), SkillData.class); - - cache.put(dataFile, skillData); - return skillData; - } - catch (IOException e) - { - throw new RuntimeException(e); - } + return getItemId(); } -} \ No newline at end of file + + /** + * Gets the name of this skill action's associated item. + * + * @param itemManager An {@link ItemManager item manager} instance. + * @return The name of this skill action item. + * @see #getItemId() + */ + @Override + default String getName(final ItemManager itemManager) + { + return itemManager.getItemComposition(getItemId()).getName(); + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MagicAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MagicAction.java new file mode 100644 index 0000000000..e907ebb48a --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MagicAction.java @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.SpriteID; +import net.runelite.client.game.ItemManager; + +@AllArgsConstructor +@Getter +public enum MagicAction implements SkillAction +{ + WIND_STRIKE("Wind Strike", 1, 5.5f, SpriteID.SPELL_WIND_STRIKE), + CONFUSE("Confuse", 3, 13, SpriteID.SPELL_CONFUSE), + ENCHANT_OPAL_BOLT("Enchant Opal Bolt", 4, 9, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + WATER_STRIKE("Water Strike", 5, 7.5f, SpriteID.SPELL_WATER_STRIKE), + ARCEUUS_LIBRARY_TELEPORT("Arceuus Library Teleport", 6, 10, SpriteID.SPELL_ARCEUUS_LIBRARY_TELEPORT), + ENCHANT_SAPPHIRE_JEWELLERY("Enchant Sapphire Jewellery", 7, 17.5f, SpriteID.SPELL_LVL_1_ENCHANT), + ENCHANT_SAPPHIRE_BOLT("Enchant Sapphire Bolt", 7, 17.5f, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + EARTH_STRIKE("Earth Strike", 9, 9.5f, SpriteID.SPELL_EARTH_STRIKE), + WEAKEN("Weaken", 11, 21, SpriteID.SPELL_WEAKEN), + FIRE_STRIKE("Fire Strike", 13, 11.5f, SpriteID.SPELL_FIRE_STRIKE), + ENCHANT_JADE_BOLT("Enchant Jade Bolt", 14, 19, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + BONES_TO_BANANAS("Bones To Bananas", 15, 25, SpriteID.SPELL_BONES_TO_BANANAS), + BASIC_REANIMATION("Basic Reanimation", 16, 32, SpriteID.SPELL_BASIC_REANIMATION), + DRAYNOR_MANOR_TELEPORT("Draynor Manor Teleport", 17, 16, SpriteID.SPELL_DRAYNOR_MANOR_TELEPORT), + WIND_BOLT("Wind Bolt", 17, 13.5f, SpriteID.SPELL_WIND_BOLT), + CURSE("Curse", 19, 29, SpriteID.SPELL_CURSE), + BIND("Bind", 20, 30, SpriteID.SPELL_BIND), + LOW_LEVEL_ALCHEMY("Low Level Alchemy", 21, 31, SpriteID.SPELL_LOW_LEVEL_ALCHEMY), + WATER_BOLT("Water Bolt", 23, 16.5f, SpriteID.SPELL_WATER_BOLT), + ENCHANT_PEARL_BOLT("Enchant Pearl Bolt", 24, 29, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + VARROCK_TELEPORT("Varrock Teleport", 25, 35, SpriteID.SPELL_VARROCK_TELEPORT), + ENCHANT_EMERALD_JEWELLERY("Enchant Emerald Jewellery", 27, 37, SpriteID.SPELL_LVL_2_ENCHANT), + ENCHANT_EMERALD_BOLT("Enchant Emerald Bolt", 27, 37, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + MIND_ALTAR_TELEPORT("Mind Altar Teleport", 28, 22, SpriteID.SPELL_MIND_ALTAR_TELEPORT), + ENCHANT_TOPAZ_BOLT("Enchant Topaz Bolt", 29, 33, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + EARTH_BOLT("Earth Bolt", 29, 19.5f, SpriteID.SPELL_EARTH_BOLT), + LUMBRIDGE_TELEPORT("Lumbridge Teleport", 31, 41, SpriteID.SPELL_LUMBRIDGE_TELEPORT), + TELEKINETIC_GRAB("Telekinetic Grab", 33, 43, SpriteID.SPELL_TELEKINETIC_GRAB), + RESPAWN_TELEPORT("Respawn Teleport", 34, 27, SpriteID.SPELL_RESPAWN_TELEPORT), + FIRE_BOLT("Fire Bolt", 35, 22.5f, SpriteID.SPELL_FIRE_BOLT), + GHOSTLY_GRASP("Ghostly Grasp", 35, 22.5f, SpriteID.SPELL_GHOSTLY_GRASP), + FALADOR_TELEPORT("Falador Teleport", 37, 48, SpriteID.SPELL_FALADOR_TELEPORT), + RESURRECT_LESSER_THRALL("Resurrect Lesser Thrall", 38, 55, SpriteID.SPELL_RESURRECT_LESSER_GHOST), + CRUMBLE_UNDEAD("Crumble Undead", 39, 24.5f, SpriteID.SPELL_CRUMBLE_UNDEAD), + SALVE_GRAVEYARD_TELEPORT("Salve Graveyard Teleport", 40, 30, SpriteID.SPELL_SALVE_GRAVEYARD_TELEPORT), + TELEPORT_TO_HOUSE("Teleport To House", 40, 30, SpriteID.SPELL_TELEPORT_TO_HOUSE), + ADEPT_REANIMATION("Adept Reanimation", 41, 80, SpriteID.SPELL_ADEPT_REANIMATION), + WIND_BLAST("Wind Blast", 41, 25.5f, SpriteID.SPELL_WIND_BLAST), + SUPERHEAT_ITEM("Superheat Item", 43, 53, SpriteID.SPELL_SUPERHEAT_ITEM), + INFERIOR_DEMONBANE("Inferior Demonbane", 44, 27, SpriteID.SPELL_INFERIOR_DEMONBANE), + CAMELOT_TELEPORT("Camelot Teleport", 45, 55.5f, SpriteID.SPELL_CAMELOT_TELEPORT), + WATER_BLAST("Water Blast", 47, 28.5f, SpriteID.SPELL_WATER_BLAST), + SHADOW_VEIL("Shadow Veil", 47, 58, SpriteID.SPELL_SHADOW_VEIL), + FENKENSTRAINS_CASTLE_TELEPORT("Fenkenstrain's Castle Teleport", 48, 50, SpriteID.SPELL_FENKENSTRAINS_CASTLE_TELEPORT), + ENCHANT_RUBY_JEWELLERY("Enchant Ruby Jewellery", 49, 59, SpriteID.SPELL_LVL_3_ENCHANT), + ENCHANT_RUBY_BOLT("Enchant Ruby Bolt", 49, 59, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + IBAN_BLAST("Iban Blast", 50, 30, SpriteID.SPELL_IBAN_BLAST), + SMOKE_RUSH("Smoke Rush", 50, 30, SpriteID.SPELL_SMOKE_RUSH), + MAGIC_DART("Magic Dart", 50, 30, SpriteID.SPELL_MAGIC_DART), + SNARE("Snare", 50, 60, SpriteID.SPELL_SNARE), + DARK_LURE("Dark Lure", 50, 60, SpriteID.SPELL_DARK_LURE), + ARDOUGNE_TELEPORT("Ardougne Teleport", 51, 61, SpriteID.SPELL_ARDOUGNE_TELEPORT), + SHADOW_RUSH("Shadow Rush", 52, 31, SpriteID.SPELL_SHADOW_RUSH), + EARTH_BLAST("Earth Blast", 53, 31.5f, SpriteID.SPELL_EARTH_BLAST), + PADDEWWA_TELEPORT("Paddewwa Teleport", 54, 64, SpriteID.SPELL_PADDEWWA_TELEPORT), + HIGH_LEVEL_ALCHEMY("High Level Alchemy", 55, 65, SpriteID.SPELL_HIGH_LEVEL_ALCHEMY), + CHARGE_WATER_ORB("Charge Water Orb", 56, 66, SpriteID.SPELL_CHARGE_WATER_ORB), + BLOOD_RUSH("Blood Rush", 56, 33, SpriteID.SPELL_BLOOD_RUSH), + SKELETAL_GRASP("Skeletal Grasp", 56, 33, SpriteID.SPELL_SKELETAL_GRASP), + ENCHANT_DIAMOND_BOLT("Enchant Diamond Bolt", 57, 67, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + ENCHANT_DIAMOND_JEWELLERY("Enchant Diamond Jewellery", 57, 67, SpriteID.SPELL_LVL_4_ENCHANT), + RESURRECT_SUPERIOR_THRALL("Resurrect Superior Thrall", 57, 70, SpriteID.SPELL_RESURRECT_SUPERIOR_SKELETON), + WATCHTOWER_TELEPORT("Watchtower Teleport", 58, 68, SpriteID.SPELL_WATCHTOWER_TELEPORT), + ICE_RUSH("Ice Rush", 58, 34, SpriteID.SPELL_ICE_RUSH), + FIRE_BLAST("Fire Blast", 59, 34.5f, SpriteID.SPELL_FIRE_BLAST), + MARK_OF_DARKNESS("Mark of Darkness", 59, 70, SpriteID.SPELL_MARK_OF_DARKNESS), + SENNTISTEN_TELEPORT("Senntisten Teleport", 60, 70, SpriteID.SPELL_SENNTISTEN_TELEPORT), + CLAWS_OF_GUTHIX("Claws Of Guthix", 60, 35, SpriteID.SPELL_CLAWS_OF_GUTHIC), + FLAMES_OF_ZAMORAK("Flames Of Zamorak", 60, 35, SpriteID.SPELL_FLAMES_OF_ZAMORAK), + SARADOMIN_STRIKE("Saradomin Strike", 60, 35, SpriteID.SPELL_SARADOMIN_STRIKE), + CHARGE_EARTH_ORB("Charge Earth Orb", 60, 70, SpriteID.SPELL_CHARGE_EARTH_ORB), + BONES_TO_PEACHES("Bones To Peaches", 60, 35.5f, SpriteID.SPELL_BONES_TO_PEACHES), + WEST_ARDOUGNE_TELEPORT("West Ardougne Teleport", 61, 68, SpriteID.SPELL_WEST_ARDOUGNE_TELEPORT), + TROLLHEIM_TELEPORT("Trollheim Teleport", 61, 68, SpriteID.SPELL_TROLLHEIM_TELEPORT), + SMOKE_BURST("Smoke Burst", 62, 36, SpriteID.SPELL_SMOKE_BURST), + WIND_WAVE("Wind Wave", 62, 36, SpriteID.SPELL_WIND_WAVE), + SUPERIOR_DEMONBANE("Superior Demonbane", 62, 36, SpriteID.SPELL_SUPERIOR_DEMONBANE), + CHARGE_FIRE_ORB("Charge Fire Orb", 63, 73, SpriteID.SPELL_CHARGE_FIRE_ORB), + SHADOW_BURST("Shadow Burst", 64, 37, SpriteID.SPELL_SHADOW_BURST), + TELEPORT_APE_ATOLL("Teleport Ape Atoll", 64, 74, SpriteID.SPELL_TELEPORT_TO_APE_ATOLL), + LESSER_CORRUPTION("Lesser Corruption", 64, 75, SpriteID.SPELL_LESSER_CORRUPTION), + BAKE_PIE("Bake Pie", 65, 60, SpriteID.SPELL_BAKE_PIE), + HARMONY_ISLAND_TELEPORT("Harmony Island Teleport", 65, 74, SpriteID.SPELL_HARMONY_ISLAND_TELEPORT), + GEOMANCY("Geomancy", 65, 60, SpriteID.SPELL_GEOMANCY), + WATER_WAVE("Water Wave", 65, 37.5f, SpriteID.SPELL_WATER_WAVE), + CHARGE_AIR_ORB("Charge Air Orb", 66, 76, SpriteID.SPELL_CHARGE_AIR_ORB), + CURE_PLANT("Cure Plant", 66, 60, SpriteID.SPELL_CURE_PLANT), + KHARYRLL_TELEPORT("Kharyrll Teleport", 66, 76, SpriteID.SPELL_KHARYRLL_TELEPORT), + VULNERABILITY("Vulnerability", 66, 76, SpriteID.SPELL_VULNERABILITY), + MONSTER_EXAMINE("Monster Examine", 66, 61, SpriteID.SPELL_MONSTER_EXAMINE), + VILE_VIGOUR("Vile Vigour", 66, 76, SpriteID.SPELL_VILE_VIGOUR), + NPC_CONTACT("Npc Contact", 67, 63, SpriteID.SPELL_NPC_CONTACT), + BLOOD_BURST("Blood Burst", 68, 39, SpriteID.SPELL_BLOOD_BURST), + CURE_OTHER("Cure Other", 68, 65, SpriteID.SPELL_CURE_OTHER), + ENCHANT_DRAGONSTONE_JEWELLERY("Enchant Dragonstone Jewellery", 68, 78, SpriteID.SPELL_LVL_5_ENCHANT), + ENCHANT_DRAGONSTONE_BOLT("Enchant Dragonstone Bolt", 68, 78, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + HUMIDIFY("Humidify", 68, 65, SpriteID.SPELL_HUMIDIFY), + MOONCLAN_TELEPORT("Moonclan Teleport", 69, 66, SpriteID.SPELL_MOONCLAN_TELEPORT), + EARTH_WAVE("Earth Wave", 70, 40, SpriteID.SPELL_EARTH_WAVE), + ICE_BURST("Ice Burst", 70, 40, SpriteID.SPELL_ICE_BURST), + TELE_GROUP_MOONCLAN("Tele Group Moonclan", 70, 67, SpriteID.SPELL_TELE_GROUP_MOONCLAN), + DEGRIME("Degrime", 70, 83, SpriteID.SPELL_DEGRIME), + OURANIA_TELEPORT("Ourania Teleport", 71, 69, SpriteID.SPELL_OURANIA_TELEPORT), + CEMETERY_TELEPORT("Cemetery Teleport", 71, 82, SpriteID.SPELL_CEMETERY_TELEPORT), + CURE_ME("Cure Me", 71, 69, SpriteID.SPELL_CURE_ME), + HUNTER_KIT("Hunter Kit", 71, 70, SpriteID.SPELL_HUNTER_KIT), + EXPERT_REANIMATION("Expert Reanimation", 72, 138, SpriteID.SPELL_EXPERT_REANIMATION), + LASSAR_TELEPORT("Lassar Teleport", 72, 82, SpriteID.SPELL_LASSAR_TELEPORT), + WATERBIRTH_TELEPORT("Waterbirth Teleport", 72, 71, SpriteID.SPELL_WATERBIRTH_TELEPORT), + TELE_GROUP_WATERBIRTH("Tele Group Waterbirth", 73, 72, SpriteID.SPELL_TELE_GROUP_WATERBIRTH), + ENFEEBLE("Enfeeble", 73, 83, SpriteID.SPELL_ENFEEBLE), + WARD_OF_ARCEUUS("Ward of Arceuus", 73, 83, SpriteID.SPELL_WARD_OF_ARCEUUS), + TELEOTHER_LUMBRIDGE("Teleother Lumbridge", 74, 84, SpriteID.SPELL_TELEOTHER_LUMBRIDGE), + SMOKE_BLITZ("Smoke Blitz", 74, 42, SpriteID.SPELL_SMOKE_BLITZ), + CURE_GROUP("Cure Group", 74, 74, SpriteID.SPELL_CURE_GROUP), + STAT_SPY("Stat Spy", 75, 76, SpriteID.SPELL_STAT_SPY), + BARBARIAN_TELEPORT("Barbarian Teleport", 75, 76, SpriteID.SPELL_BARBARIAN_TELEPORT), + FIRE_WAVE("Fire Wave", 75, 42.5f, SpriteID.SPELL_FIRE_WAVE), + TELE_GROUP_BARBARIAN("Tele Group Barbarian", 76, 77, SpriteID.SPELL_TELE_GROUP_ICE_PLATEAU), + SHADOW_BLITZ("Shadow Blitz", 76, 43, SpriteID.SPELL_SHADOW_BLITZ), + SPIN_FLAX("Spin Flax", 76, 75, SpriteID.SPELL_SPIN_FLAX), + RESURRECT_GREATER_THRALL("Resurrect Greater Thrall", 76, 88, SpriteID.SPELL_RESURRECT_GREATER_ZOMBIE), + SUPERGLASS_MAKE("Superglass Make", 77, 78, SpriteID.SPELL_SUPERGLASS_MAKE), + TAN_LEATHER("Tan Leather", 78, 81, SpriteID.SPELL_TAN_LEATHER), + KHAZARD_TELEPORT("Khazard Teleport", 78, 80, SpriteID.SPELL_KHAZARD_TELEPORT), + DAREEYAK_TELEPORT("Dareeyak Teleport", 78, 88, SpriteID.SPELL_DAREEYAK_TELEPORT), + RESURRECT_CROPS("Resurrect Crops", 78, 90, SpriteID.SPELL_RESURRECT_CROPS), + ENTANGLE("Entangle", 79, 89, SpriteID.SPELL_ENTANGLE), + TELE_GROUP_KHAZARD("Tele Group Khazard", 79, 81, SpriteID.SPELL_TELE_GROUP_KHAZARD), + DREAM("Dream", 79, 82, SpriteID.SPELL_DREAM), + UNDEAD_GRASP("Undead Grasp", 79, 46.5f, SpriteID.SPELL_UNDEAD_GRASP), + CHARGE("Charge", 80, 180, SpriteID.SPELL_CHARGE), + BLOOD_BLITZ("Blood Blitz", 80, 45, SpriteID.SPELL_BLOOD_BLITZ), + STUN("Stun", 80, 90, SpriteID.SPELL_STUN), + STRING_JEWELLERY("String Jewellery", 80, 83, SpriteID.SPELL_STRING_JEWELLERY), + DEATH_CHARGE("Death Charge", 80, 90, SpriteID.SPELL_DEATH_CHARGE), + STAT_RESTORE_POT_SHARE("Stat Restore Pot Share", 81, 84, SpriteID.SPELL_STAT_RESTORE_POT_SHARE), + WIND_SURGE("Wind Surge", 81, 44, SpriteID.SPELL_WIND_SURGE), + TELEOTHER_FALADOR("Teleother Falador", 82, 92, SpriteID.SPELL_TELEOTHER_FALADOR), + MAGIC_IMBUE("Magic Imbue", 82, 86, SpriteID.SPELL_MAGIC_IMBUE), + ICE_BLITZ("Ice Blitz", 82, 46, SpriteID.SPELL_ICE_BLITZ), + DARK_DEMONBANE("Dark Demonbane", 82, 43.5f, SpriteID.SPELL_DARK_DEMONBANE), + FERTILE_SOIL("Fertile Soil", 83, 87, SpriteID.SPELL_FERTILE_SOIL), + BARROWS_TELEPORT("Barrows Teleport", 83, 90, SpriteID.SPELL_BARROWS_TELEPORT), + CARRALLANGAR_TELEPORT("Carrallangar Teleport", 84, 82, SpriteID.SPELL_CARRALLANGAR_TELEPORT), + BOOST_POTION_SHARE("Boost Potion Share", 84, 88, SpriteID.SPELL_BOOST_POTION_SHARE), + DEMONIC_OFFERING("Demonic Offering", 84, 175, SpriteID.SPELL_DEMONIC_OFFERING), + WATER_SURGE("Water Surge", 85, 46, SpriteID.SPELL_WATER_SURGE), + FISHING_GUILD_TELEPORT("Fishing Guild Teleport", 85, 89, SpriteID.SPELL_FISHING_GUILD_TELEPORT), + TELE_BLOCK("Tele Block", 85, 80, SpriteID.SPELL_TELE_BLOCK), + TELEPORT_TO_TARGET("Teleport To Target", 85, 45, SpriteID.SPELL_TELEPORT_TO_BOUNTY_TARGET), + GREATER_CORRUPTION("Greater Corruption", 85, 95, SpriteID.SPELL_GREATER_CORRUPTION), + SMOKE_BARRAGE("Smoke Barrage", 86, 48, SpriteID.SPELL_SMOKE_BARRAGE), + TELE_GROUP_FISHING_GUILD("Tele Group Fishing Guild", 86, 90, SpriteID.SPELL_TELE_GROUP_FISHING_GUILD), + PLANK_MAKE("Plank Make", 86, 90, SpriteID.SPELL_PLANK_MAKE), + CATHERBY_TELEPORT("Catherby Teleport", 87, 92, SpriteID.SPELL_CATHERBY_TELEPORT), + ENCHANT_ONYX_JEWELLERY("Enchant Onyx Jewellery", 87, 97, SpriteID.SPELL_LVL_6_ENCHANT), + ENCHANT_ONYX_BOLT("Enchant Onyx Bolt", 87, 97, SpriteID.SPELL_ENCHANT_CROSSBOW_BOLT), + SHADOW_BARRAGE("Shadow Barrage", 88, 48, SpriteID.SPELL_SHADOW_BARRAGE), + TELE_GROUP_CATHERBY("Tele Group Catherby", 88, 93, SpriteID.SPELL_TELE_GROUP_CATHERBY), + ICE_PLATEAU_TELEPORT("Ice Plateau Teleport", 89, 96, SpriteID.SPELL_ICE_PLATEAU_TELEPORT), + RECHARGE_DRAGONSTONE("Recharge Dragonstone", 89, 97.5f, SpriteID.SPELL_RECHARGE_DRAGONSTONE), + ANNAKARL_TELEPORT("Annakarl Teleport", 90, 100, SpriteID.SPELL_ANNAKARL_TELEPORT), + EARTH_SURGE("Earth Surge", 90, 48, SpriteID.SPELL_EARTH_SURGE), + MASTER_REANIMATION("Master Reanimation", 90, 170, SpriteID.SPELL_MASTER_REANIMATION), + TELE_GROUP_ICE_PLATEAU("Tele Group Ice Plateau", 90, 99, SpriteID.SPELL_TELE_GROUP_ICE_PLATEAU), + TELEOTHER_CAMELOT("Teleother Camelot", 90, 100, SpriteID.SPELL_TELEOTHER_CAMELOT), + APE_ATOLL_TELEPORT("Ape Atoll Teleport", 90, 100, SpriteID.SPELL_APE_ATOLL_TELEPORT), + ENERGY_TRANSFER("Energy Transfer", 91, 100, SpriteID.SPELL_ENERGY_TRANSFER), + BLOOD_BARRAGE("Blood Barrage", 92, 51, SpriteID.SPELL_BLOOD_BARRAGE), + HEAL_OTHER("Heal Other", 92, 101, SpriteID.SPELL_HEAL_OTHER), + SINISTER_OFFERING("Sinister Offering", 92, 180, SpriteID.SPELL_SINISTER_OFFERING), + VENGEANCE_OTHER("Vengeance Other", 93, 108, SpriteID.SPELL_VENGEANCE_OTHER), + ENCHANT_ZENYTE_JEWELLERY("Enchant Zenyte Jewellery", 93, 110, SpriteID.SPELL_LVL_7_ENCHANT), + ICE_BARRAGE("Ice Barrage", 94, 52, SpriteID.SPELL_ICE_BARRAGE), + VENGEANCE("Vengeance", 94, 112, SpriteID.SPELL_VENGEANCE), + HEAL_GROUP("Heal Group", 95, 124, SpriteID.SPELL_HEAL_GROUP), + FIRE_SURGE("Fire Surge", 95, 51, SpriteID.SPELL_FIRE_SURGE), + GHORROCK_TELEPORT("Ghorrock Teleport", 96, 106, SpriteID.SPELL_GHORROCK_TELEPORT), + SPELLBOOK_SWAP("Spellbook Swap", 96, 130, SpriteID.SPELL_SPELLBOOK_SWAP), + ; + + private final String name; + private final int level; + private final float xp; + private final int sprite; + + @Override + public String getName(final ItemManager itemManager) + { + return getName(); + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningAction.java new file mode 100644 index 0000000000..e16b0cd6c2 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningAction.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; +import net.runelite.api.NullItemID; + +@AllArgsConstructor +@Getter +public enum MiningAction implements NamedSkillAction +{ + CLAY("Clay", 1, 5, ItemID.CLAY), + RUNE_ESSENCE("Rune essence", 1, 5, ItemID.RUNE_ESSENCE), + COPPER_ORE("Copper ore", 1, 17.5f, ItemID.COPPER_ORE), + TIN_ORE("Tin ore", 1, 17.5f, ItemID.TIN_ORE), + LIMESTONE("Limestone", 10, 26.5f, ItemID.LIMESTONE), + BARRONITE_SHARDS("Barronite shards", 14, 16, NullItemID.NULL_25683), + BARRONITE_DEPOSIT("Barronite deposit", 14, 32, ItemID.BARRONITE_DEPOSIT), + IRON_ORE("Iron ore", 15, 35, ItemID.IRON_ORE), + SILVER_ORE("Silver ore", 20, 40, ItemID.SILVER_ORE), + PURE_ESSENCE("Pure essence", 30, 5, ItemID.PURE_ESSENCE), + COAL("Coal", 30, 50, ItemID.COAL), + SANDSTONE_1KG("Sandstone (1kg)", 35, 30, ItemID.SANDSTONE_1KG), + SANDSTONE_2KG("Sandstone (2kg)", 35, 40, ItemID.SANDSTONE_2KG), + SANDSTONE_5KG("Sandstone (5kg)", 35, 50, ItemID.SANDSTONE_5KG), + SANDSTONE_10KG("Sandstone (10kg)", 35, 60, ItemID.SANDSTONE_10KG), + DENSE_ESSENCE_BLOCK("Dense essence block", 38, 12, ItemID.DENSE_ESSENCE_BLOCK), + GOLD_ORE("Gold ore", 40, 65, ItemID.GOLD_ORE), + GEM_ROCKS("Gem rocks", 40, 65, ItemID.UNCUT_RED_TOPAZ), + GRANITE_500G("Granite (500g)", 45, 50, ItemID.GRANITE_500G), + GRANITE_2KG("Granite (2kg)", 45, 60, ItemID.GRANITE_2KG), + GRANITE_5KG("Granite (5kg)", 45, 75, ItemID.GRANITE_5KG), + MITHRIL_ORE("Mithril ore", 55, 80, ItemID.MITHRIL_ORE), + SOFT_CLAY("Soft clay", 70, 5, ItemID.SOFT_CLAY), + ADAMANTITE_ORE("Adamantite ore", 70, 95, ItemID.ADAMANTITE_ORE), + RUNITE_ORE("Runite ore", 85, 125, ItemID.RUNITE_ORE), + AMETHYST("Amethyst", 92, 240, ItemID.AMETHYST), + ; + + private final String name; + private final int level; + private final float xp; + private final int icon; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillDataEntry.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningBonus.java similarity index 78% rename from runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillDataEntry.java rename to runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningBonus.java index b21188d913..aba67a316d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/beans/SkillDataEntry.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/MiningBonus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Kruithne + * Copyright (c) 2021, Jordan Atwood * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,17 +22,18 @@ * (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.skillcalculator.beans; +package net.runelite.client.plugins.skillcalculator.skills; +import lombok.AllArgsConstructor; import lombok.Getter; -@Getter -public class SkillDataEntry +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum MiningBonus implements SkillBonus { - private String name; - private int level; - private double xp; - private Integer icon; - private Integer sprite; - private boolean ignoreBonus; -} \ No newline at end of file + PROSPECTOR_KIT("Prospector Kit (+2.5%)", 0.025f), + ; + + private final String name; + private final float value; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/NamedSkillAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/NamedSkillAction.java new file mode 100644 index 0000000000..b551474bc9 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/NamedSkillAction.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import net.runelite.client.game.ItemManager; + +/** + * An object representing a single skill action which grants some xp, with an explicitly defined name field. + */ +public interface NamedSkillAction extends SkillAction +{ + /** + * Gets the name of this skill action, usually the item or object created, or the spell cast. + * + * @return The name of this skill action. + */ + String getName(); + + @Override + default String getName(ItemManager itemManager) + { + return getName(); + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerAction.java new file mode 100644 index 0000000000..ba4c1fa48e --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerAction.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum PrayerAction implements ItemSkillAction +{ + ENSOULED_GOBLIN_HEAD(ItemID.ENSOULED_GOBLIN_HEAD, 1, 130, true), + ENSOULED_MONKEY_HEAD(ItemID.ENSOULED_MONKEY_HEAD, 1, 182, true), + ENSOULED_IMP_HEAD(ItemID.ENSOULED_IMP_HEAD, 1, 286, true), + ENSOULED_MINOTAUR_HEAD(ItemID.ENSOULED_MINOTAUR_HEAD, 1, 364, true), + ENSOULED_SCORPION_HEAD(ItemID.ENSOULED_SCORPION_HEAD, 1, 454, true), + ENSOULED_BEAR_HEAD(ItemID.ENSOULED_BEAR_HEAD, 1, 480, true), + ENSOULED_UNICORN_HEAD(ItemID.ENSOULED_UNICORN_HEAD, 1, 494, true), + ENSOULED_DOG_HEAD(ItemID.ENSOULED_DOG_HEAD, 1, 520, true), + ENSOULED_CHAOS_DRUID_HEAD(ItemID.ENSOULED_CHAOS_DRUID_HEAD, 1, 584, true), + ENSOULED_GIANT_HEAD(ItemID.ENSOULED_GIANT_HEAD, 1, 650, true), + ENSOULED_OGRE_HEAD(ItemID.ENSOULED_OGRE_HEAD, 1, 716, true), + ENSOULED_ELF_HEAD(ItemID.ENSOULED_ELF_HEAD, 1, 754, true), + ENSOULED_TROLL_HEAD(ItemID.ENSOULED_TROLL_HEAD, 1, 780, true), + ENSOULED_HORROR_HEAD(ItemID.ENSOULED_HORROR_HEAD, 1, 832, true), + ENSOULED_KALPHITE_HEAD(ItemID.ENSOULED_KALPHITE_HEAD, 1, 884, true), + ENSOULED_DAGANNOTH_HEAD(ItemID.ENSOULED_DAGANNOTH_HEAD, 1, 936, true), + ENSOULED_BLOODVELD_HEAD(ItemID.ENSOULED_BLOODVELD_HEAD, 1, 1040, true), + ENSOULED_TZHAAR_HEAD(ItemID.ENSOULED_TZHAAR_HEAD, 1, 1104, true), + ENSOULED_DEMON_HEAD(ItemID.ENSOULED_DEMON_HEAD, 1, 1170, true), + ENSOULED_AVIANSIE_HEAD(ItemID.ENSOULED_AVIANSIE_HEAD, 1, 1234, true), + ENSOULED_ABYSSAL_HEAD(ItemID.ENSOULED_ABYSSAL_HEAD, 1, 1300, true), + ENSOULED_DRAGON_HEAD(ItemID.ENSOULED_DRAGON_HEAD, 1, 1560, true), + FIENDISH_ASHES(ItemID.FIENDISH_ASHES, 1, 10, true), + VILE_ASHES(ItemID.VILE_ASHES, 1, 25, true), + MALICIOUS_ASHES(ItemID.MALICIOUS_ASHES, 1, 65, true), + ABYSSAL_ASHES(ItemID.ABYSSAL_ASHES, 1, 85, true), + INFERNAL_ASHES(ItemID.INFERNAL_ASHES, 1, 110, true), + BONES(ItemID.BONES, 1, 4.5f, false), + WOLF_BONES(ItemID.WOLF_BONES, 1, 4.5f, false), + LOAR_REMAINS(ItemID.LOAR_REMAINS, 1, 33, false), + BURNT_BONES(ItemID.BURNT_BONES, 1, 4.5f, false), + MONKEY_BONES(ItemID.MONKEY_BONES, 1, 5, false), + BAT_BONES(ItemID.BAT_BONES, 1, 5.3f, false), + JOGRE_BONES(ItemID.JOGRE_BONES, 1, 15, false), + BIG_BONES(ItemID.BIG_BONES, 1, 15, false), + ZOGRE_BONES(ItemID.ZOGRE_BONES, 1, 22.5f, false), + SHAIKAHAN_BONES(ItemID.SHAIKAHAN_BONES, 1, 25, false), + BABYDRAGON_BONES(ItemID.BABYDRAGON_BONES, 1, 30, false), + PHRIN_REMAINS(ItemID.PHRIN_REMAINS, 1, 46.5f, false), + WYRM_BONES(ItemID.WYRM_BONES, 1, 50, false), + RIYL_REMAINS(ItemID.RIYL_REMAINS, 1, 59.5f, false), + WYVERN_BONES(ItemID.WYVERN_BONES, 1, 72, false), + DRAGON_BONES(ItemID.DRAGON_BONES, 1, 72, false), + DRAKE_BONES(ItemID.DRAKE_BONES, 1, 80, false), + ASYN_REMAINS(ItemID.ASYN_REMAINS, 1, 82.5f, false), + FAYRG_BONES(ItemID.FAYRG_BONES, 1, 84, false), + FIYR_REMAINS(ItemID.FIYR_REMAINS, 1, 84, false), + LAVA_DRAGON_BONES(ItemID.LAVA_DRAGON_BONES, 1, 85, false), + RAURG_BONES(ItemID.RAURG_BONES, 1, 96, false), + HYDRA_BONES(ItemID.HYDRA_BONES, 1, 110, false), + DAGANNOTH_BONES(ItemID.DAGANNOTH_BONES, 1, 125, false), + OURG_BONES(ItemID.OURG_BONES, 1, 140, false), + URIUM_REMAINS(ItemID.URIUM_REMAINS, 1, 120, false), + GUPPY(ItemID.GUPPY, 1, 4, false), + CAVEFISH(ItemID.CAVEFISH, 1, 7, false), + TETRA(ItemID.TETRA, 1, 10, false), + CATFISH(ItemID.CATFISH, 1, 16, false), + SUPERIOR_DRAGON_BONES(ItemID.SUPERIOR_DRAGON_BONES, 70, 150, false), + ; + + private final int itemId; + private final int level; + private final float xp; + private final boolean ignoreBonus; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerBonus.java new file mode 100644 index 0000000000..bf0f48c537 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/PrayerBonus.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum PrayerBonus implements SkillBonus +{ + LIT_GILDED_ALTAR("Lit Gilded Altar (350%)", 2.5f), + ECTOFUNTUS("Ectofuntus (400%)", 3), + CHAOS_ALTAR("Chaos Altar (700%)", 6), + MORYTANIA_DIARY_3_SHADES("Morytania Diary 3 Shades(150%)", 0.5f), + BONECRUSHER("Bonecrusher (50%)", -0.5f), + ; + + private final String name; + private final float value; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/RunecraftAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/RunecraftAction.java new file mode 100644 index 0000000000..b779822207 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/RunecraftAction.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum RunecraftAction implements ItemSkillAction +{ + AIR_TIARA(ItemID.AIR_TIARA, 1, 25, true), + MIND_TIARA(ItemID.MIND_TIARA, 1, 27.5f, true), + WATER_TIARA(ItemID.WATER_TIARA, 1, 30, true), + EARTH_TIARA(ItemID.EARTH_TIARA, 1, 32.5f, true), + FIRE_TIARA(ItemID.FIRE_TIARA, 1, 35, true), + BODY_TIARA(ItemID.BODY_TIARA, 1, 37.5f, true), + COSMIC_TIARA(ItemID.COSMIC_TIARA, 1, 40, true), + CHAOS_TIARA(ItemID.CHAOS_TIARA, 1, 42.5f, true), + NATURE_TIARA(ItemID.NATURE_TIARA, 1, 45, true), + LAW_TIARA(ItemID.LAW_TIARA, 1, 47.5f, true), + DEATH_TIARA(ItemID.DEATH_TIARA, 1, 50, true), + WRATH_TIARA(ItemID.WRATH_TIARA, 1, 52.5f, true), + AIR_RUNE(ItemID.AIR_RUNE, 1, 5, false), + MIND_RUNE(ItemID.MIND_RUNE, 2, 5.5f, false), + MIND_CORE(ItemID.MIND_CORE, 2, 55, false), + WATER_RUNE(ItemID.WATER_RUNE, 5, 6, false), + MIST_RUNE(ItemID.MIST_RUNE, 6, 8.5f, false), + EARTH_RUNE(ItemID.EARTH_RUNE, 9, 6.5f, false), + DUST_RUNE(ItemID.DUST_RUNE, 10, 9, false), + MUD_RUNE(ItemID.MUD_RUNE, 13, 9.5f, false), + FIRE_RUNE(ItemID.FIRE_RUNE, 14, 7, false), + SMOKE_RUNE(ItemID.SMOKE_RUNE, 15, 9.5f, false), + STEAM_RUNE(ItemID.STEAM_RUNE, 19, 10, false), + BODY_RUNE(ItemID.BODY_RUNE, 20, 7.5f, false), + BODY_CORE(ItemID.BODY_CORE, 20, 75, false), + LAVA_RUNE(ItemID.LAVA_RUNE, 23, 10.5f, false), + COSMIC_RUNE(ItemID.COSMIC_RUNE, 27, 8, false), + CHAOS_RUNE(ItemID.CHAOS_RUNE, 35, 8.5f, false), + CHAOS_CORE(ItemID.CHAOS_CORE, 35, 85, false), + ASTRAL_RUNE(ItemID.ASTRAL_RUNE, 40, 8.7f, false), + NATURE_RUNE(ItemID.NATURE_RUNE, 44, 9, false), + LAW_RUNE(ItemID.LAW_RUNE, 54, 9.5f, false), + DEATH_RUNE(ItemID.DEATH_RUNE, 65, 10, false), + BLOOD_RUNE(ItemID.BLOOD_RUNE, 77, 24.425f, true), + SOUL_RUNE(ItemID.SOUL_RUNE, 90, 30.325f, true), + WRATH_RUNE(ItemID.WRATH_RUNE, 95, 8, false), + ; + + private final int itemId; + private final int level; + private final float xp; + private final boolean ignoreBonus; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/RunecraftBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/RunecraftBonus.java new file mode 100644 index 0000000000..0fa8a7477b --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/RunecraftBonus.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum RunecraftBonus implements SkillBonus +{ + DAEYALT_ESSENCE("Daeyalt essence (+50%)", 0.5f), + ; + + private final String name; + private final float value; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SkillAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SkillAction.java new file mode 100644 index 0000000000..f7b739457c --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SkillAction.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import net.runelite.api.ItemComposition; +import net.runelite.client.game.ItemManager; + +/** + * An object representing a single skill action which grants some xp. + */ +public interface SkillAction +{ + /** + * Gets the name of this skill action, usually the item or object created, or the spell cast. This name may be + * fetched via {@link ItemComposition#getName()} from some defined item ID or explicitly defined. + * + * @param itemManager An {@link ItemManager item manager} instance. + * @return The name of this skill action. + */ + String getName(final ItemManager itemManager); + + /** + * Gets the level required to perform this skill action. + * + * @return The level required to perform this skill action. + */ + int getLevel(); + + /** + * Gets the amount of xp granted for performing this skill action. + * + * @return The amount of xp granted for performing this skill action. + */ + float getXp(); + + /** + * Gets the item icon ID for this skill action, if applicable. + *

+ * Note: Either this method or {@link #getSprite()} will always return {@code -1}, and the other will return some + * value {@code 0} or greater. + * + * @return The item icon ID of this skill action, or {@code -1} if its icon should be represented using a sprite. + * @see net.runelite.api.ItemID + * @see #getSprite() + */ + default int getIcon() + { + return -1; + } + + /** + * Gets the sprite ID for this skill action, if applicable. + *

+ * Note: Either this method or {@link #getIcon()} will always return {@code -1}, and the other will return some + * value {@code 0} or greater. + * + * @return The sprite ID of this skill action, or {@code -1} if its icon should be represented using an item icon. + * @see net.runelite.api.SpriteID + * @see #getIcon() + */ + default int getSprite() + { + return -1; + } + + /** + * Returns {@code true} if this skill action is not boosted by any {@link SkillBonus skill bonuses}, {@code false} + * otherwise. + * + * @return {@code true} if this skill action is unaffected by skill bonuses, {@code false} otherwise. + */ + default boolean isIgnoreBonus() + { + return false; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SkillBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SkillBonus.java new file mode 100644 index 0000000000..cf7d1d8dcf --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SkillBonus.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +/** + * An object representing a skill bonus, such as from a skilling outfit or activity granting boosted xp. + */ +public interface SkillBonus +{ + /** + * Gets the name of this skill bonus. + * + * @return The name of this skill bonus. + */ + String getName(); + + /** + * Gets the multiplier for this skill bonus. When multiplied with the skill action XP value, it yields the amount of + * additional xp granted for that action. (eg. {@code {@link SkillAction#getXp()} * (1 + {@link #getValue()}} yields + * the full amount of xp gained) + * + * @return The skill bonus multiplier. + */ + float getValue(); +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SmithingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SmithingAction.java new file mode 100644 index 0000000000..f4211febb9 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/SmithingAction.java @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum SmithingAction implements ItemSkillAction +{ + BRONZE_BAR(ItemID.BRONZE_BAR, 1, 6.3f), + BRONZE_AXE(ItemID.BRONZE_AXE, 1, 12.5f), + BRONZE_DAGGER(ItemID.BRONZE_DAGGER, 1, 12.5f), + BRONZE_MACE(ItemID.BRONZE_MACE, 2, 12.5f), + BRONZE_MED_HELM(ItemID.BRONZE_MED_HELM, 3, 12.5f), + BRONZE_BOLTS_UNF(ItemID.BRONZE_BOLTS_UNF, 3, 12.5f), + BRONZE_NAILS(ItemID.BRONZE_NAILS, 4, 12.5f), + BRONZE_SWORD(ItemID.BRONZE_SWORD, 4, 12.5f), + BRONZE_WIRE(ItemID.BRONZE_WIRE, 4, 12.5f), + BRONZE_DART_TIP(ItemID.BRONZE_DART_TIP, 4, 12.5f), + BRONZE_ARROWTIPS(ItemID.BRONZE_ARROWTIPS, 5, 12.5f), + BRONZE_SCIMITAR(ItemID.BRONZE_SCIMITAR, 5, 25), + BRONZE_HASTA(ItemID.BRONZE_HASTA, 5, 25), + BRONZE_SPEAR(ItemID.BRONZE_SPEAR, 5, 25), + BRONZE_JAVELIN_HEADS(ItemID.BRONZE_JAVELIN_HEADS, 6, 12.5f), + BRONZE_LONGSWORD(ItemID.BRONZE_LONGSWORD, 6, 25), + BRONZE_LIMBS(ItemID.BRONZE_LIMBS, 6, 12.5f), + BRONZE_KNIFE(ItemID.BRONZE_KNIFE, 7, 12.5f), + BRONZE_FULL_HELM(ItemID.BRONZE_FULL_HELM, 7, 25), + BRONZE_SQ_SHIELD(ItemID.BRONZE_SQ_SHIELD, 8, 25), + BRONZE_WARHAMMER(ItemID.BRONZE_WARHAMMER, 9, 37.5f), + BRONZE_BATTLEAXE(ItemID.BRONZE_BATTLEAXE, 10, 37.5f), + BRONZE_CHAINBODY(ItemID.BRONZE_CHAINBODY, 11, 37.5f), + BRONZE_KITESHIELD(ItemID.BRONZE_KITESHIELD, 12, 37.5f), + BRONZE_CLAWS(ItemID.BRONZE_CLAWS, 13, 25), + BRONZE_2H_SWORD(ItemID.BRONZE_2H_SWORD, 14, 37.5f), + BARRONITE_DEPOSITS(ItemID.BARRONITE_DEPOSIT, 14, 30), + IRON_BAR(ItemID.IRON_BAR, 15, 12.5f), + IRON_DAGGER(ItemID.IRON_DAGGER, 15, 25), + IRON_AXE(ItemID.IRON_AXE, 16, 25), + BRONZE_PLATELEGS(ItemID.BRONZE_PLATELEGS, 16, 37.5f), + BRONZE_PLATESKIRT(ItemID.BRONZE_PLATESKIRT, 16, 37.5f), + IRON_SPIT(ItemID.IRON_SPIT, 17, 25), + IRON_MACE(ItemID.IRON_MACE, 17, 25), + IRON_BOLTS_UNF(ItemID.IRON_BOLTS_UNF, 18, 25), + BRONZE_PLATEBODY(ItemID.BRONZE_PLATEBODY, 18, 62.5f), + IRON_MED_HELM(ItemID.IRON_MED_HELM, 18, 25), + IRON_NAILS(ItemID.IRON_NAILS, 19, 25), + IRON_DART_TIP(ItemID.IRON_DART_TIP, 19, 25), + IRON_SWORD(ItemID.IRON_SWORD, 19, 25), + SILVER_BAR(ItemID.SILVER_BAR, 20, 13.7f), + IRON_ARROWTIPS(ItemID.IRON_ARROWTIPS, 20, 25), + IRON_SCIMITAR(ItemID.IRON_SCIMITAR, 20, 50), + IRON_HASTA(ItemID.IRON_HASTA, 20, 50), + IRON_SPEAR(ItemID.IRON_SPEAR, 20, 50), + IRON_LONGSWORD(ItemID.IRON_LONGSWORD, 21, 50), + IRON_JAVELIN_HEADS(ItemID.IRON_JAVELIN_HEADS, 21, 25), + IRON_FULL_HELM(ItemID.IRON_FULL_HELM, 22, 50), + IRON_KNIFE(ItemID.IRON_KNIFE, 22, 25), + IRON_LIMBS(ItemID.IRON_LIMBS, 23, 25), + IRON_SQ_SHIELD(ItemID.IRON_SQ_SHIELD, 23, 50), + IRON_WARHAMMER(ItemID.IRON_WARHAMMER, 24, 75), + IRON_BATTLEAXE(ItemID.IRON_BATTLEAXE, 25, 75), + OIL_LANTERN_FRAME(ItemID.OIL_LANTERN_FRAME, 26, 25), + IRON_CHAINBODY(ItemID.IRON_CHAINBODY, 26, 75), + IRON_KITESHIELD(ItemID.IRON_KITESHIELD, 27, 75), + IRON_CLAWS(ItemID.IRON_CLAWS, 28, 50), + IRON_2H_SWORD(ItemID.IRON_2H_SWORD, 29, 75), + STEEL_DAGGER(ItemID.STEEL_DAGGER, 30, 37.5f), + STEEL_BAR(ItemID.STEEL_BAR, 30, 17.5f), + IRON_PLATESKIRT(ItemID.IRON_PLATESKIRT, 31, 75), + IRON_PLATELEGS(ItemID.IRON_PLATELEGS, 31, 75), + STEEL_AXE(ItemID.STEEL_AXE, 31, 37.5f), + STEEL_MACE(ItemID.STEEL_MACE, 32, 37.5f), + IRON_PLATEBODY(ItemID.IRON_PLATEBODY, 33, 125), + STEEL_MED_HELM(ItemID.STEEL_MED_HELM, 33, 37.5f), + STEEL_BOLTS_UNF(ItemID.STEEL_BOLTS_UNF, 33, 37.5f), + STEEL_DART_TIP(ItemID.STEEL_DART_TIP, 34, 37.5f), + STEEL_NAILS(ItemID.STEEL_NAILS, 34, 37.5f), + STEEL_SWORD(ItemID.STEEL_SWORD, 34, 37.5f), + CANNONBALL(ItemID.CANNONBALL, 35, 25.6f), + STEEL_SCIMITAR(ItemID.STEEL_SCIMITAR, 35, 75), + STEEL_ARROWTIPS(ItemID.STEEL_ARROWTIPS, 35, 37.5f), + STEEL_HASTA(ItemID.STEEL_HASTA, 35, 75), + STEEL_SPEAR(ItemID.STEEL_SPEAR, 35, 75), + STEEL_LIMBS(ItemID.STEEL_LIMBS, 36, 37.5f), + STEEL_STUDS(ItemID.STEEL_STUDS, 36, 37.5f), + STEEL_LONGSWORD(ItemID.STEEL_LONGSWORD, 36, 75), + STEEL_JAVELIN_HEADS(ItemID.STEEL_JAVELIN_HEADS, 36, 37.5f), + STEEL_KNIFE(ItemID.STEEL_KNIFE, 37, 37.5f), + STEEL_FULL_HELM(ItemID.STEEL_FULL_HELM, 37, 75), + STEEL_SQ_SHIELD(ItemID.STEEL_SQ_SHIELD, 38, 75), + STEEL_WARHAMMER(ItemID.STEEL_WARHAMMER, 39, 112.5f), + STEEL_BATTLEAXE(ItemID.STEEL_BATTLEAXE, 40, 112.5f), + GOLD_BAR_GOLDSMITH_GAUNTLETS(ItemID.GOLD_BAR, 40, 56.2f), + GOLD_BAR(ItemID.GOLD_BAR, 40, 22.5f), + STEEL_CHAINBODY(ItemID.STEEL_CHAINBODY, 41, 112.5f), + STEEL_KITESHIELD(ItemID.STEEL_KITESHIELD, 42, 112.5f), + STEEL_CLAWS(ItemID.STEEL_CLAWS, 43, 75), + STEEL_2H_SWORD(ItemID.STEEL_2H_SWORD, 44, 112.5f), + STEEL_PLATELEGS(ItemID.STEEL_PLATELEGS, 46, 112.5f), + STEEL_PLATESKIRT(ItemID.STEEL_PLATESKIRT, 46, 112.5f), + STEEL_PLATEBODY(ItemID.STEEL_PLATEBODY, 48, 187.5f), + BULLSEYE_LANTERN_UNF(ItemID.BULLSEYE_LANTERN_UNF, 49, 37), + MITHRIL_DAGGER(ItemID.MITHRIL_DAGGER, 50, 50), + MITHRIL_BAR(ItemID.MITHRIL_BAR, 50, 30), + MITHRIL_AXE(ItemID.MITHRIL_AXE, 51, 50), + MITHRIL_MACE(ItemID.MITHRIL_MACE, 52, 50), + MITHRIL_MED_HELM(ItemID.MITHRIL_MED_HELM, 53, 50), + MITHRIL_BOLTS_UNF(ItemID.MITHRIL_BOLTS_UNF, 53, 50), + MITHRIL_SWORD(ItemID.MITHRIL_SWORD, 54, 50), + MITHRIL_DART_TIP(ItemID.MITHRIL_DART_TIP, 54, 50), + MITHRIL_NAILS(ItemID.MITHRIL_NAILS, 54, 50), + MITHRIL_ARROWTIPS(ItemID.MITHRIL_ARROWTIPS, 55, 50), + MITHRIL_SCIMITAR(ItemID.MITHRIL_SCIMITAR, 55, 100), + MITHRIL_HASTA(ItemID.MITHRIL_HASTA, 55, 100), + MITHRIL_SPEAR(ItemID.MITHRIL_SPEAR, 55, 100), + MITHRIL_LONGSWORD(ItemID.MITHRIL_LONGSWORD, 56, 100), + MITHRIL_JAVELIN_HEADS(ItemID.MITHRIL_JAVELIN_HEADS, 56, 50), + MITHRIL_LIMBS(ItemID.MITHRIL_LIMBS, 56, 50), + MITHRIL_FULL_HELM(ItemID.MITHRIL_FULL_HELM, 57, 100), + MITHRIL_KNIFE(ItemID.MITHRIL_KNIFE, 57, 50), + MITHRIL_SQ_SHIELD(ItemID.MITHRIL_SQ_SHIELD, 58, 100), + MITH_GRAPPLE_TIP(ItemID.MITH_GRAPPLE_TIP, 59, 50), + MITHRIL_WARHAMMER(ItemID.MITHRIL_WARHAMMER, 59, 150), + DRAGON_SQ_SHIELD(ItemID.DRAGON_SQ_SHIELD, 60, 75), + MITHRIL_BATTLEAXE(ItemID.MITHRIL_BATTLEAXE, 60, 150), + MITHRIL_CHAINBODY(ItemID.MITHRIL_CHAINBODY, 61, 150), + MITHRIL_KITESHIELD(ItemID.MITHRIL_KITESHIELD, 62, 150), + MITHRIL_CLAWS(ItemID.MITHRIL_CLAWS, 63, 100), + MITHRIL_2H_SWORD(ItemID.MITHRIL_2H_SWORD, 64, 150), + MITHRIL_PLATESKIRT(ItemID.MITHRIL_PLATESKIRT, 66, 150), + MITHRIL_PLATELEGS(ItemID.MITHRIL_PLATELEGS, 66, 150), + MITHRIL_PLATEBODY(ItemID.MITHRIL_PLATEBODY, 68, 250), + ADAMANT_DAGGER(ItemID.ADAMANT_DAGGER, 70, 62.5f), + ADAMANTITE_BAR(ItemID.ADAMANTITE_BAR, 70, 37.5f), + ADAMANT_AXE(ItemID.ADAMANT_AXE, 71, 62.5f), + ADAMANT_MACE(ItemID.ADAMANT_MACE, 72, 62.5f), + ADAMANT_BOLTS_UNF(ItemID.ADAMANT_BOLTSUNF, 73, 62.5f), + ADAMANT_MED_HELM(ItemID.ADAMANT_MED_HELM, 73, 62.5f), + ADAMANT_DART_TIP(ItemID.ADAMANT_DART_TIP, 74, 62.5f), + ADAMANT_SWORD(ItemID.ADAMANT_SWORD, 74, 62.5f), + ADAMANTITE_NAILS(ItemID.ADAMANTITE_NAILS, 74, 62.5f), + ADAMANT_ARROWTIPS(ItemID.ADAMANT_ARROWTIPS, 75, 62.5f), + ADAMANT_SCIMITAR(ItemID.ADAMANT_SCIMITAR, 75, 125), + ADAMANT_HASTA(ItemID.ADAMANT_HASTA, 75, 125), + ADAMANT_SPEAR(ItemID.ADAMANT_SPEAR, 75, 125), + ADAMANTITE_LIMBS(ItemID.ADAMANTITE_LIMBS, 76, 62.5f), + ADAMANT_LONGSWORD(ItemID.ADAMANT_LONGSWORD, 76, 125), + ADAMANT_JAVELIN_HEADS(ItemID.ADAMANT_JAVELIN_HEADS, 76, 62.5f), + ADAMANT_FULL_HELM(ItemID.ADAMANT_FULL_HELM, 77, 125), + ADAMANT_KNIFE(ItemID.ADAMANT_KNIFE, 77, 62.5f), + ADAMANT_SQ_SHIELD(ItemID.ADAMANT_SQ_SHIELD, 78, 125), + ADAMANT_WARHAMMER(ItemID.ADAMANT_WARHAMMER, 79, 187.5f), + ADAMANT_BATTLEAXE(ItemID.ADAMANT_BATTLEAXE, 80, 187.5f), + ADAMANT_CHAINBODY(ItemID.ADAMANT_CHAINBODY, 81, 187.5f), + ADAMANT_KITESHIELD(ItemID.ADAMANT_KITESHIELD, 82, 187.5f), + ADAMANT_CLAWS(ItemID.ADAMANT_CLAWS, 83, 125), + ADAMANT_2H_SWORD(ItemID.ADAMANT_2H_SWORD, 84, 187.5f), + RUNITE_BAR(ItemID.RUNITE_BAR, 85, 50), + RUNE_DAGGER(ItemID.RUNE_DAGGER, 85, 75), + RUNE_AXE(ItemID.RUNE_AXE, 86, 75), + ADAMANT_PLATESKIRT(ItemID.ADAMANT_PLATESKIRT, 86, 187.5f), + ADAMANT_PLATELEGS(ItemID.ADAMANT_PLATELEGS, 86, 187.5f), + RUNE_MACE(ItemID.RUNE_MACE, 87, 75), + RUNITE_BOLTS_UNF(ItemID.RUNITE_BOLTS_UNF, 88, 75), + RUNE_MED_HELM(ItemID.RUNE_MED_HELM, 88, 75), + ADAMANT_PLATEBODY(ItemID.ADAMANT_PLATEBODY, 88, 312.5f), + RUNE_SWORD(ItemID.RUNE_SWORD, 89, 75), + RUNE_NAILS(ItemID.RUNE_NAILS, 89, 75), + RUNE_DART_TIP(ItemID.RUNE_DART_TIP, 89, 75), + RUNE_ARROWTIPS(ItemID.RUNE_ARROWTIPS, 90, 75), + RUNE_SCIMITAR(ItemID.RUNE_SCIMITAR, 90, 150), + RUNE_HASTA(ItemID.RUNE_HASTA, 90, 150), + RUNE_SPEAR(ItemID.RUNE_SPEAR, 90, 150), + DRAGONFIRE_SHIELD(ItemID.DRAGONFIRE_SHIELD, 90, 2000), + RUNE_LONGSWORD(ItemID.RUNE_LONGSWORD, 91, 150), + RUNE_JAVELIN_HEADS(ItemID.RUNE_JAVELIN_HEADS, 91, 75), + RUNITE_LIMBS(ItemID.RUNITE_LIMBS, 91, 75), + RUNE_KNIFE(ItemID.RUNE_KNIFE, 92, 75), + RUNE_FULL_HELM(ItemID.RUNE_FULL_HELM, 92, 150), + RUNE_SQ_SHIELD(ItemID.RUNE_SQ_SHIELD, 93, 150), + RUNE_WARHAMMER(ItemID.RUNE_WARHAMMER, 94, 225), + RUNE_BATTLEAXE(ItemID.RUNE_BATTLEAXE, 95, 225), + RUNE_CHAINBODY(ItemID.RUNE_CHAINBODY, 96, 225), + RUNE_KITESHIELD(ItemID.RUNE_KITESHIELD, 97, 225), + RUNE_CLAWS(ItemID.RUNE_CLAWS, 98, 150), + RUNE_PLATEBODY(ItemID.RUNE_PLATEBODY, 99, 375), + RUNE_PLATESKIRT(ItemID.RUNE_PLATESKIRT, 99, 225), + RUNE_PLATELEGS(ItemID.RUNE_PLATELEGS, 99, 225), + RUNE_2H_SWORD(ItemID.RUNE_2H_SWORD, 99, 225), + ; + + private final int itemId; + private final int level; + private final float xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ThievingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ThievingAction.java new file mode 100644 index 0000000000..c43a1414a1 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/ThievingAction.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum ThievingAction implements NamedSkillAction +{ + MAN_OR_WOMAN("Man / Woman", 1, 8, ItemID.MAN), + WINTER_SQIRKJUICE("Winter Sq'irkjuice", 1, 350, ItemID.WINTER_SQIRKJUICE), + VEGETABLE_STALL("Vegetable Stall", 2, 10, ItemID.CABBAGE), + CAKE_STALL("Cake Stall", 5, 16, ItemID.CAKE), + TEA_STALL("Tea Stall", 5, 16, ItemID.CUP_OF_TEA_4242), + CRAFTING_STALL("Crafting Stall", 5, 16, ItemID.CHISEL_5601), + MONKEY_FOOD_STALL("Monkey Food Stall", 5, 16, ItemID.BANANA), + FARMER("Farmer", 10, 14.5f, ItemID.FARMER), + FEMALE_HAM_MEMBER("Female H.A.M. Member", 15, 18.5f, ItemID.FEMALE_HAM), + SILK_STALL("Silk Stall", 20, 24, ItemID.SILK), + MALE_HAM_MEMBER("Male H.A.M. Member", 20, 22.5f, ItemID.MALE_HAM), + WINE_STALL("Wine Stall", 22, 27, ItemID.BOTTLE_OF_WINE), + WARRIOR_WOMEN_OR_AL_KHARID_WARRIOR("Warrior Women / Al-Kharid Warrior", 25, 26, ItemID.WARRIOR_WOMAN), + FRUIT_STALL("Fruit Stall", 25, 28, ItemID.STRANGE_FRUIT), + SPRING_SQIRKJUICE("Spring Sq'irkjuice", 25, 1350, ItemID.SPRING_SQIRKJUICE), + SEED_STALL("Seed Stall", 27, 10, ItemID.POTATO_SEED), + NATURE_RUNE_CHEST("Nature Rune Chest", 28, 25, ItemID.NATURE_RUNE), + ROGUE("Rogue", 32, 35.5f, ItemID.ROGUE), + FUR_STALL("Fur Stall", 35, 36, ItemID.GREY_WOLF_FUR), + CAVE_GOBLIN("Cave Goblin", 36, 40, ItemID.CAVE_GOBLIN), + MASTER_FARMER("Master Farmer", 38, 43, ItemID.MASTER_FARMER), + GUARD("Guard", 40, 46.8f, ItemID.GUARD), + FISH_STALL("Fish Stall", 42, 42, ItemID.RAW_SALMON), + BEARDED_POLLNIVNIAN_BANDIT("Bearded Pollnivnian Bandit", 45, 65, ItemID.BANDIT_6782), + FREMENNIK_CITIZEN("Fremennik Citizen", 45, 65, ItemID.FREMENNIK), + AUTUMN_SQIRKJUICE("Autumn Sq'irkjuice", 45, 2350, ItemID.AUTUMN_SQIRKJUICE), + CROSSBOW_STALL("Crossbow Stall", 49, 52, ItemID.CROSSBOW), + SILVER_STALL("Silver Stall", 50, 54, ItemID.SILVER_BAR), + WALL_SAFE("Wall Safe", 50, 70, ItemID.STETHOSCOPE), + DESERT_BANDIT("Desert Bandit", 53, 79.5f, ItemID.BANDIT), + KNIGHT("Knight", 55, 84.3f, ItemID.KNIGHT_OF_ARDOUGNE), + POLLNIVNIAN_BANDIT("Pollnivnian Bandit", 55, 84.3f, ItemID.BANDIT_6781), + STONE_CHEST("Stone Chest", 64, 280, ItemID.XERICIAN_FABRIC), + MAGIC_STALL("Magic Stall", 65, 100, ItemID.AIR_RUNE_6422), + SCIMITAR_STALL("Scimitar Stall", 65, 100, ItemID.STEEL_SCIMITAR), + MENAPHITE_THUG("Menaphite Thug", 65, 137.5f, ItemID.MENAPHITE_THUG), + SPICES_STALL("Spices Stall", 65, 81, ItemID.SPICE), + YANILLE_WATCHMAN("Yanille Watchman", 65, 137.5f, ItemID.WATCHMAN), + SUMMER_SQIRKJUICE("Summer Sq'irkjuice", 65, 3000, ItemID.SUMMER_SQIRKJUICE), + PALADIN("Paladin", 70, 151.8f, ItemID.PALADIN), + GNOME("Gnome", 75, 198.5f, ItemID.GNOME), + GEMS_STALL("Gems Stall", 75, 160, ItemID.SAPPHIRE), + DORGESH_KAAN_RICH_CHEST("Dorgesh-Kaan Rich Chest", 78, 650, ItemID.MINING_HELMET), + HERO("Hero", 80, 275, ItemID.HERO), + VYRE("Vyre", 82, 306.9f, ItemID.VYRE), + ROGUES_CASTLE_CHEST("Wilderness Rogues' Chest", 84, 100, ItemID.DRAGONSTONE), + ELF("Elf", 85, 353, ItemID.ELF), + TZHAAR_HUR("TzHaar-Hur", 90, 103.4f, ItemID.TZHAARHUR), + ; + + private final String name; + private final int level; + private final float xp; + private final int icon; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingAction.java new file mode 100644 index 0000000000..8aad519aaa --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingAction.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.runelite.api.ItemID; + +@AllArgsConstructor +@Getter +public enum WoodcuttingAction implements NamedSkillAction +{ + LOGS("Logs", 1, 25, ItemID.LOGS), + ACHEY_TREE_LOGS("Achey tree logs", 1, 25, ItemID.ACHEY_TREE_LOGS), + OAK_LOGS("Oak logs", 15, 37.5f, ItemID.OAK_LOGS), + WILLOW_LOGS("Willow logs", 30, 67.5f, ItemID.WILLOW_LOGS), + TEAK_LOGS("Teak logs", 35, 85, ItemID.TEAK_LOGS), + BARK("Bark", 45, 82.5f, ItemID.BARK), + MAPLE_LOGS("Maple logs", 45, 100, ItemID.MAPLE_LOGS), + MAHOGANY_LOGS("Mahogany logs", 50, 125, ItemID.MAHOGANY_LOGS), + ARCTIC_PINE_LOGS("Arctic pine logs", 54, 40, ItemID.ARCTIC_PINE_LOGS), + YEW_LOGS("Yew logs", 60, 175, ItemID.YEW_LOGS), + BLISTERWOOD_LOGS("Blisterwood logs", 62, 76, ItemID.BLISTERWOOD_LOGS), + SULLIUSCEPS("Sulliusceps", 65, 127, ItemID.SULLIUSCEP_CAP), + MAGIC_LOGS("Magic logs", 75, 250, ItemID.MAGIC_LOGS), + REDWOOD_LOGS("Redwood logs", 90, 380, ItemID.REDWOOD_LOGS), + ; + + private final String name; + private final int level; + private final float xp; + private final int icon; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingBonus.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingBonus.java new file mode 100644 index 0000000000..14ee9a4c21 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/WoodcuttingBonus.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator.skills; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter(onMethod_ = @Override) +public enum WoodcuttingBonus implements SkillBonus +{ + LUMBERJACK_OUTFIT("Lumberjack Outfit (+2.5%)", 0.025f), + ; + + private final String name; + private final float value; +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java index e638b1b713..2011a2e0e6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java @@ -39,7 +39,8 @@ enum SpecialWeapon BANDOS_GODSWORD("Bandos Godsword", new int[]{ItemID.BANDOS_GODSWORD, ItemID.BANDOS_GODSWORD_OR}, true, SpecialCounterConfig::bandosGodswordThreshold), BARRELCHEST_ANCHOR("Barrelchest Anchor", new int[]{ItemID.BARRELCHEST_ANCHOR}, true, (c) -> 0), BONE_DAGGER("Bone Dagger", new int[]{ItemID.BONE_DAGGER, ItemID.BONE_DAGGER_P, ItemID.BONE_DAGGER_P_8876, ItemID.BONE_DAGGER_P_8878}, true, (c) -> 0), - DORGESHUUN_CROSSBOW("Dorgeshuun Crossbow", new int[]{ItemID.DORGESHUUN_CROSSBOW}, true, (c) -> 0); + DORGESHUUN_CROSSBOW("Dorgeshuun Crossbow", new int[]{ItemID.DORGESHUUN_CROSSBOW}, true, (c) -> 0), + BULWARK("Dinh's Bulwark", new int[]{ItemID.DINHS_BULWARK}, false, c -> 0); private final String name; private final int[] itemID; diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_agility.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_agility.json deleted file mode 100644 index e26954adde..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_agility.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "icon": 2150, - "name": "Gnome Stronghold", - "xp": 86.5 - }, - { - "level": 5, - "icon": 13359, - "name": "Shayzien Basic Course", - "xp": 133.2 - }, - { - "level": 10, - "icon": 11849, - "name": "Draynor Village Rooftop", - "xp": 120 - }, - { - "level":15, - "icon": 11328, - "name": "Leaping trout", - "xp": 5 - }, - { - "level": 20, - "icon": 11849, - "name": "Al Kharid Rooftop", - "xp": 180 - }, - { - "level": 30, - "icon": 11849, - "name": "Varrock Rooftop", - "xp": 238 - }, - { - "level": 30, - "icon": 10595, - "name": "Penguin Agility Course", - "xp": 540 - }, - { - "level":30, - "icon": 11330, - "name": "Leaping salmon", - "xp": 6 - }, - { - "level": 35, - "icon": 1365, - "name": "Barbarian Outpost", - "xp": 152.5 - }, - { - "level": 40, - "icon": 11849, - "name": "Canifis Rooftop", - "xp": 240 - }, - { - "level":45, - "icon": 11332, - "name": "Leaping sturgeon", - "xp": 7 - }, - { - "level": 48, - "icon": 4026, - "name": "Ape Atoll", - "xp": 580 - }, - { - "level": 48, - "icon": 13379, - "name": "Shayzien Advanced Course", - "xp": 474.3 - }, - { - "level": 50, - "icon": 11849, - "name": "Falador Rooftop", - "xp": 440 - }, - { - "level": 52, - "icon": 964, - "name": "Wilderness Agility Course", - "xp": 571 - }, - { - "level": 52, - "icon": 24736, - "name": "Hallowed Sepulchre Floor 1", - "xp": 575 - }, - { - "level": 60, - "icon": 11849, - "name": "Seers' Village Rooftop", - "xp": 570 - }, - { - "level": 60, - "icon": 4179, - "name": "Werewolf Agility Course", - "xp": 730 - }, - { - "level": 62, - "icon": 24736, - "name": "Hallowed Sepulchre Floor 2", - "xp": 925 - }, - { - "level": 70, - "icon": 11849, - "name": "Pollnivneach Rooftop", - "xp": 890 - }, - { - "level": 72, - "icon": 24736, - "name": "Hallowed Sepulchre Floor 3", - "xp": 1500 - }, - { - "level": 75, - "icon": 23962, - "name": "Prifddinas Agility Course", - "xp": 1337 - }, - { - "level": 80, - "icon": 11849, - "name": "Rellekka Rooftop", - "xp": 780 - }, - { - "level": 82, - "icon": 24736, - "name": "Hallowed Sepulchre Floor 4", - "xp": 2700 - }, - { - "level": 90, - "icon": 11849, - "name": "Ardougne Rooftop", - "xp": 793 - }, - { - "level": 92, - "icon": 24736, - "name": "Hallowed Sepulchre Floor 5", - "xp": 6000 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_construction.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_construction.json deleted file mode 100644 index 32897151de..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_construction.json +++ /dev/null @@ -1,1018 +0,0 @@ -{ - "bonuses": [ - { - "name": "Carpenter's Outfit (+2.5%)", - "value": 0.025 - } - ], - "actions": [ - { - "level": 1, - "icon": 8168, - "name": "Exit Portal", - "xp": 100 - }, - { - "level": 1, - "icon": 960, - "name": "Plank", - "xp": 29 - }, - { - "level": 1, - "icon": 8778, - "name": "Oak Plank", - "xp": 60 - }, - { - "level": 1, - "icon": 8780, - "name": "Teak Plank", - "xp": 90 - }, - { - "level": 1, - "icon": 8782, - "name": "Mahogany Plank", - "xp": 140 - }, - { - "level": 1, - "icon": 8180, - "name": "Plant", - "xp": 31 - }, - { - "level": 1, - "icon": 8186, - "name": "Fern (big plant)", - "xp": 31 - }, - { - "level": 1, - "icon": 8189, - "name": "Short Plant", - "xp": 31 - }, - { - "level": 1, - "icon": 8183, - "name": "Dock Leaf", - "xp": 31 - }, - { - "level": 1, - "icon": 8309, - "name": "Crude Wooden Chair", - "xp": 58 - }, - { - "level": 2, - "icon": 8316, - "name": "Brown Rug", - "xp": 30 - }, - { - "level": 2, - "icon": 8322, - "name": "Torn Curtains", - "xp": 132 - }, - { - "level": 3, - "icon": 8325, - "name": "Clay Fireplace", - "xp": 30 - }, - { - "level": 4, - "icon": 8319, - "name": "Wooden Bookcase", - "xp": 115 - }, - { - "level": 5, - "icon": 8216, - "name": "Firepit", - "xp": 40 - }, - { - "level": 5, - "icon": 8236, - "name": "Cat Blanket", - "xp": 15 - }, - { - "level": 5, - "icon": 8169, - "name": "Decorative Rock", - "xp": 100 - }, - { - "level": 5, - "icon": 8173, - "name": "Tree", - "xp": 31 - }, - { - "level": 6, - "icon": 8181, - "name": "Small Fern", - "xp": 70 - }, - { - "level": 6, - "icon": 8184, - "name": "Thistle", - "xp": 70 - }, - { - "level": 6, - "icon": 8187, - "name": "Bush", - "xp": 70 - }, - { - "level": 6, - "icon": 8190, - "name": "Large Leaf Bush", - "xp": 70 - }, - { - "level": 6, - "icon": 8223, - "name": "Wooden Shelves 1", - "xp": 87 - }, - { - "level": 7, - "icon": 8230, - "name": "Pump and Drain", - "xp": 100 - }, - { - "level": 7, - "icon": 8239, - "name": "Beer Barrel", - "xp": 87 - }, - { - "level": 8, - "icon": 8310, - "name": "Wooden Chair", - "xp": 87 - }, - { - "level": 9, - "icon": 8233, - "name": "Wooden Larder", - "xp": 228 - }, - { - "level": 10, - "icon": 8115, - "name": "Wood Dining Table", - "xp": 115 - }, - { - "level": 10, - "icon": 8170, - "name": "Pond", - "xp": 100 - }, - { - "level": 10, - "icon": 8174, - "name": "Nice Tree", - "xp": 44 - }, - { - "level": 10, - "icon": 8108, - "name": "Wooden Bench", - "xp": 115 - }, - { - "level": 11, - "icon": 8217, - "name": "Firepit with Hook", - "xp": 60 - }, - { - "level": 12, - "icon": 8185, - "name": "Reeds", - "xp": 100 - }, - { - "level": 12, - "icon": 8182, - "name": "Fern (small plant)", - "xp": 100 - }, - { - "level": 12, - "icon": 8240, - "name": "Cider Barrel", - "xp": 91 - }, - { - "level": 12, - "icon": 8224, - "name": "Wooden Shelves 2", - "xp": 147 - }, - { - "level": 12, - "icon": 8115, - "name": "Wood Table", - "xp": 87 - }, - { - "level": 12, - "icon": 8191, - "name": "Huge Plant", - "xp": 100 - }, - { - "level": 12, - "icon": 8188, - "name": "Tall Plant", - "xp": 100 - }, - { - "level": 13, - "icon": 8317, - "name": "Rug", - "xp": 60 - }, - { - "level": 14, - "icon": 8311, - "name": "Rocking Chair", - "xp": 87 - }, - { - "level": 15, - "icon": 8171, - "name": "Imp Statue", - "xp": 150 - }, - { - "level": 15, - "icon": 8175, - "name": "Oak Tree", - "xp": 70 - }, - { - "level": 16, - "icon": 8102, - "name": "Oak Decoration", - "xp": 120 - }, - { - "level": 17, - "icon": 8218, - "name": "Firepit with Pot", - "xp": 80 - }, - { - "level": 18, - "icon": 8323, - "name": "Curtains", - "xp": 225 - }, - { - "level": 18, - "icon": 1905, - "name": "Asgarnian Ale", - "xp": 184 - }, - { - "level": 19, - "icon": 8237, - "name": "Cat Basket", - "xp": 58 - }, - { - "level": 19, - "icon": 8312, - "name": "Oak Chair", - "xp": 120 - }, - { - "level": 20, - "icon": 8031, - "name": "Wooden Bed", - "xp": 117 - }, - { - "level": 20, - "icon": 8038, - "name": "Shoe Box", - "xp": 58 - }, - { - "level": 21, - "icon": 8045, - "name": "Shaving Stand", - "xp": 30 - }, - { - "level": 22, - "icon": 8116, - "name": "Oak Table", - "xp": 240 - }, - { - "level": 22, - "icon": 8109, - "name": "Oak Bench", - "xp": 240 - }, - { - "level": 23, - "icon": 8225, - "name": "Wooden Shelves 3", - "xp": 147 - }, - { - "level": 24, - "icon": 8219, - "name": "Small Oven", - "xp": 80 - }, - { - "level": 25, - "icon": 8052, - "name": "Oak Clock", - "xp": 142 - }, - { - "level": 26, - "icon": 1909, - "name": "Greenman's Ale", - "xp": 184 - }, - { - "level": 26, - "icon": 8313, - "name": "Oak Armchair", - "xp": 180 - }, - { - "level": 26, - "icon": 8099, - "name": "Rope Bell-Pull", - "xp": 64 - }, - { - "level": 27, - "icon": 8231, - "name": "Pump and Tub", - "xp": 200 - }, - { - "level": 27, - "icon": 8039, - "name": "Oak Drawers", - "xp": 120 - }, - { - "level": 29, - "icon": 8320, - "name": "Oak Bookcase", - "xp": 180 - }, - { - "level": 29, - "icon": 8220, - "name": "Large Oven", - "xp": 100 - }, - { - "level": 29, - "icon": 8046, - "name": "Oak Shaving Stand", - "xp": 61 - }, - { - "level": 30, - "icon": 8176, - "name": "Willow Tree", - "xp": 100 - }, - { - "level": 30, - "icon": 8032, - "name": "Oak Bed", - "xp": 210 - }, - { - "level": 30, - "icon": 10976, - "name": "Long Bone", - "xp": 4500 - }, - { - "level": 30, - "icon": 10977, - "name": "Curved Bone", - "xp": 6750 - }, - { - "level": 31, - "icon": 8110, - "name": "Carved Oak Bench", - "xp": 240 - }, - { - "level": 31, - "icon": 8117, - "name": "Carved Oak Table", - "xp": 360 - }, - { - "level": 32, - "icon": 8118, - "name": "Oak Table", - "xp": 180 - }, - { - "level": 32, - "icon": 8023, - "name": "Boxing Ring", - "xp": 420 - }, - { - "level": 33, - "icon": 8234, - "name": "Oak Larder", - "xp": 480 - }, - { - "level": 33, - "icon": 8238, - "name": "Cushioned Basket", - "xp": 58 - }, - { - "level": 33, - "icon": 8326, - "name": "Stone Fireplace", - "xp": 40 - }, - { - "level": 34, - "icon": 8221, - "name": "Steel Range", - "xp": 120 - }, - { - "level": 34, - "icon": 8226, - "name": "Oak Shelves 1", - "xp": 240 - }, - { - "level": 34, - "icon": 8028, - "name": "Glove Rack", - "xp": 120 - }, - { - "level": 34, - "icon": 8033, - "name": "Large Oak Bed", - "xp": 330 - }, - { - "level": 35, - "icon": 8314, - "name": "Teak Armchair", - "xp": 180 - }, - { - "level": 36, - "icon": 1911, - "name": "Dragon Bitter", - "xp": 224 - }, - { - "level": 36, - "icon": 8103, - "name": "Teak Decoration", - "xp": 180 - }, - { - "level": 37, - "icon": 8100, - "name": "Bell-Pull", - "xp": 120 - }, - { - "level": 37, - "icon": 8047, - "name": "Oak Dresser", - "xp": 121 - }, - { - "level": 38, - "icon": 8112, - "name": "Teak Bench", - "xp": 360 - }, - { - "level": 38, - "icon": 8118, - "name": "Teak Table", - "xp": 360 - }, - { - "level": 39, - "icon": 8040, - "name": "Oak Wardrobe", - "xp": 180 - }, - { - "level": 40, - "icon": 8034, - "name": "Teak Bed", - "xp": 300 - }, - { - "level": 40, - "icon": 8321, - "name": "Mahogany Bookcase", - "xp": 420 - }, - { - "level": 40, - "icon": 8334, - "name": "Oak Lectern", - "xp": 60 - }, - { - "level": 40, - "icon": 8324, - "name": "Opulent Curtains", - "xp": 315 - }, - { - "level": 41, - "icon": 8024, - "name": "Fencing Ring", - "xp": 570 - }, - { - "level": 41, - "icon": 8341, - "name": "Globe", - "xp": 180 - }, - { - "level": 42, - "icon": 8222, - "name": "Fancy Range", - "xp": 160 - }, - { - "level": 42, - "icon": 8351, - "name": "Crystal Ball", - "xp": 280 - }, - { - "level": 43, - "icon": 8354, - "name": "Alchemical Chart", - "xp": 30 - }, - { - "level": 43, - "icon": 8235, - "name": "Teak larder", - "xp": 750 - }, - { - "level": 44, - "icon": 8348, - "name": "Wooden Telescope", - "xp": 121 - }, - { - "level": 44, - "icon": 8029, - "name": "Weapons Rack", - "xp": 180 - }, - { - "level": 44, - "icon": 8112, - "name": "Carved Teak Bench", - "xp": 360 - }, - { - "level": 45, - "icon": 8227, - "name": "Oak Shelves 2", - "xp": 240 - }, - { - "level": 45, - "icon": 8119, - "name": "Carved Teak Table", - "xp": 600 - }, - { - "level": 45, - "icon": 8035, - "name": "Large Teak Bed", - "xp": 480 - }, - { - "level": 45, - "icon": 8177, - "name": "Maple Tree", - "xp": 122 - }, - { - "level": 46, - "icon": 8048, - "name": "Teak Dresser", - "xp": 181 - }, - { - "level": 47, - "icon": 8232, - "name": "Sink", - "xp": 300 - }, - { - "level": 47, - "icon": 8335, - "name": "Eagle Lectern", - "xp": 120 - }, - { - "level": 47, - "icon": 8336, - "name": "Demon Lectern", - "xp": 120 - }, - { - "level": 47, - "icon": 21913, - "name": "Mounted Mythical Cape", - "xp": 370 - }, - { - "level": 48, - "icon": 5755, - "name": "Chef's Delight", - "xp": 224 - }, - { - "level": 50, - "icon": 8328, - "name": "Teak Portal", - "xp": 270 - }, - { - "level": 50, - "icon": 8315, - "name": "Mahogany Armchair", - "xp": 280 - }, - { - "level": 50, - "icon": 8342, - "name": "Ornamental Globe", - "xp": 270 - }, - { - "level": 50, - "icon": 8331, - "name": "Teleport Focus", - "xp": 40 - }, - { - "level": 51, - "icon": 8041, - "name": "Teak Drawers", - "xp": 180 - }, - { - "level": 51, - "icon": 8025, - "name": "Combat Ring", - "xp": 630 - }, - { - "level": 52, - "icon": 8118, - "name": "Teak Kitchen Table", - "xp": 270 - }, - { - "level": 52, - "icon": 8113, - "name": "Mahogany Bench", - "xp": 560 - }, - { - "level": 52, - "icon": 8120, - "name": "Mahogany Table", - "xp": 840 - }, - { - "level": 53, - "icon": 8036, - "name": "4-Poster Bed", - "xp": 450 - }, - { - "level": 54, - "icon": 8030, - "name": "Extra Weapons Rack", - "xp": 440 - }, - { - "level": 54, - "icon": 8352, - "name": "Elemental Sphere", - "xp": 580 - }, - { - "level": 55, - "icon": 8053, - "name": "Teak Clock", - "xp": 202 - }, - { - "level": 56, - "icon": 8104, - "name": "Gilded Decoration", - "xp": 1020 - }, - { - "level": 56, - "icon": 8049, - "name": "Fancy Teak Dresser", - "xp": 182 - }, - { - "level": 56, - "icon": 8228, - "name": "Teak Shelves 1", - "xp": 330 - }, - { - "level": 57, - "icon": 8337, - "name": "Teak Eagle Lectern", - "xp": 180 - }, - { - "level": 57, - "icon": 8338, - "name": "Teak Demon Lectern", - "xp": 180 - }, - { - "level": 59, - "icon": 8154, - "name": "Limestone attack stone", - "xp": 200 - }, - { - "level": 59, - "icon": 8343, - "name": "Lunar Globe", - "xp": 570 - }, - { - "level": 60, - "icon": 8037, - "name": "Gilded 4-Poster Bed", - "xp": 1330 - }, - { - "level": 60, - "icon": 8101, - "name": "Posh Bell-Pull", - "xp": 420 - }, - { - "level": 60, - "icon": 24479, - "name": "Spice Rack", - "xp": 374 - }, - { - "level": 60, - "icon": 8178, - "name": "Yew Tree", - "xp": 141 - }, - { - "level": 61, - "icon": 8114, - "name": "Gilded Bench", - "xp": 1760 - }, - { - "level": 63, - "icon": 8042, - "name": "Teak Wardrobe", - "xp": 270 - }, - { - "level": 63, - "icon": 8327, - "name": "Marble Fireplace", - "xp": 500 - }, - { - "level": 63, - "icon": 8355, - "name": "Astronomical Chart", - "xp": 45 - }, - { - "level": 64, - "icon": 8349, - "name": "Teak Telescope", - "xp": 181 - }, - { - "level": 64, - "icon": 8050, - "name": "Mahogany Dresser", - "xp": 281 - }, - { - "level": 65, - "icon": 8329, - "name": "Mahogany Portal", - "xp": 420 - }, - { - "level": 65, - "icon": 8332, - "name": "Greater Focus", - "xp": 500 - }, - { - "level": 65, - "icon": 8318, - "name": "Opulent Rug", - "xp": 360 - }, - { - "level": 66, - "icon": 20649, - "name": "Teak Garden Bench", - "xp": 540 - }, - { - "level": 66, - "icon": 8353, - "name": "Crystal of Power", - "xp": 890 - }, - { - "level": 67, - "icon": 8229, - "name": "Teak Shelves 2", - "xp": 930 - }, - { - "level": 67, - "icon": 8338, - "name": "Mahogany Demon Lectern", - "xp": 580 - }, - { - "level": 67, - "icon": 8338, - "name": "Mahogany Eagle Lectern", - "xp": 580 - }, - { - "level": 68, - "icon": 8344, - "name": "Celestial Globe", - "xp": 570 - }, - { - "level": 70, - "icon": 8172, - "name": "Dungeon Entrance", - "xp": 500 - }, - { - "level": 71, - "icon": 8026, - "name": "Ranging Pedestals", - "xp": 720 - }, - { - "level": 72, - "icon": 8121, - "name": "Opulent Table", - "xp": 3100 - }, - { - "level": 74, - "icon": 8122, - "name": "Oak Door", - "xp": 600 - }, - { - "level": 74, - "icon": 8051, - "name": "Gilded Dresser", - "xp": 582 - }, - { - "level": 75, - "icon": 8043, - "name": "Mahogany Wardrobe", - "xp": 420 - }, - { - "level": 75, - "icon": 8179, - "name": "Magic Tree", - "xp": 223 - }, - { - "level": 77, - "icon": 8341, - "name": "Armillary Globe", - "xp": 960 - }, - { - "level": 77, - "icon": 20650, - "name": "Gnome Bench", - "xp": 840 - }, - { - "level": 80, - "icon": 8330, - "name": "Marble Portal", - "xp": 1500 - }, - { - "level": 80, - "icon": 8333, - "name": "Scrying Pool", - "xp": 2000 - }, - { - "level": 81, - "icon": 8027, - "name": "Balance Beam", - "xp": 1000 - }, - { - "level": 83, - "icon": 8356, - "name": "Infernal Chart", - "xp": 60 - }, - { - "level": 84, - "icon": 8350, - "name": "Mahogany Telescope", - "xp": 281 - }, - { - "level": 85, - "icon": 8054, - "name": "Gilded Clock", - "xp": 602 - }, - { - "level": 86, - "icon": 8346, - "name": "Small Orrery", - "xp": 1320 - }, - { - "level": 87, - "icon": 8044, - "name": "Gilded Wardrobe", - "xp": 720 - }, - { - "level": 95, - "icon": 8347, - "name": "Large Orrery", - "xp": 1420 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_cooking.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_cooking.json deleted file mode 100644 index 8e86a25a65..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_cooking.json +++ /dev/null @@ -1,742 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "icon": 9436, - "name": "Sinew", - "xp": 3 - }, - { - "level": 1, - "icon": 315, - "name": "Shrimps", - "xp": 30 - }, - { - "level": 1, - "icon": 2140, - "name": "Cooked Chicken", - "xp": 30 - }, - { - "level": 1, - "icon": 2142, - "name": "Cooked Meat", - "xp": 30 - }, - { - "level": 1, - "icon": 3228, - "name": "Cooked Rabbit", - "xp": 30 - }, - { - "level": 1, - "icon": 319, - "name": "Anchovies", - "xp": 30 - }, - { - "level": 1, - "icon": 325, - "name": "Sardine", - "xp": 40 - }, - { - "level": 1, - "icon": 3146, - "name": "Poison Karambwan", - "xp": 80 - }, - { - "level": 1, - "icon": 1861, - "name": "Ugthanki Meat", - "xp": 40 - }, - { - "level": 1, - "icon": 2309, - "name": "Bread", - "xp": 40 - }, - { - "level": 5, - "icon": 347, - "name": "Herring", - "xp": 50 - }, - { - "level": 6, - "icon": 2084, - "name": "Fruit Blast", - "xp": 50 - }, - { - "level": 7, - "icon": 6701, - "name": "Baked Potato", - "xp": 15 - }, - { - "level": 7, - "icon": 25654, - "name": "Guppy", - "xp": 12 - }, - { - "level": 8, - "icon": 2048, - "name": "Pineapple Punch", - "xp": 70 - }, - { - "level": 9, - "icon": 7072, - "name": "Spicy Sauce", - "xp": 25 - }, - { - "level": 10, - "icon": 355, - "name": "Mackerel", - "xp": 60 - }, - { - "level": 10, - "icon": 2325, - "name": "Redberry Pie", - "xp": 78 - }, - { - "level": 10, - "icon": 2217, - "name": "Toad Crunchies", - "xp": 100 - }, - { - "level": 11, - "icon": 7062, - "name": "Chilli Con Carne", - "xp": 55 - }, - { - "level": 11, - "icon": 9980, - "name": "Roast Bird Meat", - "xp": 62.5 - }, - { - "level": 12, - "icon": 3369, - "name": "Thin Snail Meat", - "xp": 70 - }, - { - "level": 12, - "icon": 2213, - "name": "Spicy Crunchies", - "xp": 100 - }, - { - "level": 13, - "icon": 7078, - "name": "Scrambled Egg", - "xp": 50 - }, - { - "level": 14, - "icon": 5763, - "name": "Cider", - "xp": 182 - }, - { - "level": 14, - "icon": 2205, - "name": "Worm Crunchies", - "xp": 104 - }, - { - "level": 15, - "icon": 333, - "name": "Trout", - "xp": 70 - }, - { - "level": 16, - "icon": 6293, - "name": "Spider on stick", - "xp": 80 - }, - { - "level": 16, - "icon": 6295, - "name": "Spider on shaft", - "xp": 80 - }, - { - "level": 16, - "icon": 7223, - "name": "Roast Rabbit", - "xp": 72.5 - }, - { - "level": 16, - "icon": 2209, - "name": "Chocchip crunchies", - "xp": 100 - }, - { - "level": 17, - "icon": 3371, - "name": "Lean Snail Meat", - "xp": 80 - }, - { - "level": 18, - "icon": 339, - "name": "Cod", - "xp": 75 - }, - { - "level": 18, - "icon": 2054, - "name": "Wizard Blizzard", - "xp": 110 - }, - { - "level": 19, - "icon": 1913, - "name": "Dwarven Stout", - "xp": 215 - }, - { - "level": 20, - "icon": 2080, - "name": "Short Green Guy", - "xp": 120 - }, - { - "level": 20, - "icon": 2327, - "name": "Meat Pie", - "xp": 110 - }, - { - "level": 20, - "icon": 351, - "name": "Pike", - "xp": 80 - }, - { - "level": 20, - "icon": 712, - "name": "Cup of tea", - "xp": 52 - }, - { - "level": 20, - "icon": 25660, - "name": "Cavefish", - "xp": 23 - }, - { - "level": 21, - "icon": 9988, - "name": "Roast Beast Meat", - "xp": 82.5 - }, - { - "level": 21, - "icon": 7521, - "name": "Cooked Crab Meat", - "xp": 100 - }, - { - "level": 21, - "icon": 2130, - "name": "Pot of cream", - "xp": 18 - }, - { - "level": 22, - "icon": 3373, - "name": "Fat Snail Meat", - "xp": 95 - }, - { - "level": 23, - "icon": 7064, - "name": "Egg And Tomato", - "xp": 50 - }, - { - "level": 24, - "icon": 1905, - "name": "Asgarnian Ale", - "xp": 248 - }, - { - "level": 25, - "icon": 329, - "name": "Salmon", - "xp": 90 - }, - { - "level": 25, - "icon": 2003, - "name": "Stew", - "xp": 117 - }, - { - "level": 25, - "icon": 2277, - "name": "Fruit Batta", - "xp": 150 - }, - { - "level": 26, - "icon": 2255, - "name": "Toad Batta", - "xp": 152 - }, - { - "level": 27, - "icon": 2253, - "name": "Worm Batta", - "xp": 154 - }, - { - "level": 28, - "icon": 2281, - "name": "Vegetable Batta", - "xp": 156 - }, - { - "level": 28, - "icon": 5988, - "name": "Sweetcorn", - "xp": 104 - }, - { - "level": 28, - "icon": 3381, - "name": "Cooked Slimy Eel", - "xp": 95 - }, - { - "level": 29, - "icon": 7170, - "name": "Mud Pie", - "xp": 128 - }, - { - "level": 29, - "icon": 1909, - "name": "Greenman's ale", - "xp": 281 - }, - { - "level": 29, - "icon": 2259, - "name": "Cheese and Tomato Batta", - "xp": 158 - }, - { - "level": 30, - "icon": 361, - "name": "Tuna", - "xp": 100 - }, - { - "level": 30, - "icon": 2323, - "name": "Apple Pie", - "xp": 130 - }, - { - "level": 30, - "icon": 2191, - "name": "Worm Hole", - "xp": 170 - }, - { - "level": 30, - "icon": 3144, - "name": "Cooked Karambwan", - "xp": 190 - }, - { - "level": 30, - "icon": 2878, - "name": "Roasted Chompy", - "xp": 100 - }, - { - "level": 31, - "icon": 7530, - "name": "Fishcake", - "xp": 100 - }, - { - "level": 32, - "icon": 2092, - "name": "Drunk Dragon", - "xp": 160 - }, - { - "level": 33, - "icon": 2074, - "name": "Choc Saturday", - "xp": 170 - }, - { - "level": 33, - "icon": 25666, - "name": "Tetra", - "xp": 31 - }, - { - "level": 34, - "icon": 7178, - "name": "Garden Pie", - "xp": 138 - }, - { - "level": 34, - "icon": 1907, - "name": "Wizard's mind bomb", - "xp": 314 - }, - { - "level": 35, - "icon": 1993, - "name": "Jug Of Wine", - "xp": 200 - }, - { - "level": 35, - "icon": 2289, - "name": "Plain Pizza", - "xp": 143 - }, - { - "level": 35, - "icon": 10136, - "name": "Rainbow Fish", - "xp": 110 - }, - { - "level": 35, - "icon": 2195, - "name": "Veg ball", - "xp": 175 - }, - { - "level": 37, - "icon": 2064, - "name": "Blurberry Special", - "xp": 180 - }, - { - "level": 38, - "icon": 5003, - "name": "Cave Eel", - "xp": 115 - }, - { - "level": 38, - "icon": 6697, - "name": "Pat of butter", - "xp": 40.5 - }, - { - "level": 39, - "icon": 1911, - "name": "Dragon Bitter", - "xp": 347 - }, - { - "level": 39, - "icon": 6703, - "name": "Potato with butter", - "xp": 40 - }, - { - "level": 40, - "icon": 379, - "name": "Lobster", - "xp": 120 - }, - { - "level": 40, - "icon": 1891, - "name": "Cake", - "xp": 180 - }, - { - "level": 40, - "icon": 2187, - "name": "Tangled toad's legs", - "xp": 185 - }, - { - "level": 41, - "icon": 7054, - "name": "Chilli Potato", - "xp": 165.5 - }, - { - "level": 41, - "icon": 7568, - "name": "Cooked Jubbly", - "xp": 160 - }, - { - "level": 42, - "icon": 2185, - "name": "Chocolate Bomb", - "xp": 190 - }, - { - "level": 42, - "icon": 7084, - "name": "Fried Onions", - "xp": 60 - }, - { - "level": 43, - "icon": 365, - "name": "Bass", - "xp": 130 - }, - { - "level": 44, - "icon": 2955, - "name": "Moonlight Mead", - "xp": 380 - }, - { - "level": 45, - "icon": 373, - "name": "Swordfish", - "xp": 140 - }, - { - "level": 45, - "icon": 2293, - "name": "Meat Pizza", - "xp": 169 - }, - { - "level": 46, - "icon": 7082, - "name": "Fried Mushrooms", - "xp": 60 - }, - { - "level": 46, - "icon": 25672, - "name": "Catfish", - "xp": 43 - }, - { - "level": 47, - "icon": 7188, - "name": "Fish Pie", - "xp": 164 - }, - { - "level": 47, - "icon": 6705, - "name": "Potato with cheese", - "xp": 40 - }, - { - "level": 48, - "icon": 1985, - "name": "Cheese", - "xp": 64 - }, - { - "level": 49, - "icon": 5751, - "name": "Axeman's folly", - "xp": 413 - }, - { - "level": 50, - "icon": 2343, - "name": "Cooked Oomlie Wrap", - "xp": 30 - }, - { - "level": 50, - "icon": 1897, - "name": "Chocolate Cake", - "xp": 210 - }, - { - "level": 51, - "icon": 7056, - "name": "Egg Potato", - "xp": 195.5 - }, - { - "level": 52, - "icon": 19662, - "name": "Botanical Pie", - "xp": 180 - }, - { - "level": 53, - "icon": 2149, - "name": "Lava Eel", - "xp": 30 - }, - { - "level": 54, - "icon": 5755, - "name": "Chef's Delight", - "xp": 446 - }, - { - "level": 55, - "icon": 2297, - "name": "Anchovy Pizza", - "xp": 182 - }, - { - "level": 57, - "icon": 7066, - "name": "Mushroom & onion", - "xp": 120 - }, - { - "level": 58, - "icon": 1883, - "name": "Ugthanki Kebab (Fresh)", - "xp": 80 - }, - { - "level": 58, - "icon": 1865, - "name": "Pitta Bread", - "xp": 40 - }, - { - "level": 59, - "icon": 5759, - "name": "Slayer's respite", - "xp": 479 - }, - { - "level": 60, - "icon": 2011, - "name": "Curry", - "xp": 280 - }, - { - "level": 60, - "icon": 21690, - "name": "Mushroom Pie", - "xp": 200 - }, - { - "level": 62, - "icon": 7946, - "name": "Monkfish", - "xp": 150 - }, - { - "level": 64, - "icon": 7058, - "name": "Mushroom Potato", - "xp": 270.5 - }, - { - "level": 65, - "icon": 2301, - "name": "Pineapple Pizza", - "xp": 188 - }, - { - "level": 65, - "icon": 245, - "name": "Wine of Zamorak", - "xp": 200 - }, - { - "level": 67, - "icon": 7068, - "name": "Tuna And Corn", - "xp": 204 - }, - { - "level": 68, - "icon": 7060, - "name": "Tuna Potato", - "xp": 309.5 - }, - { - "level": 70, - "icon": 7198, - "name": "Admiral Pie", - "xp": 210 - }, - { - "level": 72, - "icon": 13339, - "name": "Sacred Eel", - "xp": 109 - }, - { - "level": 73, - "icon": 22795, - "name": "Dragonfruit Pie", - "xp": 220 - }, - { - "level": 80, - "icon": 385, - "name": "Shark", - "xp": 210 - }, - { - "level": 82, - "icon": 397, - "name": "Sea Turtle", - "xp": 211.3 - }, - { - "level": 84, - "icon": 13441, - "name": "Anglerfish", - "xp": 230 - }, - { - "level": 85, - "icon": 7208, - "name": "Wild Pie", - "xp": 240 - }, - { - "level": 90, - "icon": 11936, - "name": "Dark Crab", - "xp": 215 - }, - { - "level": 91, - "icon": 391, - "name": "Manta Ray", - "xp": 216.3 - }, - { - "level": 95, - "icon": 7218, - "name": "Summer Pie", - "xp": 260 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_crafting.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_crafting.json deleted file mode 100644 index d8e6c6e9d2..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_crafting.json +++ /dev/null @@ -1,809 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "icon": 1759, - "name": "Ball Of Wool", - "xp": 2.5 - }, - { - "level": 1, - "icon": 1787, - "name": "Unfired pot", - "xp": 6.3 - }, - { - "level": 1, - "icon": 1931, - "name": "Pot", - "xp": 6.3 - }, - { - "level": 1, - "icon": 1059, - "name": "Leather Gloves", - "xp": 13.8 - }, - { - "level": 1, - "icon": 1609, - "name": "Opal", - "xp": 15 - }, - { - "level": 1, - "icon": 21081, - "name": "Opal Ring", - "xp": 10 - }, - { - "level": 1, - "icon": 1775, - "name": "Molten Glass", - "xp": 20 - }, - { - "level": 1, - "icon": 1919, - "name": "Beer Glass", - "xp": 17.5 - }, - { - "level": 4, - "icon": 4527, - "name": "Empty Candle Lantern", - "xp": 19 - }, - { - "level": 5, - "icon": 1635, - "name": "Gold Ring", - "xp": 15 - }, - { - "level": 5, - "icon": 21512, - "name": "Bird House", - "xp": 15 - }, - { - "level": 6, - "icon": 1654, - "name": "Gold Necklace", - "xp": 20 - }, - { - "level": 7, - "icon": 1061, - "name": "Leather Boots", - "xp": 16.3 - }, - { - "level": 7, - "icon": 1789, - "name": "Unfired pie dish", - "xp": 15 - }, - { - "level": 7, - "icon": 2313, - "name": "Pie dish", - "xp": 10 - }, - { - "level": 7, - "icon": 11068, - "name": "Gold Bracelet", - "xp": 25 - }, - { - "level": 8, - "icon": 1791, - "name": "Unfired bowl", - "xp": 18 - }, - { - "level": 8, - "icon": 1923, - "name": "Bowl", - "xp": 15 - }, - { - "level": 8, - "icon": 1673, - "name": "Gold Amulet (U)", - "xp": 30 - }, - { - "level": 9, - "icon": 1167, - "name": "Cowl", - "xp": 18.5 - }, - { - "level": 10, - "icon": 9438, - "name": "Crossbow String", - "xp": 15 - }, - { - "level": 10, - "icon": 1777, - "name": "Bow String", - "xp": 15 - }, - { - "level": 11, - "icon": 1063, - "name": "Leather Vambraces", - "xp": 22 - }, - { - "level": 12, - "icon": 4525, - "name": "Empty Oil Lamp", - "xp": 25 - }, - { - "level": 13, - "icon": 1611, - "name": "Jade", - "xp": 20 - }, - { - "level": 13, - "icon": 21084, - "name": "Jade Ring", - "xp": 32 - }, - { - "level": 14, - "icon": 1129, - "name": "Leather Body", - "xp": 25 - }, - { - "level": 15, - "icon": 21515, - "name": "Oak Bird House", - "xp": 20 - }, - { - "level": 16, - "icon": 1613, - "name": "Red Topaz", - "xp": 25 - }, - { - "level": 16, - "icon": 21087, - "name": "Topaz Ring", - "xp": 35 - }, - { - "level": 16, - "icon": 1718, - "name": "Holy Symbol", - "xp": 50 - }, - { - "level": 16, - "icon": 21090, - "name": "Opal Necklace", - "xp": 35 - }, - - { - "level": 17, - "icon": 1724, - "name": "Unholy Symbol", - "xp": 50 - }, - { - "level": 18, - "icon": 1095, - "name": "Leather Chaps", - "xp": 27 - }, - { - "level": 19, - "icon": 5352, - "name": "Unfired plant pot", - "xp": 20 - }, - { - "level": 19, - "icon": 5350, - "name": "Empty plant pot", - "xp": 17.5 - }, - { - "level": 19, - "icon": 6038, - "name": "Magic String", - "xp": 30 - }, - { - "level": 20, - "icon": 1637, - "name": "Sapphire Ring", - "xp": 40 - }, - { - "level": 20, - "icon": 1607, - "name": "Sapphire", - "xp": 50 - }, - { - "level": 21, - "icon": 5418, - "name": "Empty Sack", - "xp": 38 - }, - { - "level": 22, - "icon": 1656, - "name": "Sapphire Necklace", - "xp": 55 - }, - { - "level": 22, - "icon": 21117, - "name": "Opal Bracelet", - "xp": 45 - }, - { - "level": 23, - "icon": 11071, - "name": "Sapphire Bracelet", - "xp": 60 - }, - { - "level": 23, - "icon": 5525, - "name": "Tiara", - "xp": 52.5 - }, - { - "level": 24, - "icon": 1675, - "name": "Sapphire Amulet (U)", - "xp": 65 - }, - { - "level": 25, - "icon": 4438, - "name": "Unfired pot lid", - "xp": 20 - }, - { - "level": 25, - "icon": 4440, - "name": "Pot lid", - "xp": 20 - }, - { - "level": 25, - "icon": 21093, - "name": "Jade Necklace", - "xp": 54 - }, - { - "level": 25, - "icon": 21518, - "name": "Willow Bird House", - "xp": 25 - }, - { - "level": 26, - "icon": 6209, - "name": "Drift Net", - "xp": 55 - }, - { - "level": 27, - "icon": 1605, - "name": "Emerald", - "xp": 67.5 - }, - { - "level": 27, - "icon": 1639, - "name": "Emerald Ring", - "xp": 55 - }, - { - "level": 27, - "icon": 21099, - "name": "Opal Amulet (U)", - "xp": 55 - }, - { - "level": 28, - "icon": 1131, - "name": "Hardleather Body", - "xp": 35 - }, - { - "level": 29, - "icon": 1658, - "name": "Emerald Necklace", - "xp": 60 - }, - { - "level": 29, - "icon": 21120, - "name": "Jade Bracelet", - "xp": 60 - }, - { - "level": 30, - "icon": 11076, - "name": "Emerald Bracelet", - "xp": 65 - }, - { - "level": 30, - "icon": 954, - "name": "Rope", - "xp": 25 - }, - { - "level": 31, - "icon": 1677, - "name": "Emerald Amulet (U)", - "xp": 70 - }, - { - "level": 32, - "icon": 10077, - "name": "Spiky Vambraces", - "xp": 6 - }, - { - "level": 32, - "icon": 21096, - "name": "Topaz Necklace", - "xp": 70 - }, - { - "level": 33, - "icon": 229, - "name": "Vial", - "xp": 35 - }, - { - "level": 34, - "icon": 1603, - "name": "Ruby", - "xp": 85 - }, - { - "level": 34, - "icon": 1641, - "name": "Ruby Ring", - "xp": 70 - }, - { - "level": 34, - "icon": 21102, - "name": "Jade Amulet (U)", - "xp": 70 - }, - { - "level": 35, - "icon": 6235, - "name": "Broodoo shield", - "xp": 100 - }, - { - "level": 35, - "icon": 21521, - "name": "Teak Bird House", - "xp": 30 - }, - { - "level": 36, - "icon": 5376, - "name": "Basket", - "xp": 56 - }, - { - "level": 38, - "icon": 1169, - "name": "Coif", - "xp": 37 - }, - { - "level": 38, - "icon": 21123, - "name": "Topaz Bracelet", - "xp": 75 - }, - { - "level": 40, - "icon": 1660, - "name": "Ruby Necklace", - "xp": 75 - }, - { - "level": 41, - "icon": 22269, - "name": "Hard leather shield", - "xp": 70 - }, - { - "level": 42, - "icon": 11085, - "name": "Ruby Bracelet", - "xp": 80 - }, - { - "level": 42, - "icon": 6668, - "name": "Fishbowl", - "xp": 42.5 - }, - { - "level": 43, - "icon": 1601, - "name": "Diamond", - "xp": 107.5 - }, - { - "level": 43, - "icon": 1643, - "name": "Diamond Ring", - "xp": 85 - }, - { - "level": 45, - "icon": 21105, - "name": "Topaz Amulet (U)", - "xp": 80 - }, - { - "level": 45, - "icon": 6328, - "name": "Snakeskin boots", - "xp": 30 - }, - { - "level": 45, - "icon": 22192, - "name": "Maple Bird House", - "xp": 35 - }, - { - "level": 46, - "icon": 567, - "name": "Unpowered Orb", - "xp": 52.5 - }, - { - "level": 47, - "icon": 6330, - "name": "Snakeskin vambraces", - "xp": 35 - }, - { - "level": 48, - "icon": 6326, - "name": "Snakeskin bandana", - "xp": 45 - }, - { - "level": 49, - "icon": 4542, - "name": "Lantern Lens", - "xp": 55 - }, - { - "level": 50, - "icon": 1679, - "name": "Ruby Amulet (U)", - "xp": 85 - }, - { - "level": 50, - "icon": 22195, - "name": "Mahogany Bird House", - "xp": 40 - }, - { - "level": 51, - "icon": 6324, - "name": "Snakeskin chaps", - "xp": 50 - }, - { - "level": 53, - "icon": 6322, - "name": "Snakeskin body", - "xp": 55 - }, - { - "level": 54, - "icon": 1395, - "name": "Water Battlestaff", - "xp": 100 - }, - { - "level": 55, - "icon": 1645, - "name": "Dragonstone Ring", - "xp": 100 - }, - { - "level": 55, - "icon": 1615, - "name": "Dragonstone", - "xp": 137.5 - }, - { - "level": 56, - "icon": 1662, - "name": "Diamond Necklace", - "xp": 90 - }, - { - "level": 56, - "icon": 22272, - "name": "Snakeskin shield", - "xp": 100 - }, - { - "level": 57, - "icon": 1065, - "name": "Green D'hide Vamb", - "xp": 62 - }, - { - "level": 58, - "icon": 11092, - "name": "Diamond Bracelet", - "xp": 95 - }, - { - "level": 58, - "icon": 1399, - "name": "Earth Battlestaff", - "xp": 112.5 - }, - { - "level": 60, - "icon": 1099, - "name": "Green D'hide Chaps", - "xp": 124 - }, - { - "level": 60, - "icon": 22198, - "name": "Yew Bird House", - "xp": 45 - }, - { - "level": 62, - "icon": 1393, - "name": "Fire Battlestaff", - "xp": 125 - }, - { - "level": 62, - "icon": 22275, - "name": "Green D'hide Shield", - "xp": 124 - }, - { - "level": 63, - "icon": 1135, - "name": "Green D'hide Body", - "xp": 186 - }, - { - "level": 66, - "icon": 1397, - "name": "Air Battlestaff", - "xp": 137.5 - }, - { - "level": 66, - "icon": 2487, - "name": "Blue D'hide Vamb", - "xp": 70 - }, - { - "level": 67, - "icon": 6575, - "name": "Onyx Ring", - "xp": 115 - }, - { - "level": 67, - "icon": 6573, - "name": "Onyx", - "xp": 167.5 - }, - { - "level": 68, - "icon": 2493, - "name": "Blue D'hide Chaps", - "xp": 140 - }, - { - "level": 69, - "icon": 22278, - "name": "Blue D'hide Shield", - "xp": 140 - }, - { - "level": 70, - "icon": 1681, - "name": "Diamond Amulet (U)", - "xp": 100 - }, - { - "level": 71, - "icon": 2499, - "name": "Blue D'hide Body", - "xp": 210 - }, - { - "level": 72, - "icon": 1664, - "name": "Dragonstone Necklace", - "xp": 105 - }, - { - "level": 73, - "icon": 2489, - "name": "Red D'hide Vamb", - "xp": 78 - }, - { - "level": 74, - "icon": 11115, - "name": "Dragonstone Bracelet", - "xp": 110 - }, - { - "level": 75, - "icon": 2495, - "name": "Red D'hide Chaps", - "xp": 156 - }, - { - "level": 75, - "icon": 22201, - "name": "Magic Bird House", - "xp": 50 - }, - { - "level": 76, - "icon": 22281, - "name": "Red D'hide Shield", - "xp": 156 - }, - { - "level": 77, - "icon": 2501, - "name": "Red D'hide Body", - "xp": 234 - }, - { - "level": 79, - "icon": 2491, - "name": "Black D'hide Vamb", - "xp": 86 - }, - { - "level": 80, - "icon": 1683, - "name": "Dragonstone Amulet (U)", - "xp": 150 - }, - { - "level": 82, - "icon": 2497, - "name": "Black D'hide Chaps", - "xp": 172 - }, - { - "level": 82, - "icon": 6577, - "name": "Onyx Necklace", - "xp": 120 - }, - { - "level": 83, - "icon": 21338, - "name": "Amethyst Bolt Tips", - "xp": 4 - }, - { - "level": 83, - "icon": 22284, - "name": "Black D'hide Shield", - "xp": 172 - }, - { - "level": 84, - "icon": 2503, - "name": "Black D'hide Body", - "xp": 258 - }, - { - "level": 84, - "icon": 11130, - "name": "Onyx Bracelet", - "xp": 125 - }, - { - "level": 85, - "icon": 21350, - "name": "Amethyst Arrowtips", - "xp": 4 - }, - { - "level": 87, - "icon": 21352, - "name": "Amethyst Javelin Heads", - "xp": 12 - }, - { - "level": 87, - "icon": 10973, - "name": "Light Orb", - "xp": 70 - }, - { - "level": 89, - "icon": 25853, - "name": "Amethyst Dart Tip", - "xp": 7.5 - }, - { - "level": 89, - "icon": 19538, - "name": "Zenyte Ring", - "xp": 150 - }, - { - "level": 89, - "icon": 19493, - "name": "Zenyte", - "xp": 200 - }, - { - "level": 90, - "icon": 6579, - "name": "Onyx Amulet (U)", - "xp": 165 - }, - { - "level": 90, - "icon": 22204, - "name": "Redwood Bird House", - "xp": 55 - }, - { - "level": 92, - "icon": 19535, - "name": "Zenyte Necklace", - "xp": 165 - }, - { - "level": 95, - "icon": 19492, - "name": "Zenyte Bracelet", - "xp": 180 - }, - { - "level": 98, - "icon": 19501, - "name": "Zenyte Amulet (U)", - "xp": 200 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_farming.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_farming.json deleted file mode 100644 index 70ac3b3444..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_farming.json +++ /dev/null @@ -1,388 +0,0 @@ -{ - "bonuses": [ - { - "name": "Farmer's Outfit (+2.5%)", - "value": 0.025 - } - ], - "actions": [ - { - "level": 1, - "icon": 8180, - "name": "Plant", - "xp": 31 - }, - { - "level": 1, - "icon": 8186, - "name": "Fern (big plant)", - "xp": 31 - }, - { - "level": 1, - "icon": 8189, - "name": "Short Plant", - "xp": 31 - }, - { - "level": 1, - "icon": 8183, - "name": "Dock Leaf", - "xp": 31 - }, - { - "level": 1, - "icon": 8181, - "name": "Small Fern", - "xp": 70 - }, - { - "level": 1, - "icon": 8184, - "name": "Thistle", - "xp": 70 - }, - { - "level": 1, - "icon": 8187, - "name": "Bush", - "xp": 70 - }, - { - "level": 1, - "icon": 8190, - "name": "Large Leaf Bush", - "xp": 70 - }, - { - "level": 1, - "icon": 8191, - "name": "Huge Plant", - "xp": 100 - }, - { - "level": 1, - "icon": 8188, - "name": "Tall Plant", - "xp": 100 - }, - { - "level": 1, - "icon": 8185, - "name": "Reeds", - "xp": 100 - }, - { - "level": 1, - "icon": 8182, - "name": "Fern (small plant)", - "xp": 100 - }, - { - "level": 1, - "icon": 10847, - "name": "Winter Sq'irk", - "xp": 30 - }, - { - "level": 1, - "icon": 10844, - "name": "Spring Sq'irk", - "xp": 40 - }, - { - "level": 1, - "icon": 10846, - "name": "Autumn Sq'irk", - "xp": 50 - }, - { - "level": 1, - "icon": 10845, - "name": "Summer Sq'irk", - "xp": 60 - }, - { - "level": 1, - "icon": 1942, - "name": "Potatoes", - "xp": 8 - }, - { - "level": 5, - "icon": 1957, - "name": "Onions", - "xp": 10 - }, - { - "level": 7, - "icon": 1965, - "name": "Cabbages", - "xp": 10 - }, - { - "level": 9, - "icon": 249, - "name": "Guam Leaf", - "xp": 11 - }, - { - "level": 12, - "icon": 1982, - "name": "Tomatoes", - "xp": 12.5 - }, - { - "level": 14, - "icon": 251, - "name": "Marrentill", - "xp": 13.5 - }, - { - "level": 15, - "icon": 1521, - "name": "Oak Tree", - "xp": 481.3 - }, - { - "level": 19, - "icon": 253, - "name": "Tarromin", - "xp": 16 - }, - { - "level": 20, - "icon": 5986, - "name": "Sweetcorn", - "xp": 17 - }, - { - "level": 23, - "icon": 21504, - "name": "Giant seaweed", - "xp": 21 - }, - { - "level": 26, - "icon": 255, - "name": "Harralander", - "xp": 21.5 - }, - { - "level": 26, - "icon": 225, - "name": "Limpwurt Plant", - "xp": 40 - }, - { - "level": 27, - "icon": 1955, - "name": "Apple Tree", - "xp": 1221.5 - }, - { - "level": 29, - "icon": 3261, - "name": "Goutweed", - "xp": 105 - }, - { - "level": 30, - "icon": 1519, - "name": "Willow Tree", - "xp": 1481.5 - }, - { - "level": 31, - "icon": 5504, - "name": "Strawberries", - "xp": 26 - }, - { - "level": 32, - "icon": 257, - "name": "Ranarr Weed", - "xp": 27 - }, - { - "level": 33, - "icon": 1963, - "name": "Banana Tree", - "xp": 1778.5 - }, - { - "level": 35, - "icon": 6333, - "name": "Teak Tree", - "xp": 7315 - }, - { - "level": 38, - "icon": 2998, - "name": "Toadflax", - "xp": 34 - }, - { - "level": 39, - "icon": 2108, - "name": "Orange Tree", - "xp": 2505.7 - }, - { - "level": 42, - "icon": 5970, - "name": "Curry Tree", - "xp": 2946.9 - }, - { - "level": 44, - "icon": 259, - "name": "Irit Leaf", - "xp": 43 - }, - { - "level": 45, - "icon": 1517, - "name": "Maple Tree", - "xp": 3448.4 - }, - { - "level": 47, - "icon": 5982, - "name": "Watermelons", - "xp": 49 - }, - { - "level": 50, - "icon": 261, - "name": "Avantoe", - "xp": 54.5 - }, - { - "level": 51, - "icon": 2114, - "name": "Pineapple Plant", - "xp": 4662.7 - }, - { - "level": 55, - "icon": 6332, - "name": "Mahogany Tree", - "xp": 15783 - }, - { - "level": 56, - "icon": 263, - "name": "Kwuarm", - "xp": 69 - }, - { - "level": 57, - "icon": 5972, - "name": "Papaya Tree", - "xp": 6218.4 - }, - { - "level": 58, - "icon": 22932, - "name": "White lily", - "xp": 292 - }, - { - "level": 60, - "icon": 1515, - "name": "Yew Tree", - "xp": 7150.9 - }, - { - "level": 61, - "icon": 231, - "name": "Snape grass", - "xp": 82 - }, - { - "level": 62, - "icon": 3000, - "name": "Snapdragon", - "xp": 87.5 - }, - { - "level": 65, - "icon": 23044, - "name": "Hespori", - "xp": 12662 - }, - { - "level": 67, - "icon": 265, - "name": "Cadantine", - "xp": 106.5 - }, - { - "level": 68, - "icon": 5974, - "name": "Palm Tree", - "xp": 10260.6 - }, - { - "level": 72, - "icon": 5980, - "name": "Calquat Tree", - "xp": 12225.5 - }, - { - "level": 73, - "icon": 2481, - "name": "Lantadyme", - "xp": 134.5 - }, - { - "level": 74, - "icon": 23962, - "name": "Crystal Tree", - "xp": 13366 - }, - { - "level": 75, - "icon": 1513, - "name": "Magic Tree", - "xp": 13913.8 - }, - { - "level": 79, - "icon": 267, - "name": "Dwarf Weed", - "xp": 170.5 - }, - { - "level": 81, - "icon": 22929, - "name": "Dragonfruit Tree", - "xp": 17895 - }, - { - "level": 83, - "icon": 6063, - "name": "Spirit Tree", - "xp": 19501.3 - }, - { - "level": 85, - "icon": 22935, - "name": "Celastrus Tree", - "xp": 14334 - }, - { - "level": 85, - "icon": 269, - "name": "Torstol", - "xp": 199.5 - }, - { - "level": 90, - "icon": 19669, - "name": "Redwood Tree", - "xp": 22680 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_firemaking.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_firemaking.json deleted file mode 100644 index 37fe236443..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_firemaking.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "bonuses": [ - { - "name": "Pyromancer Outfit (+2.5%)", - "value": 0.025 - } - ], - "actions": [ - { - "level": 1, - "icon": 1511, - "name": "Logs", - "xp": 40 - }, - { - "level": 1, - "icon": 2862, - "name": "Achey Tree Logs", - "xp": 40 - }, - { - "level": 15, - "icon": 1521, - "name": "Oak Logs", - "xp": 60 - }, - { - "level": 30, - "icon": 1519, - "name": "Willow Logs", - "xp": 90 - }, - { - "level": 35, - "icon": 6333, - "name": "Teak Logs", - "xp": 105 - }, - { - "level": 42, - "icon": 10810, - "name": "Arctic Pine Logs", - "xp": 125 - }, - { - "level": 45, - "icon": 1517, - "name": "Maple Logs", - "xp": 135 - }, - { - "level": 50, - "icon": 6332, - "name": "Mahogany Logs", - "xp": 157.5 - }, - { - "level": 60, - "icon": 1515, - "name": "Yew Logs", - "xp": 202.5 - }, - { - "level": 62, - "icon": 24691, - "name": "Blisterwood Logs", - "xp": 96 - }, - { - "level": 75, - "icon": 1513, - "name": "Magic Logs", - "xp": 303.8 - }, - { - "level": 90, - "icon": 19669, - "name": "Redwood Logs", - "xp": 350 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_fishing.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_fishing.json deleted file mode 100644 index 730be09d00..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_fishing.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "bonuses": [ - { - "name": "Anglers Outfit (+2.5%)", - "value": 0.025 - } - ], - "actions": [ - { - "level": 1, - "icon": 317, - "name": "Raw Shrimps", - "xp": 10 - }, - { - "level": 5, - "icon": 327, - "name": "Raw Sardine", - "xp": 20 - }, - { - "level": 5, - "icon": 3150, - "name": "Raw Karambwanji", - "xp": 5 - }, - { - "level": 7, - "icon": 25652, - "name": "Raw Guppy", - "xp": 8 - }, - { - "level": 10, - "icon": 345, - "name": "Raw Herring", - "xp": 30 - }, - { - "level": 15, - "icon": 321, - "name": "Raw Anchovies", - "xp": 40 - }, - { - "level": 16, - "icon": 353, - "name": "Raw Mackerel", - "xp": 20 - }, - { - "level": 20, - "icon": 335, - "name": "Raw Trout", - "xp": 50 - }, - { - "level": 20, - "icon": 25658, - "name": "Raw Cavefish", - "xp": 16 - }, - { - "level": 23, - "icon": 341, - "name": "Raw Cod", - "xp": 45 - }, - { - "level": 25, - "icon": 349, - "name": "Raw Pike", - "xp": 60 - }, - { - "level": 28, - "icon": 3379, - "name": "Raw Slimy Eel", - "xp": 65 - }, - { - "level": 30, - "icon": 331, - "name": "Raw Salmon", - "xp": 70 - }, - { - "level": 33, - "icon": 25664, - "name": "Raw Tetra", - "xp": 24 - }, - { - "level": 35, - "icon": 359, - "name": "Raw Tuna", - "xp": 80 - }, - { - "level": 38, - "icon": 10138, - "name": "Raw Rainbow Fish", - "xp": 80 - }, - { - "level": 38, - "icon": 5001, - "name": "Raw Cave Eel", - "xp": 80 - }, - { - "level": 40, - "icon": 377, - "name": "Raw Lobster", - "xp": 90 - }, - { - "level": 46, - "icon": 363, - "name": "Raw Bass", - "xp": 100 - }, - { - "level": 46, - "icon": 25670, - "name": "Raw Catfish", - "xp": 33 - }, - { - "level": 48, - "icon": 11328, - "name": "Leaping Trout", - "xp": 50 - }, - { - "level": 50, - "icon": 371, - "name": "Raw Swordfish", - "xp": 100 - }, - { - "level": 58, - "icon": 11330, - "name": "Leaping Salmon", - "xp": 70 - }, - { - "level": 62, - "icon": 7944, - "name": "Raw Monkfish", - "xp": 120 - }, - { - "level": 65, - "icon": 3142, - "name": "Raw Karambwan", - "xp": 50 - }, - { - "level": 70, - "icon": 11332, - "name": "Leaping Sturgeon", - "xp": 80 - }, - { - "level": 76, - "icon": 383, - "name": "Raw Shark", - "xp": 110 - }, - { - "level": 79, - "icon": 395, - "name": "Raw Sea Turtle", - "xp": 38 - }, - { - "level": 80, - "icon": 21293, - "name": "Infernal Eel", - "xp": 95 - }, - { - "level": 81, - "icon": 389, - "name": "Raw Manta Ray", - "xp": 46 - }, - { - "level": 82, - "icon": 13439, - "name": "Raw Anglerfish", - "xp": 120 - }, - { - "level": 82, - "icon": 21356, - "name": "Minnow", - "xp": 26.5 - }, - { - "level": 85, - "icon": 11934, - "name": "Raw Dark Crab", - "xp": 130 - }, - { - "level": 87, - "icon": 13339, - "name": "Sacred Eel", - "xp": 105 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_fletching.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_fletching.json deleted file mode 100644 index 53e3042478..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_fletching.json +++ /dev/null @@ -1,592 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "icon": 52, - "name": "Arrow Shaft", - "xp": 0.33 - }, - { - "level": 1, - "icon": 53, - "name": "Headless Arrow", - "xp": 1 - }, - { - "level": 1, - "icon": 882, - "name": "Bronze Arrow", - "xp": 1.3 - }, - { - "level": 5, - "icon": 2866, - "name": "Ogre Arrow", - "xp": 1 - }, - { - "level": 5, - "icon": 50, - "name": "Shortbow (U)", - "xp": 5 - }, - { - "level": 5, - "icon": 841, - "name": "Shortbow", - "xp": 5 - }, - { - "level": 9, - "icon": 877, - "name": "Bronze Bolts", - "xp": 0.5 - }, - { - "level": 9, - "icon": 9440, - "name": "Wooden Stock", - "xp": 6 - }, - { - "level": 9, - "icon": 9454, - "name": "Bronze Crossbow (U)", - "xp": 12 - }, - { - "level": 9, - "icon": 9174, - "name": "Bronze Crossbow", - "xp": 6 - }, - { - "level": 10, - "icon": 806, - "name": "Bronze Dart", - "xp": 1.8 - }, - { - "level": 10, - "icon": 839, - "name": "Longbow", - "xp": 10 - }, - { - "level": 10, - "icon": 48, - "name": "Longbow (U)", - "xp": 10 - }, - { - "level": 11, - "icon": 879, - "name": "Opal Bolts", - "xp": 1.6 - }, - { - "level": 15, - "icon": 884, - "name": "Iron Arrow", - "xp": 2.5 - }, - { - "level": 20, - "icon": 54, - "name": "Oak Shortbow (U)", - "xp": 16.5 - }, - { - "level": 20, - "icon": 843, - "name": "Oak Shortbow", - "xp": 16.5 - }, - { - "level": 22, - "icon": 807, - "name": "Iron Dart", - "xp": 3.8 - }, - { - "level": 24, - "icon": 9442, - "name": "Oak Stock", - "xp": 16 - }, - { - "level": 24, - "icon": 9456, - "name": "Blurite Crossbow (U)", - "xp": 32 - }, - { - "level": 24, - "icon": 9176, - "name": "Blurite Crossbow", - "xp": 16 - }, - { - "level": 25, - "icon": 56, - "name": "Oak Longbow (U)", - "xp": 25 - }, - { - "level": 25, - "icon": 845, - "name": "Oak Longbow", - "xp": 25 - }, - { - "level": 27, - "icon": 22251, - "name": "Oak Shield", - "xp": 50 - }, - { - "level": 30, - "icon": 886, - "name": "Steel Arrow", - "xp": 5 - }, - { - "level": 32, - "icon": 10158, - "name": "Kebbit Bolts", - "xp": 1 - }, - { - "level": 35, - "icon": 60, - "name": "Willow Shortbow (U)", - "xp": 33.3 - }, - { - "level": 35, - "icon": 849, - "name": "Willow Shortbow", - "xp": 33.3 - }, - { - "level": 37, - "icon": 808, - "name": "Steel Dart", - "xp": 7.5 - }, - { - "level": 39, - "icon": 9140, - "name": "Iron Bolts", - "xp": 1.5 - }, - { - "level": 39, - "icon": 9444, - "name": "Willow Stock", - "xp": 22 - }, - { - "level": 39, - "icon": 9457, - "name": "Iron Crossbow (U)", - "xp": 44 - }, - { - "level": 39, - "icon": 9177, - "name": "Iron Crossbow", - "xp": 22 - }, - { - "level": 40, - "icon": 58, - "name": "Willow Longbow (U)", - "xp": 41.5 - }, - { - "level": 40, - "icon": 847, - "name": "Willow Longbow", - "xp": 41.5 - }, - { - "level": 40, - "icon": 1391, - "name": "Battlestaff", - "xp": 80 - }, - { - "level": 41, - "icon": 880, - "name": "Pearl Bolts", - "xp": 3.2 - }, - { - "level": 42, - "icon": 22254, - "name": "Willow Shield", - "xp": 83 - }, - { - "level": 42, - "icon": 10159, - "name": "Long Kebbit Bolts", - "xp": 1.3 - }, - { - "level": 43, - "icon": 9145, - "name": "Silver Bolts", - "xp": 2.5 - }, - { - "level": 45, - "icon": 888, - "name": "Mithril Arrow", - "xp": 7.5 - }, - { - "level": 46, - "icon": 9141, - "name": "Steel Bolts", - "xp": 3.5 - }, - { - "level": 46, - "icon": 9446, - "name": "Teak Stock", - "xp": 27 - }, - { - "level": 46, - "icon": 9459, - "name": "Steel Crossbow (U)", - "xp": 54 - }, - { - "level": 46, - "icon": 9179, - "name": "Steel Crossbow", - "xp": 27 - }, - { - "level": 50, - "icon": 64, - "name": "Maple Shortbow (U)", - "xp": 50 - }, - { - "level": 50, - "icon": 853, - "name": "Maple Shortbow", - "xp": 50 - }, - { - "level": 51, - "icon": 881, - "name": "Barbed Bolts", - "xp": 9.5 - }, - { - "level": 52, - "icon": 809, - "name": "Mithril Dart", - "xp": 11.2 - }, - { - "level": 52, - "icon": 4150, - "name": "Broad Arrows", - "xp": 10 - }, - { - "level": 53, - "icon": 12926, - "name": "Toxic Blowpipe", - "xp": 120 - }, - { - "level": 54, - "icon": 9181, - "name": "Mith Crossbow", - "xp": 32 - }, - { - "level": 54, - "icon": 9448, - "name": "Maple Stock", - "xp": 32 - }, - { - "level": 54, - "icon": 9142, - "name": "Mithril Bolts", - "xp": 5 - }, - { - "level": 54, - "icon": 9461, - "name": "Mithril Crossbow (U)", - "xp": 64 - }, - { - "level": 55, - "icon": 62, - "name": "Maple Longbow (U)", - "xp": 58.3 - }, - { - "level": 55, - "icon": 11875, - "name": "Broad Bolts", - "xp": 3 - }, - { - "level": 55, - "icon": 851, - "name": "Maple Longbow", - "xp": 58 - }, - { - "level": 56, - "icon": 9337, - "name": "Sapphire Bolts", - "xp": 4.7 - }, - { - "level": 57, - "icon": 22257, - "name": "Maple Shield", - "xp": 116.5 - }, - { - "level": 58, - "icon": 9338, - "name": "Emerald Bolts", - "xp": 5.5 - }, - { - "level": 60, - "icon": 890, - "name": "Adamant Arrow", - "xp": 10 - }, - { - "level": 61, - "icon": 9143, - "name": "Adamant Bolts", - "xp": 7 - }, - { - "level": 61, - "icon": 9450, - "name": "Mahogany Stock", - "xp": 41 - }, - { - "level": 61, - "icon": 9463, - "name": "Adamant Crossbow (U)", - "xp": 82 - }, - { - "level": 61, - "icon": 9183, - "name": "Adamant Crossbow", - "xp": 41 - }, - { - "level": 63, - "icon": 9339, - "name": "Ruby Bolts", - "xp": 6.3 - }, - { - "level": 65, - "icon": 9340, - "name": "Diamond Bolts", - "xp": 7 - }, - { - "level": 65, - "icon": 857, - "name": "Yew Shortbow", - "xp": 67.5 - }, - { - "level": 65, - "icon": 68, - "name": "Yew Shortbow (U)", - "xp": 67.5 - }, - { - "level": 67, - "icon": 810, - "name": "Adamant Dart", - "xp": 15 - }, - { - "level": 69, - "icon": 9465, - "name": "Runite Crossbow (U)", - "xp": 100 - }, - { - "level": 69, - "icon": 9185, - "name": "Rune Crossbow", - "xp": 50 - }, - { - "level": 69, - "icon": 9452, - "name": "Yew Stock", - "xp": 50 - }, - { - "level": 69, - "icon": 9144, - "name": "Runite Bolts", - "xp": 10 - }, - { - "level": 70, - "icon": 855, - "name": "Yew Longbow", - "xp": 75 - }, - { - "level": 70, - "icon": 66, - "name": "Yew Longbow (U)", - "xp": 75 - }, - { - "level": 71, - "icon": 9341, - "name": "Dragonstone Bolts", - "xp": 8.2 - }, - { - "level": 72, - "icon": 22260, - "name": "Yew Shield", - "xp": 150 - }, - { - "level": 73, - "icon": 9342, - "name": "Onyx Bolts", - "xp": 9.4 - }, - { - "level": 75, - "icon": 892, - "name": "Rune Arrow", - "xp": 12.5 - }, - { - "level": 76, - "icon": 21316, - "name": "Amethyst Broad Bolts", - "xp": 10.6 - }, - { - "level": 78, - "icon": 21952, - "name": "Magic Stock", - "xp": 70 - }, - { - "level": 78, - "icon": 21921, - "name": "Dragon Crossbow (U)", - "xp": 135 - }, - { - "level": 78, - "icon": 21902, - "name": "Dragon Crossbow", - "xp": 70 - }, - { - "level": 80, - "icon": 861, - "name": "Magic Shortbow", - "xp": 83.3 - }, - { - "level": 80, - "icon": 72, - "name": "Magic Shortbow (U)", - "xp": 83.3 - }, - { - "level": 81, - "icon": 811, - "name": "Rune Dart", - "xp": 18.8 - }, - { - "level": 82, - "icon": 21326, - "name": "Amethyst Arrow", - "xp": 13.5 - }, - { - "level": 84, - "icon": 21930, - "name": "Dragon Bolts", - "xp": 12 - }, - { - "level": 84, - "icon": 21318, - "name": "Amethyst Javelin", - "xp": 13.5 - }, - { - "level": 85, - "icon": 859, - "name": "Magic Longbow", - "xp": 91.5 - }, - { - "level": 85, - "icon": 70, - "name": "Magic Longbow (U)", - "xp": 91.5 - }, - { - "level": 87, - "icon": 22263, - "name": "Magic Shield", - "xp": 183 - }, - { - "level": 90, - "icon": 25849, - "name": "Amethyst Dart", - "xp": 21 - }, - { - "level": 90, - "icon": 11212, - "name": "Dragon Arrow", - "xp": 15 - }, - { - "level": 92, - "icon": 22266, - "name": "Redwood Shield", - "xp": 216 - }, - { - "level": 95, - "icon": 11230, - "name": "Dragon Dart", - "xp": 25 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_herblore.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_herblore.json deleted file mode 100644 index d91f14eccf..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_herblore.json +++ /dev/null @@ -1,436 +0,0 @@ -{ - "actions": [ - { - "level": 3, - "icon": 121, - "name": "Attack Potion (3)", - "xp": 25 - }, - { - "level": 3, - "icon": 249, - "name": "Guam Leaf", - "xp": 2.5 - }, - { - "level": 5, - "icon": 251, - "name": "Marrentill", - "xp": 3.8 - }, - { - "level": 5, - "icon": 175, - "name": "Antipoison (3)", - "xp": 37.5 - }, - { - "level": 8, - "icon": 4844, - "name": "Relicym's Balm (3)", - "xp": 40 - }, - { - "level": 11, - "icon": 253, - "name": "Tarromin", - "xp": 5 - }, - { - "level": 12, - "icon": 115, - "name": "Strength Potion (3)", - "xp": 50 - }, - { - "level": 15, - "icon": 3410, - "name": "Serum 207 (3)", - "xp": 50 - }, - { - "level": 18, - "icon": 4419, - "name": "Guthix Rest (3)", - "xp": 59 - }, - { - "level": 19, - "icon": 10142, - "name": "Guam tar", - "xp": 30 - }, - { - "level": 20, - "icon": 255, - "name": "Harralander", - "xp": 6.3 - }, - { - "level": 22, - "icon": 6472, - "name": "Compost Potion (3)", - "xp": 60 - }, - { - "level": 22, - "icon": 127, - "name": "Restore Potion (3)", - "xp": 62.5 - }, - { - "level": 25, - "icon": 257, - "name": "Ranarr Weed", - "xp": 7.5 - }, - { - "level": 26, - "icon": 3010, - "name": "Energy Potion (3)", - "xp": 67.5 - }, - { - "level": 30, - "icon": 2998, - "name": "Toadflax", - "xp": 8 - }, - { - "level": 30, - "icon": 133, - "name": "Defence Potion (3)", - "xp": 75 - }, - { - "level": 31, - "icon": 10143, - "name": "Marrentill tar", - "xp": 42.5 - }, - { - "level": 34, - "icon": 3034, - "name": "Agility Potion (3)", - "xp": 80 - }, - { - "level": 36, - "icon": 9741, - "name": "Combat Potion (3)", - "xp": 84 - }, - { - "level": 38, - "icon": 139, - "name": "Prayer Potion (3)", - "xp": 87.5 - }, - { - "level": 39, - "icon": 10144, - "name": "Tarromin tar", - "xp": 55 - }, - { - "level": 40, - "icon": 259, - "name": "Irit Leaf", - "xp": 8.8 - }, - { - "level": 44, - "icon": 10145, - "name": "Harralander tar", - "xp": 72.5 - }, - { - "level": 45, - "icon": 145, - "name": "Super Attack (3)", - "xp": 100 - }, - { - "level": 48, - "icon": 181, - "name": "Superantipoison (3)", - "xp": 106.3 - }, - { - "level": 48, - "icon": 261, - "name": "Avantoe", - "xp": 10 - }, - { - "level": 50, - "icon": 151, - "name": "Fishing Potion (3)", - "xp": 112.5 - }, - { - "level": 52, - "icon": 3018, - "name": "Super Energy (3)", - "xp": 117.5 - }, - { - "level": 53, - "icon": 10000, - "name": "Hunter Potion (3)", - "xp": 120 - }, - { - "level": 54, - "icon": 263, - "name": "Kwuarm", - "xp": 11.3 - }, - { - "level": 55, - "icon": 157, - "name": "Super Strength (3)", - "xp": 125 - }, - { - "level": 57, - "icon": 9022, - "name": "Magic Essence Potion (3)", - "xp": 130 - }, - { - "level": 59, - "icon": 3000, - "name": "Snapdragon", - "xp": 11.8 - }, - { - "level": 60, - "icon": 187, - "name": "Weapon Poison", - "xp": 137.5 - }, - { - "level": 63, - "icon": 3026, - "name": "Super Restore (3)", - "xp": 142.5 - }, - { - "level": 65, - "icon": 265, - "name": "Cadantine", - "xp": 12.5 - }, - { - "level": 65, - "icon": 10927, - "name": "Sanfew Serum (3)", - "xp": 160 - }, - { - "level": 66, - "icon": 163, - "name": "Super Defence (3)", - "xp": 150 - }, - { - "level": 67, - "icon": 2481, - "name": "Lantadyme", - "xp": 13.1 - }, - { - "level": 68, - "icon": 5945, - "name": "Antidote+ (3)", - "xp": 155 - }, - { - "level": 69, - "icon": 2454, - "name": "Antifire Potion (3)", - "xp": 157.5 - }, - { - "level": 70, - "icon": 23697, - "name": "Divine super attack potion(4)", - "xp:": 2 - }, - { - "level": 70, - "icon": 23721, - "name": "Divine super defence potion(4)", - "xp:": 2 - }, - { - "level": 70, - "icon": 23709, - "name": "Divine super strength potion(4)", - "xp:": 2 - }, - { - "level": 70, - "icon": 267, - "name": "Dwarf Weed", - "xp": 13.8 - }, - { - "level": 72, - "icon": 169, - "name": "Ranging Potion (3)", - "xp": 162.5 - }, - { - "level": 73, - "icon": 5937, - "name": "Weapon Poison (+)", - "xp": 165 - }, - { - "level": 74, - "icon": 23733, - "name": "Divine ranging potion(4)", - "xp:": 2 - }, - { - "level": 75, - "icon": 269, - "name": "Torstol", - "xp": 15 - }, - { - "level": 76, - "icon": 3042, - "name": "Magic Potion (3)", - "xp": 172.5 - }, - { - "level": 77, - "icon": 12627, - "name": "Stamina Potion (3)", - "xp": 76.5 - }, - { - "level": 77, - "icon": 12625, - "name": "Stamina Potion (4)", - "xp": 102 - }, - { - "level": 78, - "icon": 23745, - "name": "Divine magic potion(4)", - "xp:": 2 - }, - { - "level": 78, - "icon": 189, - "name": "Zamorak Brew (3)", - "xp": 175 - }, - { - "level": 79, - "icon": 5954, - "name": "Antidote++ (3)", - "xp": 177.5 - }, - { - "level": 80, - "icon": 22464, - "name": "Bastion Potion (3)", - "xp": 155 - }, - { - "level": 80, - "icon": 22452, - "name": "Battlemage Potion (3)", - "xp": 155 - }, - { - "level": 81, - "icon": 6687, - "name": "Saradomin Brew (3)", - "xp": 180 - }, - { - "level": 82, - "icon": 5940, - "name": "Weapon Poison (++)", - "xp": 190 - }, - { - "level": 84, - "icon": 11953, - "name": "Extended Antifire (3)", - "xp": 82.5 - }, - { - "level": 84, - "icon": 11951, - "name": "Extended Antifire (4)", - "xp": 110 - }, - { - "level": 86, - "icon": 24635, - "name": "Divine bastion potion(4)", - "xp:": 2 - }, - { - "level": 86, - "icon": 24623, - "name": "Divine battlemage potion(4)", - "xp:": 2 - }, - { - "level": 87, - "icon": 12907, - "name": "Anti-venom(3)", - "xp": 90 - }, - { - "level": 87, - "icon": 12905, - "name": "Anti-venom(4)", - "xp": 120 - }, - { - "level": 90, - "icon": 12695, - "name": "Super Combat Potion(4)", - "xp": 150 - }, - { - "level": 92, - "icon": 21978, - "name": "Super Antifire (4)", - "xp": 130 - }, - { - "level": 94, - "icon": 12913, - "name": "Anti-venom+(4)", - "xp": 125 - }, - { - "level": 97, - "icon": 23685, - "name": "Divine super combat potion(4)", - "xp:": 2 - }, - { - "level": 98, - "icon": 21981, - "name": "Extended Super Antifire (3)", - "xp": 120 - }, - { - "level": 98, - "icon": 21978, - "name": "Extended Super Antifire (4)", - "xp": 160 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_hunter.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_hunter.json deleted file mode 100644 index a50c2164d6..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_hunter.json +++ /dev/null @@ -1,352 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "icon": 9965, - "name": "Crimson Swift", - "xp": 34 - }, - { - "level": 1, - "icon": 9953, - "name": "Polar Kebbit", - "xp": 30 - }, - { - "level": 3, - "icon": 9954, - "name": "Common Kebbit", - "xp": 36 - }, - { - "level": 5, - "icon": 9968, - "name": "Golden Warbler", - "xp": 47 - }, - { - "level": 5, - "icon": 21512, - "name": "Regular Bird House", - "xp": 280 - }, - { - "level": 7, - "icon": 9955, - "name": "Feldip Weasel", - "xp": 48 - }, - { - "level": 9, - "icon": 9966, - "name": "Copper Longtail", - "xp": 61 - }, - { - "level": 11, - "icon": 9967, - "name": "Cerulean Twitch", - "xp": 64.5 - }, - { - "level": 13, - "icon": 9956, - "name": "Desert Devil", - "xp": 66 - }, - { - "level": 14, - "icon": 21515, - "name": "Oak Bird House", - "xp": 420 - }, - { - "level": 15, - "icon": 9970, - "name": "Ruby Harvest", - "xp": 24 - }, - { - "level": 17, - "icon": 11238, - "name": "Baby Impling", - "xp": 18 - }, - { - "level": 19, - "icon": 9969, - "name": "Tropical Wagtail", - "xp": 95 - }, - { - "level": 22, - "icon": 11240, - "name": "Young Impling", - "xp": 20 - }, - { - "level": 23, - "icon": 9953, - "name": "Wild Kebbit", - "xp": 128 - }, - { - "level": 24, - "icon": 21518, - "name": "Willow Bird House", - "xp": 560 - }, - { - "level": 25, - "icon": 9971, - "name": "Sapphire Glacialis", - "xp": 34 - }, - { - "level": 27, - "icon": 10092, - "name": "Ferret", - "xp": 115 - }, - { - "level": 27, - "icon": 9975, - "name": "White Rabbit", - "xp": 144 - }, - { - "level": 28, - "icon": 11242, - "name": "Gourmet Impling", - "xp": 22 - }, - { - "level": 29, - "icon": 10149, - "name": "Swamp Lizard", - "xp": 152 - }, - { - "level": 31, - "icon": 10045, - "name": "Spined Larupia", - "xp": 180 - }, - { - "level": 33, - "icon": 9958, - "name": "Barb-tailed Kebbit", - "xp": 168 - }, - { - "level": 34, - "icon": 21521, - "name": "Teak Bird House", - "xp": 700 - }, - { - "level": 35, - "icon": 9972, - "name": "Snowy Knight", - "xp": 44 - }, - { - "level": 36, - "icon": 11244, - "name": "Earth Impling", - "xp": 25 - }, - { - "level": 37, - "icon": 9957, - "name": "Prickly Kebbit", - "xp": 204 - }, - { - "level": 41, - "icon": 10051, - "name": "Horned Graahk", - "xp": 240 - }, - { - "level": 42, - "icon": 11246, - "name": "Essence Impling", - "xp": 27 - }, - { - "level": 43, - "icon": 9960, - "name": "Spotted Kebbit", - "xp": 104 - }, - { - "level": 44, - "icon": 22192, - "name": "Maple Bird House", - "xp": 820 - }, - { - "level": 45, - "icon": 9973, - "name": "Black Warlock", - "xp": 54 - }, - { - "level": 47, - "icon": 10146, - "name": "Orange Salamander", - "xp": 224 - }, - { - "level": 49, - "icon": 9961, - "name": "Razor-backed Kebbit", - "xp": 348 - }, - { - "level": 49, - "icon": 22195, - "name": "Mahogany Bird House", - "xp": 960 - }, - { - "level": 50, - "icon": 11248, - "name": "Eclectic Impling", - "xp": 32 - }, - { - "level": 51, - "icon": 9959, - "name": "Sabre-toothed Kebbit", - "xp": 200 - }, - { - "level": 53, - "icon": 9976, - "name": "Chinchompa", - "xp": 198.3 - }, - { - "level": 55, - "icon": 10039, - "name": "Sabre-toothed Kyatt", - "xp": 300 - }, - { - "level": 57, - "icon": 9963, - "name": "Dark Kebbit", - "xp": 132 - }, - { - "level": 58, - "icon": 11250, - "name": "Nature Impling", - "xp": 34 - }, - { - "level": 59, - "icon": 10147, - "name": "Red Salamander", - "xp": 272 - }, - { - "level": 59, - "icon": 22198, - "name": "Yew Bird House", - "xp": 1020 - }, - { - "level": 60, - "icon": 19556, - "name": "Maniacal Monkey", - "xp": 1000 - }, - { - "level": 63, - "icon": 9977, - "name": "Carnivorous Chinchompa", - "xp": 265 - }, - { - "level": 65, - "icon": 11252, - "name": "Magpie Impling", - "xp": 44 - }, - { - "level": 65, - "icon": 11252, - "name": "Magpie Impling (Gielinor)", - "xp": 216 - }, - { - "level": 67, - "icon": 10148, - "name": "Black Salamander", - "xp": 319.5 - }, - { - "level": 69, - "icon": 9964, - "name": "Dashing Kebbit", - "xp": 156 - }, - { - "level": 73, - "icon": 5091, - "name": "Black Chinchompa", - "xp": 315 - }, - { - "level": 74, - "icon": 22201, - "name": "Magic Bird House", - "xp": 1140 - }, - { - "level": 74, - "icon": 11254, - "name": "Ninja Impling", - "xp": 52 - }, - { - "level": 74, - "icon": 11254, - "name": "Ninja Impling (Gielinor)", - "xp": 240 - }, - { - "level": 80, - "icon": 23768, - "name": "Crystal Impling", - "xp": 280 - }, - { - "level": 83, - "icon": 11256, - "name": "Dragon Impling", - "xp": 65 - }, - { - "level": 83, - "icon": 11256, - "name": "Dragon Impling (Gielinor)", - "xp": 300 - }, - { - "level": 89, - "icon": 22204, - "name": "Redwood Bird House", - "xp": 1200 - }, - { - "level": 89, - "icon": 19732, - "name": "Lucky Impling", - "xp": 380 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_magic.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_magic.json deleted file mode 100644 index c127933d7c..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_magic.json +++ /dev/null @@ -1,1084 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "sprite": 15, - "name": "Wind Strike", - "xp": 5.5 - }, - { - "level": 3, - "sprite": 16, - "name": "Confuse", - "xp": 13 - }, - { - "level": 4, - "sprite": 358, - "name": "Enchant Opal Bolt", - "xp": 9 - }, - { - "level": 5, - "sprite": 17, - "name": "Water Strike", - "xp": 7.5 - }, - { - "level": 6, - "sprite": 1252, - "name": "Arceuus Library Teleport", - "xp": 10 - }, - { - "level": 7, - "sprite": 18, - "name": "Enchant Sapphire Jewellery", - "xp": 17.5 - }, - { - "level": 7, - "sprite": 358, - "name": "Enchant Sapphire Bolt", - "xp": 17.5 - }, - { - "level": 9, - "sprite": 19, - "name": "Earth Strike", - "xp": 9.5 - }, - { - "level": 11, - "sprite": 20, - "name": "Weaken", - "xp": 21 - }, - { - "level": 13, - "sprite": 21, - "name": "Fire Strike", - "xp": 11.5 - }, - { - "level": 14, - "sprite": 358, - "name": "Enchant Jade Bolt", - "xp": 19 - }, - { - "level": 15, - "sprite": 22, - "name": "Bones To Bananas", - "xp": 25 - }, - { - "level": 16, - "sprite": 1247, - "name": "Basic Reanimation", - "xp": 32 - }, - { - "level": 17, - "sprite": 1253, - "name": "Draynor Manor Teleport", - "xp": 16 - }, - { - "level": 17, - "sprite": 23, - "name": "Wind Bolt", - "xp": 13.5 - }, - { - "level": 19, - "sprite": 24, - "name": "Curse", - "xp": 29 - }, - { - "level": 20, - "sprite": 319, - "name": "Bind", - "xp": 30 - }, - { - "level": 21, - "sprite": 25, - "name": "Low Level Alchemy", - "xp": 31 - }, - { - "level": 23, - "sprite": 26, - "name": "Water Bolt", - "xp": 16.5 - }, - { - "level": 24, - "sprite": 358, - "name": "Enchant Pearl Bolt", - "xp": 29 - }, - { - "level": 25, - "sprite": 27, - "name": "Varrock Teleport", - "xp": 35 - }, - { - "level": 27, - "sprite": 28, - "name": "Enchant Emerald Jewellery", - "xp": 37 - }, - { - "level": 27, - "sprite": 358, - "name": "Enchant Emerald Bolt", - "xp": 37 - }, - { - "level": 28, - "sprite": 1256, - "name": "Mind Altar Teleport", - "xp": 22 - }, - { - "level": 29, - "sprite": 358, - "name": "Enchant Topaz Bolt", - "xp": 33 - }, - { - "level": 29, - "sprite": 29, - "name": "Earth Bolt", - "xp": 19.5 - }, - { - "level": 31, - "sprite": 30, - "name": "Lumbridge Teleport", - "xp": 41 - }, - { - "level": 33, - "sprite": 31, - "name": "Telekinetic Grab", - "xp": 43 - }, - { - "level": 34, - "sprite": 1257, - "name": "Respawn Teleport", - "xp": 27 - }, - { - "level": 35, - "sprite": 32, - "name": "Fire Bolt", - "xp": 22.5 - }, - { - "level": 35, - "sprite": 1267, - "name": "Ghostly Grasp", - "xp": 22.5 - }, - { - "level": 37, - "sprite": 33, - "name": "Falador Teleport", - "xp": 48 - }, - { - "level": 38, - "sprite": 1270, - "name": "Resurrect Lesser Thrall", - "xp": 55 - }, - { - "level": 39, - "sprite": 34, - "name": "Crumble Undead", - "xp": 24.5 - }, - { - "level": 40, - "sprite": 1254, - "name": "Salve Graveyard Teleport", - "xp": 30 - }, - { - "level": 40, - "sprite": 355, - "name": "Teleport To House", - "xp": 30 - }, - { - "level": 41, - "sprite": 1248, - "name": "Adept Reanimation", - "xp": 80 - }, - { - "level": 41, - "sprite": 35, - "name": "Wind Blast", - "xp": 25.5 - }, - { - "level": 43, - "sprite": 36, - "name": "Superheat Item", - "xp": 53 - }, - { - "level": 44, - "sprite": 1302, - "name": "Inferior Demonbane", - "xp": 27 - }, - { - "level": 45, - "sprite": 37, - "name": "Camelot Teleport", - "xp": 55.5 - }, - { - "level": 47, - "sprite": 38, - "name": "Water Blast", - "xp": 28.5 - }, - { - "level": 47, - "sprite": 1315, - "name": "Shadow Veil", - "xp": 58 - }, - { - "level": 48, - "sprite": 1259, - "name": "Fenkenstrain's Castle Teleport", - "xp": 50 - }, - { - "level": 49, - "sprite": 39, - "name": "Enchant Ruby Jewellery", - "xp": 59 - }, - { - "level": 49, - "sprite": 358, - "name": "Enchant Ruby Bolt", - "xp": 59 - }, - { - "level": 50, - "sprite": 53, - "name": "Iban Blast", - "xp": 30 - }, - { - "level": 50, - "sprite": 329, - "name": "Smoke Rush", - "xp": 30 - }, - { - "level": 50, - "sprite": 324, - "name": "Magic Dart", - "xp": 30 - }, - { - "level": 50, - "sprite": 320, - "name": "Snare", - "xp": 60 - }, - { - "level": 50, - "sprite": 1316, - "name": "Dark Lure", - "xp": 60 - }, - { - "level": 51, - "sprite": 54, - "name": "Ardougne Teleport", - "xp": 61 - }, - { - "level": 52, - "sprite": 337, - "name": "Shadow Rush", - "xp": 31 - }, - { - "level": 53, - "sprite": 40, - "name": "Earth Blast", - "xp": 31.5 - }, - { - "level": 54, - "sprite": 341, - "name": "Paddewwa Teleport", - "xp": 64 - }, - { - "level": 55, - "sprite": 41, - "name": "High Level Alchemy", - "xp": 65 - }, - { - "level": 56, - "sprite": 42, - "name": "Charge Water Orb", - "xp": 66 - }, - { - "level": 56, - "sprite": 333, - "name": "Blood Rush", - "xp": 33 - }, - { - "level": 56, - "sprite": 1268, - "name": "Skeletal Grasp", - "xp": 33 - }, - { - "level": 57, - "sprite": 358, - "name": "Enchant Diamond Bolt", - "xp": 67 - }, - { - "level": 57, - "sprite": 43, - "name": "Enchant Diamond Jewellery", - "xp": 67 - }, - { - "level": 57, - "sprite": 2981, - "name": "Resurrect Superior Thrall", - "xp": 70 - }, - { - "level": 58, - "sprite": 55, - "name": "Watchtower Teleport", - "xp": 68 - }, - { - "level": 58, - "sprite": 325, - "name": "Ice Rush", - "xp": 34 - }, - { - "level": 59, - "sprite": 44, - "name": "Fire Blast", - "xp": 34.5 - }, - { - "level": 59, - "sprite": 1305, - "name": "Mark of Darkness", - "xp": 70 - }, - { - "level": 60, - "sprite": 342, - "name": "Senntisten Teleport", - "xp": 70 - }, - { - "level": 60, - "sprite": 60, - "name": "Claws Of Guthix", - "xp": 35 - }, - { - "level": 60, - "sprite": 59, - "name": "Flames Of Zamorak", - "xp": 35 - }, - { - "level": 60, - "sprite": 61, - "name": "Saradomin Strike", - "xp": 35 - }, - { - "level": 60, - "sprite": 45, - "name": "Charge Earth Orb", - "xp": 70 - }, - { - "level": 60, - "sprite": 354, - "name": "Bones To Peaches", - "xp": 35.5 - }, - { - "level": 61, - "sprite": 1260, - "name": "West Ardougne Teleport", - "xp": 68 - }, - { - "level": 61, - "sprite": 323, - "name": "Trollheim Teleport", - "xp": 68 - }, - { - "level": 62, - "sprite": 330, - "name": "Smoke Burst", - "xp": 36 - }, - { - "level": 62, - "sprite": 46, - "name": "Wind Wave", - "xp": 36 - }, - { - "level": 62, - "sprite": 1303, - "name": "Superior Demonbane", - "xp": 36 - }, - { - "level": 63, - "sprite": 47, - "name": "Charge Fire Orb", - "xp": 73 - }, - { - "level": 64, - "sprite": 338, - "name": "Shadow Burst", - "xp": 37 - }, - { - "level": 64, - "sprite": 357, - "name": "Teleport Ape Atoll", - "xp": 74 - }, - { - "level": 64, - "sprite": 1307, - "name": "Lesser Corruption", - "xp": 75 - }, - { - "level": 65, - "sprite": 543, - "name": "Bake Pie", - "xp": 60 - }, - { - "level": 65, - "sprite": 1261, - "name": "Harmony Island Teleport", - "xp": 74 - }, - { - "level": 65, - "sprite": 563, - "name": "Geomancy", - "xp": 60 - }, - { - "level": 65, - "sprite": 48, - "name": "Water Wave", - "xp": 37.5 - }, - { - "level": 66, - "sprite": 49, - "name": "Charge Air Orb", - "xp": 76 - }, - { - "level": 66, - "sprite": 567, - "name": "Cure Plant", - "xp": 60 - }, - { - "level": 66, - "sprite": 343, - "name": "Kharyrll Teleport", - "xp": 76 - }, - { - "level": 66, - "sprite": 56, - "name": "Vulnerability", - "xp": 76 - }, - { - "level": 66, - "sprite": 577, - "name": "Monster Examine", - "xp": 61 - }, - { - "level": 66, - "sprite": 1317, - "name": "Vile Vigour", - "xp": 76 - }, - { - "level": 67, - "sprite": 568, - "name": "Npc Contact", - "xp": 63 - }, - { - "level": 68, - "sprite": 334, - "name": "Blood Burst", - "xp": 39 - }, - { - "level": 68, - "sprite": 559, - "name": "Cure Other", - "xp": 65 - }, - { - "level": 68, - "sprite": 50, - "name": "Enchant Dragonstone Jewellery", - "xp": 78 - }, - { - "level": 68, - "sprite": 358, - "name": "Enchant Dragonstone Bolt", - "xp": 78 - }, - { - "level": 68, - "sprite": 578, - "name": "Humidify", - "xp": 65 - }, - { - "level": 69, - "sprite": 544, - "name": "Moonclan Teleport", - "xp": 66 - }, - { - "level": 70, - "sprite": 51, - "name": "Earth Wave", - "xp": 40 - }, - { - "level": 70, - "sprite": 326, - "name": "Ice Burst", - "xp": 40 - }, - { - "level": 70, - "sprite": 569, - "name": "Tele Group Moonclan", - "xp": 67 - }, - { - "level": 70, - "sprite": 1318, - "name": "Degrime", - "xp": 83 - }, - { - "level": 71, - "sprite": 586, - "name": "Ourania Teleport", - "xp": 69 - }, - { - "level": 71, - "sprite": 1264, - "name": "Cemetery Teleport", - "xp": 82 - }, - { - "level": 71, - "sprite": 562, - "name": "Cure Me", - "xp": 69 - }, - { - "level": 71, - "sprite": 579, - "name": "Hunter Kit", - "xp": 70 - }, - { - "level": 72, - "sprite": 1249, - "name": "Expert Reanimation", - "xp": 138 - }, - { - "level": 72, - "sprite": 344, - "name": "Lassar Teleport", - "xp": 82 - }, - { - "level": 72, - "sprite": 545, - "name": "Waterbirth Teleport", - "xp": 71 - }, - { - "level": 73, - "sprite": 570, - "name": "Tele Group Waterbirth", - "xp": 72 - }, - { - "level": 73, - "sprite": 57, - "name": "Enfeeble", - "xp": 83 - }, - { - "level": 73, - "sprite": 1306, - "name": "Ward of Arceuus", - "xp": 83 - }, - { - "level": 74, - "sprite": 349, - "name": "Teleother Lumbridge", - "xp": 84 - }, - { - "level": 74, - "sprite": 331, - "name": "Smoke Blitz", - "xp": 42 - }, - { - "level": 74, - "sprite": 565, - "name": "Cure Group", - "xp": 74 - }, - { - "level": 75, - "sprite": 576, - "name": "Stat Spy", - "xp": 76 - }, - { - "level": 75, - "sprite": 547, - "name": "Barbarian Teleport", - "xp": 76 - }, - { - "level": 75, - "sprite": 52, - "name": "Fire Wave", - "xp": 42.5 - }, - { - "level": 76, - "sprite": 575, - "name": "Tele Group Barbarian", - "xp": 77 - }, - { - "level": 76, - "sprite": 339, - "name": "Shadow Blitz", - "xp": 43 - }, - { - "level": 76, - "sprite": 585, - "name": "Spin Flax", - "xp": 75 - }, - { - "level": 76, - "sprite": 2984, - "name": "Resurrect Greater Thrall", - "xp": 88 - }, - { - "level": 77, - "sprite": 548, - "name": "Superglass Make", - "xp": 78 - }, - { - "level": 78, - "sprite": 583, - "name": "Tan Leather", - "xp": 81 - }, - { - "level": 78, - "sprite": 549, - "name": "Khazard Teleport", - "xp": 80 - }, - { - "level": 78, - "sprite": 345, - "name": "Dareeyak Teleport", - "xp": 88 - }, - { - "level": 78, - "sprite": 1266, - "name": "Resurrect Crops", - "xp": 90 - }, - { - "level": 79, - "sprite": 321, - "name": "Entangle", - "xp": 89 - }, - { - "level": 79, - "sprite": 572, - "name": "Tele Group Khazard", - "xp": 81 - }, - { - "level": 79, - "sprite": 580, - "name": "Dream", - "xp": 82 - }, - { - "level": 79, - "sprite": 1269, - "name": "Undead Grasp", - "xp": 46.5 - }, - { - "level": 80, - "sprite": 322, - "name": "Charge", - "xp": 180 - }, - { - "level": 80, - "sprite": 335, - "name": "Blood Blitz", - "xp": 45 - }, - { - "level": 80, - "sprite": 58, - "name": "Stun", - "xp": 90 - }, - { - "level": 80, - "sprite": 550, - "name": "String Jewellery", - "xp": 83 - }, - { - "level": 80, - "sprite": 1310, - "name": "Death Charge", - "xp": 90 - }, - { - "level": 81, - "sprite": 554, - "name": "Stat Restore Pot Share", - "xp": 84 - }, - { - "level": 81, - "sprite": 362, - "name": "Wind Surge", - "xp": 44 - }, - { - "level": 82, - "sprite": 350, - "name": "Teleother Falador", - "xp": 92 - }, - { - "level": 82, - "sprite": 552, - "name": "Magic Imbue", - "xp": 86 - }, - { - "level": 82, - "sprite": 327, - "name": "Ice Blitz", - "xp": 46 - }, - { - "level": 82, - "sprite": 1304, - "name": "Dark Demonbane", - "xp": 43.5 - }, - { - "level": 83, - "sprite": 553, - "name": "Fertile Soil", - "xp": 87 - }, - { - "level": 83, - "sprite": 1262, - "name": "Barrows Teleport", - "xp": 90 - }, - { - "level": 84, - "sprite": 346, - "name": "Carrallangar Teleport", - "xp": 82 - }, - { - "level": 84, - "sprite": 551, - "name": "Boost Potion Share", - "xp": 88 - }, - { - "level": 84, - "sprite": 1311, - "name": "Demonic Offering", - "xp": 175 - }, - { - "level": 85, - "sprite": 363, - "name": "Water Surge", - "xp": 46 - }, - { - "level": 85, - "sprite": 555, - "name": "Fishing Guild Teleport", - "xp": 89 - }, - { - "level": 85, - "sprite": 352, - "name": "Tele Block", - "xp": 80 - }, - { - "level": 85, - "sprite": 359, - "name": "Teleport To Bounty Target", - "xp": 45 - }, - { - "level": 85, - "sprite": 1308, - "name": "Greater Corruption", - "xp": 95 - }, - { - "level": 86, - "sprite": 332, - "name": "Smoke Barrage", - "xp": 48 - }, - { - "level": 86, - "sprite": 573, - "name": "Tele Group Fishing Guild", - "xp": 90 - }, - { - "level": 86, - "sprite": 581, - "name": "Plank Make", - "xp": 90 - }, - { - "level": 87, - "sprite": 556, - "name": "Catherby Teleport", - "xp": 92 - }, - { - "level": 87, - "sprite": 353, - "name": "Enchant Onyx Jewellery", - "xp": 97 - }, - { - "level": 87, - "sprite": 358, - "name": "Enchant Onyx Bolt", - "xp": 97 - }, - { - "level": 88, - "sprite": 340, - "name": "Shadow Barrage", - "xp": 48 - }, - { - "level": 88, - "sprite": 574, - "name": "Tele Group Catherby", - "xp": 93 - }, - { - "level": 89, - "sprite": 557, - "name": "Ice Plateau Teleport", - "xp": 96 - }, - { - "level": 89, - "sprite": 584, - "name": "Recharge Dragonstone", - "xp": 97.5 - }, - { - "level": 90, - "sprite": 347, - "name": "Annakarl Teleport", - "xp": 100 - }, - { - "level": 90, - "sprite": 364, - "name": "Earth Surge", - "xp": 48 - }, - { - "level": 90, - "sprite": 1250, - "name": "Master Reanimation", - "xp": 170 - }, - { - "level": 90, - "sprite": 575, - "name": "Tele Group Ice Plateau", - "xp": 99 - }, - { - "level": 90, - "sprite": 351, - "name": "Teleother Camelot", - "xp": 100 - }, - { - "level": 90, - "sprite": 1263, - "name": "Ape Atoll Teleport", - "xp": 100 - }, - { - "level": 91, - "sprite": 558, - "name": "Energy Transfer", - "xp": 100 - }, - { - "level": 92, - "sprite": 336, - "name": "Blood Barrage", - "xp": 51 - }, - { - "level": 92, - "sprite": 560, - "name": "Heal Other", - "xp": 101 - }, - { - "level": 92, - "sprite": 1312, - "name": "Sinister Offering", - "xp": 180 - }, - { - "level": 93, - "sprite": 561, - "name": "Vengeance Other", - "xp": 108 - }, - { - "level": 93, - "sprite": 361, - "name": "Enchant Zenyte Jewellery", - "xp": 110 - }, - { - "level": 94, - "sprite": 328, - "name": "Ice Barrage", - "xp": 52 - }, - { - "level": 94, - "sprite": 564, - "name": "Vengeance", - "xp": 112 - }, - { - "level": 95, - "sprite": 566, - "name": "Heal Group", - "xp": 124 - }, - { - "level": 95, - "sprite": 365, - "name": "Fire Surge", - "xp": 51 - }, - { - "level": 96, - "sprite": 348, - "name": "Ghorrock Teleport", - "xp": 106 - }, - { - "level": 96, - "sprite": 582, - "name": "Spellbook Swap", - "xp": 130 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_mining.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_mining.json deleted file mode 100644 index a944c4782f..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_mining.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "bonuses": [ - { - "name": "Prospector Outfit (+2.5%)", - "value": 0.025 - } - ], - "actions": [ - { - "level": 1, - "icon": 434, - "name": "Clay", - "xp": 5 - }, - { - "level": 1, - "icon": 1436, - "name": "Rune Essence", - "xp": 5 - }, - { - "level": 1, - "icon": 436, - "name": "Copper Ore", - "xp": 17.5 - }, - { - "level": 1, - "icon": 438, - "name": "Tin Ore", - "xp": 17.5 - }, - { - "level": 10, - "icon": 3211, - "name": "Limestone", - "xp": 26.5 - }, - { - "level": 14, - "icon": 25683, - "name": "Barronite shards", - "xp": 16 - }, - { - "level": 14, - "icon": 25684, - "name": "Barronite deposit", - "xp": 32 - }, - { - "level": 15, - "icon": 440, - "name": "Iron Ore", - "xp": 35 - }, - { - "level": 20, - "icon": 442, - "name": "Silver Ore", - "xp": 40 - }, - { - "level": 30, - "icon": 7936, - "name": "Pure Essence", - "xp": 5 - }, - { - "level": 30, - "icon": 453, - "name": "Coal", - "xp": 50 - }, - { - "level": 35, - "icon": 6977, - "name": "Sandstone (10kg)", - "xp": 60 - }, - { - "level": 35, - "icon": 6975, - "name": "Sandstone (5kg)", - "xp": 50 - }, - { - "level": 35, - "icon": 6973, - "name": "Sandstone (2kg)", - "xp": 40 - }, - { - "level": 35, - "icon": 6971, - "name": "Sandstone (1kg)", - "xp": 30 - }, - { - "level": 38, - "icon": 13445, - "name": "Dense Essence Block", - "xp": 12 - }, - { - "level": 40, - "icon": 444, - "name": "Gold Ore", - "xp": 65 - }, - { - "level": 40, - "icon": 1629, - "name": "Gem Rocks", - "xp": 65 - }, - { - "level": 45, - "icon": 6979, - "name": "Granite (500g)", - "xp": 50 - }, - { - "level": 45, - "icon": 6981, - "name": "Granite (2kg)", - "xp": 60 - }, - { - "level": 45, - "icon": 6983, - "name": "Granite (5kg)", - "xp": 75 - }, - { - "level": 55, - "icon": 447, - "name": "Mithril Ore", - "xp": 80 - }, - { - "level": 70, - "icon": 1761, - "name": "Soft Clay", - "xp": 5 - }, - { - "level": 70, - "icon": 449, - "name": "Adamantite Ore", - "xp": 95 - }, - { - "level": 85, - "icon": 451, - "name": "Runite Ore", - "xp": 125 - }, - { - "level": 92, - "icon": 21347, - "name": "Amethyst", - "xp": 240 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_prayer.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_prayer.json deleted file mode 100644 index 9ebde37563..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_prayer.json +++ /dev/null @@ -1,397 +0,0 @@ -{ - "bonuses": [ - { - "name": "Lit Gilded Altar (350%)", - "value": 2.5 - }, - { - "name": "Ectofuntus (400%)", - "value": 3 - }, - { - "name": "Chaos Altar (700%)", - "value": 6 - }, - { - "name": "Morytania Diary 3 Shades(150%)", - "value": 0.5 - } - ], - "actions": [ - { - "level": 1, - "icon": 13447, - "name": "Ensouled Goblin Head", - "xp": 130, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13450, - "name": "Ensouled Monkey Head", - "xp": 182, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13453, - "name": "Ensouled Imp Head", - "xp": 286, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13456, - "name": "Ensouled Minotaur Head", - "xp": 364, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13459, - "name": "Ensouled Scorpion Head", - "xp": 454, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13462, - "name": "Ensouled Bear Head", - "xp": 480, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13465, - "name": "Ensouled Unicorn Head", - "xp": 494, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13468, - "name": "Ensouled Dog Head", - "xp": 520, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13471, - "name": "Ensouled Chaos Druid Head", - "xp": 584, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13474, - "name": "Ensouled Giant Head", - "xp": 650, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13477, - "name": "Ensouled Ogre Head", - "xp": 716, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13480, - "name": "Ensouled Elf Head", - "xp": 754, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13483, - "name": "Ensouled Troll Head", - "xp": 780, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13486, - "name": "Ensouled Horror Head", - "xp": 832, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13489, - "name": "Ensouled Kalphite Head", - "xp": 884, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13492, - "name": "Ensouled Dagannoth Head", - "xp": 936, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13495, - "name": "Ensouled Bloodveld Head", - "xp": 1040, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13498, - "name": "Ensouled Tzhaar Head", - "xp": 1104, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13501, - "name": "Ensouled Demon Head", - "xp": 1170, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13504, - "name": "Ensouled Aviansie Head", - "xp": 1234, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13507, - "name": "Ensouled Abyssal Head", - "xp": 1300, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 13510, - "name": "Ensouled Dragon Head", - "xp": 1560, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 25766, - "name": "Fiendish Ashes", - "xp": 10, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 25769, - "name": "Vile Ashes", - "xp": 25, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 25772, - "name": "Malicious Ashes", - "xp": 65, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 25775, - "name": "Abyssal Ashes", - "xp": 85, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 25778, - "name": "Infernal Ashes", - "xp": 110, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 526, - "name": "Bones", - "xp": 4.5 - }, - { - "level": 1, - "icon": 2859, - "name": "Wolf Bones", - "xp": 4.5 - }, - { - "level": 1, - "icon": 3396, - "name": "Loar Remains", - "xp": 33 - }, - { - "level": 1, - "icon": 528, - "name": "Burnt Bones", - "xp": 4.5 - }, - { - "level": 1, - "icon": 3179, - "name": "Monkey Bones", - "xp": 5 - }, - { - "level": 1, - "icon": 530, - "name": "Bat Bones", - "xp": 5.3 - }, - { - "level": 1, - "icon": 3125, - "name": "Jogre Bones", - "xp": 15 - }, - { - "level": 1, - "icon": 532, - "name": "Big Bones", - "xp": 15 - }, - { - "level": 1, - "icon": 4812, - "name": "Zogre Bones", - "xp": 22.5 - }, - { - "level": 1, - "icon": 3123, - "name": "Shaikahan Bones", - "xp": 25 - }, - { - "level": 1, - "icon": 534, - "name": "Babydragon Bones", - "xp": 30 - }, - { - "level": 1, - "icon": 3398, - "name": "Phrin Remains", - "xp": 46.5 - }, - { - "level": 1, - "icon": 22780, - "name": "Wyrm Bones", - "xp": 50 - }, - { - "level": 1, - "icon": 3400, - "name": "Riyl Remains", - "xp": 59.5 - }, - { - "level": 1, - "icon": 6812, - "name": "Wyvern Bones", - "xp": 72 - }, - { - "level": 1, - "icon": 536, - "name": "Dragon Bones", - "xp": 72 - }, - { - "level": 1, - "icon": 22783, - "name": "Drake Bones", - "xp": 80 - }, - { - "level": 1, - "icon": 3402, - "name": "Asyn Remains", - "xp": 82.5 - }, - { - "level": 1, - "icon": 4830, - "name": "Fayrg Bones", - "xp": 84 - }, - { - "level": 1, - "icon": 3404, - "name": "Fiyr Remains", - "xp": 84 - }, - { - "level": 1, - "icon": 11943, - "name": "Lava Dragon Bones", - "xp": 85 - }, - { - "level": 1, - "icon": 4832, - "name": "Raurg Bones", - "xp": 96 - }, - { - "level": 1, - "icon": 22786, - "name": "Hydra Bones", - "xp": 110 - }, - { - "level": 1, - "icon": 6729, - "name": "Dagannoth Bones", - "xp": 125 - }, - { - "level": 1, - "icon": 4834, - "name": "Ourg Bones", - "xp": 140 - }, - { - "level": 70, - "icon": 22124, - "name": "Superior Dragon Bones", - "xp": 150 - }, - { - "level": 1, - "icon": 25419, - "name": "Urium Remains", - "xp": 120 - }, - { - "level": 1, - "icon": 25654, - "name": "Guppy", - "xp": 4 - }, - { - "level": 1, - "icon": 25660, - "name": "Cavefish", - "xp": 7 - }, - { - "level": 1, - "icon": 25666, - "name": "Tetra", - "xp": 10 - }, - { - "level": 1, - "icon": 25672, - "name": "Cavefish", - "xp": 16 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_runecraft.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_runecraft.json deleted file mode 100644 index 901196750e..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_runecraft.json +++ /dev/null @@ -1,240 +0,0 @@ -{ - "bonuses": [ - { - "name": "Daeyalt essence (+50%)", - "value": 0.5 - } - ], - "actions": [ - { - "level": 1, - "icon": 5527, - "name": "Air Tiara", - "xp": 25, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5529, - "name": "Mind Tiara", - "xp": 27.5, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5531, - "name": "Water Tiara", - "xp": 30, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5535, - "name": "Earth Tiara", - "xp": 32.5, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5537, - "name": "Fire Tiara", - "xp": 35, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5533, - "name": "Body Tiara", - "xp": 37.5, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5539, - "name": "Cosmic Tiara", - "xp": 40, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5543, - "name": "Chaos Tiara", - "xp": 42.5, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5541, - "name": "Nature Tiara", - "xp": 45, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5545, - "name": "Law Tiara", - "xp": 47.5, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 5547, - "name": "Death Tiara", - "xp": 50, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 22121, - "name": "Wrath Tiara", - "xp": 52.5, - "ignoreBonus": true - }, - { - "level": 1, - "icon": 556, - "name": "Air Rune", - "xp": 5 - }, - { - "level": 2, - "icon": 558, - "name": "Mind Rune", - "xp": 5.5 - }, - { - "level": 2, - "icon": 25696, - "name": "Mind core", - "xp": 55 - }, - { - "level": 5, - "icon": 555, - "name": "Water Rune", - "xp": 6 - }, - { - "level": 6, - "icon": 4695, - "name": "Mist Rune", - "xp": 8.5 - }, - { - "level": 9, - "icon": 557, - "name": "Earth Rune", - "xp": 6.5 - }, - { - "level": 10, - "icon": 4696, - "name": "Dust Rune", - "xp": 9 - }, - { - "level": 13, - "icon": 4698, - "name": "Mud Rune", - "xp": 9.5 - }, - { - "level": 14, - "icon": 554, - "name": "Fire Rune", - "xp": 7 - }, - { - "level": 15, - "icon": 4697, - "name": "Smoke Rune", - "xp": 9.5 - }, - { - "level": 19, - "icon": 4694, - "name": "Steam Rune", - "xp": 10 - }, - { - "level": 20, - "icon": 559, - "name": "Body Rune", - "xp": 7.5 - }, - { - "level": 20, - "icon": 25698, - "name": "Body core", - "xp": 75 - }, - { - "level": 23, - "icon": 4699, - "name": "Lava Rune", - "xp": 10.5 - }, - { - "level": 27, - "icon": 564, - "name": "Cosmic Rune", - "xp": 8 - }, - { - "level": 35, - "icon": 562, - "name": "Chaos Rune", - "xp": 8.5 - }, - { - "level": 35, - "icon": 25700, - "name": "Chaos core", - "xp": 85 - }, - { - "level": 40, - "icon": 9075, - "name": "Astral Rune", - "xp": 8.7 - }, - { - "level": 44, - "icon": 561, - "name": "Nature Rune", - "xp": 9 - }, - { - "level": 54, - "icon": 563, - "name": "Law Rune", - "xp": 9.5 - }, - { - "level": 65, - "icon": 560, - "name": "Death Rune", - "xp": 10 - }, - { - "level": 77, - "icon": 565, - "name": "Blood Rune", - "xp": 24.425, - "ignoreBonus": true - }, - { - "level": 90, - "icon": 566, - "name": "Soul Rune", - "xp": 30.325, - "ignoreBonus": true - }, - { - "level": 95, - "icon": 21880, - "name": "Wrath Rune", - "xp": 8 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_smithing.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_smithing.json deleted file mode 100644 index bf829f53b6..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_smithing.json +++ /dev/null @@ -1,1090 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "icon": 2349, - "name": "Bronze Bar", - "xp": 6.3 - }, - { - "level": 1, - "icon": 1351, - "name": "Bronze Axe", - "xp": 12.5 - }, - { - "level": 1, - "icon": 1205, - "name": "Bronze Dagger", - "xp": 12.5 - }, - { - "level": 2, - "icon": 1422, - "name": "Bronze Mace", - "xp": 12.5 - }, - { - "level": 3, - "icon": 1139, - "name": "Bronze Med Helm", - "xp": 12.5 - }, - { - "level": 3, - "icon": 9375, - "name": "Bronze Bolts (Unf)", - "xp": 12.5 - }, - { - "level": 4, - "icon": 4819, - "name": "Bronze Nails", - "xp": 12.5 - }, - { - "level": 4, - "icon": 1277, - "name": "Bronze Sword", - "xp": 12.5 - }, - { - "level": 4, - "icon": 1794, - "name": "Bronze Wire", - "xp": 12.5 - }, - { - "level": 4, - "icon": 819, - "name": "Bronze Dart Tip", - "xp": 12.5 - }, - { - "level": 5, - "icon": 39, - "name": "Bronze Arrowtips", - "xp": 12.5 - }, - { - "level": 5, - "icon": 1321, - "name": "Bronze Scimitar", - "xp": 25 - }, - { - "level": 5, - "icon": 11367, - "name": "Bronze Hasta", - "xp": 25 - }, - { - "level": 5, - "icon": 1237, - "name": "Bronze Spear", - "xp": 25 - }, - { - "level": 6, - "icon": 19570, - "name": "Bronze Javelin Heads", - "xp": 12.5 - }, - { - "level": 6, - "icon": 1291, - "name": "Bronze Longsword", - "xp": 25 - }, - { - "level": 6, - "icon": 9420, - "name": "Bronze Limbs", - "xp": 12.5 - }, - { - "level": 7, - "icon": 864, - "name": "Bronze Knife", - "xp": 12.5 - }, - { - "level": 7, - "icon": 1155, - "name": "Bronze Full Helm", - "xp": 25 - }, - { - "level": 8, - "icon": 1173, - "name": "Bronze Sq Shield", - "xp": 25 - }, - { - "level": 9, - "icon": 1337, - "name": "Bronze Warhammer", - "xp": 37.5 - }, - { - "level": 10, - "icon": 1375, - "name": "Bronze Battleaxe", - "xp": 37.5 - }, - { - "level": 11, - "icon": 1103, - "name": "Bronze Chainbody", - "xp": 37.5 - }, - { - "level": 12, - "icon": 1189, - "name": "Bronze Kiteshield", - "xp": 37.5 - }, - { - "level": 13, - "icon": 3095, - "name": "Bronze Claws", - "xp": 25 - }, - { - "level": 14, - "icon": 1307, - "name": "Bronze 2h Sword", - "xp": 37.5 - }, - { - "level": 14, - "icon": 25684, - "name": "Barronite deposits", - "xp": 30 - }, - { - "level": 15, - "icon": 2351, - "name": "Iron Bar", - "xp": 12.5 - }, - { - "level": 15, - "icon": 1203, - "name": "Iron Dagger", - "xp": 25 - }, - { - "level": 16, - "icon": 1349, - "name": "Iron Axe", - "xp": 25 - }, - { - "level": 16, - "icon": 1075, - "name": "Bronze Platelegs", - "xp": 37.5 - }, - { - "level": 16, - "icon": 1087, - "name": "Bronze Plateskirt", - "xp": 37.5 - }, - { - "level": 17, - "icon": 7225, - "name": "Iron Spit", - "xp": 25 - }, - { - "level": 17, - "icon": 1420, - "name": "Iron Mace", - "xp": 25 - }, - { - "level": 18, - "icon": 9377, - "name": "Iron Bolts (Unf)", - "xp": 25 - }, - { - "level": 18, - "icon": 1117, - "name": "Bronze Platebody", - "xp": 62.5 - }, - { - "level": 18, - "icon": 1137, - "name": "Iron Med Helm", - "xp": 25 - }, - { - "level": 19, - "icon": 4820, - "name": "Iron Nails", - "xp": 25 - }, - { - "level": 19, - "icon": 820, - "name": "Iron Dart Tip", - "xp": 25 - }, - { - "level": 19, - "icon": 1279, - "name": "Iron Sword", - "xp": 25 - }, - { - "level": 20, - "icon": 2355, - "name": "Silver Bar", - "xp": 13.7 - }, - { - "level": 20, - "icon": 40, - "name": "Iron Arrowtips", - "xp": 25 - }, - { - "level": 20, - "icon": 1323, - "name": "Iron Scimitar", - "xp": 50 - }, - { - "level": 20, - "icon": 11369, - "name": "Iron Hasta", - "xp": 50 - }, - { - "level": 20, - "icon": 1239, - "name": "Iron Spear", - "xp": 50 - }, - { - "level": 21, - "icon": 1293, - "name": "Iron Longsword", - "xp": 50 - }, - { - "level": 21, - "icon": 19572, - "name": "Iron Javelin Heads", - "xp": 25 - }, - { - "level": 22, - "icon": 1153, - "name": "Iron Full Helm", - "xp": 50 - }, - { - "level": 22, - "icon": 863, - "name": "Iron Knife", - "xp": 25 - }, - { - "level": 23, - "icon": 9423, - "name": "Iron Limbs", - "xp": 25 - }, - { - "level": 23, - "icon": 1175, - "name": "Iron Sq Shield", - "xp": 50 - }, - { - "level": 24, - "icon": 1335, - "name": "Iron Warhammer", - "xp": 75 - }, - { - "level": 25, - "icon": 1363, - "name": "Iron Battleaxe", - "xp": 75 - }, - { - "level": 26, - "icon": 4540, - "name": "Oil Lantern Frame", - "xp": 25 - }, - { - "level": 26, - "icon": 1101, - "name": "Iron Chainbody", - "xp": 75 - }, - { - "level": 27, - "icon": 1191, - "name": "Iron Kiteshield", - "xp": 75 - }, - { - "level": 28, - "icon": 3096, - "name": "Iron Claws", - "xp": 50 - }, - { - "level": 29, - "icon": 1309, - "name": "Iron 2h Sword", - "xp": 75 - }, - { - "level": 30, - "icon": 1207, - "name": "Steel Dagger", - "xp": 37.5 - }, - { - "level": 30, - "icon": 2353, - "name": "Steel Bar", - "xp": 17.5 - }, - { - "level": 31, - "icon": 1081, - "name": "Iron Plateskirt", - "xp": 75 - }, - { - "level": 31, - "icon": 1067, - "name": "Iron Platelegs", - "xp": 75 - }, - { - "level": 31, - "icon": 1353, - "name": "Steel Axe", - "xp": 37.5 - }, - { - "level": 32, - "icon": 1424, - "name": "Steel Mace", - "xp": 37.5 - }, - { - "level": 33, - "icon": 1115, - "name": "Iron Platebody", - "xp": 125 - }, - { - "level": 33, - "icon": 1141, - "name": "Steel Med Helm", - "xp": 37.5 - }, - { - "level": 33, - "icon": 9378, - "name": "Steel Bolts (Unf)", - "xp": 37.5 - }, - { - "level": 34, - "icon": 821, - "name": "Steel Dart Tip", - "xp": 37.5 - }, - { - "level": 34, - "icon": 1539, - "name": "Steel Nails", - "xp": 37.5 - }, - { - "level": 34, - "icon": 1281, - "name": "Steel Sword", - "xp": 37.5 - }, - { - "level": 35, - "icon": 2, - "name": "Cannonball", - "xp": 25.6 - }, - { - "level": 35, - "icon": 1325, - "name": "Steel Scimitar", - "xp": 75 - }, - { - "level": 35, - "icon": 41, - "name": "Steel Arrowtips", - "xp": 37.5 - }, - { - "level": 35, - "icon": 11371, - "name": "Steel Hasta", - "xp": 75 - }, - { - "level": 35, - "icon": 1241, - "name": "Steel Spear", - "xp": 75 - }, - { - "level": 36, - "icon": 9425, - "name": "Steel Limbs", - "xp": 37.5 - }, - { - "level": 36, - "icon": 2370, - "name": "Steel Studs", - "xp": 37.5 - }, - { - "level": 36, - "icon": 1295, - "name": "Steel Longsword", - "xp": 75 - }, - { - "level": 36, - "icon": 19574, - "name": "Steel Javelin Heads", - "xp": 37.5 - }, - { - "level": 37, - "icon": 865, - "name": "Steel Knife", - "xp": 37.5 - }, - { - "level": 37, - "icon": 1157, - "name": "Steel Full Helm", - "xp": 75 - }, - { - "level": 38, - "icon": 1177, - "name": "Steel Sq Shield", - "xp": 75 - }, - { - "level": 39, - "icon": 1339, - "name": "Steel Warhammer", - "xp": 112.5 - }, - { - "level": 40, - "icon": 1365, - "name": "Steel Battleaxe", - "xp": 112.5 - }, - { - "level": 40, - "icon": 2357, - "name": "Gold Bar (Goldsmith Gauntlets)", - "xp": 56.2 - }, - { - "level": 40, - "icon": 2357, - "name": "Gold Bar", - "xp": 22.5 - }, - { - "level": 41, - "icon": 1105, - "name": "Steel Chainbody", - "xp": 112.5 - }, - { - "level": 42, - "icon": 1193, - "name": "Steel Kiteshield", - "xp": 112.5 - }, - { - "level": 43, - "icon": 3097, - "name": "Steel Claws", - "xp": 75 - }, - { - "level": 44, - "icon": 1311, - "name": "Steel 2h Sword", - "xp": 112.5 - }, - { - "level": 46, - "icon": 1069, - "name": "Steel Platelegs", - "xp": 112.5 - }, - { - "level": 46, - "icon": 1083, - "name": "Steel Plateskirt", - "xp": 112.5 - }, - { - "level": 48, - "icon": 1119, - "name": "Steel Platebody", - "xp": 187.5 - }, - { - "level": 49, - "icon": 4544, - "name": "Bullseye Lantern (Unf)", - "xp": 37 - }, - { - "level": 50, - "icon": 1209, - "name": "Mithril Dagger", - "xp": 50 - }, - { - "level": 50, - "icon": 2359, - "name": "Mithril Bar", - "xp": 30 - }, - { - "level": 51, - "icon": 1355, - "name": "Mithril Axe", - "xp": 50 - }, - { - "level": 52, - "icon": 1428, - "name": "Mithril Mace", - "xp": 50 - }, - { - "level": 53, - "icon": 1143, - "name": "Mithril Med Helm", - "xp": 50 - }, - { - "level": 53, - "icon": 9379, - "name": "Mithril Bolts (Unf)", - "xp": 50 - }, - { - "level": 54, - "icon": 1285, - "name": "Mithril Sword", - "xp": 50 - }, - { - "level": 54, - "icon": 822, - "name": "Mithril Dart Tip", - "xp": 50 - }, - { - "level": 54, - "icon": 4822, - "name": "Mithril Nails", - "xp": 50 - }, - { - "level": 55, - "icon": 42, - "name": "Mithril Arrowtips", - "xp": 50 - }, - { - "level": 55, - "icon": 1329, - "name": "Mithril Scimitar", - "xp": 100 - }, - { - "level": 55, - "icon": 11373, - "name": "Mithril Hasta", - "xp": 100 - }, - { - "level": 55, - "icon": 1243, - "name": "Mithril Spear", - "xp": 100 - }, - { - "level": 56, - "icon": 1299, - "name": "Mithril Longsword", - "xp": 100 - }, - { - "level": 56, - "icon": 19576, - "name": "Mithril Javelin Heads", - "xp": 50 - }, - { - "level": 56, - "icon": 9427, - "name": "Mithril Limbs", - "xp": 50 - }, - { - "level": 57, - "icon": 1159, - "name": "Mithril Full Helm", - "xp": 100 - }, - { - "level": 57, - "icon": 866, - "name": "Mithril Knife", - "xp": 50 - }, - { - "level": 58, - "icon": 1181, - "name": "Mithril Sq Shield", - "xp": 100 - }, - { - "level": 59, - "icon": 9416, - "name": "Mith Grapple Tip", - "xp": 50 - }, - { - "level": 59, - "icon": 1343, - "name": "Mithril Warhammer", - "xp": 150 - }, - { - "level": 60, - "icon": 1187, - "name": "Dragon Sq Shield", - "xp": 75 - }, - { - "level": 60, - "icon": 1369, - "name": "Mithril Battleaxe", - "xp": 150 - }, - { - "level": 61, - "icon": 1109, - "name": "Mithril Chainbody", - "xp": 150 - }, - { - "level": 62, - "icon": 1197, - "name": "Mithril Kiteshield", - "xp": 150 - }, - { - "level": 63, - "icon": 3099, - "name": "Mithril Claws", - "xp": 100 - }, - { - "level": 64, - "icon": 1315, - "name": "Mithril 2h Sword", - "xp": 150 - }, - { - "level": 66, - "icon": 1085, - "name": "Mithril Plateskirt", - "xp": 150 - }, - { - "level": 66, - "icon": 1071, - "name": "Mithril Platelegs", - "xp": 150 - }, - { - "level": 68, - "icon": 1121, - "name": "Mithril Platebody", - "xp": 250 - }, - { - "level": 70, - "icon": 1211, - "name": "Adamant Dagger", - "xp": 62.5 - }, - { - "level": 70, - "icon": 2361, - "name": "Adamantite Bar", - "xp": 37.5 - }, - { - "level": 71, - "icon": 1357, - "name": "Adamant Axe", - "xp": 62.5 - }, - { - "level": 72, - "icon": 1430, - "name": "Adamant Mace", - "xp": 62.5 - }, - { - "level": 73, - "icon": 9380, - "name": "Adamant Bolts (Unf)", - "xp": 62.5 - }, - { - "level": 73, - "icon": 1145, - "name": "Adamant Med Helm", - "xp": 62.5 - }, - { - "level": 74, - "icon": 823, - "name": "Adamant Dart Tip", - "xp": 62.5 - }, - { - "level": 74, - "icon": 1287, - "name": "Adamant Sword", - "xp": 62.5 - }, - { - "level": 74, - "icon": 4823, - "name": "Adamantite Nails", - "xp": 62.5 - }, - { - "level": 75, - "icon": 43, - "name": "Adamant Arrowtips", - "xp": 62.5 - }, - { - "level": 75, - "icon": 1331, - "name": "Adamant Scimitar", - "xp": 125 - }, - { - "level": 75, - "icon": 11375, - "name": "Adamant Hasta", - "xp": 125 - }, - { - "level": 75, - "icon": 1245, - "name": "Adamant Spear", - "xp": 125 - }, - { - "level": 76, - "icon": 9429, - "name": "Adamantite Limbs", - "xp": 62.5 - }, - { - "level": 76, - "icon": 1301, - "name": "Adamant Longsword", - "xp": 125 - }, - { - "level": 76, - "icon": 19578, - "name": "Adamant Javelin Heads", - "xp": 62.5 - }, - { - "level": 77, - "icon": 1161, - "name": "Adamant Full Helm", - "xp": 125 - }, - { - "level": 77, - "icon": 867, - "name": "Adamant Knife", - "xp": 62.5 - }, - { - "level": 78, - "icon": 1183, - "name": "Adamant Sq Shield", - "xp": 125 - }, - { - "level": 79, - "icon": 1345, - "name": "Adamant Warhammer", - "xp": 187.5 - }, - { - "level": 80, - "icon": 1371, - "name": "Adamant Battleaxe", - "xp": 187.5 - }, - { - "level": 81, - "icon": 1111, - "name": "Adamant Chainbody", - "xp": 187.5 - }, - { - "level": 82, - "icon": 1199, - "name": "Adamant Kiteshield", - "xp": 187.5 - }, - { - "level": 83, - "icon": 3100, - "name": "Adamant Claws", - "xp": 125 - }, - { - "level": 84, - "icon": 1317, - "name": "Adamant 2h Sword", - "xp": 187.5 - }, - { - "level": 85, - "icon": 2363, - "name": "Runite Bar", - "xp": 50 - }, - { - "level": 85, - "icon": 1213, - "name": "Rune Dagger", - "xp": 75 - }, - { - "level": 86, - "icon": 1359, - "name": "Rune Axe", - "xp": 75 - }, - { - "level": 86, - "icon": 1091, - "name": "Adamant Plateskirt", - "xp": 187.5 - }, - { - "level": 86, - "icon": 1073, - "name": "Adamant Platelegs", - "xp": 187.5 - }, - { - "level": 87, - "icon": 1432, - "name": "Rune Mace", - "xp": 75 - }, - { - "level": 88, - "icon": 9381, - "name": "Runite Bolts (Unf)", - "xp": 75 - }, - { - "level": 88, - "icon": 1147, - "name": "Rune Med Helm", - "xp": 75 - }, - { - "level": 88, - "icon": 1123, - "name": "Adamant Platebody", - "xp": 312.5 - }, - { - "level": 89, - "icon": 1289, - "name": "Rune Sword", - "xp": 75 - }, - { - "level": 89, - "icon": 4824, - "name": "Rune Nails", - "xp": 75 - }, - { - "level": 89, - "icon": 824, - "name": "Rune Dart Tip", - "xp": 75 - }, - { - "level": 90, - "icon": 44, - "name": "Rune Arrowtips", - "xp": 75 - }, - { - "level": 90, - "icon": 1333, - "name": "Rune Scimitar", - "xp": 150 - }, - { - "level": 90, - "icon": 11377, - "name": "Rune Hasta", - "xp": 150 - }, - { - "level": 90, - "icon": 1247, - "name": "Rune Spear", - "xp": 150 - }, - { - "level": 90, - "icon": 11283, - "name": "Dragonfire Shield", - "xp": 2000 - }, - { - "level": 91, - "icon": 1303, - "name": "Rune Longsword", - "xp": 150 - }, - { - "level": 91, - "icon": 19580, - "name": "Rune Javelin Heads", - "xp": 75 - }, - { - "level": 91, - "icon": 9431, - "name": "Runite Limbs", - "xp": 75 - }, - { - "level": 92, - "icon": 868, - "name": "Rune Knife", - "xp": 75 - }, - { - "level": 92, - "icon": 1163, - "name": "Rune Full Helm", - "xp": 150 - }, - { - "level": 93, - "icon": 1185, - "name": "Rune Sq Shield", - "xp": 150 - }, - { - "level": 94, - "icon": 1347, - "name": "Rune Warhammer", - "xp": 225 - }, - { - "level": 95, - "icon": 1373, - "name": "Rune Battleaxe", - "xp": 225 - }, - { - "level": 96, - "icon": 1113, - "name": "Rune Chainbody", - "xp": 225 - }, - { - "level": 97, - "icon": 1201, - "name": "Rune Kiteshield", - "xp": 225 - }, - { - "level": 98, - "icon": 3101, - "name": "Rune Claws", - "xp": 150 - }, - { - "level": 99, - "icon": 1127, - "name": "Rune Platebody", - "xp": 375 - }, - { - "level": 99, - "icon": 1093, - "name": "Rune Plateskirt", - "xp": 225 - }, - { - "level": 99, - "icon": 1079, - "name": "Rune Platelegs", - "xp": 225 - }, - { - "level": 99, - "icon": 1319, - "name": "Rune 2h Sword", - "xp": 225 - } - ] -} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_thieving.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_thieving.json deleted file mode 100644 index f23248c568..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_thieving.json +++ /dev/null @@ -1,268 +0,0 @@ -{ - "actions": [ - { - "level": 1, - "icon": 3241, - "name": "Man / Woman", - "xp": 8 - }, - { - "level": 1, - "icon": 10851, - "name": "Winter Sq'irkjuice", - "xp": 350 - }, - { - "level": 2, - "icon": 1965, - "name": "Vegetable Stall", - "xp": 10 - }, - { - "level": 5, - "icon": 1891, - "name": "Cake Stall", - "xp": 16 - }, - { - "level": 5, - "icon": 4242, - "name": "Tea Stall", - "xp": 16 - }, - { - "level": 5, - "icon": 5601, - "name": "Crafting Stall", - "xp": 16 - }, - { - "level": 5, - "icon": 1963, - "name": "Monkey Food Stall", - "xp": 16 - }, - { - "level": 10, - "icon": 3243, - "name": "Farmer", - "xp": 14.5 - }, - { - "level": 15, - "icon": 4295, - "name": "Female H.A.M. Member", - "xp": 18.5 - }, - { - "level": 20, - "icon": 950, - "name": "Silk Stall", - "xp": 24 - }, - { - "level": 20, - "icon": 4297, - "name": "Male H.A.M. Member", - "xp": 22.5 - }, - { - "level": 22, - "icon": 7919, - "name": "Wine Stall", - "xp": 27 - }, - { - "level": 25, - "icon": 3245, - "name": "Warrior Women / Al-Kharid Warrior", - "xp": 26 - }, - { - "level": 25, - "icon": 464, - "name": "Fruit Stall", - "xp": 28 - }, - { - "level": 25, - "icon": 10848, - "name": "Spring Sq'irkjuice", - "xp": 1350 - }, - { - "level": 27, - "icon": 5318, - "name": "Seed Stall", - "xp": 10 - }, - { - "level": 32, - "icon": 3247, - "name": "Rogue", - "xp": 35.5 - }, - { - "level": 35, - "icon": 958, - "name": "Fur Stall", - "xp": 36 - }, - { - "level": 36, - "icon": 10998, - "name": "Cave Goblin", - "xp": 40 - }, - { - "level": 38, - "icon": 5068, - "name": "Master Farmer", - "xp": 43 - }, - { - "level": 40, - "icon": 3249, - "name": "Guard", - "xp": 46.8 - }, - { - "level": 42, - "icon": 331, - "name": "Fish Stall", - "xp": 42 - }, - { - "level": 45, - "icon": 6782, - "name": "Bearded Pollnivnian Bandit", - "xp": 65 - }, - { - "level": 45, - "icon": 3686, - "name": "Fremennik Citizen", - "xp": 65 - }, - { - "level": 45, - "icon": 10850, - "name": "Autumn Sq'irkjuice", - "xp": 2350 - }, - { - "level": 49, - "icon": 837, - "name": "Crossbow Stall", - "xp": 52 - }, - { - "level": 50, - "icon": 2355, - "name": "Silver Stall", - "xp": 54 - }, - { - "level": 50, - "icon": 5560, - "name": "Wall Safe", - "xp": 70 - }, - { - "level": 53, - "icon": 4625, - "name": "Desert Bandit", - "xp": 79.5 - }, - { - "level": 55, - "icon": 3251, - "name": "Knight", - "xp": 84.3 - }, - { - "level": 55, - "icon": 6781, - "name": "Pollnivnian Bandit", - "xp": 84.3 - }, - { - "level": 65, - "icon": 6422, - "name": "Magic Stall", - "xp": 100 - }, - { - "level": 65, - "icon": 1325, - "name": "Scimitar Stall", - "xp": 100 - }, - { - "level": 65, - "icon": 6780, - "name": "Menaphite Thug", - "xp": 137.5 - }, - { - "level": 65, - "icon": 2007, - "name": "Spices Stall", - "xp": 81 - }, - { - "level": 65, - "icon": 3253, - "name": "Yanille Watchman", - "xp": 137.5 - }, - { - "level": 65, - "icon": 10849, - "name": "Summer Sq'irkjuice", - "xp": 3000 - }, - { - "level": 70, - "icon": 3255, - "name": "Paladin", - "xp": 151.8 - }, - { - "level": 75, - "icon": 3257, - "name": "Gnome", - "xp": 198.5 - }, - { - "level": 75, - "icon": 1607, - "name": "Gems Stall", - "xp": 160 - }, - { - "level": 80, - "icon": 3259, - "name": "Hero", - "xp": 275 - }, - { - "level": 82, - "icon": 24702, - "name": "Vyre", - "xp": 306.9 - }, - { - "level": 85, - "icon": 6105, - "name": "Elf", - "xp": 353 - }, - { - "level": 90, - "icon": 21278, - "name": "TzHaar-Hur", - "xp": 103.4 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_woodcutting.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_woodcutting.json deleted file mode 100644 index 8a72413c99..0000000000 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_woodcutting.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "bonuses": [ - { "name": "Lumberjack Outfit (+2.5%)", "value": 0.025 } - ], - "actions": [ - { - "level": 1, - "icon": 1511, - "name": "Logs", - "xp": 25 - }, - { - "level": 1, - "icon": 2862, - "name": "Achey Tree Logs", - "xp": 25 - }, - { - "level": 15, - "icon": 1521, - "name": "Oak Logs", - "xp": 37.5 - }, - { - "level": 30, - "icon": 1519, - "name": "Willow Logs", - "xp": 67.5 - }, - { - "level": 35, - "icon": 6333, - "name": "Teak Logs", - "xp": 85 - }, - { - "level": 45, - "icon": 3239, - "name": "Bark", - "xp": 82.5 - }, - { - "level": 45, - "icon": 1517, - "name": "Maple Logs", - "xp": 100 - }, - { - "level": 50, - "icon": 6332, - "name": "Mahogany Logs", - "xp": 125 - }, - { - "level": 54, - "icon": 10810, - "name": "Arctic Pine Logs", - "xp": 40 - }, - { - "level": 60, - "icon": 1515, - "name": "Yew Logs", - "xp": 175 - }, - { - "level": 62, - "icon": 24691, - "name": "Blisterwood Logs", - "xp": 76 - }, - { - "level": 65, - "icon": 21626, - "name": "Sulliusceps", - "xp": 127 - }, - { - "level": 75, - "icon": 1513, - "name": "Magic Logs", - "xp": 250 - }, - { - "level": 90, - "icon": 19669, - "name": "Redwood Logs", - "xp": 380 - } - ] -} \ No newline at end of file diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/skillcalculator/CalculatorTypeTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/skillcalculator/CalculatorTypeTest.java new file mode 100644 index 0000000000..df5ee04041 --- /dev/null +++ b/runelite-client/src/test/java/net/runelite/client/plugins/skillcalculator/CalculatorTypeTest.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2021, Jordan Atwood + * 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.skillcalculator; + +import net.runelite.client.plugins.skillcalculator.skills.SkillAction; +import static org.junit.Assert.fail; +import org.junit.Test; + +public class CalculatorTypeTest +{ + @Test + public void skillActionsInLevelOrder() + { + for (final CalculatorType calculatorType : CalculatorType.values()) + { + int level = 1; + + for (final SkillAction skillAction : calculatorType.getSkillActions()) + { + if (skillAction.getLevel() < level) + { + fail("Skill action " + skillAction + " is out of order for " + calculatorType.getSkill().getName()); + } + + level = skillAction.getLevel(); + } + } + } +}