From b5290f8c0a9af6c10b3bdeb03800d914ef4eac74 Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Sat, 8 Nov 2025 22:13:25 -0800 Subject: [PATCH] Implement character/disc selectors --- .../emu/nebula/game/inventory/Inventory.java | 17 ++++++++++++++++- .../server/handlers/HandlerItemUseReq.java | 7 ++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/emu/nebula/game/inventory/Inventory.java b/src/main/java/emu/nebula/game/inventory/Inventory.java index d3fd066..b6ba503 100644 --- a/src/main/java/emu/nebula/game/inventory/Inventory.java +++ b/src/main/java/emu/nebula/game/inventory/Inventory.java @@ -618,7 +618,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { return change.setSuccess(true); } - public PlayerChangeInfo useItem(int id, int count, PlayerChangeInfo change) { + public PlayerChangeInfo useItem(int id, int count, int selectId, PlayerChangeInfo change) { // Player change info if (change == null) { change = new PlayerChangeInfo(); @@ -643,6 +643,21 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { case 2 -> { // Add items this.addItems(data.getUseParams(), change); + + // Success + success = true; + } + case 3 -> { + // Selected item + int selectCount = data.getUseParams().get(selectId); + + if (selectCount <= 0) { + return change; + } + + // Add selected item + this.addItem(selectId, selectCount, change); + // Success success = true; } diff --git a/src/main/java/emu/nebula/server/handlers/HandlerItemUseReq.java b/src/main/java/emu/nebula/server/handlers/HandlerItemUseReq.java index 5bde273..00c6a94 100644 --- a/src/main/java/emu/nebula/server/handlers/HandlerItemUseReq.java +++ b/src/main/java/emu/nebula/server/handlers/HandlerItemUseReq.java @@ -25,7 +25,12 @@ public class HandlerItemUseReq extends NetHandler { // Use item for (var param : req.getUse().getList()) { - session.getPlayer().getInventory().useItem(param.getTid(), param.getQty(), change); + session.getPlayer().getInventory().useItem(param.getTid(), param.getQty(), 0, change); + } + + // Pick item + for (var param : req.getPick().getList()) { + session.getPlayer().getInventory().useItem(param.getTid(), param.getQty(), param.getSelectTid(), change); } // Encode and send