public static InventoryList fetchInventory(MOB seer, MOB mob) { final InventoryList lst = new InventoryList(); Vector<Coins> coinsV = null; int insertAt = -1; CMLib.beanCounter().getTotalAbsoluteNativeValue(mob); for (final Enumeration<Item> i = mob.items(); i.hasMoreElements(); ) { final Item thisItem = i.nextElement(); if (thisItem == null) continue; if ((thisItem.container() == null) && (thisItem.amWearingAt(Wearable.IN_INVENTORY))) { if (CMLib.flags().canBeSeenBy(thisItem, seer)) lst.foundAndSeen = true; else lst.foundButUnseen = true; if ((!(thisItem instanceof Coins)) || (((Coins) thisItem).getDenomination() == 0.0)) lst.viewItems.add(thisItem); else { coinsV = lst.moneyItems.get(((Coins) thisItem).getCurrency()); if (coinsV == null) { coinsV = new Vector<Coins>(); lst.moneyItems.put(((Coins) thisItem).getCurrency(), coinsV); } for (insertAt = 0; insertAt < coinsV.size(); insertAt++) if (coinsV.get(insertAt).getDenomination() > ((Coins) thisItem).getDenomination()) break; if (insertAt >= coinsV.size()) coinsV.add((Coins) thisItem); else coinsV.insertElementAt((Coins) thisItem, insertAt); } } } return lst; }
public StringBuilder getInventory(MOB seer, MOB mob, String mask) { final StringBuilder msg = new StringBuilder(""); final InventoryList list = fetchInventory(seer, mob); if (((list.viewItems.size() > 0) || (list.moneyItems.size() > 0)) && (!list.foundAndSeen)) { list.viewItems.clear(); list.moneyItems.clear(); list.foundButUnseen = true; } else if ((mask != null) && (mask.trim().length() > 0)) { mask = mask.trim().toUpperCase(); if (!mask.startsWith("all")) mask = "all " + mask; final Vector<Item> V = (Vector<Item>) list.viewItems.clone(); list.viewItems.clear(); Item I = (V.size() > 0) ? (Item) V.get(0) : null; while (I != null) { I = (Item) CMLib.english().fetchEnvironmental(V, mask, false); if (I != null) { list.viewItems.add(I); V.remove(I); } } } if ((list.viewItems.size() == 0) && (list.moneyItems.size() == 0)) { if ((mask != null) && (mask.trim().length() > 0)) msg.append(L("(nothing like that you can see right now)")); else msg.append(L("(nothing you can see right now)")); } else { if (list.viewItems.size() > 0) msg.append( CMLib.lister() .lister( seer, list.viewItems, true, "MItem", "", false, seer.isAttribute(MOB.Attrib.COMPRESS))); if (list.foundButUnseen) msg.append(L("(stuff you can't see right now)")); msg.append(getShowableMoney(list)); } return msg; }