All pastes #45488 Raw Edit

Blessed Enchant Fix

public text v1 · immutable
#45488 ·published 2006-03-13 20:10 UTC
rendered paste body
Index: /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java
===================================================================
--- /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (revisione 1599)
+++ /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java (copia locale)
@@ -120,7 +120,7 @@
  return;
  }
  
- int chance = blessedScroll ? 75 : Config.ENCHANT_CHANCE;;
+ int chance = Config.ENCHANT_CHANCE;;
  if (item.getEnchantLevel() < 3 || (item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR && item.getEnchantLevel() < 4))
  chance = 100;
  
@@ -168,53 +168,61 @@
  sm.addItemName(item.getItemId());
  activeChar.sendPacket(sm);
  
- L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot());
- if (item.isEquipped())
- {
+ if (!blessedScroll){
+ L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot());
+ if (item.isEquipped())
+ {
+ InventoryUpdate iu = new InventoryUpdate();
+   for (int i = 0; i < unequiped.length; i++)
+   {
+   iu.addModifiedItem(unequiped[i]);
+   }
+   activeChar.sendPacket(iu);
+ 
+   activeChar.broadcastUserInfo();
+ }
+ 
+ L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
+ 
  InventoryUpdate iu = new InventoryUpdate();
-   for (int i = 0; i < unequiped.length; i++)
-   {
-   iu.addModifiedItem(unequiped[i]);
-   }
-   activeChar.sendPacket(iu);
+ if (destroyItem.getCount() == 0)
+ {
+ iu.addRemovedItem(destroyItem);
+ }
+ else
+ {
+ iu.addModifiedItem(destroyItem);
+ }
+ activeChar.sendPacket(iu);
+ 
+ // Add 10% to crystal count for each enchant level (starting at 67% for enchant lvl 3)
+ int count = item.getItem().getCrystalCount() * (37 + 10*item.getEnchantLevel()) / 100;
+ if (count < 1) count = 1;
+ 
+ L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);
+             SystemMessage sm2 = new SystemMessage(SystemMessage.EARNED_S2_S1_s);
+             sm2.addItemName(crystals.getItemId());
+             sm2.addNumber(count);
+             activeChar.sendPacket(sm2);
  
-   activeChar.broadcastUserInfo();
- }
+             ItemList il = new ItemList(activeChar, true);
+             sendPacket(il);
  
- L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
+             StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
+             su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
+             activeChar.sendPacket(su);
  
- InventoryUpdate iu = new InventoryUpdate();
- if (destroyItem.getCount() == 0)
- {
- iu.addRemovedItem(destroyItem);
+             activeChar.broadcastUserInfo();
+ 
+             L2World world = L2World.getInstance();
+             world.removeObject(destroyItem);
  }
  else
  {
- iu.addModifiedItem(destroyItem);
+                activeChar.sendMessage("Enchant failed. Enchant level resetted to 0.");
+ item.setEnchantLevel(0);
+             item.updateDatabase();
  }
- activeChar.sendPacket(iu);
- 
- // Add 10% to crystal count for each enchant level (starting at 67% for enchant lvl 3)
- int count = item.getItem().getCrystalCount() * (37 + 10*item.getEnchantLevel()) / 100;
- if (count < 1) count = 1;
-
- L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);
-            SystemMessage sm2 = new SystemMessage(SystemMessage.EARNED_S2_S1_s);
-            sm2.addItemName(crystals.getItemId());
-            sm2.addNumber(count);
-            activeChar.sendPacket(sm2);
- 
-            ItemList il = new ItemList(activeChar, true);
-            sendPacket(il);
- 
-            StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
-            su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
-            activeChar.sendPacket(su);
- 
-            activeChar.broadcastUserInfo();
- 
-            L2World world = L2World.getInstance();
-            world.removeObject(destroyItem);
  }
  StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
  su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());