public static void SocketItem(EmbedSocket socket, Client.GameState client)
{
ConquerItem Item = null;
ConquerItem Gem = null;
if (client.Inventory.TryGetItem(socket.ItemUID, out Item) || client.Equipment.TryGetItem(socket.ItemUID) != null)
{
if (client.Equipment.TryGetItem(socket.ItemUID) != null)
Item = client.Equipment.TryGetItem(socket.ItemUID);
ushort sock = ItemPosition(Item.ID);
if (sock == 7 || sock == 9 || sock == 12 || sock == 15 || sock == 16 || sock == 17 || sock == 18 || sock > 19)
{
client.Send(new Message("Sorry can't make socket in this item !", System.Drawing.Color.Red, Message.Talk));
return;
}
if (client.Inventory.TryGetItem(socket.GemUID, out Gem) || socket.Mode == EmbedSocket.Remove)
{
switch (socket.Mode)
{
case EmbedSocket.Add:
{
byte gemBase = (byte)(Gem.ID % 1000);
if (Enum.IsDefined(typeof(Game.Enums.Gem), gemBase))
{
switch (socket.Slot)
{
case EmbedSocket.SlotOne:
{
if ((byte)Item.SocketOne == 255)
{
var gem = (Game.Enums.Gem)(Gem.ID % 1000);
if ((Item.ID >= 201003 && Item.ID <= 201009) && gem != Enums.Gem.NormalThunderGem && gem != Enums.Gem.RefinedThunderGem && gem != Enums.Gem.SuperThunderGem) return;
if ((Item.ID >= 202003 && Item.ID <= 202009) && gem != Enums.Gem.NormalGloryGem && gem != Enums.Gem.RefinedGloryGem && gem != Enums.Gem.SuperGloryGem) return;
if ((Item.ID >= 204003 && Item.ID <= 204009) && gem != Enums.Gem.NormalThunderGem && gem != Enums.Gem.RefinedThunderGem && gem != Enums.Gem.SuperThunderGem) return;
Item.SocketOne = gem;
Item.Mode = Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdateSockets(Item);
client.Inventory.Remove(Gem, Game.Enums.ItemUse.RemoveFromStack);
break;
}
break;
}
case EmbedSocket.SlotTwo:
{
var gem = (Game.Enums.Gem)(Gem.ID % 1000);
if ((Item.ID >= 201003 && Item.ID <= 201009) && gem != Enums.Gem.NormalThunderGem && gem != Enums.Gem.RefinedThunderGem && gem != Enums.Gem.SuperThunderGem) return;
if ((Item.ID >= 202003 && Item.ID <= 202009) && gem != Enums.Gem.NormalGloryGem && gem != Enums.Gem.RefinedGloryGem && gem != Enums.Gem.SuperGloryGem) return;
if ((Item.ID >= 204003 && Item.ID <= 204009) && gem != Enums.Gem.NormalGloryGem && gem != Enums.Gem.RefinedGloryGem && gem != Enums.Gem.SuperGloryGem) return;
Item.SocketTwo = gem;
Item.Mode = Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdateSockets(Item);
client.Inventory.Remove(Gem, Game.Enums.ItemUse.RemoveFromStack);
break;
}
}
}
break;
}
case EmbedSocket.Remove:
{
switch (socket.Slot)
{
case EmbedSocket.SlotOne:
{
if ((byte)Item.SocketOne != 0)
{
Item.SocketOne = Game.Enums.Gem.EmptySocket;
if ((byte)Item.SocketTwo != 0 && (byte)Item.SocketTwo != 255)
{
Item.SocketTwo = Item.SocketTwo;
Item.SocketOne = Game.Enums.Gem.EmptySocket;
}
Item.Mode = Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdateSockets(Item);
break;
}
break;
}
case EmbedSocket.SlotTwo:
{
if ((byte)Item.SocketTwo != 0 && (byte)Item.SocketTwo != 255)
{
Item.SocketOne = Game.Enums.Gem.EmptySocket;
Item.SocketTwo = Item.SocketTwo;
Item.SocketTwo = Game.Enums.Gem.EmptySocket;
Item.Mode = Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdateSockets(Item);
}
else
{
if ((byte)Item.SocketOne != 0)
{
Item.SocketOne = Game.Enums.Gem.EmptySocket;
Item.Mode = Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdateSockets(Item);
}
}
break;
}
}
break;
}
}
}
client.Send(socket);
System.Threading.Thread.Sleep(500);
}
}