From 13e10c013cf58e28f06dd922a3c3ee9762dea8f3 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Fri, 27 Nov 2020 21:04:33 -0500
Subject: [PATCH] more progress

---
 src/events/intro/introSummary.js | 663 ++++++++++++++++---------
 src/events/intro/introSummary.tw | 817 +------------------------------
 2 files changed, 421 insertions(+), 1059 deletions(-)

diff --git a/src/events/intro/introSummary.js b/src/events/intro/introSummary.js
index 0fdb40cdc5a..83af801b3f2 100644
--- a/src/events/intro/introSummary.js
+++ b/src/events/intro/introSummary.js
@@ -1,115 +1,12 @@
 App.Intro.summary = function() {
 	const el = new DocumentFragment();
-	let linkArray;
-	/*
-		<style>
-		.active {
-			r.push(`background-color: grey;`);
-		}
-		</style>
-		*/
 
 	V.neighboringArcologies = variableAsNumber(V.neighboringArcologies, 0, 8, 3);
 	V.FSCreditCount = variableAsNumber(V.FSCreditCount, 4, 7, 5);
 	V.PC.actualAge = variableAsNumber(V.PC.actualAge, 14, 80, 35);
 	V.PC.birthWeek = variableAsNumber(V.PC.birthWeek, 0, 51, 0);
 
-	App.UI.DOM.append("div", `You may review your settings before clicking "Continue" to begin.`);
-
-
-	linkArray = [];
-	linkArray.push(
-		App.UI.DOM.link(
-			"Continue",
-			() => {
-				if (V.freshPC === 1 || V.saveImported === 0) {
-					switch (V.PC.career) {
-						case "wealth":
-							if (V.PC.vagina === 1) {
-								V.PC.vagina = 2;
-							}
-						case "capitalist":
-							V.PC.skill.trading = 100;
-						case "mercenary":
-							V.PC.skill.warfare = 100;
-						case "slaver":
-							V.PC.skill.slaving = 100;
-						case "engineer":
-							V.PC.skill.engineering = 100;
-						case "medicine":
-							V.PC.skill.medicine = 100;
-						case "celebrity":
-							if (V.PC.vagina === 1) {
-								V.PC.vagina = 2;
-							}
-						case "BlackHat":
-							V.PC.skill.hacking = 100;
-						case "arcology owner":
-							V.PC.skill.trading = 100, V.PC.skill.warfare = 100, V.PC.skill.hacking = 100, V.PC.skill.slaving = 100, V.PC.skill.engineering = 100, V.PC.skill.medicine = 100;
-						case "escort":
-							if (V.PC.vagina === 1) {
-								V.PC.vagina = 4;
-							}
-							V.PC.anus = 1;
-							V.PC.clothes = "a slutty outfit";
-							V.PC.education = 15;
-							V.PC.skill.trading = 50, V.PC.skill.warfare = -100, V.PC.skill.slaving = -100, V.PC.skill.engineering = -100, V.PC.skill.medicine = 10, V.PC.skill.hacking = 10;
-						case "servant":
-							V.PC.clothes = "a nice maid outfit";
-							V.PC.education = 0;
-							if (V.PC.vagina === 1) {
-								V.PC.vagina = 4;
-							}
-							V.PC.skill.trading = -100, V.PC.skill.warfare = -100, V.PC.skill.slaving = -100, V.PC.skill.engineering = -100, V.PC.skill.medicine = -100, V.PC.skill.hacking = -100;
-						case "gang":
-							if (V.PC.vagina === 1) {
-								V.PC.vagina = 2;
-							}
-							V.PC.skill.trading = 50, V.PC.skill.warfare = 50, V.PC.skill.slaving = 50, V.PC.skill.engineering = -100, V.PC.skill.medicine = 0, V.PC.skill.hacking = 50;
-					}
-				}
-				if (V.saveImported === 1 && V.freshPC === 0 && V.PC.rules.living !== "luxurious") {
-					if (V.PC.rules.living === "spare") {
-						V.PC.rules.living = "normal";
-					} else {
-						V.PC.rules.living = "luxurious";
-					}
-				} else if (V.PC.career === "wealth" || V.PC.career === "celebrity") {
-					V.PC.rules.living = "normal";
-				} else {
-					V.PC.rules.living = "spare";
-				}
-				App.Intro.initNationalities();
-				SectorCounts(); // Update AProsperityCap
-			},
-			[],
-			"Starting Girls"
-		)
-	)
-
-	if ((V.economy !== 100) || (V.seeDicks !== 25) || (V.continent !== "North America") || (V.internationalTrade !== 1) || (V.internationalVariety !== 1) || (V.seeRace !== 1) || (V.seeNationality !== 1) || (V.seeExtreme !== 0) || (V.seeCircumcision !== 1) || (V.seeAge !== 1) || (V.plot !== 1)) {
-		linkArray.push(
-			App.UI.DOM.link(
-				"restore defaults",
-				() => {
-					V.seeDicks = 25, V.economy = 100, V.continent = "North America", V.internationalTrade = 1, V.internationalVariety = 1, V.seeRace = 1, V.seeNationality = 1, V.seeExtreme = 0, V.seeCircumcision = 1, V.seeAge = 1, V.plot = 1
-				},
-				[],
-				"Intro Summary"
-			)
-		)
-	}
-	linkArray.push(
-		App.UI.DOM.link(
-			"Cheat Start",
-			() => {
-				cashX(1000000, "cheating"), V.PC.rules.living = "luxurious", repX(20000, "cheating"), V.dojo += 1, V.cheatMode = 1, V.seeDesk = 0, V.seeFCNN = 0, V.sortSlavesBy = "devotion", V.sortSlavesOrder = "descending", V.sortSlavesMain = 0, V.rulesAssistantMain = 1, V.UI.slaveSummary.abbreviation = { devotion: 1, rules: 1, clothes: 2, health: 1, diet: 1, drugs: 1, race: 1, nationality: 1, genitalia: 1, physicals: 1, skills: 1, mental: 2 }, V.PC.skill.trading = 100, V.PC.skill.warfare = 100, V.PC.skill.slaving = 100, V.PC.skill.engineering = 100, V.PC.skill.medicine = 100, V.PC.skill.hacking = 100, App.Intro.initNationalities()
-			},
-			[],
-			"Starting Girls",
-			"Intended for debugging: may have unexpected effects"
-		)
-	)
+	el.append(introContent());
 
 	V.minimumSlaveAge = variableAsNumber(V.minimumSlaveAge, 3, 18, 18);
 	V.retirementAge = variableAsNumber(V.retirementAge, 25, 120, 45);
@@ -125,6 +22,13 @@ App.Intro.summary = function() {
 	}
 
 	App.UI.tabBar.handlePreSelectedTab(V.tabChoice.IntroSummary);
+	/**
+	 * @typedef {Object} siCategory
+	 * @property {string} title
+	 * @property {string} id
+	 * @property {DocumentFragment|HTMLElement} node
+	 * @property {Function} [onClick]
+	 */
 
 	/** @type {Array<siCategory>} */
 	const buttons = [
@@ -150,18 +54,268 @@ App.Intro.summary = function() {
 		}
 	];
 
+	el.append(displayWithTabs());
+
+	return el;
+
+	function displayWithTabs() {
+		const el = new DocumentFragment();
+
+		const tabBar = document.createElement("div");
+		tabBar.classList.add("tab-bar");
+		const tabContents = new DocumentFragment();
+
+		for (const item of buttons) {
+			tabBar.append(makeTabButton(item));
+			tabContents.append(makeTabContents(item));
+		}
+
+		el.append(tabBar);
+
+		el.append(tabContents);
+
+		return el;
+
+		/**
+		 * @param {siCategory} item
+		 * @returns {HTMLElement}
+		 */
+		function makeTabButton(item) {
+			const btn = document.createElement("button");
+			btn.className = "tab-links";
+			btn.id = `tab ${item.id}`;
+			btn.innerHTML = item.title;
+			btn.onclick = (event) => {
+				App.UI.tabBar.openTab(event, item.id);
+				jQuery(`#content-${item.id}`).empty().append(item.node);
+				if (item.hasOwnProperty("onClick")){
+					item.onClick();
+				}
+			};
+
+			return btn;
+		}
+	}
+
+	/**
+	 * @param {siCategory} item
+	 * @returns {HTMLElement}
+	 */
+	function makeTabContents(item) {
+		const wrapperEl = document.createElement("div");
+		wrapperEl.id = item.id;
+		wrapperEl.classList.add("tab-content");
+
+		const classEl = document.createElement("div");
+		classEl.classList.add("content");
+
+		classEl.append(makeContentSpan(item));
+		wrapperEl.append(classEl);
+
+		return wrapperEl;
+	}
+
+	/**
+	 * @param {siCategory} item
+	 * @returns {HTMLElement}
+	 */
+	function makeContentSpan(item) {
+		const uniqueContent = document.createElement("span");
+		uniqueContent.id = `content-${item.id}`;
+
+		uniqueContent.append(item.node);
+		return uniqueContent;
+	}
+
+	function introContent() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("div", el, `You may review your settings before clicking "Continue" to begin.`);
+
+
+		const linkArray = [];
+		linkArray.push(
+			App.UI.DOM.link(
+				"Continue",
+				() => {
+					if (V.freshPC === 1 || V.saveImported === 0) {
+						switch (V.PC.career) {
+							case "wealth":
+								if (V.PC.vagina === 1) {
+									V.PC.vagina = 2;
+								}
+								break;
+							case "capitalist":
+								V.PC.skill.trading = 100;
+								break;
+							case "mercenary":
+								V.PC.skill.warfare = 100;
+								break;
+							case "slaver":
+								V.PC.skill.slaving = 100;
+								break;
+							case "engineer":
+								V.PC.skill.engineering = 100;
+								break;
+							case "medicine":
+								V.PC.skill.medicine = 100;
+								break;
+							case "celebrity":
+								if (V.PC.vagina === 1) {
+									V.PC.vagina = 2;
+								}
+								break;
+							case "BlackHat":
+								V.PC.skill.hacking = 100;
+								break;
+							case "arcology owner":
+								V.PC.skill.trading = 100;
+								V.PC.skill.warfare = 100;
+								V.PC.skill.hacking = 100;
+								V.PC.skill.slaving = 100;
+								V.PC.skill.engineering = 100;
+								V.PC.skill.medicine = 100;
+								break;
+							case "escort":
+								if (V.PC.vagina === 1) {
+									V.PC.vagina = 4;
+								}
+								V.PC.anus = 1;
+								V.PC.clothes = "a slutty outfit";
+								V.PC.education = 15;
+								V.PC.skill.trading = 50;
+								V.PC.skill.warfare = -100;
+								V.PC.skill.slaving = -100;
+								V.PC.skill.engineering = -100;
+								V.PC.skill.medicine = 10;
+								V.PC.skill.hacking = 10;
+								break;
+							case "servant":
+								V.PC.clothes = "a nice maid outfit";
+								V.PC.education = 0;
+								if (V.PC.vagina === 1) {
+									V.PC.vagina = 4;
+								}
+								V.PC.skill.trading = -100;
+								V.PC.skill.warfare = -100;
+								V.PC.skill.slaving = -100;
+								V.PC.skill.engineering = -100;
+								V.PC.skill.medicine = -100;
+								V.PC.skill.hacking = -100;
+								break;
+							case "gang":
+								if (V.PC.vagina === 1) {
+									V.PC.vagina = 2;
+								}
+								V.PC.skill.trading = 50;
+								V.PC.skill.warfare = 50;
+								V.PC.skill.slaving = 50;
+								V.PC.skill.engineering = -100;
+								V.PC.skill.medicine = 0;
+								V.PC.skill.hacking = 50;
+						}
+					}
+					if (V.saveImported === 1 && V.freshPC === 0 && V.PC.rules.living !== "luxurious") {
+						if (V.PC.rules.living === "spare") {
+							V.PC.rules.living = "normal";
+						} else {
+							V.PC.rules.living = "luxurious";
+						}
+					} else if (V.PC.career === "wealth" || V.PC.career === "celebrity") {
+						V.PC.rules.living = "normal";
+					} else {
+						V.PC.rules.living = "spare";
+					}
+					App.Intro.initNationalities();
+					SectorCounts(); // Update AProsperityCap
+				},
+				[],
+				"Starting Girls"
+			)
+		);
+
+		if ((V.economy !== 100) || (V.seeDicks !== 25) || (V.continent !== "North America") || (V.internationalTrade !== 1) || (V.internationalVariety !== 1) || (V.seeRace !== 1) || (V.seeNationality !== 1) || (V.seeExtreme !== 0) || (V.seeCircumcision !== 1) || (V.seeAge !== 1) || (V.plot !== 1)) {
+			linkArray.push(
+				App.UI.DOM.link(
+					"restore defaults",
+					() => {
+						V.seeDicks = 25;
+						V.economy = 100;
+						V.continent = "North America";
+						V.internationalTrade = 1;
+						V.internationalVariety = 1;
+						V.seeRace = 1;
+						V.seeNationality = 1;
+						V.seeExtreme = 0;
+						V.seeCircumcision = 1;
+						V.seeAge = 1;
+						V.plot = 1;
+					},
+					[],
+					"Intro Summary"
+				)
+			);
+		}
+		linkArray.push(
+			App.UI.DOM.link(
+				"Cheat Start",
+				() => {
+					cashX(1000000, "cheating");
+					V.PC.rules.living = "luxurious";
+					repX(20000, "cheating");
+					V.dojo += 1;
+					V.cheatMode = 1;
+					V.seeDesk = 0;
+					V.seeFCNN = 0;
+					V.sortSlavesBy = "devotion";
+					V.sortSlavesOrder = "descending";
+					V.sortSlavesMain = 0;
+					V.rulesAssistantMain = 1;
+					V.UI.slaveSummary.abbreviation = {
+						devotion: 1,
+						rules: 1,
+						clothes: 2,
+						health: 1,
+						diet: 1,
+						drugs: 1,
+						race: 1,
+						nationality: 1,
+						genitalia: 1,
+						physicals: 1,
+						skills: 1,
+						mental: 2
+					};
+					V.PC.skill.trading = 100;
+					V.PC.skill.warfare = 100;
+					V.PC.skill.slaving = 100;
+					V.PC.skill.engineering = 100;
+					V.PC.skill.medicine = 100;
+					V.PC.skill.hacking = 100;
+					App.Intro.initNationalities();
+				},
+				[],
+				"Starting Girls",
+				"Intended for debugging: may have unexpected effects"
+			)
+		);
+		App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray));
+
+		return el;
+	}
+
 	function worldContent() {
 		const el = new DocumentFragment();
-		App.UI.DOM.appendNewElement("h2", el, "Economy")
+		App.UI.DOM.appendNewElement("h2", el, "Economy");
 
 		let _options = new App.UI.OptionsGroup();
 		let _option;
 
 		V.localEcon = V.economy;
 		_options.addOption("Economic climate", "baseDifficulty")
-			.addValue("Very Easy", 1, () => V.economy = 200).addValue("Easy", 2, () => V.economy = 125)
-			.addValue("Default Difficulty", 3, () => V.economy = 100).addValue("Hard", 4, () => V.economy = 80)
-			.addValue("Very Hard", 5, () => V.economy = 67)
+			.addValue("Very Easy", 1, () => V.economy = 200)
+			.addValue("Easy", 2, () => V.economy = 125)
+			.addValue("Default Difficulty", 3, () => V.economy = 100)
+			.addValue("Hard", 4, () => V.economy = 80)
+			.addValue("Very Hard", 5, () => V.economy = 67);
 
 		if (V.difficultySwitch === 1) {
 			V.econAdvantage = -2;
@@ -170,8 +324,10 @@ App.Intro.summary = function() {
 			V.econRate = 0;
 		}
 		_options.addOption("Economic forecast", "econRate").addComment("Some economic content requires this to be set to harder than vanilla")
-			.addValue("Vanilla", 0, () => V.difficultySwitch = 0).addValue("Easy", 1, () => V.difficultySwitch = 1)
-			.addValue("Default", 2, () => V.difficultySwitch = 1).addValue("Hard", 3, () => V.difficultySwitch = 1)
+			.addValue("Vanilla", 0, () => V.difficultySwitch = 0)
+			.addValue("Easy", 1, () => V.difficultySwitch = 1)
+			.addValue("Default", 2, () => V.difficultySwitch = 1)
+			.addValue("Hard", 3, () => V.difficultySwitch = 1);
 
 		/* Not functional yet
 		All the things you need to run your arcology are getting more expensive
@@ -195,44 +351,43 @@ App.Intro.summary = function() {
 
 		if (!V.customVariety) {
 			_options.addOption("You are using standardized slave trading channels.")
-				.customButton("Customize the slave trade", () => { V.customVariety = 1; V.customWA = 0 }, "Customize Slave Trade")
+				.customButton("Customize the slave trade", () => { V.customVariety = 1; V.customWA = 0; }, "Customize Slave Trade");
 
 			_options.addOption("", "internationalTrade")
 				.addValue("Allow intercontinental trade", 1).on().customDescription("The slave trade is ''international,'' so a wider variety of slaves will be available.")
-				.addValue("Restrict the trade to continental", 0).off().customDescription("The slave trade is ''continental,'' so a narrower variety of slaves will be available.")
+				.addValue("Restrict the trade to continental", 0).off().customDescription("The slave trade is ''continental,'' so a narrower variety of slaves will be available.");
 
 			if (V.internationalTrade === 1) {
 				_options.addOption("International slave variety is", "internationalVariety")
 					.addValue("Normalized national variety", 1).customDescription("''normalized,'' so small nations will appear nearly as much as large ones.")
-					.addValue("Semi-realistic national variety", 0).customDescription("''semi-realistic,'' so more populous nations will be more common.")
+					.addValue("Semi-realistic national variety", 0).customDescription("''semi-realistic,'' so more populous nations will be more common.");
 			}
 		} else {
 			_options.addOption("Nationality distributions are customized.")
-				.customButton("Adjust the slave trade", () => { V.customWA = 0; V.customVariety = 1 }, "Customize Slave Trade")
-				.customButton("Stop customizing", () => { delete V.customVariety })
+				.customButton("Adjust the slave trade", () => { V.customWA = 0; V.customVariety = 1; }, "Customize Slave Trade")
+				.customButton("Stop customizing", () => { delete V.customVariety; });
 
-			//TODO: can we really simplify like this?
+			// TODO: can we really simplify like this?
 			el.append(App.UI.nationalitiesDisplay());
-
 		}
 		/* closes V.customVariety is defined */
 
 		_options.addOption("", "plot")
 			.addValue("Enable non-erotic events", 1).on().customDescription("Game mode: ''two-handed''. Includes non-erotic events concerning the changing world.")
-			.addValue("Disable non-erotic events", 0).off().customDescription("Game mode: ''one-handed''. No non-erotic events concerning the changing world.")
+			.addValue("Disable non-erotic events", 0).off().customDescription("Game mode: ''one-handed''. No non-erotic events concerning the changing world.");
 
 		el.append(_options.render());
 
 
-		App.UI.DOM.appendNewElement("h2", el, "The Free City")
+		App.UI.DOM.appendNewElement("h2", el, "The Free City");
 		_options = new App.UI.OptionsGroup();
 
 		_options.addOption(`The Free City features ''${V.neighboringArcologies}'' arcologies in addition to your own.`, "neighboringArcologies")
-			.showTextBox().addComment("Setting this to 0 will disable most content involving the rest of the Free City.")
+			.showTextBox().addComment("Setting this to 0 will disable most content involving the rest of the Free City.");
 
 		if (V.targetArcology.fs === "New") {
 			_options.addOption("The Free City is located on ''V.terrain'' terrain.", "terrain")
-				.addValueList([["Urban", "urban"], ["Rural", "rural"], ["Ravine", "ravine"], ["Marine", "marine"], ["Oceanic", "oceanic"]])
+				.addValueList([["Urban", "urban"], ["Rural", "rural"], ["Ravine", "ravine"], ["Marine", "marine"], ["Oceanic", "oceanic"]]);
 
 			if (V.terrain !== "oceanic") {
 				_option = _options.addOption(`The Free City is located in ''${V.continent}''.`, "continent")
@@ -248,22 +403,22 @@ App.Intro.summary = function() {
 					.addValue("Africa").addCallback(() => V.language = "Arabic")
 					.addValue("Asia").addCallback(() => V.language = "Chinese")
 					.addValue("Australia").addCallback(() => V.language = "English")
-					.addValue("Japan").addCallback(() => V.language = "Japanese")
+					.addValue("Japan").addCallback(() => V.language = "Japanese");
 			}
 
 			_options.addOption("The lingua franca of your arcology is", "language")
-				.showTextBox()
+				.showTextBox();
 		} else if (!["ArabianRevivalist", "AztecRevivalist", "ChineseRevivalist", "EdoRevivalist", "EgyptianRevivalist", "RomanRevivalist"].includes(V.targetArcology.fs)) {
 			_options.addOption("The lingua franca of your arcology is", "language")
-				.addValueList(["English", "Spanish", "Arabic"]).showTextBox()
+				.addValueList(["English", "Spanish", "Arabic"]).showTextBox();
 		}
 
 		_options.addOption("The Free City could develop as many as ''V.FSCreditCount'' future societies.", "FSCreditCount")
-			.showTextBox().addComment("5 is default, 4 behaves the same as pre-patch 0.9.9.0, max is 7. This option cannot be changed during the game.")
+			.showTextBox().addComment("5 is default, 4 behaves the same as pre-patch 0.9.9.0, max is 7. This option cannot be changed during the game.");
 
 		el.append(_options.render());
 
-		App.UI.DOM.appendNewElement("h2", el, "Content")
+		App.UI.DOM.appendNewElement("h2", el, "Content");
 		_options = new App.UI.OptionsGroup();
 
 		_options.addOption("Proportion of slave girls with dicks", "seeDicks")
@@ -277,138 +432,137 @@ App.Intro.summary = function() {
 				["Most (90%)", 90],
 				["Almost all (99%)", 99],
 				["All (100%)", 100]
-			])
+			]);
 
 		if (V.seeDicks === 0) {
 			_options.addOption("Should you be able to surgically attach a penis to your female slaves and starting girls?", "makeDicks")
-				.addValue("Yes", 1).on().addValue("No", 0).off()
+				.addValue("Yes", 1).on().addValue("No", 0).off();
 		}
 
 		_options.addOption("Slaves getting sick is", "seeIllness")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Pregnancy related content is", "seePreg")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Children born in game strictly adhering to dick content settings is", "seeDicksAffectsPregnancy")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		if (V.seeDicksAffectsPregnancy === 0) {
 			_options.addOption("XX slaves only fathering daughters is", "adamPrinciple")
-				.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+				.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 		}
 
 		_options.addOption("Extreme pregnancy content like broodmothers is", "seeHyperPreg")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Advanced pregnancy complications such as miscarriage and premature birth are", "dangerousPregnancy")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Extreme content like amputation is", "seeExtreme")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Bestiality content is", "seeBestiality")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Watersports content is", "seePee")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Incest is", "seeIncest")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 
 		if (V.seeDicks !== 0 || V.makeDicks !== 0) {
 			_options.addOption("Circumcision is", "seeCircumcision")
-				.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+				.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 		}
 
 		el.append(_options.render());
 
