From 96fc6e741d4cc1c46cc7df71996106bdb80e6aa6 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Sat, 27 Dec 2025 11:20:22 -0600 Subject: [PATCH] fix add NPC --- src/engine/devcmd/cmds/AddNPCCmd.java | 39 ++++++++++++++------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/engine/devcmd/cmds/AddNPCCmd.java b/src/engine/devcmd/cmds/AddNPCCmd.java index 495d2517..8b717d53 100644 --- a/src/engine/devcmd/cmds/AddNPCCmd.java +++ b/src/engine/devcmd/cmds/AddNPCCmd.java @@ -13,6 +13,7 @@ import engine.Enum.GameObjectType; import engine.InterestManagement.WorldGrid; import engine.devcmd.AbstractDevCmd; import engine.gameManager.*; +import engine.math.Vector3fImmutable; import engine.objects.*; import org.pmw.tinylog.Logger; @@ -70,28 +71,30 @@ public class AddNPCCmd extends AbstractDevCmd { throwbackError(pc, "Failed to find zone to place npc in."); return; } - + Building building = null; if (target != null) if (target.getObjectType() == GameObjectType.Building) { - Building parentBuilding = (Building) target; - BuildingManager.addHirelingForWorld(parentBuilding, pc, parentBuilding.getLoc(), parentBuilding.getParentZone(), contract, level); - return; + building = (Building)target; } - - NPC npc = NPC.createNPC(name, contractID, - pc.getLoc(), null, zone, (short) level, null); - - if (npc != null) { - WorldGrid.addObject(npc, pc); - ChatManager.chatSayInfo(pc, - "NPC with ID " + npc.getDBID() + " added"); - this.setResult(String.valueOf(npc.getDBID())); - } else { - throwbackError(pc, "Failed to create npc of contract type " - + contractID); - Logger.error( - "Failed to create npc of contract type " + contractID); + NPC created; + Guild guild = null; + Vector3fImmutable loc; + if(building != null){ + guild = building.getGuild(); + loc = building.loc; + } else{ + loc = pc.loc; + } + created = NPC.createNPC(name, contractID, loc, guild, zone, (short)level, building); + created.bindLoc = loc; + if(building != null) { + created.buildingUUID = building.getObjectUUID(); + created.building = building; + NPCManager.slotCharacterInBuilding(created); } + created.setLoc(created.bindLoc); + created.updateDatabase(); + throwbackInfo(pc, "Created NPC with UUID: " + created.getObjectUUID()); } @Override