void CObjectManager::CharacterMakePreviewCharSet(int aIndex) // OK
{
LPOBJ lpObj = &gObj[aIndex];
memset(lpObj->CharSet,0,sizeof(lpObj->CharSet));
//------ cosas de pet
memset(lpObj->PetCharSet, 0, sizeof(lpObj->PetCharSet));
//-------------------
lpObj->CharSet[0] = (lpObj->ChangeUp*16);
lpObj->CharSet[0] -= (lpObj->CharSet[0]/32);
lpObj->CharSet[0] += (lpObj->Class*32);
lpObj->CharSet[0] = gObjFixClassPacket(lpObj->DBClass);//Mc
lpObj->CharSet[0] |= CS_SET_CHANGEUP(lpObj->ChangeUp);//MC
if(lpObj->ActionNumber == ACTION_SIT1)
{
lpObj->CharSet[0] |= 2;
}
if(lpObj->ActionNumber == ACTION_POSE1)
{
lpObj->CharSet[0] |= 3;
}
WORD TempInventory[INVENTORY_WEAR_SIZE];
for(int n=0;n < INVENTORY_WEAR_SIZE;n++)
{
if(n == 0 || n == 1)
{
if(lpObj->Inventory[n].IsItem() == 0)
{
TempInventory[n] = 0xFFFF;
}
else
{
TempInventory[n] = lpObj->Inventory[n].m_Index;
}
}
else
{
if(lpObj->Inventory[n].IsItem() == 0)
{
TempInventory[n] = 0x1FF;
}
else
{
TempInventory[n] = lpObj->Inventory[n].m_Index%MAX_ITEM_TYPE;
}
}
}
lpObj->CharSet[1] = TempInventory[0]%256;
lpObj->CharSet[12] |= (TempInventory[0]/16) & 0xF0;
lpObj->CharSet[2] = TempInventory[1]%256;
lpObj->CharSet[13] |= (TempInventory[1]/16) & 0xF0;
lpObj->CharSet[3] |= (TempInventory[2] & 0x0F) << 4;
lpObj->CharSet[9] |= (TempInventory[2] & 0x10) << 3;
lpObj->CharSet[13] |= (TempInventory[2] & 0x1E0) >> 5;
lpObj->CharSet[3] |= (TempInventory[3] & 0x0F);
lpObj->CharSet[9] |= (TempInventory[3] & 0x10) << 2;
lpObj->CharSet[14] |= (TempInventory[3] & 0x1E0) >> 1;
lpObj->CharSet[4] |= (TempInventory[4] & 0x0F) << 4;
lpObj->CharSet[9] |= (TempInventory[4] & 0x10) << 1;
lpObj->CharSet[14] |= (TempInventory[4] & 0x1E0) >> 5;
lpObj->CharSet[4] |= (TempInventory[5] & 0x0F);
lpObj->CharSet[9] |= (TempInventory[5] & 0x10);
lpObj->CharSet[15] |= (TempInventory[5] & 0x1E0) >> 1;
lpObj->CharSet[5] |= (TempInventory[6] & 0x0F) << 4;
lpObj->CharSet[9] |= (TempInventory[6] & 0x10) >> 1;
lpObj->CharSet[15] |= (TempInventory[6] & 0x1E0) >> 5;
int level = 0;
BYTE table[7] = {1,0,6,5,4,3,2};
for(int n=0;n < 7;n++)
{
if(TempInventory[n] != 0x1FF && TempInventory[n] != 0xFFFF)
{
level |= ((lpObj->Inventory[n].m_Level-1)/2) << (n*3);
lpObj->CharSet[10] |= ((lpObj->Inventory[n].m_NewOption & 0x3F)?2:0) << table[n];
lpObj->CharSet[11] |= ((lpObj->Inventory[n].m_SetOption & 0x03)?2:0) << table[n];
}
}
this->CharacterCalcAttribute(aIndex);
if(lpObj->IsFullSetItem != 0)
{
lpObj->CharSet[11] |= 1;
}
lpObj->CharSet[6] = level >> 16;
lpObj->CharSet[7] = level >> 8;
lpObj->CharSet[8] = level;
#if(GAMESERVER_UPDATE>=601)
if(TempInventory[7] >= 0 && TempInventory[7] <= 2)
{
lpObj->CharSet[5] |= 4;
lpObj->CharSet[9] |= TempInventory[7]+1;
}
else if(TempInventory[7] >= 3 && TempInventory[7] <= 6)
{
lpObj->CharSet[5] |= 8;
lpObj->CharSet[9] |= TempInventory[7]-2;
}
else if(TempInventory[7] == 30)
{
lpObj->CharSet[5] |= 8;
lpObj->CharSet[9] |= 5;
}
else if(TempInventory[7] >= 36 && TempInventory[7] <= 40)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[9] |= TempInventory[7]-35;
}
else if(TempInventory[7] == 41)
{
lpObj->CharSet[5] |= 4;
lpObj->CharSet[9] |= 4;
}
else if(TempInventory[7] == 42)
{
lpObj->CharSet[5] |= 8;
lpObj->CharSet[9] |= 6;
}
else if(TempInventory[7] == 43)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[9] |= 6;
}
else if(TempInventory[7] == 49)
{
lpObj->CharSet[5] |= 8;
lpObj->CharSet[9] |= 7;
}
else if(TempInventory[7] == 50)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[9] |= 7;
}
else if(TempInventory[7] >= 130 && TempInventory[7] <= 135)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[17] |= (TempInventory[7]-129) << 5;
}
else if(TempInventory[7] >= 262 && TempInventory[7] <= 265)
{
lpObj->CharSet[5] |= 8;
lpObj->CharSet[16] |= (TempInventory[7]-261) << 2;
}
else if(TempInventory[7] == 266)
{
lpObj->CharSet[5] |= 4;
lpObj->CharSet[9] |= 5;
}
else if(TempInventory[7] == 267)
{
lpObj->CharSet[5] |= 4;
lpObj->CharSet[9] |= 6;
}
else if(gCustomWing.CheckCustomWingByItem(GET_ITEM(12,TempInventory[7])) != 0)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[17] |= (gCustomWing.GetCustomWingIndex(GET_ITEM(12,TempInventory[7]))+1) << 1;
}
#else
if(TempInventory[7] == 0x1FF)
{
lpObj->CharSet[5] |= 12;
}
else if(TempInventory[7] >= 0 && TempInventory[7] <= 2)
{
lpObj->CharSet[5] |= TempInventory[7] << 2;
}
else if(TempInventory[7] >= 3 && TempInventory[7] <= 6)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[9] |= TempInventory[7]-2;
}
else if(TempInventory[7] == 30)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[9] |= 5;
}
else if(TempInventory[7] >= 36 && TempInventory[7] <= 40)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[16] |= (TempInventory[7]-35) << 2;
}
else if(TempInventory[7] == 41)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[9] |= 6;
}
else if(TempInventory[7] == 42)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[16] |= 28;
}
else if(TempInventory[7] == 43)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[16] |= 24;
}
else if(TempInventory[7] >= 130 && TempInventory[7] <= 135)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[17] |= (TempInventory[7]-129) << 5;
}
else if(gCustomWing.CheckCustomWingByItem(GET_ITEM(12,TempInventory[7])) != 0)
{
lpObj->CharSet[5] |= 12;
lpObj->CharSet[17] |= (gCustomWing.GetCustomWingIndex(GET_ITEM(12,TempInventory[7]))+1) << 1;
}
#endif
if(TempInventory[8] == 0x1FF)
{
lpObj->CharSet[5] |= 3;
}
else if(TempInventory[8] >= 0 && TempInventory[8] <= 2)
{
lpObj->CharSet[5] |= TempInventory[8];
}
else if(TempInventory[8] == 3)
{
lpObj->CharSet[5] |= 3;
lpObj->CharSet[10] |= 1;
}
else if(TempInventory[8] == 4)
{
lpObj->CharSet[5] |= 3;
lpObj->CharSet[12] |= 1;
}
else if(TempInventory[8] == 37)
{
lpObj->CharSet[5] |= 3;
lpObj->CharSet[10] &= 0xFE;
lpObj->CharSet[12] &= 0xFE;
lpObj->CharSet[12] |= 4;
if((lpObj->Inventory[8].m_NewOption & 1) != 0)
{
lpObj->CharSet[16] |= 1;
}
else if((lpObj->Inventory[8].m_NewOption & 2) != 0)
{
lpObj->CharSet[16] |= 2;
}
else if((lpObj->Inventory[8].m_NewOption & 4) != 0)
{
lpObj->CharSet[17] |= 1;
}
//--- cosas de fenrrir
else if((lpObj->Inventory[8].m_NewOption & 8) != 0)
{
lpObj->CharSet[16] |= 250 << 1;
}
else if((lpObj->Inventory[8].m_NewOption & 16) != 0)
{
lpObj->CharSet[16] |= 251 << 1;
}
else if((lpObj->Inventory[8].m_NewOption & 32) != 0)
{
lpObj->CharSet[16] |= 252 << 1;
}
}
else if(TempInventory[8] == 64 || TempInventory[8] == 65 || TempInventory[8] == 67)
{
lpObj->CharSet[16] |= (TempInventory[8]-63) << 5;
}
else if(TempInventory[8] == 80)
{
lpObj->CharSet[16] |= 0xE0;
}
else if(TempInventory[8] == 106)
{
lpObj->CharSet[16] |= 0xA0;
}
else if(TempInventory[8] == 123)
{
lpObj->CharSet[16] |= 0x60;
}
//---------------------- cosas de pet
else if (TempInventory[8] >= 147 && TempInventory[8] <= 257)
{
lpObj->PetCharSet[0] |= (TempInventory[8] - 146) << 1;
}
else if (TempInventory[8] >= 258 && TempInventory[8] <= 350)
{
lpObj->PetCharSet[1] |= (TempInventory[8] - 257) << 1;
}
else if (TempInventory[8] >= 351 && TempInventory[8] <= 450)
{
lpObj->PetCharSet[2] |= (TempInventory[8] - 350) << 1;
}
else if (TempInventory[8] >= 451 && TempInventory[8] <= 511)
{
lpObj->PetCharSet[3] |= (TempInventory[8] - 450) << 1;
}
//-----------------------------------------
else if (TempInventory[8] >= 451 && TempInventory[8] <= 511) // xemu agregado
{
lpObj->PetCharSet[3] |= (TempInventory[8] - 450) << 1;
}
//-----------------------
}