Set Item FIX
Thanks to @zipper20032 For Helping on that!
Code:
void CSItemOption::CheckItemSetOptions()
{
BYTE byOptionList[30] = { 0, };
ITEM* itemTmp = NULL;
ZeroMemory(m_bySetOptionList, sizeof(BYTE) * 16);
for (int i = 0; i < MAX_EQUIPMENT_INDEX; ++i)
{
if (i == EQUIPMENT_WING || i == EQUIPMENT_HELPER)
{
continue;
}
ITEM* ip = &CharacterMachine->Equipment[i];
if (ip->Durability <= 0)
{
continue;
}
if ((i == EQUIPMENT_WEAPON_LEFT || i == EQUIPMENT_RING_LEFT) && itemTmp->Type == ip->Type && temTmp >ExtOption == (ip->ExtOption % 0x04))
{
continue;
}
if (ip->Type > -1)
{
checkItemType(byOptionList, ip->Type, ip->ExtOption);
}
if (i == EQUIPMENT_WEAPON_RIGHT || i == EQUIPMENT_RING_RIGHT)
{
itemTmp = ip;
itemTmp->Type = ip->Type;
itemTmp->ExtOption = (ip->ExtOption % 0x04);
}
}
calcSetOptionList(byOptionList);
getAllAddStateOnlyAddValue(&CharacterAttribute->AddStrength, &CharacterAttribute->AddDexterity, &CharacterAttribute- >AddEnergy, &CharacterAttribute->AddVitality, &CharacterAttribute->AddCharisma);
WORD AllStrength = CharacterAttribute->Strength + CharacterAttribute->AddStrength;
WORD AllDexterity = CharacterAttribute->Dexterity + CharacterAttribute->AddDexterity;
WORD AllEnergy = CharacterAttribute->Energy + CharacterAttribute->AddEnergy;
WORD AllVitality = CharacterAttribute->Vitality + CharacterAttribute->AddVitality;
WORD AllCharisma = CharacterAttribute->Charisma + CharacterAttribute->AddCharisma;
WORD AllLevel = CharacterAttribute->Level; ZeroMemory(byOptionList, sizeof(BYTE) * 30);
memset(m_bySetOptionList, 255, sizeof(BYTE) * 16);
for (int i = 0; i < MAX_EQUIPMENT_INDEX; ++i)
{
if (i == EQUIPMENT_WING || i == EQUIPMENT_HELPER)
{
continue;
}
ITEM* ip = &CharacterMachine->Equipment[i];
if (ip->RequireDexterity > AllDexterity || ip->RequireEnergy > AllEnergy || ip->RequireStrength > AllStrength || ip->RequireLevel > AllLevel || ip->RequireCharisma > AllCharisma || ip->Durability <= 0 || (IsRequireEquipItem(ip) == false)) {
continue;
}
if (((i == EQUIPMENT_WEAPON_LEFT || i == EQUIPMENT_RING_LEFT) && itemTmp->Type == ip->Type && itemTmp->ExtOption == (ip->ExtOption % 0x04)))
{
continue;
}
if (ip->Type > -1)
{
checkItemType(byOptionList, ip->Type, ip->ExtOption);
}
if (i == EQUIPMENT_WEAPON_RIGHT || i == EQUIPMENT_RING_RIGHT)
{
itemTmp = ip;
itemTmp->Type = ip->Type;
itemTmp->ExtOption = (ip->ExtOption % 0x04);
}
}
UpdateCount_SetOptionPerEquippedSetItem(byOptionList, m_arLimitSetItemOptionCount, CharacterMachine->Equipment); calcSetOptionList( byOptionList );
}