diff --git a/scripts/npc/commands.js b/scripts/npc/commands.js index 8dfdc7aa30..fab352bfbf 100644 --- a/scripts/npc/commands.js +++ b/scripts/npc/commands.js @@ -16,7 +16,7 @@ var commands; function writeHeavenMSCommands() { const CommandsExecutor = Java.type('client.command.CommandsExecutor'); - commands = CommandsExecutor.getInstance().getGmCommands(); + commands = CommandsExecutor.getInstance().getGmCommands(); // TODO: fix. CommandsExecutor is now injected rather than being a singleton, so this does not work anymore. } function start() { diff --git a/src/main/java/scripting/npc/NPCConversationManager.java b/src/main/java/scripting/npc/NPCConversationManager.java index 0fc4f94efe..328d0f4640 100644 --- a/src/main/java/scripting/npc/NPCConversationManager.java +++ b/src/main/java/scripting/npc/NPCConversationManager.java @@ -84,7 +84,6 @@ public class NPCConversationManager extends AbstractPlayerInteraction { private String scriptName; private String getText; private boolean itemScript; - private List otherParty; private final Map npcDefaultTalks = new HashMap<>(); @@ -102,11 +101,10 @@ public class NPCConversationManager extends AbstractPlayerInteraction { this(c, npc, -1, scriptName, false); } - public NPCConversationManager(Client c, int npc, List otherParty, boolean test) { + public NPCConversationManager(Client c, int npc) { super(c); this.c = c; this.npc = npc; - this.otherParty = otherParty; } public NPCConversationManager(Client c, int npc, int oid, String scriptName, boolean itemScript) { @@ -377,6 +375,9 @@ public class NPCConversationManager extends AbstractPlayerInteraction { } public void openShopNPC(int id) { + // TODO: figure out a way to inject ShopFactory. + // NPCConversationManager is instantiated by NPCScriptManager, which is a static singleton. + // NPCScriptManager is accessed from all over, making it really difficult to structure dependencies properly. Shop shop = ShopFactory.getInstance().getShop(id); if (shop != null) { @@ -1095,4 +1096,4 @@ public class NPCConversationManager extends AbstractPlayerInteraction { return false; } -} \ No newline at end of file +} diff --git a/src/main/java/scripting/npc/NPCScriptManager.java b/src/main/java/scripting/npc/NPCScriptManager.java index 4b096e713e..0974c54fe2 100644 --- a/src/main/java/scripting/npc/NPCScriptManager.java +++ b/src/main/java/scripting/npc/NPCScriptManager.java @@ -82,7 +82,7 @@ public class NPCScriptManager extends AbstractScriptManager { public void start(String filename, Client c, int npc, List chrs) { try { - final NPCConversationManager cm = new NPCConversationManager(c, npc, chrs, true); + final NPCConversationManager cm = new NPCConversationManager(c, npc); cm.dispose(); if (cms.containsKey(c)) { return; diff --git a/src/main/java/server/Shop.java b/src/main/java/server/Shop.java index cc0f65bd6a..b4045d451a 100644 --- a/src/main/java/server/Shop.java +++ b/src/main/java/server/Shop.java @@ -48,6 +48,7 @@ import java.util.Set; public class Shop { private static final Logger log = LoggerFactory.getLogger(Shop.class); private static final Set rechargeableItems = new LinkedHashSet<>(); + private static final short MAX_QUANTITY_PER_PURCHASE = 1000; // Should really use max stack size for the given item private final int id; private final int npcId; @@ -278,11 +279,11 @@ public class Shop { recharges.remove(Integer.valueOf(starItem.getItemId())); } } else { - ret.addItem(new ShopItem((short) 1000, rs.getInt("itemid"), rs.getInt("price"), rs.getInt("pitch"))); + ret.addItem(new ShopItem(MAX_QUANTITY_PER_PURCHASE, rs.getInt("itemid"), rs.getInt("price"), rs.getInt("pitch"))); } } for (Integer recharge : recharges) { - ret.addItem(new ShopItem((short) 1000, recharge, 0, 0)); + ret.addItem(new ShopItem((short) 0, recharge, 0, 0)); } } }