Browse Source

Bugfix: R8 slot locations.

master
MagicBot 1 year ago
parent
commit
a7495bf942
  1. 20
      src/engine/gameManager/BuildingManager.java
  2. 6
      src/engine/objects/NPC.java

20
src/engine/gameManager/BuildingManager.java

@ -55,6 +55,26 @@ public enum BuildingManager {
return -1; return -1;
} }
public static int getLastAvailableSlot(Building building) {
ArrayList<BuildingLocation> slotLocations = _slotLocations.get(building.meshUUID);
// Some meshes might not have slot locations assigned.
if (slotLocations == null ||
slotLocations.isEmpty())
return -1;
int numOfSlots = _slotLocations.get(building.meshUUID).size();
for (int i = numOfSlots; i > 0; i--) {
if (!building.getHirelings().containsValue(i))
return i;
}
return -1;
}
public static BuildingLocation getSlotLocation(Building building, int slot) { public static BuildingLocation getSlotLocation(Building building, int slot) {
BuildingLocation buildingLocation = new BuildingLocation(); BuildingLocation buildingLocation = new BuildingLocation();

6
src/engine/objects/NPC.java

@ -793,8 +793,12 @@ public class NPC extends AbstractCharacter {
// Get next available slot for this NPC and use it // Get next available slot for this NPC and use it
// to add the NPC to the building's hireling list // to add the NPC to the building's hireling list
// Account for R8's having slots reversed.
slot = BuildingManager.getAvailableSlot(building); if (building.getBlueprint() != null && building.getBlueprint().getBuildingGroup().equals(BuildingGroup.TOL) && building.getRank() == 8)
slot = BuildingManager.getLastAvailableSlot(building);
else
slot = BuildingManager.getAvailableSlot(building);
if (slot == -1) if (slot == -1)
Logger.error("No available slot for NPC: " + this.getObjectUUID()); Logger.error("No available slot for NPC: " + this.getObjectUUID());

Loading…
Cancel
Save