Examples of PcInventory


Examples of lineage2.gameserver.model.items.PcInventory

    if (activeChar.isActionsDisabled() || activeChar.isInStoreMode() || activeChar.isInTrade())
    {
      activeChar.sendActionFailed();
      return;
    }
    PcInventory inventory = activeChar.getInventory();
    ItemInstance itemToUnnchant = inventory.getItemByObjectId(_objectId);
    if (itemToUnnchant == null)
    {
      activeChar.sendActionFailed();
      return;
    }
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    PcInventory inventory = player.getInventory();
    ItemInstance targetItem = inventory.getItemByObjectId(_targetItemObjId);
    ItemInstance stone = player.getAppearanceStone();
    if(targetItem == null || stone == null)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    if(stone.getOwnerId() != player.getObjectId())
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    if(!targetItem.canBeAppearance())
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    if(targetItem.getLocation() != ItemInstance.ItemLocation.INVENTORY && targetItem.getLocation() != ItemInstance.ItemLocation.PAPERDOLL)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    if((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    AppearanceStone appearanceStone = EnchantItemHolder.getInstance().getAppearanceStone(stone.getItemId());
    if(appearanceStone == null)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    if(appearanceStone.getType() != ShapeType.RESTORE && targetItem.getVisualId() > 0 || appearanceStone.getType() == ShapeType.RESTORE && targetItem.getVisualId() == 0)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    if(!targetItem.isOther() && targetItem.getTemplate().getItemGrade() == Grade.NONE)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    Grade[] stoneGrades = appearanceStone.getGrades();
    if(stoneGrades != null && stoneGrades.length > 0)
    {
      if(!ArrayUtils.contains(stoneGrades, targetItem.getTemplate().getItemGrade()))
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }
    }

    ShapeTargetType[] targetTypes = appearanceStone.getTargetTypes();
    if(targetTypes == null || targetTypes.length == 0)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    if(!ArrayUtils.contains(targetTypes, ShapeTargetType.ALL))
    {
      if(targetItem.isWeapon())
      {
        if(!ArrayUtils.contains(targetTypes, ShapeTargetType.WEAPON))
        {
          player.sendPacket(ExShapeShiftingResult.FAIL);
          player.setAppearanceStone(null);
          player.setAppearanceExtractItem(null);
          return;
        }
      }
      else if(targetItem.isArmor())
      {
        if(!ArrayUtils.contains(targetTypes, ShapeTargetType.ARMOR))
        {
          player.sendPacket(ExShapeShiftingResult.FAIL);
          player.setAppearanceStone(null);
          player.setAppearanceExtractItem(null);
          return;
        }
      }
      else
      {
        if(!ArrayUtils.contains(targetTypes, ShapeTargetType.ACCESSORY))
        {
          player.sendPacket(ExShapeShiftingResult.FAIL);
          player.setAppearanceStone(null);
          player.setAppearanceExtractItem(null);
          return;
        }
      }
    }

    ExItemType[] itemTypes = appearanceStone.getItemTypes();
    if(itemTypes != null && itemTypes.length > 0)
    {
      if(!ArrayUtils.contains(itemTypes, targetItem.getExItemType()))
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }
    }

    ItemInstance extracItem = player.getAppearanceExtractItem();
    int extracItemId = 0;
    if(appearanceStone.getType() != ShapeType.RESTORE && appearanceStone.getType() != ShapeType.FIXED)
    {
      if(extracItem == null)
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      if(!extracItem.canBeAppearance())
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      if(extracItem.getLocation() != ItemInstance.ItemLocation.INVENTORY && extracItem.getLocation() != ItemInstance.ItemLocation.PAPERDOLL)
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      /*if(!extracItem.isOther() && extracItem.getGrade() == ItemGrade.NONE)
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }*/

      if(!extracItem.isOther() && targetItem.getTemplate().getItemGrade().ordinal() <= extracItem.getTemplate().getItemGrade().ordinal())
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      if(extracItem.getVisualId() > 0)
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      if(targetItem.getExItemType() != extracItem.getExItemType())
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      if(extracItem.getOwnerId() != player.getObjectId())
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }
      extracItemId = extracItem.getItemId();
    }

    if(targetItem.getOwnerId() != player.getObjectId())
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      player.setAppearanceExtractItem(null);
      return;
    }

    inventory.writeLock();
    try
    {
      long cost = appearanceStone.getCost();
      if(cost > player.getAdena())
      {
        player.sendPacket(SystemMsg.YOU_CANNOT_MODIFY_AS_YOU_DO_NOT_HAVE_ENOUGH_ADENA);
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      if(stone.getCount() < 1L)
      {
        player.sendPacket(ExShapeShiftingResult.FAIL);
        player.setAppearanceStone(null);
        player.setAppearanceExtractItem(null);
        return;
      }

      if(appearanceStone.getType() == ShapeType.NORMAL)
      {
        if(!inventory.destroyItem(extracItem, 1L))
        {
          player.sendPacket(ExShapeShiftingResult.FAIL);
          player.setAppearanceStone(null);
          player.setAppearanceExtractItem(null);
          return;
        }
      }

      inventory.destroyItem(stone, 1L);
      player.reduceAdena(cost);

      boolean equipped = false;
      if(equipped = targetItem.isEquipped())
      {
        inventory.isRefresh = true;
        inventory.unEquipItem(targetItem);
      }

      switch(appearanceStone.getType())
      {
        case RESTORE:
          targetItem.setVisualId(0);
          break;
        case NORMAL:
          targetItem.setVisualId(extracItem.getItemId());
          break;
        case BLESSED:
          targetItem.setVisualId(extracItem.getItemId());
          break;
        case FIXED:
          targetItem.setVisualId(appearanceStone.getExtractItemId());
          break;
        default:
          break;
      }

      targetItem.setJdbcState(JdbcEntityState.UPDATED);
      targetItem.update();

      if(equipped)
      {
        inventory.equipItem(targetItem);
        inventory.isRefresh = false;
      }
      player.sendPacket(new SystemMessage2(SystemMsg.YOU_HAVE_SPENT_S1_ON_A_SUCCESSFUL_APPEARANCE_MODIFICATION).addLong(cost));
    }
    finally
    {
      inventory.writeUnlock();
    }

    //player.sendPacket(new InventoryUpdate().addModifiedItem(player, targetItem));
    player.sendPacket(new InventoryUpdate().addModifiedItem(targetItem));
    //player.sendPacket(new IStaticPacket[] { new ExShapeShiftingResult(targetItem.getItemId(), extracItem.getVisualId()), new UserInfo(player), new ExBR_ExtraUserInfo(player) });
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

    else
    {
      _log.warn("Error retrieving a warehouse object for char " + activeChar.getName() + " - using warehouse type: " + activeChar.getUsingWarehouseType());
      return;
    }
    PcInventory inventory = activeChar.getInventory();
    inventory.writeLock();
    warehouse.writeLock();
    try
    {
      long weight = 0;
      int slots = 0;
      for (int i = 0; i < _count; i++)
      {
        ItemInstance item = warehouse.getItemByObjectId(_items[i]);
        if ((item == null) || (item.getCount() < _itemQ[i]))
        {
          activeChar.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT);
          return;
        }
        weight = SafeMath.addAndCheck(weight, SafeMath.mulAndCheck(item.getTemplate().getWeight(), _itemQ[i]));
        if (!item.isStackable() || (inventory.getItemByItemId(item.getItemId()) == null))
        {
          slots++;
        }
      }
      if (!activeChar.getInventory().validateCapacity(slots))
      {
        activeChar.sendPacket(Msg.YOUR_INVENTORY_IS_FULL);
        return;
      }
      if (!activeChar.getInventory().validateWeight(weight))
      {
        activeChar.sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_WEIGHT_LIMIT);
        return;
      }
      for (int i = 0; i < _count; i++)
      {
        ItemInstance item = warehouse.removeItemByObjectId(_items[i], _itemQ[i]);
        Log.LogItem(activeChar, logType, item);
        activeChar.getInventory().addItem(item);
      }
    }
    catch (ArithmeticException ae)
    {
      sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED);
      return;
    }
    finally
    {
      warehouse.writeUnlock();
      inventory.writeUnlock();
    }
    activeChar.sendChanges();
    activeChar.sendPacket(Msg.THE_TRANSACTION_IS_COMPLETE);
  }
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      return;
    }

    PcInventory inventory = player.getInventory();
    ItemInstance targetItem = inventory.getItemByObjectId(_targetItemObjId);
    ItemInstance extracItem = inventory.getItemByObjectId(_extracItemObjId);
    ItemInstance stone = player.getAppearanceStone();
    if(targetItem == null || extracItem == null || stone == null)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      return;
    }

    if(!extracItem.canBeAppearance())
    {
      player.sendPacket(ExPutShapeShiftingExtractionItemResult.FAIL);
      return;
    }

    if(extracItem.getLocation() != ItemInstance.ItemLocation.INVENTORY && extracItem.getLocation() != ItemInstance.ItemLocation.PAPERDOLL)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      return;
    }

    if((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
    {
      player.sendPacket(ExShapeShiftingResult.FAIL);
      player.setAppearanceStone(null);
      return;
    }
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

    {
      activeChar.sendPacket(Msg.YOU_CANNOT_DO_THAT_WHILE_FISHING);
      return;
    }
    PetInventory petInventory = pet.getInventory();
    PcInventory playerInventory = activeChar.getInventory();
    ItemInstance item = petInventory.getItemByObjectId(_objectId);
    if ((item == null) || (item.getCount() < _amount) || item.isEquipped())
    {
      activeChar.sendActionFailed();
      return;
    }
    int slots = 0;
    long weight = item.getTemplate().getWeight() * _amount;
    if (!item.getTemplate().isStackable() || (activeChar.getInventory().getItemByItemId(item.getItemId()) == null))
    {
      slots = 1;
    }
    if (!activeChar.getInventory().validateWeight(weight))
    {
      sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_WEIGHT_LIMIT);
      return;
    }
    if (!activeChar.getInventory().validateCapacity(slots))
    {
      sendPacket(Msg.YOUR_INVENTORY_IS_FULL);
      return;
    }
    playerInventory.addItem(petInventory.removeItemByObjectId(_objectId, _amount));
    pet.sendChanges();
    activeChar.sendChanges();
  }
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

    if ((whkeeper == null) || !activeChar.isInRangeZ(whkeeper, Creature.INTERACTION_DISTANCE))
    {
      activeChar.sendPacket(Msg.WAREHOUSE_IS_TOO_FAR);
      return;
    }
    PcInventory inventory = activeChar.getInventory();
    boolean privatewh = activeChar.getUsingWarehouseType() != WarehouseType.CLAN;
    Warehouse warehouse;
    if (privatewh)
    {
      warehouse = activeChar.getWarehouse();
    }
    else
    {
      warehouse = activeChar.getClan().getWarehouse();
    }
    inventory.writeLock();
    warehouse.writeLock();
    try
    {
      int slotsleft = 0;
      long adenaDeposit = 0;
      if (privatewh)
      {
        slotsleft = activeChar.getWarehouseLimit() - warehouse.getSize();
      }
      else
      {
        slotsleft = (activeChar.getClan().getWhBonus() + Config.WAREHOUSE_SLOTS_CLAN) - warehouse.getSize();
      }
      int items = 0;
      for (int i = 0; i < _count; i++)
      {
        ItemInstance item = inventory.getItemByObjectId(_items[i]);
        if ((item == null) || (item.getCount() < _itemQ[i]) || !item.canBeStored(activeChar, privatewh))
        {
          _items[i] = 0;
          _itemQ[i] = 0L;
          continue;
        }
        if (!item.isStackable() || (warehouse.getItemByItemId(item.getItemId()) == null))
        {
          if (slotsleft <= 0)
          {
            _items[i] = 0;
            _itemQ[i] = 0L;
            continue;
          }
          slotsleft--;
        }
        if (item.getItemId() == ItemTemplate.ITEM_ID_ADENA)
        {
          adenaDeposit = _itemQ[i];
        }
        items++;
      }
      if (slotsleft <= 0)
      {
        activeChar.sendPacket(Msg.YOUR_WAREHOUSE_IS_FULL);
      }
      if (items == 0)
      {
        activeChar.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT);
        return;
      }
      long fee = SafeMath.mulAndCheck(items, _WAREHOUSE_FEE);
      if ((fee + adenaDeposit) > activeChar.getAdena())
      {
        activeChar.sendPacket(Msg.YOU_LACK_THE_FUNDS_NEEDED_TO_PAY_FOR_THIS_TRANSACTION);
        return;
      }
      if (!activeChar.reduceAdena(fee, true))
      {
        sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
        return;
      }
      for (int i = 0; i < _count; i++)
      {
        if (_items[i] == 0)
        {
          continue;
        }
        ItemInstance item = inventory.removeItemByObjectId(_items[i], _itemQ[i]);
        Log.LogItem(activeChar, privatewh ? Log.WarehouseDeposit : Log.ClanWarehouseDeposit, item);
        warehouse.addItem(item);
      }
    }
    catch (ArithmeticException ae)
    {
      sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED);
      return;
    }
    finally
    {
      warehouse.writeUnlock();
      inventory.writeUnlock();
    }
    activeChar.sendChanges();
    activeChar.sendPacket(Msg.THE_TRANSACTION_IS_COMPLETE);
  }
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

    Player activeChar = getClient().getActiveChar();
    if (activeChar == null)
    {
      return;
    }
    PcInventory inventory = activeChar.getInventory();
    ItemInstance itemToEnchant = inventory.getItemByObjectId(_itemId);
    ItemInstance catalyst = inventory.getItemByObjectId(_catalystId);
    if (ItemFunctions.checkCatalyst(itemToEnchant, catalyst))
    {
      activeChar.sendPacket(new ExPutEnchantSupportItemResult(1));
    }
    else
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

    if (activeChar.isInTrade())
    {
      activeChar.sendActionFailed();
      return;
    }
    PcInventory inventory = activeChar.getInventory();
    ItemInstance itemToEnchant = inventory.getItemByObjectId(_objectId);
    ItemInstance stone = activeChar.getEnchantScroll();
    activeChar.setEnchantScroll(null);
    if ((itemToEnchant == null) || (stone == null))
    {
      activeChar.sendActionFailed();
      return;
    }
    ItemTemplate item = itemToEnchant.getTemplate();
    if (!itemToEnchant.canBeEnchanted() || (item.getCrystalType().cry < ItemTemplate.CRYSTAL_S))
    {
      activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC);
      return;
    }
    if ((itemToEnchant.getLocation() != ItemInstance.ItemLocation.INVENTORY) && (itemToEnchant.getLocation() != ItemInstance.ItemLocation.PAPERDOLL))
    {
      activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC);
      return;
    }
    if (itemToEnchant.isStackable() || ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null))
    {
      activeChar.sendActionFailed();
      return;
    }
    AttributeStoneInfo asi = AttributeStoneManager.getStoneInfo(stone.getItemId());
    if (asi == null)
    {
      return;
    }
    Element element = itemToEnchant.isArmor() ? Element.getReverseElement(asi.getElement()) : asi.getElement();
    if (itemToEnchant.isArmor())
    {
      if (itemToEnchant.getAttributeElementValue(Element.getReverseElement(element), false) != 0)
      {
        activeChar.sendPacket(Msg.ANOTHER_ELEMENTAL_POWER_HAS_ALREADY_BEEN_ADDED_THIS_ELEMENTAL_POWER_CANNOT_BE_ADDED, ActionFail.STATIC);
        return;
      }
    }
    else if (itemToEnchant.isWeapon())
    {
      if ((itemToEnchant.getAttributeElement() != Element.NONE) && (itemToEnchant.getAttributeElement() != element))
      {
        activeChar.sendPacket(Msg.ANOTHER_ELEMENTAL_POWER_HAS_ALREADY_BEEN_ADDED_THIS_ELEMENTAL_POWER_CANNOT_BE_ADDED, ActionFail.STATIC);
        return;
      }
    }
    else
    {
      activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC);
      return;
    }
    if (item.isUnderwear() || item.isCloak() || item.isBracelet() || item.isBelt() || !item.isAttributable())
    {
      activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC);
      return;
    }
    int maxValue = itemToEnchant.isWeapon() ? asi.getMaxWeapon() : asi.getMaxArmor();
    int minValue = itemToEnchant.isWeapon() ? asi.getMinWeapon() : asi.getMinArmor();
    int currentValue = itemToEnchant.getAttributeElementValue(element, false);
    if ((currentValue >= maxValue) || (currentValue < minValue))
    {
      activeChar.sendPacket(Msg.ELEMENTAL_POWER_ENCHANCER_USAGE_HAS_BEEN_CANCELLED, ActionFail.STATIC);
      return;
    }
    if (itemToEnchant.getOwnerId() != activeChar.getObjectId())
    {
      activeChar.sendPacket(Msg.INAPPROPRIATE_ENCHANT_CONDITIONS, ActionFail.STATIC);
      return;
    }
    if (!inventory.destroyItem(stone, 1L))
    {
      activeChar.sendActionFailed();
      return;
    }
    if (Rnd.chance(asi.getChance()))
