//########################################## // Item gender change //########################################## public void HandleItemChange(int itemid, byte slot, byte target_slot) { try { //Get information for the current item Global.slotItem iteminfo = GetItem((uint)Character.Information.CharacterID, target_slot, 0); Global.slotItem toolinfo = GetItem((uint)Character.Information.CharacterID, slot, 0); //Get item name string itemname = Data.ItemBase[iteminfo.ID].Name; //Checks before continuing (degree item). if (Data.ItemBase[toolinfo.ID].Name.Contains("_01")) { if (Data.ItemBase[iteminfo.ID].Degree > 3) { return; } } else if (Data.ItemBase[toolinfo.ID].Name.Contains("_02")) { if (Data.ItemBase[iteminfo.ID].Degree > 6 && Data.ItemBase[iteminfo.ID].Degree < 8) { return; } } else if (Data.ItemBase[toolinfo.ID].Name.Contains("_03")) { if (Data.ItemBase[iteminfo.ID].Degree > 9 && Data.ItemBase[iteminfo.ID].Degree < 6) { return; } } else if (Data.ItemBase[toolinfo.ID].Name.Contains("_04")) { if (Data.ItemBase[iteminfo.ID].Degree > 12 && Data.ItemBase[iteminfo.ID].Degree < 10) { return; } } //Rename the item to the opposite gender for getting the new id if (itemname.Contains("_M_")) { itemname = itemname.Replace("_M_", "_W_"); } else if (itemname.Contains("_W_")) { itemname = itemname.Replace("_W_", "_M_"); } //Return the new itemid value iteminfo.ID = GetGenderItem(itemname); //Send 1st packet client.Send(Packet.ChangeItemQ(target_slot, iteminfo.ID)); //Remove the gender change item visually (amount). HandleUpdateSlotChange(target_slot, iteminfo, iteminfo.ID); //Need to refactor the packets for item move will do that later client.Send(Packet.MoveItem(target_slot, slot, 0, 0, 0, "MOVE_GENDER_CHANGE")); //Need to check refresh info for the item. (Rest works). } catch (Exception ex) { Console.WriteLine("Item gender change error {0}", ex); Systems.Debugger.Write(ex); } }