diff --git a/src/engine/gameManager/BuildingManager.java b/src/engine/gameManager/BuildingManager.java index b945c5a5..3bac612f 100644 --- a/src/engine/gameManager/BuildingManager.java +++ b/src/engine/gameManager/BuildingManager.java @@ -548,6 +548,7 @@ public enum BuildingManager { return true; } if (contract.getContractID() == 910) { + //guard dog mob = Mob.createMob(contract.getMobbaseID(), Vector3fImmutable.ZERO, contractOwner.getGuild(), true, zone, building, contract.getContractID(), pirateName, rank); @@ -558,6 +559,7 @@ public enum BuildingManager { return true; } + npc = NPC.createNPC(pirateName, contract.getObjectUUID(), Vector3fImmutable.ZERO, contractOwner.getGuild(), false, zone, (short) rank, building); if (npc == null) diff --git a/src/engine/objects/NPC.java b/src/engine/objects/NPC.java index 44e91e76..3cb6868a 100644 --- a/src/engine/objects/NPC.java +++ b/src/engine/objects/NPC.java @@ -569,14 +569,22 @@ public class NPC extends AbstractCharacter { npcWithoutID.setLevel(level); - if (npcWithoutID.mobBase == null) { + if (npcWithoutID.mobBase == null) return null; - } - if (parent != null) { - npcWithoutID.setRelPos(parent, spawn.x - parent.absX, spawn.y - parent.absY, spawn.z - parent.absZ); - } - npcWithoutID.setLoc(new Vector3fImmutable(npcWithoutID.statLat,npcWithoutID.statAlt,npcWithoutID.statLon)); + + // Parent zone is required by dbhandler. Can likely + // refactor that out and just use the id. + + npcWithoutID.parentZone = parent; + npcWithoutID.parentZoneID = parent.getObjectUUID(); + + // NPC in a Building derives position from slot + + if (npcWithoutID.building != null) + npcWithoutID.bindLoc = Vector3fImmutable.ZERO; + NPC npc; + try { npc = DbManager.NPCQueries.ADD_NPC(npcWithoutID, isMob); npc.setObjectTypeMask(MBServerStatics.MASK_NPC); @@ -585,7 +593,6 @@ public class NPC extends AbstractCharacter { npc = null; } - return npc; }