-		App.UI.DOM.appendNewElement("h2", el, "Mods")
+		App.UI.DOM.appendNewElement("h2", el, "Mods");
 
 		_options = new App.UI.OptionsGroup();
 
 		_options.addOption("The Special Force Mod is", "Toggle", V.SF)
 			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
 			.addComment(`This mod is initially from anon1888 but expanded by SFanon offers a lategame special (started out as security but changed to special in order to try and reduce confusion with CrimeAnon's separate Security Expansion (SecExp) mod) force, that is triggered after week 72.
-		It is non-canon where it conflicts with canonical updates to the base game.`)
+		It is non-canon where it conflicts with canonical updates to the base game.`);
 
 		_options.addOption("The Security Expansion Mod is", "secExpEnabled")
 			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
 			.addComment(`This mod introduces security and crime in the arcology, as well as attacks and battles.
-		The mod can be activated in any moment, but it may result in unbalanced gameplay if activated very late in the game.`)
+		The mod can be activated in any moment, but it may result in unbalanced gameplay if activated very late in the game.`);
 
 		el.append(_options.render());
 		return el;
 	}
 
 	function slavesContent() {
-
 		let _options = new App.UI.OptionsGroup();
 
 		_options.addOption("Master Suite report details such as slave changes are", "verboseDescriptions")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Slaves can have alternate titles", "newDescriptions")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Mention ethnicity", "seeRace")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Mention nationality", "seeNationality")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Dynasties of enslaved royalties are", "realRoyalties")
