Load rune granted skills from level-0 rune_skill_adj instead of static_skill_skillsgranted
Load moved after the rune templates are parsed. Parity (scripts/p27.py): 76 of 107 DB runes match. Value changes (JSON wins, Task 2.7 decisions): - Blade Master 3005: Sword +10 removed (no rune_skill_adj in the JSON; Blade Weaver 3006 keeps Sword +10). Reaches players via PlayerBonuses. - Pet 2522: Dodge and Unarmed Combat 1 -> 22. Not reachable; players never hold the Pet rune. - 29 Master X / trainer runes lose their rows (no level-0 pairs in the JSON). Not reachable; players never hold trainer runes. Their caps still load into MaxSkills. - 2243 mob/guard race runes gain rows. Not reachable; PlayerBonuses only reads player race/class/promotion/held runes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e3aae0af5c
commit
865949fd1c
2 files changed
+34
-3
No files matched your search
@@ -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<Integer, Integer> grantedSkills;
|
||||
int entryCount = 0;
|
||||
|
||||
for (RuneTemplate rune : RuneTemplate._runes.values()) {
|
||||
|
||||
grantedSkills = new HashMap<>();
|
||||
|
||||
for (Map.Entry<String, ArrayList<int[]>> 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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in new issue
Block a user