diff --git a/src/engine/objects/PowerGrantedTrains.java b/src/engine/objects/PowerGrantedTrains.java index e4d7dda9..413eccd5 100644 --- a/src/engine/objects/PowerGrantedTrains.java +++ b/src/engine/objects/PowerGrantedTrains.java @@ -10,6 +10,7 @@ package engine.objects; import engine.gameManager.DbManager; +import engine.mbEnums; import engine.parsers.objects.RuneTemplate; import engine.server.MBServerStatics; import engine.util.Hasher; @@ -94,14 +95,19 @@ public class PowerGrantedTrains { return (short) 0; } - // Trains are power_arguments[0] of the first action; only mob race runes carry more than one. + // Trains are power_arguments[0] of the first action. Mob race runes are skipped: + // their power actions are mob power ranks by level, not trains. public static void loadGrantedPowers() { ConcurrentHashMap powerGrants = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW); int token; int grantCount = 0; - for (RuneTemplate rune : RuneTemplate._runes.values()) + for (RuneTemplate rune : RuneTemplate._runes.values()) { + + if (rune.rune_type == mbEnums.RuneType.RACE && Race.getRace(rune.template_id) == null) + continue; + for (Map.Entry> powerAction : rune.item_power_action.entrySet()) { if (powerAction.getValue().isEmpty()) @@ -112,6 +118,7 @@ public class PowerGrantedTrains { .addRuneGrant(rune.template_id, (short) powerAction.getValue().get(0)[0]); grantCount++; } + } PowerGrantedTrains.grantedPowers = powerGrants; Logger.info("Loaded " + grantCount + " power train grants for " + powerGrants.size() + " powers");