diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java index 76bb3b7b5..a6f600337 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java @@ -104,7 +104,6 @@ public class Shopkeeper extends NPC { } public static WndBag sell() { - //FIXME currently doesn't allow for repeated sales on new inventory pane return GameScene.selectItem( itemSelector ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java index 25ce8de52..da0ae61b9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java @@ -89,7 +89,6 @@ public class Alchemize extends Spell { @Override public void onSelect( Item item ) { if (item != null) { - //FIXME currently doesn't allow for repeated alchemizes on new inventory pane WndBag parentWnd = GameScene.selectItem( itemSelector ); GameScene.show( new WndAlchemizeItem( item, parentWnd ) ); } @@ -221,6 +220,9 @@ public class Alchemize extends Spell { } } else { curItem.detach(Dungeon.hero.belongings.backpack); + if (owner == null){ + GameScene.selectItem(itemSelector); + } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/InventoryPane.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/InventoryPane.java index 4092e0638..7a6b0ad0e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/InventoryPane.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/InventoryPane.java @@ -124,8 +124,9 @@ public class InventoryPane extends Component { if (lastBag != item && !lastBag.contains(item) && !item.isEquipped(Dungeon.hero)){ updateInventory(); } else if (selector != null) { - selector.onSelect( item ); + WndBag.ItemSelector activating = selector; selector = null; + activating.onSelect( item ); updateInventory(); } else { GameScene.show(new WndUseItem( null, item )); @@ -163,8 +164,9 @@ public class InventoryPane extends Component { if (lastBag != item && !lastBag.contains(item) && !item.isEquipped(Dungeon.hero)){ updateInventory(); } else if (selector != null) { - selector.onSelect( item ); + WndBag.ItemSelector activating = selector; selector = null; + activating.onSelect( item ); updateInventory(); } else { GameScene.show(new WndUseItem( null, item )); @@ -354,10 +356,14 @@ public class InventoryPane extends Component { lastEnabled = (Dungeon.hero.ready || !Dungeon.hero.isAlive()); for (InventorySlot b : equipped){ - b.enable(lastEnabled && !(b.item() instanceof WndBag.Placeholder)); + b.enable(lastEnabled + && !(b.item() instanceof WndBag.Placeholder) + && (selector == null || selector.itemSelectable(b.item()))); } for (InventorySlot b : bagItems){ - b.enable(lastEnabled && b.item() != null); + b.enable(lastEnabled + && b.item() != null + && (selector == null || selector.itemSelectable(b.item()))); } for (BagButton b : bags){ b.enable(lastEnabled); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTradeItem.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTradeItem.java index de0df09fd..173566567 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTradeItem.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndTradeItem.java @@ -166,8 +166,8 @@ public class WndTradeItem extends WndInfoItem { if (owner != null) { owner.hide(); - Shopkeeper.sell(); } + Shopkeeper.sell(); } public static void sell( Item item ) {