View Full Code Here

Examples of lineage2.gameserver.model.items.PcInventory

      player.setEnchantScroll(null);
      player.sendPacket(EnchantResult.CANCEL);
      player.sendPacket(SystemMsg.INAPPROPRIATE_ENCHANT_CONDITIONS);
      player.sendActionFailed();
    }
    PcInventory inventory = player.getInventory();
    inventory.writeLock();
    try
    {
      ItemInstance item = inventory.getItemByObjectId(_objectId);
      ItemInstance scroll = player.getEnchantScroll();
      ItemInstance catalyst = _catalystObjId > 0 ? inventory.getItemByObjectId(_catalystObjId) : null;
      if (!ItemFunctions.checkCatalyst(item, catalyst))
      {
        catalyst = null;
      }
      if ((item == null) || (scroll == null))
      {
        player.sendActionFailed();
        return;
      }
      EnchantScrollInfo esi = EnchantScrollManager.getScrollInfo(scroll.getItemId());
      if (esi == null)
      {
        player.sendActionFailed();
        return;
      }
      if ((item.getEnchantLevel() >= esi.getMax()) || (item.getEnchantLevel() < esi.getMin()))
      {
        player.sendPacket(EnchantResult.CANCEL);
        player.sendPacket(SystemMsg.INAPPROPRIATE_ENCHANT_CONDITIONS);
        player.sendActionFailed();
        return;
      }
      if (esi.getType() != EnchantScrollType.SPECIAL)
      {
        if (!checkItem(item, esi))
        {
          player.sendPacket(EnchantResult.CANCEL);
          player.sendPacket(SystemMsg.DOES_NOT_FIT_STRENGTHENING_CONDITIONS_OF_THE_SCROLL);
          player.sendActionFailed();
          return;
        }
      }
      if ((!inventory.destroyItem(scroll, 1)) || ((catalyst != null) && (!inventory.destroyItem(catalyst, 1))))
      {
        player.sendPacket(EnchantResult.CANCEL);
        player.sendActionFailed();
        return;
      }
      boolean equipped = item.isEquipped();
      if (equipped)
      {
        inventory.isRefresh = true;
        inventory.unEquipItem(item);
      }
      int safeEnchantLevel = item.getTemplate().getBodyPart() == 32768 ? (esi.getSafe() + 1) : esi.getSafe();
      int chance = esi.getChance();
      if (catalyst != null)
      {
        chance += ItemFunctions.getCatalystPower(catalyst.getItemId());
      }
      if ((esi.getType() == EnchantScrollType.ANCIENT) || (esi.getType() == EnchantScrollType.ITEM_MALL))
      {
        chance += 10;
      }
      if (esi.getType() == EnchantScrollType.DIVINE)
      {
        chance = 100;
      }
      if (item.getEnchantLevel() <= safeEnchantLevel)
      {
        chance = 100;
      }
      chance = Math.min(chance, 100);

      if (item.isArmor())
        WorldStatisticsManager.getInstance().updateStat(player, CategoryType.ARMOR_ENCHANT_TRY, item.getCrystalType().ordinal(), item.getEnchantLevel() + 1);
      else if (item.isWeapon())
        WorldStatisticsManager.getInstance().updateStat(player, CategoryType.WEAPON_ENCHANT_TRY, item.getCrystalType().ordinal(), item.getEnchantLevel() + 1);
     
      if (Rnd.chance(chance))
      {
        item.setEnchantLevel(item.getEnchantLevel() + 1);
        item.setJdbcState(JdbcEntityState.UPDATED);
        item.update();
        if (equipped)
        {
          inventory.equipItem(item);
          inventory.isRefresh = false;
        }
        player.sendPacket(new InventoryUpdate().addModifiedItem(item));

        if (item.isArmor())
          WorldStatisticsManager.getInstance().updateStat(player, CategoryType.ARMOR_ENCHANT_MAX, item.getCrystalType().ordinal(), item.getEnchantLevel());

        if (item.isWeapon())

          WorldStatisticsManager.getInstance().updateStat(player, CategoryType.WEAPON_ENCHANT_MAX, item.getCrystalType().ordinal(), item.getEnchantLevel());

        player.sendPacket(new EnchantResult(0, 0, 0L, item.getEnchantLevel()));

        if (Config.SHOW_ENCHANT_EFFECT_RESULT)
        {
          player.broadcastPacket(new L2GameServerPacket[] { new SystemMessage(3013).addName(player).addNumber(item.getEnchantLevel()).addItemName(item.getItemId()) });
          player.broadcastPacket(new L2GameServerPacket[] { new MagicSkillUse(player, player, 5965, 1, 500, 1500L) });
        }
      }
      else
      {
        switch (esi.getType())
        {
          case NORMAL:
            if (item.isEquipped())
            {
              player.sendDisarmMessage(item);
            }
            if (!inventory.destroyItem(item, 1L))
            {
              player.sendActionFailed();
              return;
            }
            int crystalId = item.getCrystalType().cry;
            if ((crystalId > 0) && (item.getTemplate().getCrystalCount() > 0))
            {
              int crystalAmount = (int) (item.getTemplate().getCrystalCount() * 0.87D);
              if (item.getEnchantLevel() > 3)
              {
                crystalAmount = (int) (crystalAmount + (item.getTemplate().getCrystalCount() * 0.25D * (item.getEnchantLevel() - 3)));
              }
              if (crystalAmount < 1)
              {
                crystalAmount = 1;
              }
              player.sendPacket(new EnchantResult(1, crystalId, crystalAmount));
              ItemFunctions.addItem(player, crystalId, crystalAmount, true);
            }
            else
            {
              player.sendPacket(EnchantResult.FAILED_NO_CRYSTALS);
            }
            break;
          case DESTRUCTION:
            item.setEnchantLevel(item.getEnchantLevel());
            item.setJdbcState(JdbcEntityState.UPDATED);
            item.update();
            if (equipped)
            {
              inventory.equipItem(item);
              inventory.isRefresh = false;
            }
            player.sendPacket(new InventoryUpdate().addModifiedItem(item));
            player.sendPacket(SystemMsg.THE_BLESSED_ENCHANT_FAILED);
            player.sendPacket(EnchantResult.ANCIENT_FAILED);
            break;
          case BLESSED:
          case ITEM_MALL:
          case CRYSTALL:
            item.setEnchantLevel(0);
            item.setJdbcState(JdbcEntityState.UPDATED);
            item.update();
            if (equipped)
            {
              inventory.equipItem(item);
              inventory.isRefresh = false;
            }
            player.sendPacket(new InventoryUpdate().addModifiedItem(item));
            player.sendPacket(SystemMsg.THE_BLESSED_ENCHANT_FAILED);
            player.sendPacket(EnchantResult.BLESSED_FAILED);
            break;
          case ANCIENT:
            player.sendPacket(EnchantResult.ANCIENT_FAILED);
            break;
          default:
            break;
        }
      }
    }
    finally
    {
      inventory.writeUnlock();
      player.setEnchantScroll(null);
      player.updateStats();
    }
  }
View Full Code Here

Examples of net.sf.l2j.gameserver.model.PcInventory

        int buy;
        {
          int castleId = getCastle().getCastleId();
          int circlet = CastleManager.getInstance().getCircletByCastleId(castleId);
          PcInventory s = player.getInventory();
          if (s.getItemByItemId(circlet)==null)
          {
            buy = (Integer.parseInt(val+"1"));
          }
          else
          {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.