Cripplez's post in Refine item with switch was marked as the answer
Solved doing this instead:
case USE_TUNING:
case USE_DETACHMENT:
{
LPITEM item2;
if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
return false;
if (item2->IsExchanging() || item2->IsEquipped()) // @fixme114
return false;
switch (item->GetVnum())
{
case 71032:
if (item2->GetType() != ITEM_WEAPON)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("error_refine_only_weapon"));
return false;
}
break;
case 39022:
if (item2->GetSubType() == ARMOR_BODY)
{
}
else
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("error_refine_only_armor"));
return false;
}
break;
}
#ifdef ENABLE_ACCE_SYSTEM
if (item->GetValue(0) == ACCE_CLEAN_ATTR_VALUE0)
{
if (!CleanAcceAttr(item, item2))
return false;
return true;
}
#endif