forked from MagicBane/Server
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 221ae0a58b |
@@ -243,8 +243,12 @@ 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 `equipsetID`=? WHERE `UID`=?")) {
|
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_npc` SET `equipmentSet`=? WHERE `UID`=?")) {
|
||||||
|
|
||||||
preparedStatement.setInt(1, equipSetID);
|
preparedStatement.setInt(1, equipSetID);
|
||||||
preparedStatement.setLong(2, npc.getObjectUUID());
|
preparedStatement.setLong(2, npc.getObjectUUID());
|
||||||
@@ -467,4 +471,4 @@ public class dbNPCHandler extends dbHandlerBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -541,8 +541,18 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
mobWithoutID.parentZone = parent;
|
mobWithoutID.parentZone = parent;
|
||||||
mobWithoutID.parentZoneID = parent.getObjectUUID();
|
mobWithoutID.parentZoneID = parent.getObjectUUID();
|
||||||
|
|
||||||
// NPC in a Building derives position from slot
|
// 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
|
||||||
if (mobWithoutID.building != null)
|
if (mobWithoutID.building != null)
|
||||||
mobWithoutID.bindLoc = Vector3fImmutable.ZERO;
|
mobWithoutID.bindLoc = Vector3fImmutable.ZERO;
|
||||||
|
|
||||||
|
|||||||
@@ -470,7 +470,8 @@ public class NPC extends AbstractCharacter {
|
|||||||
newNPC.bindLoc = Vector3fImmutable.ZERO;
|
newNPC.bindLoc = Vector3fImmutable.ZERO;
|
||||||
|
|
||||||
newNPC.parentZoneUUID = parent.getObjectUUID();
|
newNPC.parentZoneUUID = parent.getObjectUUID();
|
||||||
newNPC.guildUUID = guild.getObjectUUID();
|
// guild may be null when spawning via ./npc; default to 0
|
||||||
|
newNPC.guildUUID = (guild != null) ? guild.getObjectUUID() : 0;
|
||||||
|
|
||||||
if (building == null)
|
if (building == null)
|
||||||
newNPC.buildingUUID = 0;
|
newNPC.buildingUUID = 0;
|
||||||
@@ -1347,4 +1348,4 @@ public class NPC extends AbstractCharacter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user