public ExReplySentPost(Message msg) {
   _msg = msg;
   if (msg.hasAttachments()) {
     final ItemContainer attachments = msg.getAttachments();
     if ((attachments != null) && (attachments.getSize() > 0)) {
       _items = attachments.getItems();
     } else {
       _log.warning("Message " + msg.getId() + " has attachments but itemcontainer is empty.");
     }
   }
 }
Example #2
0
 @Override
 protected void addItem(L2ItemInstance item) {
   super.addItem(item);
   try {
     if (getSize() > 12) {
       L2ItemInstance removedItem;
       synchronized (_items) {
         removedItem = _items.remove(0);
       }
       if (removedItem != null) {
         ItemTable.getInstance().destroyItem("ClearRefund", removedItem, getOwner(), null);
         removedItem.updateDatabase(true);
       }
     }
   } catch (Exception e) {
     _log.log(Level.SEVERE, "addItem()", e);
   }
 }
Example #3
0
  /**
   * Transfers item to another inventory
   *
   * @param process : String Identifier of process triggering this action
   * @param itemId : int Item Identifier of the item to be transfered
   * @param count : int Quantity of items to be transfered
   * @param actor : L2PcInstance Player requesting the item transfer
   * @param reference : Object Object referencing current action like NPC selling item or previous
   *     item in transformation
   * @return L2ItemInstance corresponding to the new item or the updated item in inventory
   */
  public L2ItemInstance transferItem(
      String process,
      int objectId,
      long count,
      ItemContainer target,
      L2PcInstance actor,
      Object reference) {
    if (target == null) {
      return null;
    }

    L2ItemInstance sourceitem = getItemByObjectId(objectId);
    if (sourceitem == null) {
      return null;
    }
    L2ItemInstance targetitem =
        sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getItemId()) : null;

    synchronized (sourceitem) {
      // check if this item still present in this container
      if (getItemByObjectId(objectId) != sourceitem) {
        return null;
      }

      // Check if requested quantity is available
      if (count > sourceitem.getCount()) count = sourceitem.getCount();

      // If possible, move entire item object
      if (sourceitem.getCount() == count && targetitem == null) {
        removeItem(sourceitem);
        target.addItem(process, sourceitem, actor, reference);
        targetitem = sourceitem;
      } else {
        if (sourceitem.getCount() > count) // If possible, only update counts
        {
          sourceitem.changeCount(process, -count, actor, reference);
        } else
        // Otherwise destroy old item
        {
          removeItem(sourceitem);
          ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
        }

        if (targetitem != null) // If possible, only update counts
        {
          targetitem.changeCount(process, count, actor, reference);
        } else
        // Otherwise add new item
        {
          targetitem = target.addItem(process, sourceitem.getItemId(), count, actor, reference);
        }
      }

      // Updates database
      sourceitem.updateDatabase(true);
      if (targetitem != sourceitem && targetitem != null) targetitem.updateDatabase();
      if (sourceitem.isAugmented()) sourceitem.getAugmentation().removeBonus(actor);
      refreshWeight();
      target.refreshWeight();
    }
    return targetitem;
  }