static ItemObject PerformBuildItem(LivingObject builder, BuildableItem buildableItem, IEnumerable<ObjectID> sourceObjects)
{
if (!VerifyBuildItem(builder, buildableItem, sourceObjects))
return null;
var obs = sourceObjects.Select(oid => builder.World.FindObject<ItemObject>(oid));
MaterialID materialID;
if (buildableItem.MaterialID.HasValue)
materialID = buildableItem.MaterialID.Value;
else
materialID = obs.First().MaterialID;
var skillLevel = builder.GetSkillLevel(buildableItem.SkillID);
var itemBuilder = new ItemObjectBuilder(buildableItem.ItemID, materialID)
{
Quality = skillLevel,
};
var item = itemBuilder.Create(builder.World);
foreach (var ob in obs)
ob.Destruct();
if (item.MoveTo(builder.Environment, builder.Location) == false)
throw new Exception();
return item;
}