skill calculator: Define actions and bonuses in Java

As the number of bonus types increases, the existing system of allowing
only a single type of bonus to be applied, and only allowing actions to
entirely opt out of having bonuses applied rather than more fine-grained
control, is showing its age. This commit redefines all bonus and action
entries in Java enums so that such systems can be better-defined.
Additionally, it comes with the benefit of easier change validation via
testing and enabling item and sprite ID referencing via runelite-api.
This commit is contained in:
Jordan Atwood
2021-09-09 22:48:03 -07:00
committed by Adam
parent 6428a7af4f
commit 7b678b2afb
49 changed files with 2502 additions and 8227 deletions

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_PISCARILIUS_ICON = 1245;
public static final int KOUREND_FAVOUR_SHAYZIEN_ICON = 1246;
/* Unmapped: 1247~1296 */
public static final int SPELL_BASIC_REANIMATION = 1247;
public static final int SPELL_ADEPT_REANIMATION = 1248;
public static final int SPELL_EXPERT_REANIMATION = 1249;
public static final int SPELL_MASTER_REANIMATION = 1250;
/* Unmapped: 1251 */
public static final int SPELL_ARCEUUS_LIBRARY_TELEPORT = 1252;
public static final int SPELL_DRAYNOR_MANOR_TELEPORT = 1253;
public static final int SPELL_SALVE_GRAVEYARD_TELEPORT = 1254;
/* Unmapped: 1255 */
public static final int SPELL_MIND_ALTAR_TELEPORT = 1256;
public static final int SPELL_RESPAWN_TELEPORT = 1257;
/* Unmapped 1258 */
public static final int SPELL_FENKENSTRAINS_CASTLE_TELEPORT = 1259;
public static final int SPELL_WEST_ARDOUGNE_TELEPORT = 1260;
public static final int SPELL_HARMONY_ISLAND_TELEPORT = 1261;
public static final int SPELL_BARROWS_TELEPORT = 1262;
public static final int SPELL_APE_ATOLL_TELEPORT = 1263;
public static final int SPELL_CEMETERY_TELEPORT = 1264;
/* Unmapped: 1265 */
public static final int SPELL_RESURRECT_CROPS = 1266;
public static final int SPELL_GHOSTLY_GRASP = 1267;
public static final int SPELL_SKELETAL_GRASP = 1268;
public static final int SPELL_UNDEAD_GRASP = 1269;
public static final int SPELL_RESURRECT_LESSER_GHOST = 1270;
/* Unmapped: 1271~1296 */
public static final int QUESTS_PAGE_ICON_PURPLE_KOUREND = 1297;
public static final int UNUSED_TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1298;
public static final int TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES = 1299;
/* Unmapped: 1300~1305 */
/* Unmapped: 1300~1301 */
public static final int SPELL_INFERIOR_DEMONBANE = 1302;
public static final int SPELL_SUPERIOR_DEMONBANE = 1303;
public static final int SPELL_DARK_DEMONBANE = 1304;
public static final int SPELL_MARK_OF_DARKNESS = 1305;
public static final int SPELL_WARD_OF_ARCEUUS = 1306;
/* Unmapped: 1307~1309 */
public static final int SPELL_LESSER_CORRUPTION = 1307;
public static final int SPELL_GREATER_CORRUPTION = 1308;
/* Unmapped: 1309 */
public static final int SPELL_DEATH_CHARGE = 1310;
/* Unmapped: 1311~1314 */
public static final int SPELL_DEMONIC_OFFERING = 1311;
public static final int SPELL_SINISTER_OFFERING = 1312;
/* Unmapped: 1313~1314 */
public static final int SPELL_SHADOW_VEIL = 1315;
/* Unmapped: 1316~1324 */
public static final int SPELL_DARK_LURE = 1316;
public static final int SPELL_VILE_VIGOUR = 1317;
public static final int SPELL_DEGRIME = 1318;
/* Unmapped: 1319~1324 */
public static final int SPELL_WARD_OF_ARCEUUS_DISABLED = 1325;
/* Unmapped: 1326 */
public static final int SPELL_GREATER_CORRUPTION_DISABLED = 1327;
@@ -1615,6 +1650,8 @@ public final class SpriteID
public static final int HEALTHBAR_YELLOW_BACK_70PX = 2978;
/* Unmapped: 2979, 2980 */
public static final int SPELL_RESURRECT_SUPERIOR_SKELETON = 2981;
/* Unmapped: 2982~2986 */
/* Unmapped: 2982~2983 */
public static final int SPELL_RESURRECT_GREATER_ZOMBIE = 2984;
/* Unmapped: 2985~2986 */
public static final int SPELL_RESURRECT_SUPERIOR_SKELETON_DISABLED = 2987;
}

View File

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

View File

