コード例 #1
0
    private static void HandleSelectGemUpgrade(GameSession session, PacketReader packet)
    {
        long equipUid = packet.ReadLong();
        byte slot     = packet.ReadByte();
        long itemUid  = packet.ReadLong();

        if (equipUid == 0) // this is a gemstone in the player's inventory
        {
            if (!session.Player.Inventory.Items.ContainsKey(itemUid))
            {
                session.Send(ItemSocketSystemPacket.Notice((int)ItemSocketSystemNotice.ItemIsNotInYourInventory));
                return;
            }

            session.Send(ItemSocketSystemPacket.SelectGemUpgrade(equipUid, slot, itemUid));
            return;
        }

        // select gem mounted on a equipment
        if (!session.Player.Inventory.Items.ContainsKey(equipUid))
        {
            session.Send(ItemSocketSystemPacket.Notice((int)ItemSocketSystemNotice.ItemIsNotInYourInventory));
            return;
        }

        Gemstone gemstone = session.Player.Inventory.Items[equipUid].Stats.GemSockets[slot].Gemstone;

        if (gemstone == null)
        {
            return;
        }

        session.Send(ItemSocketSystemPacket.SelectGemUpgrade(equipUid, slot, itemUid));
    }