From 40dfc5bc8d26d65bac216e1edd1424b36a173156 Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Sun, 29 Nov 2020 21:01:50 -0800
Subject: [PATCH] Remove $FSPromenade global structure, and all code that
 maintains or accesses it.  Simplify shop redecoration code.

---
 js/003-data/gameVariableData.js               |   3 -
 src/arcologyBuilding/base.js                  |   9 +
 src/arcologyBuilding/presets.js               |  66 ++-
 src/arcologyBuilding/shops.js                 | 390 ++----------------
 .../backwardsCompatibility.js                 |  34 --
 src/interaction/siUtilities.js                |   2 +-
 6 files changed, 83 insertions(+), 421 deletions(-)

diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index ade55171dd8..375c4923fc8 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -717,9 +717,6 @@ App.Data.resetOnNGPlus = {
 	FSSingleSlaveRep: 10,
 	FSSpending: 0,
 	FSLockinLevel: 100,
-	FSPromenade: {
-		Subjugationist: 0, Supremacist: 0, GenderRadicalist: 0, GenderFundamentalist: 0, Paternalist: 0, Degradationist: 0, BodyPurist: 0, TransformationFetishist: 0, YouthPreferentialist: 0, MaturityPreferentialist: 0, SlimnessEnthusiast: 0, AssetExpansionist: 0, Pastoralist: 0, PhysicalIdealist: 0, ChattelReligionist: 0, RomanRevivalist: 0, AztecRevivalist: 0, EgyptianRevivalist: 0, EdoRevivalist: 0, ArabianRevivalist: 0, ChineseRevivalist: 0, NeoImperialist: 0, Repopulationist: 0, Eugenics: 0, Hedonism: 0, IntellectualDependency: 0, SlaveProfessionalism: 0, PetiteAdmiration: 0, StatuesqueGlorification: 0
-	},
 
 	// new corporation variables
 	newCorp: 1,
diff --git a/src/arcologyBuilding/base.js b/src/arcologyBuilding/base.js
index 43209901ab5..ccb978502ef 100644
--- a/src/arcologyBuilding/base.js
+++ b/src/arcologyBuilding/base.js
@@ -47,6 +47,15 @@ App.Arcology.defaultBuilding = function(terrain = "default") {
 	return candidates.pluck().construct(env).building;
 };
 
+/**
+ * Determine whether the arcology has a shop of a particular type
+ * @param {string} type
+ * @returns {boolean}
+ */
+App.Arcology.hasShopOfType = function(type) {
+	return V.building.findCells(cell => (cell instanceof App.Arcology.Cell.Shop) && cell.type === type).length > 0;
+};
+
 /**
  * Order of the building sections. All possible sections have to be added here.
  *
diff --git a/src/arcologyBuilding/presets.js b/src/arcologyBuilding/presets.js
index 9157e8bfc5c..112aa9de1c3 100644
--- a/src/arcologyBuilding/presets.js
+++ b/src/arcologyBuilding/presets.js
@@ -164,17 +164,15 @@ App.Arcology.presets = (function() {
 	 * @returns {{building: App.Arcology.Building, apply: function()}}
 	 */
 	function randomizeBuilding(building, environment) {
-		const apply = [];
 		if (Math.random() < 0.5) {
-			apply.push(addFsShop(building, environment.fs));
+			addFsShop(building, environment.fs);
 		}
-		return {building: building, apply: () => { apply.forEach(a => { a(); }); }};
+		return {building: building, apply: () => { }};
 	}
 
 	/**
 	 * @param {App.Arcology.Building} building
 	 * @param {string} fs
-	 * @returns {function():void}
 	 */
 	function addFsShop(building, fs) {
 		function randomShop() {
@@ -184,93 +182,93 @@ App.Arcology.presets = (function() {
 		switch (fs) {
 			case "Supremacist":
 				randomShop().type = "Supremacist";
-				return () => { V.FSPromenade.Supremacist = 1; };
+				return;
 			case "Subjugationist":
 				randomShop().type = "Subjugationist";
-				return () => { V.FSPromenade.Subjugationist = 1; };
+				return;
 			case "GenderRadicalist":
 				randomShop().type = "Gender Radicalist";
-				return () => { V.FSPromenade.GenderRadicalist = 1; };
+				return;
 			case "GenderFundamentalist":
 				randomShop().type = "Gender Fundamentalist";
-				return () => { V.FSPromenade.GenderFundamentalist = 1; };
+				return;
 			case "Paternalist":
 				randomShop().type = "Paternalist";
-				return () => { V.FSPromenade.Paternalist = 1; };
+				return;
 			case "Degradationist":
 				randomShop().type = "Degradationist";
-				return () => { V.FSPromenade.Degradationist = 1; };
+				return;
 			case "AssetExpansionist":
 				randomShop().type = "Asset Expansionist";
-				return () => { V.FSPromenade.AssetExpansionist = 1; };
+				return;
 			case "SlimnessEnthusiast":
 				randomShop().type = "Slimness Enthusiast";
-				return () => { V.FSPromenade.SlimnessEnthusiast = 1; };
+				return;
 			case "TransformationFetishist":
 				randomShop().type = "Transformation Fetishist";
-				return () => { V.FSPromenade.TransformationFetishist = 1; };
+				return;
 			case "BodyPurist":
 				randomShop().type = "Body Purist";
-				return () => { V.FSPromenade.BodyPurist = 1; };
+				return;
 			case "MaturityPreferentialist":
 				randomShop().type = "Maturity Preferentialist";
-				return () => { V.FSPromenade.MaturityPreferentialist = 1; };
+				return;
 			case "YouthPreferentialist":
 				randomShop().type = "Youth Preferentialist";
-				return () => { V.FSPromenade.YouthPreferentialist = 1; };
+				return;
 			case "Pastoralist":
 				randomShop().type = "Pastoralist";
-				return () => { V.FSPromenade.Pastoralist = 1; };
+				return;
 			case "PhysicalIdealist":
 				randomShop().type = "Physical Idealist";
-				return () => { V.FSPromenade.PhysicalIdealist = 1; };
+				return;
 			case "ChattelReligionist":
 				randomShop().type = "Chattel Religionist";
-				return () => { V.FSPromenade.ChattelReligionist = 1; };
+				return;
 			case "RomanRevivalist":
 				randomShop().type = "Roman Revivalist";
-				return () => { V.FSPromenade.RomanRevivalist = 1; };
+				return;
 			case "NeoImperialist":
 				randomShop().type = "Neo-Imperialist";
-				return () => { V.FSPromenade.NeoImperialist = 1; };
+				return;
 			case "AztecRevivalist":
 				randomShop().type = "Aztec Revivalist";
-				return () => { V.FSPromenade.AztecRevivalist = 1; };
+				return;
 			case "EgyptianRevivalist":
 				randomShop().type = "Egyptian Revivalist";
-				return () => { V.FSPromenade.EgyptianRevivalist = 1; };
+				return;
 			case "EdoRevivalist":
 				randomShop().type = "Edo Revivalist";
-				return () => { V.FSPromenade.EdoRevivalist = 1; };
+				return;
 			case "ArabianRevivalist":
 				randomShop().type = "Arabian Revivalist";
-				return () => { V.FSPromenade.ArabianRevivalist = 1; };
+				return;
 			case "ChineseRevivalist":
 				randomShop().type = "Chinese Revivalist";
-				return () => { V.FSPromenade.Degradationist = 1; };
+				return;
 			case "Repopulationist":
 				randomShop().type = "Repopulationist";
-				return () => { V.FSPromenade.Repopulationist = 1; };
+				return;
 			case "Eugenics":
 				randomShop().type = "Eugenics";
-				return () => { V.FSPromenade.Eugenics = 1; };
+				return;
 			case "HedonisticDecadence":
 				randomShop().type = "Hedonism";
-				return () => { V.FSPromenade.Hedonism = 1; };
+				return;
 			case "IntellectualDependency":
 				randomShop().type = "Intellectual Dependency";
-				return () => { V.FSPromenade.IntellectualDependency = 1; };
+				return;
 			case "SlaveProfessionalism":
 				randomShop().type = "Slave Professionalism";
-				return () => { V.FSPromenade.SlaveProfessionalism = 1; };
+				return;
 			case "PetiteAdmiration":
 				randomShop().type = "Petite Admiration";
-				return () => { V.FSPromenade.PetiteAdmiration = 1; };
+				return;
 			case "StatuesqueGlorification":
 				randomShop().type = "Statuesque Glorification";
-				return () => { V.FSPromenade.StatuesqueGlorification = 1; };
+				return;
 			default:
-				return () => {};
+				return;
 		}
 	}
 
diff --git a/src/arcologyBuilding/shops.js b/src/arcologyBuilding/shops.js
index 725b030be4a..53a6113f72a 100644
--- a/src/arcologyBuilding/shops.js
+++ b/src/arcologyBuilding/shops.js
@@ -318,7 +318,6 @@ App.Arcology.Cell.Shop = class extends App.Arcology.Cell.BaseCell {
 			fragment.append(this._makeUpgrade(
 				"Convert this sector of the promenade into a brothel.",
 				() => {
-					this._clearFsStyle();
 					V.brothel = 5;
 					this.type = "Brothel";
 				}, cost, "and will incur upkeep costs"
@@ -329,365 +328,65 @@ App.Arcology.Cell.Shop = class extends App.Arcology.Cell.BaseCell {
 			fragment.append(this._makeUpgrade(
 				"Build a club to serve as a focal point for public sluts.",
 				() => {
-					this._clearFsStyle();
 					V.club = 5;
 					this.type = "Club";
 				}, cost, "and will incur upkeep costs"
 			));
 		}
 
-		if (A.FSSubjugationist !== "unset") {
-			if (V.FSPromenade.Subjugationist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Subjugationist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Subjugationist = 1;
-						this.type = "Subjugationist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSSupremacist !== "unset") {
-			if (V.FSPromenade.Supremacist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Supremacist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Supremacist = 1;
-						this.type = "Supremacist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSGenderRadicalist !== "unset") {
-			if (V.FSPromenade.GenderRadicalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Gender Radicalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.GenderRadicalist = 1;
-						this.type = "Gender Radicalist";
-					}, cost
-				));
-			}
-		} else if (A.FSGenderFundamentalist !== "unset") {
-			if (V.FSPromenade.GenderFundamentalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Gender Fundamentalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.GenderFundamentalist = 1;
-						this.type = "Gender Fundamentalist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSPaternalist !== "unset") {
-			if (V.FSPromenade.Paternalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Paternalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Paternalist = 1;
-						this.type = "Paternalist";
-					}, cost
-				));
-			}
-		} else if (A.FSDegradationist !== "unset") {
-			if (V.FSPromenade.Degradationist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Degradationist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Degradationist = 1;
-						this.type = "Degradationist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSIntellectualDependency !== "unset") {
-			if (V.FSPromenade.IntellectualDependency === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Intellectual Dependency establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.IntellectualDependency = 1;
-						this.type = "Intellectual Dependency";
-					}, cost
-				));
+		/**
+		 * @param {App.Arcology.Cell.Shop} cell
+		 * @param {FC.FutureSociety} fsProp
+		 * @param {string} [fsType] thanks, Hedonism...
+		 */
+		function fsUpgradeLink(cell, fsProp, fsType) {
+			if (!fsType) {
+				 // TODO: should probably have a different list of valid decoration strings, instead of using the display adjective with exceptions
+				fsType = FutureSocieties.displayAdj(fsProp);
 			}
-		} else if (A.FSSlaveProfessionalism !== "unset") {
-			if (V.FSPromenade.SlaveProfessionalism === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Slave Professionalism establishments.",
+			if ((A[fsProp] !== "unset") && !App.Arcology.hasShopOfType(fsType)) {
+				fragment.append(cell._makeUpgrade(
+					`Upgrade this sector to appeal to ${FutureSocieties.displayAdj(fsProp)} establishments.`,
 					() => {
-						this._clearFsStyle();
-						V.FSPromenade.SlaveProfessionalism = 1;
-						this.type = "Slave Professionalism";
+						cell.type = fsType;
 					}, cost
 				));
 			}
 		}
 
-		if (A.FSBodyPurist !== "unset") {
-			if (V.FSPromenade.BodyPurist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Body Purist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.BodyPurist = 1;
-						this.type = "Body Purist";
-					}, cost
-				));
-			}
-		} else if (A.FSTransformationFetishist !== "unset") {
-			if (V.FSPromenade.TransformationFetishist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Transformation Fetishist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.TransformationFetishist = 1;
-						this.type = "Transformation Fetishist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSYouthPreferentialist !== "unset") {
-			if (V.FSPromenade.YouthPreferentialist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Youth Preferentialist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.YouthPreferentialist = 1;
-						this.type = "Youth Preferentialist";
-					}, cost
-				));
-			}
-		} else if (A.FSMaturityPreferentialist !== "unset") {
-			if (V.FSPromenade.MaturityPreferentialist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Maturity Preferentialist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.MaturityPreferentialist = 1;
-						this.type = "Maturity Preferentialist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSPetiteAdmiration !== "unset") {
-			if (V.FSPromenade.PetiteAdmiration === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Petite Admiration establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.PetiteAdmiration = 1;
-						this.type = "Petite Admiration";
-					}, cost
-				));
-			}
-		} else if (A.FSStatuesqueGlorification !== "unset") {
-			if (V.FSPromenade.StatuesqueGlorification === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Statuesque Glorification establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.StatuesqueGlorification = 1;
-						this.type = "Statuesque Glorification";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSSlimnessEnthusiast !== "unset") {
-			if (V.FSPromenade.SlimnessEnthusiast === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Slimness Enthusiast establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.SlimnessEnthusiast = 1;
-						this.type = "Slimness Enthusiast";
-					}, cost
-				));
-			}
-		} else if (A.FSAssetExpansionist !== "unset") {
-			if (V.FSPromenade.AssetExpansionist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Asset Expansionist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.AssetExpansionist = 1;
-						this.type = "Asset Expansionist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSPastoralist !== "unset") {
-			if (V.FSPromenade.Pastoralist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Pastoralist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Pastoralist = 1;
-						this.type = "Pastoralist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSPhysicalIdealist !== "unset") {
-			if (V.FSPromenade.PhysicalIdealist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Physical Idealist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.PhysicalIdealist = 1;
-						this.type = "Physical Idealist";
-					}, cost
-				));
-			}
-		} else if (A.FSHedonisticDecadence !== "unset") {
-			if (V.FSPromenade.Hedonism === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Hedonistic establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Hedonism = 1;
-						this.type = "Hedonism";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSRepopulationFocus !== "unset") {
-			if (V.FSPromenade.Repopulationist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Repopulationist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Repopulationist = 1;
-						this.type = "Repopulationist";
-					}, cost
-				));
-			}
-		} else if (A.FSRestart !== "unset") {
-			if (V.FSPromenade.Eugenics === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Eugenics establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.Eugenics = 1;
-						this.type = "Eugenics";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSChattelReligionist !== "unset") {
-			if (V.FSPromenade.ChattelReligionist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Chattel Religionist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.ChattelReligionist = 1;
-						this.type = "Chattel Religionist";
-					}, cost
-				));
-			}
-		}
-
-		if (A.FSRomanRevivalist !== "unset") {
-			if (V.FSPromenade.RomanRevivalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Roman Revivalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.RomanRevivalist = 1;
-						this.type = "Roman Revivalist";
-					}, cost
-				));
-			}
-		} else if (A.FSAztecRevivalist !== "unset") {
-			if (V.FSPromenade.AztecRevivalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Aztec Revivalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.AztecRevivalist = 1;
-						this.type = "Aztec Revivalist";
-					}, cost
-				));
-			}
-		} else if (A.FSNeoImperialist !== "unset") {
-			if (V.FSPromenade.NeoImperialist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Neo-Imperialist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.NeoImperialist = 1;
-						this.type = "Neo-Imperialist";
-					}, cost
-				));
-			}
-		} else if (A.FSEgyptianRevivalist !== "unset") {
-			if (V.FSPromenade.EgyptianRevivalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Egyptian Revivalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.EgyptianRevivalist = 1;
-						this.type = "Egyptian Revivalist";
-					}, cost
-				));
-			}
-		} else if (A.FSEdoRevivalist !== "unset") {
-			if (V.FSPromenade.EdoRevivalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Edo Revivalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.EdoRevivalist = 1;
-						this.type = "Edo Revivalist";
-					}, cost
-				));
-			}
-		} else if (A.FSArabianRevivalist !== "unset") {
-			if (V.FSPromenade.ArabianRevivalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Arabian Revivalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.ArabianRevivalist = 1;
-						this.type = "Arabian Revivalist";
-					}, cost
-				));
-			}
-		} else if (A.FSChineseRevivalist !== "unset") {
-			if (V.FSPromenade.ChineseRevivalist === 0) {
-				fragment.append(this._makeUpgrade(
-					"Upgrade this sector to appeal to Chinese Revivalist establishments.",
-					() => {
-						this._clearFsStyle();
-						V.FSPromenade.ChineseRevivalist = 1;
-						this.type = "Chinese Revivalist";
-					}, cost
-				));
-			}
-		}
+		fsUpgradeLink(this, "FSSubjugationist");
+		fsUpgradeLink(this, "FSSupremacist");
+		fsUpgradeLink(this, "FSGenderRadicalist");
+		fsUpgradeLink(this, "FSGenderFundamentalist");
+		fsUpgradeLink(this, "FSPaternalist");
+		fsUpgradeLink(this, "FSDegradationist");
+		fsUpgradeLink(this, "FSIntellectualDependency");
+		fsUpgradeLink(this, "FSSlaveProfessionalism", "Slave Professionalism");
+		fsUpgradeLink(this, "FSBodyPurist");
+		fsUpgradeLink(this, "FSTransformationFetishist");
+		fsUpgradeLink(this, "FSYouthPreferentialist");
+		fsUpgradeLink(this, "FSMaturityPreferentialist");
+		fsUpgradeLink(this, "FSPetiteAdmiration");
+		fsUpgradeLink(this, "FSStatuesqueGlorification");
+		fsUpgradeLink(this, "FSSlimnessEnthusiast");
+		fsUpgradeLink(this, "FSAssetExpansionist");
+		fsUpgradeLink(this, "FSPastoralist");
+		fsUpgradeLink(this, "FSPhysicalIdealist");
+		fsUpgradeLink(this, "FSHedonisticDecadence", "Hedonism");
+		fsUpgradeLink(this, "FSRepopulationFocus");
+		fsUpgradeLink(this, "FSChattelReligionist");
+		fsUpgradeLink(this, "FSRomanRevivalist");
+		fsUpgradeLink(this, "FSAztecRevivalist");
+		fsUpgradeLink(this, "FSNeoImperialist");
+		fsUpgradeLink(this, "FSEgyptianRevivalist");
+		fsUpgradeLink(this, "FSEdoRevivalist");
+		fsUpgradeLink(this, "FSArabianRevivalist");
+		fsUpgradeLink(this, "FSChineseRevivalist");
 
 		if (this.type !== "Shops") {
 			fragment.append(this._makeUpgrade(
 				"Return this sector to standard outlets",
 				() => {
-					this._clearFsStyle();
 					this.type = "Shops";
 				}, cost
 			));
@@ -696,13 +395,6 @@ App.Arcology.Cell.Shop = class extends App.Arcology.Cell.BaseCell {
 		return fragment;
 	}
 
-	_clearFsStyle() {
-		if (!["Shops", "Brothel", "Club"].includes(this.type)) {
-			const currentFSStyle = this.type.replace(/\s+/g, '');
-			V.FSPromenade[currentFSStyle] = 0;
-		}
-	}
-
 	/**
 	 * @returns {boolean}
 	 */
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 6003821a60a..9f7a1170aa0 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -980,39 +980,6 @@ App.Update.globalVariables = function(node) {
 			assistant.object();
 		}
 		App.Update.FCTV();
-		if (jQuery.isEmptyObject(V.FSPromenade)) {
-			V.FSPromenade = {
-				Subjugationist: 0,
-				Supremacist: 0,
-				GenderRadicalist: 0,
-				GenderFundamentalist: 0,
-				Paternalist: 0,
-				Degradationist: 0,
-				BodyPurist: 0,
-				TransformationFetishist: 0,
-				YouthPreferentialist: 0,
-				MaturityPreferentialist: 0,
-				SlimnessEnthusiast: 0,
-				AssetExpansionist: 0,
-				Pastoralist: 0,
-				PhysicalIdealist: 0,
-				ChattelReligionist: 0,
-				RomanRevivalist: 0,
-				NeoImperialist: 0,
-				AztecRevivalist: 0,
-				EgyptianRevivalist: 0,
-				EdoRevivalist: 0,
-				ArabianRevivalist: 0,
-				ChineseRevivalist: 0,
-				Repopulationist: 0,
-				Eugenics: 0,
-				Hedonism: 0,
-				IntellectualDependency: 0,
-				SlaveProfessionalism: 0,
-				PetiteAdmiration: 0,
-				StatuesqueGlorification: 0
-			};
-		}
 		if (jQuery.isEmptyObject(V.arcologyUpgrade)) {
 			V.arcologyUpgrade = {
 				drones: 0,
@@ -1324,7 +1291,6 @@ App.Update.globalVariables = function(node) {
 	V.boughtItem.toys.enema = V.boughtItem.toys.enema || V.enema || 0;
 	V.boughtItem.toys.medicalEnema = V.boughtItem.toys.medicalEnema || V.medicalEnema || 0;
 
-	V.FSPromenade.Hedonism = V.FSPromenade.Hedonism || V.FSPromenade.HedonisticDecadence || 0;
 	V.building.findCells(cell => cell instanceof App.Arcology.Cell.Shop && cell.type === "Hedonistic Decadence").forEach(cell => cell.type = "Hedonism");
 
 	node.append(`Done!`);
diff --git a/src/interaction/siUtilities.js b/src/interaction/siUtilities.js
index 55bd7902426..c95185faa66 100644
--- a/src/interaction/siUtilities.js
+++ b/src/interaction/siUtilities.js
@@ -26,7 +26,7 @@ App.UI.SlaveInteract.placeInLine = function(slave) {
 
 /** @typedef RowItem
  * @type {object}
- * @property {string} [FS] - FS requirement, if any
+ * @property {FC.FutureSociety} [FS] - FS requirement, if any
  * @property {string} [text] - link text
  * @property {object} [updateSlave] - properties to be merged onto the slave
  * @property {object} [update] - properties to be merged into global state
-- 
GitLab