-			.addValueList([["Historical", 1], ["Random", 0]])
+			.addValueList([["Historical", 1], ["Random", 0]]);
 
 		_options.addOption("New slaves may have male names", "allowMaleSlaveNames").addComment("This only affects slave generation and not your ability to name your slaves.")
-			.addValue("Enabled", true).on().addValue("Disabled", false).off()
+			.addValue("Enabled", true).on().addValue("Disabled", false).off();
 
 		_options.addOption("Schema for ordering slave names is", "surnameOrder")
-			.addValueList([["Country of origin", 0], ["Name Surname", 1], ["Surname Name", 2]])
+			.addValueList([["Country of origin", 0], ["Name Surname", 1], ["Surname Name", 2]]);
 
 		_options.addOption("Family size", "limitFamilies").addComment("Controls acquisition of additional relatives, by means other than birth, for slaves with families.")
-			.addValue("Allow extended families", 0).on().addValue("Restrict family size (Vanilla Emulation)", 1).off()
+			.addValue("Allow extended families", 0).on().addValue("Restrict family size (Vanilla Emulation)", 1).off();
 
 		_options.addOption("Tracking distant relatives is", "showDistantRelatives")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Successive breeding resulting in sub-average slaves is", "inbreeding")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Family titles for relatives", "allowFamilyTitles")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Slave assets affected by weight is", "weightAffectsAssets")
 			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
-			.addComment("Diet will still affect asset size.")
+			.addComment("Diet will still affect asset size.");
 
 		_options.addOption("Curative side effects are", "curativeSideEffects")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Slaves with fat lips or heavy oral piercings may lisp", "disableLisping")
-			.addValue("Yes", 0).on().addValue("No", 1).off()
+			.addValue("Yes", 0).on().addValue("No", 1).off();
 
 		el.append(_options.render());
 
-		App.UI.DOM.appendNewElement("h2", el, "Age")
+		App.UI.DOM.appendNewElement("h2", el, "Age");
 		_options = new App.UI.OptionsGroup();
 
 		_options.addOption("Slave aging", "seeAge")
-			.addValue("Enabled", 1).on().addValue("Celebrate birthdays, but don't age.", 2).neutral().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Celebrate birthdays, but don't age.", 2).neutral().addValue("Disabled", 0).off();
 
 		_options.addOption("Slave age distribution", "pedo_mode").addComment("In loli mode most new slaves are under the age of 18. May not apply to custom slaves and slaves from specific events.")
-			.addValue("Loli mode", 1, () => V.minimumSlaveAge = 5).addValue("Normal mode", 0)
+			.addValue("Loli mode", 1, () => V.minimumSlaveAge = 5).addValue("Normal mode", 0);
 
 		V.minimumSlaveAge = Math.clamp(V.minimumSlaveAge, 3, 18);
 		_options.addOption("Girls appearing in the game will be no younger than", "minimumSlaveAge").showTextBox();
 
 		_options.addOption("Molestation of slaves younger than V.minimumSlaveAge is", "extremeUnderage")
-			.addValue("Permitted", 1).on().addValue("Forbidden", 0).off()
+			.addValue("Permitted", 1).on().addValue("Forbidden", 0).off();
 
 		V.retirementAge = Math.clamp(V.retirementAge, V.minimumSlaveAge + 1, 120);
 		_options.addOption("Initial retirement age will be at", "retirementAge")
-			.addComment("May cause issues with New Game and initial slaves if set below 45.").showTextBox()
+			.addComment("May cause issues with New Game and initial slaves if set below 45.").showTextBox();
 
 		V.fertilityAge = Math.clamp(V.fertilityAge, 3, 18);
 		_options.addOption("Girls will not be able to become pregnant if their age is under", "fertilityAge").showTextBox();
@@ -417,15 +571,15 @@ App.Intro.summary = function() {
 		_options.addOption("Girls will not be able to impregnate others if their age is under", "potencyAge").showTextBox();
 
 		_options.addOption("Precocious puberty is", "precociousPuberty").addComment("Under certain conditions they can become pregnant or inseminate others younger then normal age - V.fertilityAge, though they may also experience delayed puberty.")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Age penalties are", "AgePenalty").addComment("Job and career penalties due to age.")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		_options.addOption("Children growing as they age is", "loliGrow")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
-		el.append(_options.render())
+		el.append(_options.render());
 
 		return el;
 	}
