diff --git a/scripts/commands/generic/transferItemMisc.js b/scripts/commands/generic/transferItemMisc.js index cf6626829..7318d8e65 100644 --- a/scripts/commands/generic/transferItemMisc.js +++ b/scripts/commands/generic/transferItemMisc.js @@ -14,14 +14,11 @@ function executeCommand(galacticManager, player, target, args) { return; } - if(target.getParent() == actor) { - result = target.moveToContainer(actor, inventory); - actor.removeEquipment(target) - } else { - result = target.moveToContainer(actor, actor); - actor.addEquipment(target) + result = target.moveToContainer(actor, newContainer); // Move item from the old container to the new container + if (actor.getEquipmentList().contains(target)) { + actor.removeEquipment(target); + } else if (newContainer == actor) { + actor.addEquipment(target); } - result = target.moveToContainer(actor, newContainer); // Move item from the old container to the new container - } \ No newline at end of file diff --git a/src/resources/collections/SWGList.java b/src/resources/collections/SWGList.java index 4c70d5c32..4c51ea236 100644 --- a/src/resources/collections/SWGList.java +++ b/src/resources/collections/SWGList.java @@ -36,6 +36,8 @@ import resources.player.PlayerState; import utilities.Encoder; import utilities.Encoder.StringType; +import java.io.IOException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -93,6 +95,11 @@ public class SWGList extends AbstractList implements Encodable, Serializab this.strType = strType; } + private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { + ois.defaultReadObject(); + updateCount = 0; + } + /** * Appends the specified element to the end of this list if it doesn't already exist. Once added, the updateCount is incremented by one * and data for the object is encoded. diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index 34f200db9..b55c95b68 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -198,6 +198,7 @@ public abstract class SWGObject implements Serializable, Comparable { // Get a pre-parent-removal list of the observers so we can send create/destroy/update messages Set oldObservers = getObservers(); Player prevOwner = getOwner(); + oldObservers.add(prevOwner.getCreatureObject()); // Remove this object from the old parent if one exists SWGObject oldParent = null; @@ -212,6 +213,7 @@ public abstract class SWGObject implements Serializable, Comparable { // Observer notification Player newOwner = getOwner(); Set containerObservers = getObservers(); + containerObservers.add(newOwner.getCreatureObject()); if (prevOwner != newOwner) { if (prevOwner != null) oldObservers.add(prevOwner.getCreatureObject());