@@ -50,9 +50,8 @@ import net.runelite.api.Skill;
import net.runelite.api.VarPlayer;
import net.runelite.client.game.ItemManager;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.skillcalculator.beans.SkillData;
import net.runelite.client.plugins.skillcalculator.beans.SkillDataBonus;
import net.runelite.client.plugins.skillcalculator.beans.SkillDataEntry;
import net.runelite.client.plugins.skillcalculator.skills.SkillAction;
import net.runelite.client.plugins.skillcalculator.skills.SkillBonus;
import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.DynamicGridLayout;
import net.runelite.client.ui.FontManager;
@@ -69,14 +68,12 @@ class SkillCalculator extends JPanel
private final SpriteManager spriteManager;
private final ItemManager itemManager;
private final List<UIActionSlot> uiActionSlots = new ArrayList<>();
private final CacheSkillData cacheSkillData = new CacheSkillData();
private final UICombinedActionSlot combinedActionSlot;
private final ArrayList<UIActionSlot> combinedActionSlots = new ArrayList<>();
private final List<JCheckBox> bonusCheckBoxes = new ArrayList<>();
private final IconTextField searchBar = new IconTextField();
private SkillData skillData;
private Skill currentSkill;
private CalculatorType currentCalculator;
private int currentLevel = 1;
private int currentXP = Experience.getXpForLevel(currentLevel);
private int targetLevel = currentLevel + 1;
@@ -137,12 +134,9 @@ class SkillCalculator extends JPanel
currentXP = client.getSkillExperience(calculatorType.getSkill());
currentLevel = Experience.getLevelForXp(currentXP);
if (currentSkill != calculatorType.getSkill())
if (currentCalculator != calculatorType)
{
currentSkill = calculatorType.getSkill();
// Load the skill data.
skillData = cacheSkillData.getSkillData(calculatorType.getDataFile());
currentCalculator = calculatorType;
// Reset the XP factor, removing bonuses.
xpFactor = 1;
@@ -234,12 +228,13 @@ class SkillCalculator extends JPanel
private void renderBonusOptions()
{
if (skillData.getBonuses() == null)
final SkillBonus[] skillBonuses = currentCalculator.getSkillBonuses();
if (skillBonuses == null)
{
return;
}
for (SkillDataBonus bonus : skillData.getBonuses())
for (SkillBonus bonus : skillBonuses)
{
JPanel checkboxPanel = buildCheckboxPanel(bonus);
@@ -248,7 +243,7 @@ class SkillCalculator extends JPanel
}
}
private JPanel buildCheckboxPanel(SkillDataBonus bonus)
private JPanel buildCheckboxPanel(SkillBonus bonus)
{
JPanel uiOption = new JPanel(new BorderLayout());
JLabel uiLabel = new JLabel(bonus.getName());
@@ -272,7 +267,7 @@ class SkillCalculator extends JPanel
return uiOption;
}
private void adjustCheckboxes(JCheckBox target, SkillDataBonus bonus)
private void adjustCheckboxes(JCheckBox target, SkillBonus bonus)
{
adjustXPBonus(0);
bonusCheckBoxes.forEach(otherSelectedCheckbox ->
@@ -295,15 +290,15 @@ class SkillCalculator extends JPanel
uiActionSlots.clear();
// Create new components for the action slots.
for (SkillDataEntry action : skillData.getActions())
for (SkillAction action : currentCalculator.getSkillActions())
{
JLabel uiIcon = new JLabel();
if (action.getIcon() != null)
if (action.getIcon() != -1)
{
itemManager.getImage(action.getIcon()).addTo(uiIcon);
}
else if (action.getSprite() != null)
else if (action.getSprite() != -1)
{
spriteManager.addSpriteTo(uiIcon, action.getSprite(), 0);
}
@@ -348,7 +343,7 @@ class SkillCalculator extends JPanel
{
int actionCount = 0;
int neededXP = targetXP - currentXP;
SkillDataEntry action = slot.getAction();
SkillAction action = slot.getAction();
double xp = (action.isIgnoreBonus()) ? action.getXp() : action.getXp() * xpFactor;
if (neededXP > 0)

View File

@@ -41,7 +41,7 @@ import javax.swing.border.EmptyBorder;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import net.runelite.client.plugins.skillcalculator.beans.SkillDataEntry;
import net.runelite.client.plugins.skillcalculator.skills.SkillAction;
import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.components.shadowlabel.JShadowedLabel;
@@ -63,7 +63,7 @@ class UIActionSlot extends JPanel
private static final Dimension ICON_SIZE = new Dimension(32, 32);
@Getter(AccessLevel.PACKAGE)
private final SkillDataEntry action;
private final SkillAction action;
private final JShadowedLabel uiLabelActions;
private final JPanel uiInfo;
@@ -81,7 +81,7 @@ class UIActionSlot extends JPanel
@Setter(AccessLevel.PACKAGE)
private double value;
UIActionSlot(SkillDataEntry action, JLabel uiIcon)
UIActionSlot(SkillAction action, JLabel uiIcon)
{
this.action = action;

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 SkillAction
{
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 SkillAction
{
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

@@ -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 ConstructionBonus implements SkillBonus
{
CARPENTERS_OUTFIT("Carpenter's Outfit (+2.5%)", 0.025f),
;
private final String name;
private final float value;
}

View File

@@ -0,0 +1,164 @@
/*
* 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 SkillAction
{
SINEW("Sinew", 1, 3, ItemID.SINEW),
SHRIMPS("Shrimps", 1, 30, ItemID.SHRIMPS),
COOKED_CHICKEN("Cooked chicken", 1, 30, ItemID.COOKED_CHICKEN),
COOKED_MEAT("Cooked meat", 1, 30, ItemID.COOKED_MEAT),
COOKED_RABBIT("Cooked rabbit", 1, 30, ItemID.COOKED_RABBIT),
ANCHOVIES("Anchovies", 1, 30, ItemID.ANCHOVIES),
SARDINE("Sardine", 1, 40, ItemID.SARDINE),
POISON_KARAMBWAN("Poison karambwan", 1, 80, ItemID.POISON_KARAMBWAN),
UGTHANKI_MEAT("Ugthanki meat", 1, 40, ItemID.UGTHANKI_MEAT),
BREAD("Bread", 1, 40, ItemID.BREAD),
HERRING("Herring", 5, 50, ItemID.HERRING),
FRUIT_BLAST("Fruit blast", 6, 50, ItemID.FRUIT_BLAST),
BAKED_POTATO("Baked potato", 7, 15, ItemID.BAKED_POTATO),
GUPPY("Guppy", 7, 12, ItemID.GUPPY),
PINEAPPLE_PUNCH("Pineapple punch", 8, 70, ItemID.PINEAPPLE_PUNCH),
SPICY_SAUCE("Spicy sauce", 9, 25, ItemID.SPICY_SAUCE),
MACKEREL("Mackerel", 10, 60, ItemID.MACKEREL),
REDBERRY_PIE("Redberry pie", 10, 78, ItemID.REDBERRY_PIE),
TOAD_CRUNCHIES("Toad crunchies", 10, 100, ItemID.TOAD_CRUNCHIES),
CHILLI_CON_CARNE("Chilli con carne", 11, 55, ItemID.CHILLI_CON_CARNE),
ROAST_BIRD_MEAT("Roast bird meat", 11, 62.5f, ItemID.ROAST_BIRD_MEAT),
THIN_SNAIL_MEAT("Thin snail meat", 12, 70, ItemID.THIN_SNAIL_MEAT),
SPICY_CRUNCHIES("Spicy crunchies", 12, 100, ItemID.SPICY_CRUNCHIES),
SCRAMBLED_EGG("Scrambled egg", 13, 50, ItemID.SCRAMBLED_EGG),
CIDER("Cider", 14, 182, ItemID.CIDER),
WORM_CRUNCHIES("Worm crunchies", 14, 104, ItemID.WORM_CRUNCHIES),
TROUT("Trout", 15, 70, ItemID.TROUT),
SPIDER_ON_STICK("Spider on stick", 16, 80, ItemID.SPIDER_ON_STICK),
SPIDER_ON_SHAFT("Spider on shaft", 16, 80, ItemID.SPIDER_ON_SHAFT),
ROAST_RABBIT("Roast rabbit", 16, 72.5f, ItemID.ROAST_RABBIT),
CHOCCHIP_CRUNCHIES("Chocchip crunchies", 16, 100, ItemID.CHOCCHIP_CRUNCHIES),
LEAN_SNAIL_MEAT("Lean snail meat", 17, 80, ItemID.LEAN_SNAIL_MEAT),
COD("Cod", 18, 75, ItemID.COD),
WIZARD_BLIZZARD("Wizard blizzard", 18, 110, ItemID.WIZARD_BLIZZARD),
DWARVEN_STOUT("Dwarven stout", 19, 215, ItemID.DWARVEN_STOUT),
SHORT_GREEN_GUY("Short green guy", 20, 120, ItemID.SHORT_GREEN_GUY),
MEAT_PIE("Meat pie", 20, 110, ItemID.MEAT_PIE),
PIKE("Pike", 20, 80, ItemID.PIKE),
CUP_OF_TEA("Cup of tea", 20, 52, ItemID.CUP_OF_TEA),
CAVEFISH("Cavefish", 20, 23, ItemID.CAVEFISH),
ROAST_BEAST_MEAT("Roast beast meat", 21, 82.5f, ItemID.ROAST_BEAST_MEAT),
COOKED_CRAB_MEAT("Cooked crab meat", 21, 100, ItemID.COOKED_CRAB_MEAT),
POT_OF_CREAM("Pot of cream", 21, 18, ItemID.POT_OF_CREAM),
FAT_SNAIL_MEAT("Fat snail meat", 22, 95, ItemID.FAT_SNAIL_MEAT),
EGG_AND_TOMATO("Egg and tomato", 23, 50, ItemID.EGG_AND_TOMATO),
ASGARNIAN_ALE("Asgarnian ale", 24, 248, ItemID.ASGARNIAN_ALE),
SALMON("Salmon", 25, 90, ItemID.SALMON),
STEW("Stew", 25, 117, ItemID.STEW),
FRUIT_BATTA("Fruit batta", 25, 150, ItemID.FRUIT_BATTA),
TOAD_BATTA("Toad batta", 26, 152, ItemID.TOAD_BATTA),
WORM_BATTA("Worm batta", 27, 154, ItemID.WORM_BATTA),
VEGETABLE_BATTA("Vegetable batta", 28, 156, ItemID.VEGETABLE_BATTA),
SWEETCORN("Sweetcorn", 28, 104, ItemID.COOKED_SWEETCORN),
COOKED_SLIMY_EEL("Cooked slimy eel", 28, 95, ItemID.COOKED_SLIMY_EEL),
MUD_PIE("Mud pie", 29, 128, ItemID.MUD_PIE),
GREENMANS_ALE("Greenman's ale", 29, 281, ItemID.GREENMANS_ALE),
CHEESE_AND_TOMATO_BATTA("Cheese and tomato Batta", 29, 158, ItemID.CHEESETOM_BATTA),
TUNA("Tuna", 30, 100, ItemID.TUNA),
APPLE_PIE("Apple pie", 30, 130, ItemID.APPLE_PIE),
WORM_HOLE("Worm hole", 30, 170, ItemID.WORM_HOLE),
COOKED_KARAMBWAN("Cooked karambwan", 30, 190, ItemID.COOKED_KARAMBWAN),
ROASTED_CHOMPY("Roasted chompy", 30, 100, ItemID.COOKED_CHOMPY),
FISHCAKE("Fishcake", 31, 100, ItemID.COOKED_FISHCAKE),
DRUNK_DRAGON("Drunk dragon", 32, 160, ItemID.DRUNK_DRAGON),
CHOC_SATURDAY("Choc saturday", 33, 170, ItemID.CHOC_SATURDAY),
TETRA("Tetra", 33, 31, ItemID.TETRA),
GARDEN_PIE("Garden pie", 34, 138, ItemID.GARDEN_PIE),
WIZARDS_MIND_BOMB("Wizard's mind bomb", 34, 314, ItemID.WIZARDS_MIND_BOMB),
JUG_OF_WINE("Jug of wine", 35, 200, ItemID.JUG_OF_WINE),
PLAIN_PIZZA("Plain pizza", 35, 143, ItemID.PLAIN_PIZZA),
RAINBOW_FISH("Rainbow fish", 35, 110, ItemID.RAINBOW_FISH),
VEG_BALL("Veg ball", 35, 175, ItemID.VEG_BALL),
BLURBERRY_SPECIAL("Blurberry special", 37, 180, ItemID.BLURBERRY_SPECIAL),
CAVE_EEL("Cave eel", 38, 115, ItemID.CAVE_EEL),
PAT_OF_BUTTER("Pat of butter", 38, 40.5f, ItemID.PAT_OF_BUTTER),
DRAGON_BITTER("Dragon bitter", 39, 347, ItemID.DRAGON_BITTER),
POTATO_WITH_BUTTER("Potato with butter", 39, 40, ItemID.POTATO_WITH_BUTTER),
LOBSTER("Lobster", 40, 120, ItemID.LOBSTER),
CAKE("Cake", 40, 180, ItemID.CAKE),
TANGLED_TOADS_LEGS("Tangled toad's legs", 40, 185, ItemID.TANGLED_TOADS_LEGS),
CHILLI_POTATO("Chilli potato", 41, 165.5f, ItemID.CHILLI_POTATO),
COOKED_JUBBLY("Cooked jubbly", 41, 160, ItemID.COOKED_JUBBLY),
CHOCOLATE_BOMB("Chocolate bomb", 42, 190, ItemID.CHOCOLATE_BOMB),
FRIED_ONIONS("Fried onions", 42, 60, ItemID.FRIED_ONIONS),
BASS("Bass", 43, 130, ItemID.BASS),
MOONLIGHT_MEAD("Moonlight mead", 44, 380, ItemID.MOONLIGHT_MEAD),
SWORDFISH("Swordfish", 45, 140, ItemID.SWORDFISH),
MEAT_PIZZA("Meat pizza", 45, 169, ItemID.MEAT_PIZZA),
FRIED_MUSHROOMS("Fried mushrooms", 46, 60, ItemID.FRIED_MUSHROOMS),
CATFISH("Catfish", 46, 43, ItemID.CATFISH),
FISH_PIE("Fish pie", 47, 164, ItemID.FISH_PIE),
POTATO_WITH_CHEESE("Potato with cheese", 47, 40, ItemID.POTATO_WITH_CHEESE),
CHEESE("Cheese", 48, 64, ItemID.CHEESE),
AXEMANS_FOLLY("Axeman's folly", 49, 413, ItemID.AXEMANS_FOLLY),
COOKED_OOMLIE_WRAP("Cooked oomlie wrap", 50, 30, ItemID.COOKED_OOMLIE_WRAP),
CHOCOLATE_CAKE("Chocolate cake", 50, 210, ItemID.CHOCOLATE_CAKE),
EGG_POTATO("Egg potato", 51, 195.5f, ItemID.EGG_POTATO),
BOTANICAL_PIE("Botanical pie", 52, 180, ItemID.BOTANICAL_PIE),
LAVA_EEL("Lava eel", 53, 30, ItemID.LAVA_EEL),
CHEFS_DELIGHT("Chef's Delight", 54, 446, ItemID.CHEFS_DELIGHT),
ANCHOVY_PIZZA("Anchovy pizza", 55, 182, ItemID.ANCHOVY_PIZZA),
MUSHROOM_AND_ONION("Mushroom & onion", 57, 120, ItemID.MUSHROOM__ONION),
UGTHANKI_KEBAB_FRESH("Ugthanki kebab (Fresh)", 58, 80, ItemID.UGTHANKI_KEBAB),
PITTA_BREAD("Pitta bread", 58, 40, ItemID.PITTA_BREAD),
SLAYERS_RESPITE("Slayer's respite", 59, 479, ItemID.SLAYERS_RESPITE),
CURRY("Curry", 60, 280, ItemID.CURRY),
MUSHROOM_PIE("Mushroom pie", 60, 200, ItemID.MUSHROOM_PIE),
MONKFISH("Monkfish", 62, 150, ItemID.MONKFISH),
MUSHROOM_POTATO("Mushroom potato", 64, 270.5f, ItemID.MUSHROOM_POTATO),
PINEAPPLE_PIZZA("Pineapple pizza", 65, 188, ItemID.PINEAPPLE_PIZZA),
WINE_OF_ZAMORAK("Wine of zamorak", 65, 200, ItemID.WINE_OF_ZAMORAK),
TUNA_AND_CORN("Tuna and corn", 67, 204, ItemID.TUNA_AND_CORN),
TUNA_POTATO("Tuna potato", 68, 309.5f, ItemID.TUNA_POTATO),
ADMIRAL_PIE("Admiral pie", 70, 210, ItemID.ADMIRAL_PIE),
SACRED_EEL("Sacred eel", 72, 109, ItemID.SACRED_EEL),
DRAGONFRUIT_PIE("Dragonfruit pie", 73, 220, ItemID.DRAGONFRUIT_PIE),
SHARK("Shark", 80, 210, ItemID.SHARK),
SEA_TURTLE("Sea turtle", 82, 211.3f, ItemID.SEA_TURTLE),
ANGLERFISH("Anglerfish", 84, 230, ItemID.ANGLERFISH),
WILD_PIE("Wild pie", 85, 240, ItemID.WILD_PIE),
DARK_CRAB("Dark crab", 90, 215, ItemID.DARK_CRAB),
MANTA_RAY("Manta ray", 91, 216.3f, ItemID.MANTA_RAY),
SUMMER_PIE("Summer pie", 95, 260, ItemID.SUMMER_PIE),
;
private final String name;
private final int level;
private final float xp;
private final int icon;
}

View File

@@ -0,0 +1,175 @@
/*
* 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 SkillAction
{
BALL_OF_WOOL("Ball of wool", 1, 2.5f, ItemID.BALL_OF_WOOL),
UNFIRED_POT("Unfired pot", 1, 6.3f, ItemID.UNFIRED_POT),
POT("Pot", 1, 6.3f, ItemID.POT),
LEATHER_GLOVES("Leather gloves", 1, 13.8f, ItemID.LEATHER_GLOVES),
OPAL("Opal", 1, 15, ItemID.OPAL),
OPAL_RING("Opal ring", 1, 10, ItemID.OPAL_RING),
MOLTEN_GLASS("Molten glass", 1, 20, ItemID.MOLTEN_GLASS),
BEER_GLASS("Beer glass", 1, 17.5f, ItemID.BEER_GLASS),
EMPTY_CANDLE_LANTERN("Empty candle lantern", 4, 19, ItemID.EMPTY_CANDLE_LANTERN),
GOLD_RING("Gold ring", 5, 15, ItemID.GOLD_RING),
BIRD_HOUSE("Bird house", 5, 15, ItemID.BIRD_HOUSE),
GOLD_NECKLACE("Gold necklace", 6, 20, ItemID.GOLD_NECKLACE),
LEATHER_BOOTS("Leather boots", 7, 16.3f, ItemID.LEATHER_BOOTS),
UNFIRED_PIE_DISH("Unfired pie dish", 7, 15, ItemID.UNFIRED_PIE_DISH),
PIE_DISH("Pie dish", 7, 10, ItemID.PIE_DISH),
GOLD_BRACELET("Gold bracelet", 7, 25, ItemID.GOLD_BRACELET),
UNFIRED_BOWL("Unfired bowl", 8, 18, ItemID.UNFIRED_BOWL),
BOWL("Bowl", 8, 15, ItemID.BOWL),
GOLD_AMULET_U("Gold amulet (u)", 8, 30, ItemID.GOLD_AMULET_U),
COWL("Cowl", 9, 18.5f, ItemID.LEATHER_COWL),
CROSSBOW_STRING("Crossbow string", 10, 15, ItemID.CROSSBOW_STRING),
BOW_STRING("Bow string", 10, 15, ItemID.BOW_STRING),
LEATHER_VAMBRACES("Leather vambraces", 11, 22, ItemID.LEATHER_VAMBRACES),
EMPTY_OIL_LAMP("Empty oil lamp", 12, 25, ItemID.EMPTY_OIL_LAMP),
JADE("Jade", 13, 20, ItemID.JADE),
JADE_RING("Jade ring", 13, 32, ItemID.JADE_RING),
LEATHER_BODY("Leather body", 14, 25, ItemID.LEATHER_BODY),
OAK_BIRD_HOUSE("Oak bird house", 15, 20, ItemID.OAK_BIRD_HOUSE),
RED_TOPAZ("Red topaz", 16, 25, ItemID.RED_TOPAZ),
TOPAZ_RING("Topaz ring", 16, 35, ItemID.TOPAZ_RING),
HOLY_SYMBOL("Holy symbol", 16, 50, ItemID.HOLY_SYMBOL),
OPAL_NECKLACE("Opal necklace", 16, 35, ItemID.OPAL_NECKLACE),
UNHOLY_SYMBOL("Unholy symbol", 17, 50, ItemID.UNHOLY_SYMBOL),
LEATHER_CHAPS("Leather chaps", 18, 27, ItemID.LEATHER_CHAPS),
UNFIRED_PLANT_POT("Unfired plant pot", 19, 20, ItemID.UNFIRED_PLANT_POT),
EMPTY_PLANT_POT("Empty plant pot", 19, 17.5f, ItemID.EMPTY_PLANT_POT),
MAGIC_STRING("Magic string", 19, 30, ItemID.MAGIC_STRING),
SAPPHIRE("Sapphire", 20, 50, ItemID.SAPPHIRE),
SAPPHIRE_RING("Sapphire ring", 20, 40, ItemID.SAPPHIRE_RING),
EMPTY_SACK("Empty sack", 21, 38, ItemID.EMPTY_SACK),
SAPPHIRE_NECKLACE("Sapphire necklace", 22, 55, ItemID.SAPPHIRE_NECKLACE),
OPAL_BRACELET("Opal bracelet", 22, 45, ItemID.OPAL_BRACELET),
SAPPHIRE_BRACELET("Sapphire bracelet", 23, 60, ItemID.SAPPHIRE_BRACELET),
TIARA("Tiara", 23, 52.5f, ItemID.TIARA),
SAPPHIRE_AMULET_U("Sapphire amulet (u)", 24, 65, ItemID.SAPPHIRE_AMULET_U),
UNFIRED_POT_LID("Unfired pot lid", 25, 20, ItemID.UNFIRED_POT_LID),
POT_LID("Pot lid", 25, 20, ItemID.POT_LID),
JADE_NECKLACE("Jade necklace", 25, 54, ItemID.JADE_NECKLACE),
WILLOW_BIRD_HOUSE("Willow bird house", 25, 25, ItemID.WILLOW_BIRD_HOUSE),
DRIFT_NET("Drift net", 26, 55, ItemID.SMALL_FISHING_NET_6209),
EMERALD("Emerald", 27, 67.5f, ItemID.EMERALD),
EMERALD_RING("Emerald ring", 27, 55, ItemID.EMERALD_RING),
OPAL_AMULET_U("Opal amulet (u)", 27, 55, ItemID.OPAL_AMULET_U),
HARDLEATHER_BODY("Hardleather body", 28, 35, ItemID.HARDLEATHER_BODY),
EMERALD_NECKLACE("Emerald necklace", 29, 60, ItemID.EMERALD_NECKLACE),
JADE_BRACELET("Jade bracelet", 29, 60, ItemID.JADE_BRACELET),
EMERALD_BRACELET("Emerald bracelet", 30, 65, ItemID.EMERALD_BRACELET),
ROPE("Rope", 30, 25, ItemID.ROPE),
EMERALD_AMULET_U("Emerald amulet (u)", 31, 70, ItemID.EMERALD_AMULET_U),
SPIKY_VAMBRACES("Spiky vambraces", 32, 6, ItemID.SPIKY_VAMBRACES),
TOPAZ_NECKLACE("Topaz necklace", 32, 70, ItemID.TOPAZ_NECKLACE),
VIAL("Vial", 33, 35, ItemID.VIAL),
RUBY("Ruby", 34, 85, ItemID.RUBY),
RUBY_RING("Ruby ring", 34, 70, ItemID.RUBY_RING),
JADE_AMULET_U("Jade amulet (u)", 34, 70, ItemID.JADE_AMULET_U),
BROODOO_SHIELD("Broodoo shield", 35, 100, ItemID.BROODOO_SHIELD),
TEAK_BIRD_HOUSE("Teak bird house", 35, 30, ItemID.TEAK_BIRD_HOUSE),
BASKET("Basket", 36, 56, ItemID.BASKET),
COIF("Coif", 38, 37, ItemID.COIF),
TOPAZ_BRACELET("Topaz bracelet", 38, 75, ItemID.TOPAZ_BRACELET),
RUBY_NECKLACE("Ruby necklace", 40, 75, ItemID.RUBY_NECKLACE),
HARD_LEATHER_SHIELD("Hard leather shield", 41, 70, ItemID.HARD_LEATHER_SHIELD),
RUBY_BRACELET("Ruby bracelet", 42, 80, ItemID.RUBY_BRACELET),
FISHBOWL("Fishbowl", 42, 42.5f, ItemID.FISHBOWL),
DIAMOND("Diamond", 43, 107.5f, ItemID.DIAMOND),
DIAMOND_RING("Diamond ring", 43, 85, ItemID.DIAMOND_RING),
TOPAZ_AMULET_U("Topaz amulet (u)", 45, 80, ItemID.TOPAZ_AMULET_U),
SNAKESKIN_BOOTS("Snakeskin boots", 45, 30, ItemID.SNAKESKIN_BOOTS),
MAPLE_BIRD_HOUSE("Maple bird house", 45, 35, ItemID.MAPLE_BIRD_HOUSE),
UNPOWERED_ORB("Unpowered orb", 46, 52.5f, ItemID.UNPOWERED_ORB),
SNAKESKIN_VAMBRACES("Snakeskin vambraces", 47, 35, ItemID.SNAKESKIN_VAMBRACES),
SNAKESKIN_BANDANA("Snakeskin bandana", 48, 45, ItemID.SNAKESKIN_BANDANA),
LANTERN_LENS("Lantern lens", 49, 55, ItemID.LANTERN_LENS),
RUBY_AMULET_U("Ruby amulet (u)", 50, 85, ItemID.RUBY_AMULET_U),
MAHOGANY_BIRD_HOUSE("Mahogany bird house", 50, 40, ItemID.MAHOGANY_BIRD_HOUSE),
SNAKESKIN_CHAPS("Snakeskin chaps", 51, 50, ItemID.SNAKESKIN_CHAPS),
SNAKESKIN_BODY("Snakeskin body", 53, 55, ItemID.SNAKESKIN_BODY),
WATER_BATTLESTAFF("Water battlestaff", 54, 100, ItemID.WATER_BATTLESTAFF),
DRAGONSTONE("Dragonstone", 55, 137.5f, ItemID.DRAGONSTONE),
DRAGONSTONE_RING("Dragonstone ring", 55, 100, ItemID.DRAGONSTONE_RING),
DIAMOND_NECKLACE("Diamond necklace", 56, 90, ItemID.DIAMOND_NECKLACE),
SNAKESKIN_SHIELD("Snakeskin shield", 56, 100, ItemID.SNAKESKIN_SHIELD),
GREEN_DHIDE_VAMB("Green D'hide vamb", 57, 62, ItemID.GREEN_DHIDE_VAMBRACES),
DIAMOND_BRACELET("Diamond bracelet", 58, 95, ItemID.DIAMOND_BRACELET),
EARTH_BATTLESTAFF("Earth battlestaff", 58, 112.5f, ItemID.EARTH_BATTLESTAFF),
GREEN_DHIDE_CHAPS("Green D'hide chaps", 60, 124, ItemID.GREEN_DHIDE_CHAPS),
YEW_BIRD_HOUSE("Yew bird house", 60, 45, ItemID.YEW_BIRD_HOUSE),
FIRE_BATTLESTAFF("Fire battlestaff", 62, 125, ItemID.FIRE_BATTLESTAFF),
GREEN_DHIDE_SHIELD("Green D'hide shield", 62, 124, ItemID.GREEN_DHIDE_SHIELD),
GREEN_DHIDE_BODY("Green D'hide body", 63, 186, ItemID.GREEN_DHIDE_BODY),
AIR_BATTLESTAFF("Air battlestaff", 66, 137.5f, ItemID.AIR_BATTLESTAFF),
BLUE_DHIDE_VAMB("Blue D'hide vamb", 66, 70, ItemID.BLUE_DHIDE_VAMBRACES),
ONYX_RING("Onyx ring", 67, 115, ItemID.ONYX_RING),
ONYX("Onyx", 67, 167.5f, ItemID.ONYX),
BLUE_DHIDE_CHAPS("Blue D'hide chaps", 68, 140, ItemID.BLUE_DHIDE_CHAPS),
BLUE_DHIDE_SHIELD("Blue D'hide shield", 69, 140, ItemID.BLUE_DHIDE_SHIELD),
DIAMOND_AMULET_U("Diamond amulet (u)", 70, 100, ItemID.DIAMOND_AMULET_U),
BLUE_DHIDE_BODY("Blue D'hide body", 71, 210, ItemID.BLUE_DHIDE_BODY),
DRAGONSTONE_NECKLACE("Dragonstone necklace", 72, 105, ItemID.DRAGON_NECKLACE),
RED_DHIDE_VAMB("Red D'hide vamb", 73, 78, ItemID.RED_DHIDE_VAMBRACES),
DRAGONSTONE_BRACELET("Dragonstone bracelet", 74, 110, ItemID.DRAGONSTONE_BRACELET),
RED_DHIDE_CHAPS("Red D'hide chaps", 75, 156, ItemID.RED_DHIDE_CHAPS),
MAGIC_BIRD_HOUSE("Magic bird house", 75, 50, ItemID.MAGIC_BIRD_HOUSE),
RED_DHIDE_SHIELD("Red D'hide shield", 76, 156, ItemID.RED_DHIDE_SHIELD),
RED_DHIDE_BODY("Red D'hide body", 77, 234, ItemID.RED_DHIDE_BODY),
BLACK_DHIDE_VAMB("Black D'hide vamb", 79, 86, ItemID.BLACK_DHIDE_VAMBRACES),
DRAGONSTONE_AMULET_U("Dragonstone amulet (u)", 80, 150, ItemID.DRAGONSTONE_AMULET_U),
BLACK_DHIDE_CHAPS("Black D'hide chaps", 82, 172, ItemID.BLACK_DHIDE_CHAPS),
ONYX_NECKLACE("Onyx necklace", 82, 120, ItemID.ONYX_NECKLACE),
AMETHYST_BOLT_TIPS("Amethyst bolt tips", 83, 4, ItemID.AMETHYST_BOLT_TIPS),
BLACK_DHIDE_SHIELD("Black D'hide shield", 83, 172, ItemID.BLACK_DHIDE_SHIELD),
BLACK_DHIDE_BODY("Black D'hide body", 84, 258, ItemID.BLACK_DHIDE_BODY),
ONYX_BRACELET("Onyx bracelet", 84, 125, ItemID.ONYX_BRACELET),
AMETHYST_ARROWTIPS("Amethyst arrowtips", 85, 4, ItemID.AMETHYST_ARROWTIPS),
AMETHYST_JAVELIN_HEADS("Amethyst javelin heads", 87, 12, ItemID.AMETHYST_JAVELIN_HEADS),
LIGHT_ORB("Light orb", 87, 70, ItemID.LIGHT_ORB),
AMETHYST_DART_TIP("Amethyst dart tip", 89, 7.5f, ItemID.AMETHYST_DART_TIP),
ZENYTE("Zenyte", 89, 200, ItemID.ZENYTE),
ZENYTE_RING("Zenyte ring", 89, 150, ItemID.ZENYTE_RING),
ONYX_AMULET_U("Onyx amulet (u)", 90, 165, ItemID.ONYX_AMULET_U),
REDWOOD_BIRD_HOUSE("Redwood bird house", 90, 55, ItemID.REDWOOD_BIRD_HOUSE),
ZENYTE_NECKLACE("Zenyte necklace", 92, 165, ItemID.ZENYTE_NECKLACE),
ZENYTE_BRACELET("Zenyte bracelet", 95, 180, ItemID.ZENYTE_BRACELET),
ZENYTE_AMULET_U("Zenyte amulet (u)", 98, 200, ItemID.ZENYTE_AMULET_U),
;
private final String name;
private final int level;
private final float xp;
private final int icon;
}

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 SkillAction
{
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.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,13 +22,18 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.skillcalculator.beans;
package net.runelite.client.plugins.skillcalculator.skills;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
public class SkillDataBonus
@AllArgsConstructor
@Getter(onMethod_ = @Override)
public enum FarmingBonus implements SkillBonus
{
private String name;
private float value;
}
FARMERS_OUTFIT("Farmer's Outfit (+2.5%)", 0.025f),
;
private final String name;
private final float value;
}

View File

@@ -0,0 +1,53 @@
/*
* 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 SkillAction
{
LOGS("Logs", 1, 40, ItemID.LOGS),
ACHEY_TREE_LOGS("Achey tree logs", 1, 40, ItemID.ACHEY_TREE_LOGS),
OAK_LOGS("Oak logs", 15, 60, ItemID.OAK_LOGS),
WILLOW_LOGS("Willow logs", 30, 90, ItemID.WILLOW_LOGS),
TEAK_LOGS("Teak logs", 35, 105, ItemID.TEAK_LOGS),
ARCTIC_PINE_LOGS("Arctic pine logs", 42, 125, ItemID.ARCTIC_PINE_LOGS),
MAPLE_LOGS("Maple logs", 45, 135, ItemID.MAPLE_LOGS),
MAHOGANY_LOGS("Mahogany logs", 50, 157.5f, ItemID.MAHOGANY_LOGS),
YEW_LOGS("Yew logs", 60, 202.5f, ItemID.YEW_LOGS),
BLISTERWOOD_LOGS("Blisterwood logs", 62, 96, ItemID.BLISTERWOOD_LOGS),
MAGIC_LOGS("Magic logs", 75, 303.8f, ItemID.MAGIC_LOGS),
REDWOOD_LOGS("Redwood logs", 90, 350, 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 FiremakingBonus implements SkillBonus
{
PYROMANCER_OUTFIT("Pyromancer Outfit (+2.5%)", 0.025f),
;
private final String name;
private final float value;
}

View File

@@ -0,0 +1,75 @@
/*
* 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 SkillAction
{
RAW_SHRIMPS("Raw shrimps", 1, 10, ItemID.RAW_SHRIMPS),
RAW_SARDINE("Raw sardine", 5, 20, ItemID.RAW_SARDINE),
RAW_KARAMBWANJI("Raw karambwanji", 5, 5, ItemID.RAW_KARAMBWANJI),
RAW_GUPPY("Raw guppy", 7, 8, ItemID.RAW_GUPPY),
RAW_HERRING("Raw herring", 10, 30, ItemID.RAW_HERRING),
RAW_ANCHOVIES("Raw anchovies", 15, 40, ItemID.RAW_ANCHOVIES),
RAW_MACKEREL("Raw mackerel", 16, 20, ItemID.RAW_MACKEREL),
RAW_TROUT("Raw trout", 20, 50, ItemID.RAW_TROUT),
RAW_CAVEFISH("Raw cavefish", 20, 16, ItemID.RAW_CAVEFISH),
RAW_COD("Raw cod", 23, 45, ItemID.RAW_COD),
RAW_PIKE("Raw pike", 25, 60, ItemID.RAW_PIKE),
RAW_SLIMY_EEL("Raw slimy eel", 28, 65, ItemID.RAW_SLIMY_EEL),
RAW_SALMON("Raw salmon", 30, 70, ItemID.RAW_SALMON),
RAW_TETRA("Raw tetra", 33, 24, ItemID.RAW_TETRA),
RAW_TUNA("Raw tuna", 35, 80, ItemID.RAW_TUNA),
RAW_RAINBOW_FISH("Raw rainbow fish", 38, 80, ItemID.RAW_RAINBOW_FISH),
RAW_CAVE_EEL("Raw cave eel", 38, 80, ItemID.RAW_CAVE_EEL),
RAW_LOBSTER("Raw lobster", 40, 90, ItemID.RAW_LOBSTER),
RAW_BASS("Raw bass", 46, 100, ItemID.RAW_BASS),
RAW_CATFISH("Raw catfish", 46, 33, ItemID.RAW_CATFISH),
LEAPING_TROUT("Leaping trout", 48, 50, ItemID.LEAPING_TROUT),
RAW_SWORDFISH("Raw swordfish", 50, 100, ItemID.RAW_SWORDFISH),
LEAPING_SALMON("Leaping salmon", 58, 70, ItemID.LEAPING_SALMON),
RAW_MONKFISH("Raw monkfish", 62, 120, ItemID.RAW_MONKFISH),
RAW_KARAMBWAN("Raw karambwan", 65, 50, ItemID.RAW_KARAMBWAN),
LEAPING_STURGEON("Leaping sturgeon", 70, 80, ItemID.LEAPING_STURGEON),
RAW_SHARK("Raw shark", 76, 110, ItemID.RAW_SHARK),
RAW_SEA_TURTLE("Raw sea turtle", 79, 38, ItemID.RAW_SEA_TURTLE),
INFERNAL_EEL("Infernal eel", 80, 95, ItemID.INFERNAL_EEL),
RAW_MANTA_RAY("Raw manta ray", 81, 46, ItemID.RAW_MANTA_RAY),
RAW_ANGLERFISH("Raw anglerfish", 82, 120, ItemID.RAW_ANGLERFISH),
MINNOW("Minnow", 82, 26.5f, ItemID.MINNOW),
RAW_DARK_CRAB("Raw dark crab", 85, 130, ItemID.RAW_DARK_CRAB),
SACRED_EEL("Sacred eel", 87, 105, ItemID.SACRED_EEL),
;
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.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,17 +22,18 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.skillcalculator.beans;
package net.runelite.client.plugins.skillcalculator.skills;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
public class SkillDataEntry
@AllArgsConstructor
@Getter(onMethod_ = @Override)
public enum FishingBonus implements SkillBonus
{
private String name;
private int level;
private double xp;
private Integer icon;
private Integer sprite;
private boolean ignoreBonus;
}
ANGLERS_OUTFIT("Angler's Outfit (+2.5%)", 0.025f),
;
private final String name;
private final float value;
}

View File

@@ -0,0 +1,139 @@
/*
* 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 SkillAction
{
ARROW_SHAFT("Arrow shaft", 1, 0.33f, ItemID.ARROW_SHAFT),
HEADLESS_ARROW("Headless arrow", 1, 1, ItemID.HEADLESS_ARROW),
BRONZE_ARROW("Bronze arrow", 1, 1.3f, ItemID.BRONZE_ARROW),
OGRE_ARROW("Ogre arrow", 5, 1, ItemID.OGRE_ARROW),
SHORTBOW_U("Shortbow (u)", 5, 5, ItemID.SHORTBOW_U),
SHORTBOW("Shortbow", 5, 5, ItemID.SHORTBOW),
BRONZE_BOLTS("Bronze bolts", 9, 0.5f, ItemID.BRONZE_BOLTS),
WOODEN_STOCK("Wooden stock", 9, 6, ItemID.WOODEN_STOCK),
BRONZE_CROSSBOW_U("Bronze crossbow (u)", 9, 12, ItemID.BRONZE_CROSSBOW_U),
BRONZE_CROSSBOW("Bronze crossbow", 9, 6, ItemID.BRONZE_CROSSBOW),
BRONZE_DART("Bronze dart", 10, 1.8f, ItemID.BRONZE_DART),
LONGBOW("Longbow", 10, 10, ItemID.LONGBOW),
LONGBOW_U("Longbow (u)", 10, 10, ItemID.LONGBOW_U),
OPAL_BOLTS("Opal bolts", 11, 1.6f, ItemID.OPAL_BOLTS),
IRON_ARROW("Iron arrow", 15, 2.5f, ItemID.IRON_ARROW),
OAK_SHORTBOW_U("Oak shortbow (u)", 20, 16.5f, ItemID.OAK_SHORTBOW_U),
OAK_SHORTBOW("Oak shortbow", 20, 16.5f, ItemID.OAK_SHORTBOW),
IRON_DART("Iron dart", 22, 3.8f, ItemID.IRON_DART),
OAK_STOCK("Oak stock", 24, 16, ItemID.OAK_STOCK),
BLURITE_CROSSBOW_U("Blurite crossbow (u)", 24, 32, ItemID.BLURITE_CROSSBOW_U),
BLURITE_CROSSBOW("Blurite crossbow", 24, 16, ItemID.BLURITE_CROSSBOW),
OAK_LONGBOW_U("Oak longbow (u)", 25, 25, ItemID.OAK_LONGBOW_U),
OAK_LONGBOW("Oak longbow", 25, 25, ItemID.OAK_LONGBOW),
OAK_SHIELD("Oak shield", 27, 50, ItemID.OAK_SHIELD),
STEEL_ARROW("Steel arrow", 30, 5, ItemID.STEEL_ARROW),
KEBBIT_BOLTS("Kebbit bolts", 32, 1, ItemID.KEBBIT_BOLTS),
WILLOW_SHORTBOW_U("Willow shortbow (u)", 35, 33.3f, ItemID.WILLOW_SHORTBOW_U),
WILLOW_SHORTBOW("Willow shortbow", 35, 33.3f, ItemID.WILLOW_SHORTBOW),
STEEL_DART("Steel dart", 37, 7.5f, ItemID.STEEL_DART),
IRON_BOLTS("Iron bolts", 39, 1.5f, ItemID.IRON_BOLTS),
WILLOW_STOCK("Willow stock", 39, 22, ItemID.WILLOW_STOCK),
IRON_CROSSBOW_U("Iron crossbow (u)", 39, 44, ItemID.IRON_CROSSBOW_U),
IRON_CROSSBOW("Iron crossbow", 39, 22, ItemID.IRON_CROSSBOW),
WILLOW_LONGBOW_U("Willow longbow (u)", 40, 41.5f, ItemID.WILLOW_LONGBOW_U),
WILLOW_LONGBOW("Willow longbow", 40, 41.5f, ItemID.WILLOW_LONGBOW),
BATTLESTAFF("Battlestaff", 40, 80, ItemID.BATTLESTAFF),
PEARL_BOLTS("Pearl bolts", 41, 3.2f, ItemID.PEARL_BOLTS),
WILLOW_SHIELD("Willow shield", 42, 83, ItemID.WILLOW_SHIELD),
LONG_KEBBIT_BOLTS("Long kebbit bolts", 42, 1.3f, ItemID.LONG_KEBBIT_BOLTS),
SILVER_BOLTS("Silver bolts", 43, 2.5f, ItemID.SILVER_BOLTS),
MITHRIL_ARROW("Mithril arrow", 45, 7.5f, ItemID.MITHRIL_ARROW),
STEEL_BOLTS("Steel bolts", 46, 3.5f, ItemID.STEEL_BOLTS),
TEAK_STOCK("Teak stock", 46, 27, ItemID.TEAK_STOCK),
STEEL_CROSSBOW_U("Steel crossbow (u)", 46, 54, ItemID.STEEL_CROSSBOW_U),
STEEL_CROSSBOW("Steel crossbow", 46, 27, ItemID.STEEL_CROSSBOW),
MAPLE_SHORTBOW_U("Maple shortbow (u)", 50, 50, ItemID.MAPLE_SHORTBOW_U),
MAPLE_SHORTBOW("Maple shortbow", 50, 50, ItemID.MAPLE_SHORTBOW),
BARBED_BOLTS("Barbed bolts", 51, 9.5f, ItemID.BARBED_BOLTS),
MITHRIL_DART("Mithril dart", 52, 11.2f, ItemID.MITHRIL_DART),
BROAD_ARROWS("Broad arrows", 52, 10, ItemID.BROAD_ARROWS),
TOXIC_BLOWPIPE("Toxic blowpipe", 53, 120, ItemID.TOXIC_BLOWPIPE),
MITH_CROSSBOW("Mith crossbow", 54, 32, ItemID.MITHRIL_CROSSBOW),
MAPLE_STOCK("Maple stock", 54, 32, ItemID.MAPLE_STOCK),
MITHRIL_BOLTS("Mithril bolts", 54, 5, ItemID.MITHRIL_BOLTS),
MITHRIL_CROSSBOW_U("Mithril crossbow (u)", 54, 64f, ItemID.MITHRIL_CROSSBOW_U),
MAPLE_LONGBOW_U("Maple longbow (u)", 55, 58.3f, ItemID.MAPLE_LONGBOW_U),
BROAD_BOLTS("Broad bolts", 55, 3, ItemID.BROAD_BOLTS),
MAPLE_LONGBOW("Maple longbow", 55, 58, ItemID.MAPLE_LONGBOW),
SAPPHIRE_BOLTS("Sapphire bolts", 56, 4.7f, ItemID.SAPPHIRE_BOLTS),
MAPLE_SHIELD("Maple shield", 57, 116.5f, ItemID.MAPLE_SHIELD),
EMERALD_BOLTS("Emerald bolts", 58, 5.5f, ItemID.EMERALD_BOLTS),
ADAMANT_ARROW("Adamant arrow", 60, 10, ItemID.ADAMANT_ARROW),
ADAMANT_BOLTS("Adamant bolts", 61, 7, ItemID.ADAMANT_BOLTS),
MAHOGANY_STOCK("Mahogany stock", 61, 41, ItemID.MAHOGANY_STOCK),
ADAMANT_CROSSBOW_U("Adamant crossbow (u)", 61, 82, ItemID.ADAMANT_CROSSBOW_U),
ADAMANT_CROSSBOW("Adamant crossbow", 61, 41, ItemID.ADAMANT_CROSSBOW),
RUBY_BOLTS("Ruby bolts", 63, 6.3f, ItemID.RUBY_BOLTS),
DIAMOND_BOLTS("Diamond bolts", 65, 7, ItemID.DIAMOND_BOLTS),
YEW_SHORTBOW("Yew shortbow", 65, 67.5f, ItemID.YEW_SHORTBOW),
YEW_SHORTBOW_U("Yew shortbow (u)", 65, 67.5f, ItemID.YEW_SHORTBOW_U),
ADAMANT_DART("Adamant dart", 67, 15, ItemID.ADAMANT_DART),
RUNITE_CROSSBOW_U("Runite crossbow (u)", 69, 100, ItemID.RUNITE_CROSSBOW_U),
RUNE_CROSSBOW("Rune crossbow", 69, 50, ItemID.RUNE_CROSSBOW),
YEW_STOCK("Yew stock", 69, 50, ItemID.YEW_STOCK),
RUNITE_BOLTS("Runite bolts", 69, 10, ItemID.RUNITE_BOLTS),
YEW_LONGBOW("Yew longbow", 70, 75, ItemID.YEW_LONGBOW),
YEW_LONGBOW_U("Yew longbow (u)", 70, 75, ItemID.YEW_LONGBOW_U),
DRAGONSTONE_BOLTS("Dragonstone bolts", 71, 8.2f, ItemID.DRAGONSTONE_BOLTS),
YEW_SHIELD("Yew shield", 72, 150, ItemID.YEW_SHIELD),
ONYX_BOLTS("Onyx bolts", 73, 9.4f, ItemID.ONYX_BOLTS),
RUNE_ARROW("Rune arrow", 75, 12.5f, ItemID.RUNE_ARROW),
AMETHYST_BROAD_BOLTS("Amethyst broad bolts", 76, 10.6f, ItemID.AMETHYST_BROAD_BOLTS),
MAGIC_STOCK("Magic stock", 78, 70, ItemID.MAGIC_STOCK),
DRAGON_CROSSBOW_U("Dragon crossbow (u)", 78, 135, ItemID.DRAGON_CROSSBOW_U),
DRAGON_CROSSBOW("Dragon crossbow", 78, 70, ItemID.DRAGON_CROSSBOW),
MAGIC_SHORTBOW("Magic shortbow", 80, 83.3f, ItemID.MAGIC_SHORTBOW),
MAGIC_SHORTBOW_U("Magic shortbow (u)", 80, 83.3f, ItemID.MAGIC_SHORTBOW_U),
RUNE_DART("Rune dart", 81, 18.8f, ItemID.RUNE_DART),
AMETHYST_ARROW("Amethyst arrow", 82, 13.5f, ItemID.AMETHYST_ARROW),
DRAGON_BOLTS("Dragon bolts", 84, 12, ItemID.DRAGON_BOLTS_UNF),
AMETHYST_JAVELIN("Amethyst javelin", 84, 13.5f, ItemID.AMETHYST_JAVELIN),
MAGIC_LONGBOW("Magic longbow", 85, 91.5f, ItemID.MAGIC_LONGBOW),
MAGIC_LONGBOW_U("Magic longbow (u)", 85, 91.5f, ItemID.MAGIC_LONGBOW_U),
MAGIC_SHIELD("Magic shield", 87, 183, ItemID.MAGIC_SHIELD),
AMETHYST_DART("Amethyst dart", 90, 21, ItemID.AMETHYST_DART),
DRAGON_ARROW("Dragon arrow", 90, 15, ItemID.DRAGON_ARROW),
REDWOOD_SHIELD("Redwood shield", 92, 216, ItemID.REDWOOD_SHIELD),
DRAGON_DART("Dragon dart", 95, 25, ItemID.DRAGON_DART),
;
private final String name;
private final int level;
private final float xp;
private final int icon;
}

View File

@@ -0,0 +1,113 @@
/*
* 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 SkillAction
{
ATTACK_POTION_3("Attack potion (3)", 3, 25, ItemID.ATTACK_POTION3),
GUAM_LEAF("Guam leaf", 3, 2.5f, ItemID.GUAM_LEAF),
MARRENTILL("Marrentill", 5, 3.8f, ItemID.MARRENTILL),
ANTIPOISON_3("Antipoison (3)", 5, 37.5f, ItemID.ANTIPOISON3),
RELICYMS_BALM_3("Relicym's balm (3)", 8, 40, ItemID.RELICYMS_BALM3),
TARROMIN("Tarromin", 11, 5, ItemID.TARROMIN),
STRENGTH_POTION_3("Strength potion (3)", 12, 50, ItemID.STRENGTH_POTION3),
SERUM_207_3("Serum 207 (3)", 15, 50, ItemID.SERUM_207_3),
GUTHIX_REST_3("Guthix rest (3)", 18, 59, ItemID.GUTHIX_REST3),
GUAM_TAR("Guam tar", 19, 30, ItemID.GUAM_TAR),
HARRALANDER("Harralander", 20, 6.3f, ItemID.HARRALANDER),
COMPOST_POTION_3("Compost potion (3)", 22, 60, ItemID.COMPOST_POTION3),
RESTORE_POTION_3("Restore potion (3)", 22, 62.5f, ItemID.RESTORE_POTION3),
RANARR_WEED("Ranarr weed", 25, 7.5f, ItemID.RANARR_WEED),
ENERGY_POTION_3("Energy potion (3)", 26, 67.5f, ItemID.ENERGY_POTION3),
TOADFLAX("Toadflax", 30, 8, ItemID.TOADFLAX),
DEFENCE_POTION_3("Defence potion (3)", 30, 75, ItemID.DEFENCE_POTION3),
MARRENTILL_TAR("Marrentill tar", 31, 42.5f, ItemID.MARRENTILL_TAR),
AGILITY_POTION_3("Agility potion (3)", 34, 80, ItemID.AGILITY_POTION3),
COMBAT_POTION_3("Combat potion (3)", 36, 84, ItemID.COMBAT_POTION3),
PRAYER_POTION_3("Prayer potion (3)", 38, 87.5f, ItemID.PRAYER_POTION3),
TARROMIN_TAR("Tarromin tar", 39, 55, ItemID.TARROMIN_TAR),
IRIT_LEAF("Irit leaf", 40, 8.8f, ItemID.IRIT_LEAF),
HARRALANDER_TAR("Harralander tar", 44, 72.5f, ItemID.HARRALANDER_TAR),
SUPER_ATTACK_3("Super attack (3)", 45, 100, ItemID.SUPER_ATTACK3),
SUPERANTIPOISON_3("Superantipoison (3)", 48, 106.3f, ItemID.SUPERANTIPOISON3),
AVANTOE("Avantoe", 48, 10, ItemID.AVANTOE),
FISHING_POTION_3("Fishing potion (3)", 50, 112.5f, ItemID.FISHING_POTION3),
SUPER_ENERGY_3("Super energy (3)", 52, 117.5f, ItemID.SUPER_ENERGY3),
HUNTER_POTION_3("Hunter potion (3)", 53, 120, ItemID.HUNTER_POTION3),
KWUARM("Kwuarm", 54, 11.3f, ItemID.KWUARM),
SUPER_STRENGTH_3("Super strength (3)", 55, 125, ItemID.SUPER_STRENGTH3),
MAGIC_ESSENCE_POTION_3("Magic essence potion (3)", 57, 130, ItemID.MAGIC_ESSENCE3),
SNAPDRAGON("Snapdragon", 59, 11.8f, ItemID.SNAPDRAGON),
WEAPON_POISON("Weapon poison", 60, 137.5f, ItemID.WEAPON_POISON),
SUPER_RESTORE_3("Super restore (3)", 63, 142.5f, ItemID.SUPER_RESTORE3),
CADANTINE("Cadantine", 65, 12.5f, ItemID.CADANTINE),
SANFEW_SERUM_3("Sanfew serum (3)", 65, 160, ItemID.SANFEW_SERUM3),
SUPER_DEFENCE_3("Super defence (3)", 66, 150, ItemID.SUPER_DEFENCE3),
LANTADYME("Lantadyme", 67, 13.1f, ItemID.LANTADYME),
ANTIDOTE_PLUS_3("Antidote+ (3)", 68, 155, ItemID.ANTIDOTE3),
ANTIFIRE_POTION_3("Antifire potion (3)", 69, 157.5f, ItemID.ANTIFIRE_POTION3),
DIVINE_SUPER_ATTACK_POTION_4("Divine super attack potion(4)", 70, 2, ItemID.DIVINE_SUPER_ATTACK_POTION4),
DIVINE_SUPER_DEFENCE_POTION_4("Divine super defence potion(4)", 70, 2, ItemID.DIVINE_SUPER_DEFENCE_POTION4),
DIVINE_SUPER_STRENGTH_POTION_4("Divine super strength potion(4)", 70, 2, ItemID.DIVINE_SUPER_STRENGTH_POTION4),
DWARF_WEED("Dwarf weed", 70, 13.8f, ItemID.DWARF_WEED),
RANGING_POTION_3("Ranging potion (3)", 72, 162.5f, ItemID.RANGING_POTION3),
WEAPON_POISON_PLUS("Weapon poison (+)", 73, 165, ItemID.WEAPON_POISON_5937),
DIVINE_RANGING_POTION_4("Divine ranging potion(4)", 74, 2, ItemID.DIVINE_RANGING_POTION4),
TORSTOL("Torstol", 75, 15, ItemID.TORSTOL),
MAGIC_POTION_3("Magic potion (3)", 76, 172.5f, ItemID.MAGIC_POTION3),
STAMINA_POTION_3("Stamina potion (3)", 77, 76.5f, ItemID.STAMINA_POTION3),
STAMINA_POTION_4("Stamina potion (4)", 77, 102, ItemID.STAMINA_POTION4),
DIVINE_MAGIC_POTION_4("Divine magic potion(4)", 78, 2, ItemID.DIVINE_MAGIC_POTION4),
ZAMORAK_BREW_3("Zamorak brew (3)", 78, 175, ItemID.ZAMORAK_BREW3),
ANTIDOTE_PLUS_PLUS_3("Antidote++ (3)", 79, 177.5f, ItemID.ANTIDOTE3_5954),
BASTION_POTION_3("Bastion potion (3)", 80, 155, ItemID.BASTION_POTION3),
BATTLEMAGE_POTION_3("Battlemage potion (3)", 80, 155, ItemID.BATTLEMAGE_POTION3),
SARADOMIN_BREW_3("Saradomin brew (3)", 81, 180, ItemID.SARADOMIN_BREW3),
WEAPON_POISON_PLUS_PLUS("Weapon poison (++)", 82, 190, ItemID.WEAPON_POISON_5940),
EXTENDED_ANTIFIRE_3("Extended antifire (3)", 84, 82.5f, ItemID.EXTENDED_ANTIFIRE3),
EXTENDED_ANTIFIRE_4("Extended antifire (4)", 84, 110, ItemID.EXTENDED_ANTIFIRE4),
DIVINE_BASTION_POTION_4("Divine bastion potion(4)", 86, 2, ItemID.DIVINE_BASTION_POTION4),
DIVINE_BATTLEMAGE_POTION_4("Divine battlemage potion(4)", 86, 2, ItemID.DIVINE_BATTLEMAGE_POTION4),
ANTIVENOM_3("Anti-venom(3)", 87, 90, ItemID.ANTIVENOM3),
ANTIVENOM_4("Anti-venom(4)", 87, 120, ItemID.ANTIVENOM4),
SUPER_COMBAT_POTION_4("Super combat potion(4)", 90, 150, ItemID.SUPER_COMBAT_POTION4),
SUPER_ANTIFIRE_4("Super antifire (4)", 92, 130, ItemID.SUPER_ANTIFIRE_POTION4),
ANTIVENOM_PLUS_4("Anti-venom+(4)", 94, 125, ItemID.ANTIVENOM4_12913),
DIVINE_SUPER_COMBAT_POTION_4("Divine super combat potion(4)", 97, 2, ItemID.DIVINE_SUPER_COMBAT_POTION4),
EXTENDED_SUPER_ANTIFIRE_3("Extended super antifire (3)", 98, 120, ItemID.SUPER_ANTIFIRE_POTION3),
EXTENDED_SUPER_ANTIFIRE_4("Extended super antifire (4)", 98, 160, ItemID.SUPER_ANTIFIRE_POTION4),
;
private final String name;
private final int level;
private final float xp;
private final int icon;
}

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 SkillAction
{
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

@@ -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.SpriteID;
@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;
}

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 SkillAction
{
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.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,13 +22,18 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.skillcalculator.beans;
package net.runelite.client.plugins.skillcalculator.skills;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
public class SkillData
@AllArgsConstructor
@Getter(onMethod_ = @Override)
public enum MiningBonus implements SkillBonus
{
private SkillDataEntry[] actions;
private SkillDataBonus[] bonuses;
}
PROSPECTOR_KIT("Prospector Kit (+2.5%)", 0.025f),
;
private final String name;
private final float value;
}

View File

@@ -0,0 +1,100 @@
/*
* 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 SkillAction
{
ENSOULED_GOBLIN_HEAD("Ensouled goblin head", 1, 130, ItemID.ENSOULED_GOBLIN_HEAD, true),
ENSOULED_MONKEY_HEAD("Ensouled monkey head", 1, 182, ItemID.ENSOULED_MONKEY_HEAD, true),
ENSOULED_IMP_HEAD("Ensouled imp head", 1, 286, ItemID.ENSOULED_IMP_HEAD, true),
ENSOULED_MINOTAUR_HEAD("Ensouled minotaur head", 1, 364, ItemID.ENSOULED_MINOTAUR_HEAD, true),
ENSOULED_SCORPION_HEAD("Ensouled scorpion head", 1, 454, ItemID.ENSOULED_SCORPION_HEAD, true),
ENSOULED_BEAR_HEAD("Ensouled bear head", 1, 480, ItemID.ENSOULED_BEAR_HEAD, true),
ENSOULED_UNICORN_HEAD("Ensouled unicorn head", 1, 494, ItemID.ENSOULED_UNICORN_HEAD, true),
ENSOULED_DOG_HEAD("Ensouled dog head", 1, 520, ItemID.ENSOULED_DOG_HEAD, true),
ENSOULED_CHAOS_DRUID_HEAD("Ensouled chaos druid head", 1, 584, ItemID.ENSOULED_CHAOS_DRUID_HEAD, true),
ENSOULED_GIANT_HEAD("Ensouled giant head", 1, 650, ItemID.ENSOULED_GIANT_HEAD, true),
ENSOULED_OGRE_HEAD("Ensouled ogre head", 1, 716, ItemID.ENSOULED_OGRE_HEAD, true),
ENSOULED_ELF_HEAD("Ensouled elf head", 1, 754, ItemID.ENSOULED_ELF_HEAD, true),
ENSOULED_TROLL_HEAD("Ensouled troll head", 1, 780, ItemID.ENSOULED_TROLL_HEAD, true),
ENSOULED_HORROR_HEAD("Ensouled horror head", 1, 832, ItemID.ENSOULED_HORROR_HEAD, true),
ENSOULED_KALPHITE_HEAD("Ensouled kalphite head", 1, 884, ItemID.ENSOULED_KALPHITE_HEAD, true),
ENSOULED_DAGANNOTH_HEAD("Ensouled dagannoth head", 1, 936, ItemID.ENSOULED_DAGANNOTH_HEAD, true),
ENSOULED_BLOODVELD_HEAD("Ensouled bloodveld head", 1, 1040, ItemID.ENSOULED_BLOODVELD_HEAD, true),
ENSOULED_TZHAAR_HEAD("Ensouled tzhaar head", 1, 1104, ItemID.ENSOULED_TZHAAR_HEAD, true),
ENSOULED_DEMON_HEAD("Ensouled demon head", 1, 1170, ItemID.ENSOULED_DEMON_HEAD, true),
ENSOULED_AVIANSIE_HEAD("Ensouled aviansie head", 1, 1234, ItemID.ENSOULED_AVIANSIE_HEAD, true),
ENSOULED_ABYSSAL_HEAD("Ensouled abyssal head", 1, 1300, ItemID.ENSOULED_ABYSSAL_HEAD, true),
ENSOULED_DRAGON_HEAD("Ensouled dragon head", 1, 1560, ItemID.ENSOULED_DRAGON_HEAD, true),
FIENDISH_ASHES("Fiendish ashes", 1, 10, ItemID.FIENDISH_ASHES, true),
VILE_ASHES("Vile ashes", 1, 25, ItemID.VILE_ASHES, true),
MALICIOUS_ASHES("Malicious ashes", 1, 65, ItemID.MALICIOUS_ASHES, true),
ABYSSAL_ASHES("Abyssal ashes", 1, 85, ItemID.ABYSSAL_ASHES, true),
INFERNAL_ASHES("Infernal ashes", 1, 110, ItemID.INFERNAL_ASHES, true),
BONES("Bones", 1, 4.5f, ItemID.BONES, false),
WOLF_BONES("Wolf bones", 1, 4.5f, ItemID.WOLF_BONES, false),
LOAR_REMAINS("Loar remains", 1, 33, ItemID.LOAR_REMAINS, false),
BURNT_BONES("Burnt bones", 1, 4.5f, ItemID.BURNT_BONES, false),
MONKEY_BONES("Monkey bones", 1, 5, ItemID.MONKEY_BONES, false),
BAT_BONES("Bat bones", 1, 5.3f, ItemID.BAT_BONES, false),
JOGRE_BONES("Jogre bones", 1, 15, ItemID.JOGRE_BONES, false),
BIG_BONES("Big bones", 1, 15, ItemID.BIG_BONES, false),
ZOGRE_BONES("Zogre bones", 1, 22.5f, ItemID.ZOGRE_BONES, false),
SHAIKAHAN_BONES("Shaikahan bones", 1, 25, ItemID.SHAIKAHAN_BONES, false),
BABYDRAGON_BONES("Babydragon bones", 1, 30, ItemID.BABYDRAGON_BONES, false),
PHRIN_REMAINS("Phrin remains", 1, 46.5f, ItemID.PHRIN_REMAINS, false),
WYRM_BONES("Wyrm bones", 1, 50, ItemID.WYRM_BONES, false),
RIYL_REMAINS("Riyl remains", 1, 59.5f, ItemID.RIYL_REMAINS, false),
WYVERN_BONES("Wyvern bones", 1, 72, ItemID.WYVERN_BONES, false),
DRAGON_BONES("Dragon bones", 1, 72, ItemID.DRAGON_BONES, false),
DRAKE_BONES("Drake bones", 1, 80, ItemID.DRAKE_BONES, false),
ASYN_REMAINS("Asyn remains", 1, 82.5f, ItemID.ASYN_REMAINS, false),
FAYRG_BONES("Fayrg bones", 1, 84, ItemID.FAYRG_BONES, false),
FIYR_REMAINS("Fiyr remains", 1, 84, ItemID.FIYR_REMAINS, false),
LAVA_DRAGON_BONES("Lava dragon bones", 1, 85, ItemID.LAVA_DRAGON_BONES, false),
RAURG_BONES("Raurg bones", 1, 96, ItemID.RAURG_BONES, false),
HYDRA_BONES("Hydra bones", 1, 110, ItemID.HYDRA_BONES, false),
DAGANNOTH_BONES("Dagannoth bones", 1, 125, ItemID.DAGANNOTH_BONES, false),
OURG_BONES("Ourg bones", 1, 140, ItemID.OURG_BONES, false),
URIUM_REMAINS("Urium remains", 1, 120, ItemID.URIUM_REMAINS, false),
GUPPY("Guppy", 1, 4, ItemID.GUPPY, false),
CAVEFISH("Cavefish", 1, 7, ItemID.CAVEFISH, false),
TETRA("Tetra", 1, 10, ItemID.TETRA, false),
CATFISH("Catfish", 1, 16, ItemID.CATFISH, false),
SUPERIOR_DRAGON_BONES("Superior dragon bones", 70, 150, ItemID.SUPERIOR_DRAGON_BONES, false),
;
private final String name;
private final int level;
private final float xp;
private final int icon;
private final boolean ignoreBonus;
}

View File

@@ -0,0 +1,42 @@
/*
* 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),
;
private final String name;
private final float value;
}

View File

@@ -0,0 +1,78 @@
/*
* 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 SkillAction
{
AIR_TIARA("Air tiara", 1, 25, ItemID.AIR_TIARA, true),
MIND_TIARA("Mind tiara", 1, 27.5f, ItemID.MIND_TIARA, true),
WATER_TIARA("Water tiara", 1, 30, ItemID.WATER_TIARA, true),
EARTH_TIARA("Earth tiara", 1, 32.5f, ItemID.EARTH_TIARA, true),
FIRE_TIARA("Fire tiara", 1, 35, ItemID.FIRE_TIARA, true),
BODY_TIARA("Body tiara", 1, 37.5f, ItemID.BODY_TIARA, true),
COSMIC_TIARA("Cosmic tiara", 1, 40, ItemID.COSMIC_TIARA, true),
CHAOS_TIARA("Chaos tiara", 1, 42.5f, ItemID.CHAOS_TIARA, true),
NATURE_TIARA("Nature tiara", 1, 45, ItemID.NATURE_TIARA, true),
LAW_TIARA("Law tiara", 1, 47.5f, ItemID.LAW_TIARA, true),
DEATH_TIARA("Death tiara", 1, 50, ItemID.DEATH_TIARA, true),
WRATH_TIARA("Wrath tiara", 1, 52.5f, ItemID.WRATH_TIARA, true),
AIR_RUNE("Air rune", 1, 5, ItemID.AIR_RUNE, false),
MIND_RUNE("Mind rune", 2, 5.5f, ItemID.MIND_RUNE, false),
MIND_CORE("Mind core", 2, 55, ItemID.MIND_CORE, false),
WATER_RUNE("Water rune", 5, 6, ItemID.WATER_RUNE, false),
MIST_RUNE("Mist rune", 6, 8.5f, ItemID.MIST_RUNE, false),
EARTH_RUNE("Earth rune", 9, 6.5f, ItemID.EARTH_RUNE, false),
DUST_RUNE("Dust rune", 10, 9, ItemID.DUST_RUNE, false),
MUD_RUNE("Mud rune", 13, 9.5f, ItemID.MUD_RUNE, false),
FIRE_RUNE("Fire rune", 14, 7, ItemID.FIRE_RUNE, false),
SMOKE_RUNE("Smoke rune", 15, 9.5f, ItemID.SMOKE_RUNE, false),
STEAM_RUNE("Steam rune", 19, 10, ItemID.STEAM_RUNE, false),
BODY_RUNE("Body rune", 20, 7.5f, ItemID.BODY_RUNE, false),
BODY_CORE("Body core", 20, 75, ItemID.BODY_CORE, false),
LAVA_RUNE("Lava rune", 23, 10.5f, ItemID.LAVA_RUNE, false),
COSMIC_RUNE("Cosmic rune", 27, 8, ItemID.COSMIC_RUNE, false),
CHAOS_RUNE("Chaos rune", 35, 8.5f, ItemID.CHAOS_RUNE, false),
CHAOS_CORE("Chaos core", 35, 85, ItemID.CHAOS_CORE, false),
ASTRAL_RUNE("Astral rune", 40, 8.7f, ItemID.ASTRAL_RUNE, false),
NATURE_RUNE("Nature rune", 44, 9, ItemID.NATURE_RUNE, false),
LAW_RUNE("Law rune", 54, 9.5f, ItemID.LAW_RUNE, false),
DEATH_RUNE("Death rune", 65, 10, ItemID.DEATH_RUNE, false),
BLOOD_RUNE("Blood rune", 77, 24.425f, ItemID.BLOOD_RUNE, true),
SOUL_RUNE("Soul rune", 90, 30.325f, ItemID.SOUL_RUNE, true),
WRATH_RUNE("Wrath rune", 95, 8, ItemID.WRATH_RUNE, false),
;
private final String name;
private final int level;
private final float xp;
private final int icon;
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,93 @@
/*
* 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 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.
*
* @return The name of this skill action.
*/
String getName();
/**
* 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,222 @@
/*
* 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 SkillAction
{
BRONZE_BAR("Bronze bar", 1, 6.3f, ItemID.BRONZE_BAR),
BRONZE_AXE("Bronze axe", 1, 12.5f, ItemID.BRONZE_AXE),
BRONZE_DAGGER("Bronze dagger", 1, 12.5f, ItemID.BRONZE_DAGGER),
BRONZE_MACE("Bronze mace", 2, 12.5f, ItemID.BRONZE_MACE),
BRONZE_MED_HELM("Bronze med helm", 3, 12.5f, ItemID.BRONZE_MED_HELM),
BRONZE_BOLTS_UNF("Bronze bolts (unf)", 3, 12.5f, ItemID.BRONZE_BOLTS_UNF),
BRONZE_NAILS("Bronze nails", 4, 12.5f, ItemID.BRONZE_NAILS),
BRONZE_SWORD("Bronze sword", 4, 12.5f, ItemID.BRONZE_SWORD),
BRONZE_WIRE("Bronze wire", 4, 12.5f, ItemID.BRONZE_WIRE),
BRONZE_DART_TIP("Bronze dart tip", 4, 12.5f, ItemID.BRONZE_DART_TIP),
BRONZE_ARROWTIPS("Bronze arrowtips", 5, 12.5f, ItemID.BRONZE_ARROWTIPS),
BRONZE_SCIMITAR("Bronze scimitar", 5, 25, ItemID.BRONZE_SCIMITAR),
BRONZE_HASTA("Bronze hasta", 5, 25, ItemID.BRONZE_HASTA),
BRONZE_SPEAR("Bronze spear", 5, 25, ItemID.BRONZE_SPEAR),
BRONZE_JAVELIN_HEADS("Bronze javelin heads", 6, 12.5f, ItemID.BRONZE_JAVELIN_HEADS),
BRONZE_LONGSWORD("Bronze longsword", 6, 25, ItemID.BRONZE_LONGSWORD),
BRONZE_LIMBS("Bronze limbs", 6, 12.5f, ItemID.BRONZE_LIMBS),
BRONZE_KNIFE("Bronze knife", 7, 12.5f, ItemID.BRONZE_KNIFE),
BRONZE_FULL_HELM("Bronze full helm", 7, 25, ItemID.BRONZE_FULL_HELM),
BRONZE_SQ_SHIELD("Bronze sq shield", 8, 25, ItemID.BRONZE_SQ_SHIELD),
BRONZE_WARHAMMER("Bronze warhammer", 9, 37.5f, ItemID.BRONZE_WARHAMMER),
BRONZE_BATTLEAXE("Bronze battleaxe", 10, 37.5f, ItemID.BRONZE_BATTLEAXE),
BRONZE_CHAINBODY("Bronze chainbody", 11, 37.5f, ItemID.BRONZE_CHAINBODY),
BRONZE_KITESHIELD("Bronze kiteshield", 12, 37.5f, ItemID.BRONZE_KITESHIELD),
BRONZE_CLAWS("Bronze claws", 13, 25, ItemID.BRONZE_CLAWS),
BRONZE_2H_SWORD("Bronze 2h sword", 14, 37.5f, ItemID.BRONZE_2H_SWORD),
BARRONITE_DEPOSITS("Barronite deposits", 14, 30, ItemID.BARRONITE_DEPOSIT),
IRON_BAR("Iron bar", 15, 12.5f, ItemID.IRON_BAR),
IRON_DAGGER("Iron dagger", 15, 25, ItemID.IRON_DAGGER),
IRON_AXE("Iron axe", 16, 25, ItemID.IRON_AXE),
BRONZE_PLATELEGS("Bronze platelegs", 16, 37.5f, ItemID.BRONZE_PLATELEGS),
BRONZE_PLATESKIRT("Bronze plateskirt", 16, 37.5f, ItemID.BRONZE_PLATESKIRT),
IRON_SPIT("Iron spit", 17, 25, ItemID.IRON_SPIT),
IRON_MACE("Iron mace", 17, 25, ItemID.IRON_MACE),
IRON_BOLTS_UNF("Iron bolts (unf)", 18, 25, ItemID.IRON_BOLTS_UNF),
BRONZE_PLATEBODY("Bronze platebody", 18, 62.5f, ItemID.BRONZE_PLATEBODY),
IRON_MED_HELM("Iron med helm", 18, 25, ItemID.IRON_MED_HELM),
IRON_NAILS("Iron nails", 19, 25, ItemID.IRON_NAILS),
IRON_DART_TIP("Iron dart tip", 19, 25, ItemID.IRON_DART_TIP),
IRON_SWORD("Iron sword", 19, 25, ItemID.IRON_SWORD),
SILVER_BAR("Silver bar", 20, 13.7f, ItemID.SILVER_BAR),
IRON_ARROWTIPS("Iron arrowtips", 20, 25, ItemID.IRON_ARROWTIPS),
IRON_SCIMITAR("Iron scimitar", 20, 50, ItemID.IRON_SCIMITAR),
IRON_HASTA("Iron hasta", 20, 50, ItemID.IRON_HASTA),
IRON_SPEAR("Iron spear", 20, 50, ItemID.IRON_SPEAR),
IRON_LONGSWORD("Iron longsword", 21, 50, ItemID.IRON_LONGSWORD),
IRON_JAVELIN_HEADS("Iron javelin heads", 21, 25, ItemID.IRON_JAVELIN_HEADS),
IRON_FULL_HELM("Iron full helm", 22, 50, ItemID.IRON_FULL_HELM),
IRON_KNIFE("Iron knife", 22, 25, ItemID.IRON_KNIFE),
IRON_LIMBS("Iron limbs", 23, 25, ItemID.IRON_LIMBS),
IRON_SQ_SHIELD("Iron sq shield", 23, 50, ItemID.IRON_SQ_SHIELD),
IRON_WARHAMMER("Iron warhammer", 24, 75, ItemID.IRON_WARHAMMER),
IRON_BATTLEAXE("Iron battleaxe", 25, 75, ItemID.IRON_BATTLEAXE),
OIL_LANTERN_FRAME("Oil lantern frame", 26, 25, ItemID.OIL_LANTERN_FRAME),
IRON_CHAINBODY("Iron chainbody", 26, 75, ItemID.IRON_CHAINBODY),
IRON_KITESHIELD("Iron kiteshield", 27, 75, ItemID.IRON_KITESHIELD),
IRON_CLAWS("Iron claws", 28, 50, ItemID.IRON_CLAWS),
IRON_2H_SWORD("Iron 2h sword", 29, 75, ItemID.IRON_2H_SWORD),
STEEL_DAGGER("Steel dagger", 30, 37.5f, ItemID.STEEL_DAGGER),
STEEL_BAR("Steel bar", 30, 17.5f, ItemID.STEEL_BAR),
IRON_PLATESKIRT("Iron plateskirt", 31, 75, ItemID.IRON_PLATESKIRT),
IRON_PLATELEGS("Iron platelegs", 31, 75, ItemID.IRON_PLATELEGS),
STEEL_AXE("Steel axe", 31, 37.5f, ItemID.STEEL_AXE),
STEEL_MACE("Steel mace", 32, 37.5f, ItemID.STEEL_MACE),
IRON_PLATEBODY("Iron platebody", 33, 125, ItemID.IRON_PLATEBODY),
STEEL_MED_HELM("Steel med helm", 33, 37.5f, ItemID.STEEL_MED_HELM),
STEEL_BOLTS_UNF("Steel bolts (unf)", 33, 37.5f, ItemID.STEEL_BOLTS_UNF),
STEEL_DART_TIP("Steel dart tip", 34, 37.5f, ItemID.STEEL_DART_TIP),
STEEL_NAILS("Steel nails", 34, 37.5f, ItemID.STEEL_NAILS),
STEEL_SWORD("Steel sword", 34, 37.5f, ItemID.STEEL_SWORD),
CANNONBALL("Cannonball", 35, 25.6f, ItemID.CANNONBALL),
STEEL_SCIMITAR("Steel scimitar", 35, 75, ItemID.STEEL_SCIMITAR),
STEEL_ARROWTIPS("Steel arrowtips", 35, 37.5f, ItemID.STEEL_ARROWTIPS),
STEEL_HASTA("Steel hasta", 35, 75, ItemID.STEEL_HASTA),
STEEL_SPEAR("Steel spear", 35, 75, ItemID.STEEL_SPEAR),
STEEL_LIMBS("Steel limbs", 36, 37.5f, ItemID.STEEL_LIMBS),
STEEL_STUDS("Steel studs", 36, 37.5f, ItemID.STEEL_STUDS),
STEEL_LONGSWORD("Steel longsword", 36, 75, ItemID.STEEL_LONGSWORD),
STEEL_JAVELIN_HEADS("Steel javelin heads", 36, 37.5f, ItemID.STEEL_JAVELIN_HEADS),
STEEL_KNIFE("Steel knife", 37, 37.5f, ItemID.STEEL_KNIFE),
STEEL_FULL_HELM("Steel full helm", 37, 75, ItemID.STEEL_FULL_HELM),
STEEL_SQ_SHIELD("Steel sq shield", 38, 75, ItemID.STEEL_SQ_SHIELD),
STEEL_WARHAMMER("Steel warhammer", 39, 112.5f, ItemID.STEEL_WARHAMMER),
STEEL_BATTLEAXE("Steel battleaxe", 40, 112.5f, ItemID.STEEL_BATTLEAXE),
GOLD_BAR_GOLDSMITH_GAUNTLETS("Gold bar (Goldsmith gauntlets)", 40, 56.2f, ItemID.GOLD_BAR),
GOLD_BAR("Gold bar", 40, 22.5f, ItemID.GOLD_BAR),
STEEL_CHAINBODY("Steel chainbody", 41, 112.5f, ItemID.STEEL_CHAINBODY),
STEEL_KITESHIELD("Steel kiteshield", 42, 112.5f, ItemID.STEEL_KITESHIELD),
STEEL_CLAWS("Steel claws", 43, 75, ItemID.STEEL_CLAWS),
STEEL_2H_SWORD("Steel 2h sword", 44, 112.5f, ItemID.STEEL_2H_SWORD),
STEEL_PLATELEGS("Steel platelegs", 46, 112.5f, ItemID.STEEL_PLATELEGS),
STEEL_PLATESKIRT("Steel plateskirt", 46, 112.5f, ItemID.STEEL_PLATESKIRT),
STEEL_PLATEBODY("Steel platebody", 48, 187.5f, ItemID.STEEL_PLATEBODY),
BULLSEYE_LANTERN_UNF("Bullseye lantern (unf)", 49, 37, ItemID.BULLSEYE_LANTERN_UNF),
MITHRIL_DAGGER("Mithril dagger", 50, 50, ItemID.MITHRIL_DAGGER),
MITHRIL_BAR("Mithril bar", 50, 30, ItemID.MITHRIL_BAR),
MITHRIL_AXE("Mithril axe", 51, 50, ItemID.MITHRIL_AXE),
MITHRIL_MACE("Mithril mace", 52, 50, ItemID.MITHRIL_MACE),
MITHRIL_MED_HELM("Mithril med helm", 53, 50, ItemID.MITHRIL_MED_HELM),
MITHRIL_BOLTS_UNF("Mithril bolts (unf)", 53, 50, ItemID.MITHRIL_BOLTS_UNF),
MITHRIL_SWORD("Mithril sword", 54, 50, ItemID.MITHRIL_SWORD),
MITHRIL_DART_TIP("Mithril dart tip", 54, 50, ItemID.MITHRIL_DART_TIP),
MITHRIL_NAILS("Mithril nails", 54, 50, ItemID.MITHRIL_NAILS),
MITHRIL_ARROWTIPS("Mithril arrowtips", 55, 50, ItemID.MITHRIL_ARROWTIPS),
MITHRIL_SCIMITAR("Mithril scimitar", 55, 100, ItemID.MITHRIL_SCIMITAR),
MITHRIL_HASTA("Mithril hasta", 55, 100, ItemID.MITHRIL_HASTA),
MITHRIL_SPEAR("Mithril spear", 55, 100, ItemID.MITHRIL_SPEAR),
MITHRIL_LONGSWORD("Mithril longsword", 56, 100, ItemID.MITHRIL_LONGSWORD),
MITHRIL_JAVELIN_HEADS("Mithril javelin heads", 56, 50, ItemID.MITHRIL_JAVELIN_HEADS),
MITHRIL_LIMBS("Mithril limbs", 56, 50, ItemID.MITHRIL_LIMBS),
MITHRIL_FULL_HELM("Mithril full helm", 57, 100, ItemID.MITHRIL_FULL_HELM),
MITHRIL_KNIFE("Mithril knife", 57, 50, ItemID.MITHRIL_KNIFE),
MITHRIL_SQ_SHIELD("Mithril sq shield", 58, 100, ItemID.MITHRIL_SQ_SHIELD),
MITH_GRAPPLE_TIP("Mith grapple tip", 59, 50, ItemID.MITH_GRAPPLE_TIP),
MITHRIL_WARHAMMER("Mithril warhammer", 59, 150, ItemID.MITHRIL_WARHAMMER),
DRAGON_SQ_SHIELD("Dragon sq shield", 60, 75, ItemID.DRAGON_SQ_SHIELD),
MITHRIL_BATTLEAXE("Mithril battleaxe", 60, 150, ItemID.MITHRIL_BATTLEAXE),
MITHRIL_CHAINBODY("Mithril chainbody", 61, 150, ItemID.MITHRIL_CHAINBODY),
MITHRIL_KITESHIELD("Mithril kiteshield", 62, 150, ItemID.MITHRIL_KITESHIELD),
MITHRIL_CLAWS("Mithril claws", 63, 100, ItemID.MITHRIL_CLAWS),
MITHRIL_2H_SWORD("Mithril 2h sword", 64, 150, ItemID.MITHRIL_2H_SWORD),
MITHRIL_PLATESKIRT("Mithril plateskirt", 66, 150, ItemID.MITHRIL_PLATESKIRT),
MITHRIL_PLATELEGS("Mithril platelegs", 66, 150, ItemID.MITHRIL_PLATELEGS),
MITHRIL_PLATEBODY("Mithril platebody", 68, 250, ItemID.MITHRIL_PLATEBODY),
ADAMANT_DAGGER("Adamant dagger", 70, 62.5f, ItemID.ADAMANT_DAGGER),
ADAMANTITE_BAR("Adamantite bar", 70, 37.5f, ItemID.ADAMANTITE_BAR),
ADAMANT_AXE("Adamant axe", 71, 62.5f, ItemID.ADAMANT_AXE),
ADAMANT_MACE("Adamant mace", 72, 62.5f, ItemID.ADAMANT_MACE),
ADAMANT_BOLTS_UNF("Adamant bolts (unf)", 73, 62.5f, ItemID.ADAMANT_BOLTSUNF),
ADAMANT_MED_HELM("Adamant med helm", 73, 62.5f, ItemID.ADAMANT_MED_HELM),
ADAMANT_DART_TIP("Adamant dart tip", 74, 62.5f, ItemID.ADAMANT_DART_TIP),
ADAMANT_SWORD("Adamant sword", 74, 62.5f, ItemID.ADAMANT_SWORD),
ADAMANTITE_NAILS("Adamantite nails", 74, 62.5f, ItemID.ADAMANTITE_NAILS),
ADAMANT_ARROWTIPS("Adamant arrowtips", 75, 62.5f, ItemID.ADAMANT_ARROWTIPS),
ADAMANT_SCIMITAR("Adamant scimitar", 75, 125, ItemID.ADAMANT_SCIMITAR),
ADAMANT_HASTA("Adamant hasta", 75, 125, ItemID.ADAMANT_HASTA),
ADAMANT_SPEAR("Adamant spear", 75, 125, ItemID.ADAMANT_SPEAR),
ADAMANTITE_LIMBS("Adamantite limbs", 76, 62.5f, ItemID.ADAMANTITE_LIMBS),
ADAMANT_LONGSWORD("Adamant longsword", 76, 125, ItemID.ADAMANT_LONGSWORD),
ADAMANT_JAVELIN_HEADS("Adamant javelin heads", 76, 62.5f, ItemID.ADAMANT_JAVELIN_HEADS),
ADAMANT_FULL_HELM("Adamant full helm", 77, 125, ItemID.ADAMANT_FULL_HELM),
ADAMANT_KNIFE("Adamant knife", 77, 62.5f, ItemID.ADAMANT_KNIFE),
ADAMANT_SQ_SHIELD("Adamant sq shield", 78, 125, ItemID.ADAMANT_SQ_SHIELD),
ADAMANT_WARHAMMER("Adamant warhammer", 79, 187.5f, ItemID.ADAMANT_WARHAMMER),
ADAMANT_BATTLEAXE("Adamant battleaxe", 80, 187.5f, ItemID.ADAMANT_BATTLEAXE),
ADAMANT_CHAINBODY("Adamant chainbody", 81, 187.5f, ItemID.ADAMANT_CHAINBODY),
ADAMANT_KITESHIELD("Adamant kiteshield", 82, 187.5f, ItemID.ADAMANT_KITESHIELD),
ADAMANT_CLAWS("Adamant claws", 83, 125, ItemID.ADAMANT_CLAWS),
ADAMANT_2H_SWORD("Adamant 2h sword", 84, 187.5f, ItemID.ADAMANT_2H_SWORD),
RUNITE_BAR("Runite bar", 85, 50, ItemID.RUNITE_BAR),
RUNE_DAGGER("Rune dagger", 85, 75, ItemID.RUNE_DAGGER),
RUNE_AXE("Rune axe", 86, 75, ItemID.RUNE_AXE),
ADAMANT_PLATESKIRT("Adamant plateskirt", 86, 187.5f, ItemID.ADAMANT_PLATESKIRT),
ADAMANT_PLATELEGS("Adamant platelegs", 86, 187.5f, ItemID.ADAMANT_PLATELEGS),
RUNE_MACE("Rune mace", 87, 75, ItemID.RUNE_MACE),
RUNITE_BOLTS_UNF("Runite bolts (unf)", 88, 75, ItemID.RUNITE_BOLTS_UNF),
RUNE_MED_HELM("Rune med helm", 88, 75, ItemID.RUNE_MED_HELM),
ADAMANT_PLATEBODY("Adamant platebody", 88, 312.5f, ItemID.ADAMANT_PLATEBODY),
RUNE_SWORD("Rune sword", 89, 75, ItemID.RUNE_SWORD),
RUNE_NAILS("Rune nails", 89, 75, ItemID.RUNE_NAILS),
RUNE_DART_TIP("Rune dart tip", 89, 75, ItemID.RUNE_DART_TIP),
RUNE_ARROWTIPS("Rune arrowtips", 90, 75, ItemID.RUNE_ARROWTIPS),
RUNE_SCIMITAR("Rune scimitar", 90, 150, ItemID.RUNE_SCIMITAR),
RUNE_HASTA("Rune hasta", 90, 150, ItemID.RUNE_HASTA),
RUNE_SPEAR("Rune spear", 90, 150, ItemID.RUNE_SPEAR),
DRAGONFIRE_SHIELD("Dragonfire shield", 90, 2000, ItemID.DRAGONFIRE_SHIELD),
RUNE_LONGSWORD("Rune longsword", 91, 150, ItemID.RUNE_LONGSWORD),
RUNE_JAVELIN_HEADS("Rune javelin heads", 91, 75, ItemID.RUNE_JAVELIN_HEADS),
RUNITE_LIMBS("Runite limbs", 91, 75, ItemID.RUNITE_LIMBS),
RUNE_KNIFE("Rune knife", 92, 75, ItemID.RUNE_KNIFE),
RUNE_FULL_HELM("Rune full helm", 92, 150, ItemID.RUNE_FULL_HELM),
RUNE_SQ_SHIELD("Rune sq shield", 93, 150, ItemID.RUNE_SQ_SHIELD),
RUNE_WARHAMMER("Rune warhammer", 94, 225, ItemID.RUNE_WARHAMMER),
RUNE_BATTLEAXE("Rune battleaxe", 95, 225, ItemID.RUNE_BATTLEAXE),
RUNE_CHAINBODY("Rune chainbody", 96, 225, ItemID.RUNE_CHAINBODY),
RUNE_KITESHIELD("Rune kiteshield", 97, 225, ItemID.RUNE_KITESHIELD),
RUNE_CLAWS("Rune claws", 98, 150, ItemID.RUNE_CLAWS),
RUNE_PLATEBODY("Rune platebody", 99, 375, ItemID.RUNE_PLATEBODY),
RUNE_PLATESKIRT("Rune plateskirt", 99, 225, ItemID.RUNE_PLATESKIRT),
RUNE_PLATELEGS("Rune platelegs", 99, 225, ItemID.RUNE_PLATELEGS),
RUNE_2H_SWORD("Rune 2h sword", 99, 225, ItemID.RUNE_2H_SWORD),
;
private final String name;
private final int level;
private final float xp;
private final int icon;
}

View File

@@ -0,0 +1,85 @@
/*
* 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 SkillAction
{
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),
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),
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),
HERO("Hero", 80, 275, ItemID.HERO),
VYRE("Vyre", 82, 306.9f, ItemID.VYRE),
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 SkillAction
{
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

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

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
* Copyright (c) 2021, Jordan Atwood <nightfirecat@protonmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -24,36 +24,28 @@
*/
package net.runelite.client.plugins.skillcalculator;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import net.runelite.client.plugins.skillcalculator.beans.SkillData;
import net.runelite.client.plugins.skillcalculator.skills.SkillAction;
import static org.junit.Assert.fail;
import org.junit.Test;
class CacheSkillData
public class CalculatorTypeTest
{
private final Map<String, SkillData> cache = new HashMap<>();
SkillData getSkillData(String dataFile)
@Test
public void skillActionsInLevelOrder()
{
if (cache.containsKey(dataFile))
for (final CalculatorType calculatorType : CalculatorType.values())
{
return cache.get(dataFile);
}
int level = 1;
try (InputStream skillDataFile = SkillCalculatorPlugin.class.getResourceAsStream(dataFile))
{
SkillData skillData = new Gson().fromJson(new InputStreamReader(skillDataFile, StandardCharsets.UTF_8), SkillData.class);
for (final SkillAction skillAction : calculatorType.getSkillActions())
{
if (skillAction.getLevel() < level)
{
fail("Skill action " + skillAction + " is out of order for " + calculatorType.getSkill().getName());
}
cache.put(dataFile, skillData);
return skillData;
}
catch (IOException e)
{
throw new RuntimeException(e);
level = skillAction.getLevel();
}
}
}
}
}