diff --git a/src/engine/devcmd/cmds/FillWarehouseCmd.java b/src/engine/devcmd/cmds/FillWarehouseCmd.java new file mode 100644 index 00000000..8cceccf8 --- /dev/null +++ b/src/engine/devcmd/cmds/FillWarehouseCmd.java @@ -0,0 +1,97 @@ +// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . +// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· +// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ +// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ +// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ +// Magicbane Emulator Project © 2013 - 2026 +// https://www.magicbane.com + + +package engine.devcmd.cmds; + +import engine.devcmd.AbstractDevCmd; +import engine.gameManager.ChatManager; +import engine.gameManager.DbManager; +import engine.gameManager.ZoneManager; +import engine.mbEnums; +import engine.objects.AbstractGameObject; +import engine.objects.City; +import engine.objects.PlayerCharacter; +import engine.objects.Warehouse; + +import java.util.HashMap; + +public class FillWarehouseCmd extends AbstractDevCmd { + + public FillWarehouseCmd() { + super("fillwarehouse"); + } + + @Override + protected void _doCmd(PlayerCharacter pc, String[] words, + AbstractGameObject target) { + + City city; + Warehouse warehouse; + int amount = Integer.MAX_VALUE; + HashMap oldResources; + + if (words.length > 1) { + this.sendUsage(pc); + return; + } + + if (words.length == 1 && !words[0].isEmpty()) { + try { + amount = Integer.parseInt(words[0]); + } catch (NumberFormatException e) { + throwbackError(pc, "Amount must be a number, " + words[0] + " is invalid"); + return; + } + + if (amount < 0) { + throwbackError(pc, "Amount must be 0 or more"); + return; + } + } + + city = ZoneManager.getCityAtLocation(pc.getLoc()); + + if (city == null) { + throwbackError(pc, "You are not standing in a city"); + return; + } + + warehouse = city.warehouse; + + if (warehouse == null) { + throwbackError(pc, city.getCityName() + " has no warehouse"); + return; + } + + oldResources = new HashMap<>(warehouse.resources); + + for (mbEnums.ResourceType resourceType : mbEnums.ResourceType.values()) + warehouse.resources.put(resourceType, Math.min(amount, resourceType.deposit_limit)); + + if (!DbManager.WarehouseQueries.UPDATE_WAREHOUSE(warehouse)) { + warehouse.resources.putAll(oldResources); + throwbackError(pc, "Failed to update the warehouse in the database"); + return; + } + + ChatManager.chatSayInfo(pc, "Filled the " + city.getCityName() + " warehouse" + + (amount == Integer.MAX_VALUE ? " to each deposit limit" : " with " + amount + " of each resource (capped at the deposit limit)")); + } + + @Override + protected String _getHelpString() { + return "Sets every resource in the warehouse of the city you are standing in"; + } + + @Override + protected String _getUsageString() { + return "' ./fillwarehouse [amount]' (no amount fills each resource to its deposit limit)"; + } + +} diff --git a/src/engine/gameManager/DevCmdManager.java b/src/engine/gameManager/DevCmdManager.java index 4d061ca2..364fa715 100644 --- a/src/engine/gameManager/DevCmdManager.java +++ b/src/engine/gameManager/DevCmdManager.java @@ -101,6 +101,7 @@ public enum DevCmdManager { DevCmdManager.registerDevCmd(new SetAdminRuneCmd()); DevCmdManager.registerDevCmd(new SetInvulCmd()); DevCmdManager.registerDevCmd(new MakeItemCmd()); + DevCmdManager.registerDevCmd(new FillWarehouseCmd()); DevCmdManager.registerDevCmd(new SetSubRaceCmd()); // Admin