diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java
index 4befd43eb1..302822e534 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/CombatLevelRequirement.java
@@ -26,6 +26,7 @@ package net.runelite.client.plugins.achievementdiary;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import net.runelite.api.Client;
@RequiredArgsConstructor
@Getter
@@ -38,4 +39,9 @@ public class CombatLevelRequirement implements Requirement
{
return level + " " + "Combat";
}
+
+ public boolean satisfiesRequirement(Client client)
+ {
+ return client.getLocalPlayer() == null ? false : client.getLocalPlayer().getCombatLevel() >= level;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java
index ee77f19ecc..9afce27f26 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/DiaryRequirementsPlugin.java
@@ -35,9 +35,7 @@ import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.FontTypeFace;
-import net.runelite.api.QuestState;
import net.runelite.api.ScriptID;
-import net.runelite.api.VarPlayer;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
@@ -277,7 +275,7 @@ public class DiaryRequirementsPlugin extends Plugin
assert !req.getRequirements().isEmpty();
for (Requirement ireq : req.getRequirements())
{
- boolean satifisfied = satisfiesRequirement(ireq);
+ boolean satifisfied = ireq.satisfiesRequirement(client);
b.append(satifisfied ? "
" : "");
b.append(ireq.toString());
b.append(satifisfied ? "" : "");
@@ -292,45 +290,4 @@ public class DiaryRequirementsPlugin extends Plugin
}
return reqs;
}
-
- private boolean satisfiesRequirement(Requirement r)
- {
- if (r instanceof OrRequirement)
- {
- return ((OrRequirement) r).getRequirements()
- .stream()
- .anyMatch(this::satisfiesRequirement);
- }
- if (r instanceof SkillRequirement)
- {
- SkillRequirement s = (SkillRequirement) r;
- return client.getRealSkillLevel(s.getSkill()) >= s.getLevel();
- }
- if (r instanceof CombatLevelRequirement)
- {
- return client.getLocalPlayer().getCombatLevel() >= ((CombatLevelRequirement) r).getLevel();
- }
- if (r instanceof QuestRequirement)
- {
- QuestRequirement q = (QuestRequirement) r;
- QuestState state = q.getQuest().getState(client);
- if (q.isStarted())
- {
- return state != QuestState.NOT_STARTED;
- }
- return state == QuestState.FINISHED;
- }
- if (r instanceof QuestPointRequirement)
- {
- return client.getVar(VarPlayer.QUEST_POINTS) >= ((QuestPointRequirement) r).getQp();
- }
- if (r instanceof FavourRequirement)
- {
- FavourRequirement f = (FavourRequirement) r;
- int realFavour = client.getVar(f.getHouse().getVarbit());
- return (realFavour / 10) >= f.getPercent();
- }
- log.warn("Unknown requirement {}", r);
- return false;
- }
}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java
index 575faa0e75..916033f206 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/FavourRequirement.java
@@ -26,6 +26,7 @@ package net.runelite.client.plugins.achievementdiary;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import net.runelite.api.Client;
import net.runelite.api.Favour;
@RequiredArgsConstructor
@@ -40,4 +41,10 @@ public class FavourRequirement implements Requirement
{
return percent + "% " + house.getName() + " favour";
}
+
+ public boolean satisfiesRequirement(Client client)
+ {
+ int realFavour = client.getVar(house.getVarbit());
+ return (realFavour / 10) >= percent;
+ }
}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java
index 7b852426f9..44f9ebb0d5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/OrRequirement.java
@@ -28,6 +28,7 @@ import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import java.util.List;
import lombok.Getter;
+import net.runelite.api.Client;
public class OrRequirement implements Requirement
{
@@ -44,4 +45,16 @@ public class OrRequirement implements Requirement
{
return Joiner.on(" or ").join(requirements);
}
+
+ public boolean satisfiesRequirement(Client client)
+ {
+ for (Requirement r : getRequirements())
+ {
+ if (r.satisfiesRequirement(client))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java
index c2b13e7c9b..0813e6bed0 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestPointRequirement.java
@@ -26,6 +26,8 @@ package net.runelite.client.plugins.achievementdiary;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import net.runelite.api.Client;
+import net.runelite.api.VarPlayer;
@RequiredArgsConstructor
@Getter
@@ -38,4 +40,9 @@ public class QuestPointRequirement implements Requirement
{
return qp + " " + "Quest points";
}
+
+ public boolean satisfiesRequirement(Client client)
+ {
+ return client.getVar(VarPlayer.QUEST_POINTS) >= qp;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java
index cbc471651f..ca02ee682d 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/QuestRequirement.java
@@ -26,7 +26,9 @@ package net.runelite.client.plugins.achievementdiary;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import net.runelite.api.Client;
import net.runelite.api.Quest;
+import net.runelite.api.QuestState;
@Getter
@RequiredArgsConstructor
@@ -50,4 +52,14 @@ public class QuestRequirement implements Requirement
return quest.getName();
}
+
+ public boolean satisfiesRequirement(Client client)
+ {
+ QuestState questState = quest.getState(client);
+ if (started)
+ {
+ return questState != QuestState.NOT_STARTED;
+ }
+ return questState == QuestState.FINISHED;
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java
index a507cb4538..3360a15a7f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/Requirement.java
@@ -24,6 +24,9 @@
*/
package net.runelite.client.plugins.achievementdiary;
+import net.runelite.api.Client;
+
public interface Requirement
{
+ boolean satisfiesRequirement(Client client);
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java
index 1a711f91ac..ded0a3c84d 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/achievementdiary/SkillRequirement.java
@@ -26,6 +26,7 @@ package net.runelite.client.plugins.achievementdiary;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import net.runelite.api.Client;
import net.runelite.api.Skill;
@RequiredArgsConstructor
@@ -40,4 +41,9 @@ public class SkillRequirement implements Requirement
{
return level + " " + skill.getName();
}
+
+ public boolean satisfiesRequirement(Client client)
+ {
+ return client.getRealSkillLevel(skill) >= level;
+ }
}