// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2026 // https://www.magicbane.com package engine.objects; import engine.mbEnums; import engine.parsers.objects.RuneTemplate; import engine.util.Hasher; import org.pmw.tinylog.Logger; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class MaxSkills { public static HashMap> MaxSkillsSet = new HashMap<>(); private int runeID; private int skillToken; private int skillLevel; private int maxSkillPercent; public MaxSkills(int runeID, int skillToken, int skillLevel, int maxSkillPercent) { super(); this.runeID = runeID; this.skillToken = skillToken; this.skillLevel = skillLevel; this.maxSkillPercent = maxSkillPercent; } public static void LoadAllMaxSkills() { ArrayList 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> 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"); } public int getRuneID() { return runeID; } public void setRuneID(int runeID) { this.runeID = runeID; } public int getSkillLevel() { return skillLevel; } public void setSkillLevel(int skillLevel) { this.skillLevel = skillLevel; } public int getSkillToken() { return skillToken; } public void setSkillToken(int skillToken) { this.skillToken = skillToken; } public int getMaxSkillPercent() { return maxSkillPercent; } public void setMaxSkillPercent(int maxSkillPercent) { this.maxSkillPercent = maxSkillPercent; } }