From 8560bded67ab62331e23327e1676aafddd43b419 Mon Sep 17 00:00:00 2001
From: DCoded <dicoded@email.com>
Date: Wed, 1 Jun 2022 23:58:10 -0400
Subject: [PATCH] Fixes, better gating, formatting, rewording

---
 src/004-base/facilityFramework.js          |  2 +-
 src/facilities/farmyard/animals/animals.js | 17 +++++++++++++----
 src/facilities/farmyard/farmyard.js        |  4 ++--
 src/js/economyJS.js                        | 12 ++++++------
 4 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/src/004-base/facilityFramework.js b/src/004-base/facilityFramework.js
index e8351ab0f33..81aeeee1596 100644
--- a/src/004-base/facilityFramework.js
+++ b/src/004-base/facilityFramework.js
@@ -256,7 +256,7 @@ App.Facilities.Facility = class Facility {
 						}
 					});
 
-					App.UI.DOM.appendNewElement("div", div, options.render(), ['indent', 'margin-bottom']);
+					App.UI.DOM.appendNewElement("div", div, options.render(), ['margin-bottom']);
 				}
 
 				if (rule.nodes) {
diff --git a/src/facilities/farmyard/animals/animals.js b/src/facilities/farmyard/animals/animals.js
index 09ee4edd805..68b37e1953c 100644
--- a/src/facilities/farmyard/animals/animals.js
+++ b/src/facilities/farmyard/animals/animals.js
@@ -58,7 +58,10 @@ App.Facilities.Farmyard.animals = function() {
 			const option = options.addOption(null, "canine", V.active);
 			V.animals.canine.forEach(canine => {
 				const _canine = getAnimal(canine);
-				option.addValue(capFirstChar(_canine.name), _canine.name).pulldown();
+
+				if (_canine) {
+					option.addValue(capFirstChar(_canine.name), _canine.name).pulldown();
+				}
 			});
 
 			div.append(`Your ${V.active.canine} is currently set as your active canine.`, options.render());
@@ -75,7 +78,10 @@ App.Facilities.Farmyard.animals = function() {
 			const option = options.addOption(null, "hooved", V.active);
 			V.animals.hooved.forEach(hooved => {
 				const _hooved = getAnimal(hooved);
-				option.addValue(capFirstChar(_hooved.name), _hooved.name).pulldown();
+
+				if (_hooved) {
+					option.addValue(capFirstChar(_hooved.name), _hooved.name).pulldown();
+				}
 			});
 
 			div.append(`Your ${V.active.hooved} is currently set as your active hooved animal.`, options.render());
@@ -92,7 +98,10 @@ App.Facilities.Farmyard.animals = function() {
 			const option = options.addOption(null, "feline", V.active);
 			V.animals.feline.forEach(feline => {
 				const _felines = getAnimal(feline);
-				option.addValue(capFirstChar(_felines.name), _felines.name).pulldown();
+
+				if (_felines) {
+					option.addValue(capFirstChar(_felines.name), _felines.name).pulldown();
+				}
 			});
 
 			div.append(`Your ${V.active.feline} is currently set as your active feline.`, options.render());
@@ -633,4 +642,4 @@ App.Facilities.Farmyard.animals.init = function() {
 };
 
 /** @type {Set<App.Entity.Animal>} */
-App.Data.animals = App.Data.animals || new Set;
+App.Data.animals = App.Data.animals ?? new Set;
diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js
index 9260ae223aa..6b6ab06ab25 100644
--- a/src/facilities/farmyard/farmyard.js
+++ b/src/facilities/farmyard/farmyard.js
@@ -437,7 +437,7 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 			}));
 		}
 
-		App.UI.DOM.appendNewElement("div", div, App.UI.DOM.generateLinksStrip(links), ['indent']);
+		App.UI.DOM.appendNewElement("div", div, App.UI.DOM.generateLinksStrip(links), ['margin-bottom']);
 
 		// Trading
 
@@ -488,7 +488,7 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 		links = [];
 
 		if (V.farmMenialsSpace < 2000) {
-			App.UI.DOM.appendNewElement("div", div, `There is enough room in ${V.farmyardName} to build housing, enough to give ${V.farmMenialsSpace + 100} menial slaves a place to sleep and relax.`);
+			App.UI.DOM.appendNewElement("div", div, `There is enough room in ${V.farmyardName} to build enough housing for an additional ${num(100)} menial slaves.`);
 
 			App.UI.DOM.appendNewElement("div", div, makePurchase(`Build a new housing unit`, unitCost, "capEx", {
 				handler: () => {
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 5cbe49ea29c..af9d7569c2e 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -660,12 +660,12 @@ globalThis.calculateCosts = (function() {
 
 	function getFarmyardCosts() {
 		const facility = V.farmyard * V.facilityCost;
-		const exotic = V.animals.canine.map(c => getAnimal(c)).filter(c => c.rarity === "exotic").length +
-			V.animals.hooved.map(h => getAnimal(h)).filter(h => h.rarity === "exotic").length +
-			V.animals.feline.map(f => getAnimal(f)).filter(f => f.rarity === "exotic").length;
-		const domestic = V.animals.canine.map(c => getAnimal(c)).filter(c => c.rarity === "domestic").length +
-			V.animals.hooved.map(h => getAnimal(h)).filter(h => h.rarity === "domestic").length +
-			V.animals.feline.map(f => getAnimal(f)).filter(f => f.rarity === "domestic").length;
+		const exotic = V.animals.canine.map(c => getAnimal(c)).filter(c => !!c && c.rarity === "exotic").length +
+			V.animals.hooved.map(h => getAnimal(h)).filter(h => !!h && h.rarity === "exotic").length +
+			V.animals.feline.map(f => getAnimal(f)).filter(f => !!f && f.rarity === "exotic").length;
+		const domestic = V.animals.canine.map(c => getAnimal(c)).filter(c => !!c && c.rarity === "domestic").length +
+			V.animals.hooved.map(h => getAnimal(h)).filter(h => !!h && h.rarity === "domestic").length +
+			V.animals.feline.map(f => getAnimal(f)).filter(f => !!f && f.rarity === "domestic").length;
 		return (
 			(
 				(facility) +
-- 
GitLab