// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.devcmd.cmds; import engine.devcmd.AbstractDevCmd; import engine.objects.AbstractGameObject; import engine.objects.ItemBase; import engine.objects.LootTable; import engine.objects.PlayerCharacter; /** * @author Eighty */ public class MBDropCmd extends AbstractDevCmd { public MBDropCmd() { super("mbdrop"); } @Override protected void _doCmd(PlayerCharacter pcSender, String[] args, AbstractGameObject target) { String newline = "\r\n "; if (args.length != 1) { this.sendUsage(pcSender); this.sendHelp(pcSender); return; } String output = ""; switch (args[0].toLowerCase()) { case "clear": LootTable.contractCount = 0; LootTable.dropCount = 0; LootTable.glassCount = 0; LootTable.runeCount = 0; LootTable.rollCount = 0; LootTable.resourceCount = 0; LootTable.contractDroppedMap.clear(); LootTable.glassDroppedMap.clear(); LootTable.itemsDroppedMap.clear(); LootTable.resourceDroppedMap.clear(); LootTable.runeDroppedMap.clear(); break; case "all": output = LootTable.dropCount + " items - ITEM NAME : DROP COUNT" + newline; for (ItemBase ib : LootTable.itemsDroppedMap.keySet()) { int dropCount = LootTable.itemsDroppedMap.get(ib); output += ib.getName() + " : " + dropCount + newline; } break; case "resource": output = LootTable.resourceCount + " Resources - ITEM NAME : DROP COUNT" + newline; for (ItemBase ib : LootTable.resourceDroppedMap.keySet()) { int dropCount = LootTable.resourceDroppedMap.get(ib); output += ib.getName() + " : " + dropCount + newline; } break; case "rune": output = LootTable.runeCount + " Runes - ITEM NAME : DROP COUNT" + newline; for (ItemBase ib : LootTable.runeDroppedMap.keySet()) { int dropCount = LootTable.runeDroppedMap.get(ib); output += ib.getName() + " : " + dropCount + newline; } break; case "contract": output = LootTable.contractCount + " Contracts - ITEM NAME : DROP COUNT" + newline; for (ItemBase ib : LootTable.contractDroppedMap.keySet()) { int dropCount = LootTable.contractDroppedMap.get(ib); output += ib.getName() + " : " + dropCount + newline; } break; case "glass": output = LootTable.glassCount + " Glass - ITEM NAME : DROP COUNT" + newline; for (ItemBase ib : LootTable.glassDroppedMap.keySet()) { int dropCount = LootTable.glassDroppedMap.get(ib); output += ib.getName() + " : " + dropCount + newline; } break; case "chance": float chance = (float) LootTable.dropCount / (float) LootTable.rollCount * 100; output = LootTable.dropCount + " out of " + LootTable.rollCount + " items Dropped. chance = " + chance + '%'; break; default: this.sendUsage(pcSender); this.sendHelp(pcSender); return; } this.throwbackInfo(pcSender, output); } @Override protected String _getUsageString() { return "' /mbdrop all/resource/rune/contract/glass/chance/clear"; } @Override protected String _getHelpString() { return "Lists drops for server since a reboot. All lists all items and drops. chance is the overall chance items drop from mobs on server. (not including Equipment)"; } }