Долго искал но не могу найти где хранится список металлов, дерева для крафта вещей.
Например у нас нельзя сделать WoodenShield из дерева выше 100.
Мечи делаются из только из 4 видов метала.
Хочется добавить, но не могу найти где список.
тут
AddCraft( typeof( ShepherdsCrook ), 1044295, 1023713, 78.9, 103.9, typeof( Log ), 1044041, 7, 1044351 );
AddCraft( typeof( QuarterStaff ), 1044295, 1023721, 73.6, 98.6, typeof( Log ), 1044041, 6, 1044351 );
AddCraft( typeof( GnarledStaff ), 1044295, 1025112, 78.9, 103.9, typeof( Log ), 1044041, 7, 1044351 );
AddCraft( typeof( WoodenShield ), 1044295, 1027034, 52.6, 77.6, typeof( Log ), 1044041, 9, 1044351 );
Список ресурсов в: Scripts\Misc\ResourceInfo.cs
Ресурсы должны по умолчанию браться из списка, но в твоём случае с Nova - много костылей раскиданных по разным частям сборки. Попробуй посмотреть CraftItem, там много проверок по крафту вставлено.
Если пользуешься студией, то делай CTRL+SHIFT+F поиск по сборке, ища по ключевым словам совпадения, так выйдешь на место, где это может быть прописано.
ResourceInfo.cs у меня совсем нет, есть oreinfo, ясно дело все это прошерстил не один раз,но нет нигде привязки к именно этому типу щитов или посохов. Думал вначале группа влияет, но нет, в одной и той же группе одному типу предметов дает сделать из этого дерева, а другому нет. Проверил построчно все связанные разделы крафта и ресурсов нет нигде. Добавил Club ему так же как посохам дает сделать только из части дерева.
Условия то я нашел в CraftItem, но не понял как оно выполняется
else if (item is BaseShield)
{
if (craftSystem is DefCarpentry)
message = "You could not make the shields from this type of wood";
else
message = "You could not make the shields from this type of metal.";
Type resourceType = typeRes;
if (resourceType == null)
resourceType = Ressources.GetAt(0).ItemType;
CraftResource thisResource = CraftResources.GetFromType(resourceType);
if ((int)thisResource > 11 && (int)thisResource != 301)
{
from.EndAction(typeof(CraftSystem));
from.SendGump(new CraftGump(from, craftSystem, tool, message));
}
else
new InternalTimer(from, craftSystem, this, typeRes, tool, iRandom).Start();
Поскольку работает не по стандарту, значит где-то таки изменено. Найти можно либо посредством отладки, либо стак трейс вызвать на крафте и найти все ветки вызываемые. Либо перебором, типа BaseStaff, Bashing, тип предмета и т.д., вариаций может быть много, никто не знает по какому признаку определяют эти вещи в проверках.
Посмотрел скрипт CraftItem.cs, там таки проверок много:
Метод: CraftItem
для оружия:
if (!(thisResource == CraftResource.Bronze) && !(thisResource == CraftResource.Copper) && !(thisResource == CraftResource.Shining) &&
!(thisResource == CraftResource.Spectral) && !(thisResource == CraftResource.Star) && !(thisResource == CraftResource.Ablaze) &&
!(thisResource == CraftResource.Azure) && !(thisResource == CraftResource.Divine) && !(thisResource == CraftResource.OakLog) &&
!(thisResource == CraftResource.SandLog) && (!(thisResource == CraftResource.DarkLog) || item is BaseRanged) && (!(thisResource == CraftResource.CrystalLog) || item is BaseRanged))
if (!(thisResource == CraftResource.Bronze) && !(thisResource == CraftResource.Copper) && !(thisResource == CraftResource.Shining) &&
!(thisResource == CraftResource.Spectral) && !(thisResource == CraftResource.Star) && !(thisResource == CraftResource.Ablaze) &&
!(thisResource == CraftResource.Azure) && !(thisResource == CraftResource.Divine) && !(thisResource == CraftResource.OakLog) &&
!(thisResource == CraftResource.SandLog) && (!(thisResource == CraftResource.DarkLog) || item is BaseRanged) && (!(thisResource == CraftResource.CrystalLog) || item is BaseRanged))
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)