Compare commits

..

No commits in common. 'Dev_Cmd_Fixes' and 'master' have entirely different histories.

  1. 8
      src/engine/db/handlers/dbNPCHandler.java
  2. 12
      src/engine/objects/Mob.java
  3. 5
      src/engine/objects/NPC.java

8
src/engine/db/handlers/dbNPCHandler.java

@ -243,12 +243,8 @@ public class dbNPCHandler extends dbHandlerBase {
public boolean UPDATE_EQUIPSET(NPC npc, int equipSetID) { public boolean UPDATE_EQUIPSET(NPC npc, int equipSetID) {
// Column name must match what NPC/Mob loaders read ("equipmentSet").
// Using the wrong column here causes the update to fail silently and
// dev command to report "Unable to find Equipset" despite a valid ID.
try (Connection connection = DbManager.getConnection(); try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_npc` SET `equipmentSet`=? WHERE `UID`=?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_npc` SET `equipsetID`=? WHERE `UID`=?")) {
preparedStatement.setInt(1, equipSetID); preparedStatement.setInt(1, equipSetID);
preparedStatement.setLong(2, npc.getObjectUUID()); preparedStatement.setLong(2, npc.getObjectUUID());
@ -471,4 +467,4 @@ public class dbNPCHandler extends dbHandlerBase {
return false; return false;
} }
} }
} }

12
src/engine/objects/Mob.java

@ -541,18 +541,8 @@ public class Mob extends AbstractIntelligenceAgent {
mobWithoutID.parentZone = parent; mobWithoutID.parentZone = parent;
mobWithoutID.parentZoneID = parent.getObjectUUID(); mobWithoutID.parentZoneID = parent.getObjectUUID();
// Ensure spawn coordinates are persisted for DB insert
// statLat/statAlt/statLon represent local (zone-relative) spawn
// coordinates used by the DB handler when creating the mob row.
if (spawn != null && parent != null) {
// Convert world coordinates to zone-local spawn coordinates
Vector3fImmutable localSpawn = spawn.subtract(parent.getLoc());
mobWithoutID.statLat = localSpawn.x;
mobWithoutID.statAlt = localSpawn.y;
mobWithoutID.statLon = localSpawn.z;
}
// NPC in a Building derives position from slot // NPC in a Building derives position from slot
if (mobWithoutID.building != null) if (mobWithoutID.building != null)
mobWithoutID.bindLoc = Vector3fImmutable.ZERO; mobWithoutID.bindLoc = Vector3fImmutable.ZERO;

5
src/engine/objects/NPC.java

@ -470,8 +470,7 @@ public class NPC extends AbstractCharacter {
newNPC.bindLoc = Vector3fImmutable.ZERO; newNPC.bindLoc = Vector3fImmutable.ZERO;
newNPC.parentZoneUUID = parent.getObjectUUID(); newNPC.parentZoneUUID = parent.getObjectUUID();
// guild may be null when spawning via ./npc; default to 0 newNPC.guildUUID = guild.getObjectUUID();
newNPC.guildUUID = (guild != null) ? guild.getObjectUUID() : 0;
if (building == null) if (building == null)
newNPC.buildingUUID = 0; newNPC.buildingUUID = 0;
@ -1348,4 +1347,4 @@ public class NPC extends AbstractCharacter {
} }
} }
} }

Loading…
Cancel
Save