@@ -435,57 +589,59 @@ App.Intro.summary = function() {
 		let _options = new App.UI.OptionsGroup();
 		let _option;
 		let r;
+		let linkArray;
 
 		if (V.freshPC === 1 || V.saveImported === 0) {
 			_options.addOption("You are a", "title", V.PC)
-				.addValue("Masculine Master", 1, () => V.PC.genes = "XY").addValue("Feminine Mistress", 0, () => V.PC.genes = "XX")
+				.addValue("Masculine Master", 1, () => V.PC.genes = "XY").addValue("Feminine Mistress", 0, () => V.PC.genes = "XX");
 
-			_options.addOption(`Everyone calls you <b>${V.PlayerName()}.</b>`);
+			_options.addOption(`Everyone calls you <b>${PlayerName()}.</b>`);
 			_options.addOption("Your given name is", "slaveName", V.PC).showTextBox();
 
 			if (V.PC.slaveSurname === 0) {
 				_option = _options.addOption("And no surname", "slaveSurname", V.PC)
 					.addValue("Add a surname", "Anon")
-					.addComment("Surnames cannot be changed during the game outside of special circumstances.")
+					.addComment("Surnames cannot be changed during the game outside of special circumstances.");
 			} else {
 				_option = _options.addOption("And your surname is", "slaveSurname", V.PC).showTextBox()
 					.addValue("Go by a single name", 0)
-					.addComment("Surnames cannot be changed during the game outside of special circumstances.")
+					.addComment("Surnames cannot be changed during the game outside of special circumstances.");
 			}
 
-			V.PC.physicalAge = V.PC.actualAge, V.PC.visualAge = V.PC.actualAge;
+			V.PC.physicalAge = V.PC.actualAge;
+			V.PC.visualAge = V.PC.actualAge;
 			_options.addOption("You are", "actualAge", V.PC).showTextBox()
 				.addRange(25, 35, "<", "Surprisingly young").addRange(40, 50, "<", "Entering middle age")
-				.addRange(55, 65, "<", "Well into middle age").addRange(70, 65, ">=", "Old")
+				.addRange(55, 65, "<", "Well into middle age").addRange(70, 65, ">=", "Old");
 
 			_options.addOption("Your birthday was ''V.PC.birthWeek'' weeks ago.", "birthWeek", V.PC).showTextBox();
 
 			_options.addOption("Player aging is", "playerAging")
 				.addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off()
-				.addComment("This option cannot be changed during the game.")
+				.addComment("This option cannot be changed during the game.");
 
 			if (V.PC.customTitle) {
 				_options.addOption("Custom title", "customTitle", V.PC).showTextBox()
-					.addValue("Reset to default", "", () => { delete V.PC.customTitle; delete V.PC.customTitleLisp; })
+					.addValue("Reset to default", "", () => { delete V.PC.customTitle; delete V.PC.customTitleLisp; });
 
 				_options.addOption("Lisped custom title", "customTitleLisp", V.PC).showTextBox()
-					.addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.')
+					.addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.');
 			} else {
 				_options.addOption("Custom title", "customTitle", V.PC)
-					.addValue("Set custom title", "Master", () => V.PC.customTitleLisp = 'Mather')
+					.addValue("Set custom title", "Master", () => V.PC.customTitleLisp = 'Mather');
 			}
 
 			App.Intro.pcAppearance(_options);
 
 			_options.addOption("Your face is", "faceShape", V.PC)
-				.addValueList([["Normal", "normal"], ["Androgynous", "androgynous"], ["Masculine", "masculine"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]])
+				.addValueList([["Normal", "normal"], ["Androgynous", "androgynous"], ["Masculine", "masculine"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]]);
 
 			_options.addOption("Your preferred refreshment is", "refreshment", V.PC).showTextBox()
-				.addValue("Cigars", "cigar", () => { V.PC.refreshmentType = 0 })
-				.addValue("Whiskey", "whiskey", () => { V.PC.refreshmentType = 1 })
+				.addValue("Cigars", "cigar", () => { V.PC.refreshmentType = 0; })
+				.addValue("Whiskey", "whiskey", () => { V.PC.refreshmentType = 1; });
 
 			_option = _options.addOption("Which you", "refreshmentType", V.PC)
-				.addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]])
+				.addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]]);
 
 			if (V.PC.refreshmentType === 0) {
 				_option.addComment('"Smoked" must fit into the following sentence: "I smoked a V.PC.refreshment" to fit events properly.');
@@ -500,31 +656,41 @@ App.Intro.summary = function() {
 				_option.addValue("Arcology owner", "arcology owner");
 			} else {
 				_option.addValueList([["Member of the idle wealthy", "wealth"], ["Business leader", "capitalist"],
-				["Mercenary", "mercenary"], ["Slaver", "slaver"], ["Engineer", "engineer"], ["Doctor", "medicine"], ["Hacker", "BlackHat"],
-				["Minor celebrity", "celebrity"], ["Escort", "escort"], ["Servant", "servant"], ["Gang leader", "gang"]]
-				)
+					["Mercenary", "mercenary"], ["Slaver", "slaver"], ["Engineer", "engineer"], ["Doctor", "medicine"], ["Hacker", "BlackHat"],
+					["Minor celebrity", "celebrity"], ["Escort", "escort"], ["Servant", "servant"], ["Gang leader", "gang"]]
+				);
 				if (V.secExpEnabled > 0) {
 					switch (V.PC.career) {
 						case "capitalist":
-							_option.addComment("<div><span class="yellowgreen">The propaganda hub's upgrades will be cheaper.</span></div>");
+							_option.addComment(`<div><span class="yellowgreen">The propaganda hub's upgrades will be cheaper.</span></div>`);
+							break;
 						case "mercenary":
 							_option.addComment(`<div><span class="green">Easier to maintain security</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`);
+							break;
 						case "slaver":
 							_option.addComment(`<div><span class="green">Easier to maintain authority</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`);
+							break;
 						case "engineer":
 							_option.addComment(`<div><span class="yellowgreen">construction and upgrade of facilities will be cheaper.</span></div>`);
+							break;
 						case "medicine":
 							_option.addComment(`<div><span class="yellowgreen">Drug upgrades will be cheaper.</span></div>`);
+							break;
 						case "celebrity":
 							_option.addComment(`<div><span class="yellowgreen">The propaganda hub's upgrades will be cheaper.</span></div>`);
+							break;
 						case "escort":
 							_option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`);
+							break;
 						case "servant":
 							_option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`);
+							break;
 						case "gang":
 							_option.addComment(`<div><span class="green">Easier to maintain authority</span> and <span class="yellowgreen">the security HQ's upgrades will be cheaper.</span></div>`);
+							break;
 						case "BlackHat":
 							_option.addComment(`<div><span class="red">Harder to maintain authority.</span></div>`);
+							break;
 						default:
 							_option.addComment(`<div><span class="red">Harder to maintain authority,</span> but <span class="yellowgreen">the propaganda hub's upgrades will be cheaper.</span></div>`);
 					}
@@ -533,23 +699,22 @@ App.Intro.summary = function() {
 
 			_options.addOption("It is rumored that you acquired your arcology through", "rumor", V.PC)
 				.addValueList([["Wealth", "wealth"], ["Hard work", "diligence"], ["Force", "force"], ["Social engineering", "social engineering"], ["Blind luck", "luck"]]
-				)
+				);
 
 			el.append(_options.render());
 
-			App.UI.DOM.appendNewElement("h2", el, "Sexuality")
+			App.UI.DOM.appendNewElement("h2", el, "Sexuality");
 			_options = new App.UI.OptionsGroup();
 
-			let _vagina_penis;
 			if (V.PC.vagina !== -1 && V.PC.dick !== 0) {
-				_vagina_penis = 2;
+				State.temporary.vaginaPenis = 2;
 			} else if (V.PC.vagina !== -1) {
-				_vagina_penis = 1;
+				State.temporary.vaginaPenis = 1;
 			} else {
-				_vagina_penis = 0;
+				State.temporary.vaginaPenis = 0;
 			}
 
