diff --git a/src/engine/gameManager/NPCManager.java b/src/engine/gameManager/NPCManager.java index 154d601a..24fb9d21 100644 --- a/src/engine/gameManager/NPCManager.java +++ b/src/engine/gameManager/NPCManager.java @@ -341,18 +341,21 @@ public enum NPCManager { if (abstractCharacter.building.getBlueprint() != null && abstractCharacter.building.getBlueprint().getBuildingGroup().equals(Enum.BuildingGroup.TOL) && abstractCharacter.building.getRank() == 8) buildingSlot = BuildingManager.getLastAvailableSlot(abstractCharacter.building); - else { - if(abstractCharacter.getObjectType().equals(Enum.GameObjectType.Mob) && ((Mob)abstractCharacter).behaviourType.equals(Enum.MobBehaviourType.SiegeEngine)) { - Mob mob = (Mob)abstractCharacter; - buildingSlot = mob.guardCaptain.siegeMinionMap.size() + 2; - }else - buildingSlot = BuildingManager.getAvailableSlot(abstractCharacter.building); + else + buildingSlot = BuildingManager.getAvailableSlot(abstractCharacter.building); + + // Override slot for siege engines + + if (abstractCharacter.getObjectType().equals(Enum.GameObjectType.Mob) && ((Mob) abstractCharacter).behaviourType.equals(Enum.MobBehaviourType.SiegeEngine)) { + Mob siegeMobile = (Mob) abstractCharacter; + buildingSlot = siegeMobile.guardCaptain.siegeMinionMap.size() + 2; } + if (buildingSlot == -1) Logger.error("No available slot for NPC: " + abstractCharacter.getObjectUUID()); // Pets are regular mobiles not hirelings (Siege engines) - if(abstractCharacter.contract != null) + if (abstractCharacter.contract != null) abstractCharacter.building.getHirelings().put(abstractCharacter, buildingSlot); // Override bind and location for this npc derived