From 5d3143e68a0f4d579f09ae9a629949ae767b0044 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Tue, 17 Jun 2014 15:59:44 -0400 Subject: [PATCH] Fixed inventory transfer bug for junk dealer --- src/services/LootService.java | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/services/LootService.java b/src/services/LootService.java index 8e36f35e..3197dfea 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -303,13 +303,11 @@ public class LootService implements INetworkDispatch { if (inventory == null) return; - addToBuyBack(actor, itemToSell); + addToBuyBack(actor, itemToSell, inventory); // This removes the item from inventory as well actor.addCashCredits(price); actor.sendSystemMessage(OutOfBand.ProsePackage("@junk_dealer:prose_sold_junk", "TT", itemToSell.getCustomName(), "DI", price), DisplayType.Broadcast); - inventory.remove(itemToSell); - core.suiService.closeSUIWindow(actor, window.getWindowId()); handleJunkDealerSellWindow(actor, junkDealer, getSellableInventoryItems(actor)); break; @@ -465,19 +463,19 @@ public class LootService implements INetworkDispatch { core.suiService.openSUIWindow(window); } - public void addToBuyBack(CreatureObject actor, TangibleObject item) { + public void addToBuyBack(CreatureObject actor, TangibleObject item, TangibleObject inventory) { + + TangibleObject buyBackContainer = null; + if (actor.getAttachment("buy_back") == null) - createBuyBackDevice(actor); + buyBackContainer = createBuyBackDevice(actor); + else + buyBackContainer = (TangibleObject) core.objectService.getObject((long) actor.getAttachment("buy_back")); - TangibleObject buyBackContainer = (TangibleObject) core.objectService.getObject((long) actor.getAttachment("buy_back")); + if (buyBackContainer == null) // at this point the buybackcontainer should not be null... but just incase... + buyBackContainer = createBuyBackDevice(actor); - if (buyBackContainer == null) { - createBuyBackDevice(actor); - addToBuyBack(actor, item); - return; - } - - buyBackContainer.transferTo(actor, buyBackContainer, item); + inventory.transferTo(actor, buyBackContainer, item); final AtomicInteger count = new AtomicInteger(); @@ -2570,7 +2568,7 @@ public class LootService implements INetworkDispatch { public Vector getSellableInventoryItems(CreatureObject actor){ TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory"); final Vector sellableItems = new Vector(); - playerInventory.viewChildren(actor, false, false, new Traverser() { + playerInventory.viewChildren(actor, true, false, new Traverser() { @Override public void process(SWGObject obj) { String itemTemplate = obj.getTemplate(); @@ -2593,10 +2591,10 @@ public class LootService implements INetworkDispatch { return true; } - public void createBuyBackDevice(CreatureObject actor) { + public TangibleObject createBuyBackDevice(CreatureObject actor) { TangibleObject datapad = (TangibleObject) actor.getSlottedObject("datapad"); if (datapad == null) - return; + return null; IntangibleObject device = (IntangibleObject) core.objectService.createObject("object/intangible/buy_back/shared_buy_back_control_device.iff", actor.getPlanet()); datapad.add(device); @@ -2608,6 +2606,8 @@ public class LootService implements INetworkDispatch { device.add(container); actor.setAttachment("buy_back", container.getObjectID()); // We can use device.getSlottedObject("inventory"), but this way we won't have to traverse.. + + return container; } @SuppressWarnings("unchecked")