diff --git a/src/engine/gameManager/ForgeManager.java b/src/engine/gameManager/ForgeManager.java index c4a8f085..f97450bb 100644 --- a/src/engine/gameManager/ForgeManager.java +++ b/src/engine/gameManager/ForgeManager.java @@ -17,7 +17,6 @@ import engine.net.client.msg.ItemProductionMsg; import engine.objects.*; import engine.powers.EffectsBase; import engine.powers.poweractions.AbstractPowerAction; -import engine.server.MBServerStatics; import org.pmw.tinylog.Logger; import java.util.ArrayList; @@ -58,38 +57,18 @@ public enum ForgeManager implements Runnable { if (Objects.requireNonNull(workOrder).runCanceled || workOrder.runCompleted) continue; - // Persist current items that are currently cooking for this - // workOrder - - ArrayList toRemove = new ArrayList<>(); - Item completed_item = null; - - for (Item cooked_item : workOrder.cooking) { - toRemove.add(cooked_item); - cooked_item.containerType = mbEnums.ItemContainerType.INVENTORY; - completed_item = DbManager.ItemQueries.PERSIST(cooked_item); - - workOrder.vendor.charItemManager.addItemToInventory(completed_item); - } - - // Remove the fake negativeID item from all collections. - // set the items as 'completed' - - for (Item memoryItem : toRemove) { + Logger.info("item forged:" + workOrder.workOrderID + " (" + workOrder.total_produced + "/" + workOrder.total_to_produce + ")"); - // Update vendor windows + // Complete this workOrder. Persist items currently in memory + // and set the items as completed. - ItemProductionMsg outMsg1 = new ItemProductionMsg(workOrder.vendor.building, workOrder.vendor, memoryItem, mbEnums.ProductionActionType.COMPLETE, true); - DispatchMessage.dispatchMsgToInterestArea(workOrder.vendor, outMsg1, mbEnums.DispatchChannel.SECONDARY, MBServerStatics.STRUCTURE_LOAD_RANGE, false, false); + if (workOrder.total_produced >= workOrder.total_to_produce) { - workOrder.cooking.remove(memoryItem); - inMemoryItemLookup.remove(memoryItem.objectUUID); - vendorItemLookup.get(workOrder.vendor).remove(memoryItem); - } + for (Item workOrderItem : workOrder.cooking) { + workOrderItem.setDateToUpgrade(0); - Logger.info("item forged:" + workOrder.workOrderID + " (" + workOrder.total_produced + "/" + workOrder.total_to_produce + ")"); + } - if (workOrder.total_produced >= workOrder.total_to_produce) { Logger.info("workOrder has completed: " + workOrder.workOrderID); workOrder.runCompleted = true; continue; @@ -319,7 +298,6 @@ public enum ForgeManager implements Runnable { inMemoryItemLookup.put(forged_item.objectUUID, forged_item); vendorItemLookup.computeIfAbsent(workOrder.vendor, k -> new ArrayList<>()); vendorItemLookup.get(workOrder.vendor).add(forged_item); - vendorItemLookup.get(workOrder.vendor).add(forged_item); vendorWorkOrderLookup.get(workOrder.vendor).add(workOrder); // Update NPC window diff --git a/src/engine/net/client/handlers/ItemProductionMsgHandler.java b/src/engine/net/client/handlers/ItemProductionMsgHandler.java index 54471192..ae2dd5cb 100644 --- a/src/engine/net/client/handlers/ItemProductionMsgHandler.java +++ b/src/engine/net/client/handlers/ItemProductionMsgHandler.java @@ -72,10 +72,6 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler { switch (msg.actionType) { case PRODUCE: - boolean isRandom = false; - - if (msg.unknown03 != 0 && msg.pToken == 0 && msg.sToken == 0) - isRandom = true; // Create new work order