Fix allow you to use vnum4 in refine_proto
Explanation:
By default refine materials are beign loaded until vnumx == 0, but if you assign item to the last socket, material_count will never be assigned. As a result material_count will remain 0, despite 5 material items being set.
Adding simple additional check solves this problem
Open db/ClientManagerBoot.cpp
replace
for (int i = 0; i < REFINE_MATERIAL_MAX_NUM; i++)
{
str_to_number(prt->materials[i].vnum, data[col++]);
str_to_number(prt->materials[i].count, data[col++]);
if (prt->materials[i].vnum == 0)
{
prt->material_count = i;
break;
}
}
with
for (int i = 0; i < REFINE_MATERIAL_MAX_NUM; i++)
{
str_to_number(prt->materials[i].vnum, data[col++]);
str_to_number(prt->materials[i].count, data[col++]);
if (prt->materials[i].vnum == 0)
{
prt->material_count = i;
break;
}
else if (i+1 == REFINE_MATERIAL_MAX_NUM)
{
prt->material_count = REFINE_MATERIAL_MAX_NUM;
break;
}
}
final result