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

+4
View File
@@ -14,6 +14,7 @@ import engine.gameManager.ItemManager;
import engine.gameManager.LootManager;
import engine.loot.BootySetEntry;
import engine.mbEnums;
import engine.parsers.cache.CacheParserUtil;
import engine.parsers.objects.RuneTemplate;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
@@ -35,6 +36,7 @@ public class MobBase extends AbstractGameObject {
public mbEnums.MobBehaviourType fsm;
public EnumSet<mbEnums.MonsterType> notEnemy;
public EnumSet<mbEnums.MonsterType> enemy;
public mbEnums.MonsterType monsterType;
private float healthMax;
private int attackRating;
private int defenseRating;
@@ -78,6 +80,8 @@ public class MobBase extends AbstractGameObject {
this.fsm = mbEnums.MobBehaviourType.valueOf(fsmName);
this.notEnemy = EnumSet.copyOf(rune.rune_not_enemy_monster_types);
this.enemy = EnumSet.copyOf(rune.rune_enemy_monster_types);
// The race rune's sub type is its monster type (client g_MonsterTypeEnum, rune +0xC)
this.monsterType = CacheParserUtil.readEnum(mbEnums.MonsterType.class, rune.rune_sub_type, rune.template_id, "rune_sub_type");
this.walk = rune.rune_speed.getOrDefault(mbEnums.MovementType.WALK, 0f);
this.walkCombat = rune.rune_speed.getOrDefault(mbEnums.MovementType.COMBATWALK, 0f);
this.run = rune.rune_speed.getOrDefault(mbEnums.MovementType.RUN, 0f);