char __cdecl pc_SetItemCheckRequest(CPlayer *_this, unsigned int dwSetItem, char bySetItemNum, char bySetEffectNum, bool bSet)
{
char pl_ResetEffectNum;
char pl_ResetItemNum;
unsigned int pl_ResetIdx;
char result;
char SetEffectNum = bySetEffectNum;
char SetItemNum = bySetItemNum;
int set_pos = dwSetItem;
int check_effect_state;
CSUItemSystem * SUItemSystem = SUItemSyste__Instance();
CSetItemType * ItemType = SUItemSyste__GetCSetItemType(SUItemSystem);
if (ItemType)
{
si_interpret * pSI = SetItemType__Getsi_interpret(ItemType, set_pos);
if (pSI)
{
char check_effect_state;
if (bSet)
{
char IsEquipAble = 0;
char pStrCode = 0;
CSUItemSystem * SUItemSystem2 = SUItemSyste__Instance();
int nTableCode = SUItemSystem__GetSetItemTableInfo(SUItemSystem2, set_pos, &pStrCode, 64);
if (nTableCode > -1)
{
char EquipGrade = pl__GetItemEquipGrade(nTableCode, &pStrCode);
if (IsEquipAbleGrade(_this, EquipGrade))
IsEquipAble = 1;
}
if (IsEquipAble)
{
check_effect_state = SetOnEffect(&_this->m_clsSetItem, &_this->m_pUserDB->m_AvatorData, set_pos, SetItemNum, SetEffectNum);
switch (check_effect_state)
{
case 0:
ApplySetItemEffect(_this, pSI, set_pos, SetItemNum, SetEffectNum, 1);
break;
case 8:
pl_ResetEffectNum = GetResetEffectNum(&_this->m_clsSetItem);
pl_ResetItemNum = GetResetItemNum(&_this->m_clsSetItem);
pl_ResetIdx = GetResetIdx(&_this->m_clsSetItem);
ApplySetItemEffect(_this, pSI, pl_ResetIdx, pl_ResetItemNum, pl_ResetEffectNum, 0);
ApplySetItemEffect(_this, pSI, set_pos, SetItemNum, SetEffectNum, 1);
break;
case 4:
case 3:
case 2:
case 7:
break;
default:
check_effect_state = 9;
break;
}
}
}
else
{
check_effect_state = SetOffEffect(&_this->m_clsSetItem, set_pos, SetItemNum, SetEffectNum);
if (check_effect_state == 1)
ApplySetItemEffect(_this, pSI, set_pos, SetItemNum, SetEffectNum, 0);
}
SetItemCheckResult(_this, check_effect_state, set_pos, SetEffectNum);
result = 1;
}
else
{
SetItemCheckResult(_this, 2, 0, 0);
result = 0;
}
}
else
{
SetItemCheckResult(_this, 7, 0, 0);
result = 0;
}
return result;
}