Merge remote-tracking branch 'runelite/master'

This commit is contained in:
Owain van Brakel
2021-10-01 10:42:22 +02:00
68 changed files with 2764 additions and 8303 deletions

View File

@@ -2292,4 +2292,22 @@ public interface Client extends GameEngine
*/ */
@Nullable @Nullable
ClanSettings getGuestClanSettings(); 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);
} }

View File

@@ -25,7 +25,7 @@
*/ */
package net.runelite.api; package net.runelite.api;
public class GraphicID public final class GraphicID
{ {
public static final int WINE_MAKE = 47; public static final int WINE_MAKE = 47;
public static final int SPLASH = 85; public static final int SPLASH = 85;

View File

@@ -27,7 +27,7 @@ package net.runelite.api;
/** /**
* @see ParamHolder * @see ParamHolder
*/ */
public class ParamID public final class ParamID
{ {
/** /**
* @see SettingID * @see SettingID

View File

@@ -29,7 +29,7 @@ package net.runelite.api;
* <p> * <p>
* Note: This class is not complete and may be missing mapped IDs. * 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 CANNONBALL = 53;
public static final int GRANITE_CANNONBALL = 1443; public static final int GRANITE_CANNONBALL = 1443;

View File

@@ -27,7 +27,7 @@ package net.runelite.api;
/** /**
* @see ParamID#SETTING_ID * @see ParamID#SETTING_ID
*/ */
public class SettingID public final class SettingID
{ {
public static final int CAMERA_ZOOM = 14; public static final int CAMERA_ZOOM = 14;

View File

@@ -1209,17 +1209,52 @@ public final class SpriteID
public static final int KOUREND_FAVOUR_LOVAKENGJ_ICON = 1244; public static final int KOUREND_FAVOUR_LOVAKENGJ_ICON = 1244;
public static final int KOUREND_FAVOUR_PISCARILIUS_ICON = 1245; public static final int KOUREND_FAVOUR_PISCARILIUS_ICON = 1245;
public static final int KOUREND_FAVOUR_SHAYZIEN_ICON = 1246; 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 QUESTS_PAGE_ICON_PURPLE_KOUREND = 1297;
public static final int UNUSED_TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1298; public static final int UNUSED_TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1298;
public static final int TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1299; 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; 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; 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; 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; public static final int SPELL_WARD_OF_ARCEUUS_DISABLED = 1325;
/* Unmapped: 1326 */ /* Unmapped: 1326 */
public static final int SPELL_GREATER_CORRUPTION_DISABLED = 1327; 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; public static final int HEALTHBAR_YELLOW_BACK_70PX = 2978;
/* Unmapped: 2979, 2980 */ /* Unmapped: 2979, 2980 */
public static final int SPELL_RESURRECT_SUPERIOR_SKELETON = 2981; 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; public static final int SPELL_RESURRECT_SUPERIOR_SKELETON_DISABLED = 2987;
} }

View File

@@ -29,7 +29,7 @@ package net.runelite.api;
* @see StructComposition * @see StructComposition
* @see Client#getStructComposition(int) * @see Client#getStructComposition(int)
*/ */
public class StructID public final class StructID
{ {
public static final int SETTINGS_MUSIC_VOLUME = 2753; public static final int SETTINGS_MUSIC_VOLUME = 2753;
public static final int SETTINGS_EFFECT_VOLUME = 2754; public static final int SETTINGS_EFFECT_VOLUME = 2754;

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018, Kruithne <kruithne@gmail.com> * Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * 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 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * 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; public final class ClanID
@Getter
public class SkillData
{ {
private SkillDataEntry[] actions; /**
private SkillDataBonus[] bonuses; * The primary clan.
} */
public static final int CLAN = 0;
/**
* The group ironman clan.
*/
public static final int GROUP_IRONMAN = 1;
}

View File

@@ -27,12 +27,29 @@ package net.runelite.client.plugins.achievementdiary;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Favour; import net.runelite.api.Varbits;
@RequiredArgsConstructor @RequiredArgsConstructor
@Getter @Getter
public class FavourRequirement implements Requirement 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 Favour house;
private final int percent; private final int percent;

View File

@@ -24,13 +24,12 @@
*/ */
package net.runelite.client.plugins.achievementdiary.diaries; package net.runelite.client.plugins.achievementdiary.diaries;
import net.runelite.api.Favour;
import net.runelite.api.Quest; import net.runelite.api.Quest;
import net.runelite.api.Skill; 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.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 public class KourendDiaryRequirement extends GenericDiaryRequirement
{ {
@@ -41,7 +40,7 @@ public class KourendDiaryRequirement extends GenericDiaryRequirement
new SkillRequirement(Skill.MINING, 15)); new SkillRequirement(Skill.MINING, 15));
add("Steal from a Hosidius Food Stall.", add("Steal from a Hosidius Food Stall.",
new SkillRequirement(Skill.THIEVING, 25), new SkillRequirement(Skill.THIEVING, 25),
new FavourRequirement(Favour.HOSIDIUS, 15)); new FavourRequirement(FavourRequirement.Favour.HOSIDIUS, 15));
add("Browse the Warrens General Store.", add("Browse the Warrens General Store.",
new QuestRequirement(Quest.THE_QUEEN_OF_THIEVES, true)); new QuestRequirement(Quest.THE_QUEEN_OF_THIEVES, true));
add("Enter your Player Owned House from Hosidius.", add("Enter your Player Owned House from Hosidius.",
@@ -65,11 +64,11 @@ public class KourendDiaryRequirement extends GenericDiaryRequirement
add("Enter the Farming Guild.", add("Enter the Farming Guild.",
new SkillRequirement(Skill.FARMING, 45)); new SkillRequirement(Skill.FARMING, 45));
add("Switch to the Necromancy Spellbook at Tyss.", add("Switch to the Necromancy Spellbook at Tyss.",
new FavourRequirement(Favour.ARCEUUS, 60)); new FavourRequirement(FavourRequirement.Favour.ARCEUUS, 60));
add("Repair a Piscarilius crane.", add("Repair a Piscarilius crane.",
new SkillRequirement(Skill.CRAFTING, 30)); new SkillRequirement(Skill.CRAFTING, 30));
add("Deliver some intelligence to Captain Ginea.", 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.", add("Catch a Bluegill on Molch Island.",
new SkillRequirement(Skill.FISHING, 43), new SkillRequirement(Skill.FISHING, 43),
new SkillRequirement(Skill.HUNTER, 35)); new SkillRequirement(Skill.HUNTER, 35));
@@ -86,23 +85,23 @@ public class KourendDiaryRequirement extends GenericDiaryRequirement
//HARD //HARD
add("Enter the Woodcutting Guild.", add("Enter the Woodcutting Guild.",
new SkillRequirement(Skill.WOODCUTTING, 60), 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.", add("Smelt an Adamantite bar in The Forsaken Tower.",
new SkillRequirement(Skill.SMITHING, 70), new SkillRequirement(Skill.SMITHING, 70),
new QuestRequirement(Quest.THE_FORSAKEN_TOWER, true)); new QuestRequirement(Quest.THE_FORSAKEN_TOWER, true));
add("Kill a Lizardman Shaman in Molch.", add("Kill a Lizardman Shaman in Molch.",
new FavourRequirement(Favour.SHAYZIEN, 100)); new FavourRequirement(FavourRequirement.Favour.SHAYZIEN, 100));
add("Mine some Lovakite.", add("Mine some Lovakite.",
new SkillRequirement(Skill.MINING, 65), 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.", add("Plant some Logavano seeds at the Tithe Farm.",
new SkillRequirement(Skill.FARMING, 74), 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.", add("Teleport to Xeric's Heart using Xeric's Talisman.",
new QuestRequirement(Quest.ARCHITECTURAL_ALLIANCE)); new QuestRequirement(Quest.ARCHITECTURAL_ALLIANCE));
add("Deliver an artefact to Captain Khaled.", add("Deliver an artefact to Captain Khaled.",
new SkillRequirement(Skill.THIEVING, 49), 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.", add("Kill a Wyrm in the Karuulm Slayer Dungeon.",
new SkillRequirement(Skill.SLAYER, 62)); new SkillRequirement(Skill.SLAYER, 62));
add("Cast Monster Examine on a Troll south of Mount Quidamortem.", 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.RUNECRAFT, 77),
new SkillRequirement(Skill.MINING, 38), new SkillRequirement(Skill.MINING, 38),
new SkillRequirement(Skill.CRAFTING, 38), new SkillRequirement(Skill.CRAFTING, 38),
new FavourRequirement(Favour.ARCEUUS, 100)); new FavourRequirement(FavourRequirement.Favour.ARCEUUS, 100));
add("Chop some Redwood logs.", add("Chop some Redwood logs.",
new SkillRequirement(Skill.WOODCUTTING, 90), 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.", add("Catch an Anglerfish and cook it whilst in Great Kourend.",
new SkillRequirement(Skill.FISHING, 82), new SkillRequirement(Skill.FISHING, 82),
new SkillRequirement(Skill.COOKING, 84), 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.", add("Kill a Hydra in the Karuulm Slayer Dungeon.",
new SkillRequirement(Skill.SLAYER, 95)); new SkillRequirement(Skill.SLAYER, 95));
add("Create an Ape Atoll teleport tablet.", add("Create an Ape Atoll teleport tablet.",
new SkillRequirement(Skill.MAGIC, 90), new SkillRequirement(Skill.MAGIC, 90),
new SkillRequirement(Skill.MINING, 38), new SkillRequirement(Skill.MINING, 38),
new SkillRequirement(Skill.CRAFTING, 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.", add("Create your own Battlestaff from scratch within the Farming Guild.",
new SkillRequirement(Skill.FARMING, 85), new SkillRequirement(Skill.FARMING, 85),
new SkillRequirement(Skill.FLETCHING, 40)); new SkillRequirement(Skill.FLETCHING, 40));

View File

@@ -2008,6 +2008,7 @@ public class ChatCommandsPlugin extends Plugin
case "cgaunt": case "cgaunt":
case "cgauntlet": case "cgauntlet":
case "the corrupted gauntlet": case "the corrupted gauntlet":
case "cg":
return "Corrupted Gauntlet"; return "Corrupted Gauntlet";
// The Nightmare // The Nightmare

View File

@@ -328,6 +328,24 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
invokeOnMainThread(() -> 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); GLProfile glProfile = GLProfile.get(GLProfile.GL4);
GLCapabilities glCaps = new GLCapabilities(glProfile); GLCapabilities glCaps = new GLCapabilities(glProfile);

View File

@@ -591,18 +591,21 @@ public class MenuEntrySwapperPlugin extends Plugin
// widget ticking and prior to our client tick event. This is because drag start // 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 // 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 // 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 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 // Deposit- op 2 is the current withdraw amount 1/5/10/x for bank interface
if (shiftModifier() && config.bankDepositShiftClick() != ShiftDepositMode.OFF if (shiftModifier() && config.bankDepositShiftClick() != ShiftDepositMode.OFF
&& menuEntryAdded.getType() == MenuAction.CC_OP.getId() && 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"))) && (menuEntryAdded.getOption().startsWith("Deposit-") || menuEntryAdded.getOption().startsWith("Store") || menuEntryAdded.getOption().startsWith("Donate")))
{ {
ShiftDepositMode shiftDepositMode = config.bankDepositShiftClick(); ShiftDepositMode shiftDepositMode = config.bankDepositShiftClick();
final int widgetGroupId = WidgetInfo.TO_GROUP(menuEntryAdded.getParam1()); final int opId = isDepositBoxPlayerInventory ? shiftDepositMode.getIdentifierDepositBox()
final int opId = widgetGroupId == WidgetID.DEPOSIT_BOX_GROUP_ID ? shiftDepositMode.getIdentifierDepositBox() : isChambersOfXericStorageUnitPlayerInventory ? shiftDepositMode.getIdentifierChambersStorageUnit()
: widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_INVENTORY_GROUP_ID ? shiftDepositMode.getIdentifierChambersStorageUnit()
: shiftDepositMode.getIdentifier(); : shiftDepositMode.getIdentifier();
final int actionId = opId >= 6 ? MenuAction.CC_OP_LOW_PRIORITY.getId() : MenuAction.CC_OP.getId(); final int actionId = opId >= 6 ? MenuAction.CC_OP_LOW_PRIORITY.getId() : MenuAction.CC_OP.getId();
bankModeSwap(actionId, opId); bankModeSwap(actionId, opId);
@@ -615,7 +618,6 @@ public class MenuEntrySwapperPlugin extends Plugin
&& menuEntryAdded.getOption().startsWith("Withdraw")) && menuEntryAdded.getOption().startsWith("Withdraw"))
{ {
ShiftWithdrawMode shiftWithdrawMode = config.bankWithdrawShiftClick(); ShiftWithdrawMode shiftWithdrawMode = config.bankWithdrawShiftClick();
final int widgetGroupId = WidgetInfo.TO_GROUP(menuEntryAdded.getParam1());
final int actionId, opId; 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) if (widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_PRIVATE_GROUP_ID || widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_SHARED_GROUP_ID)
{ {

View File

@@ -36,7 +36,7 @@ public enum ShiftDepositMode
DEPOSIT_10("Deposit-10", 5, 4, 3), DEPOSIT_10("Deposit-10", 5, 4, 3),
DEPOSIT_X("Deposit-X", 6, 6, 5), DEPOSIT_X("Deposit-X", 6, 6, 5),
DEPOSIT_ALL("Deposit-All", 8, 5, 4), 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); OFF("Off", 0, 0, 0);
private final String name; private final String name;

View File

@@ -24,32 +24,36 @@
*/ */
package net.runelite.client.plugins.skillcalculator; package net.runelite.client.plugins.skillcalculator;
import javax.annotation.Nullable;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.client.plugins.skillcalculator.skills.*;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
enum CalculatorType enum CalculatorType
{ {
MINING(Skill.MINING, "skill_mining.json"), MINING(Skill.MINING, MiningBonus.values(), MiningAction.values()),
AGILITY(Skill.AGILITY, "skill_agility.json"), AGILITY(Skill.AGILITY, null, AgilityAction.values()),
SMITHING(Skill.SMITHING, "skill_smithing.json"), SMITHING(Skill.SMITHING, null, SmithingAction.values()),
HERBLORE(Skill.HERBLORE, "skill_herblore.json"), HERBLORE(Skill.HERBLORE, null, HerbloreAction.values()),
FISHING(Skill.FISHING, "skill_fishing.json"), FISHING(Skill.FISHING, FishingBonus.values(), FishingAction.values()),
THIEVING(Skill.THIEVING, "skill_thieving.json"), THIEVING(Skill.THIEVING, null, ThievingAction.values()),
COOKING(Skill.COOKING, "skill_cooking.json"), COOKING(Skill.COOKING, null, CookingAction.values()),
PRAYER(Skill.PRAYER, "skill_prayer.json"), PRAYER(Skill.PRAYER, PrayerBonus.values(), PrayerAction.values()),
CRAFTING(Skill.CRAFTING, "skill_crafting.json"), CRAFTING(Skill.CRAFTING, null, CraftingAction.values()),
FIREMAKING(Skill.FIREMAKING, "skill_firemaking.json"), FIREMAKING(Skill.FIREMAKING, FiremakingBonus.values(), FiremakingAction.values()),
MAGIC(Skill.MAGIC, "skill_magic.json"), MAGIC(Skill.MAGIC, null, MagicAction.values()),
FLETCHING(Skill.FLETCHING, "skill_fletching.json"), FLETCHING(Skill.FLETCHING, null, FletchingAction.values()),
WOODCUTTING(Skill.WOODCUTTING, "skill_woodcutting.json"), WOODCUTTING(Skill.WOODCUTTING, WoodcuttingBonus.values(), WoodcuttingAction.values()),
RUNECRAFT(Skill.RUNECRAFT, "skill_runecraft.json"), RUNECRAFT(Skill.RUNECRAFT, RunecraftBonus.values(), RunecraftAction.values()),
FARMING(Skill.FARMING, "skill_farming.json"), FARMING(Skill.FARMING, FarmingBonus.values(), FarmingAction.values()),
CONSTRUCTION(Skill.CONSTRUCTION, "skill_construction.json"), CONSTRUCTION(Skill.CONSTRUCTION, ConstructionBonus.values(), ConstructionAction.values()),
HUNTER(Skill.HUNTER, "skill_hunter.json"); HUNTER(Skill.HUNTER, null, HunterAction.values());
private final Skill skill; private final Skill skill;
private final String dataFile; @Nullable
} private final SkillBonus[] skillBonuses;
private final SkillAction[] skillActions;
}

View File

@@ -1,4 +1,4 @@
/** /*
* Copyright (c) 2018, Kruithne <kruithne@gmail.com> * Copyright (c) 2018, Kruithne <kruithne@gmail.com>
* Copyright (c) 2018, Psikoi <https://github.com/psikoi> * Copyright (c) 2018, Psikoi <https://github.com/psikoi>
* All rights reserved. * All rights reserved.
@@ -48,11 +48,11 @@ import net.runelite.api.Client;
import net.runelite.api.Experience; import net.runelite.api.Experience;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.VarPlayer; import net.runelite.api.VarPlayer;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.game.SpriteManager; import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.skillcalculator.beans.SkillData; import net.runelite.client.plugins.skillcalculator.skills.SkillAction;
import net.runelite.client.plugins.skillcalculator.beans.SkillDataBonus; import net.runelite.client.plugins.skillcalculator.skills.SkillBonus;
import net.runelite.client.plugins.skillcalculator.beans.SkillDataEntry;
import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.DynamicGridLayout; import net.runelite.client.ui.DynamicGridLayout;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
@@ -66,26 +66,26 @@ class SkillCalculator extends JPanel
private final UICalculatorInputArea uiInput; private final UICalculatorInputArea uiInput;
private final Client client; private final Client client;
private final ClientThread clientThread;
private final SpriteManager spriteManager; private final SpriteManager spriteManager;
private final ItemManager itemManager; private final ItemManager itemManager;
private final List<UIActionSlot> uiActionSlots = new ArrayList<>(); private final List<UIActionSlot> uiActionSlots = new ArrayList<>();
private final CacheSkillData cacheSkillData = new CacheSkillData();
private final UICombinedActionSlot combinedActionSlot; private final UICombinedActionSlot combinedActionSlot;
private final ArrayList<UIActionSlot> combinedActionSlots = new ArrayList<>(); private final ArrayList<UIActionSlot> combinedActionSlots = new ArrayList<>();
private final List<JCheckBox> bonusCheckBoxes = new ArrayList<>(); private final List<JCheckBox> bonusCheckBoxes = new ArrayList<>();
private final IconTextField searchBar = new IconTextField(); private final IconTextField searchBar = new IconTextField();
private SkillData skillData; private CalculatorType currentCalculator;
private Skill currentSkill;
private int currentLevel = 1; private int currentLevel = 1;
private int currentXP = Experience.getXpForLevel(currentLevel); private int currentXP = Experience.getXpForLevel(currentLevel);
private int targetLevel = currentLevel + 1; private int targetLevel = currentLevel + 1;
private int targetXP = Experience.getXpForLevel(targetLevel); 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.client = client;
this.clientThread = clientThread;
this.uiInput = uiInput; this.uiInput = uiInput;
this.spriteManager = spriteManager; this.spriteManager = spriteManager;
this.itemManager = itemManager; this.itemManager = itemManager;
@@ -137,15 +137,12 @@ class SkillCalculator extends JPanel
currentXP = client.getSkillExperience(calculatorType.getSkill()); currentXP = client.getSkillExperience(calculatorType.getSkill());
currentLevel = Experience.getLevelForXp(currentXP); currentLevel = Experience.getLevelForXp(currentXP);
if (currentSkill != calculatorType.getSkill()) if (currentCalculator != calculatorType)
{ {
currentSkill = calculatorType.getSkill(); currentCalculator = calculatorType;
// Load the skill data.
skillData = cacheSkillData.getSkillData(calculatorType.getDataFile());
// Reset the XP factor, removing bonuses. // Reset the XP factor, removing bonuses.
xpFactor = 1.0f; xpFactor = 1;
VarPlayer endGoalVarp = endGoalVarpForSkill(calculatorType.getSkill()); VarPlayer endGoalVarp = endGoalVarpForSkill(calculatorType.getSkill());
int endGoal = client.getVar(endGoalVarp); int endGoal = client.getVar(endGoalVarp);
@@ -234,19 +231,22 @@ class SkillCalculator extends JPanel
private void renderBonusOptions() private void renderBonusOptions()
{ {
if (skillData.getBonuses() != null) final SkillBonus[] skillBonuses = currentCalculator.getSkillBonuses();
if (skillBonuses == null)
{ {
for (SkillDataBonus bonus : skillData.getBonuses()) return;
{ }
JPanel checkboxPanel = buildCheckboxPanel(bonus);
add(checkboxPanel); for (SkillBonus bonus : skillBonuses)
add(Box.createRigidArea(new Dimension(0, 5))); {
} 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()); JPanel uiOption = new JPanel(new BorderLayout());
JLabel uiLabel = new JLabel(bonus.getName()); JLabel uiLabel = new JLabel(bonus.getName());
@@ -270,7 +270,7 @@ class SkillCalculator extends JPanel
return uiOption; return uiOption;
} }
private void adjustCheckboxes(JCheckBox target, SkillDataBonus bonus) private void adjustCheckboxes(JCheckBox target, SkillBonus bonus)
{ {
adjustXPBonus(0); adjustXPBonus(0);
bonusCheckBoxes.forEach(otherSelectedCheckbox -> bonusCheckBoxes.forEach(otherSelectedCheckbox ->
@@ -293,20 +293,20 @@ class SkillCalculator extends JPanel
uiActionSlots.clear(); uiActionSlots.clear();
// Create new components for the action slots. // Create new components for the action slots.
for (SkillDataEntry action : skillData.getActions()) for (SkillAction action : currentCalculator.getSkillActions())
{ {
JLabel uiIcon = new JLabel(); JLabel uiIcon = new JLabel();
if (action.getIcon() != null) if (action.getIcon() != -1)
{ {
itemManager.getImage(action.getIcon()).addTo(uiIcon); itemManager.getImage(action.getIcon()).addTo(uiIcon);
} }
else if (action.getSprite() != null) else if (action.getSprite() != -1)
{ {
spriteManager.addSpriteTo(uiIcon, action.getSprite(), 0); 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. uiActionSlots.add(slot); // Keep our own reference.
add(slot); // Add component to the panel. add(slot); // Add component to the panel.
@@ -346,7 +346,7 @@ class SkillCalculator extends JPanel
{ {
int actionCount = 0; int actionCount = 0;
int neededXP = targetXP - currentXP; int neededXP = targetXP - currentXP;
SkillDataEntry action = slot.getAction(); SkillAction action = slot.getAction();
double xp = (action.isIgnoreBonus()) ? action.getXp() : action.getXp() * xpFactor; double xp = (action.isIgnoreBonus()) ? action.getXp() : action.getXp() * xpFactor;
if (neededXP > 0) if (neededXP > 0)
@@ -363,9 +363,9 @@ class SkillCalculator extends JPanel
updateCombinedAction(); 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() private void updateInputFields()
@@ -389,7 +389,7 @@ class SkillCalculator extends JPanel
private void adjustXPBonus(float value) private void adjustXPBonus(float value)
{ {
xpFactor = 1f + value; xpFactor = 1 + value;
calculate(); 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<FocusEvent> focusLostConsumer) private static FocusAdapter buildFocusAdapter(Consumer<FocusEvent> focusLostConsumer)
{ {
return new FocusAdapter() return new FocusAdapter()
{ {

View File

@@ -23,7 +23,6 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.plugins.skillcalculator; package net.runelite.client.plugins.skillcalculator;
import java.awt.GridBagConstraints; import java.awt.GridBagConstraints;
@@ -33,6 +32,7 @@ import javax.swing.ImageIcon;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.game.SkillIconManager; import net.runelite.client.game.SkillIconManager;
import net.runelite.client.game.SpriteManager; import net.runelite.client.game.SpriteManager;
@@ -47,7 +47,7 @@ class SkillCalculatorPanel extends PluginPanel
private final SkillIconManager iconManager; private final SkillIconManager iconManager;
private final MaterialTabGroup tabGroup; 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(); super();
getScrollPane().setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); getScrollPane().setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
@@ -71,7 +71,7 @@ class SkillCalculatorPanel extends PluginPanel
final UICalculatorInputArea uiInput = new UICalculatorInputArea(); final UICalculatorInputArea uiInput = new UICalculatorInputArea();
uiInput.setBorder(new EmptyBorder(15, 0, 15, 0)); uiInput.setBorder(new EmptyBorder(15, 0, 15, 0));
uiInput.setBackground(ColorScheme.DARK_GRAY_COLOR); uiInput.setBackground(ColorScheme.DARK_GRAY_COLOR);
uiCalculator = new SkillCalculator(client, uiInput, spriteManager, itemManager); uiCalculator = new SkillCalculator(client, clientThread, uiInput, spriteManager, itemManager);
add(tabGroup, c); add(tabGroup, c);
c.gridy++; c.gridy++;

View File

@@ -22,12 +22,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.plugins.skillcalculator; package net.runelite.client.plugins.skillcalculator;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.game.SkillIconManager; import net.runelite.client.game.SkillIconManager;
import net.runelite.client.game.SpriteManager; import net.runelite.client.game.SpriteManager;
@@ -47,6 +47,9 @@ public class SkillCalculatorPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private ClientThread clientThread;
@Inject @Inject
private SkillIconManager skillIconManager; private SkillIconManager skillIconManager;
@@ -65,7 +68,7 @@ public class SkillCalculatorPlugin extends Plugin
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "calc.png"); 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() uiNavigationButton = NavigationButton.builder()
.tooltip("Skill Calculator") .tooltip("Skill Calculator")

View File

@@ -23,7 +23,6 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.plugins.skillcalculator; package net.runelite.client.plugins.skillcalculator;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@@ -36,13 +35,16 @@ import java.awt.event.MouseListener;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.Border; import javax.swing.border.Border;
import javax.swing.border.CompoundBorder; import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; 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.ColorScheme;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.components.shadowlabel.JShadowedLabel; 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); private static final Dimension ICON_SIZE = new Dimension(32, 32);
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final SkillDataEntry action; private final SkillAction action;
private final JShadowedLabel uiLabelActions;
@Getter(AccessLevel.PACKAGE)
private String actionName;
private final JShadowedLabel uiLabelActions;
private final JPanel uiInfo; private final JPanel uiInfo;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
@@ -80,9 +85,9 @@ class UIActionSlot extends JPanel
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
@Setter(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; this.action = action;
@@ -121,7 +126,12 @@ class UIActionSlot extends JPanel
uiInfo.setBackground(ColorScheme.DARKER_GRAY_COLOR); uiInfo.setBackground(ColorScheme.DARKER_GRAY_COLOR);
uiInfo.setBorder(new EmptyBorder(0, 5, 0, 0)); 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); uiLabelName.setForeground(Color.WHITE);
uiLabelActions = new JShadowedLabel("Unknown"); uiLabelActions = new JShadowedLabel("Unknown");

View File

@@ -23,7 +23,6 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.plugins.skillcalculator; package net.runelite.client.plugins.skillcalculator;
import java.awt.BorderLayout; import java.awt.BorderLayout;

View File

@@ -0,0 +1,67 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,209 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2019 William <https://github.com/monsterxsync> * Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * 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 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * 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.Getter;
import lombok.RequiredArgsConstructor;
/** @AllArgsConstructor
* An enumeration of Kourend house favour the player can earn. @Getter(onMethod_ = @Override)
*/ public enum ConstructionBonus implements SkillBonus
@RequiredArgsConstructor
@Getter
public enum Favour
{ {
ARCEUUS("Arceuus", Varbits.KOUREND_FAVOR_ARCEUUS), CARPENTERS_OUTFIT("Carpenter's Outfit (+2.5%)", 0.025f),
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 String name;
private final Varbits varbit; private final float value;
} }

View File

@@ -0,0 +1,163 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,174 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,104 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018, Kruithne <kruithne@gmail.com> * Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * 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 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * 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; import lombok.Getter;
@Getter @AllArgsConstructor
public class SkillDataBonus @Getter(onMethod_ = @Override)
public enum FarmingBonus implements SkillBonus
{ {
private String name; FARMERS_OUTFIT("Farmer's Outfit (+2.5%)", 0.025f),
private float value; ;
}
private final String name;
private final float value;
}

View File

@@ -0,0 +1,52 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,74 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,138 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,112 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,99 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018, Kruithne <kruithne@gmail.com> * Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * 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 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * 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 net.runelite.client.game.ItemManager;
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;
class CacheSkillData /**
* An object representing a single skill action involving an item which grants some xp.
*/
public interface ItemSkillAction extends SkillAction
{ {
private final Map<String, SkillData> 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 getItemId();
{
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);
}
} }
}
/**
* 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();
}
}

View File

@@ -0,0 +1,228 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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();
}
}

View File

@@ -0,0 +1,68 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018, Kruithne <kruithne@gmail.com> * Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * 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 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * 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; import lombok.Getter;
@Getter @AllArgsConstructor
public class SkillDataEntry @Getter(onMethod_ = @Override)
public enum MiningBonus implements SkillBonus
{ {
private String name; PROSPECTOR_KIT("Prospector Kit (+2.5%)", 0.025f),
private int level; ;
private double xp;
private Integer icon; private final String name;
private Integer sprite; private final float value;
private boolean ignoreBonus; }
}

View File

@@ -0,0 +1,46 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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();
}
}

View File

@@ -0,0 +1,99 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,43 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,77 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,98 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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.
* <p>
* 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.
* <p>
* 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;
}
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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();
}

View File

@@ -0,0 +1,221 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,89 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,55 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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;
}

View File

@@ -39,7 +39,8 @@ enum SpecialWeapon
BANDOS_GODSWORD("Bandos Godsword", new int[]{ItemID.BANDOS_GODSWORD, ItemID.BANDOS_GODSWORD_OR}, true, SpecialCounterConfig::bandosGodswordThreshold), 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), 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), 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 String name;
private final int[] itemID; private final int[] itemID;

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -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
}
]
}

View File

@@ -0,0 +1,51 @@
/*
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* 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();
}
}
}
}