Load trainer max skills from talent rune_skill_adj instead of static_rune_maxskills
Parity (scripts/p27.py): all 78 DB runes match (token, skillLevel = pair level, maxSkillPercent = pair rank). Talents only, as decided in Task 2.7: class/discipline/race adjusts are skill grants, and contracts whose class ID is such a rune (Thief, Huntress, Warlock, Fighter, 8 disciplines, Vampire) would otherwise gain trainer caps. The selector adds Brawler 250054 and guard talents 252621-252623; no contract keys on them, so no reachable value change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0921b031ea
commit
e3aae0af5c
2 files changed
+30
-1
No files matched your search
@@ -9,10 +9,16 @@
|
|||||||
|
|
||||||
package engine.objects;
|
package engine.objects;
|
||||||
|
|
||||||
|
import engine.mbEnums;
|
||||||
|
import engine.parsers.objects.RuneTemplate;
|
||||||
|
import engine.util.Hasher;
|
||||||
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class MaxSkills {
|
public class MaxSkills {
|
||||||
|
|
||||||
@@ -42,6 +48,29 @@ public class MaxSkills {
|
|||||||
this.maxSkillPercent = maxSkillPercent;
|
this.maxSkillPercent = maxSkillPercent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
public int getRuneID() {
|
public int getRuneID() {
|
||||||
return runeID;
|
return runeID;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ public class WorldServer {
|
|||||||
Runegate.loadAllRunegates();
|
Runegate.loadAllRunegates();
|
||||||
|
|
||||||
Logger.info("Loading Max Skills for Trainers");
|
Logger.info("Loading Max Skills for Trainers");
|
||||||
DbManager.SkillsBaseQueries.LOAD_ALL_MAX_SKILLS_FOR_CONTRACT();
|
MaxSkills.LoadAllMaxSkills();
|
||||||
|
|
||||||
//pick a startup Hotzone
|
//pick a startup Hotzone
|
||||||
ZoneManager.generateAndSetRandomHotzone();
|
ZoneManager.generateAndSetRandomHotzone();
|
||||||
|
|||||||
Reference in new issue
Block a user