diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index a3cacc4e..7b29de0f 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -319,15 +319,9 @@ public abstract class SWGObject implements Serializable, Comparable { * Gets the object that occupies the specified slot * @param slotName * @return The {@link SWGObject} occupying the slot. Returns null if there is nothing in the slot or it doesn't exist. - *

If the slot doesn't exist, then an error is printed as well.

*/ public SWGObject getSlottedObject(String slotName) { - if (hasSlot(slotName)) - return slots.get(slotName); - else { - System.err.println(this + " does not contain " + slotName); - return null; - } + return slots.get(slotName); } /** @@ -898,7 +892,7 @@ public abstract class SWGObject implements Serializable, Comparable { // Now create the contained objects for (SWGObject containedObject : containedObjects.values()) { if (containedObject != null && !sentObjects.contains(containedObject)) { - if (containedObject instanceof CreatureObject && containedObject.hasSlot("ghost") && containedObject.getOwner() == null) + if (containedObject instanceof CreatureObject && ((CreatureObject) containedObject).isLoggedOutPlayer()) continue; // If it's a player, but that's logged out containedObject.createObject(target); } diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 1f4ac6fd..58c102be 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -278,7 +278,19 @@ public class CreatureObject extends TangibleObject { } public PlayerObject getPlayerObject() { - return (PlayerObject) (hasSlot("ghost") ? getSlottedObject("ghost") : null); + return (PlayerObject) getSlottedObject("ghost"); + } + + public boolean isPlayer() { + return getSlottedObject("ghost") != null; + } + + public boolean isLoggedInPlayer() { + return getOwner() != null && isPlayer(); + } + + public boolean isLoggedOutPlayer() { + return getOwner() == null && isPlayer(); } public void setPosture(Posture posture) { diff --git a/src/services/objects/ObjectAwareness.java b/src/services/objects/ObjectAwareness.java index f1565e0d..bb8a30be 100644 --- a/src/services/objects/ObjectAwareness.java +++ b/src/services/objects/ObjectAwareness.java @@ -341,7 +341,7 @@ public class ObjectAwareness extends Service { private boolean isValidInRange(SWGObject obj, SWGObject inRange, Location objLoc) { if (inRange.getObjectId() == obj.getObjectId()) return false; - if (obj.hasSlot("ghost") && obj.getOwner() == null) + if (obj instanceof CreatureObject && ((CreatureObject) obj).isLoggedOutPlayer()) return false; int distSquared = distanceSquared(objLoc, inRange.getWorldLocation()); int loadSquared = (int) (square(inRange.getLoadRange()) + 0.5); diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index a93b0042..e67d5eb0 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -143,8 +143,8 @@ public class ObjectManager extends Manager { private void loadObject(SWGObject obj) { obj.setOwner(null); - // if player is not a player - if (!(obj instanceof CreatureObject && ((CreatureObject) obj).hasSlot("ghost"))) + // if creature is not a player + if (!(obj instanceof CreatureObject && ((CreatureObject) obj).isLoggedOutPlayer())) objectAwareness.add(obj); if (obj instanceof CreatureObject && ((CreatureObject) obj).getPlayerObject() != null) { if (!obj.hasSlot("bank")) {