Key MobBase on its ID and stop reading loadID
Every static_npc_mobbase row has ID = loadID since 3.6 dropped the server-made rows, so the race rune and rune effects are looked up by ID and the loaders no longer filter on loadID. No value change (dev: 2375 of 2375 rows have ID = loadID). Mob.loadID and NPC.loadID are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7027000ba1
commit
236bddc93b
5 files changed
+10
-18
No files matched your search
@@ -39,7 +39,7 @@ public class dbMobBaseHandler extends dbHandlerBase {
|
||||
return mobBase;
|
||||
|
||||
try (Connection connection = DbManager.getConnection();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_npc_mobbase` WHERE `ID`=? AND `ID` = `loadID`")) {
|
||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_npc_mobbase` WHERE `ID`=?")) {
|
||||
|
||||
preparedStatement.setInt(1, id);
|
||||
|
||||
@@ -58,10 +58,8 @@ public class dbMobBaseHandler extends dbHandlerBase {
|
||||
|
||||
ArrayList<MobBase> mobbaseList = new ArrayList<>();
|
||||
|
||||
// ID <> loadID rows were junk server-made mobbases (15000-17266); skip them on databases that still have them.
|
||||
|
||||
try (Connection connection = DbManager.getConnection();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_npc_mobbase` WHERE `ID` = `loadID`;")) {
|
||||
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_npc_mobbase`;")) {
|
||||
|
||||
ResultSet rs = preparedStatement.executeQuery();
|
||||
mobbaseList = getObjectsFromRs(rs, 1000);
|
||||
|
||||
@@ -470,7 +470,7 @@ public class MobAI {
|
||||
|
||||
//trebuchet spawn handler
|
||||
|
||||
if (mob.despawned && mob.getMobBase().getLoadID() == 13171) {
|
||||
if (mob.despawned && mob.getMobBase().getObjectUUID() == 13171) {
|
||||
checkForRespawn(mob);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
writer.putInt(0);
|
||||
writer.putInt(0);
|
||||
|
||||
int tid = (mob.mobBase != null) ? mob.mobBase.getLoadID() : 0;
|
||||
int tid = (mob.mobBase != null) ? mob.mobBase.getObjectUUID() : 0;
|
||||
if (mob.isPet()) {
|
||||
writer.putInt(2);
|
||||
writer.putInt(3);
|
||||
@@ -191,7 +191,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
writer.putInt(0);
|
||||
|
||||
if (mob.mobBase != null)
|
||||
writer.putInt(mob.mobBase.getLoadID());
|
||||
writer.putInt(mob.mobBase.getObjectUUID());
|
||||
else
|
||||
writer.putInt(mob.loadID);
|
||||
|
||||
@@ -768,7 +768,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
|
||||
bonus *= (1 + this.bonuses.getFloatPercentAll(ModType.Speed, SourceType.None));
|
||||
|
||||
if (this.isPlayerGuard())
|
||||
switch (this.mobBase.getLoadID()) {
|
||||
switch (this.mobBase.getObjectUUID()) {
|
||||
case 2111:
|
||||
if (this.isWalk())
|
||||
if (this.isCombat())
|
||||
|
||||
@@ -27,7 +27,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class MobBase extends AbstractGameObject {
|
||||
|
||||
private final int loadID;
|
||||
private final String firstName;
|
||||
private final byte level;
|
||||
private final float scale;
|
||||
@@ -65,8 +64,7 @@ public class MobBase extends AbstractGameObject {
|
||||
RuneTemplate rune = null;
|
||||
String fsmName;
|
||||
|
||||
this.loadID = rs.getInt("loadID");
|
||||
rune = RuneTemplate._runes.get(this.loadID);
|
||||
rune = RuneTemplate._runes.get(this.getObjectUUID());
|
||||
|
||||
if (rune != null) {
|
||||
this.firstName = rune.obj_name;
|
||||
@@ -87,7 +85,7 @@ public class MobBase extends AbstractGameObject {
|
||||
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);
|
||||
Logger.error("Mobbase " + this.getObjectUUID() + " has no race rune");
|
||||
this.firstName = "";
|
||||
this.level = 0;
|
||||
this.fsm = mbEnums.MobBehaviourType.None;
|
||||
@@ -126,7 +124,7 @@ public class MobBase extends AbstractGameObject {
|
||||
this.mask += MBServerStatics.MASK_RAT;
|
||||
|
||||
this.mobBaseStats = (rune != null) ? new MobBaseStats(rune) : MobBaseStats.GetGenericStats();
|
||||
this.effectsList = MobBaseEffects.getEffectsForRune(this.loadID);
|
||||
this.effectsList = MobBaseEffects.getEffectsForRune(this.getObjectUUID());
|
||||
|
||||
}
|
||||
|
||||
@@ -171,10 +169,6 @@ public class MobBase extends AbstractGameObject {
|
||||
return this.firstName;
|
||||
}
|
||||
|
||||
public int getLoadID() {
|
||||
return this.loadID;
|
||||
}
|
||||
|
||||
public int getLevel() {
|
||||
return this.level;
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ public class NPC extends AbstractCharacter {
|
||||
writer.putInt(0);
|
||||
|
||||
if (npc.mobBase != null)
|
||||
writer.putInt(npc.mobBase.getLoadID());
|
||||
writer.putInt(npc.mobBase.getObjectUUID());
|
||||
else
|
||||
writer.putInt(2011);
|
||||
|
||||
|
||||
Reference in new issue
Block a user