diff --git a/src/engine/objects/SkillsBase.java b/src/engine/objects/SkillsBase.java index 718c0bd6..a750c029 100644 --- a/src/engine/objects/SkillsBase.java +++ b/src/engine/objects/SkillsBase.java @@ -11,11 +11,16 @@ package engine.objects; import engine.gameManager.DbManager; import engine.mbEnums.SourceType; +import engine.parsers.objects.RuneTemplate; import engine.server.MBServerStatics; +import engine.util.Hasher; +import org.pmw.tinylog.Logger; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -102,6 +107,31 @@ public class SkillsBase extends AbstractGameObject { return null; } + // Level 0 adjusts are the skills a rune grants outright; higher levels are trainer caps + public static void LoadAllRuneSkills() { + + HashMap grantedSkills; + int entryCount = 0; + + for (RuneTemplate rune : RuneTemplate._runes.values()) { + + grantedSkills = new HashMap<>(); + + for (Map.Entry> skillAdjust : rune.rune_skill_adj.entrySet()) + for (int[] adjust : skillAdjust.getValue()) + if (adjust[1] == 0) + grantedSkills.put(Hasher.SBStringHash(skillAdjust.getKey()), adjust[0]); + + if (grantedSkills.isEmpty()) + continue; + + runeSkillsCache.put(rune.template_id, grantedSkills); + entryCount += grantedSkills.size(); + } + + Logger.info("Loaded " + entryCount + " granted skills for " + runeSkillsCache.size() + " runes"); + } + public static void putInCache(SkillsBase sb) { if (sb == null) diff --git a/src/engine/server/world/WorldServer.java b/src/engine/server/world/WorldServer.java index 35bdd602..43f56bcb 100644 --- a/src/engine/server/world/WorldServer.java +++ b/src/engine/server/world/WorldServer.java @@ -282,9 +282,6 @@ public class WorldServer { Logger.info("Initializing PowersManager."); PowersManager.initPowersManager(true); - Logger.info("Loading granted Skills for Runes"); - DbManager.SkillsBaseQueries.LOAD_ALL_RUNE_SKILLS(); - Logger.info("Loading Player Friends"); DbManager.PlayerCharacterQueries.LOAD_PLAYER_FRIENDS(); @@ -353,6 +350,10 @@ public class WorldServer { BaseClass.LoadAllBaseClasses(); Race.loadAllRaces(); RuneBaseEffect.LoadRuneBaseEffects(); + + Logger.info("Loading granted Skills for Runes"); + SkillsBase.LoadAllRuneSkills(); + Logger.info("Loading MobBases."); DbManager.MobBaseQueries.GET_ALL_MOBBASES();