Вот что вы гадаете? Берете gear_containers.pbo, извлекаете config.bin, разбинариваете его, открываете, находите описание класса Barrel_ColorBase и видите строку randomQuantity=2;
Т.е. так и должно быть, что наполненность бочки при появлении определяется случайным образом.
Продолжаем про часть «нельзя крафтить».
Идете в директорию dta, распаковываете scripts.pbo, идете в директорию scripts\4_World\Classes\UserActionsComponent\Actions\Interact, открываете ActionCloseBarrel.c, в методе OnExecuteServer() видим вызов метода DetermineAction() для объекта класса Barrel_ColorBase. Идете в директорию scripts\4_World\Entities\ItemBase, открываете файл Barrel_ColorBase.c, находите метод DetermineAction() и читаете код.
slot_id = InventorySlots.GetSlotIdFromString("Lime"); // найти у бочки слот "Lime"
ingredient = ItemBase.Cast( GetInventory().FindAttachment(slot_id) ); // получаем предмет, находящийся в слоту "Lime"
if ( ingredient && GetQuantity() > 10000 ) // если в слоту "Lime" что-то лежит и наполненность бочки жидкость больше 10000...
{
TanPelts(ingredient, player); // вызываем метод "задубить шкуру"
}
Возвращаемся в описание класса Barrel_ColorBase в разбинаренном config.bin и видим, что у класса нет attachments[], т.ч. сейчас чисто физически нельзя поместить в слот бочки "Lime" известь, потому что слот этот не прописан! Вот поэтому и не работает крафт!
Хотите включить крафт? Перепишите метод DetermineAction(), чтоб известь искалась не в слоте "Lime", а в Cargo бочки.