-			_option = _options.addOption("You have a", "vagina_penis", State.temporary)
+			_option = _options.addOption("You have a", "vaginaPenis", State.temporary)
 				.addValue("Penis", 0, () => {
 					V.PC.preg = 0;
 					V.PC.pregType = 0;
@@ -565,18 +730,18 @@ App.Intro.summary = function() {
 					V.PC.scrotum = 0;
 					V.PC.prostate = 0;
 					V.PC.vagina = 1;
-					V.PC.ovaries = 1
+					V.PC.ovaries = 1;
 				}).addValue("Penis and Vagina", 2, () => {
 					V.PC.dick = 4;
 					V.PC.balls = 3;
 					V.PC.scrotum = 3;
 					V.PC.prostate = 1;
 					V.PC.vagina = 1;
-					V.PC.ovaries = 1
-				})
-			if (_vagina_penis === 0) {
+					V.PC.ovaries = 1;
+				});
+			if (State.temporary.vaginaPenis === 0) {
 				_option.addComment("Standard sex scenes; easiest reputation maintenance.");
-			} else if (_vagina_penis === 1) {
+			} else if (State.temporary.vaginaPenis === 1) {
 				_option.addComment("Sex scene variations; most difficult reputation maintenance.");
 			} else {
 				_option.addComment("Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts.");
@@ -588,7 +753,7 @@ App.Intro.summary = function() {
 					.addValue("Not taking contraceptives", 0, () => { V.PC.pregType = 0; V.PC.labor = 0; })
 					.addRange(16, 37, "<=", "Pregnant").addCallback(() => { V.PC.pregType = 1; V.PC.labor = 0; })
 					.addRange(40, 42, "<=", "Ready to drop").addCallback(() => { V.PC.pregType = 1; V.PC.labor = 0; })
-					.addRange(43, 42, ">", "Ready to drop with octuplets").addCallback(() => { V.PC.pregType = 8; V.PC.labor = 1; })
+					.addRange(43, 42, ">", "Ready to drop with octuplets").addCallback(() => { V.PC.pregType = 8; V.PC.labor = 1; });
 				if (V.PC.preg === -1) {
 					_option.addComment("You can't get pregnant, however there will be a slight increase to living expenses.");
 				}
@@ -598,7 +763,7 @@ App.Intro.summary = function() {
 				}
 
 				_option = _options.addOption("Hormone effects", "pregMood", V.PC)
-					.addValueList([["None", 0], ["Caring and motherly", 1], ["Aggressive and domineering", 2]])
+					.addValueList([["None", 0], ["Caring and motherly", 1], ["Aggressive and domineering", 2]]);
 				if (V.PC.pregMood === 1) {
 					_option.addComment("Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy.");
 				} else if (V.PC.pregMood === 2) {
@@ -615,7 +780,7 @@ App.Intro.summary = function() {
 
 			if (V.PC.boobs >= 500) {
 				_options.addOption("Your breasts are", "boobsImplant", V.PC)
-					.addValueList([["All natural", 0], ["Fake", 400]])
+					.addValueList([["All natural", 0], ["Fake", 400]]);
 			}
 
 			el.append(_options.render());
@@ -656,25 +821,25 @@ App.Intro.summary = function() {
 			_options = new App.UI.OptionsGroup();
 			_options.addOption("Player aging is", "playerAging")
 				.addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off()
-				.addComment("This option cannot be changed during the game.")
+				.addComment("This option cannot be changed during the game.");
 
 			if (V.PC.customTitle) {
 				_options.addOption("Custom title", "customTitle", V.PC).showTextBox()
-					.addValue("Reset to default", "", () => { delete V.PC.customTitle; delete V.PC.customTitleLisp; })
+					.addValue("Reset to default", "", () => { delete V.PC.customTitle; delete V.PC.customTitleLisp; });
 
 				_options.addOption("Lisped custom title", "customTitleLisp", V.PC).showTextBox()
-					.addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.')
+					.addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.');
 			} else {
 				_options.addOption("Custom title", "customTitle", V.PC)
-					.addValue("Set custom title", "Master", () => V.PC.customTitleLisp = 'Mather')
+					.addValue("Set custom title", "Master", () => V.PC.customTitleLisp = 'Mather');
 			}
 
 			_options.addOption("Your preferred refreshment is", "refreshment", V.PC).showTextBox()
-				.addValue("Cigars", "cigar", () => {V.PC.refreshmentType = 0 })
-				.addValue("Whiskey", "whiskey", () => {V.PC.refreshmentType = 1 })
+				.addValue("Cigars", "cigar", () => { V.PC.refreshmentType = 0; })
+				.addValue("Whiskey", "whiskey", () => { V.PC.refreshmentType = 1; });
 
 			_option = _options.addOption("Which you", "refreshmentType", V.PC)
-				.addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]])
+				.addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]]);
 
 			if (V.PC.refreshmentType === 0) {
 				_option.addComment('"Smoked" must fit into the following sentence: "I smoked a V.PC.refreshment" to fit events properly.');
@@ -689,24 +854,34 @@ App.Intro.summary = function() {
 			switch (V.PC.career) {
 				case "wealth":
 					r.push(`Prior to being an arcology owner, you were a member of the idle wealthy.`);
+					break;
 				case "capitalist":
 					r.push(`Prior to being an arcology owner, you were a business leader.`);
+					break;
 				case "mercenary":
 					r.push(`Prior to being an arcology owner, you were a mercenary.`);
+					break;
 				case "slaver":
 					r.push(`Prior to being an arcology owner, you were a slaver.`);
+					break;
 				case "engineer":
 					r.push(`Prior to being an arcology owner, you were an engineer.`);
+					break;
 				case "medicine":
 					r.push(`Prior to being an arcology owner, you were a surgeon.`);
+					break;
 				case "celebrity":
 					r.push(`Prior to being an arcology owner, you were a minor celebrity.`);
+					break;
 				case "BlackHat":
 					r.push(`Prior to being an arcology owner, you specialized in cracking databases and making mockeries of cyber security.`);
+					break;
 				case "arcology owner":
 					r.push(`Being an arcology owner defines your life now.`);
+					break;
 				case "escort":
 					r.push(`Prior to being an arcology owner, you knew how to survive off your looks and body.`);
+					break;
 				case "servant":
 					r.push(`Prior to being an arcology owner, you served a well-off`);
 					if (V.PC.counter.birthMaster >= 2) {
@@ -714,22 +889,29 @@ App.Intro.summary = function() {
 					} else {
 						r.push(`master.`);
 					}
+					break;
 				case "gang":
 					r.push(`Prior to being an arcology owner, you were the leader of a ruthless gang.`);
+					break;
 			}
 
 			r.push(`Word in the arcology is you acquired it through`);
 			switch (V.PC.rumor) {
 				case "wealth":
 					r.push(`a rather ridiculous amount of money.`);
+					break;
 				case "diligence":
 					r.push(`sheer effort.`);
+					break;
 				case "force":
 					r.push(`brutal force.`);
+					break;
 				case "social engineering":
 					r.push(`clever social manipulation.`);
+					break;
 				case "luck":
 					r.push(`blind luck.`);
+					break;
 			}
 			App.Events.addNode(el, r, "p");
 
@@ -773,7 +955,7 @@ App.Intro.summary = function() {
 				} else {
 					if (V.PC.pregMood === 1) {
 						r.push(`You tend to be caring and motherly when you're hormonal.`);
-						linkArray.push(noChange(),aggressive());
+						linkArray.push(noChange(), aggressive());
 					} else if (V.PC.pregMood === 0) {
 						r.push(`Your mood isn't tied to your hormones.`);
 						linkArray.push(motherly(), aggressive());
@@ -783,32 +965,6 @@ App.Intro.summary = function() {
 					}
 				}
 
-				function noChange() {
-					return App.UI.DOM.link(
-						"Change to no change",
-						() => {V.PC.pregMood = 0},
-						[],
-						"Intro Summary"
-					)
-				}
-
-				function motherly() {
-					return App.UI.DOM.link(
-						"Change to motherly",
-						() => {V.PC.pregMood = 1},
-						[],
-						"Intro Summary"
-					)
-				}
-
-				function aggressive() {
-					return App.UI.DOM.link(
-						"Change to aggressive",
-						() => {V.PC.pregMood = 2},
-						[],
-						"Intro Summary"
-					)
-				}
 				r.push(App.UI.DOM.generateLinksStrip(linkArray));
 				if (V.PC.counter.birthsTotal > 0) {
 					r.push(`You have given birth to ${V.PC.counter.birthsTotal} babies.`);
@@ -865,31 +1021,52 @@ App.Intro.summary = function() {
 
 		_options.addOption("Help tooltips are", "tooltipsEnabled")
 			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
-			.addComment(`This is mostly for new players. <span class="exampleTooltip.noteworthy">Colored text</span> can have tooltips.`)
+			.addComment(`This is mostly for new players. <span class="exampleTooltip.noteworthy">Colored text</span> can have tooltips.`);
 
 		_options.addOption("Accordion on week end defaults to", "useAccordion")
-			.addValue("Open", 0).on().addValue("Collapsed", 1).off()
+			.addValue("Open", 0).on().addValue("Collapsed", 1).off();
 
 		_options.addOption("Economic Tabs on weekly reports are", "useTabs")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
 		el.append(_options.render());
 
-		App.UI.DOM.appendNewElement("h2", el, "Images")
+		App.UI.DOM.appendNewElement("h2", el, "Images");
 		_options = new App.UI.OptionsGroup();
 
 		_options.addOption("Images are", "seeImages")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
-		el.append(_options.render())
+		el.append(_options.render());
 
 		el.append(App.UI.artOptions());
 		return el;
 	}
 
+	function noChange() {
+		return App.UI.DOM.link(
+			"Change to no change",
+			() => { V.PC.pregMood = 0; },
+			[],
+			"Intro Summary"
+		);
+	}
 
+	function motherly() {
+		return App.UI.DOM.link(
+			"Change to motherly",
+			() => { V.PC.pregMood = 1; },
+			[],
+			"Intro Summary"
+		);
+	}
 
-
-
-
-};
\ No newline at end of file
+	function aggressive() {
+		return App.UI.DOM.link(
+			"Change to aggressive",
+			() => { V.PC.pregMood = 2; },
+			[],
+			"Intro Summary"
+		);
+	}
+};
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index 3082ebac9ea..27d3c57173f 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -1,818 +1,3 @@
 :: Intro Summary [nobr]
 
-<style>
-.active {
-	background-color: grey;
-}
-</style>
-
-<<set $neighboringArcologies = variableAsNumber($neighboringArcologies, 0, 8, 3)>>
-<<set $FSCreditCount = variableAsNumber($FSCreditCount, 4, 7, 5)>>
-<<set $PC.actualAge = variableAsNumber($PC.actualAge, 14, 80, 35)>>
-<<set $PC.birthWeek = variableAsNumber($PC.birthWeek, 0, 51, 0)>>
-
-You may review your settings before clicking "Continue" to begin.<br>
-<<link "Continue" "Starting Girls">>
-	<<if $freshPC == 1 || $saveImported == 0>>
-		<<switch $PC.career>>
-		<<case "wealth">>
-			<<if $PC.vagina == 1>>
-				<<set $PC.vagina = 2>>
-			<</if>>
-		<<case "capitalist">>
-			<<set $PC.skill.trading = 100>>
-		<<case "mercenary">>
-			<<set $PC.skill.warfare = 100>>
-		<<case "slaver">>
-			<<set $PC.skill.slaving = 100>>
-		<<case "engineer">>
-			<<set $PC.skill.engineering = 100>>
-		<<case "medicine">>
-			<<set $PC.skill.medicine = 100>>
-		<<case "celebrity">>
-			<<if $PC.vagina == 1>>
-				<<set $PC.vagina = 2>>
-			<</if>>
-		<<case "BlackHat">>
-			<<set $PC.skill.hacking = 100>>
-		<<case "arcology owner">>
-			<<set $PC.skill.trading = 100, $PC.skill.warfare = 100, $PC.skill.hacking = 100, $PC.skill.slaving = 100, $PC.skill.engineering = 100, $PC.skill.medicine = 100>>
-		<<case "escort">>
-			<<if $PC.vagina == 1>>
-				<<set $PC.vagina = 4>>
-			<</if>>
-			<<set $PC.anus = 1>>
-			<<set $PC.clothes = "a slutty outfit">>
-			<<set $PC.education = 15>>
-			<<set $PC.skill.trading = 50, $PC.skill.warfare = -100, $PC.skill.slaving = -100, $PC.skill.engineering = -100, $PC.skill.medicine = 10, $PC.skill.hacking = 10>>
-		<<case "servant">>
-			<<set $PC.clothes = "a nice maid outfit">>
-			<<set $PC.education = 0>>
-			<<if $PC.vagina == 1>>
-				<<set $PC.vagina = 4>>
-			<</if>>
-			<<set $PC.skill.trading = -100, $PC.skill.warfare = -100, $PC.skill.slaving = -100, $PC.skill.engineering = -100, $PC.skill.medicine = -100, $PC.skill.hacking = -100>>
-		<<case "gang">>
-			<<if $PC.vagina == 1>>
-				<<set $PC.vagina = 2>>
-			<</if>>
-			<<set $PC.skill.trading = 50, $PC.skill.warfare = 50, $PC.skill.slaving = 50, $PC.skill.engineering = -100, $PC.skill.medicine = 0, $PC.skill.hacking = 50>>
-		<</switch>>
-	<</if>>
-	<<if $saveImported == 1 && $freshPC == 0 && $PC.rules.living != "luxurious">>
-		<<if $PC.rules.living == "spare">>
-			<<set $PC.rules.living = "normal">>
-		<<else>>
-			<<set $PC.rules.living = "luxurious">>
-		<</if>>
-	<<elseif $PC.career == "wealth" || $PC.career == "celebrity">>
-		<<set $PC.rules.living = "normal">>
-	<<else>>
-		<<set $PC.rules.living = "spare">>
-	<</if>>
-	<<run App.Intro.initNationalities()>>
-	<<run SectorCounts()>> /* Update AProsperityCap */
-<</link>>
-<<if ($economy != 100) || ($seeDicks != 25) || ($continent != "North America") || ($internationalTrade != 1) || ($internationalVariety != 1) || ($seeRace != 1) || ($seeNationality != 1) || ($seeExtreme != 0) || ($seeCircumcision != 1) || ($seeAge != 1) || ($plot != 1)>>
-	| [[restore defaults|Intro Summary][$seeDicks = 25, $economy = 100, $continent = "North America", $internationalTrade = 1, $internationalVariety = 1, $seeRace = 1, $seeNationality = 1, $seeExtreme = 0, $seeCircumcision = 1, $seeAge = 1, $plot = 1]]
-<</if>>
-	| [[Cheat Start|Starting Girls][cashX(1000000, "cheating"), $PC.rules.living = "luxurious",repX(20000, "cheating"), $dojo += 1, $cheatMode = 1, $seeDesk = 0, $seeFCNN = 0, $sortSlavesBy = "devotion", $sortSlavesOrder = "descending", $sortSlavesMain = 0, $rulesAssistantMain = 1, $UI.slaveSummary.abbreviation = {devotion: 1, rules: 1, clothes: 2, health: 1, diet: 1, drugs: 1, race: 1, nationality: 1, genitalia: 1, physicals: 1, skills: 1, mental: 2}, $PC.skill.trading = 100, $PC.skill.warfare = 100, $PC.skill.slaving = 100, $PC.skill.engineering = 100, $PC.skill.medicine = 100, $PC.skill.hacking = 100, App.Intro.initNationalities()]] //Intended for debugging: may have unexpected effects//
-
-<<set $minimumSlaveAge = variableAsNumber($minimumSlaveAge, 3, 18, 18)>>
-<<set $retirementAge = variableAsNumber($retirementAge, 25, 120, 45)>>
-<<set $fertilityAge = variableAsNumber($fertilityAge, 3, 18, 13)>>
-<<set $potencyAge = variableAsNumber($potencyAge, 3, 18, 13)>>
-<<set $PC.mother = Number($PC.mother)>>
-<<set $PC.father = Number($PC.father)>>
-<<if $freshPC == 1 || $saveImported == 0>>
-	<<set $PC.origRace = $PC.race>>
-	<<set $PC.origSkin = $PC.skin>>
-	<<set $PC.origEye = $PC.eye.right.iris>> /* needed for compatibility */
-	<<set $PC.origHColor = $PC.hColor>>
-<</if>>
-
-<br><br>
-
-<<run App.UI.tabBar.handlePreSelectedTab($tabChoice.IntroSummary)>>
-
-<div class="tab-bar">
-	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'world')" id="tab world">World</button>
-	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'slaves')" id="tab slaves">Slaves</button>
-	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'player')" id="tab player">Player Character</button>
-	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'interface')" id="tab interface">UI</button>
-</div>
-
-<div id="interface" class="tab-content">
-	<div class="content">
-
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("Help tooltips are", "tooltipsEnabled")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
-	.addComment("This is mostly for new players. @@.exampleTooltip.noteworthy;Colored text@@ can have tooltips.")>>
-
-	<<run _options.addOption("Accordion on week end defaults to", "useAccordion")
-	.addValue("Open", 0).on().addValue("Collapsed", 1).off()>>
-
-	<<run _options.addOption("Economic Tabs on weekly reports are", "useTabs")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<includeDOM _options.render()>>
-
-	<h2>Images</h2>
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("Images are", "seeImages")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<includeDOM _options.render()>>
-
-	<<if $seeImages > 0>>
-		<div class="imageRef" style="width:200px;height:200px;margin-left:50px;">
-			<<= SlaveArt(BaseSlave(), 0, 0)>>
-		</div>
-
-		<<set _options = new App.UI.OptionsGroup()>>
-
-		<<run _options.addOption("", "imageChoice")
-		.addValueList([["Revamped embedded vector art", 3], ["Non-embedded vector art", 2], ["NoX/Deepmurk's vector art", 1], ["Shokushu's rendered image pack", 0]])>>
-
-		<<if $imageChoice === 1>>
-			<<run _options.addOption("").addComment('<span class="warning">Git compiled only, no exceptions.</span>')>>
-
-			<<run _options.addOption("Face artwork is", "seeFaces")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-			<<run _options.addOption("Highlights on shiny clothing are", "seeVectorArtHighlights")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-			<<run _options.addOption("Height scaling", "seeHeight")
-			.addValue("All images", 2).on().addValue("Small images", 1).neutral().addValue("Disabled", 0).off()>>
-
-			<<run _options.addOption("Clothing erection bulges are", "showClothingErection")
-			.addValue("Enabled", true).on().addValue("Disabled", false).off()>>
-		<<elseif $imageChoice === 0>>
-			<<run _options.addOption("").addComment(`You need """to"""
-				<a href="https://mega.nz/#!upoAlBaZ!EbZ5wCixxZxBhMN_ireJTXt0SIPOywO2JW9XzTIPhe0">download the image pack</a>
-				"""and""" put the 'renders' folder into the resources/ folder where this html file is.`
-			)>>
-
-			<<run _options.addOption("Slave summary fetish images are", "seeMainFetishes")
-			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-		<<elseif $imageChoice === 3>>
-			<<run _options.addOption("").addComment('<span class="warning">Git compiled only, no exceptions.</span>')>>
-
-			<<run _options.addOption("Clothing erection bulges are", "showClothingErection")
-			.addValue("Enabled", true).on().addValue("Disabled", false).off()>>
-		<</if>>
-
-		<<run _options.addOption("PA avatar art is", "seeAvatar")
-		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-		<<run _options.addOption("Slave images in lists are", "seeSummaryImages")
-		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-		<<run _options.addOption("Slave images in the weekly report are", "seeReportImages")
-		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-		<<includeDOM _options.render()>>
-	<</if>>
-	</div>
-</div>
-
-<div id="world" class="tab-content">
-	<div class="content">
-
-	<h2>Economy</h2>
-
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<set $localEcon = $economy>>
-	<<run _options.addOption("Economic climate", "baseDifficulty")
-	.addValue("Very Easy", 1, () => V.economy = 200).addValue("Easy", 2, () => V.economy = 125)
-	.addValue("Default Difficulty", 3, () => V.economy = 100).addValue("Hard", 4, () => V.economy = 80)
-	.addValue("Very Hard", 5, () => V.economy = 67)>>
-
-	<<if $difficultySwitch == 1>><<set $econAdvantage = -2>><</if>>
-	<<if $difficultySwitch == 0>><<set $econRate = 0>><</if>>
-	<<run _options.addOption("Economic forecast", "econRate").addComment("Some economic content requires this to be set to harder than vanilla")
-	.addValue("Vanilla", 0, () => V.difficultySwitch = 0).addValue("Easy", 1, () => V.difficultySwitch = 1)
-	.addValue("Default", 2, () => V.difficultySwitch = 1).addValue("Hard", 3, () => V.difficultySwitch = 1)>>
-
-	/* Not functional yet
-	All the things you need to run your arcology are getting more expensive
-	<<if $incomeMod == 0>>
-		while all forms of income ''remain static''.
-			[[Easier|Intro Summary][$incomeMod = 1]]
-	<<elseif $incomeMod == 1>>
-		while all forms of income ''rise but cannot keep pace''.
-		[[Harder|Intro Summary][$incomeMod = 0]] | [[Easier|Intro Summary][$incomeMod = 2]]
-	<<else>>
-		but luckily all forms of income ''rise in lockstep''.
-		[[Harder|Intro Summary][$incomeMod = 1]]
-	<</if>>
-	*/
-
-	<<set $foodCost = Math.trunc(2500/$economy)>>
-	<<set $drugsCost = Math.trunc(10000/$economy)>>
-	<<set $rulesCost = Math.trunc(10000/$economy)>>
-	<<set $modCost = Math.trunc(5000/$economy)>>
-	<<set $surgeryCost = Math.trunc(30000/$economy)>>
-
-	<<if ndef $customVariety>>
-		<<run _options.addOption("You are using standardized slave trading channels.")
-		.customButton("Customize the slave trade", () => {V.customVariety = 1; V.customWA = 0}, "Customize Slave Trade")>>
-
-		<<run _options.addOption("", "internationalTrade")
-		.addValue("Allow intercontinental trade", 1).on().customDescription("The slave trade is ''international,'' so a wider variety of slaves will be available.")
-		.addValue("Restrict the trade to continental", 0).off().customDescription("The slave trade is ''continental,'' so a narrower variety of slaves will be available.")>>
-
-		<<if $internationalTrade == 1>>
-			<<run _options.addOption("International slave variety is", "internationalVariety")
-			.addValue("Normalized national variety", 1).customDescription("''normalized,'' so small nations will appear nearly as much as large ones.")
-			.addValue("Semi-realistic national variety", 0).customDescription("''semi-realistic,'' so more populous nations will be more common.")>>
-		<</if>>
-	<<else>>
-		<<run _options.addOption("Nationality distributions are customized.")
-		.customButton("Adjust the slave trade", () => {V.customWA = 0; V.customVariety = 1}, "Customize Slave Trade")
-		.customButton("Stop customizing", () => {delete V.customVariety})>>
-
-		<<run _options.addOption("").addCustomElement(`
-			<hr style="margin:0">
-			<<includeDOM App.UI.nationalitiesDisplay()>>
-			<br style="clear:both"><hr style="margin:0">
-		`)>>
-	<</if>> /* closes $customVariety is defined */
-
-	<<run _options.addOption("", "plot")
-	.addValue("Enable non-erotic events", 1).on().customDescription("Game mode: ''two-handed''. Includes non-erotic events concerning the changing world.")
-	.addValue("Disable non-erotic events", 0).off().customDescription("Game mode: ''one-handed''. No non-erotic events concerning the changing world.")>>
-
-	<<includeDOM _options.render()>>
-
-	<h2>The Free City</h2>
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("The Free City features ''$neighboringArcologies'' arcologies in addition to your own.", "neighboringArcologies")
-	.showTextBox().addComment("Setting this to 0 will disable most content involving the rest of the Free City.")>>
-
-	<<if $targetArcology.fs == "New">>
-		<<run _options.addOption("The Free City is located on ''$terrain'' terrain.", "terrain")
-		.addValueList([["Urban", "urban"], ["Rural", "rural"], ["Ravine", "ravine"], ["Marine", "marine"], ["Oceanic", "oceanic"]])>>
-
-		<<if $terrain !== "oceanic">>
-			<<set _option = _options.addOption("The Free City is located in ''$continent''.", "continent")
-			.addValue("North America").addCallback(() => V.language = "English")
-			.addValue("South America").addCallback(() => V.language = "Spanish")
-			.addValue("Brazil").addCallback(() => V.language = "Portuguese")
-			.addValue("Western Europe").addCallback(() => V.language = "English")
-			.addValue("Central Europe").addCallback(() => V.language = "German")
-			.addValue("Eastern Europe").addCallback(() => V.language = "Russian")
-			.addValue("Southern Europe").addCallback(() => V.language = "Italian")
-			.addValue("Scandinavia").addCallback(() => V.language = "Norwegian")
-			.addValue("the Middle East").addCallback(() => V.language = "Arabic")
-			.addValue("Africa").addCallback(() => V.language = "Arabic")
-			.addValue("Asia").addCallback(() => V.language = "Chinese")
-			.addValue("Australia").addCallback(() => V.language = "English")
-			.addValue("Japan").addCallback(() => V.language = "Japanese")>>
-		<</if>>
-
-		<<run _options.addOption("The lingua franca of your arcology is", "language")
-		.showTextBox()>>
-	<<elseif !["ArabianRevivalist", "AztecRevivalist", "ChineseRevivalist", "EdoRevivalist", "EgyptianRevivalist", "RomanRevivalist"].includes($targetArcology.fs)>>
-		<<run _options.addOption("The lingua franca of your arcology is", "language")
-		.addValueList(["English", "Spanish", "Arabic"]).showTextBox()>>
-	<</if>>
-
-	<<run _options.addOption("The Free City could develop as many as ''$FSCreditCount'' future societies.", "FSCreditCount")
-	.showTextBox().addComment("5 is default, 4 behaves the same as pre-patch 0.9.9.0, max is 7. This option cannot be changed during the game.")>>
-
-	<<includeDOM _options.render()>>
-
-	<h2>Content</h2>
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("Proportion of slave girls with dicks", "seeDicks")
-	.addValueList([["None (0%)", 0], ["Nearly none (1%)", 1], ["A few (10%)", 10], ["Some (25%)", 25], ["Half (50%)", 50], ["Lots (75%)", 75], ["Most (90%)", 90], ["Almost all (99%)", 99], ["All (100%)", 100]])>>
-
-	<<if $seeDicks === 0>>
-		<<run _options.addOption("Should you be able to surgically attach a penis to your female slaves and starting girls?", "makeDicks")
-		.addValue("Yes", 1).on().addValue("No", 0).off()>>
-	<</if>>
-
-	<<run _options.addOption("Slaves getting sick is", "seeIllness")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Pregnancy related content is", "seePreg")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Children born in game strictly adhering to dick content settings is", "seeDicksAffectsPregnancy")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<if $seeDicksAffectsPregnancy === 0>>
-		<<run _options.addOption("XX slaves only fathering daughters is", "adamPrinciple")
-		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-	<</if>>
-
-	<<run _options.addOption("Extreme pregnancy content like broodmothers is", "seeHyperPreg")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Advanced pregnancy complications such as miscarriage and premature birth are", "dangerousPregnancy")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Extreme content like amputation is", "seeExtreme")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Bestiality content is", "seeBestiality")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-
-	<<run _options.addOption("Watersports content is", "seePee")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-
-	<<run _options.addOption("Incest is", "seeIncest")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-
-	<<if $seeDicks !== 0 || $makeDicks !== 0>>
-		<<run _options.addOption("Circumcision is", "seeCircumcision")
-		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-	<</if>>
-
-	<<includeDOM _options.render()>>
-
-	<h2>Mods</h2>
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("The Special Force Mod is", "Toggle", $SF)
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
-	.addComment("<div>This mod is initially from anon1888 but expanded by SFanon offers a lategame special (started out as security but changed to special in order to try and reduce confusion with CrimeAnon's separate Security Expansion (SecExp) mod) force, that is triggered after week 72.</div>
-	<div>It is non-canon where it conflicts with canonical updates to the base game.</div>")>>
-
-	<<run _options.addOption("The Security Expansion Mod is", "secExpEnabled")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
-	.addComment("<div>This mod introduces security and crime in the arcology, as well as attacks and battles.</div>
-	<div>The mod can be activated in any moment, but it may result in unbalanced gameplay if activated very late in the game.</div>")>>
-
-	<<includeDOM _options.render()>>
-	</div>
-</div>
-
-<div id="slaves" class="tab-content">
-	<div class="content">
-
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("Master Suite report details such as slave changes are", "verboseDescriptions")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Slaves can have alternate titles", "newDescriptions")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Mention ethnicity", "seeRace")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Mention nationality", "seeNationality")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Dynasties of enslaved royalties are", "realRoyalties")
-	.addValueList([["Historical", 1], ["Random", 0]])>>
-
-	<<run _options.addOption("New slaves may have male names", "allowMaleSlaveNames").addComment("This only affects slave generation and not your ability to name your slaves.")
-	.addValue("Enabled", true).on().addValue("Disabled", false).off()>>
-
-	<<run _options.addOption("Schema for ordering slave names is", "surnameOrder")
-	.addValueList([["Country of origin", 0], ["Name Surname", 1], ["Surname Name", 2]])>>
-
-	<<run _options.addOption("Family size", "limitFamilies").addComment("Controls acquisition of additional relatives, by means other than birth, for slaves with families.")
-	.addValue("Allow extended families", 0).on().addValue("Restrict family size (Vanilla Emulation)", 1).off()>>
-
-	<<run _options.addOption("Tracking distant relatives is", "showDistantRelatives")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Successive breeding resulting in sub-average slaves is", "inbreeding")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Family titles for relatives", "allowFamilyTitles")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Slave assets affected by weight is", "weightAffectsAssets")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
-	.addComment("Diet will still affect asset size.")>>
-
-	<<run _options.addOption("Curative side effects are", "curativeSideEffects")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Slaves with fat lips or heavy oral piercings may lisp", "disableLisping")
-	.addValue("Yes", 0).on().addValue("No", 1).off()>>
-
-	<<includeDOM _options.render()>>
-
-	<h2>Age</h2>
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("Slave aging", "seeAge")
-	.addValue("Enabled", 1).on().addValue("Celebrate birthdays, but don't age.", 2).neutral().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Slave age distribution", "pedo_mode").addComment("In loli mode most new slaves are under the age of 18. May not apply to custom slaves and slaves from specific events.")
-	.addValue("Loli mode", 1, () => V.minimumSlaveAge = 5).addValue("Normal mode", 0)>>
-
-	<<set $minimumSlaveAge = Math.clamp($minimumSlaveAge, 3, 18)>>
-	<<run _options.addOption("Girls appearing in the game will be no younger than", "minimumSlaveAge").showTextBox()>>
-
-	<<run _options.addOption("Molestation of slaves younger than $minimumSlaveAge is", "extremeUnderage")
-	.addValue("Permitted", 1).on().addValue("Forbidden", 0).off()>>
-
-	<<set $retirementAge = Math.clamp($retirementAge, $minimumSlaveAge + 1, 120)>>
-	<<run _options.addOption("Initial retirement age will be at", "retirementAge")
-	.addComment("May cause issues with New Game and initial slaves if set below 45.").showTextBox()>>
-
-	<<set $fertilityAge = Math.clamp($fertilityAge, 3, 18)>>
-	<<run _options.addOption("Girls will not be able to become pregnant if their age is under", "fertilityAge").showTextBox()>>
-
-	<<set $potencyAge = Math.clamp($potencyAge, 3, 18)>>
-	<<run _options.addOption("Girls will not be able to impregnate others if their age is under", "potencyAge").showTextBox()>>
-
-	<<run _options.addOption("Precocious puberty is", "precociousPuberty").addComment("Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty.")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Age penalties are", "AgePenalty").addComment("Job and career penalties due to age.")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<run _options.addOption("Children growing as they age is", "loliGrow")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
-
-	<<includeDOM _options.render()>>
-	</div>
-</div>
-
-<div id="player" class="tab-content">
-	<div class="content">
-
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<if $freshPC == 1 || $saveImported == 0>>
-		<<run _options.addOption("You are a", "title", $PC)
-		.addValue("Masculine Master", 1, () => V.PC.genes = "XY").addValue("Feminine Mistress", 0, () => V.PC.genes = "XX")>>
-
-		<<run _options.addOption(`Everyone calls you <b>${PlayerName()}.</b>`)>>
-		<<run _options.addOption("Your given name is", "slaveName", $PC).showTextBox()>>
-
-		<<if $PC.slaveSurname === 0>>
-			<<run _option = _options.addOption("And no surname", "slaveSurname", $PC)
-			.addValue("Add a surname", "Anon")
-			.addComment("Surnames cannot be changed during the game outside of special circumstances.")>>
-		<<else>>
-			<<run _option = _options.addOption("And your surname is", "slaveSurname", $PC).showTextBox()
-			.addValue("Go by a single name", 0)
-			.addComment("Surnames cannot be changed during the game outside of special circumstances.")>>
-		<</if>>
-
-		<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>
-		<<run _options.addOption("You are", "actualAge", $PC).showTextBox()
-		.addRange(25, 35, "<", "Surprisingly young").addRange(40, 50, "<", "Entering middle age")
-		.addRange(55, 65, "<", "Well into middle age").addRange(70, 65, ">=", "Old")>>
-
-		<<run _options.addOption("Your birthday was ''$PC.birthWeek'' weeks ago.", "birthWeek", $PC).showTextBox()>>
-
-		<<run _options.addOption("Player aging is", "playerAging")
-		.addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off()
-		.addComment("This option cannot be changed during the game.")>>
-
-		<<if def $PC.customTitle>>
-			<<run _options.addOption("Custom title", "customTitle", $PC).showTextBox()
-			.addValue("Reset to default", "", () => {delete $PC.customTitle; delete $PC.customTitleLisp;})>>
-
-			<<run _options.addOption("Lisped custom title", "customTitleLisp", $PC).showTextBox()
-			.addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.')>>
-		<<else>>
-			<<run _options.addOption("Custom title", "customTitle", $PC)
-			.addValue("Set custom title", "Master", () => $PC.customTitleLisp = 'Mather')>>
-		<</if>>
-
-		<<run App.Intro.pcAppearance(_options)>>
-
-		<<run _options.addOption("Your face is", "faceShape", $PC)
-		.addValueList([["Normal", "normal"], ["Androgynous", "androgynous"], ["Masculine", "masculine"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]])>>
-
-		<<run _options.addOption("Your preferred refreshment is", "refreshment", $PC).showTextBox()
-		.addValue("Cigars", "cigar", () => {V.PC.refreshmentType = 0})
-		.addValue("Whiskey", "whiskey", () => {V.PC.refreshmentType = 1})>>
-
-		<<set _option = _options.addOption("Which you", "refreshmentType", $PC)
-		.addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]])>>
-
-		<<if $PC.refreshmentType == 0>>
-			<<run _option.addComment('"Smoked" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly.')>>
-		<<elseif $PC.refreshmentType == 5>>
-			<<run _option.addComment('"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly.')>>
-		<<elseif $PC.refreshmentType == 6>>
-			<<run _option.addComment('"Orally Dissolved" must fit into the following sentence: "I placed a tab of $PC.refreshment under my tongue" to fit events properly.')>>
-		<</if>>
-
-		<<set _option = _options.addOption("Before you came to the Free Cities, you were a", "career", $PC)>>
-		<<if $PC.career == "arcology owner">>
-			<<run _option.addValue("Arcology owner", "arcology owner")>>
-		<<else>>
-			<<run _option.addValueList([["Member of the idle wealthy", "wealth"], ["Business leader", "capitalist"],
-				["Mercenary", "mercenary"], ["Slaver", "slaver"], ["Engineer", "engineer"], ["Doctor", "medicine"], ["Hacker", "BlackHat"],
-				["Minor celebrity", "celebrity"], ["Escort", "escort"], ["Servant", "servant"], ["Gang leader", "gang"]]
-			)>>
-			<<if $secExpEnabled > 0>>
-				<<switch $PC.career>>
-				<<case "capitalist">>
-					<<run _option.addComment("<div>@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@</div>")>>
-				<<case "mercenary">>
-					<<run _option.addComment("<div>@@.green;Easier to maintain security@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>>
-				<<case "slaver">>
-					<<run _option.addComment("<div>@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>>
-				<<case "engineer">>
-					<<run _option.addComment("<div>@@.yellowgreen;construction and upgrade of facilities will be cheaper.@@</div>")>>
-				<<case "medicine">>
-					<<run _option.addComment("<div>@@.yellowgreen;Drug upgrades will be cheaper.@@</div>")>>
-				<<case "celebrity">>
-					<<run _option.addComment("<div>@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@</div>")>>
-				<<case "escort">>
-					<<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>>
-				<<case "servant">>
-					<<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>>
-				<<case "gang">>
-					<<run _option.addComment("<div>@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>>
-				<<case "BlackHat">>
-					<<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>>
-				<<default>>
-					<<run _option.addComment("<div>@@.red;Harder to maintain authority,@@ but @@.yellowgreen;the propaganda hub's upgrades will be cheaper.@@</div>")>>
-				<</switch>>
-			<</if>>
-		<</if>>
-
-		<<run _options.addOption("It is rumored that you acquired your arcology through", "rumor", $PC)
-		.addValueList([["Wealth", "wealth"], ["Hard work", "diligence"], ["Force", "force"], ["Social engineering", "social engineering"],
-			["Blind luck", "luck"]]
-		)>>
-
-		<<includeDOM _options.render()>>
-
-		<h2>Sexuality</h2>
-		<<set _options = new App.UI.OptionsGroup()>>
-
-		<<if $PC.vagina !== -1 && $PC.dick !== 0>>
-			<<set _vagina_penis = 2>>
-		<<elseif $PC.vagina !== -1>>
-			<<set _vagina_penis = 1>>
-		<<else>>
-			<<set _vagina_penis = 0>>
-		<</if>>
-
-		<<set _option = _options.addOption("You have a", "vagina_penis", State.temporary)
-		.addValue("Penis", 0, () => {
-			V.PC.preg = 0;
-			V.PC.pregType = 0;
-			V.PC.dick = 4;
-			V.PC.balls = 3;
-			V.PC.scrotum = 3;
-			V.PC.prostate = 1;
-			V.PC.vagina = -1;
-			V.PC.ovaries = 0;
-		}).addValue("Vagina", 1, () => {
-			V.PC.dick = 0;
-			V.PC.balls = 0;
-			V.PC.scrotum = 0;
-			V.PC.prostate = 0;
-			V.PC.vagina = 1;
-			V.PC.ovaries = 1
-		}).addValue("Penis and Vagina", 2, () => {
-			V.PC.dick = 4;
-			V.PC.balls = 3;
-			V.PC.scrotum = 3;
-			V.PC.prostate = 1;
-			V.PC.vagina = 1;
-			V.PC.ovaries = 1
-		})>>
-		<<if _vagina_penis === 0>>
-			<<run _option.addComment("Standard sex scenes; easiest reputation maintenance.")>>
-		<<elseif _vagina_penis === 1>>
-			<<run _option.addComment("Sex scene variations; most difficult reputation maintenance.")>>
-		<<else>>
-			<<run _option.addComment("Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts.")>>
-		<</if>>
-
-		<<if $PC.vagina !== -1>>
-			<<set _option = _options.addOption("You are", "preg", $PC)
-			.addValue("Taking contraceptives", -1, () => {V.PC.pregType = 0; V.PC.labor = 0;})
-			.addValue("Not taking contraceptives", 0, () => {V.PC.pregType = 0; V.PC.labor = 0;})
-			.addRange(16, 37, "<=", "Pregnant").addCallback(() => {V.PC.pregType = 1; V.PC.labor = 0;})
-			.addRange(40, 42, "<=", "Ready to drop").addCallback(() => {V.PC.pregType = 1; V.PC.labor = 0;})
-			.addRange(43, 42, ">", "Ready to drop with octuplets").addCallback(() => {V.PC.pregType = 8; V.PC.labor = 1;})>>
-			<<if $PC.preg == -1>>
-				<<run _option.addComment("You can't get pregnant, however there will be a slight increase to living expenses.")>>
-			<</if>>
-
-			<<if $PC.counter.birthsTotal > 0>>
-				<<run _options.addOption("").addComment("You have given birth to ''$PC.counter.birthsTotal'' babies.")>>
-			<</if>>
-
-			<<set _option = _options.addOption("Hormone effects", "pregMood", $PC)
-			.addValueList([["None", 0], ["Caring and motherly", 1], ["Aggressive and domineering", 2]])>>
-			<<if $PC.pregMood === 1>>
-				<<run _option.addComment("Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy.")>>
-			<<elseif $PC.pregMood === 2>>
-				<<run _option.addComment("Sex scene alterations; slaves will fear you more, but will become more submissive to you.")>>
-			<</if>>
-		<</if>>
-
-		<<if $PC.title === 1 && $PC.boobs <= 100>>
-			<<set _option = _options.addOption("Your chest is", "boobs", $PC).addValue("Manly", 100, () => V.PC.boobsImplant = 0)>>
-		<<else>>
-			<<set _option = _options.addOption("Your breasts are", "boobs", $PC).addValue("Flat", 100, () => V.PC.boobsImplant = 0)>>
-		<</if>>
-		<<run _option.addValueList([["C-cups", 500], ["DD-cups", 900], ["F-cups", 1100], ["G-cups", 1300]])>>
-
-		<<if $PC.boobs >= 500>>
-			<<run _options.addOption("Your breasts are", "boobsImplant", $PC)
-			.addValueList([["All natural", 0], ["Fake", 400]])>>
-		<</if>>
-
-		<<includeDOM _options.render()>>
-	<<else>>
-
-		You are a
-		<<if $PC.title == 1>>
-			masculine ''Master''
-		<<else>>
-			feminine ''Mistress'
-		<</if>>
-		and everyone that matters calls you	<<= PlayerName()>>.
-
-		You are $PC.actualAge years old which is
-		<<if $PC.actualAge >= 65>>
-			''old''.
-		<<elseif $PC.actualAge >= 50>>
-			''well into middle age''.
-		<<elseif $PC.actualAge >= 35>>
-			''entering middle age''.
-		<<else>>
-			''surprisingly young''.
-		<</if>>
-
-		<p>
-			You are a $PC.nationality $PC.race with	<<if $PC.markings == "heavily freckled">>heavily freckled<<elseif $PC.markings == "freckles">>lightly freckled<<else>>clear<</if>> $PC.skin skin, $PC.hColor hair and <<print App.Desc.eyesColor($PC)>>. You have a $PC.faceShape face.
-		</p>
-
-		<<set _options = new App.UI.OptionsGroup()>>
-		<<run _options.addOption("Player aging is", "playerAging")
-		.addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off()
-		.addComment("This option cannot be changed during the game.")>>
-
-		<<if def $PC.customTitle>>
-			<<run _options.addOption("Custom title", "customTitle", $PC).showTextBox()
-			.addValue("Reset to default", "", () => {delete $PC.customTitle; delete $PC.customTitleLisp;})>>
-
-			<<run _options.addOption("Lisped custom title", "customTitleLisp", $PC).showTextBox()
-			.addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.')>>
-		<<else>>
-			<<run _options.addOption("Custom title", "customTitle", $PC)
-			.addValue("Set custom title", "Master", () => $PC.customTitleLisp = 'Mather')>>
-		<</if>>
-
-		<<run _options.addOption("Your preferred refreshment is", "refreshment", $PC).showTextBox()
-		.addValue("Cigars", "cigar", () => {V.PC.refreshmentType = 0})
-		.addValue("Whiskey", "whiskey", () => {V.PC.refreshmentType = 1})>>
-
-		<<set _option = _options.addOption("Which you", "refreshmentType", $PC)
-		.addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]])>>
-
-		<<if $PC.refreshmentType == 0>>
-			<<run _option.addComment('"Smoked" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly.')>>
-		<<elseif $PC.refreshmentType == 5>>
-			<<run _option.addComment('"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly.')>>
-		<<elseif $PC.refreshmentType == 6>>
-			<<run _option.addComment('"Orally Dissolved" must fit into the following sentence: "I placed a tab of $PC.refreshment under my tongue" to fit events properly.')>>
-		<</if>>
-		<<includeDOM _options.render()>>
-
-		<p>
-		<<switch $PC.career>>
-		<<case "wealth">>
-			Prior to being an arcology owner, you were a member of the idle wealthy.
-		<<case "capitalist">>
-			Prior to being an arcology owner, you were a business leader.
-		<<case "mercenary">>
-			Prior to being an arcology owner, you were a mercenary.
-		<<case "slaver">>
-			Prior to being an arcology owner, you were a slaver.
-		<<case "engineer">>
-			Prior to being an arcology owner, you were an engineer.
-		<<case "medicine">>
-			Prior to being an arcology owner, you were a surgeon.
-		<<case "celebrity">>
-			Prior to being an arcology owner, you were a minor celebrity.
-		<<case "BlackHat">>
-			Prior to being an arcology owner, you specialized in cracking databases and making mockeries of cyber security.
-		<<case "arcology owner">>
-			Being an arcology owner defines your life now.
-		<<case "escort">>
-			Prior to being an arcology owner, you knew how to survive off your looks and body.
-		<<case "servant">>
-			Prior to being an arcology owner, you served a well-off master<<if $PC.counter.birthMaster >= 2>> and bore him several children<</if>>.
-		<<case "gang">>
-			Prior to being an arcology owner, you were the leader of a ruthless gang.
-		<</switch>>
-
-		Word in the arcology is you acquired it through
-		<<switch $PC.rumor>>
-		<<case "wealth">>
-			a rather ridiculous amount of money.
-		<<case "diligence">>
-			sheer effort.
-		<<case "force">>
-			brutal force.
-		<<case "social engineering">>
-			clever social manipulation.
-		<<case "luck">>
-			blind luck.
-		<</switch>>
-		</p>
-
-		<p>
-		You have a
-		<<if $PC.vagina != -1 && $PC.dick != 0>>
-			penis and vagina
-		<<elseif $PC.dick != 0>>
-			penis.
-		<<elseif $PC.vagina != -1>>
-			vagina
-		<</if>>
-		<<if $PC.vagina != -1>>
-			and are
-			<<if $PC.pregWeek < 0>>
-				recovering from your last pregnancy.
-			<<elseif $PC.preg == -2>>
-				infertile.
-			<<elseif $PC.preg == -1>>
-				taking contraceptives.
-			<<elseif $PC.preg == 0>>
-				fertile.
-			<<elseif $PC.preg > 37>>
-				extremely pregnant.
-			<<elseif $PC.preg > 0>>
-				pregnant.
-			<</if>>
-			<<if $PC.preg > 20 || $PC.counter.birthsTotal > 0>>
-				<<if $PC.pregMood == 1>>
-					You tend to be caring and motherly when you're pregnant.
-					[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
-				<<elseif $PC.pregMood == 0>>
-					Pregnancy doesn't really affect your mood.
-					[[Change to motherly|Intro Summary][$PC.pregMood = 1]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
-				<<else>>
-					You tend to be very demanding and aggressive when you're pregnant.
-					[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to motherly|Intro Summary][$PC.pregMood = 1]]
-				<</if>>
-			<<else>>
-				<<if $PC.pregMood == 1>>
-					You tend to be caring and motherly when you're hormonal.
-					[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
-				<<elseif $PC.pregMood == 0>>
-					Your mood isn't tied to your hormones.
-					[[Change to motherly|Intro Summary][$PC.pregMood = 1]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
-				<<else>>
-					You tend to be very demanding and aggressive when you're hormonal.
-					[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to motherly|Intro Summary][$PC.pregMood = 1]]
-				<</if>>
-			<</if>>
-			<<if $PC.counter.birthsTotal > 0>>
-				You have given birth to $PC.counter.birthsTotal babies.
-			<</if>>
-		<</if>>
-
-		<<if $PC.boobs >= 300>>
-			You have a	<<if $PC.title > 0>>masculine<<else>>feminine<</if>> body with
-			<<if $PC.boobs >= 1400>>
-				giant<<if $PC.boobsImplant != 0>>, fake<</if>> cow tits.
-			<<elseif $PC.boobs >= 1200>>
-				huge	<<if $PC.boobsImplant != 0>>fake	<</if>>breasts.
-			<<elseif $PC.boobs >= 1000>>
-				big	<<if $PC.boobsImplant != 0>>fake	<</if>>breasts.
-			<<elseif $PC.boobs >= 800>>
-				noticeable breasts.
-			<<elseif $PC.boobs >= 650>>
-				unremarkable breasts.
-			<<elseif $PC.boobs >= 500>>
-				average breasts.
-			<<else>>
-				small breasts.
-			<</if>>
-		<<else>>
-			<<if $PC.title > 0>>
-				You have a manly chest.
-			<<else>>
-				You are flat as a board.
-			<</if>>
-		<</if>>
-		</p>
-	<</if>>
-
-	</div>
-</div>
+<<includeDOM App.Intro.summary()>>
\ No newline at end of file
-- 
GitLab