Implement Skill Calculator plug-in
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import net.runelite.client.plugins.skillcalculator.beans.SkillData;
|
||||
|
||||
class CacheSkillData
|
||||
{
|
||||
private final Map<String, SkillData> cache = new HashMap<>();
|
||||
|
||||
SkillData getSkillData(String dataFile)
|
||||
{
|
||||
if (cache.containsKey(dataFile))
|
||||
{
|
||||
return cache.get(dataFile);
|
||||
}
|
||||
|
||||
InputStream skillDataFile = SkillCalculatorPlugin.class.getResourceAsStream(dataFile);
|
||||
SkillData skillData = new Gson().fromJson(new InputStreamReader(skillDataFile), SkillData.class);
|
||||
|
||||
cache.put(dataFile, skillData);
|
||||
return skillData;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import net.runelite.api.Skill;
|
||||
|
||||
@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");
|
||||
|
||||
private final Skill skill;
|
||||
private final String dataFile;
|
||||
}
|
||||
@@ -0,0 +1,295 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Experience;
|
||||
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;
|
||||
|
||||
class SkillCalculator extends JPanel
|
||||
{
|
||||
private Client client;
|
||||
private SkillData skillData;
|
||||
private List<UIActionSlot> uiActionSlots = new ArrayList<>();
|
||||
private UICalculatorInputArea uiInput;
|
||||
|
||||
private CacheSkillData cacheSkillData = new CacheSkillData();
|
||||
|
||||
static SpriteManager spriteManager;
|
||||
static ItemManager itemManager;
|
||||
|
||||
private UICombinedActionSlot combinedActionSlot = new UICombinedActionSlot();
|
||||
private ArrayList<UIActionSlot> combinedActionSlots = new ArrayList<>();
|
||||
|
||||
private int currentLevel = 1;
|
||||
private int currentXP = Experience.getXpForLevel(currentLevel);
|
||||
private int targetLevel = currentLevel + 1;
|
||||
private int targetXP = Experience.getXpForLevel(targetLevel);
|
||||
private float xpFactor = 1.0f;
|
||||
|
||||
private static int MAX_XP = Experience.getXpForLevel(Experience.MAX_VIRT_LEVEL);
|
||||
|
||||
private static DecimalFormat XP_FORMAT = new DecimalFormat("#.#");
|
||||
|
||||
SkillCalculator(Client client, UICalculatorInputArea uiInput)
|
||||
{
|
||||
this.client = client;
|
||||
this.uiInput = uiInput;
|
||||
|
||||
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
|
||||
setBorder(BorderFactory.createLineBorder(getBackground().brighter()));
|
||||
|
||||
// Register listeners on the input fields..
|
||||
uiInput.uiFieldCurrentLevel.addActionListener(e -> onFieldCurrentLevelUpdated());
|
||||
uiInput.uiFieldCurrentXP.addActionListener(e -> onFieldCurrentXPUpdated());
|
||||
uiInput.uiFieldTargetLevel.addActionListener(e -> onFieldTargetLevelUpdated());
|
||||
uiInput.uiFieldTargetXP.addActionListener(e -> onFieldTargetXPUpdated());
|
||||
}
|
||||
|
||||
void openCalculator(CalculatorType calculatorType)
|
||||
{
|
||||
// Load the skill data.
|
||||
skillData = cacheSkillData.getSkillData(calculatorType.getDataFile());
|
||||
|
||||
// Reset the XP factor, removing bonuses.
|
||||
xpFactor = 1.0f;
|
||||
|
||||
// Update internal skill/XP values.
|
||||
currentXP = client.getSkillExperience(calculatorType.getSkill());
|
||||
currentLevel = Experience.getLevelForXp(currentXP);
|
||||
targetLevel = enforceSkillBounds(currentLevel + 1);
|
||||
targetXP = Experience.getXpForLevel(targetLevel);
|
||||
|
||||
// Remove all components (action slots) from this panel.
|
||||
removeAll();
|
||||
|
||||
// Add in checkboxes for available skill bonuses.
|
||||
renderBonusOptions();
|
||||
|
||||
// Add the combined action slot.
|
||||
add(combinedActionSlot);
|
||||
|
||||
// Create action slots for the skill actions.
|
||||
renderActionSlots();
|
||||
|
||||
// Update the input fields.
|
||||
updateInputFields();
|
||||
}
|
||||
|
||||
private void updateCombinedAction()
|
||||
{
|
||||
int size = combinedActionSlots.size();
|
||||
if (size > 1)
|
||||
{
|
||||
combinedActionSlot.setTitle(size + " actions selected");
|
||||
}
|
||||
else if (size == 1)
|
||||
{
|
||||
combinedActionSlot.setTitle("1 action selected");
|
||||
}
|
||||
else
|
||||
{
|
||||
combinedActionSlot.setTitle("No action selected");
|
||||
combinedActionSlot.setText("Shift-click to select multiple");
|
||||
return;
|
||||
}
|
||||
|
||||
int actionCount = 0;
|
||||
int neededXP = targetXP - currentXP;
|
||||
double xp = 0;
|
||||
|
||||
for (UIActionSlot slot : combinedActionSlots)
|
||||
xp += slot.value;
|
||||
|
||||
if (neededXP > 0)
|
||||
actionCount = (int) Math.ceil(neededXP / xp);
|
||||
|
||||
combinedActionSlot.setText(formatXPActionString(xp, actionCount));
|
||||
}
|
||||
|
||||
private void clearCombinedSlots()
|
||||
{
|
||||
for (UIActionSlot slot : combinedActionSlots)
|
||||
slot.setSelected(false);
|
||||
|
||||
combinedActionSlots.clear();
|
||||
}
|
||||
|
||||
private void renderBonusOptions()
|
||||
{
|
||||
if (skillData.bonuses != null)
|
||||
{
|
||||
for (SkillDataBonus bonus : skillData.bonuses)
|
||||
{
|
||||
JPanel uiOption = new JPanel(new BorderLayout());
|
||||
JLabel uiLabel = new JLabel(bonus.name);
|
||||
JCheckBox uiCheckbox = new JCheckBox();
|
||||
|
||||
// Adding an empty 8-pixel border on the left gives us nice padding.
|
||||
uiOption.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
|
||||
|
||||
// Adjust XP bonus depending on check-state of the boxes.
|
||||
uiCheckbox.addActionListener(e -> adjustXPBonus(uiCheckbox.isSelected(), bonus.value));
|
||||
|
||||
uiOption.add(uiLabel, BorderLayout.WEST);
|
||||
uiOption.add(uiCheckbox, BorderLayout.EAST);
|
||||
add(uiOption);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void renderActionSlots()
|
||||
{
|
||||
// Wipe the list of references to the slot components.
|
||||
uiActionSlots.clear();
|
||||
|
||||
// Create new components for the action slots.
|
||||
for (SkillDataEntry action : skillData.actions)
|
||||
{
|
||||
UIActionSlot slot = new UIActionSlot(action);
|
||||
uiActionSlots.add(slot); // Keep our own reference.
|
||||
add(slot); // Add component to the panel.
|
||||
|
||||
slot.addMouseListener(new MouseAdapter()
|
||||
{
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e)
|
||||
{
|
||||
if (!e.isShiftDown())
|
||||
clearCombinedSlots();
|
||||
|
||||
if (slot.isSelected)
|
||||
combinedActionSlots.remove(slot);
|
||||
else
|
||||
combinedActionSlots.add(slot);
|
||||
|
||||
slot.setSelected(!slot.isSelected);
|
||||
updateCombinedAction();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Refresh the rendering of this panel.
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
private void calculate()
|
||||
{
|
||||
for (UIActionSlot slot : uiActionSlots)
|
||||
{
|
||||
int actionCount = 0;
|
||||
int neededXP = targetXP - currentXP;
|
||||
double xp = slot.action.xp * xpFactor;
|
||||
|
||||
if (neededXP > 0)
|
||||
actionCount = (int) Math.ceil(neededXP / xp);
|
||||
|
||||
slot.setText(formatXPActionString(xp, actionCount));
|
||||
slot.setAvailable(currentLevel >= slot.action.level);
|
||||
slot.value = xp;
|
||||
}
|
||||
}
|
||||
|
||||
private String formatXPActionString(double xp, int actionCount)
|
||||
{
|
||||
return XP_FORMAT.format(xp) + "xp - " + NumberFormat.getIntegerInstance().format(actionCount) + (actionCount > 1 ? " actions" : " action");
|
||||
}
|
||||
|
||||
private void updateInputFields()
|
||||
{
|
||||
if (targetXP < currentXP)
|
||||
{
|
||||
targetLevel = enforceSkillBounds(currentLevel + 1);
|
||||
targetXP = Experience.getXpForLevel(targetLevel);
|
||||
}
|
||||
|
||||
uiInput.setCurrentLevelInput(currentLevel);
|
||||
uiInput.setCurrentXPInput(currentXP);
|
||||
uiInput.setTargetLevelInput(targetLevel);
|
||||
uiInput.setTargetXPInput(targetXP);
|
||||
calculate();
|
||||
}
|
||||
|
||||
private void adjustXPBonus(boolean addBonus, float value)
|
||||
{
|
||||
xpFactor += addBonus ? value : -value;
|
||||
calculate();
|
||||
}
|
||||
|
||||
private void onFieldCurrentLevelUpdated()
|
||||
{
|
||||
currentLevel = enforceSkillBounds(uiInput.getCurrentLevelInput());
|
||||
currentXP = Experience.getXpForLevel(currentLevel);
|
||||
updateInputFields();
|
||||
}
|
||||
|
||||
private void onFieldCurrentXPUpdated()
|
||||
{
|
||||
currentXP = enforceXPBounds(uiInput.getCurrentXPInput());
|
||||
currentLevel = Experience.getLevelForXp(currentXP);
|
||||
updateInputFields();
|
||||
}
|
||||
|
||||
private void onFieldTargetLevelUpdated()
|
||||
{
|
||||
targetLevel = enforceSkillBounds(uiInput.getTargetLevelInput());
|
||||
targetXP = Experience.getXpForLevel(targetLevel);
|
||||
updateInputFields();
|
||||
}
|
||||
|
||||
private void onFieldTargetXPUpdated()
|
||||
{
|
||||
targetXP = enforceXPBounds(uiInput.getTargetXPInput());
|
||||
targetLevel = Experience.getLevelForXp(targetXP);
|
||||
updateInputFields();
|
||||
}
|
||||
|
||||
private static int enforceSkillBounds(int input)
|
||||
{
|
||||
return Math.min(Experience.MAX_VIRT_LEVEL, Math.max(1, input));
|
||||
}
|
||||
|
||||
private static int enforceXPBounds(int input)
|
||||
{
|
||||
return Math.min(MAX_XP, Math.max(0, input));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Insets;
|
||||
import java.awt.image.BufferedImage;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.Box;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JPanel;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.game.SkillIconManager;
|
||||
import net.runelite.client.ui.PluginPanel;
|
||||
|
||||
class SkillCalculatorPanel extends PluginPanel
|
||||
{
|
||||
private JButton activeButton;
|
||||
private int uiButtonIndex = 0;
|
||||
private final SkillCalculator uiCalculator;
|
||||
private final SkillIconManager iconManager;
|
||||
private final JPanel uiButtonGrid = new JPanel();
|
||||
private final GridBagLayout uiButtonGridLayout = new GridBagLayout();
|
||||
private final GridBagConstraints uiButtonGridConstraints = new GridBagConstraints();
|
||||
|
||||
SkillCalculatorPanel(SkillIconManager iconManager, Client client)
|
||||
{
|
||||
super();
|
||||
this.iconManager = iconManager;
|
||||
|
||||
BoxLayout layout = new BoxLayout(this, BoxLayout.Y_AXIS);
|
||||
setLayout(layout);
|
||||
|
||||
uiButtonGridConstraints.fill = GridBagConstraints.BOTH;
|
||||
uiButtonGridConstraints.weightx = 1;
|
||||
uiButtonGridConstraints.ipady = 12;
|
||||
uiButtonGridConstraints.insets = new Insets(2, 2, 2, 2);
|
||||
|
||||
uiButtonGrid.setLayout(uiButtonGridLayout);
|
||||
uiButtonGrid.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
|
||||
addCalculatorButtons();
|
||||
|
||||
final UICalculatorInputArea uiInput = new UICalculatorInputArea();
|
||||
uiCalculator = new SkillCalculator(client, uiInput);
|
||||
|
||||
add(uiButtonGrid);
|
||||
add(Box.createRigidArea(new Dimension(0, 8)));
|
||||
add(uiInput);
|
||||
add(Box.createRigidArea(new Dimension(0, 14)));
|
||||
add(uiCalculator);
|
||||
}
|
||||
|
||||
private void addCalculatorButtons()
|
||||
{
|
||||
for (CalculatorType calculatorType : CalculatorType.values())
|
||||
{
|
||||
final JButton uiButton = new JButton();
|
||||
final BufferedImage icon = iconManager.getSkillImage(calculatorType.getSkill());
|
||||
uiButton.addActionListener(e -> openCalculator(calculatorType, uiButton));
|
||||
|
||||
uiButton.setIcon(new ImageIcon(icon));
|
||||
uiButton.setToolTipText(calculatorType.getSkill().getName());
|
||||
uiButton.setFocusPainted(false);
|
||||
|
||||
uiButtonGridConstraints.gridx = uiButtonIndex % 4;
|
||||
uiButtonGridLayout.setConstraints(uiButton, uiButtonGridConstraints);
|
||||
uiButtonGrid.add(uiButton);
|
||||
uiButtonIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
private void openCalculator(CalculatorType calculatorType, JButton button)
|
||||
{
|
||||
// Remove highlight from existing button..
|
||||
if (activeButton != null)
|
||||
activeButton.setSelected(false);
|
||||
|
||||
// Set the new button as selected..
|
||||
button.setSelected(true);
|
||||
activeButton = button;
|
||||
|
||||
// Invoke the calculator component..
|
||||
uiCalculator.openCalculator(calculatorType);
|
||||
|
||||
// Refresh rendering..
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.game.SkillIconManager;
|
||||
import net.runelite.client.game.SpriteManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.ui.ClientUI;
|
||||
import net.runelite.client.ui.NavigationButton;
|
||||
import net.runelite.client.ui.PluginToolbar;
|
||||
|
||||
@PluginDescriptor(name = "Skill Calculator")
|
||||
public class SkillCalculatorPlugin extends Plugin
|
||||
{
|
||||
@Inject
|
||||
private ClientUI ui;
|
||||
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private SkillIconManager skillIconManager;
|
||||
|
||||
@Inject
|
||||
private ItemManager itemManager;
|
||||
|
||||
@Inject
|
||||
private SpriteManager spriteManager;
|
||||
|
||||
@Inject
|
||||
private PluginToolbar pluginToolbar;
|
||||
|
||||
private NavigationButton uiNavigationButton;
|
||||
private SkillCalculatorPanel uiPanel;
|
||||
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
BufferedImage icon;
|
||||
synchronized (ImageIO.class)
|
||||
{
|
||||
icon = ImageIO.read(getClass().getResourceAsStream("calc.png"));
|
||||
}
|
||||
|
||||
SkillCalculator.spriteManager = spriteManager;
|
||||
SkillCalculator.itemManager = itemManager;
|
||||
|
||||
uiPanel = new SkillCalculatorPanel(skillIconManager, client);
|
||||
uiNavigationButton = NavigationButton.builder().name("Skill Calculator").icon(icon).panel(uiPanel).build();
|
||||
pluginToolbar.addNavigation(uiNavigationButton);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
pluginToolbar.removeNavigation(uiNavigationButton);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GridLayout;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import net.runelite.client.plugins.skillcalculator.beans.SkillDataEntry;
|
||||
import net.runelite.client.ui.FontManager;
|
||||
import net.runelite.client.ui.JShadowedLabel;
|
||||
|
||||
class UIActionSlot extends JPanel
|
||||
{
|
||||
SkillDataEntry action;
|
||||
private JShadowedLabel uiLabelActions;
|
||||
private static final Dimension ICON_SIZE = new Dimension(32, 32);
|
||||
|
||||
boolean isAvailable = false;
|
||||
boolean isSelected = false;
|
||||
|
||||
double value = 0;
|
||||
|
||||
UIActionSlot(SkillDataEntry action)
|
||||
{
|
||||
this.action = action;
|
||||
|
||||
BorderLayout layout = new BorderLayout();
|
||||
layout.setHgap(8);
|
||||
setLayout(layout);
|
||||
|
||||
setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
|
||||
|
||||
JLabel uiIcon = new JLabel();
|
||||
|
||||
if (action.icon != null)
|
||||
SkillCalculator.itemManager.getImage(action.icon).addTo(uiIcon);
|
||||
else if (action.sprite != null)
|
||||
SkillCalculator.spriteManager.addSpriteTo(uiIcon, action.sprite, 0);
|
||||
|
||||
uiIcon.setMinimumSize(ICON_SIZE);
|
||||
uiIcon.setMaximumSize(ICON_SIZE);
|
||||
uiIcon.setPreferredSize(ICON_SIZE);
|
||||
uiIcon.setHorizontalAlignment(JLabel.CENTER);
|
||||
add(uiIcon, BorderLayout.LINE_START);
|
||||
|
||||
JPanel uiInfo = new JPanel(new GridLayout(2, 1));
|
||||
uiInfo.setOpaque(false);
|
||||
|
||||
JShadowedLabel uiLabelName = new JShadowedLabel(action.name);
|
||||
uiInfo.add(uiLabelName);
|
||||
|
||||
uiLabelActions = new JShadowedLabel("Unknown");
|
||||
uiLabelActions.setFont(FontManager.getRunescapeSmallFont());
|
||||
uiInfo.add(uiLabelActions);
|
||||
|
||||
add(uiInfo, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
void setSelected(boolean selected)
|
||||
{
|
||||
isSelected = selected;
|
||||
updateBackground();
|
||||
}
|
||||
|
||||
void setAvailable(boolean available)
|
||||
{
|
||||
isAvailable = available;
|
||||
updateBackground();
|
||||
}
|
||||
|
||||
void setText(String text)
|
||||
{
|
||||
uiLabelActions.setText(text);
|
||||
}
|
||||
|
||||
private void updateBackground()
|
||||
{
|
||||
if (isSelected)
|
||||
this.setBackground(isAvailable ? Color.GREEN : Color.RED);
|
||||
else
|
||||
this.setBackground(isAvailable ? Color.GREEN.darker() : Color.RED.darker());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Insets;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextField;
|
||||
|
||||
class UICalculatorInputArea extends JPanel
|
||||
{
|
||||
private final GridBagLayout uiLayout;
|
||||
private final GridBagConstraints uiConstraints;
|
||||
|
||||
private int gridX = 0;
|
||||
private int gridY = 0;
|
||||
|
||||
JTextField uiFieldCurrentLevel;
|
||||
JTextField uiFieldCurrentXP;
|
||||
JTextField uiFieldTargetLevel;
|
||||
JTextField uiFieldTargetXP;
|
||||
|
||||
UICalculatorInputArea()
|
||||
{
|
||||
uiLayout = new GridBagLayout();
|
||||
uiConstraints = new GridBagConstraints();
|
||||
uiConstraints.insets = new Insets(3, 9, 3, 9);
|
||||
setLayout(uiLayout);
|
||||
|
||||
uiFieldCurrentLevel = addComponent("Current Level");
|
||||
uiFieldCurrentXP = addComponent("Current XP");
|
||||
uiFieldTargetLevel = addComponent("Target Level");
|
||||
uiFieldTargetXP = addComponent("Target XP");
|
||||
}
|
||||
|
||||
int getCurrentLevelInput()
|
||||
{
|
||||
return getInput(uiFieldCurrentLevel);
|
||||
}
|
||||
|
||||
void setCurrentLevelInput(int value)
|
||||
{
|
||||
setInput(uiFieldCurrentLevel, value);
|
||||
}
|
||||
|
||||
int getCurrentXPInput()
|
||||
{
|
||||
return getInput(uiFieldCurrentXP);
|
||||
}
|
||||
|
||||
void setCurrentXPInput(Object value)
|
||||
{
|
||||
setInput(uiFieldCurrentXP, value);
|
||||
}
|
||||
|
||||
int getTargetLevelInput()
|
||||
{
|
||||
return getInput(uiFieldTargetLevel);
|
||||
}
|
||||
|
||||
void setTargetLevelInput(Object value)
|
||||
{
|
||||
setInput(uiFieldTargetLevel, value);
|
||||
}
|
||||
|
||||
int getTargetXPInput()
|
||||
{
|
||||
return getInput(uiFieldTargetXP);
|
||||
}
|
||||
|
||||
void setTargetXPInput(Object value)
|
||||
{
|
||||
setInput(uiFieldTargetXP, value);
|
||||
}
|
||||
|
||||
private int getInput(JTextField field)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Integer.parseInt(field.getText());
|
||||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private void setInput(JTextField field, Object value)
|
||||
{
|
||||
field.setText(String.valueOf(value));
|
||||
}
|
||||
|
||||
private JTextField addComponent(String label)
|
||||
{
|
||||
final JLabel uiLabel = new JLabel(label);
|
||||
final JTextField uiField = new JTextField(6);
|
||||
|
||||
uiConstraints.gridx = gridX;
|
||||
uiConstraints.gridy = gridY;
|
||||
|
||||
uiLayout.setConstraints(uiLabel, uiConstraints);
|
||||
add(uiLabel);
|
||||
|
||||
uiConstraints.gridy++;
|
||||
uiLayout.setConstraints(uiField, uiConstraints);
|
||||
add(uiField);
|
||||
|
||||
gridX++;
|
||||
if (gridX % 2 == 0)
|
||||
{
|
||||
gridY += 2;
|
||||
gridX = 0;
|
||||
}
|
||||
|
||||
return uiField;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package net.runelite.client.plugins.skillcalculator;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GridLayout;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import net.runelite.client.ui.FontManager;
|
||||
import net.runelite.client.ui.JShadowedLabel;
|
||||
|
||||
class UICombinedActionSlot extends JPanel
|
||||
{
|
||||
|
||||
private JShadowedLabel uiLabelActions;
|
||||
private JShadowedLabel uiLabelTitle;
|
||||
private static final Dimension ICON_SIZE = new Dimension(32, 32);
|
||||
|
||||
UICombinedActionSlot()
|
||||
{
|
||||
BorderLayout layout = new BorderLayout();
|
||||
layout.setHgap(8);
|
||||
setLayout(layout);
|
||||
|
||||
setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
|
||||
|
||||
JLabel uiIcon = new JLabel();
|
||||
SkillCalculator.spriteManager.addSpriteTo(uiIcon, 582, 0);
|
||||
|
||||
uiIcon.setMinimumSize(ICON_SIZE);
|
||||
uiIcon.setMaximumSize(ICON_SIZE);
|
||||
uiIcon.setPreferredSize(ICON_SIZE);
|
||||
uiIcon.setHorizontalAlignment(JLabel.CENTER);
|
||||
add(uiIcon, BorderLayout.LINE_START);
|
||||
|
||||
JPanel uiInfo = new JPanel(new GridLayout(2, 1));
|
||||
uiInfo.setOpaque(false);
|
||||
|
||||
uiLabelTitle = new JShadowedLabel("No Action Selected");
|
||||
uiInfo.add(uiLabelTitle);
|
||||
|
||||
uiLabelActions = new JShadowedLabel("Shift-click to select multiple");
|
||||
uiLabelActions.setFont(FontManager.getRunescapeSmallFont());
|
||||
uiInfo.add(uiLabelActions);
|
||||
|
||||
setBackground(Color.orange);
|
||||
add(uiInfo, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
void setText(String text)
|
||||
{
|
||||
uiLabelActions.setText(text);
|
||||
}
|
||||
|
||||
void setTitle(String text)
|
||||
{
|
||||
uiLabelTitle.setText(text);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.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.beans;
|
||||
|
||||
public class SkillData
|
||||
{
|
||||
public SkillDataEntry[] actions;
|
||||
public SkillDataBonus[] bonuses;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.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.beans;
|
||||
|
||||
public class SkillDataBonus
|
||||
{
|
||||
public String name;
|
||||
public float value;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Kruithne <kruithne@gmail.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.beans;
|
||||
|
||||
public class SkillDataEntry
|
||||
{
|
||||
public String name;
|
||||
public int level;
|
||||
public double xp;
|
||||
public Integer icon;
|
||||
public Integer sprite;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 799 B |
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"actions": [
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 2150,
|
||||
"name": "Gnome Stronghold",
|
||||
"xp": 86.5
|
||||
},
|
||||
{
|
||||
"level": 10,
|
||||
"icon": 11849,
|
||||
"name": "Draynor Village Rooftop",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"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": 35,
|
||||
"icon": 1365,
|
||||
"name": "Barbarian Outpost",
|
||||
"xp": 152.5
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 11849,
|
||||
"name": "Canifis Rooftop",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 48,
|
||||
"icon": 4026,
|
||||
"name": "Ape Atoll",
|
||||
"xp": 580
|
||||
},
|
||||
{
|
||||
"level": 50,
|
||||
"icon": 11849,
|
||||
"name": "Falador Rooftop",
|
||||
"xp": 440
|
||||
},
|
||||
{
|
||||
"level": 52,
|
||||
"icon": 964,
|
||||
"name": "Wilderness Agility Course",
|
||||
"xp": 571
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 11849,
|
||||
"name": "Seers' Village Rooftop",
|
||||
"xp": 570
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 4179,
|
||||
"name": "Werewolf Agility Course",
|
||||
"xp": 540
|
||||
},
|
||||
{
|
||||
"level": 70,
|
||||
"icon": 11849,
|
||||
"name": "Pollnivneach Rooftop",
|
||||
"xp": 890
|
||||
},
|
||||
{
|
||||
"level": 80,
|
||||
"icon": 11849,
|
||||
"name": "Rellekka Rooftop",
|
||||
"xp": 780
|
||||
},
|
||||
{
|
||||
"level": 90,
|
||||
"icon": 11849,
|
||||
"name": "Ardougne Rooftop",
|
||||
"xp": 793
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,970 @@
|
||||
{
|
||||
"actions": [
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8168,
|
||||
"name": "Exit Portal",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 960,
|
||||
"name": "Plank",
|
||||
"xp": 29
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8780,
|
||||
"name": "Teak Plank",
|
||||
"xp": 90
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8180,
|
||||
"name": "Plant",
|
||||
"xp": 31
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8782,
|
||||
"name": "Mahogany Plank",
|
||||
"xp": 140
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8778,
|
||||
"name": "Oak Plank",
|
||||
"xp": 60
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8186,
|
||||
"name": "Fern",
|
||||
"xp": 31
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8189,
|
||||
"name": "Short Plant",
|
||||
"xp": 31
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8183,
|
||||
"name": "Dock Leaf",
|
||||
"xp": 31
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 8309,
|
||||
"name": "Crude Wooden Chair",
|
||||
"xp": 58
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"icon": 8316,
|
||||
"name": "Brown Rug",
|
||||
"xp": 30
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"icon": 8322,
|
||||
"name": "Torn Curtains",
|
||||
"xp": 132
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"icon": 8325,
|
||||
"name": "Clay Fireplace",
|
||||
"xp": 30
|
||||
},
|
||||
{
|
||||
"level": 4,
|
||||
"icon": 8319,
|
||||
"name": "Wooden Bookcase",
|
||||
"xp": 115
|
||||
},
|
||||
{
|
||||
"level": 5,
|
||||
"icon": 8216,
|
||||
"name": "Firepit",
|
||||
"xp": 40
|
||||
},
|
||||
{
|
||||
"level": 5,
|
||||
"icon": 8236,
|
||||
"name": "Cat Blanket",
|
||||
"xp": 15
|
||||
},
|
||||
{
|
||||
"level": 5,
|
||||
"icon": 8169,
|
||||
"name": "Decorative Rock",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 5,
|
||||
"icon": 8173,
|
||||
"name": "Tree",
|
||||
"xp": 31
|
||||
},
|
||||
{
|
||||
"level": 6,
|
||||
"icon": 8181,
|
||||
"name": "Small Fern",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 6,
|
||||
"icon": 8184,
|
||||
"name": "Thistle",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 6,
|
||||
"icon": 8187,
|
||||
"name": "Bush",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 6,
|
||||
"icon": 8187,
|
||||
"name": "Large Leaf Bush",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 6,
|
||||
"icon": 8223,
|
||||
"name": "Wooden Shelves 1",
|
||||
"xp": 87
|
||||
},
|
||||
{
|
||||
"level": 7,
|
||||
"icon": 8230,
|
||||
"name": "Pump and Drain",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 7,
|
||||
"icon": 8239,
|
||||
"name": "Beer Barrel",
|
||||
"xp": 87
|
||||
},
|
||||
{
|
||||
"level": 8,
|
||||
"icon": 8310,
|
||||
"name": "Wooden Chair",
|
||||
"xp": 87
|
||||
},
|
||||
{
|
||||
"level": 9,
|
||||
"icon": 8233,
|
||||
"name": "Wooden Larder",
|
||||
"xp": 228
|
||||
},
|
||||
{
|
||||
"level": 10,
|
||||
"icon": 8115,
|
||||
"name": "Wood Dining Table",
|
||||
"xp": 115
|
||||
},
|
||||
{
|
||||
"level": 10,
|
||||
"icon": 8170,
|
||||
"name": "Pond",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 10,
|
||||
"icon": 8174,
|
||||
"name": "Nice Tree",
|
||||
"xp": 44
|
||||
},
|
||||
{
|
||||
"level": 10,
|
||||
"icon": 8108,
|
||||
"name": "Wooden Bench",
|
||||
"xp": 115
|
||||
},
|
||||
{
|
||||
"level": 11,
|
||||
"icon": 8217,
|
||||
"name": "Firepit with Hook",
|
||||
"xp": 60
|
||||
},
|
||||
{
|
||||
"level": 12,
|
||||
"icon": 8185,
|
||||
"name": "Reeds",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 12,
|
||||
"icon": 8186,
|
||||
"name": "Fern",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 12,
|
||||
"icon": 8240,
|
||||
"name": "Cider Barrel",
|
||||
"xp": 91
|
||||
},
|
||||
{
|
||||
"level": 12,
|
||||
"icon": 8224,
|
||||
"name": "Wooden Shelves 2",
|
||||
"xp": 147
|
||||
},
|
||||
{
|
||||
"level": 12,
|
||||
"icon": 8115,
|
||||
"name": "Wood Table",
|
||||
"xp": 87
|
||||
},
|
||||
{
|
||||
"level": 12,
|
||||
"icon": 8191,
|
||||
"name": "Huge Plant",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 12,
|
||||
"icon": 8188,
|
||||
"name": "Tall Plant",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 13,
|
||||
"icon": 8317,
|
||||
"name": "Rug",
|
||||
"xp": 60
|
||||
},
|
||||
{
|
||||
"level": 14,
|
||||
"icon": 8311,
|
||||
"name": "Rocking Chair",
|
||||
"xp": 87
|
||||
},
|
||||
{
|
||||
"level": 15,
|
||||
"icon": 8171,
|
||||
"name": "Imp Statue",
|
||||
"xp": 150
|
||||
},
|
||||
{
|
||||
"level": 15,
|
||||
"icon": 8175,
|
||||
"name": "Oak Tree",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 16,
|
||||
"icon": 8102,
|
||||
"name": "Oak Decoration",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 17,
|
||||
"icon": 8218,
|
||||
"name": "Firepit with Pot",
|
||||
"xp": 80
|
||||
},
|
||||
{
|
||||
"level": 18,
|
||||
"icon": 8323,
|
||||
"name": "Curtains",
|
||||
"xp": 225
|
||||
},
|
||||
{
|
||||
"level": 18,
|
||||
"icon": 1905,
|
||||
"name": "Asgarnian Ale",
|
||||
"xp": 184
|
||||
},
|
||||
{
|
||||
"level": 19,
|
||||
"icon": 8237,
|
||||
"name": "Cat Basket",
|
||||
"xp": 58
|
||||
},
|
||||
{
|
||||
"level": 19,
|
||||
"icon": 8312,
|
||||
"name": "Oak Chair",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 20,
|
||||
"icon": 8031,
|
||||
"name": "Wooden Bed",
|
||||
"xp": 117
|
||||
},
|
||||
{
|
||||
"level": 20,
|
||||
"icon": 8038,
|
||||
"name": "Shoe Box",
|
||||
"xp": 58
|
||||
},
|
||||
{
|
||||
"level": 21,
|
||||
"icon": 8045,
|
||||
"name": "Shaving Stand",
|
||||
"xp": 30
|
||||
},
|
||||
{
|
||||
"level": 22,
|
||||
"icon": 8116,
|
||||
"name": "Oak Table",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 22,
|
||||
"icon": 8109,
|
||||
"name": "Oak Bench",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 23,
|
||||
"icon": 8225,
|
||||
"name": "Wooden Shelves 3",
|
||||
"xp": 147
|
||||
},
|
||||
{
|
||||
"level": 23,
|
||||
"icon": 8313,
|
||||
"name": "Oak Armchair",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 24,
|
||||
"icon": 8219,
|
||||
"name": "Small Oven",
|
||||
"xp": 80
|
||||
},
|
||||
{
|
||||
"level": 25,
|
||||
"icon": 8052,
|
||||
"name": "Oak Clock",
|
||||
"xp": 142
|
||||
},
|
||||
{
|
||||
"level": 26,
|
||||
"icon": 1909,
|
||||
"name": "Greenman's Ale",
|
||||
"xp": 184
|
||||
},
|
||||
{
|
||||
"level": 26,
|
||||
"icon": 8099,
|
||||
"name": "Rope Bell-Pull",
|
||||
"xp": 64
|
||||
},
|
||||
{
|
||||
"level": 27,
|
||||
"icon": 8231,
|
||||
"name": "Pump and Tub",
|
||||
"xp": 200
|
||||
},
|
||||
{
|
||||
"level": 27,
|
||||
"icon": 8039,
|
||||
"name": "Oak Drawers",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 29,
|
||||
"icon": 8320,
|
||||
"name": "Oak Bookcase",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 29,
|
||||
"icon": 8220,
|
||||
"name": "Large Oven",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 29,
|
||||
"icon": 8046,
|
||||
"name": "Oak Shaving Stand",
|
||||
"xp": 61
|
||||
},
|
||||
{
|
||||
"level": 30,
|
||||
"icon": 8176,
|
||||
"name": "Willow Tree",
|
||||
"xp": 100
|
||||
},
|
||||
{
|
||||
"level": 30,
|
||||
"icon": 8032,
|
||||
"name": "Oak Bed",
|
||||
"xp": 210
|
||||
},
|
||||
{
|
||||
"level": 31,
|
||||
"icon": 8110,
|
||||
"name": "Carved Oak Bench",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 31,
|
||||
"icon": 8117,
|
||||
"name": "Carved Oak Table",
|
||||
"xp": 360
|
||||
},
|
||||
{
|
||||
"level": 32,
|
||||
"icon": 8118,
|
||||
"name": "Oak Table",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 32,
|
||||
"icon": 8023,
|
||||
"name": "Boxing Ring",
|
||||
"xp": 420
|
||||
},
|
||||
{
|
||||
"level": 33,
|
||||
"icon": 8234,
|
||||
"name": "Oak Larder",
|
||||
"xp": 480
|
||||
},
|
||||
{
|
||||
"level": 33,
|
||||
"icon": 8238,
|
||||
"name": "Cushioned Basket",
|
||||
"xp": 58
|
||||
},
|
||||
{
|
||||
"level": 33,
|
||||
"icon": 8326,
|
||||
"name": "Stone Fireplace",
|
||||
"xp": 40
|
||||
},
|
||||
{
|
||||
"level": 34,
|
||||
"icon": 8221,
|
||||
"name": "Steel Range",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 34,
|
||||
"icon": 8226,
|
||||
"name": "Oak Shelves 1",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 34,
|
||||
"icon": 8028,
|
||||
"name": "Glove Rack",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 34,
|
||||
"icon": 8033,
|
||||
"name": "Large Oak Bed",
|
||||
"xp": 330
|
||||
},
|
||||
{
|
||||
"level": 35,
|
||||
"icon": 8314,
|
||||
"name": "Teak Armchair",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 36,
|
||||
"icon": 1911,
|
||||
"name": "Dragon Bitter",
|
||||
"xp": 224
|
||||
},
|
||||
{
|
||||
"level": 36,
|
||||
"icon": 8103,
|
||||
"name": "Teak Decoration",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 37,
|
||||
"icon": 8100,
|
||||
"name": "Bell-Pull",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 37,
|
||||
"icon": 8047,
|
||||
"name": "Oak Dresser",
|
||||
"xp": 121
|
||||
},
|
||||
{
|
||||
"level": 38,
|
||||
"icon": 8112,
|
||||
"name": "Teak Bench",
|
||||
"xp": 360
|
||||
},
|
||||
{
|
||||
"level": 38,
|
||||
"icon": 8118,
|
||||
"name": "Teak Table",
|
||||
"xp": 360
|
||||
},
|
||||
{
|
||||
"level": 39,
|
||||
"icon": 8040,
|
||||
"name": "Oak Wardrobe",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 8034,
|
||||
"name": "Teak Bed",
|
||||
"xp": 300
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 8321,
|
||||
"name": "Mahogany Bookcase",
|
||||
"xp": 420
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 8334,
|
||||
"name": "Oak Lectern",
|
||||
"xp": 60
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 8324,
|
||||
"name": "Opulent Curtains",
|
||||
"xp": 315
|
||||
},
|
||||
{
|
||||
"level": 41,
|
||||
"icon": 8024,
|
||||
"name": "Fencing Ring",
|
||||
"xp": 570
|
||||
},
|
||||
{
|
||||
"level": 41,
|
||||
"icon": 8341,
|
||||
"name": "Globe",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 42,
|
||||
"icon": 8222,
|
||||
"name": "Fancy Range",
|
||||
"xp": 160
|
||||
},
|
||||
{
|
||||
"level": 42,
|
||||
"icon": 8351,
|
||||
"name": "Crystal Ball",
|
||||
"xp": 280
|
||||
},
|
||||
{
|
||||
"level": 43,
|
||||
"icon": 8354,
|
||||
"name": "Alchemical Chart",
|
||||
"xp": 30
|
||||
},
|
||||
{
|
||||
"level": 43,
|
||||
"icon": 8235,
|
||||
"name": "Teak larder",
|
||||
"xp": 750
|
||||
},
|
||||
{
|
||||
"level": 44,
|
||||
"icon": 8348,
|
||||
"name": "Wooden Telescope",
|
||||
"xp": 121
|
||||
},
|
||||
{
|
||||
"level": 44,
|
||||
"icon": 8029,
|
||||
"name": "Weapons Rack",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 44,
|
||||
"icon": 8112,
|
||||
"name": "Carved Teak Bench",
|
||||
"xp": 360
|
||||
},
|
||||
{
|
||||
"level": 45,
|
||||
"icon": 8227,
|
||||
"name": "Oak Shelves 2",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 45,
|
||||
"icon": 8119,
|
||||
"name": "Carved Teak Table",
|
||||
"xp": 600
|
||||
},
|
||||
{
|
||||
"level": 45,
|
||||
"icon": 8035,
|
||||
"name": "Large Teak Bed",
|
||||
"xp": 480
|
||||
},
|
||||
{
|
||||
"level": 45,
|
||||
"icon": 8177,
|
||||
"name": "Maple Tree",
|
||||
"xp": 122
|
||||
},
|
||||
{
|
||||
"level": 46,
|
||||
"icon": 8048,
|
||||
"name": "Teak Dresser",
|
||||
"xp": 181
|
||||
},
|
||||
{
|
||||
"level": 47,
|
||||
"icon": 8232,
|
||||
"name": "Sink",
|
||||
"xp": 300
|
||||
},
|
||||
{
|
||||
"level": 47,
|
||||
"icon": 8335,
|
||||
"name": "Eagle Lectern",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 47,
|
||||
"icon": 8336,
|
||||
"name": "Demon Lectern",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 48,
|
||||
"icon": 5755,
|
||||
"name": "Chef's Delight",
|
||||
"xp": 224
|
||||
},
|
||||
{
|
||||
"level": 50,
|
||||
"icon": 8328,
|
||||
"name": "Teak Portal",
|
||||
"xp": 270
|
||||
},
|
||||
{
|
||||
"level": 50,
|
||||
"icon": 8315,
|
||||
"name": "Mahogany Armchair",
|
||||
"xp": 280
|
||||
},
|
||||
{
|
||||
"level": 50,
|
||||
"icon": 8342,
|
||||
"name": "Ornamental Globe",
|
||||
"xp": 270
|
||||
},
|
||||
{
|
||||
"level": 50,
|
||||
"icon": 8331,
|
||||
"name": "Teleport Focus",
|
||||
"xp": 40
|
||||
},
|
||||
{
|
||||
"level": 51,
|
||||
"icon": 8041,
|
||||
"name": "Teak Drawers",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 51,
|
||||
"icon": 8025,
|
||||
"name": "Combat Ring",
|
||||
"xp": 630
|
||||
},
|
||||
{
|
||||
"level": 52,
|
||||
"icon": 8118,
|
||||
"name": "Teak Table",
|
||||
"xp": 270
|
||||
},
|
||||
{
|
||||
"level": 52,
|
||||
"icon": 8113,
|
||||
"name": "Mahogany Bench",
|
||||
"xp": 560
|
||||
},
|
||||
{
|
||||
"level": 52,
|
||||
"icon": 8120,
|
||||
"name": "Mahogany Table",
|
||||
"xp": 840
|
||||
},
|
||||
{
|
||||
"level": 53,
|
||||
"icon": 8036,
|
||||
"name": "4-Poster Bed",
|
||||
"xp": 450
|
||||
},
|
||||
{
|
||||
"level": 54,
|
||||
"icon": 8030,
|
||||
"name": "Extra Weapons Rack",
|
||||
"xp": 440
|
||||
},
|
||||
{
|
||||
"level": 54,
|
||||
"icon": 8352,
|
||||
"name": "Elemental Sphere",
|
||||
"xp": 580
|
||||
},
|
||||
{
|
||||
"level": 55,
|
||||
"icon": 8053,
|
||||
"name": "Teak Clock",
|
||||
"xp": 202
|
||||
},
|
||||
{
|
||||
"level": 56,
|
||||
"icon": 8104,
|
||||
"name": "Gilded Decoration",
|
||||
"xp": 1020
|
||||
},
|
||||
{
|
||||
"level": 56,
|
||||
"icon": 8049,
|
||||
"name": "Fancy Teak Dresser",
|
||||
"xp": 182
|
||||
},
|
||||
{
|
||||
"level": 56,
|
||||
"icon": 8228,
|
||||
"name": "Teak Shelves 1",
|
||||
"xp": 330
|
||||
},
|
||||
{
|
||||
"level": 57,
|
||||
"icon": 8337,
|
||||
"name": "Teak Eagle Lectern",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 57,
|
||||
"icon": 8338,
|
||||
"name": "Teak Demon Lectern",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 59,
|
||||
"icon": 8343,
|
||||
"name": "Lunar Globe",
|
||||
"xp": 570
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 8037,
|
||||
"name": "Gilded 4-Poster Bed",
|
||||
"xp": 1330
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 8101,
|
||||
"name": "Posh Bell-Pull",
|
||||
"xp": 420
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 8178,
|
||||
"name": "Yew Tree",
|
||||
"xp": 141
|
||||
},
|
||||
{
|
||||
"level": 61,
|
||||
"icon": 8114,
|
||||
"name": "Gilded Bench",
|
||||
"xp": 1760
|
||||
},
|
||||
{
|
||||
"level": 63,
|
||||
"icon": 8042,
|
||||
"name": "Teak Wardrobe",
|
||||
"xp": 270
|
||||
},
|
||||
{
|
||||
"level": 63,
|
||||
"icon": 8327,
|
||||
"name": "Marble Fireplace",
|
||||
"xp": 500
|
||||
},
|
||||
{
|
||||
"level": 63,
|
||||
"icon": 8355,
|
||||
"name": "Astronomical Chart",
|
||||
"xp": 45
|
||||
},
|
||||
{
|
||||
"level": 64,
|
||||
"icon": 8349,
|
||||
"name": "Teak Telescope",
|
||||
"xp": 181
|
||||
},
|
||||
{
|
||||
"level": 64,
|
||||
"icon": 8050,
|
||||
"name": "Mahogany Dresser",
|
||||
"xp": 281
|
||||
},
|
||||
{
|
||||
"level": 65,
|
||||
"icon": 8329,
|
||||
"name": "Mahogany Portal",
|
||||
"xp": 420
|
||||
},
|
||||
{
|
||||
"level": 65,
|
||||
"icon": 8332,
|
||||
"name": "Greater Focus",
|
||||
"xp": 500
|
||||
},
|
||||
{
|
||||
"level": 65,
|
||||
"icon": 8318,
|
||||
"name": "Opulent Rug",
|
||||
"xp": 360
|
||||
},
|
||||
{
|
||||
"level": 66,
|
||||
"icon": 8353,
|
||||
"name": "Crystal of Power",
|
||||
"xp": 890
|
||||
},
|
||||
{
|
||||
"level": 67,
|
||||
"icon": 8229,
|
||||
"name": "Teak Shelves 2",
|
||||
"xp": 930
|
||||
},
|
||||
{
|
||||
"level": 67,
|
||||
"icon": 8338,
|
||||
"name": "Mahogany Demon Lectern",
|
||||
"xp": 580
|
||||
},
|
||||
{
|
||||
"level": 67,
|
||||
"icon": 8338,
|
||||
"name": "Mahogany Eagle Lectern",
|
||||
"xp": 580
|
||||
},
|
||||
{
|
||||
"level": 68,
|
||||
"icon": 8344,
|
||||
"name": "Celestial Globe",
|
||||
"xp": 570
|
||||
},
|
||||
{
|
||||
"level": 70,
|
||||
"icon": 8172,
|
||||
"name": "Dungeon Entrance",
|
||||
"xp": 500
|
||||
},
|
||||
{
|
||||
"level": 71,
|
||||
"icon": 8026,
|
||||
"name": "Ranging Pedestals",
|
||||
"xp": 720
|
||||
},
|
||||
{
|
||||
"level": 72,
|
||||
"icon": 8121,
|
||||
"name": "Opulent Table",
|
||||
"xp": 3100
|
||||
},
|
||||
{
|
||||
"level": 74,
|
||||
"icon": 8122,
|
||||
"name": "Oak Door",
|
||||
"xp": 600
|
||||
},
|
||||
{
|
||||
"level": 74,
|
||||
"icon": 8051,
|
||||
"name": "Gilded Dresser",
|
||||
"xp": 582
|
||||
},
|
||||
{
|
||||
"level": 75,
|
||||
"icon": 8043,
|
||||
"name": "Mahogany Wardrobe",
|
||||
"xp": 420
|
||||
},
|
||||
{
|
||||
"level": 75,
|
||||
"icon": 8179,
|
||||
"name": "Magic Tree",
|
||||
"xp": 223
|
||||
},
|
||||
{
|
||||
"level": 77,
|
||||
"icon": 8341,
|
||||
"name": "Armillary Globe",
|
||||
"xp": 960
|
||||
},
|
||||
{
|
||||
"level": 80,
|
||||
"icon": 8330,
|
||||
"name": "Marble Portal",
|
||||
"xp": 1500
|
||||
},
|
||||
{
|
||||
"level": 80,
|
||||
"icon": 8333,
|
||||
"name": "Scrying Pool",
|
||||
"xp": 2000
|
||||
},
|
||||
{
|
||||
"level": 81,
|
||||
"icon": 8027,
|
||||
"name": "Balance Beam",
|
||||
"xp": 1000
|
||||
},
|
||||
{
|
||||
"level": 83,
|
||||
"icon": 8356,
|
||||
"name": "Infernal Chart",
|
||||
"xp": 60
|
||||
},
|
||||
{
|
||||
"level": 84,
|
||||
"icon": 8350,
|
||||
"name": "Mahogany Telescope",
|
||||
"xp": 281
|
||||
},
|
||||
{
|
||||
"level": 85,
|
||||
"icon": 8054,
|
||||
"name": "Gilded Clock",
|
||||
"xp": 602
|
||||
},
|
||||
{
|
||||
"level": 86,
|
||||
"icon": 8346,
|
||||
"name": "Small Orrery",
|
||||
"xp": 1320
|
||||
},
|
||||
{
|
||||
"level": 87,
|
||||
"icon": 8044,
|
||||
"name": "Gilded Wardrobe",
|
||||
"xp": 720
|
||||
},
|
||||
{
|
||||
"level": 95,
|
||||
"icon": 8347,
|
||||
"name": "Large Orrery",
|
||||
"xp": 1420
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,508 @@
|
||||
{
|
||||
"actions": [
|
||||
{
|
||||
"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": 325,
|
||||
"name": "Sardine",
|
||||
"xp": 40
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 2309,
|
||||
"name": "Bread",
|
||||
"xp": 40
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"icon": 9436,
|
||||
"name": "Sinew",
|
||||
"xp": 3
|
||||
},
|
||||
{
|
||||
"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": 8,
|
||||
"icon": 2048,
|
||||
"name": "Pineapple Punch",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 9,
|
||||
"icon": 7072,
|
||||
"name": "Spicy Sauce",
|
||||
"xp": 24
|
||||
},
|
||||
{
|
||||
"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": 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": 319,
|
||||
"name": "Anchovies",
|
||||
"xp": 30
|
||||
},
|
||||
{
|
||||
"level": 15,
|
||||
"icon": 333,
|
||||
"name": "Trout",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 16,
|
||||
"icon": 7223,
|
||||
"name": "Roast Rabbit",
|
||||
"xp": 72.5
|
||||
},
|
||||
{
|
||||
"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": 21,
|
||||
"icon": 9988,
|
||||
"name": "Roast Beast Meat",
|
||||
"xp": 82.5
|
||||
},
|
||||
{
|
||||
"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": 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": 32,
|
||||
"icon": 2092,
|
||||
"name": "Drunk Dragon",
|
||||
"xp": 160
|
||||
},
|
||||
{
|
||||
"level": 34,
|
||||
"icon": 7178,
|
||||
"name": "Garden Pie",
|
||||
"xp": 138
|
||||
},
|
||||
{
|
||||
"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": 37,
|
||||
"icon": 2064,
|
||||
"name": "Blurberry Special",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 38,
|
||||
"icon": 5003,
|
||||
"name": "Cave Eel",
|
||||
"xp": 115
|
||||
},
|
||||
{
|
||||
"level": 39,
|
||||
"icon": 1911,
|
||||
"name": "Dragon Bitter",
|
||||
"xp": 347
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 379,
|
||||
"name": "Lobster",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 1891,
|
||||
"name": "Cake",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 41,
|
||||
"icon": 7054,
|
||||
"name": "Chilli Potato",
|
||||
"xp": 165.5
|
||||
},
|
||||
{
|
||||
"level": 42,
|
||||
"icon": 2185,
|
||||
"name": "Chocolate Bomb",
|
||||
"xp": 190
|
||||
},
|
||||
{
|
||||
"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": 47,
|
||||
"icon": 7188,
|
||||
"name": "Fish Pie",
|
||||
"xp": 164
|
||||
},
|
||||
{
|
||||
"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": 55,
|
||||
"icon": 2297,
|
||||
"name": "Anchovy Pizza",
|
||||
"xp": 182
|
||||
},
|
||||
{
|
||||
"level": 58,
|
||||
"icon": 1883,
|
||||
"name": "Ugthanki Kebab (Fresh)",
|
||||
"xp": 80
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 2011,
|
||||
"name": "Curry",
|
||||
"xp": 280
|
||||
},
|
||||
{
|
||||
"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": 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": 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": 11936,
|
||||
"name": "Dark Crab",
|
||||
"xp": 215
|
||||
},
|
||||
{
|
||||
"level": 85,
|
||||
"icon": 7208,
|
||||
"name": "Wild Pie",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 91,
|
||||
"icon": 391,
|
||||
"name": "Manta Ray",
|
||||
"xp": 216.3
|
||||
},
|
||||
{
|
||||
"level": 95,
|
||||
"icon": 7218,
|
||||
"name": "Summer Pie",
|
||||
"xp": 260
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,538 @@
|
||||
{
|
||||
"actions": [
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 1759,
|
||||
"name": "Ball Of Wool",
|
||||
"xp": 2.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 1059,
|
||||
"name": "Leather Gloves",
|
||||
"xp": 13.8
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 1609,
|
||||
"name": "Opal",
|
||||
"xp": 15
|
||||
},
|
||||
{
|
||||
"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": 6,
|
||||
"icon": 1654,
|
||||
"name": "Gold Necklace",
|
||||
"xp": 20
|
||||
},
|
||||
{
|
||||
"level": 7,
|
||||
"icon": 1061,
|
||||
"name": "Leather Boots",
|
||||
"xp": 16.3
|
||||
},
|
||||
{
|
||||
"level": 7,
|
||||
"icon": 11068,
|
||||
"name": "Gold Bracelet",
|
||||
"xp": 25
|
||||
},
|
||||
{
|
||||
"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": 14,
|
||||
"icon": 1129,
|
||||
"name": "Leather Body",
|
||||
"xp": 25
|
||||
},
|
||||
{
|
||||
"level": 16,
|
||||
"icon": 1613,
|
||||
"name": "Red Topaz",
|
||||
"xp": 25
|
||||
},
|
||||
{
|
||||
"level": 16,
|
||||
"icon": 1718,
|
||||
"name": "Holy Symbol",
|
||||
"xp": 50
|
||||
},
|
||||
{
|
||||
"level": 17,
|
||||
"icon": 1724,
|
||||
"name": "Unholy Symbol",
|
||||
"xp": 50
|
||||
},
|
||||
{
|
||||
"level": 18,
|
||||
"icon": 1095,
|
||||
"name": "Leather Chaps",
|
||||
"xp": 27
|
||||
},
|
||||
{
|
||||
"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": 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": 27,
|
||||
"icon": 1605,
|
||||
"name": "Emerald",
|
||||
"xp": 67.5
|
||||
},
|
||||
{
|
||||
"level": 27,
|
||||
"icon": 1639,
|
||||
"name": "Emerald Ring",
|
||||
"xp": 55
|
||||
},
|
||||
{
|
||||
"level": 28,
|
||||
"icon": 1131,
|
||||
"name": "Hardleather Body",
|
||||
"xp": 35
|
||||
},
|
||||
{
|
||||
"level": 29,
|
||||
"icon": 1658,
|
||||
"name": "Emerald Necklace",
|
||||
"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": 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": 36,
|
||||
"icon": 5376,
|
||||
"name": "Basket",
|
||||
"xp": 56
|
||||
},
|
||||
{
|
||||
"level": 38,
|
||||
"icon": 1169,
|
||||
"name": "Coif",
|
||||
"xp": 37
|
||||
},
|
||||
{
|
||||
"level": 40,
|
||||
"icon": 1660,
|
||||
"name": "Ruby Necklace",
|
||||
"xp": 75
|
||||
},
|
||||
{
|
||||
"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": 46,
|
||||
"icon": 567,
|
||||
"name": "Unpowered Orb",
|
||||
"xp": 52.5
|
||||
},
|
||||
{
|
||||
"level": 49,
|
||||
"icon": 4542,
|
||||
"name": "Lantern Lens",
|
||||
"xp": 55
|
||||
},
|
||||
{
|
||||
"level": 50,
|
||||
"icon": 1679,
|
||||
"name": "Ruby Amulet (U)",
|
||||
"xp": 85
|
||||
},
|
||||
{
|
||||
"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": 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": 62,
|
||||
"icon": 1393,
|
||||
"name": "Fire Battlestaff",
|
||||
"xp": 125
|
||||
},
|
||||
{
|
||||
"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": 6564,
|
||||
"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": 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": "Dragon 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": 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": 60
|
||||
},
|
||||
{
|
||||
"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": 60
|
||||
},
|
||||
{
|
||||
"level": 87,
|
||||
"icon": 21352,
|
||||
"name": "Amethyst Javelin Heads",
|
||||
"xp": 60
|
||||
},
|
||||
{
|
||||
"level": 87,
|
||||
"icon": 10973,
|
||||
"name": "Light Orb",
|
||||
"xp": 70
|
||||
},
|
||||
{
|
||||
"level": 89,
|
||||
"icon": 19499,
|
||||
"name": "Zenyte Ring",
|
||||
"xp": 150
|
||||
},
|
||||
{
|
||||
"level": 89,
|
||||
"icon": 19493,
|
||||
"name": "Zenyte",
|
||||
"xp": 200
|
||||
},
|
||||
{
|
||||
"level": 90,
|
||||
"icon": 6579,
|
||||
"name": "Onyx Amulet (U)",
|
||||
"xp": 165
|
||||
},
|
||||
{
|
||||
"level": 92,
|
||||
"icon": 19500,
|
||||
"name": "Zenyte Necklace",
|
||||
"xp": 165
|
||||
},
|
||||
{
|
||||
"level": 95,
|
||||
"icon": 19492,
|
||||
"name": "Zenyte Bracelet",
|
||||
"xp": 180
|
||||
},
|
||||
{
|
||||
"level": 98,
|
||||
"icon": 19501,
|
||||
"name": "Zenyte Amulet (U)",
|
||||
"xp": 200
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"bonuses": [
|
||||
{
|
||||
"name": "Farmer's Outfit (+2.5%)",
|
||||
"value": 0.025
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"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": 12,
|
||||
"icon": 1982,
|
||||
"name": "Tomatoes",
|
||||
"xp": 12.5
|
||||
},
|
||||
{
|
||||
"level": 20,
|
||||
"icon": 5986,
|
||||
"name": "Sweetcorn",
|
||||
"xp": 17
|
||||
},
|
||||
{
|
||||
"level": 31,
|
||||
"icon": 5504,
|
||||
"name": "Strawberries",
|
||||
"xp": 26
|
||||
},
|
||||
{
|
||||
"level": 47,
|
||||
"icon": 5982,
|
||||
"name": "Watermelons",
|
||||
"xp": 49
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"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": 75,
|
||||
"icon": 1513,
|
||||
"name": "Magic Logs",
|
||||
"xp": 303.8
|
||||
},
|
||||
{
|
||||
"level": 90,
|
||||
"icon": 19669,
|
||||
"name": "Redwood Logs",
|
||||
"xp": 350
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
{
|
||||
"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": 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": 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": 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": 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": 81,
|
||||
"icon": 389,
|
||||
"name": "Raw Manta Ray",
|
||||
"xp": 46
|
||||
},
|
||||
{
|
||||
"level": 82,
|
||||
"icon": 13439,
|
||||
"name": "Raw Anglerfish",
|
||||
"xp": 120
|
||||
},
|
||||
{
|
||||
"level": 85,
|
||||
"icon": 11934,
|
||||
"name": "Raw Dark Crab",
|
||||
"xp": 130
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,550 @@
|
||||
{
|
||||
"actions": [
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 52,
|
||||
"name": "Arrow Shaft",
|
||||
"xp": 5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 53,
|
||||
"name": "Headless Arrow",
|
||||
"xp": 1
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 882,
|
||||
"name": "Bronze Arrow",
|
||||
"xp": 1.3
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 806,
|
||||
"name": "Bronze Dart",
|
||||
"xp": 1.8
|
||||
},
|
||||
{
|
||||
"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": 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": 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": 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.5
|
||||
},
|
||||
{
|
||||
"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": 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": 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": 11212,
|
||||
"name": "Dragon Arrow",
|
||||
"xp": 15
|
||||
},
|
||||
{
|
||||
"level": 92,
|
||||
"icon": 22266,
|
||||
"name": "Redwood Shield",
|
||||
"xp": 216
|
||||
},
|
||||
{
|
||||
"level": 95,
|
||||
"icon": 11230,
|
||||
"name": "Dragon Dart",
|
||||
"xp": 25
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,298 @@
|
||||
{
|
||||
"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": 20,
|
||||
"icon": 255,
|
||||
"name": "Harralander",
|
||||
"xp": 6.3
|
||||
},
|
||||
{
|
||||
"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": 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": 40,
|
||||
"icon": 259,
|
||||
"name": "Irit Leaf",
|
||||
"xp": 8.8
|
||||
},
|
||||
{
|
||||
"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": 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": 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": 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": 78,
|
||||
"icon": 189,
|
||||
"name": "Zamorak Brew (3)",
|
||||
"xp": 175
|
||||
},
|
||||
{
|
||||
"level": 79,
|
||||
"icon": 5954,
|
||||
"name": "Antidote++ (3)",
|
||||
"xp": 177.5
|
||||
},
|
||||
{
|
||||
"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": 87,
|
||||
"icon": 12907,
|
||||
"name": "Anti-venom(3)",
|
||||
"xp": 90
|
||||
},
|
||||
{
|
||||
"level": 90,
|
||||
"icon": 12695,
|
||||
"name": "Super Combat Potion(4)",
|
||||
"xp": 150
|
||||
},
|
||||
{
|
||||
"level": 94,
|
||||
"icon": 12915,
|
||||
"name": "Anti-venom+(3)",
|
||||
"xp": 125
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
{
|
||||
"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": 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": 15,
|
||||
"icon": 9970,
|
||||
"name": "Ruby Harvest",
|
||||
"xp": 24
|
||||
},
|
||||
{
|
||||
"level": 19,
|
||||
"icon": 9969,
|
||||
"name": "Tropical Wagtail",
|
||||
"xp": 95
|
||||
},
|
||||
{
|
||||
"level": 23,
|
||||
"icon": 9953,
|
||||
"name": "Wild Kebbit",
|
||||
"xp": 128
|
||||
},
|
||||
{
|
||||
"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": 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": 35,
|
||||
"icon": 9972,
|
||||
"name": "Snowy Knight",
|
||||
"xp": 44
|
||||
},
|
||||
{
|
||||
"level": 37,
|
||||
"icon": 9957,
|
||||
"name": "Prickly Kebbit",
|
||||
"xp": 204
|
||||
},
|
||||
{
|
||||
"level": 41,
|
||||
"icon": 10051,
|
||||
"name": "Horned Graahk",
|
||||
"xp": 240
|
||||
},
|
||||
{
|
||||
"level": 43,
|
||||
"icon": 9960,
|
||||
"name": "Spotted Kebbit",
|
||||
"xp": 104
|
||||
},
|
||||
{
|
||||
"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": 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": 59,
|
||||
"icon": 10147,
|
||||
"name": "Red Salamander",
|
||||
"xp": 272
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 19556,
|
||||
"name": "Maniacal Monkey",
|
||||
"xp": 1000
|
||||
},
|
||||
{
|
||||
"level": 63,
|
||||
"icon": 9977,
|
||||
"name": "Carnivorous Chinchompa",
|
||||
"xp": 265
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"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": 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": 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": 449,
|
||||
"name": "Adamantite Ore",
|
||||
"xp": 95
|
||||
},
|
||||
{
|
||||
"level": 85,
|
||||
"icon": 451,
|
||||
"name": "Runite Ore",
|
||||
"xp": 125
|
||||
},
|
||||
{
|
||||
"level": 92,
|
||||
"icon": 21347,
|
||||
"name": "Amethyst",
|
||||
"xp": 240
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,284 @@
|
||||
{
|
||||
"bonuses": [
|
||||
{
|
||||
"name": "Lit Gilded Altar (+350%)",
|
||||
"value": 3.5
|
||||
},
|
||||
{
|
||||
"name": "Ectofuntus (+400%)",
|
||||
"value": 4
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 526,
|
||||
"name": "Bones",
|
||||
"xp": 4.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13480,
|
||||
"name": "Ensouled Elf Head",
|
||||
"xp": 754
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13456,
|
||||
"name": "Ensouled Minotaur Head",
|
||||
"xp": 364
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13459,
|
||||
"name": "Ensouled Scorpion Head",
|
||||
"xp": 454
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13462,
|
||||
"name": "Ensouled Bear Head",
|
||||
"xp": 480
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13465,
|
||||
"name": "Ensouled Unicorn Head",
|
||||
"xp": 494
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13468,
|
||||
"name": "Ensouled Dog Head",
|
||||
"xp": 520
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13471,
|
||||
"name": "Ensouled Chaos Druid Head",
|
||||
"xp": 584
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13474,
|
||||
"name": "Ensouled Giant Head",
|
||||
"xp": 650
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13477,
|
||||
"name": "Ensouled Ogre Head",
|
||||
"xp": 716
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13483,
|
||||
"name": "Ensouled Troll Head",
|
||||
"xp": 780
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13450,
|
||||
"name": "Ensouled Monkey Head",
|
||||
"xp": 182
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13486,
|
||||
"name": "Ensouled Horror Head",
|
||||
"xp": 832
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13489,
|
||||
"name": "Ensouled Kalphite Head",
|
||||
"xp": 884
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13492,
|
||||
"name": "Ensouled Dagannoth Head",
|
||||
"xp": 936
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13495,
|
||||
"name": "Ensouled Bloodveld Head",
|
||||
"xp": 1040
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13498,
|
||||
"name": "Ensouled Tzhaar Head",
|
||||
"xp": 1104
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13501,
|
||||
"name": "Ensouled Demon Head",
|
||||
"xp": 1170
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13504,
|
||||
"name": "Ensouled Aviansie Head",
|
||||
"xp": 1234
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13507,
|
||||
"name": "Ensouled Abyssal Head",
|
||||
"xp": 1300
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13510,
|
||||
"name": "Ensouled Dragon Head",
|
||||
"xp": 1560
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13453,
|
||||
"name": "Ensouled Imp Head",
|
||||
"xp": 286
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 13447,
|
||||
"name": "Ensouled Goblin Head",
|
||||
"xp": 130
|
||||
},
|
||||
{
|
||||
"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": 4834,
|
||||
"name": "Ourg Bones",
|
||||
"xp": 140
|
||||
},
|
||||
{
|
||||
"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": 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": 6729,
|
||||
"name": "Dagannoth Bones",
|
||||
"xp": 125
|
||||
},
|
||||
{
|
||||
"level": 70,
|
||||
"icon": 22124,
|
||||
"name": "Superior Dragon Bones",
|
||||
"xp": 150
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"actions": [
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5527,
|
||||
"name": "Air Tiara",
|
||||
"xp": 25
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5541,
|
||||
"name": "Nature Tiara",
|
||||
"xp": 45
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5529,
|
||||
"name": "Mind Tiara",
|
||||
"xp": 27.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 556,
|
||||
"name": "Air Rune",
|
||||
"xp": 5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5547,
|
||||
"name": "Death Tiara",
|
||||
"xp": 50
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5545,
|
||||
"name": "Law Tiara",
|
||||
"xp": 47.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 22121,
|
||||
"name": "Wrath Tiara",
|
||||
"xp": 52.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5543,
|
||||
"name": "Chaos Tiara",
|
||||
"xp": 42.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5533,
|
||||
"name": "Body Tiara",
|
||||
"xp": 37.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5537,
|
||||
"name": "Fire Tiara",
|
||||
"xp": 35
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5535,
|
||||
"name": "Earth Tiara",
|
||||
"xp": 32.5
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5531,
|
||||
"name": "Water Tiara",
|
||||
"xp": 30
|
||||
},
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 5539,
|
||||
"name": "Cosmic Tiara",
|
||||
"xp": 40
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"icon": 558,
|
||||
"name": "Mind Rune",
|
||||
"xp": 5.5
|
||||
},
|
||||
{
|
||||
"level": 5,
|
||||
"icon": 555,
|
||||
"name": "Water Rune",
|
||||
"xp": 6
|
||||
},
|
||||
{
|
||||
"level": 5,
|
||||
"icon": 4697,
|
||||
"name": "Smoke Rune",
|
||||
"xp": 9.5
|
||||
},
|
||||
{
|
||||
"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": 19,
|
||||
"icon": 4694,
|
||||
"name": "Steam Rune",
|
||||
"xp": 10
|
||||
},
|
||||
{
|
||||
"level": 20,
|
||||
"icon": 559,
|
||||
"name": "Body Rune",
|
||||
"xp": 7.5
|
||||
},
|
||||
{
|
||||
"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": 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": 23.8
|
||||
},
|
||||
{
|
||||
"level": 90,
|
||||
"icon": 566,
|
||||
"name": "Soul Rune",
|
||||
"xp": 29.7
|
||||
},
|
||||
{
|
||||
"level": 95,
|
||||
"icon": 21880,
|
||||
"name": "Wrath Rune",
|
||||
"xp": 8
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,232 @@
|
||||
{
|
||||
"actions": [
|
||||
{
|
||||
"level": 1,
|
||||
"icon": 3241,
|
||||
"name": "Man / Woman",
|
||||
"xp": 8
|
||||
},
|
||||
{
|
||||
"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": 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": 49,
|
||||
"icon": 837,
|
||||
"name": "Crossbow Stall",
|
||||
"xp": 52
|
||||
},
|
||||
{
|
||||
"level": 50,
|
||||
"icon": 2355,
|
||||
"name": "Silver Stall",
|
||||
"xp": 54
|
||||
},
|
||||
{
|
||||
"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": 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": 85,
|
||||
"icon": 6105,
|
||||
"name": "Elf",
|
||||
"xp": 353
|
||||
},
|
||||
{
|
||||
"level": 90,
|
||||
"icon": 21278,
|
||||
"name": "TzHaar-Hur",
|
||||
"xp": 103.4
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"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": 140.2
|
||||
},
|
||||
{
|
||||
"level": 60,
|
||||
"icon": 1515,
|
||||
"name": "Yew Logs",
|
||||
"xp": 175
|
||||
},
|
||||
{
|
||||
"level": 75,
|
||||
"icon": 1513,
|
||||
"name": "Magic Logs",
|
||||
"xp": 250
|
||||
},
|
||||
{
|
||||
"level": 90,
|
||||
"icon": 19669,
|
||||
"name": "Redwood Logs",
|
||||
"xp": 380
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user