RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
AchievementHandler.java
1package com.osroyale.content.achievement;
2
3import com.osroyale.game.world.entity.mob.player.Player;
4import com.osroyale.game.world.items.containers.bank.VaultCurrency;
5import com.osroyale.net.packet.out.SendAnnouncement;
6import com.osroyale.net.packet.out.SendMessage;
7
49
50public class AchievementHandler {
51
57 public static void activate(Player player, AchievementKey achievement) {
58 activate(player, achievement, 1);
59 }
60
66 public static void activate(Player player, AchievementKey achievement, int increase) {
67 final int current = player.playerAchievements.computeIfAbsent(achievement, a -> 0);
68 for (AchievementList list : AchievementList.values()) {
69 if (list.getKey() == achievement) {
70 if (current >= list.getAmount())
71 continue;
72 player.playerAchievements.put(achievement, current + increase);
73 if (player.playerAchievements.get(achievement) >= list.getAmount()) {
74 player.bankVault.add(VaultCurrency.BLOOD_MONEY, list.getReward().getAmount());
75 player.send(new SendAnnouncement("You've completed the achievement", "'" + list.getTask() + "'", list.getType().getColor()));
76 }
77 }
78 }
79 }
80
81 public static void set(Player player, AchievementKey achievement, int increase) {
82 final int current = player.playerAchievements.computeIfAbsent(achievement, a -> 0);
83 for (AchievementList list : AchievementList.values()) {
84 if (list.getKey() == achievement) {
85 if (current >= list.getAmount())
86 continue;
87 player.playerAchievements.put(achievement, increase);
88 if (player.playerAchievements.get(achievement) >= list.getAmount()) {
89 player.bankVault.add(VaultCurrency.BLOOD_MONEY, list.getReward().getAmount());
90 player.send(new SendAnnouncement("You've completed the achievement", "'" + list.getTask() + "'", list.getType().getColor()));
91 }
92 }
93 }
94 }
95
97 public static void completeAll(Player player) {
98 if (!completedAll(player)) {
99 for (AchievementList achievement : AchievementList.values()) {
100 if (!player.playerAchievements.containsKey(achievement.getKey())) {
101 player.playerAchievements.put(achievement.getKey(), achievement.getAmount());
102 continue;
103 }
104 player.playerAchievements.replace(achievement.getKey(), achievement.getAmount());
105 }
106 player.send(new SendMessage("You have successfully mastered all achievements."));
107 }
108 }
109
111 public static boolean completed(Player player, AchievementList achievement) {
112 if (!player.playerAchievements.containsKey(achievement.getKey()))
113 player.playerAchievements.put(achievement.getKey(), 0);
114 return player.playerAchievements.get(achievement.getKey()) >= achievement.getAmount();
115 }
116
118 public static int getTotalCompleted(Player player) {
119 int count = 0;
120 for (AchievementList achievement : AchievementList.values()) {
121 if (player.playerAchievements.containsKey(achievement.getKey()) && completed(player, achievement)) count++;
122 }
123 return count;
124 }
125
126 static int getDifficultyAmount(AchievementType difficulty) {
127 return AchievementList.asList(difficulty).size();
128 }
129
130 public static int getColor(Player player, AchievementType difficulty) {
131 int count = getDifficultyCompletion(player, difficulty);
132
133 if (count == 0) {
134 return 0xFF0000;
135 }
136
137 return count == getDifficultyAmount(difficulty) ? 0x257A1A : 0xFFFF00;
138 }
139
141 public static int getDifficultyCompletion(Player player, AchievementType difficulty) {
142 int count = 0;
143 for (AchievementList achievement : AchievementList.values()) {
144 if (player.playerAchievements.containsKey(achievement.getKey()) && achievement.getType() == difficulty && completed(player, achievement))
145 count++;
146 }
147 return count;
148 }
149
151 public static int getDifficultyAchievement(AchievementType difficulty) {
152 int count = 0;
153 for (AchievementList achievement : AchievementList.values()) {
154 if (achievement.getType() == difficulty) count++;
155 }
156 return count;
157 }
158
160 public static boolean completedAll(Player player) {
161 return getTotalCompleted(player) == AchievementList.getTotal();
162 }
163}
static boolean completed(Player player, AchievementList achievement)
static void activate(Player player, AchievementKey achievement)
static int getDifficultyCompletion(Player player, AchievementType difficulty)
static void activate(Player player, AchievementKey achievement, int increase)
static int getDifficultyAchievement(AchievementType difficulty)
boolean add(VaultCurrency currency, long amount)