Package com.l2jfrozen.gameserver.model.actor.instance

Examples of com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance


    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_TRADE_DISCARD_DROP_ITEM_WHILE_IN_SHOPMODE));
      return;
    }
   
    L2ItemInstance itemToRemove = activeChar.getInventory().getItemByObjectId(_objectId);
   
    // if we cant find requested item, its actualy a cheat!
    if (itemToRemove == null)
      return;
    if (itemToRemove.fireEvent("DESTROY", (Object[]) null) != null)
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
      return;
    }
   
    // Cannot discard item that the skill is consumming
    if (activeChar.isCastingNow())
    {
      if (activeChar.getCurrentSkill() != null && activeChar.getCurrentSkill().getSkill().getItemConsumeId() == itemToRemove.getItemId())
      {
        activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
        return;
      }
    }
   
    int itemId = itemToRemove.getItemId();
   
    if (itemToRemove.isWear() || !itemToRemove.isDestroyable() || CursedWeaponsManager.getInstance().isCursed(itemId))
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
      return;
    }
   
    if (!itemToRemove.isStackable() && count > 1)
    {
      Util.handleIllegalPlayerAction(activeChar, "[RequestDestroyItem] count > 1 but item is not stackable! oid: " + _objectId + " owner: " + activeChar.getName(), Config.DEFAULT_PUNISH);
      return;
    }
   
    if (_count > itemToRemove.getCount())
    {
      count = itemToRemove.getCount();
    }
   
    if (itemToRemove.isEquipped())
    {
      if (itemToRemove.isAugmented())
      {
        itemToRemove.getAugmentation().removeBoni(activeChar);
      }
     
      L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(itemToRemove.getEquipSlot());
      InventoryUpdate iu = new InventoryUpdate();
      for (L2ItemInstance element : unequiped)
      {
        activeChar.checkSSMatch(null, element);
        iu.addModifiedItem(element);
      }
     
      activeChar.sendPacket(iu);
      activeChar.broadcastUserInfo();
    }
   
    if (L2PetDataTable.isPetItem(itemId))
    {
      Connection con = null;
      try
      {
        if (activeChar.getPet() != null && activeChar.getPet().getControlItemId() == _objectId)
        {
          activeChar.getPet().unSummon(activeChar);
        }
       
        // if it's a pet control item, delete the pet
        con = L2DatabaseFactory.getInstance().getConnection(false);
        PreparedStatement statement = con.prepareStatement("DELETE FROM pets WHERE item_obj_id=?");
        statement.setInt(1, _objectId);
        statement.execute();
        statement.close();
       
        statement = null;
      }
      catch (Exception e)
      {
        if (Config.ENABLE_ALL_EXCEPTIONS)
          e.printStackTrace();
       
        _log.log(Level.WARNING, "could not delete pet objectid: ", e);
      }
      finally
      {
        CloseUtil.close(con);
        con = null;
      }
    }
   
    L2ItemInstance removedItem = activeChar.getInventory().destroyItem("Destroy", _objectId, count, activeChar, null);
   
    if (removedItem == null)
      return;
   
    if (!Config.FORCE_INVENTORY_UPDATE)
    {
      InventoryUpdate iu = new InventoryUpdate();
      if (removedItem.getCount() == 0)
      {
        iu.addRemovedItem(removedItem);
      }
      else
      {
View Full Code Here


  {
    L2PcInstance activeChar = getClient().getActiveChar();
    if (activeChar == null)
      return;
   
    L2ItemInstance targetItem = (L2ItemInstance) L2World.getInstance().findObject(_targetItemObjId);
    L2ItemInstance refinerItem = (L2ItemInstance) L2World.getInstance().findObject(_refinerItemObjId);
    L2ItemInstance gemstoneItem = (L2ItemInstance) L2World.getInstance().findObject(_gemstoneItemObjId);
   
    if (targetItem == null || refinerItem == null || gemstoneItem == null || targetItem.getOwnerId() != activeChar.getObjectId() || refinerItem.getOwnerId() != activeChar.getObjectId() || gemstoneItem.getOwnerId() != activeChar.getObjectId() || activeChar.getLevel() < 46) // must be lvl 46
    {
      activeChar.sendPacket(new ExVariationResult(0, 0, 0));
      activeChar.sendPacket(new SystemMessage(SystemMessageId.AUGMENTATION_FAILED_DUE_TO_INAPPROPRIATE_CONDITIONS));
      return;
    }
View Full Code Here

   
    // Flood protect drop to avoid packet lag
    if (!getClient().getFloodProtectors().getDropItem().tryPerformAction("drop item"))
      return;
   
    L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
   
    if(item == null || _count == 0 || !activeChar.validateItemManipulation(_objectId, "drop") || !Config.ALLOW_DISCARDITEM && !activeChar.isGM() || (!item.isDropable() && !(activeChar.isGM() && Config.GM_TRADE_RESTRICTED_ITEMS)))
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
      return;
    }
   
    if (item.isAugmented())
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.AUGMENTED_ITEM_CANNOT_BE_DISCARDED));
      return;
    }
   

    if(item.getItemType() == L2EtcItemType.QUEST && !(activeChar.isGM() && Config.GM_TRADE_RESTRICTED_ITEMS))
      return;

    int itemId = item.getItemId();

    // Cursed Weapons cannot be dropped
    if(CursedWeaponsManager.getInstance().isCursed(itemId))
      return;

    if(_count > item.getCount())
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
      return;
    }

    if(Config.PLAYER_SPAWN_PROTECTION > 0 && activeChar.isInvul() && !activeChar.isGM())
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
      return;
    }

    if(_count <= 0)
    {
      activeChar.setAccessLevel(-1); //ban
      Util.handleIllegalPlayerAction(activeChar, "[RequestDropItem] count <= 0! ban! oid: " + _objectId + " owner: " + activeChar.getName(), IllegalPlayerAction.PUNISH_KICK);
      return;
    }

    if(!item.isStackable() && _count > 1)
    {
      Util.handleIllegalPlayerAction(activeChar, "[RequestDropItem] count > 1 but item is not stackable! ban! oid: " + _objectId + " owner: " + activeChar.getName(), IllegalPlayerAction.PUNISH_KICK);
      return;
    }

    if(!activeChar.getAccessLevel().allowTransaction())
    {
      activeChar.sendMessage("Unsufficient privileges.");
      activeChar.sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    if(activeChar.isProcessingTransaction() || activeChar.getPrivateStoreType() != 0)
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_TRADE_DISCARD_DROP_ITEM_WHILE_IN_SHOPMODE));
      return;
    }

    if(activeChar.isFishing())
    {
      //You can't mount, dismount, break and drop items while fishing
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DO_WHILE_FISHING_2));
      return;
    }

    // Cannot discard item that the skill is consumming
    if(activeChar.isCastingNow())
    {
      if(activeChar.getCurrentSkill() != null && activeChar.getCurrentSkill().getSkill().getItemConsumeId() == item.getItemId())
      {
        activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
        return;
      }
    }

    if(L2Item.TYPE2_QUEST == item.getItem().getType2() && !activeChar.isGM())
    {
      if(Config.DEBUG)
      {
        _log.finest(activeChar.getObjectId() + ":player tried to drop quest item");
      }
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_EXCHANGE_ITEM));
      return;
    }

    if(!activeChar.isInsideRadius(_x, _y, 150, false) || Math.abs(_z - activeChar.getZ()) > 50)
    {
      if(Config.DEBUG)
      {
        _log.finest(activeChar.getObjectId() + ": trying to drop too far away");
      }
      activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_DISTANCE_TOO_FAR));
      return;
    }

    if(Config.DEBUG)
    {
      _log.fine("requested drop item " + _objectId + "(" + item.getCount() + ") at " + _x + "/" + _y + "/" + _z);
    }

    if(item.isEquipped())
    {
      // Remove augementation boni on unequip
      if(item.isAugmented())
      {
        item.getAugmentation().removeBoni(activeChar);
      }

      L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInBodySlotAndRecord(item.getItem().getBodyPart());
      InventoryUpdate iu = new InventoryUpdate();

      for(L2ItemInstance element : unequiped)
      {
        activeChar.checkSSMatch(null, element);

        iu.addModifiedItem(element);
      }
      activeChar.sendPacket(iu);
      activeChar.broadcastUserInfo();

      ItemList il = new ItemList(activeChar, true);
      activeChar.sendPacket(il);
    }
   
    L2ItemInstance dropedItem = activeChar.dropItem("Drop", _objectId, _count, _x, _y, _z, null, false, false);

    if(Config.DEBUG)
    {
      _log.fine("dropping " + _objectId + " item(" + _count + ") at: " + _x + " " + _y + " " + _z);
    }

    if(dropedItem != null && dropedItem.getItemId() == 57 && dropedItem.getCount() >= 1000000 && Config.RATE_DROP_ADENA<=200)
    {
      String msg = "Character (" + activeChar.getName() + ") has dropped (" + dropedItem.getCount() + ")adena at (" + _x + "," + _y + "," + _z + ")";
      _log.warning(msg);
      GmListTable.broadcastMessageToGMs(msg);
    }
   
  }
