From dccaf97517126df2e1bef68fb4eb7d469ab22e3d Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Sun, 23 Feb 2020 13:28:21 -0800
Subject: [PATCH] Consolidate some FS code

---
 src/js/futureSocietyJS.js                 |  22 ++++
 src/uncategorized/fsDevelopments.tw       | 143 +---------------------
 src/uncategorized/neighborsDevelopment.tw | 125 +------------------
 src/uncategorized/neighborsFSAdoption.tw  |  94 +++++---------
 4 files changed, 58 insertions(+), 326 deletions(-)

diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js
index 77722c33852..eade18a5c8a 100644
--- a/src/js/futureSocietyJS.js
+++ b/src/js/futureSocietyJS.js
@@ -33,8 +33,11 @@ window.FutureSocieties = (function() {
 		StatuesqueGlorification: "FSStatuesqueGlorification"
 	};
 	const SocietyList = [...new Set(Object.keys(FSString2Property).map(key => FSString2Property[key]))]; // This returns an array containing the unique values of FSString2Property. E.g. "FSSupremacist" and "FSSubjugationist"
+	const NPCSocietyList = [ "FSCummunism", "FSIncestFetishist" ]; // NPC arcologies may use these FSes, but the PC can't
 
 	return {
+		activeCount: activeCount,
+		applyBroadProgress: applyBroadProgress,
 		remove: removeFS,
 		DecorationCleanup: DecorationCleanup,
 		Change: FSChange,
@@ -42,6 +45,25 @@ window.FutureSocieties = (function() {
 		HighestDecoration: FSHighestDecoration
 	};
 
+	// helper function, not callable externally
+	function activeFSes(arcologyID) {
+		let isSet = (fs) => V.arcologies[arcologyID][fs] !== "unset";
+		const npcFSes = arcologyID !== 0 ? NPCSocietyList.filter(isSet) : [];
+		return SocietyList.filter(isSet).concat(npcFSes);
+	}
+
+	// call as FutureSocieties.activeCount(arcologyID)
+	function activeCount(arcologyID) {
+		return activeFSes(arcologyID).length;
+	}
+
+	// call as FutureSocieties.applyBroadProgress(arcologyID, progress)
+	function applyBroadProgress(arcologyID, progress) {
+		activeFSes(arcologyID).forEach((fs) => {
+			V.arcologies[arcologyID][fs] += progress;
+		});
+	}
+
 	// call as FutureSocieties.remove(FS)
 	// FS must be a string (e.g. "FSPaternalist" or "FSDegradationist").
 	function removeFS(FS) {
diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw
index 66ba98f708a..181252fbd6a 100644
--- a/src/uncategorized/fsDevelopments.tw
+++ b/src/uncategorized/fsDevelopments.tw
@@ -30,77 +30,7 @@
 <</if>>
 
 /* Count adopted FS */
-<<set _societies = 0>>
-<<if $arcologies[0].FSSupremacist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSSubjugationist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSGenderRadicalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSGenderFundamentalist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPaternalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSDegradationist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSIntellectualDependency != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSSlaveProfessionalism != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSBodyPurist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSAssetExpansionist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPastoralist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPhysicalIdealist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSHedonisticDecadence != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPetiteAdmiration != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSStatuesqueGlorification != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSMaturityPreferentialist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSYouthPreferentialist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSChattelReligionist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSRomanRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSArabianRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSChineseRevivalist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSRepopulationFocus != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSRestart != "unset">>
-	<<set _societies++>>
-<</if>>
+<<set _societies = FutureSocieties.activeCount(0)>>
 
 /* Spending, terrain, rep effects */
 <<set _broadProgress = 0>>
@@ -237,76 +167,7 @@
 	<</switch>>
 <</if>> /*closes FS count changes */
 <<if _broadProgress != 0>>
-	<<if $arcologies[0].FSSupremacist != "unset">>
-		<<set $arcologies[0].FSSupremacist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSSubjugationist != "unset">>
-		<<set $arcologies[0].FSSubjugationist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSGenderRadicalist != "unset">>
-		<<set $arcologies[0].FSGenderRadicalist += _broadProgress>>
-	<<elseif $arcologies[0].FSGenderFundamentalist != "unset">>
-		<<set $arcologies[0].FSGenderFundamentalist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPaternalist != "unset">>
-		<<set $arcologies[0].FSPaternalist += _broadProgress>>
-	<<elseif $arcologies[0].FSDegradationist != "unset">>
-		<<set $arcologies[0].FSDegradationist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSIntellectualDependency != "unset">>
-		<<set $arcologies[0].FSIntellectualDependency += _broadProgress>>
-	<<elseif $arcologies[0].FSSlaveProfessionalism != "unset">>
-		<<set $arcologies[0].FSSlaveProfessionalism += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSBodyPurist != "unset">>
-		<<set $arcologies[0].FSBodyPurist += _broadProgress>>
-	<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
-		<<set $arcologies[0].FSTransformationFetishist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
-		<<set $arcologies[0].FSSlimnessEnthusiast += _broadProgress>>
-	<<elseif $arcologies[0].FSAssetExpansionist != "unset">>
-		<<set $arcologies[0].FSAssetExpansionist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPastoralist != "unset">>
-		<<set $arcologies[0].FSPastoralist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPhysicalIdealist != "unset">>
-		<<set $arcologies[0].FSPhysicalIdealist += _broadProgress>>
-	<<elseif $arcologies[0].FSHedonisticDecadence != "unset">>
-		<<set $arcologies[0].FSHedonisticDecadence += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSMaturityPreferentialist != "unset">>
-		<<set $arcologies[0].FSMaturityPreferentialist += _broadProgress>>
-	<<elseif $arcologies[0].FSYouthPreferentialist != "unset">>
-		<<set $arcologies[0].FSYouthPreferentialist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPetiteAdmiration != "unset">>
-		<<set $arcologies[0].FSPetiteAdmiration += _broadProgress>>
-	<<elseif $arcologies[0].FSStatuesqueGlorification != "unset">>
-		<<set $arcologies[0].FSStatuesqueGlorification += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSChattelReligionist != "unset">>
-		<<set $arcologies[0].FSChattelReligionist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSRomanRevivalist != "unset">>
-		<<set $arcologies[0].FSRomanRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
-		<<set $arcologies[0].FSAztecRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-		<<set $arcologies[0].FSEgyptianRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
-		<<set $arcologies[0].FSEdoRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSArabianRevivalist != "unset">>
-		<<set $arcologies[0].FSArabianRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSChineseRevivalist != "unset">>
-		<<set $arcologies[0].FSChineseRevivalist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSRepopulationFocus != "unset">>
-		<<set $arcologies[0].FSRepopulationFocus += _broadProgress>>
-	<<elseif $arcologies[0].FSRestart != "unset">>
-		<<set $arcologies[0].FSRestart += _broadProgress>>
-	<</if>>
+	<<run FutureSocieties.applyBroadProgress(0, _broadProgress)>>
 <</if>>
 
 <<if $secExpEnabled == 1>>
diff --git a/src/uncategorized/neighborsDevelopment.tw b/src/uncategorized/neighborsDevelopment.tw
index a5768bd73cd..031517ae46d 100644
--- a/src/uncategorized/neighborsDevelopment.tw
+++ b/src/uncategorized/neighborsDevelopment.tw
@@ -634,7 +634,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 
 /* FUTURE SOCIETY PROGRESS */
 
-<<set _societiesAdopted = 0>>
+<<set _societiesAdopted = FutureSocieties.activeCount($i)>>
 <<switch $arcologies[$i].government>>
 <<case "elected officials">>
 	<<set $efficiency = random(-2,2)>>
@@ -664,11 +664,10 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<<set _FSCrossThresh += 5>>
 <</if>>
 
+<<if $arcologies[$i].direction != 0>>
+	<<run FutureSocieties.applyBroadProgress($i, $efficiency)>>
+<</if>>
 <<if $arcologies[$i].FSSupremacist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSupremacist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if ($arcologies[$j].FSSupremacist > $arcologies[$i].FSSupremacist + _FSCrossThresh) && ($arcologies[$j].FSSupremacistRace == $arcologies[$i].FSSupremacistRace)>>
@@ -732,10 +731,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSSubjugationist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSubjugationist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if ($arcologies[$j].FSSubjugationist > $arcologies[$i].FSSubjugationist + _FSCrossThresh) && ($arcologies[$j].FSSubjugationistRace == $arcologies[$i].FSSubjugationistRace)>>
@@ -799,10 +794,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSRepopulationFocus != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSRepopulationFocus += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSRepopulationFocus > $arcologies[$i].FSRepopulationFocus + _FSCrossThresh>>
@@ -847,10 +838,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSRestart != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSRestart += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSRestart > $arcologies[$i].FSRestart + _FSCrossThresh>>
@@ -898,10 +885,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSGenderRadicalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSGenderRadicalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSGenderRadicalist > $arcologies[$i].FSGenderRadicalist + _FSCrossThresh>>
@@ -953,10 +936,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSGenderFundamentalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSGenderFundamentalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSGenderFundamentalist > $arcologies[$i].FSGenderFundamentalist + _FSCrossThresh>>
@@ -995,10 +974,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPaternalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPaternalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPaternalist > $arcologies[$i].FSPaternalist + _FSCrossThresh>>
@@ -1044,10 +1019,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSDegradationist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSDegradationist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSDegradationist > $arcologies[$i].FSDegradationist + _FSCrossThresh>>
@@ -1095,10 +1066,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSIntellectualDependency != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSIntellectualDependency += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSIntellectualDependency > $arcologies[$i].FSIntellectualDependency + _FSCrossThresh>>
@@ -1139,10 +1106,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSSlaveProfessionalism != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSlaveProfessionalism += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSSlaveProfessionalism > $arcologies[$i].FSSlaveProfessionalism + _FSCrossThresh>>
@@ -1200,10 +1163,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSBodyPurist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSBodyPurist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSBodyPurist > $arcologies[$i].FSBodyPurist + _FSCrossThresh>>
@@ -1242,10 +1201,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSTransformationFetishist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSTransformationFetishist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSTransformationFetishist > $arcologies[$i].FSTransformationFetishist + _FSCrossThresh>>
@@ -1289,10 +1244,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSYouthPreferentialist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSYouthPreferentialist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSYouthPreferentialist > $arcologies[$i].FSYouthPreferentialist + _FSCrossThresh>>
@@ -1336,10 +1287,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSMaturityPreferentialist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSMaturityPreferentialist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSMaturityPreferentialist > $arcologies[$i].FSMaturityPreferentialist + _FSCrossThresh>>
@@ -1378,10 +1325,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPetiteAdmiration != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPetiteAdmiration += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPetiteAdmiration > $arcologies[$i].FSPetiteAdmiration + _FSCrossThresh>>
@@ -1422,10 +1365,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSStatuesqueGlorification != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSStatuesqueGlorification += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSStatuesqueGlorification > $arcologies[$i].FSStatuesqueGlorification + _FSCrossThresh>>
@@ -1468,10 +1407,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSSlimnessEnthusiast != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSlimnessEnthusiast += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSSlimnessEnthusiast > $arcologies[$i].FSSlimnessEnthusiast + _FSCrossThresh>>
@@ -1511,10 +1446,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSAssetExpansionist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSAssetExpansionist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSAssetExpansionist > $arcologies[$i].FSAssetExpansionist + _FSCrossThresh>>
@@ -1562,10 +1493,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPastoralist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPastoralist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPastoralist > $arcologies[$i].FSPastoralist + _FSCrossThresh>>
@@ -1603,10 +1530,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSCummunism != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSCummunism += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSCummunism > $arcologies[$i].FSCummunism + _FSCrossThresh>>
@@ -1653,10 +1576,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPhysicalIdealist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPhysicalIdealist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPhysicalIdealist > $arcologies[$i].FSPhysicalIdealist + _FSCrossThresh>>
@@ -1701,10 +1620,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSHedonisticDecadence != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSHedonisticDecadence += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSHedonisticDecadence > $arcologies[$i].FSHedonisticDecadence + _FSCrossThresh>>
@@ -1748,10 +1663,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSIncestFetishist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSIncestFetishist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSIncestFetishist > $arcologies[$i].FSIncestFetishist + _FSCrossThresh>>
@@ -1787,10 +1698,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSChattelReligionist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSChattelReligionist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSChattelReligionist > $arcologies[$i].FSChattelReligionist + _FSCrossThresh>>
@@ -1830,10 +1737,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSRomanRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSRomanRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSRomanRevivalist > $arcologies[$i].FSRomanRevivalist + _FSCrossThresh>>
@@ -1882,10 +1785,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSAztecRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSAztecRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSAztecRevivalist > $arcologies[$i].FSAztecRevivalist + _FSCrossThresh>>
@@ -1934,10 +1833,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSEgyptianRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSEgyptianRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSEgyptianRevivalist > $arcologies[$i].FSEgyptianRevivalist + _FSCrossThresh>>
@@ -1986,10 +1881,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSEdoRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSEdoRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSEdoRevivalist > $arcologies[$i].FSEdoRevivalist + _FSCrossThresh>>
@@ -2038,10 +1929,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSArabianRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSArabianRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSArabianRevivalist > $arcologies[$i].FSArabianRevivalist + _FSCrossThresh>>
@@ -2094,10 +1981,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSChineseRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSChineseRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSChineseRevivalist > $arcologies[$i].FSChineseRevivalist + _FSCrossThresh>>
diff --git a/src/uncategorized/neighborsFSAdoption.tw b/src/uncategorized/neighborsFSAdoption.tw
index 243903eef8d..5ea9e68be69 100644
--- a/src/uncategorized/neighborsFSAdoption.tw
+++ b/src/uncategorized/neighborsFSAdoption.tw
@@ -500,74 +500,40 @@ societal development.
 		<</if>>
 	<</if>>
 <</if>>
-<<if $familyTesting == 1>>
-	<<if ($arcologies[$i].FSRomanRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSAztecRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEgyptianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEdoRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSArabianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSChineseRevivalist == "unset")>>
-		<<if ($leaders[$j].relationshipTarget != 0)>>
-			<<set _lover = $slaves.findIndex(function(s) { return areRelated(s, $leaders[$j]) && $leaders[$j].relationshipTarget == s.ID; })>>
-			<<if _lover != -1>>
-				Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Egyptian Revivalism,@@ since $he's already part of a gloriously incestuous relationship.
-				<<set $arcologies[$i].FSEgyptianRevivalist = 5>><<break>>
-			<</if>>
-		<<elseif $leaders[$j].nationality == "Chinese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Chinese Revivalism,@@ since $he's Chinese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSChineseRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Japanese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Edo Revivalism,@@ since $he's Japanese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSEdoRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Mexican">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Aztec Revivalism,@@ since $he's Mexican $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSAztecRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].behavioralQuirk == "confident">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Roman Revivalism,@@ since it appeals to $his confident, patrician nature.
-			<<set $arcologies[$i].FSRomanRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].fetish == "dom">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Arabian Revivalism,@@ since $he's sexually dominant and quite likes the idea of overseeing slave bazaars.
-			<<set $arcologies[$i].FSArabianRevivalist = 5>><<break>>
-		<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-<<else>>
-	<<if ($arcologies[$i].FSRomanRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSAztecRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEgyptianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEdoRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSArabianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSChineseRevivalist == "unset")>>
-		<<if ($leaders[$j].relationshipTarget != 0) && ($leaders[$j].relationshipTarget == $leaders[$j].relationTarget)>>
+<<if ($arcologies[$i].FSRomanRevivalist == "unset")>>
+<<if ($arcologies[$i].FSAztecRevivalist == "unset")>>
+<<if ($arcologies[$i].FSEgyptianRevivalist == "unset")>>
+<<if ($arcologies[$i].FSEdoRevivalist == "unset")>>
+<<if ($arcologies[$i].FSArabianRevivalist == "unset")>>
+<<if ($arcologies[$i].FSChineseRevivalist == "unset")>>
+	<<if ($leaders[$j].relationshipTarget != 0)>>
+		<<set _lover = getSlave($leaders[$j].relationshipTarget)>>
+		<<if (def _lover) && areRelated($leaders[$j], _lover)>>
 			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Egyptian Revivalism,@@ since $he's already part of a gloriously incestuous relationship.
 			<<set $arcologies[$i].FSEgyptianRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Chinese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Chinese Revivalism,@@ since $he's Chinese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSChineseRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Japanese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Edo Revivalism,@@ since $he's Japanese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSEdoRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Mexican">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Aztec Revivalism,@@ since $he's Mexican $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSAztecRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].behavioralQuirk == "confident">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Roman Revivalism,@@ since it appeals to $his confident, patrician nature.
-			<<set $arcologies[$i].FSRomanRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].fetish == "dom">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Arabian Revivalism,@@ since $he's sexually dominant and quite likes the idea of overseeing slave bazaars.
-			<<set $arcologies[$i].FSArabianRevivalist = 5>><<break>>
 		<</if>>
+	<<elseif $leaders[$j].nationality == "Chinese">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Chinese Revivalism,@@ since $he's Chinese $himself and can claim high honor in such a society.
+		<<set $arcologies[$i].FSChineseRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].nationality == "Japanese">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Edo Revivalism,@@ since $he's Japanese $himself and can claim high honor in such a society.
+		<<set $arcologies[$i].FSEdoRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].nationality == "Mexican">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Aztec Revivalism,@@ since $he's Mexican $himself and can claim high honor in such a society.
+		<<set $arcologies[$i].FSAztecRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].behavioralQuirk == "confident">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Roman Revivalism,@@ since it appeals to $his confident, patrician nature.
+		<<set $arcologies[$i].FSRomanRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].fetish == "dom">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Arabian Revivalism,@@ since $he's sexually dominant and quite likes the idea of overseeing slave bazaars.
+		<<set $arcologies[$i].FSArabianRevivalist = 5>><<break>>
 	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-<</if>> /* closes extended family mode */
+<</if>>
+<</if>>
+<</if>>
+<</if>>
+<</if>>
+<</if>>
 
 <<set _adopted = 0>> /* did not break out of the for loop, so no FS was adopted */
 <</if>>
-- 
GitLab