static void SocketItem(ItemUsage usage, Client.GameState client)
static void SocketItem(ItemUsage usage, Client.GameState client) { ConquerItem item = null; ConquerItem[] Minors = null; if (client.Inventory.TryGetItem(usage.UID, out item)) { ushort pos = ItemPosition(item.ID); if (pos == ConquerItem.Bottle || pos == ConquerItem.Fan || pos == ConquerItem.Garment || pos == ConquerItem.LeftWeaponAccessory || pos == ConquerItem.RightWeaponAccessory || pos == ConquerItem.Steed || pos == ConquerItem.SteedArmor || pos == ConquerItem.SteedCrop || pos == ConquerItem.Tower) { client.Send(new Message("Sorry can't make socket in this item !", System.Drawing.Color.Red, Message.Talk)); return; } Minors = new ConquerItem[usage.Batch.Length]; for (int i = 0; i < usage.Batch.Length; i++) { if (!client.Inventory.TryGetItem(usage.Batch[i], out Minors[i])) return; else if (Minors[i].UID == item.UID) return; } if (Minors.Length == 0) return; if (item.SocketOne == MrHassan.Game.Enums.Gem.NoSocket) { ushort cost = 1; if (pos != ConquerItem.RightWeapon && pos != ConquerItem.LeftWeapon) cost = 12; if (client.Inventory.Contains(1088000, cost)) { item.SocketOne = MrHassan.Game.Enums.Gem.EmptySocket; item.Mode = MrHassan.Game.Enums.ItemMode.Update; item.Send(client); usage.dwParam = 1; client.LoadItemStats(); Database.ConquerItemTable.UpdateSockets(item); foreach (var xitem in Minors) { client.Inventory.Remove(xitem.UID, MrHassan.Game.Enums.ItemUse.Remove, true); } } } else if (item.SocketTwo == MrHassan.Game.Enums.Gem.NoSocket) { ushort cost = 5; if (pos != ConquerItem.RightWeapon && pos != ConquerItem.LeftWeapon) { cost = 1; var minor = Minors.FirstOrDefault(); if (minor.ID == 1200005) { if (client.Inventory.Contains(1200005, cost)) { if (Kernel.Rate((double)30)) { item.SocketTwo = MrHassan.Game.Enums.Gem.EmptySocket; item.Mode = MrHassan.Game.Enums.ItemMode.Update; item.Send(client); usage.dwParam = 1; client.LoadItemStats(); Database.ConquerItemTable.UpdateSockets(item); } else { usage.dwParam = 0; client.Inventory.Add(1200006, 0, 1); } foreach (var xitem in Minors) { client.Inventory.Remove(xitem.UID, MrHassan.Game.Enums.ItemUse.Remove, true); } } } else if (minor.ID == 1200006) { cost = 7; if (client.Inventory.Contains(1200006, cost)) { item.SocketTwo = MrHassan.Game.Enums.Gem.EmptySocket; item.Mode = MrHassan.Game.Enums.ItemMode.Update; item.Send(client); usage.dwParam = 1; client.LoadItemStats(); Database.ConquerItemTable.UpdateSockets(item); foreach (var xitem in Minors) { client.Inventory.Remove(xitem.UID, MrHassan.Game.Enums.ItemUse.Remove, true); } } } } else { if (client.Inventory.Contains(1088000, cost)) { item.SocketTwo = MrHassan.Game.Enums.Gem.EmptySocket; item.Mode = MrHassan.Game.Enums.ItemMode.Update; item.Send(client); usage.dwParam = 1; client.LoadItemStats(); Database.ConquerItemTable.UpdateSockets(item); foreach (var xitem in Minors) { client.Inventory.Remove(xitem.UID, MrHassan.Game.Enums.ItemUse.Remove, true); } } } } } }
private static void SocketItem(EmbedScoket socket, Client.GameState client)
private static void SocketItem(EmbedScoket 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); else if (!client.Inventory.TryGetItem(socket.ItemUID, out Item)) return; ushort sock = ItemPosition(Item.ID); if (sock == 7 || sock == 9 || sock > 11 && 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 == EmbedScoket.Remove) { switch (socket.Mode) { case EmbedScoket.Add: { byte gemBase = (byte)(Gem.ID % 1000); if (Enum.IsDefined(typeof(Game.Enums.Gem), gemBase)) { switch (socket.Slot) { case EmbedScoket.SlotOne: { if ((byte)Item.SocketOne == 255) { var gem = (MrHassan.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 = MrHassan.Game.Enums.ItemMode.Update; Item.Send(client); Database.ConquerItemTable.UpdateSockets(Item); client.Inventory.Remove(Gem, MrHassan.Game.Enums.ItemUse.Remove); break; } break; } case EmbedScoket.SlotTwo: { var gem = (MrHassan.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; if ((byte)Item.SocketOne > 0 && (byte)Item.SocketOne < 255) { if ((byte)Item.SocketTwo == 255) { Item.SocketTwo = gem; Item.Mode = MrHassan.Game.Enums.ItemMode.Update; Item.Send(client); Database.ConquerItemTable.UpdateSockets(Item); client.Inventory.Remove(Gem, Game.Enums.ItemUse.Remove); } } else if ((byte)Item.SocketOne == 255) { Item.SocketOne = gem; Item.Mode = Game.Enums.ItemMode.Update; Item.Send(client); Database.ConquerItemTable.UpdateSockets(Item); client.Inventory.Remove(Gem, Game.Enums.ItemUse.Remove); } break; } } } break; } case EmbedScoket.Remove: { switch (socket.Slot) { case EmbedScoket.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 EmbedScoket.SlotTwo: { if ((byte)Item.SocketTwo != 0 && (byte)Item.SocketTwo != 255) { Item.SocketTwo = Game.Enums.Gem.EmptySocket; Item.Mode = MrHassan.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); client.LoadItemStats(); } }