package module.command.character; import module.character.Group; import module.character.api.ICharacter; import module.command.CommandServer; import module.command.api.ICommand; import module.item.api.IContainer; import module.item.api.IItem; import module.server.PlayerServer; import module.utility.HelpUtil; import module.utility.ItemUtil; import module.utility.Parse; public class Get implements ICommand { private String[] name; public Get() { name = new String[2]; name[0] = "get"; name[1] = "g"; } @Override public String[] getName() { return name; } @Override public boolean action(ICharacter c, String[] command) { Group g = c.getMyGroup(); synchronized (g.getAtRoom()) { if (command.length == 2) { CommandServer.informGroup(g, "�A�Q��" + c.getChiName() + "�߰_����F��?\n"); return false; } if (g.getInBattle()) { if (command[2].equals("all")) { CommandServer.informGroup(g, "�A���b�԰����A�L�k�@���߰_�h�Ӫ��~�C\n"); return false; } if (command.length == 4) { IContainer container = ItemUtil.checkIsContainer(g, g .getAtRoom().getItemList(), command[3]); if (container != null) { if (container.onGetContent(c, command[2])) return true; } return false; } else { IItem obj = g.getAtRoom().getItemList() .findItem(command[2]); if (obj != null) { if (pickUpSingleItem(c, g, obj)) return true; } else CommandServer.informGroup(g, "�o�̨S���A�Q�ߪ��F��C\n"); } } else { if (command.length == 4) { IContainer container = ItemUtil.checkIsContainer(g, g .getAtRoom().getItemList(), command[3]); if (container != null) { if (command[2].equals("all")) { while (container.getItemList().itemList.size() > 0) { IItem obj = container.getItemList().itemList .get(0).findItem(0); String target = Parse.getFirstWord(obj .getEngName()); if (!container.onGetContent(c, target)) break; } CommandServer.informGroup(g, "OK.\n"); } else { container.onGetContent(c, command[2]); } } } else { IItem obj = null; if (command[2].equals("all")) { while (g.getAtRoom().getItemList().itemList.size() > 0) { obj = g.getAtRoom().getItemList().itemList.get(0) .findItem(0); if (!pickUpSingleItem(c, g, obj)) break; } CommandServer.informGroup(g, "OK.\n"); return false; } obj = g.getAtRoom().getItemList().findItem(command[2]); if (obj != null) { pickUpSingleItem(c, g, obj); } else CommandServer.informGroup(g, "�o�̨S���A�Q�ߪ��F��C\n"); } } return false; } } @Override public String getHelp() { String output = HelpUtil.getHelp("resources/help/get.help"); output += "\n"; output += HelpUtil.getHelp("resources/help/chooseTeammate.help"); return output; } private boolean pickUpSingleItem(ICharacter c, Group g, IItem obj) { // shock add for container test if (obj instanceof IContainer) { IContainer container = (IContainer) obj; switch (container.getType()) { case FIXED_POSITION: case TREASURE_BOX: CommandServer.informGroup(g, "�o�Ӯe���O�����H�N�߰_���C\n"); return false; default: // do nothing for now } } // shock add end g.getAtRoom().getItemList().removeItem(obj); g.getInventory().addItem(obj); g.getAtRoom().informRoom( c.getChiName() + "�߰_�F" + obj.getChiName() + "�C\n"); obj.setTTL(0); obj.setAtRoom(null); PlayerServer.getSystemTime().removeItem(obj); return true; } }