Merge pull request #2251 from marshdevs/2123-diary-level-requirements

Add level requirements to diaries
This commit is contained in:
Adam
2018-07-23 17:50:06 -04:00
committed by GitHub
18 changed files with 1616 additions and 0 deletions

View File

@@ -106,6 +106,7 @@ public class WidgetID
public static final int DESTROY_ITEM_GROUP_ID = 584;
public static final int VARROCK_MUSEUM_QUIZ_GROUP_ID = 533;
public static final int KILL_LOGS_GROUP_ID = 549;
public static final int DIARY_QUEST_GROUP_ID = 275;
static class WorldMap
{
@@ -549,6 +550,12 @@ public class WidgetID
static final int BARROWS_REWARD_INVENTORY = 3;
}
static class Diary
{
static final int DIARY_TITLE = 2;
static final int DIARY_TEXT = 1;
}
static class MTA
{
static final int BONUS_COMPONENT = 7;

View File

@@ -73,6 +73,9 @@ public enum WidgetInfo
DIARY_LIST(WidgetID.DIARY_GROUP_ID, 4),
DIARY_QUEST_WIDGET_TITLE(WidgetID.DIARY_QUEST_GROUP_ID, WidgetID.Diary.DIARY_TITLE),
DIARY_QUEST_WIDGET_TEXT(WidgetID.DIARY_QUEST_GROUP_ID, WidgetID.Diary.DIARY_TEXT),
PEST_CONTROL_PURPLE_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.PURPLE_SHIELD),
PEST_CONTROL_BLUE_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.BLUE_SHIELD),
PEST_CONTROL_YELLOW_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.YELLOW_SHIELD),

View File

@@ -0,0 +1,41 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary;
import lombok.Getter;
@Getter
class DiaryRequirement
{
private final String task;
private final Requirement[] skillRequirements;
DiaryRequirement(String task, Requirement[] skillRequirements)
{
this.task = task;
this.skillRequirements = skillRequirements;
}
}

View File

