Fix Tree of Life rank 8 hireling repositioning

This commit is contained in:
Rob
2026-07-21 19:40:02 +01:00
parent dc083c1fa6
commit fb30e52be0
2 changed files with 32 additions and 0 deletions
@@ -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<AbstractCharacter> 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)
+4
View File
@@ -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);
}