From 063ebb971731ac88d1e0f24c8c1a2f5aeeaf2ad0 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Fri, 23 Oct 2026 14:44:32 -0400 Subject: [PATCH] Load mob speeds from the race rune's rune_speed MobBase walk/walkCombat/run/runCombat now come from rune_speed WALK/COMBATWALK/RUN/COMBATRUN instead of static_npc_mobbase_race. Parity (JSON-Refactor-Plan/scripts/p33.py, compared as Java floats): 2375/2375 loaded mobbases identical, every one has a race row on dev. No value changes. The 253 unused race rows (no mobbase) and the fly/swim columns had no reader. LOAD_ALL_MOBBASE_SPEEDS and static_npc_mobbase_race are now unread; they go in Task 3.6. Co-Authored-By: Claude Opus 5.5 --- src/engine/objects/MobBase.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/engine/objects/MobBase.java b/src/engine/objects/MobBase.java index 2bf3ca6f..b76428a5 100644 --- a/src/engine/objects/MobBase.java +++ b/src/engine/objects/MobBase.java @@ -78,6 +78,10 @@ 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); + 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); + this.runCombat = rune.rune_speed.getOrDefault(mbEnums.MovementType.COMBATRUN, 0f); } else { Logger.error("Mobbase " + this.getObjectUUID() + " has no race rune " + this.loadID); this.firstName = ""; @@ -118,7 +122,6 @@ public class MobBase extends AbstractGameObject { this.mask += MBServerStatics.MASK_RAT; this.mobBaseStats = (rune != null) ? new MobBaseStats(rune) : MobBaseStats.GetGenericStats(); - DbManager.MobBaseQueries.LOAD_ALL_MOBBASE_SPEEDS(this); //load effects for mobbase this.effectsList = DbManager.MobBaseQueries.GET_RUNEBASE_EFFECTS(this.loadID);