internal static bool RetrieveResource(this Building buildingType, NPCManager manager, double takeAmount, ResourceType resourceType) { if (buildingType.HasResource(takeAmount, resourceType) && manager.CanCarry(takeAmount)) { try { manager.Character.ResourceInventory[resourceType].Amount += (buildingType.StoredResources[resourceType].Amount - takeAmount < 0 ? buildingType.StoredResources[resourceType].Amount : takeAmount); buildingType.StoredResources[resourceType].Amount -= (buildingType.StoredResources[resourceType].Amount - takeAmount < 0 ? buildingType.StoredResources[resourceType].Amount : takeAmount); buildingType.InventorySpaceUsed -= (buildingType.InventorySpaceUsed - takeAmount < 0 ? buildingType.InventorySpaceUsed : takeAmount); return(true); } catch (Exception ex) { return(false); } } else { return(false); } }