View Full Code Here

        player.sendPacket(sm);
        continue;
      }

      // Add item to Inventory and adjust update packet
      L2ItemInstance itemDel = null;
      L2ItemInstance itemAdd = null;
      if(player.getInventory().getItemByObjectId(objId) != null)
      {
        // check if player have correct items count
        L2ItemInstance item = player.getInventory().getItemByObjectId(objId);
        if(item.getCount() < count)
        {
          continue;
        }

        itemDel = player.getInventory().destroyItem("Manor", objId, count, player, manorManager);
View Full Code Here

    {
      int objectId = _items[i * 2 + 0];
      int count = _items[i * 2 + 1];

      // Calculate needed slots
      L2ItemInstance item = warehouse.getItemByObjectId(objectId);
      if(item == null)
      {
        continue;
      }
      weight += count * item.getItem().getWeight();
      if(!item.isStackable())
      {
        slots += count;
      }
      else if(player.getInventory().getItemByItemId(item.getItemId()) == null)
      {
        slots++;
      }
    }

    // Item Max Limit Check
    if(!player.getInventory().validateCapacity(slots))
    {
      sendPacket(new SystemMessage(SystemMessageId.SLOTS_FULL));
      return;
    }

    // Like L2OFF enchant window must close
    if(player.getActiveEnchantItem() != null)
    {
      sendPacket(new SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED));
      player.sendPacket(new EnchantResult(0));
      player.sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    // Weight limit Check
    if(!player.getInventory().validateWeight(weight))
    {
      sendPacket(new SystemMessage(SystemMessageId.WEIGHT_LIMIT_EXCEEDED));
      return;
    }

    // Proceed to the transfer
    InventoryUpdate playerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();
    for(int i = 0; i < _count; i++)
    {
      int objectId = _items[i * 2 + 0];
      int count = _items[i * 2 + 1];

      L2ItemInstance oldItem = warehouse.getItemByObjectId(objectId);
      if(oldItem == null || oldItem.getCount() < count)
      {
        player.sendMessage("Can't withdraw requested item" + (count > 1 ? "s" : ""));
      }
      L2ItemInstance newItem = warehouse.transferItem("Warehouse", objectId, count, player.getInventory(), player, player.getLastFolkNPC());
      if(newItem == null)
      {
        _log.warning("Error withdrawing a warehouse object for char " + player.getName());
        continue;
      }

      if(playerIU != null)
      {
        if(newItem.getCount() > count)
        {
          playerIU.addModifiedItem(newItem);
        }
        else
        {
View Full Code Here

    L2PetInstance pet = (L2PetInstance) activeChar.getPet();

    if(pet == null)
      return;

    L2ItemInstance item = pet.getInventory().getItemByObjectId(_objectId);

    if(item == null)
      return;

    if(item.isWear())
      return;

    int itemId = item.getItemId();

    if(activeChar.isAlikeDead() || pet.isDead())
    {
      SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED);
      sm.addItemName(item.getItemId());
      activeChar.sendPacket(sm);
      sm = null;
      return;
    }

    if(Config.DEBUG)
    {
      _log.finest(activeChar.getObjectId() + ": pet use item " + _objectId);
    }

    //check if the item matches the pet
    if(item.isEquipable())
    {
      if(L2PetDataTable.isWolf(pet.getNpcId()) && // wolf
      item.getItem().isForWolf())
      {
        useItem(pet, item, activeChar);
        return;
      }
      else if(L2PetDataTable.isHatchling(pet.getNpcId()) && // hatchlings
      item.getItem().isForHatchling())
      {
        useItem(pet, item, activeChar);
        return;
      }
      else if(L2PetDataTable.isStrider(pet.getNpcId()) && // striders
      item.getItem().isForStrider())
      {
        useItem(pet, item, activeChar);
        return;
      }
      else if(L2PetDataTable.isBaby(pet.getNpcId()) && // baby pets (buffalo, cougar, kookaboora)
      item.getItem().isForBabyPet())
      {
        useItem(pet, item, activeChar);
        return;
      }
      else
      {
        activeChar.sendPacket(new SystemMessage(SystemMessageId.ITEM_NOT_FOR_PETS));
        return;
      }
    }
    else if(L2PetDataTable.isPetFood(itemId))
    {
      if(L2PetDataTable.isWolf(pet.getNpcId()) && L2PetDataTable.isWolfFood(itemId))
      {
        feed(activeChar, pet, item);
        return;
      }

      if(L2PetDataTable.isSinEater(pet.getNpcId()) && L2PetDataTable.isSinEaterFood(itemId))
      {
        feed(activeChar, pet, item);
        return;
      }
      else if(L2PetDataTable.isHatchling(pet.getNpcId()) && L2PetDataTable.isHatchlingFood(itemId))
      {
        feed(activeChar, pet, item);
        return;
      }
      else if(L2PetDataTable.isStrider(pet.getNpcId()) && L2PetDataTable.isStriderFood(itemId))
      {
        feed(activeChar, pet, item);
        return;
      }
      else if(L2PetDataTable.isWyvern(pet.getNpcId()) && L2PetDataTable.isWyvernFood(itemId))
      {
        feed(activeChar, pet, item);
        return;
      }
      else if(L2PetDataTable.isBaby(pet.getNpcId()) && L2PetDataTable.isBabyFood(itemId))
      {
        feed(activeChar, pet, item);
      }
    }

    IItemHandler handler = ItemHandler.getInstance().getItemHandler(item.getItemId());

    if(handler != null)
    {
      useItem(pet, item, activeChar);
    }
View Full Code Here

      {
        CastleManager.getInstance().getCastleById(_manorId).updateSeed(seed.getId(), seed.getCanProduce(), CastleManorManager.PERIOD_CURRENT);
      }

      // Add item to Inventory and adjust update packet
      L2ItemInstance item = player.getInventory().addItem("Buy", seedId, count, player, target);

      if(item.getCount() > count)
      {
        playerIU.addModifiedItem(item);
      }
      else
      {
View Full Code Here

    {
      activeChar.sendMessage("You can't unequip a CTF flag.");
      return;
    }

    L2ItemInstance item = activeChar.getInventory().getPaperdollItemByL2ItemId(_slot);
    if(item != null && item.isWear())
      // Wear-items are not to be unequipped
      return;

    // Prevent of unequiping a cursed weapon
    if(_slot == L2Item.SLOT_LR_HAND && activeChar.isCursedWeaponEquiped())
      // Message ?
      return;

    // Prevent player from unequipping items in special conditions
    if(activeChar.isStunned() || activeChar.isConfused() || activeChar.isAway() || activeChar.isParalyzed() || activeChar.isSleeping() || activeChar.isAlikeDead())
    {
      activeChar.sendMessage("Your status does not allow you to do that.");
      return;
    }

    if(/*activeChar.isAttackingNow() || */activeChar.isCastingNow() || activeChar.isCastingPotionNow())
      return;

    if(activeChar.isMoving() && activeChar.isAttackingNow() && (_slot == L2Item.SLOT_LR_HAND || _slot == L2Item.SLOT_L_HAND || _slot == L2Item.SLOT_R_HAND))
    {
      L2Object target = activeChar.getTarget();
      activeChar.setTarget(null);
      activeChar.stopMove(null);
      activeChar.setTarget(target);
      activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK);
    }

    // Remove augmentation bonus
    if(item != null && item.isAugmented())
    {
      item.getAugmentation().removeBoni(activeChar);
    }

    L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInBodySlotAndRecord(_slot);

    // show the update in the inventory
View Full Code Here

    {
      activeChar.setActiveEnchantItem(null);
      return;
    }

    L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
    L2ItemInstance scroll = activeChar.getActiveEnchantItem();
    activeChar.setActiveEnchantItem(null);

    if(item == null || scroll == null)
    {
      activeChar.setActiveEnchantItem(null);
      return;
    }

    // can't enchant rods and shadow items
    if(item.getItem().getItemType() == L2WeaponType.ROD || item.isShadowItem())
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
      activeChar.setActiveEnchantItem(null);
      return;
    }

    if(!Config.ENCHANT_HERO_WEAPON && item.getItemId() >= 6611 && item.getItemId() <= 6621)
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
      activeChar.setActiveEnchantItem(null);
      return;
    }
   
    /*
    if(!FloodProtector.getInstance().tryPerformAction(activeChar.getObjectId(), FloodProtector.PROTECTED_ENCHANT))
    {
      activeChar.setActiveEnchantItem(null);
      activeChar.sendMessage("Enchant failed");
      return;
    }*/

    if(item.isWear())
    {
      activeChar.setActiveEnchantItem(null);
      Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " tried to enchant a weared Item", IllegalPlayerAction.PUNISH_KICK);
      return;
    }

    int itemType2 = item.getItem().getType2();
    boolean enchantItem = false;
    boolean blessedScroll = false;
    boolean crystalScroll = false;
    int crystalId = 0;

    /** pretty code ;D */
    switch(item.getItem().getCrystalType())
    {
      case L2Item.CRYSTAL_A:
        crystalId = 1461;
        switch(scroll.getItemId())
        {
          case 729:
          case 731:
          case 6569:
            if(itemType2 == L2Item.TYPE2_WEAPON)
            {
              enchantItem = true;
            }
            break;
          case 730:
          case 732:
          case 6570:
            if(itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)
            {
              enchantItem = true;
            }
            break;
        }
        break;
      case L2Item.CRYSTAL_B:
        crystalId = 1460;
        switch(scroll.getItemId())
        {
          case 947:
          case 949:
          case 6571:
            if(itemType2 == L2Item.TYPE2_WEAPON)
            {
              enchantItem = true;
            }
            break;
          case 948:
          case 950:
          case 6572:
            if(itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)
            {
              enchantItem = true;
            }
            break;
        }
        break;
      case L2Item.CRYSTAL_C:
        crystalId = 1459;
        switch(scroll.getItemId())
        {
          case 951:
          case 953:
          case 6573:
            if(itemType2 == L2Item.TYPE2_WEAPON)
            {
              enchantItem = true;
            }
            break;
          case 952:
          case 954:
          case 6574:
            if(itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)
            {
              enchantItem = true;
            }
            break;
        }
        break;
      case L2Item.CRYSTAL_D:
        crystalId = 1458;
        switch(scroll.getItemId())
        {
          case 955:
          case 957:
          case 6575:
            if(itemType2 == L2Item.TYPE2_WEAPON)
            {
              enchantItem = true;
            }
            break;
          case 956:
          case 958:
          case 6576:
            if(itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)
            {
              enchantItem = true;
            }
            break;
        }
        break;
      case L2Item.CRYSTAL_S:
        crystalId = 1462;
        switch(scroll.getItemId())
        {
          case 959:
          case 961:
          case 6577:
            if(itemType2 == L2Item.TYPE2_WEAPON)
            {
              enchantItem = true;
            }
            break;
          case 960:
          case 962:
          case 6578:
            if(itemType2 == L2Item.TYPE2_SHIELD_ARMOR || itemType2 == L2Item.TYPE2_ACCESSORY)
            {
              enchantItem = true;
            }
            break;
        }
        break;
    }

    if(!enchantItem)
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
      return;
    }
   
    // Get the scroll type - Yesod
    if(scroll.getItemId() >= 6569 && scroll.getItemId() <= 6578)
    {
      blessedScroll = true;
    }
    else
    {
      for(int crystalscroll : CRYSTAL_SCROLLS)
        if(scroll.getItemId() == crystalscroll)
        {
          crystalScroll = true;
          break;
        }
    }

    // SystemMessage sm = new SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED);
    // activeChar.sendPacket(sm);

    SystemMessage sm;

    int chance = 0;
    int maxEnchantLevel = 0;
    int minEnchantLevel = 0;

    if(item.getItem().getType2() == L2Item.TYPE2_WEAPON)
    {
      if(blessedScroll){
       
        for(int blessedweaponscroll : BLESSED_WEAPON_SCROLLS)
        {
          if(scroll.getItemId() == blessedweaponscroll)
          {
            if(item.getEnchantLevel() >= Config.BLESS_WEAPON_ENCHANT_LEVEL.size()) //the hash has size equals to
                                                 //max enchant, so if the actual
                                                 //enchant level is equal or more then max
                                                 //then the enchant rate is equal to last
                                                 //enchant rate
            {
              chance = Config.BLESS_WEAPON_ENCHANT_LEVEL.get(Config.BLESS_WEAPON_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.BLESS_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            maxEnchantLevel = Config.ENCHANT_WEAPON_MAX;
           
            break;
          }
        }
       
      }else if(crystalScroll){
       
        for(int crystalweaponscroll : CRYSTAL_WEAPON_SCROLLS)
        {
          if(scroll.getItemId() == crystalweaponscroll)
          {
            if(item.getEnchantLevel() >= Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.size())
            {
              chance = Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.get(Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            minEnchantLevel = Config.CRYSTAL_ENCHANT_MIN;
            maxEnchantLevel = Config.CRYSTAL_ENCHANT_MAX;
           
            break;
           
          }
        }
       
      }else{ //normal scrolls
       
        for(int normalweaponscroll : NORMAL_WEAPON_SCROLLS)
        {
          if(scroll.getItemId() == normalweaponscroll)
          {
            if(item.getEnchantLevel() >= Config.NORMAL_WEAPON_ENCHANT_LEVEL.size())
            {
              chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(Config.NORMAL_WEAPON_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            maxEnchantLevel = Config.ENCHANT_WEAPON_MAX;
           
            break;
          }
        }
       
      }
     
    }
    else if(item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
    {
      if(blessedScroll){
       
        for(int blessedarmorscroll : BLESSED_ARMOR_SCROLLS)
        {
          if(scroll.getItemId() == blessedarmorscroll)
          {
            if(item.getEnchantLevel() >= Config.BLESS_ARMOR_ENCHANT_LEVEL.size())
            {
              chance = Config.BLESS_ARMOR_ENCHANT_LEVEL.get(Config.BLESS_ARMOR_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.BLESS_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            maxEnchantLevel = Config.ENCHANT_ARMOR_MAX;
           
            break;
          }
        }
       
      }else if(crystalScroll){
       
        for(int crystalarmorscroll : CRYSTAL_ARMOR_SCROLLS)
        {
          if(scroll.getItemId() == crystalarmorscroll)
          {
            if(item.getEnchantLevel() >= Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.size())
            {
              chance = Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.get(Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            minEnchantLevel = Config.CRYSTAL_ENCHANT_MIN;
            maxEnchantLevel = Config.CRYSTAL_ENCHANT_MAX;
           
            break;
          }
        }
       
      }else{ //normal scrolls
       
        for(int normalarmorscroll : NORMAL_ARMOR_SCROLLS)
        {
          if(scroll.getItemId() == normalarmorscroll)
          {
            if(item.getEnchantLevel()  >= Config.NORMAL_ARMOR_ENCHANT_LEVEL.size())
            {
              chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(Config.NORMAL_ARMOR_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            maxEnchantLevel = Config.ENCHANT_ARMOR_MAX;
           
            break;
          }
        }
       
      }
     
    }
    else if(item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
    {
      if(blessedScroll){
       
        for(int blessedjewelscroll : BLESSED_ARMOR_SCROLLS)
        {
          if(scroll.getItemId() == blessedjewelscroll)
          {
            if(item.getEnchantLevel() >= Config.BLESS_JEWELRY_ENCHANT_LEVEL.size())
            {
              chance = Config.BLESS_JEWELRY_ENCHANT_LEVEL.get(Config.BLESS_JEWELRY_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.BLESS_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            maxEnchantLevel = Config.ENCHANT_JEWELRY_MAX;
           
            break;
          }
        }
       
      }else if(crystalScroll){
       
        for(int crystaljewelscroll : CRYSTAL_ARMOR_SCROLLS)
        {
          if(scroll.getItemId() == crystaljewelscroll)
          {
            if(item.getEnchantLevel() >= Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.size())
            {
              chance = Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.get(Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            minEnchantLevel = Config.CRYSTAL_ENCHANT_MIN;
            maxEnchantLevel = Config.CRYSTAL_ENCHANT_MAX;
           
            break;
          }
        }
       
      }else{
       
        for(int normaljewelscroll : NORMAL_ARMOR_SCROLLS)
        {
          if(scroll.getItemId() == normaljewelscroll)
          {
            if(item.getEnchantLevel() >= Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size())
            {
              chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size());
            }
            else
            {
              chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(item.getEnchantLevel() + 1);
            }
            maxEnchantLevel = Config.ENCHANT_JEWELRY_MAX;
           
            break;
          }
        }
       
      }
     
    }
   
    if((maxEnchantLevel != 0 && item.getEnchantLevel() >= maxEnchantLevel) || (item.getEnchantLevel()) < minEnchantLevel)
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
      return;
    }
   
    if (Config.SCROLL_STACKABLE) {
      scroll = activeChar.getInventory().destroyItem("Enchant", scroll.getObjectId(), 1, activeChar, item);
    }
    else {
      scroll = activeChar.getInventory().destroyItem("Enchant", scroll, activeChar, item);
    }
   
    if(scroll == null)
    {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
      Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " tried to enchant with a scroll he doesnt have", Config.DEFAULT_PUNISH);
      return;
    }

    if(item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX || item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR && item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX_FULL)
    {
      chance = 100;
    }

    int rndValue = Rnd.get(100);

    if(Config.ENABLE_DWARF_ENCHANT_BONUS && activeChar.getRace() == Race.dwarf)
      if(activeChar.getLevel() >= Config.DWARF_ENCHANT_MIN_LEVEL)
      {
        rndValue -= Config.DWARF_ENCHANT_BONUS;
      }

    Object aChance = item.fireEvent("calcEnchantChance", new Object[chance]);
    if(aChance != null)
    {
      chance = (Integer) aChance;
    }
    synchronized (item)
    {
      if(rndValue < chance)
      {
        if(item.getOwnerId() != activeChar.getObjectId())
        {
          activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
          return;
        }

        if(item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY && item.getLocation() != L2ItemInstance.ItemLocation.PAPERDOLL)
        {
          activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
          return;
        }

        if(item.getEnchantLevel() == 0)
        {
          sm = new SystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);
          sm.addItemName(item.getItemId());
          activeChar.sendPacket(sm);
        }
        else
        {
          sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);
          sm.addNumber(item.getEnchantLevel());
          sm.addItemName(item.getItemId());
          activeChar.sendPacket(sm);
        }

        item.setEnchantLevel(item.getEnchantLevel() + Config.CUSTOM_ENCHANT_VALUE);
        item.updateDatabase();
      }
      else
      {
        if(crystalScroll)
        {
          sm = SystemMessage.sendString("Failed in Crystal Enchant.");
          activeChar.sendPacket(sm);
        }
        else if(blessedScroll){
          sm = new SystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED);
          activeChar.sendPacket(sm);
        }else{
          if(item.getEnchantLevel() > 0)
          {
            sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_S2_EVAPORATED);
            sm.addNumber(item.getEnchantLevel());
            sm.addItemName(item.getItemId());
            activeChar.sendPacket(sm);
          }
          else
          {
            sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_EVAPORATED);
            sm.addItemName(item.getItemId());
            activeChar.sendPacket(sm);
          }
        }
       
        if(!blessedScroll && !crystalScroll)
        {
          if(item.getEnchantLevel() > 0)
          {
            sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
            sm.addNumber(item.getEnchantLevel());
            sm.addItemName(item.getItemId());
            activeChar.sendPacket(sm);
          }
          else
          {
            sm = new SystemMessage(SystemMessageId.S1_DISARMED);
            sm.addItemName(item.getItemId());
            activeChar.sendPacket(sm);
          }

          if(item.isEquipped())
          {
            if(item.isAugmented())
            {
              item.getAugmentation().removeBoni(activeChar);
            }

            L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot());

            InventoryUpdate iu = new InventoryUpdate();
            for(L2ItemInstance element : unequiped)
            {
              iu.addModifiedItem(element);
            }
            activeChar.sendPacket(iu);

            activeChar.broadcastUserInfo();
          }

          int count = item.getCrystalCount() - (item.getItem().getCrystalCount() + 1) / 2;
          if(count < 1)
          {
            count = 1;
          }
         
          if(item.fireEvent("enchantFail", new Object[]
          {}) != null)
            return;
          L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
          if(destroyItem == null)
            return;

          L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);

          sm = new SystemMessage(SystemMessageId.EARNED_S2_S1_S);
          sm.addItemName(crystals.getItemId());
          sm.addNumber(count);
          activeChar.sendPacket(sm);

          if(!Config.FORCE_INVENTORY_UPDATE)
          {
View Full Code Here

    {
      Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " Tried To Use Enchant Exploit And Got Banned!", IllegalPlayerAction.PUNISH_KICKBAN);
      return;
    }

    L2ItemInstance item = player.getInventory().getItemByObjectId(_objectId);

    if(item == null)
      return;
   
    if(item.isAugmented())
      return;

    if(!item.isDropable() || !item.isDestroyable() || !item.isTradeable())
    {
      sendPacket(new SystemMessage(SystemMessageId.ITEM_NOT_FOR_PETS));
      return;
    }
View Full Code Here

TOP

Related Classes of com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance

Copyright © 2018 www.massapicom. 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.