Compare monster type restrictions as MonsterType

PowersBase.monsterTypeRestrictions is now an EnumSet<MonsterType>
(DB values Siege/Centaur/Dwarf/Vampire read with CacheParserUtil.readEnum).
MobBase gets monsterType from its race rune's rune_sub_type (all 2380
RACE runes convert); players use RaceType.getMonsterType(). No string
compares and no rune lookup per cast. Same results as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MagicBotandClaude Opus 5.5 committed 2026-10-23 15:59:37 -04:00
1 parent 7b58211386
commit a6f2495e57
3 files changed
+23 -12

No files matched your search

+12 -8
View File
@@ -28,7 +28,6 @@ import engine.net.Dispatch;
import engine.net.client.ClientConnection;
import engine.net.client.msg.*;
import engine.objects.*;
import engine.parsers.objects.RuneTemplate;
import engine.parsers.objects.wpak.PowerTemplate;
import engine.powers.*;
import engine.powers.poweractions.AbstractPowerAction;
@@ -1285,20 +1284,25 @@ public enum PowersManager {
return false;
}
// MONSTERTYPERESTRICTS: a target's monster type is its race rune's rune_sub_type (client g_MonsterTypeEnum, rune +0xC)
// MONSTERTYPERESTRICTS: mobs use their race rune's monster type, players their RaceType's
private static boolean isRestrictedMonsterType(AbstractWorldObject target, PowersBase pb) {
RuneTemplate raceRune = null;
MonsterType monsterType = null;
PlayerCharacter player;
if (target == null || pb.monsterTypeRestrictions.isEmpty())
return false;
if (target.getObjectType() == GameObjectType.Mob)
raceRune = RuneTemplate._runes.get(((Mob) target).getMobBaseID());
else if (target.getObjectType() == GameObjectType.PlayerCharacter && ((PlayerCharacter) target).race != null)
raceRune = RuneTemplate._runes.get(((PlayerCharacter) target).race.getRaceRuneID());
if (target.getObjectType() == GameObjectType.Mob && ((Mob) target).getMobBase() != null)
monsterType = ((Mob) target).getMobBase().monsterType;
else if (target.getObjectType() == GameObjectType.PlayerCharacter) {
player = (PlayerCharacter) target;
return raceRune != null && pb.monsterTypeRestrictions.contains(raceRune.rune_sub_type);
if (player.race != null && player.race.getRaceType() != null)
monsterType = player.race.getRaceType().getMonsterType();
}
return monsterType != null && pb.monsterTypeRestrictions.contains(monsterType);
}
public static void sendRecyclePower(int token, ClientConnection origin) {