int TMHuman::OnPacketSendItem(MSG_STANDARD* pStd)
{
    auto pSendItem = reinterpret_cast<MSG_SendItem*>(pStd);

    TMFieldScene* pFScene{};

    if (g_pCurrentScene->GetSceneType() == ESCENE_TYPE::ESCENE_FIELD)
        pFScene = static_cast<TMFieldScene*>(g_pCurrentScene);

    if (pFScene)
        pFScene->Bag_View();

    auto pMobData = &g_pObjectManager->m_stMobData;

    if (pFScene && g_pCurrentScene->m_pMyHuman == this)
    {
        if (pSendItem->DestType == 0)
        {
            if (pSendItem->DestPos == 6 && BASE_GetItemAbility(&g_pObjectManager->m_stMobData.Equip[6], EF_WTYPE) == 41)
            {
                m_stLookInfo.RightMesh = 0;
                m_stLookInfo.RightSkin = 0;
            }

            memcpy(&pMobData->Equip[pSendItem->DestPos], &pSendItem->Item, sizeof(STRUCT_ITEM));

            if (pSendItem->DestPos)
                memcpy(&g_pObjectManager->m_stSelCharData.Equip[g_pObjectManager->m_cCharacterSlot][pSendItem->DestPos], &pSendItem->Item, sizeof(STRUCT_ITEM));

            SGridControl* pGridEquip[MAX_EQUIPITEM]{};

            pGridEquip[1] = pFScene->m_pGridHelm;
            pGridEquip[2] = pFScene->m_pGridCoat;
            pGridEquip[3] = pFScene->m_pGridPants;
            pGridEquip[4] = pFScene->m_pGridGloves;
            pGridEquip[5] = pFScene->m_pGridBoots;
            pGridEquip[6] = pFScene->m_pGridLeft;
            pGridEquip[7] = pFScene->m_pGridRight;
            pGridEquip[8] = pFScene->m_pGridRing;
            pGridEquip[9] = pFScene->m_pGridNecklace;
            pGridEquip[10] = pFScene->m_pGridOrb;
            pGridEquip[11] = pFScene->m_pGridCabuncle;
            pGridEquip[12] = pFScene->m_pGridGuild;
            pGridEquip[13] = pFScene->m_pGridEvent;
            pGridEquip[14] = pFScene->m_pGridDRing;
            pGridEquip[15] = pFScene->m_pGridMantua;
            pGridEquip[16] = pFScene->m_pGridNewSlot1;
            pGridEquip[17] = pFScene->m_pGridNewSlot2;
            if (pSendItem->DestPos > 0 && pSendItem->DestPos < MAX_EQUIPITEM)
            {
                if (pGridEquip[pSendItem->DestPos] != nullptr)
                {
                    SGridControlItem* pItem = pGridEquip[pSendItem->DestPos]->PickupItem(0, 0);

                    if (g_pCursor->m_pAttachedItem && g_pCursor->m_pAttachedItem == pItem)
                        g_pCursor->m_pAttachedItem = nullptr;

                    delete pItem;
                }

                if (pSendItem->Item.sIndex > 0)
                {
                    auto pstItem = new STRUCT_ITEM();

                    if (pstItem)
                    {
                        memcpy(pstItem, &pMobData->Equip[pSendItem->DestPos], sizeof(STRUCT_ITEM));

                        auto pItem = new SGridControlItem(0, pstItem, 0.0f, 0.0f);

                        if (pItem)
                        {
                            if (pGridEquip[pSendItem->DestPos])
                            {
                                pGridEquip[pSendItem->DestPos]->Empty();
                                pGridEquip[pSendItem->DestPos]->AddItem(pItem, 0, 0);
                            }
                        }
                    }
                }
            }
        }
        else if (pSendItem->DestType == 1)
        {
            memcpy(&pMobData->Carry[pSendItem->DestPos], &pSendItem->Item, sizeof(STRUCT_ITEM));
            memcpy(g_pObjectManager->m_stMobData.Carry, pMobData->Carry, sizeof(g_pObjectManager->m_stMobData.Carry));
            if (pSendItem->DestPos == 63)
            {
                // Inv[63]: EF1/cEffect = Chaos Point (raw 1-150); EFV1/cValue = streak
                // Carry já foi memcpy'd acima — Menu C lê Carry[63] (não Name[12]/m_ucChaosLevel).
                // Ainda atualiza m_ucChaosLevel para nameplate; CreateMob com Guilty pode
                // zerar depois (visual PK) sem afetar o C. POINT do Menu C.
                unsigned char rawCp = pSendItem->Item.stEffect[0].cEffect;
                if (rawCp >= 1 && rawCp <= 150)
                    m_ucChaosLevel = rawCp;
                m_nCurrentKill = (unsigned char)pSendItem->Item.stEffect[0].cValue;
                m_nTotalKill = (unsigned short)((unsigned char)pSendItem->Item.stEffect[1].cValue
                    + (((unsigned char)pSendItem->Item.stEffect[2].cValue) << 8));
                if (pFScene && pFScene->m_pKillCounterText)
                {
                    char szKill[64]{};
                    sprintf(szKill, "%d/%d", (int)m_nCurrentKill, (int)m_nTotalKill);
                    pFScene->m_pKillCounterText->SetText(szKill, 0);
                }
                if (m_pKillLabel)
                {
                    char szKill[64]{};
                    sprintf(szKill, "%d/%d", (int)m_nCurrentKill, (int)m_nTotalKill);
                    m_pKillLabel->SetText(szKill, 0);
                }
                if (pFScene)
                    pFScene->UpdateScoreUI(0);
            }

            int Page = pSendItem->DestPos / 15;
            int CellIndexX = pSendItem->DestPos % 15 % 5;
            int CellIndexY = pSendItem->DestPos % 15 / 5;

            if (Page >= 0 && Page <= 3)
            {
                SGridControl* pGrid = pFScene->m_pGridInvList[Page];

                SGridControlItem* pOldGridItem = pGrid->PickupAtItem(CellIndexX, CellIndexY);

                if (g_pCursor->m_pAttachedItem && g_pCursor->m_pAttachedItem == pOldGridItem)
                    g_pCursor->m_pAttachedItem = nullptr;