@@ -0,0 +1,272 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary;
import com.google.common.eventbus.Subscribe;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.achievementdiary.diaries.ArdougneDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.DesertDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.FaladorDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.FremennikDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.KandarinDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.KaramjaDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.LumbridgeDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.MorytaniaDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.VarrockDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.WesternDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.diaries.WildernessDiaryRequirement;
import net.runelite.client.util.Text;
@Slf4j
@PluginDescriptor(
name = "Diary Requirements",
description = "Display level requirements in Achievement Diary interface",
tags = {"achievements", "tasks"}
)
public class DiaryRequirementsPlugin extends Plugin
{
@Inject
private Client client;
@Subscribe
public void onWidgetLoaded(final WidgetLoaded event)
{
if (event.getGroupId() == WidgetID.DIARY_QUEST_GROUP_ID)
{
String widgetTitle = Text.removeTags(
client.getWidget(
WidgetInfo.DIARY_QUEST_WIDGET_TITLE)
.getText())
.replace(' ', '_')
.toUpperCase();
if (widgetTitle.startsWith("ACHIEVEMENT_DIARY"))
{
showDiaryRequirements();
}
}
}
private void showDiaryRequirements()
{
Widget widget = client.getWidget(WidgetInfo.DIARY_QUEST_WIDGET_TEXT);
Widget[] children = widget.getStaticChildren();
Widget titleWidget = children[0];
if (titleWidget == null)
{
return;
}
List<String> originalAchievements = getOriginalAchievements(children);
// new requirements starts out as a copy of the original
List<String> newRequirements = new ArrayList<>(originalAchievements);
GenericDiaryRequirement requirements = getRequirementsForTitle(titleWidget.getText());
if (requirements == null)
{
log.debug("Unknown achievement diary {}", titleWidget.getText());
return;
}
Map<String, String> skillRequirements = buildRequirements(requirements.getRequirements());
if (skillRequirements == null)
{
return;
}
int offset = 0;
String taskBuffer = "";
for (int i = 0; i < originalAchievements.size(); i++)
{
String rowText = Text.removeTags(originalAchievements.get(i));
if (skillRequirements.get(taskBuffer + " " + rowText) != null)
{
taskBuffer = taskBuffer + " " + rowText;
}
else
{
taskBuffer = rowText;
}
if (skillRequirements.get(taskBuffer) != null)
{
String levelRequirement = skillRequirements.get(taskBuffer);
String task = originalAchievements.get(i);
if (Text.removeTags(task).length() + Text.removeTags(levelRequirement).length() <= 50)
{
newRequirements.set(i + offset, task + levelRequirement);
}
else
{
offset++;
if (task.startsWith("<str>"))
{
newRequirements.add(i + offset, "<str>" + levelRequirement);
}
else
{
newRequirements.add(i + offset, levelRequirement);
}
}
}
}
for (int i = 0; i < newRequirements.size() && i < children.length; i++)
{
Widget achievementWidget = children[i];
achievementWidget.setText(newRequirements.get(i));
}
}
private List<String> getOriginalAchievements(Widget[] children)
{
List<String> preloadedRequirements = new ArrayList<>(children.length);
for (Widget requirementWidget : children)
{
preloadedRequirements.add(requirementWidget.getText());
}
return preloadedRequirements;
}
private GenericDiaryRequirement getRequirementsForTitle(String title)
{
String diaryName = Text.removeTags(title
.replaceAll(" ", "_")
.toUpperCase());
GenericDiaryRequirement diaryRequirementContainer;
switch (diaryName)
{
case "ARDOUGNE_AREA_TASKS":
diaryRequirementContainer = new ArdougneDiaryRequirement();
break;
case "DESERT_TASKS":
diaryRequirementContainer = new DesertDiaryRequirement();
break;
case "FALADOR_AREA_TASKS":
diaryRequirementContainer = new FaladorDiaryRequirement();
break;
case "FREMENNIK_TASKS":
diaryRequirementContainer = new FremennikDiaryRequirement();
break;
case "KANDARIN_TASKS":
diaryRequirementContainer = new KandarinDiaryRequirement();
break;
case "KARAMJA_AREA_TASKS":
diaryRequirementContainer = new KaramjaDiaryRequirement();
break;
case "LUMBRIDGE_&_DRAYNOR_TASKS":
diaryRequirementContainer = new LumbridgeDiaryRequirement();
break;
case "MORYTANIA_TASKS":
diaryRequirementContainer = new MorytaniaDiaryRequirement();
break;
case "VARROCK_TASKS":
diaryRequirementContainer = new VarrockDiaryRequirement();
break;
case "WESTERN_AREA_TASKS":
diaryRequirementContainer = new WesternDiaryRequirement();
break;
case "WILDERNESS_AREA_TASKS":
diaryRequirementContainer = new WildernessDiaryRequirement();
break;
default:
return null;
}
return diaryRequirementContainer;
}
// returns a map of task -> level requirements
private Map<String, String> buildRequirements(Collection<DiaryRequirement> requirements)
{
Map<String, String> lineIndexRequirementMap = new HashMap<>();
for (DiaryRequirement req : requirements)
{
String reqTask = req.getTask();
List<RequirementStringBuilder> requirementBuilders = new ArrayList<>();
for (Requirement i : req.getSkillRequirements())
{
RequirementStringBuilder requirementStringBuilder = new RequirementStringBuilder(i);
int realSkillLevel = client.getRealSkillLevel(i.getSkill());
List<Integer> altRealSkillLevels = null;
if (i.getAltRequirements() != null)
{
altRealSkillLevels = new ArrayList<>();
for (Requirement j : i.getAltRequirements())
{
altRealSkillLevels.add(client.getRealSkillLevel(j.getSkill()));
}
}
if (requirementStringBuilder.hasLevelRequirement(realSkillLevel, altRealSkillLevels))
{
requirementStringBuilder.strikeThroughRequirement();
}
else
{
requirementStringBuilder.colorRedRequirement();
}
requirementBuilders .add(requirementStringBuilder);
}
lineIndexRequirementMap.put(reqTask, combine(requirementBuilders ));
}
return lineIndexRequirementMap;
}
private String combine(List<RequirementStringBuilder> list)
{
StringBuilder requirementsString = new StringBuilder();
requirementsString.append("<col=000000> (");
for (RequirementStringBuilder req : list)
{
requirementsString.append("<col=000080>")
.append(req.getRequirementString())
.append(", ");
}
requirementsString.deleteCharAt(requirementsString.length() - 1);
requirementsString.deleteCharAt(requirementsString.length() - 2);
requirementsString.append("<col=000000>)");
return requirementsString.toString();
}
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary;
import java.util.HashSet;
import java.util.Set;
import lombok.Getter;
public abstract class GenericDiaryRequirement
{
@Getter
private Set<DiaryRequirement> requirements = new HashSet<>();
protected void add(String task, Requirement... requirements)
{
DiaryRequirement diaryRequirement = new DiaryRequirement(task, requirements);
this.requirements.add(diaryRequirement);
}
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary;
import lombok.Getter;
import net.runelite.api.Skill;
@Getter
public class Requirement
{
private final Skill skill;
private final int levelRequirement;
private final Requirement[] altRequirements;
public Requirement(Skill skill, int levelRequirement, Requirement... altRequirements)
{
this.skill = skill;
this.levelRequirement = levelRequirement;
this.altRequirements = altRequirements;
}
}

View File

@@ -0,0 +1,92 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary;
import java.util.List;
import lombok.Getter;
import net.runelite.api.Skill;
class RequirementStringBuilder
{
private final Requirement requirement;
@Getter
private String requirementString;
RequirementStringBuilder(Requirement requirement)
{
this.requirement = requirement;
int levelRequirement = requirement.getLevelRequirement();
Skill skill = requirement.getSkill();
Requirement[] altRequirements = requirement.getAltRequirements();
StringBuilder requirementStringBuilder = new StringBuilder()
.append(levelRequirement)
.append(" ")
.append(skill.getName());
for (Requirement i : altRequirements)
{
requirementStringBuilder.append(" or ")
.append(i.getLevelRequirement())
.append(" ")
.append(i.getSkill().getName());
}
this.requirementString = requirementStringBuilder.toString();
}
void strikeThroughRequirement()
{
this.requirementString = "<str>" + this.requirementString + "</str>";
}
void colorRedRequirement()
{
this.requirementString = "<col=800000>" + this.requirementString + "</col>";
}
boolean hasLevelRequirement(int realSkillLevel, List<Integer> altRealSkillLevels)
{
return hasLevelRequirement(requirement, realSkillLevel, altRealSkillLevels);
}
private static boolean hasLevelRequirement(Requirement requirement, int realSkillLevel, List<Integer> altRealSkillLevels)
{
int levelRequirement = requirement.getLevelRequirement();
Requirement[] altRequirements = requirement.getAltRequirements();
boolean hasReq = (realSkillLevel >= levelRequirement);
if (altRequirements != null && altRealSkillLevels != null)
{
int reqCounter = 0;
for (Requirement i : altRequirements)
{
hasReq = (hasReq || hasLevelRequirement(i, altRealSkillLevels.get(reqCounter), null));
reqCounter++;
}
}
return hasReq;
}
}

View File

@@ -0,0 +1,102 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class ArdougneDiaryRequirement extends GenericDiaryRequirement
{
public ArdougneDiaryRequirement()
{
// EASY
add("Steal a cake from the Ardougne market stalls.",
new Requirement(Skill.THIEVING, 5));
// MEDIUM
add("Grapple over Yanille's south wall.",
new Requirement(Skill.AGILITY, 39),
new Requirement(Skill.STRENGTH, 38),
new Requirement(Skill.RANGED, 21));
add("Harvest some strawberries from the Ardougne farming patch.",
new Requirement(Skill.FARMING, 31));
add("Cast the Ardougne Teleport spell.",
new Requirement(Skill.MAGIC, 51));
add("Travel to Castlewars by Hot Air Balloon.",
new Requirement(Skill.FIREMAKING, 50));
add("Claim buckets of sand from Bert in Yanille.",
new Requirement(Skill.CRAFTING, 49));
add("Pickpocket the master farmer north of Ardougne.",
new Requirement(Skill.THIEVING, 38));
add("Equip Iban's upgraded staff or upgrade an Iban staff.",
new Requirement(Skill.MAGIC, 50),
new Requirement(Skill.ATTACK, 50));
// HARD
add("Enter the Magic Guild.",
new Requirement(Skill.MAGIC, 66));
add("Attempt to steal from King Lathas' chest.",
new Requirement(Skill.THIEVING, 72));
add("Teleport to the Watchtower.",
new Requirement(Skill.ATTACK, 58));
add("Catch a Red Salamander.",
new Requirement(Skill.HUNTER, 59));
add("Check the health of a Palm tree near tree gnome village.",
new Requirement(Skill.FARMING, 68));
add("Pick some Poison Ivy berries from the patch south of Ardougne.",
new Requirement(Skill.FARMING, 70));
add("Smith a Mithril platebody near Ardougne.",
new Requirement(Skill.SMITHING, 68));
add("Enter your POH from Yanille.",
new Requirement(Skill.CONSTRUCTION, 50));
add("Smith a Dragon sq shield in West Ardougne.",
new Requirement(Skill.SMITHING, 60));
add("Craft some Death runes.",
new Requirement(Skill.RUNECRAFT, 65));
// ELITE
add("Catch a Manta ray in the Fishing Trawler and cook it in Port Khazard.",
new Requirement(Skill.FISHING, 81),
new Requirement(Skill.COOKING, 91)
);
add("Attempt to picklock the door to the basement of Yanille Agility Dungeon.",
new Requirement(Skill.THIEVING, 82));
add("Pickpocket a Hero.",
new Requirement(Skill.THIEVING, 80));
add("Make a rune crossbow yourself from scratch within Witchaven or Yanille.",
new Requirement(Skill.CRAFTING, 10),
new Requirement(Skill.SMITHING, 91),
new Requirement(Skill.FLETCHING, 69));
add("Pick some Torstol from the patch north of Ardougne.",
new Requirement(Skill.FARMING, 85));
add("Complete a lap of Ardougne's rooftop agility course.",
new Requirement(Skill.AGILITY, 90));
add("Cast Ice Barrage on another player within Castlewars.",
new Requirement(Skill.MAGIC, 94));
}
}

View File

@@ -0,0 +1,94 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class DesertDiaryRequirement extends GenericDiaryRequirement
{
public DesertDiaryRequirement()
{
// EASY
add("Catch a Golden Warbler.",
new Requirement(Skill.HUNTER, 5));
add("Mine 5 clay in the north-eastern desert.",
new Requirement(Skill.MINING, 5));
add("Open the Sarcophagus in the first room of Pyramid Plunder.",
new Requirement(Skill.THIEVING, 21));
// MEDIUM
add("Climb to the summit of the Agility Pyramid.",
new Requirement(Skill.AGILITY, 30));
add("Slay a desert lizard.",
new Requirement(Skill.SLAYER, 22));
add("Catch an Orange Salamander.",
new Requirement(Skill.HUNTER, 47));
add("Steal a feather from the Desert Phoenix.",
new Requirement(Skill.THIEVING, 25));
add("Create a combat potion in the desert.",
new Requirement(Skill.HERBLORE, 36));
add("Teleport to Pollnivneach with a redirected teleport to house tablet.",
new Requirement(Skill.CONSTRUCTION, 20));
add("Chop some Teak logs near Uzer.",
new Requirement(Skill.WOODCUTTING, 35));
// HARD
add("Knock out and pickpocket a Menaphite Thug.",
new Requirement(Skill.THIEVING, 65));
add("Mine some Granite.",
new Requirement(Skill.MINING, 45));
add("Refill your waterskins in the Desert using Lunar magic.",
new Requirement(Skill.MAGIC, 68));
add("Complete a lap of the Pollnivneach agility course.",
new Requirement(Skill.AGILITY, 70));
add("Slay a Dust Devil with a Slayer helmet equipped.",
new Requirement(Skill.SLAYER, 65),
new Requirement(Skill.DEFENCE, 10),
new Requirement(Skill.CRAFTING, 55));
add("Defeat a Locust Rider with Keris.",
new Requirement(Skill.ATTACK, 50));
add("Burn some yew logs on the Nardah Mayor's balcony.",
new Requirement(Skill.FIREMAKING, 60));
add("Create a Mithril Platebody in Nardah.",
new Requirement(Skill.SMITHING, 68));
// ELITE
add("Bake a wild pie at the Nardah Clay Oven.",
new Requirement(Skill.COOKING, 85));
add("Cast Ice Barrage against a foe in the Desert.",
new Requirement(Skill.MAGIC, 94));
add("Fletch some Dragon darts at the Bedabin Camp.",
new Requirement(Skill.FLETCHING, 95));
add("Speak to the KQ head in your POH.",
new Requirement(Skill.CONSTRUCTION, 78));
add("Steal from the Grand Gold Chest in the final room of Pyramid Plunder.",
new Requirement(Skill.THIEVING, 91));
add("Restore at least 85 Prayer points when praying at the Altar in Sophanem.",
new Requirement(Skill.PRAYER, 85));
}
}

View File

@@ -0,0 +1,105 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class FaladorDiaryRequirement extends GenericDiaryRequirement
{
public FaladorDiaryRequirement()
{
// EASY
add("Find out what your family crest is from Sir Renitee.",
new Requirement(Skill.CONSTRUCTION, 16));
add("Climb over the western Falador wall.",
new Requirement(Skill.AGILITY, 5));
add("Smith some Blurite Limbs on Doric's Anvil.",
new Requirement(Skill.MINING, 10),
new Requirement(Skill.SMITHING, 13));
// MEDIUM
add("Light a Bullseye lantern at the Chemist's in Rimmington.",
new Requirement(Skill.FIREMAKING, 49));
add("Telegrab some Wine of Zamorak at the Chaos Temple by the Wilderness.",
new Requirement(Skill.MAGIC, 33));
add("Place a Scarecrow in the Falador farming patch.",
new Requirement(Skill.FARMING, 23));
add("Kill a Mogre at Mudskipper Point.",
new Requirement(Skill.SLAYER, 32));
add("Grapple up and then jump off the north Falador wall.",
new Requirement(Skill.AGILITY, 11),
new Requirement(Skill.STRENGTH, 37),
new Requirement(Skill.RANGED, 19));
add("Pickpocket a Falador guard.",
new Requirement(Skill.THIEVING, 40));
add("Pray at the Altar of Guthix in Taverley whilst wearing full Initiate.",
new Requirement(Skill.PRAYER, 10),
new Requirement(Skill.DEFENCE, 20));
add("Mine some Gold ore at the Crafting Guild.",
new Requirement(Skill.CRAFTING, 40),
new Requirement(Skill.MINING, 40));
add("Squeeze through the crevice in the Dwarven mines.",
new Requirement(Skill.AGILITY, 42));
add("Chop and burn some Willow logs in Taverley",
new Requirement(Skill.WOODCUTTING, 30),
new Requirement(Skill.FIREMAKING, 30));
add("Craft a fruit basket on the Falador Farm loom.",
new Requirement(Skill.CRAFTING, 36));
add("Teleport to Falador.",
new Requirement(Skill.MAGIC, 37));
// HARD
add("Craft 140 Mind runes simultaneously.",
new Requirement(Skill.RUNECRAFT, 56));
add("Change your family crest to the Saradomin symbol.",
new Requirement(Skill.PRAYER, 70));
add("Kill a Skeletal Wyvern in the Asgarnia Ice Dungeon.",
new Requirement(Skill.SLAYER, 72));
add("Complete a lap of the Falador rooftop agility course.",
new Requirement(Skill.AGILITY, 50));
add("Enter the mining guild wearing full prospector.",
new Requirement(Skill.MINING, 60));
add("Crack a wall safe within Rogues Den.",
new Requirement(Skill.THIEVING, 50));
add("Recharge your prayer in the Port Sarim church while wearing full Proselyte.",
new Requirement(Skill.DEFENCE, 30));
add("Equip a dwarven helmet within the dwarven mines.",
new Requirement(Skill.DEFENCE, 50));
// ELITE
add("Craft 252 Air Runes simultaneously.",
new Requirement(Skill.RUNECRAFT, 88));
add("Find at least 3 magic roots at once when digging up your magic tree in Falador.",
new Requirement(Skill.FARMING, 91),
new Requirement(Skill.WOODCUTTING, 75));
add("Jump over the strange floor in Taverley dungeon.",
new Requirement(Skill.AGILITY, 80));
add("Mix a Saradomin brew in Falador east bank.",
new Requirement(Skill.HERBLORE, 81));
}
}

View File

@@ -0,0 +1,96 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class FremennikDiaryRequirement extends GenericDiaryRequirement
{
public FremennikDiaryRequirement()
{
// EASY
add("Catch a Cerulean twitch.",
new Requirement(Skill.HUNTER, 11));
add("Craft a tiara from scratch in Rellekka.",
new Requirement(Skill.CRAFTING, 23),
new Requirement(Skill.MINING, 20),
new Requirement(Skill.SMITHING, 20));
add("Steal from the Keldagrim crafting or baker's stall.",
new Requirement(Skill.THIEVING, 5));
add("Chop and burn some oak logs in the Fremennik Province.",
new Requirement(Skill.WOODCUTTING, 15),
new Requirement(Skill.FIREMAKING, 15));
// MEDIUM
add("Slay a Brine rat.",
new Requirement(Skill.SLAYER, 47));
add("Mine some coal in Rellekka.",
new Requirement(Skill.MINING, 30));
add("Steal from the Rellekka Fish stalls.",
new Requirement(Skill.THIEVING, 42));
add("Catch a Snowy knight.",
new Requirement(Skill.HUNTER, 35));
add("Pick up your Pet Rock from your POH Menagerie.",
new Requirement(Skill.CONSTRUCTION, 37));
add("Mine some gold at the Arzinian mine.",
new Requirement(Skill.MINING, 40));
// HARD
add("Teleport to Trollheim.",
new Requirement(Skill.MAGIC, 61));
add("Catch a Sabre-toothed Kyatt.",
new Requirement(Skill.HUNTER, 55));
add("Mix a super defence potion in the Fremennik province.",
new Requirement(Skill.HERBLORE, 66));
add("Steal from the Keldagrim Gem Stall.",
new Requirement(Skill.THIEVING, 75));
add("Craft a Fremennik shield on Neitiznot.",
new Requirement(Skill.WOODCUTTING, 56));
add("Mine 5 Adamantite ores on Jatizso.",
new Requirement(Skill.MINING, 70));
add("Teleport to Waterbirth Island.",
new Requirement(Skill.MAGIC, 72));
add("Obtain the Blast Furnace Foreman's permission to use the Blast Furnace for free.",
new Requirement(Skill.SMITHING, 60));
// ELITE
add("Craft 56 astral runes at once.",
new Requirement(Skill.RUNECRAFT, 82));
add("Create a dragonstone amulet in the Neitiznot furnace.",
new Requirement(Skill.CRAFTING, 80));
add("Complete a lap of the Rellekka agility course.",
new Requirement(Skill.AGILITY, 80));
add("Kill each of the Godwars generals.",
new Requirement(Skill.AGILITY, 70),
new Requirement(Skill.STRENGTH, 70),
new Requirement(Skill.HITPOINTS, 70),
new Requirement(Skill.RANGED, 70));
add("Slay a Spiritual mage within the Godwars Dungeon.",
new Requirement(Skill.SLAYER, 83));
}
}

View File

@@ -0,0 +1,112 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class KandarinDiaryRequirement extends GenericDiaryRequirement
{
public KandarinDiaryRequirement()
{
// EASY
add("Catch a Mackerel at Catherby.",
new Requirement(Skill.FISHING, 16));
add("Plant some Jute seeds in the patch north of McGrubor's Wood.",
new Requirement(Skill.FARMING, 13));
add("Cross the Coal truck log shortcut.",
new Requirement(Skill.AGILITY, 20));
// MEDIUM
add("Complete a lap of the Barbarian agility course.",
new Requirement(Skill.AGILITY, 35));
add("Create a Super Antipoison potion from scratch in the Seers/Catherby Area.",
new Requirement(Skill.HERBLORE, 48));
add("Enter the Ranging guild.",
new Requirement(Skill.RANGED, 40));
add("Use the grapple shortcut to get from the water obelisk to Catherby shore.",
new Requirement(Skill.AGILITY, 36),
new Requirement(Skill.STRENGTH, 22),
new Requirement(Skill.RANGED, 39));
add("Catch and cook a Bass in Catherby.",
new Requirement(Skill.FISHING, 46),
new Requirement(Skill.COOKING, 43));
add("Teleport to Camelot.",
new Requirement(Skill.MAGIC, 45));
add("String a Maple shortbow in Seers' Village bank.",
new Requirement(Skill.FLETCHING, 50));
add("Pick some Limpwurt root from the farming patch in Catherby.",
new Requirement(Skill.FARMING, 26));
add("Steal from the chest in Hemenster.",
new Requirement(Skill.THIEVING, 47));
add("Mine some coal near the coal trucks.",
new Requirement(Skill.MINING, 53));
// HARD
add("Catch a Leaping Sturgeon.",
new Requirement(Skill.FISHING, 70),
new Requirement(Skill.AGILITY, 45),
new Requirement(Skill.STRENGTH, 45));
add("Complete a lap of the Seers' Village agility course.",
new Requirement(Skill.AGILITY, 60));
add("Create a Yew Longbow from scratch around Seers' Village.",
new Requirement(Skill.WOODCUTTING, 60),
new Requirement(Skill.FLETCHING, 70),
new Requirement(Skill.CRAFTING, 10));
add("Enter the Seers' Village courthouse with piety turned on.",
new Requirement(Skill.PRAYER, 70),
new Requirement(Skill.DEFENCE, 70));
add("Charge a Water Orb.",
new Requirement(Skill.MAGIC, 56));
add("Burn some Maple logs with a bow in Seers' Village.",
new Requirement(Skill.FIREMAKING, 65));
add("Purchase and equip a granite body from Barbarian Assault.",
new Requirement(Skill.STRENGTH, 50),
new Requirement(Skill.DEFENCE, 50));
add("Have the Seers' estate agent decorate your house with Fancy Stone.",
new Requirement(Skill.CONSTRUCTION, 50));
add("Smith an Adamant spear at Otto's Grotto.",
new Requirement(Skill.SMITHING, 75));
// ELITE
add("Pick some Dwarf weed from the herb patch at Catherby.",
new Requirement(Skill.FARMING, 79));
add("Fish and Cook 5 Sharks in Catherby using the Cooking gauntlets.",
new Requirement(Skill.FISHING, 76),
new Requirement(Skill.COOKING, 80));
add("Mix a Stamina Mix on top of the Seers' Village bank.",
new Requirement(Skill.HERBLORE, 86),
new Requirement(Skill.AGILITY, 60));
add("Smith a Rune Hasta at Otto's Grotto.",
new Requirement(Skill.SMITHING, 90));
add("Construct a Pyre ship from Magic Logs.(Requires Chewed Bones.)",
new Requirement(Skill.FIREMAKING, 85),
new Requirement(Skill.CRAFTING, 85));
add("Teleport to Catherby.",
new Requirement(Skill.MAGIC, 87));
}
}

View File

@@ -0,0 +1,104 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class KaramjaDiaryRequirement extends GenericDiaryRequirement
{
public KaramjaDiaryRequirement()
{
// EASY
add("Use the rope swing to travel to the small island north-west of Karamja, where the " +
"moss giants are.",
new Requirement(Skill.AGILITY, 10));
add("Mine some gold from the rocks on the north-west peninsula of Karamja.",
new Requirement(Skill.MINING, 40));
add("Explore Cairn Island to the west of Karamja.",
new Requirement(Skill.AGILITY, 15));
// MEDIUM
add("Claim a ticket from the Agility Arena in Brimhaven.",
new Requirement(Skill.AGILITY, 30));
add("Earn 100% favour in the village of Tai Bwo Wannai.",
new Requirement(Skill.WOODCUTTING, 10));
add("Cook a spider on a stick.",
new Requirement(Skill.COOKING, 16));
add("Cut a log from a teak tree.",
new Requirement(Skill.WOODCUTTING, 35));
add("Cut a log from a mahogany tree.",
new Requirement(Skill.WOODCUTTING, 50));
add("Catch a karambwan.",
new Requirement(Skill.FISHING, 65));
add("Grow a healthy fruit tree in the patch near Brimhaven.",
new Requirement(Skill.FARMING, 27));
add("Trap a horned graahk.",
new Requirement(Skill.HUNTER, 41));
add("Chop the vines to gain deeper access to Brimhaven Dungeon.",
new Requirement(Skill.FARMING, 27));
add("Cross the lava using the stepping stones within Brimhaven Dungeon.",
new Requirement(Skill.AGILITY, 12));
add("Climb the stairs within Brimhaven Dungeon.",
new Requirement(Skill.WOODCUTTING, 10));
add("Mine a red topaz from a gem rock.",
new Requirement(Skill.MINING, 40));
// HARD
add("Craft some nature runes.",
new Requirement(Skill.RUNECRAFT, 44));
add("Cook a karambwan thoroughly.",
new Requirement(Skill.COOKING, 30));
add("Kill a deathwing in the dungeon under the Kharazi Jungle.",
new Requirement(Skill.WOODCUTTING, 15),
new Requirement(Skill.STRENGTH, 50),
new Requirement(Skill.AGILITY, 50),
new Requirement(Skill.THIEVING, 50),
new Requirement(Skill.MINING, 52));
add("Use the crossbow short cut south of the volcano.",
new Requirement(Skill.AGILITY, 53),
new Requirement(Skill.RANGED, 42),
new Requirement(Skill.STRENGTH, 21));
add("Collect 5 palm leaves.",
new Requirement(Skill.WOODCUTTING, 15));
add("Be assigned a Slayer task by Duradel north of Shilo Village.",
new Requirement(Skill.SLAYER, 50));
add("Kill a metal dragon in Brimhaven Dungeon.",
new Requirement(Skill.AGILITY, 12),
new Requirement(Skill.WOODCUTTING, 34));
// ELITE
add("Craft 56 Nature runes at once.",
new Requirement(Skill.RUNECRAFT, 91));
add("Check the health of a palm tree in Brimhaven.",
new Requirement(Skill.FARMING, 68));
add("Create an antivenom potion whilst standing in the horse shoe mine.",
new Requirement(Skill.HERBLORE, 87));
add("Check the health of your Calquat tree patch.",
new Requirement(Skill.FARMING, 72));
}
}

View File

@@ -0,0 +1,108 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class LumbridgeDiaryRequirement extends GenericDiaryRequirement
{
public LumbridgeDiaryRequirement()
{
// EASY
add("Complete a lap of the Draynor Village agility course.",
new Requirement(Skill.AGILITY, 10));
add("Slay a Cave bug beneath Lumbridge Swamp.",
new Requirement(Skill.SLAYER, 7));
add("Craft some water runes.",
new Requirement(Skill.RUNECRAFT, 5));
add("Chop and burn some oak logs in Lumbridge.",
new Requirement(Skill.WOODCUTTING, 15),
new Requirement(Skill.FIREMAKING, 15));
add("Catch some Anchovies in Al Kharid.",
new Requirement(Skill.FISHING, 15));
add("Mine some Iron ore at the Al Kharid mine.",
new Requirement(Skill.MINING, 15));
// MEDIUM
add("Complete a lap of the Al Kharid agility course.",
new Requirement(Skill.AGILITY, 20));
add("Grapple across the River Lum.",
new Requirement(Skill.AGILITY, 8),
new Requirement(Skill.STRENGTH, 19),
new Requirement(Skill.RANGED, 37));
add("Purchase an upgraded device from Ava.",
new Requirement(Skill.RANGED, 50));
add("Cast the teleport to Lumbridge spell.",
new Requirement(Skill.MAGIC, 31));
add("Catch some Salmon in Lumbridge.",
new Requirement(Skill.FISHING, 30));
add("Craft a coif in the Lumbridge cow pen.",
new Requirement(Skill.CRAFTING, 38));
add("Chop some willow logs in Draynor Village.",
new Requirement(Skill.WOODCUTTING, 30));
add("Pickpocket Martin the Master Gardener.",
new Requirement(Skill.THIEVING, 38));
add("Catch an Essence or Eclectic impling in Puro-Puro.",
new Requirement(Skill.HUNTER, 42));
add("Craft some Lava runes at the fire altar in Al Kharid.",
new Requirement(Skill.RUNECRAFT, 23));
// HARD
add("Cast Bones to Peaches in Al Kharid palace.",
new Requirement(Skill.MAGIC, 60));
add("Squeeze past the jutting wall on your way to the cosmic altar.",
new Requirement(Skill.AGILITY, 46));
add("Craft 56 Cosmic runes simultaneously.",
new Requirement(Skill.RUNECRAFT, 59));
add("Travel from Lumbridge to Edgeville on a Waka Canoe.",
new Requirement(Skill.FARMING, 63));
add("Pick some Belladonna from the farming patch at Draynor Manor.",
new Requirement(Skill.FARMING, 68));
add("Light your mining helmet in the Lumbridge castle basement.",
new Requirement(Skill.FIREMAKING, 65));
add("Recharge your prayer at Clan Wars with Smite activated.",
new Requirement(Skill.PRAYER, 52));
add("Craft, string and enchant an Amulet of Power in Lumbridge.",
new Requirement(Skill.CRAFTING, 70),
new Requirement(Skill.MAGIC, 57));
// ELITE
add("Steal from a Dorgesh-Kaan rich chest.",
new Requirement(Skill.THIEVING, 78));
add("Pickpocket Movario on the Dorgesh-Kaan Agility course.",
new Requirement(Skill.AGILITY, 70),
new Requirement(Skill.RANGED, 70),
new Requirement(Skill.STRENGTH, 70));
add("Chop some magic logs at the Mage Training Arena.",
new Requirement(Skill.WOODCUTTING, 75));
add("Smith an Adamant platebody down Draynor sewer.",
new Requirement(Skill.SMITHING, 88));
add("Craft 140 or more Water runes at once.",
new Requirement(Skill.RUNECRAFT, 76));
}
}

View File

@@ -0,0 +1,107 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class MorytaniaDiaryRequirement extends GenericDiaryRequirement
{
public MorytaniaDiaryRequirement()
{
// EASY
add("Craft any Snelm from scratch in Morytania.",
new Requirement(Skill.CRAFTING, 15));
add("Cook a thin Snail on the Port Phasmatys range.",
new Requirement(Skill.COOKING, 12));
add("Kill a Banshee in the Slayer Tower.",
new Requirement(Skill.SLAYER, 15));
add("Place a Scarecrow in the Morytania flower patch.",
new Requirement(Skill.FARMING, 23));
// MEDIUM
add("Catch a swamp lizard.",
new Requirement(Skill.HUNTER, 29));
add("Complete a lap of the Canifis agility course.",
new Requirement(Skill.AGILITY, 40));
add("Obtain some Bark from a Hollow tree.",
new Requirement(Skill.WOODCUTTING, 45));
add("Kill a Terror Dog.",
new Requirement(Skill.SLAYER, 40));
add("Complete a game of trouble brewing.",
new Requirement(Skill.COOKING, 40));
add("Make a batch of cannonballs at the Port Phasmatys furnace.",
new Requirement(Skill.SMITHING, 35));
add("Kill a Fever Spider on Braindeath Island.",
new Requirement(Skill.SLAYER, 42));
add("Mix a Guthix Balance potion while in Morytania.",
new Requirement(Skill.HERBLORE, 36));
// HARD
add("Enter the Kharyrll portal in your POH.",
new Requirement(Skill.MAGIC, 66),
new Requirement(Skill.CONSTRUCTION, 50));
add("Climb the advanced spike chain within Slayer Tower.",
new Requirement(Skill.AGILITY, 71));
add("Harvest some Watermelon from the Allotment patch on Harmony Island.",
new Requirement(Skill.FARMING, 47));
add("Chop and burn some mahogany logs on Mos Le'Harmless.",
new Requirement(Skill.WOODCUTTING, 50),
new Requirement(Skill.FIREMAKING, 50));
add("Kill a Cave Horror.",
new Requirement(Skill.SLAYER, 58));
add("Harvest some Bittercap Mushrooms from the patch in Canifis.",
new Requirement(Skill.FARMING, 53));
add("Pray at the Altar of Nature with Piety activated.",
new Requirement(Skill.PRAYER, 70),
new Requirement(Skill.DEFENCE, 70));
add("Use the shortcut to get to the bridge over the Salve.",
new Requirement(Skill.AGILITY, 65));
add("Mine some Mithril ore in the Abandoned Mine.",
new Requirement(Skill.MINING, 55));
// ELITE
add("Catch a shark in Burgh de Rott with your bare hands.",
new Requirement(Skill.FISHING, 96),
new Requirement(Skill.STRENGTH, 76));
add("Cremate any Shade remains on a Magic or Redwood pyre.",
new Requirement(Skill.FIREMAKING, 80));
add("Fertilize the Morytania herb patch using Lunar Magic.",
new Requirement(Skill.MAGIC, 83));
add("Craft a Black dragonhide body in Canifis bank.",
new Requirement(Skill.CRAFTING, 84));
add("Kill an Abyssal demon in the Slayer Tower.",
new Requirement(Skill.SLAYER, 61));
add("Loot the Barrows chest while wearing any complete barrows set.",
new Requirement(Skill.DEFENCE, 70),
new Requirement(Skill.ATTACK, 70,
new Requirement(Skill.STRENGTH, 70),
new Requirement(Skill.RANGED, 70),
new Requirement(Skill.MAGIC, 70))
);
}
}

View File

@@ -0,0 +1,93 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class VarrockDiaryRequirement extends GenericDiaryRequirement
{
public VarrockDiaryRequirement()
{
// EASY
add("Mine some Iron in the south east mining patch near Varrock.",
new Requirement(Skill.MINING, 15));
add("Jump over the fence south of Varrock.",
new Requirement(Skill.AGILITY, 13));
add("Spin a bowl on the pottery wheel and fire it in the oven in Barb Village.",
new Requirement(Skill.CRAFTING, 8));
add("Craft some Earth runes.",
new Requirement(Skill.RUNECRAFT, 9));
add("Catch some trout in the River Lum at Barbarian Village.",
new Requirement(Skill.FISHING, 20));
add("Steal from the Tea stall in Varrock.",
new Requirement(Skill.THIEVING, 5));
// MEDIUM
add("Cast the teleport to Varrock spell.",
new Requirement(Skill.MAGIC, 25));
add("Pick a White tree fruit.",
new Requirement(Skill.FARMING, 25));
add("Use the balloon to travel from Varrock.",
new Requirement(Skill.FIREMAKING, 40));
add("Complete a lap of the Varrock Agility course.",
new Requirement(Skill.AGILITY, 30));
// HARD
add("Trade furs with the Fancy Dress Seller for a spottier cape and equip it.",
new Requirement(Skill.HUNTER, 66));
add("Make a Waka Canoe near Edgeville.",
new Requirement(Skill.WOODCUTTING, 57));
add("Teleport to Paddewwa.",
new Requirement(Skill.MAGIC, 54));
add("Chop some yew logs in Varrock and burn them at the top of the Varrock church.",
new Requirement(Skill.WOODCUTTING, 60),
new Requirement(Skill.FIREMAKING, 60));
add("Have the Varrock estate agent decorate your house with Fancy Stone.",
new Requirement(Skill.CONSTRUCTION, 50));
add("Collect at least 2 yew roots from the Tree patch in Varrock Palace.",
new Requirement(Skill.WOODCUTTING, 60),
new Requirement(Skill.FARMING, 68));
add("Pray at the altar in Varrock palace with Smite active.",
new Requirement(Skill.PRAYER, 52));
add("Squeeze through the obstacle pipe in Edgeville dungeon.",
new Requirement(Skill.AGILITY, 51));
// ELITE
add("Create a super combat potion in Varrock west bank.",
new Requirement(Skill.HERBLORE, 90));
add("Use Lunar magic to make 20 mahogany planks at the Lumberyard.",
new Requirement(Skill.MAGIC, 86));
add("Bake a summer pie in the Cooking Guild.",
new Requirement(Skill.COOKING, 95));
add("Smith and fletch ten rune darts within Varrock.",
new Requirement(Skill.SMITHING, 89),
new Requirement(Skill.FLETCHING, 81));
add("Craft 100 or more earth runes simultaneously.",
new Requirement(Skill.RUNECRAFT, 78));
}
}

View File

@@ -0,0 +1,98 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class WesternDiaryRequirement extends GenericDiaryRequirement
{
public WesternDiaryRequirement()
{
// EASY
add("Catch a Copper Longtail.",
new Requirement(Skill.HUNTER, 9));
add("Mine some Iron Ore near Piscatoris.",
new Requirement(Skill.MINING, 15));
add("Fletch an Oak shortbow from the Gnome Stronghold.",
new Requirement(Skill.FLETCHING, 20));
// MEDIUM
add("Take the agility shortcut from the Grand Tree to Otto's Grotto.",
new Requirement(Skill.AGILITY, 37));
add("Trap a Spined Larupia.",
new Requirement(Skill.HUNTER, 31));
add("Fish some Bass on Ape Atoll.",
new Requirement(Skill.FISHING, 46));
add("Chop and burn some teak logs on Ape Atoll.",
new Requirement(Skill.WOODCUTTING, 35),
new Requirement(Skill.FIREMAKING, 35));
add("Make a Chocolate Bomb at the Grand Tree.",
new Requirement(Skill.COOKING, 42));
add("Complete a delivery for the Gnome Restaurant.",
new Requirement(Skill.COOKING, 42));
add("Mine some Gold ore underneath the Grand Tree.",
new Requirement(Skill.MINING, 40));
// HARD
add("Kill an Elf with a Crystal bow.",
new Requirement(Skill.RANGED, 70),
new Requirement(Skill.AGILITY, 50));
add("Catch and cook a Monkfish in Piscatoris.",
new Requirement(Skill.FISHING, 62),
new Requirement(Skill.COOKING, 62));
add("Catch a Dashing Kebbit.",
new Requirement(Skill.HUNTER, 69));
add("Complete a lap of the Ape Atoll agility course.",
new Requirement(Skill.FARMING, 63));
add("Chop and burn some Mahogany logs on Ape Atoll.",
new Requirement(Skill.WOODCUTTING, 50),
new Requirement(Skill.FIREMAKING, 50));
add("Mine some Adamantite ore in Tirannwn.",
new Requirement(Skill.MINING, 70));
add("Check the health of your Palm tree in Lletya.",
new Requirement(Skill.FARMING, 68));
add("Build an Isafdar painting in your POH Quest hall.",
new Requirement(Skill.CONSTRUCTION, 65));
add("Teleport to Ape Atoll.",
new Requirement(Skill.MAGIC, 64));
add("Pickpocket a Gnome.",
new Requirement(Skill.THIEVING, 75));
// ELITE
add("Fletch a Magic Longbow in the Elven lands.",
new Requirement(Skill.FLETCHING, 85));
add("Kill the Thermonuclear Smoke devil (Does not require task).",
new Requirement(Skill.SLAYER, 93));
add("Have Prissy Scilla protect your Magic tree.",
new Requirement(Skill.FARMING, 75));
add("Use the Elven overpass advanced cliffside shortcut.",
new Requirement(Skill.AGILITY, 85));
add("Pickpocket an Elf.",
new Requirement(Skill.THIEVING, 85));
}
}

View File

@@ -0,0 +1,98 @@
/*
* Copyright (c) 2018, Marshall <https://github.com/marshdevs>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* 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.achievementdiary.diaries;
import net.runelite.api.Skill;
import net.runelite.client.plugins.achievementdiary.GenericDiaryRequirement;
import net.runelite.client.plugins.achievementdiary.Requirement;
public class WildernessDiaryRequirement extends GenericDiaryRequirement
{
public WildernessDiaryRequirement()
{
// EASY
add("Cast Low Alchemy at the Fountain of Rune.",
new Requirement(Skill.MAGIC, 21));
add("Kill an Earth Warrior in the Wilderness beneath Edgeville.",
new Requirement(Skill.AGILITY, 15));
add("Mine some Iron ore in the Wilderness.",
new Requirement(Skill.MINING, 15));
// MEDIUM
add("Mine some Mithril ore in the wilderness.",
new Requirement(Skill.MINING, 55));
add("Chop some yew logs from a fallen Ent.",
new Requirement(Skill.WOODCUTTING, 61));
add("Enter the Wilderness Godwars Dungeon.",
new Requirement(Skill.AGILITY, 60,
new Requirement(Skill.STRENGTH, 60))
);
add("Complete a lap of the Wilderness Agility course.",
new Requirement(Skill.AGILITY, 52));
add("Charge an Earth Orb.",
new Requirement(Skill.MAGIC, 60));
add("Kill a Bloodveld in the Wilderness Godwars Dungeon.",
new Requirement(Skill.SLAYER, 50));
add("Smith a Golden helmet in the Resource Area.",
new Requirement(Skill.SMITHING, 50));
// HARD
add("Cast one of the 3 God spells against another player in the Wilderness.",
new Requirement(Skill.MAGIC, 60));
add("Charge an Air Orb.",
new Requirement(Skill.MAGIC, 66));
add("Catch a Black Salamander in the Wilderness.",
new Requirement(Skill.HUNTER, 67));
add("Smith an Adamant scimitar in the Resource Area.",
new Requirement(Skill.SMITHING, 75));
add("Take the agility shortcut from Trollheim into the Wilderness.",
new Requirement(Skill.AGILITY, 64));
add("Kill a Spiritual warrior in the Wilderness Godwars Dungeon.",
new Requirement(Skill.SLAYER, 68));
add("Fish some Raw Lava Eel in the Wilderness.",
new Requirement(Skill.FISHING, 53));
// ELITE
add("Teleport to Ghorrock.",
new Requirement(Skill.MAGIC, 96));
add("Fish and Cook a Dark Crab in the Resource Area.",
new Requirement(Skill.FISHING, 85),
new Requirement(Skill.COOKING, 90));
add("Smith a rune scimitar from scratch in the Resource Area.",
new Requirement(Skill.MINING, 85),
new Requirement(Skill.SMITHING, 90));
add("Steal from the Rogues' chest.",
new Requirement(Skill.THIEVING, 84));
add("Slay a spiritual mage inside the wilderness Godwars Dungeon.",
new Requirement(Skill.SLAYER, 83),
new Requirement(Skill.AGILITY, 60,
new Requirement(Skill.STRENGTH, 60))
);
add("Cut and burn some magic logs in the Resource Area.",
new Requirement(Skill.WOODCUTTING, 75),
new Requirement(Skill.FIREMAKING, 75));
}
}