From fb30e52be0368db305bd1d8af9656ccb3692cb98 Mon Sep 17 00:00:00 2001 From: Rob Date: Tue, 21 Jul 2026 19:40:02 +0100 Subject: [PATCH] Fix Tree of Life rank 8 hireling repositioning --- src/engine/gameManager/BuildingManager.java | 28 +++++++++++++++++++++ src/engine/objects/Building.java | 4 +++ 2 files changed, 32 insertions(+) diff --git a/src/engine/gameManager/BuildingManager.java b/src/engine/gameManager/BuildingManager.java index 5633df05..45b01822 100644 --- a/src/engine/gameManager/BuildingManager.java +++ b/src/engine/gameManager/BuildingManager.java @@ -289,6 +289,34 @@ public enum BuildingManager { // Method transfers ownership of all hirelings in a building + public static void reslotHirelings(Building building) { + + if (building == null) + return; + + ArrayList hirelings = + new ArrayList<>(building.getHirelings().keySet()); + + building.getHirelings().clear(); + + for (AbstractCharacter hireling : hirelings) { + + int newSlot = NPCManager.slotCharacterInBuilding(hireling); + + if (newSlot == -1) { + Logger.error("Unable to re-slot hireling " + + hireling.getObjectUUID() + + " for building " + + building.getObjectUUID()); + continue; + } + + hireling.setLoc(hireling.getBindLoc()); + WorldGrid.updateObject(hireling); + InterestManager.setObjectDirty(hireling); + } + } + public static void refreshHirelings(Building building) { if (building == null) diff --git a/src/engine/objects/Building.java b/src/engine/objects/Building.java index d625234c..c5c8c148 100644 --- a/src/engine/objects/Building.java +++ b/src/engine/objects/Building.java @@ -427,6 +427,10 @@ public class Building extends AbstractWorldObject { BuildingManager.cleanupHirelings(this); + if (this.getBlueprint().getBuildingGroup() == BuildingGroup.TOL + && this.rank == 8) + BuildingManager.reslotHirelings(this); + this.isDeranking.compareAndSet(true, false); }