Code:
class Enchanting
{
public static void Process(GameClient Client, ItemUsagePacket ItemUse)
{
uint ItemUID = ItemUse.UID,
GemUID = ItemUse.dwParam;
IConquerItem Item = Client.GetInventoryItem(ItemUID),
Gem = Client.GetInventoryItem(GemUID);
if (Item == null || Gem == null)
return;
uint ItemID = Item.ID;
if (Gem.ID <= 700073 && Gem.ID >= 700001)
{
byte _GemID = Convert.ToByte(Gem.ID % 10);
byte Enchant = 0;
Random Rnd = new Random();
switch (_GemID)
{
#region NormalGems
case 1:
Enchant = (byte)Rnd.Next(1, 59);
break;
#endregion
#region RefinedGems
case 2:
{
switch ((Gem.ID % 100) / 10)
{
case 0:
Enchant = (byte)Rnd.Next(59, 109);
break;
case 1:
Enchant = (byte)Rnd.Next(99, 159);
break;
case 3:
Enchant = (byte)Rnd.Next(79, 129);
break;
default:
Enchant = (byte)Rnd.Next(39, 89);
break;
}
}
break;
#endregion
#region SuperGems
case 3:
{
switch ((Gem.ID % 100) / 10)
{
case 1:
Enchant = (byte)Rnd.Next(199, 255);
break;
case 2:
Enchant = (byte)Rnd.Next(89, 149);
break;
case 0:
case 3:
case 7:
Enchant = (byte)Rnd.Next(169, 229);
break;
case 5:
case 6:
Enchant = (byte)Rnd.Next(139, 199);
break;
default:
Enchant = (byte)Rnd.Next(69, 119);
break;
}
}
break;
#endregion
}
Client.RemoveInventory(GemUID);
if (Enchant > Item.Enchant)
{
ItemUsagePacket iUse = new ItemUsagePacket(true);
iUse.UID = Item.UID;
iUse.dwParam = Enchant;
iUse.ID = ItemUsagePacket.Enchant;
Client.Send(iUse);
Client.RemoveInventory(ItemUID);
Item.Enchant = Enchant;
Client.AddInventory(Item);
}
else
{
ItemUsagePacket iUse = new ItemUsagePacket(true);
iUse.UID = Item.UID;
iUse.dwParam = Enchant;
iUse.ID = ItemUsagePacket.Enchant;
Client.Send(iUse);
}
}
}
}
Thanks to Hybrid for EffectSend.






