2026-07-26 19:08:44 -04:00
|
|
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
|
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
|
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
|
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
|
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
|
|
|
// Magicbane Emulator Project © 2013 - 2026
|
|
|
|
|
// https://www.magicbane.com
|
2022-04-30 09:41:17 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
package engine.objects;
|
|
|
|
|
|
2026-10-22 07:46:18 -04:00
|
|
|
import engine.mbEnums;
|
|
|
|
|
import engine.parsers.objects.RuneTemplate;
|
|
|
|
|
import engine.util.Hasher;
|
|
|
|
|
import org.pmw.tinylog.Logger;
|
|
|
|
|
|
2022-04-30 09:41:17 -04:00
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashMap;
|
2026-10-22 07:46:18 -04:00
|
|
|
import java.util.Map;
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public class MaxSkills {
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public static HashMap<Integer, ArrayList<MaxSkills>> MaxSkillsSet = new HashMap<>();
|
|
|
|
|
private int runeID;
|
|
|
|
|
private int skillToken;
|
|
|
|
|
private int skillLevel;
|
|
|
|
|
private int maxSkillPercent;
|
2022-04-30 09:41:17 -04:00
|
|
|
|
|
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public MaxSkills(int runeID, int skillToken, int skillLevel, int maxSkillPercent) {
|
|
|
|
|
super();
|
|
|
|
|
this.runeID = runeID;
|
|
|
|
|
this.skillToken = skillToken;
|
|
|
|
|
this.skillLevel = skillLevel;
|
2022-04-30 09:41:17 -04:00
|
|
|
this.maxSkillPercent = maxSkillPercent;
|
|
|
|
|
}
|
|
|
|
|
|
2026-10-22 07:46:18 -04:00
|
|
|
public static void LoadAllMaxSkills() {
|
|
|
|
|
|
|
|
|
|
ArrayList<MaxSkills> maxSkillsList;
|
|
|
|
|
int entryCount = 0;
|
|
|
|
|
|
|
|
|
|
// Talents only: class/discipline/race adjusts are skill grants, and contracts that key on those runes would read them as caps
|
|
|
|
|
for (RuneTemplate rune : RuneTemplate._runes.values()) {
|
|
|
|
|
if (rune.rune_type != mbEnums.RuneType.TALENT || rune.rune_skill_adj.isEmpty())
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
maxSkillsList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (Map.Entry<String, ArrayList<int[]>> skillAdjust : rune.rune_skill_adj.entrySet())
|
|
|
|
|
for (int[] adjust : skillAdjust.getValue())
|
|
|
|
|
maxSkillsList.add(new MaxSkills(rune.template_id, Hasher.SBStringHash(skillAdjust.getKey()), adjust[1], adjust[0]));
|
|
|
|
|
|
|
|
|
|
MaxSkillsSet.put(rune.template_id, maxSkillsList);
|
|
|
|
|
entryCount += maxSkillsList.size();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Logger.info("Loaded " + entryCount + " max skills for " + MaxSkillsSet.size() + " runes");
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public int getRuneID() {
|
|
|
|
|
return runeID;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public void setRuneID(int runeID) {
|
|
|
|
|
this.runeID = runeID;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public int getSkillLevel() {
|
|
|
|
|
return skillLevel;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public void setSkillLevel(int skillLevel) {
|
|
|
|
|
this.skillLevel = skillLevel;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public int getSkillToken() {
|
|
|
|
|
return skillToken;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public void setSkillToken(int skillToken) {
|
|
|
|
|
this.skillToken = skillToken;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public int getMaxSkillPercent() {
|
|
|
|
|
return maxSkillPercent;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
|
2023-07-15 09:23:48 -04:00
|
|
|
public void setMaxSkillPercent(int maxSkillPercent) {
|
|
|
|
|
this.maxSkillPercent = maxSkillPercent;
|
|
|
|
|
}
|
2022-04-30 09:41:17 -04:00
|
|
|
}
|