code:
App.Encyclopedia.addArticle("Playing Free Cities", function() {
	const f = new DocumentFragment();
	App.UI.DOM.appendNewElement("p", f, `Welcome to the Free Cities, ${PlayerName()}!`);
	App.UI.DOM.appendNewElement("p", f, "Future room for lore text", "note");
	App.UI.DOM.appendNewElement("p", f, "Choose a more particular entry below:");
	return f;
}, "guide");

App.Encyclopedia.addArticle("First Game Guide", function() {
	const f = new DocumentFragment();
	let r;

	App.UI.DOM.appendNewElement("p", f, "Unfortunately, Twine doesn't have a solid tooltip system at the moment. So, a certain amount of confusion is to be expected. Sorry about that. Flip through the encyclopedia, or at least this gameplay section. It answers a lot of frequently asked questions, and if you read it you can save yourself the trouble of asking your frequently asked question on /d/ or the blog and getting told to read the encyclopedia. If you've still got questions, start a game and read what it says. The game is reasonably good about telling you what's happening to your slaves, and why. It bears repetition that almost all stat effects are called out with colored text. Try this opening strategy if you don't know where to start. It isn't an optimal build, but it works reliably and will show you the basics.");

	App.UI.DOM.appendNewElement("h3", f, "Starting options");
	r = [];
	r.push("Start the game and select any of the world options; choose normal difficulty, since it's pretty forgiving and this opener will make good");
	r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("money", "Money"), "."), "cash"));
	r.push("Build a completely male PC for your first game; it makes");
	r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
	r.push("maintenance much easier. Choose wealth for both your career and your rumored method of obtaining the arcology; the other options are fun but a full wealth build will set you up quickly to get started.");
	App.Events.addParagraph(f, r);

	App.UI.DOM.appendNewElement("p", f, "Now, customize your starting slaves.");
	r = [];
	r.push("For your first, make her as intelligent, educated, and old as possible. Make her");
	r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("devoted", "From Rebellious to Devoted"), "."), ["devotion", "accept"]));
	r.push("but save");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push(`by giving her flaws, an unknown fetish, and making her afraid of you. (These are easy to fix.) You can customize the rest of her as you wish, but try to keep her under ${cashFormat(5000)}. Don't worry about skills, since with two of them you'll be able to rotate Head Girl duty so the other can learn skills. Commit her, base another slave off her, and commit that one too. Those are your`);
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Head Girls", "Head Girl"), "."));
	App.Events.addParagraph(f, r);

	r = [];
	r.push("Spend the rest of your");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("on prospects: slaves that are");
	r.push(App.Encyclopedia.Dialog.linkDOM("cheap", "Money", "cash"));
	r.push("now, but can be improved quickly. As long as you keep devotion pretty high, low");
	r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust inc"));
	r.push("can be fixed reliably. Unknown fetishes, emaciated or fat, flaws, deep voice, and poor skills are all good ways to drive prices down, and can all be fixed quickly. Virginities are a bad idea because they drive costs up and are easy to break. Education can take awhile and will take slaves away from other jobs, so make them all educated for now, and keep their intelligence reasonably high.");
	App.Events.addParagraph(f, r);

	App.UI.DOM.appendNewElement("h3", f, "First turn");
	r = [];
	r.push("Assign one of your Head Girls to be the Head Girl and make the other whore. Assign everyone else to whore. The");
	r.push(App.Encyclopedia.Dialog.linkDOM("rules assistant", "Rules Assistant"));
	r.push("will speed things up a lot when you know the basics, but leave it off for now; it's easy to miss a lot of stuff if you set it up without a bit of experience. Go through your girls one by one and experiment with their options, but anyone who's Accepting or better should get nice clothes, accessories, and");
	r.push(App.Encyclopedia.Dialog.linkDOM("living conditions", "Living Conditions"));
	r.push("anyone who's not should not. When slaves tip over into Accepting, switch them over from bedrolls and uncomfortable straps; until then, the good life is a waste of");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("and will spoil them. Give unhealthy slaves curatives, and give everyone hormones, since they're");
	r.push(App.Encyclopedia.Dialog.linkDOM("cheap", "Money", "cash"));
	r.push("and have good front end benefits. Get everyone working out or dieting to reach a basic fitness level and an attractive (not red)");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("weight", "Weight"), "."));
	r.push("Sell the girl(s) your predecessor left behind for seed");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("and choose the most profitable option; there are ways to maximize this, but worry about that later. Check out the arcology management menu. You should have the");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("to upgrade the security systems, build the");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Head Girl suite", "Head Girl Suite"), ","));
	r.push(`and to buy the kitchen upgrade; this will make dieting work faster. Check out the slave market, and buy a single bargain slave: ${cashFormat(2000)} is good. Put her in the suite: if she won't go, abuse her until she will. Open the personal attention menu, and fix your Head Girl's flaws; softening is powerful but it takes longer and we're focusing on the basics. Save the game and end the turn.`);
	App.Events.addParagraph(f, r);

	App.UI.DOM.appendNewElement("h3", f, "The end turn report");
	r = [];
	r.push("Read this, and note all the colored text. Pay particular attention to red, gold, or orchid text; these are generally bad. Being a slave whore is a hard life, and some trouble is inevitable. But take particular note of things like slaves losing");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("health", "Health"), ","));
	r.push("becoming");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("fearful", "Trust"), ","));
	r.push("or");
	r.push(App.Encyclopedia.Dialog.linkDOM("hating", "From Rebellious to Devoted"));
	r.push("you due to their");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("rules", "Rules Assistant"), ","));
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("conditions", "Living Conditions"), ","));
	r.push("or other slaves — these things you can control. Reload your save and fiddle around with the options to address these areas. (The Head Girl's girl may have a rough time; you can't affect that.) Since your Head Girl has her own slave to help her around the house, she'll work with two of your slaves.");
	App.Events.addParagraph(f, r);

	App.UI.DOM.appendNewElement("h3", f, "Economics and events");
	r = [];
	r.push("The economics report offers some flavor, but you should leave the options it offers alone until you've got some spare cash. An event or two will follow; feel free to reload the page on each (F5 on most browsers) to see what the different options do. Generally, try to pick options that give you");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("and improve");
	r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted"), "."), ["devotion", "inc"]));
	r.push(App.Encyclopedia.Dialog.linkDOM("Trust", "Trust", "trust inc"));
	r.push("and");
	r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
	r.push("can wait.");
	App.Events.addParagraph(f, r);

	App.UI.DOM.appendNewElement("h3", f, "Moving forward");
	r = [];
	r.push("Hopefully, many of your slaves learned skills during their week of");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("whoring", "Whoring"), "."));
	r.push("Three levels of skill (Veteran Whore or W+++ for example) is the maximum, though slaves without vaginas will only acquire two complete levels of sexual skills. As you move through the first ten weeks or so, many of your slaves will max out their whoring and sexual skills. When they do, switch them over to");
	r.push(App.Encyclopedia.Dialog.linkDOM("public service", "Public Service"));
	r.push("until they achieve maximum");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("entertainment skill", "Entertainment Skill"), ","));
	r.push("and then put them back on whoring, since cross training will improve their whoring performance. When your Head Girl alternate has maxed skills, make her the Head Girl and train up the MILF she replaced. Switch your personal attention around; for now, fix the");
	r.push(App.Encyclopedia.Dialog.linkDOM("quirks", "Quirks"));
	r.push("of the most");
	r.push(App.Encyclopedia.Dialog.linkDOM("devoted", "From Rebellious to Devoted", "devotion accept"));
	r.push("slave who has any, since that's the best way to maximize your chances of success each turn.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push(`Pay attention to your cash flow. If it's positive and you have a decent buffer of ${cashFormat(10000)} or so built up, wait for the slave market prices to naturally dip, and then purchase a girl or two to work on once your starting stable is well trained, though you may have to confine or rest new purchases for a while if they're`);
	r.push(App.Encyclopedia.Dialog.linkDOM("rebellious", "From Rebellious to Devoted", "devotion resistant"));
	r.push("or sick. If you get a virgin, consider applying chastity to preserve value for resale. When prices are high, consider selling anyone who's free of flaws and has a discovered sexual fetish, since this maximizes value bonuses. Within ten turns, you should be making decent weekly profit, with resale of slaves building up your bank when prices favor sale. Once you're confident of the whoring mechanics, consider building a");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("brothel", "Brothel"), "."));
	r.push("Your alternate Head Girl will make a good");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("madam", "Madam"), "."));
	App.Events.addParagraph(f, r);

	return f;
}, "guide");

App.Encyclopedia.addArticle("How to Play", function() {
	const f = new DocumentFragment();
	let r;

	r = [];
	r.push("This is not a game in which the PC slaveowner is some magical sexual god whose mere presence turns women into submissives. This means that sane slaves will tend to lose obedience and");
	r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust inc"));
	r.push("over time if you don't take any steps to maintain their mental state. Mental stats have maximum and minimum values. These are somewhat 'sticky,' so slaves at minimum");
	r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "devotion accept"));
	r.push("for example may require an extra jolt to break free of this state.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("Maximized");
	r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "devotion accept"));
	r.push("and");
	r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust careful"));
	r.push("are not useless; if one of these stats is maximized and the other is not, the extra");
	r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "devotion accept"));
	r.push("or");
	r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust careful"));
	r.push("will boost the other. If both are maximized, the player gains");
	r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
	r.push("instead. However if both are low the slave in question is liable to experience breakdowns and generally be useless.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("A slave's health is extremely important. Being healthy generally improves beauty and job performance. Most transformative drugs and surgeries can damage health, while curative drugs and rest will restore it. Extremely unhealthy slaves can die, while extremely healthy slaves enjoy considerable bonuses on many assignments. Health damage is generally scaled to a slave's current health, so if a slave is already unhealthy, injuries will hurt her more severely. Pulling a slave with red health indicators off work for a week of rest is generally advisable.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The first button in the left-side UI bar will always continue the game without taking any actions. If you wish to advance the game rapidly, click that button repeatedly. If you are presented with a menu and do not wish to select any of the options, that button will also serve as a none of the above choice. The spacebar will also advance the game.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The author has played several otherwise good H-Games in which it can be hard to parse exactly what the flavor descriptions mean in terms of stats. Therefore, this game will usually flag stat impacts in descriptions by means of colored text. For example:");
	const ul = document.createElement("ul");
	App.Events.addNode(ul, ["Green text means something good, like a healthy slave."], "li");
	App.Events.addNode(ul, ["Red text means something bad, like a sick or injured slave. "], "li");
	App.Events.addNode(ul, ["Yellow text means something neutral but noteworthy. "], "li");
	App.Events.addNode(ul, ["pink text means an increase in a slave's regard for to you. "], "li");
	App.Events.addNode(ul, ["Orchid text means a decrease in a slave's regard for to you. "], "li");
	App.Events.addNode(ul, ["Aquamarine text means an increase in a slave's",
		App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust inc"), "of to you, and a reduction in her fear of you. "], "li");
	App.Events.addNode(ul, ["Gold text means a decrease in the slave's",
		App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust dec"), " of you, and an increase in her fear of you. "], "li");
	App.Events.addNode(ul, ["Orange-red text means a decrease in a hateful slave's fear of you. "], "li");
	App.Events.addNode(ul, ["Lime text means something has grown or improved, which is usually, but not always, good. "], "li");
	App.Events.addNode(ul, ["Orange text means something has shrunk or degraded, which is usually, but not always, bad. "], "li");
	App.Events.addNode(ul, ["Yellow-green text is for a",
		App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"), "-related"), "event. "], "li");
	App.Events.addNode(ul, ["Coral text is used for simple identifiers that can be used to check a slave's general type at a glance, also weakening fetishes. "], "li");
	App.Events.addNode(ul, ["Light coral text is used when a slave's fetish strengthens or develops. "], "li");
	App.Events.addNode(ul, ["Light green text is used to indicate positive relationships. "], "li");
	App.Events.addNode(ul, ["Light salmon text is used when a rivalry develops or strengthens. "], "li");
	App.Events.addNode(ul, ["Violet text means an increase in sex drive. "], "li");
	App.Events.addNode(ul, ["Khaki text means a decrease in sex drive. "], "li");
	r.push(ul);
	App.Events.addParagraph(f, r);

	r = [];
	r.push("It is important to note that if a scene doesn't have colored text, it doesn't impact a slave's stats. For example, the short sex scenes available from the main screen are for the most part unlimited and have no real gameplay effect: they are for fun and flavor only.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("This game produces less visible text than a lot of text-based H-Games; this is because most text has numerous variations that change based on a slave's body, mental state etc. The author has deliberately made some of the variations available only with extreme stats so that new content will still be out there even if you play for a while.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("Things that increase income from");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("prostitution", "Whoring"), ","));
	r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
	r.push("gain from");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("slutting", "Public Service"), ","));
	r.push("and performance in most jobs include all appearance stats (that's right, every one; though some are more or less important),");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("sexual skills", "Skills"), ","));
	r.push("a slave's");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("health", "Health"), ","));
	r.push("and the state of a slave's holes. Going from a novice to a veteran whore will have non-linear impacts on income, since a novice will get good");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("for being fresh and little");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("for her skills, and a veteran will get the reverse. The");
	r.push(App.Encyclopedia.Dialog.linkDOM("fetishes", "Fetishes"));
	r.push("and physical statuses that get pink text on the main menu (huge tits, bisexual, etc.) give bonuses.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The game is not intended to be crushingly difficult, but it is balanced so that in order to achieve some of the best event outcomes, and eventually in order to survive, the player must build a business empire that turns a significant profit. Profits are necessary because the player will want to be able to make some major expenditures in the late game. Buy low, sell high, and always try to improve your slaves. Even something as simple as a few weeks' personal attention to fix");
	r.push(App.Encyclopedia.Dialog.linkDOM("mental flaws", "Flaws"));
	r.push("and boost");
	r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "devotion accept"));
	r.push("can produce significant profits when a slave is resold.");
	App.Events.addParagraph(f, r);

	return f;
}, "guide");

App.Encyclopedia.addArticle("Keyboard Shortcuts", function() {
	const f = new DocumentFragment();
	let r;

	r = [];
	r.push(`The uppermost button (in events and reports it continues the game, while in menus it functions as a back button) in the left-side UI bar can be activated via context sensitive keybinds; ${App.UI.Hotkeys.hotkeys("endWeek")} is used to end the week from the main menu, and ${App.UI.Hotkeys.hotkeys("nextLink")} is used to continue in all other situations.`);
	App.Events.addParagraph(f, r);

	r = [];
	r.push(`Within slaves' individual menus <strong>${App.UI.Hotkeys.hotkeys("prev-slave")}</strong> will move to the last slave and <strong>${App.UI.Hotkeys.hotkeys("next-slave")}</strong> to the next.`);
	r.push(`Review your personal affairs with <strong>${App.UI.Hotkeys.hotkeys("Manage Personal Affairs")}</strong> and weekly actions with <strong>${App.UI.Hotkeys.hotkeys("Personal Attention Select")}</strong>.`);
	const ul = document.createElement("ul");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("Rules Assistant")}</strong> will open RA Rules.`], "li");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("Manage Arcology")}</strong> will open arcology management.`], "li");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("Options")}</strong> will opens the options menu.`], "li");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("Buy Slaves")}</strong> will open the slave markets.`], "li");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("BG Select")}</strong> will open Bodyguard management.`], "li");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("Future Society")}</strong> will open Future Societies.`], "li");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("Manage Penthouse")}</strong> will open Manage Penthouse.`], "li");
	App.Events.addNode(ul, [`<strong>${App.UI.Hotkeys.hotkeys("Manage Penthouse")}</strong> will <strong>only open</strong> Head Girl management on the main page.`], "li");
	r.push(ul);
	App.Events.addParagraph(f, r);

	r = [];
	r.push("Nearly every key can be rebound in Hotkey Settings which can be accessed in game via SideBar -> Options -> Hotkey Settings.");
	App.Events.addParagraph(f, r);

	return f;
}, "guide");

App.Encyclopedia.addArticle("The Arcology Interface", function() {
	const f = new DocumentFragment();
	let r;

	r = [];
	r.push("The Arcology Interface is the large table-based display at the top of the main menu. It's designed as an abstract representation of the arcology.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("It is divided into levels and sectors. Levels are the horizontal rows. An arcology is a very large building, and each Level includes many floors. Sectors are slices of those levels. For example, on Levels with four Sectors, each sector includes a quarter of each floor that's part of that Level. Each Sector has its own cell in the interface, and each Sector is occupied by facilities, tenants, or both. Each type of Sector occupant is bordered in a different color. The contents of a Sector can be viewed and changed by clicking on the text inside a Sector.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The uppermost level is the Penthouse. It's where the player character and the slaves under their direct supervision live, and it can be upgraded with a number of facilities that can be accessed through shortcuts that are added to the Penthouse in the interface once they're installed. Some of these facilities can house some of the player character's sex slaves. Unlike every other Sector, the Penthouse is always owned by the player and cannot be sold. Every other Sector can be privately owned, reducing the player's control of the arcology. Privately owned Sectors can be purchased, or acquired using");
	r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
	r.push("if the player character's");
	r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
	r.push("is extremely high. Privately owned sectors are bordered in red regardless of what's in them.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The next level down, with three Sectors, is the Promenade, which is a major social area and hosts most of the businesses which cater to the arcology's citizens. Promenade Sectors are occupied by Shops by default, which will automatically be filled by business tenants that will pay the player character rent if they own the Sector. Promenade Sectors can be upgraded into");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("brothels", "Brothel"), ","));
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("clubs", "Club"), ","));
	r.push("or an enhanced version of shops which will attract business tenants that help advance a specific");
	r.push(App.Encyclopedia.Dialog.linkDOM("future society", "Future Societies"));
	r.push("model, and still provide rent.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The next three levels have four sectors and are living areas that are occupied by apartments by default. These house arcology citizens, who pay rent, and who are indirectly very important because they determine the level of local demand for sexual services provided by whores, public servants, and other sex slaves doing sexual jobs. Apartments can be upgraded for either density or luxury. Dense Apartments increase the citizen population, and are therefore useful to keep demand up if the player is relying on selling or giving away sexual services. Luxury apartments increase the arcology's prosperity, and are therefore a better choice if demand for sexual services isn't a priority.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The first level with five Sectors is the Concourse. Like the Promenade, it hosts businesses, but these focus more on bulk trade and less on citizens' luxury needs, and include the arcology's slave markets. Its sectors are occupied by Markets by default, which pay rent. Concourse sectors can be upgraded into a");
	r.push(App.Encyclopedia.Dialog.linkDOM("pit", "Pit"));
	r.push("for fighting slaves, an");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("arcade", "Arcade"), ","));
	r.push("or into a flagship store for the player character's");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("corporation", "The Corporation"), "."));
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The lowest level, also with five Sectors, is the Service level. Its Sectors are occupied by Manufacturing by default, which of course pay rent. If the player is focusing on menial slaves, its Sectors can be upgraded into pens, to increase the total number of");
	r.push(App.Encyclopedia.Dialog.linkDOM("menial slaves", "Menial Slaves"));
	r.push("that can be kept in the arcology, or into Sweatshops, to put the labor of menial slaves in the arcology to use. Alternatively, these Sectors can be upgraded into a");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("dairy", "Dairy"), ","));
	r.push("or into a barracks, which will reduce the weekly upkeep of any mercenaries the player character has hired.");
	App.Events.addParagraph(f, r);

	return f;
}, "guide");

App.Encyclopedia.addArticle("Tips and Tricks", function() {
	const f = new DocumentFragment();
	let r;

	App.UI.DOM.appendNewElement("p", f, "Buy low, sell high.");

	r = [];
	r.push("Slaves will sometimes default to the resting assignment after they're done with something else. If a slave is resting and the game suspects that she shouldn't be, her assignment will be lime, bold, and underlined on the main menu to indicate that.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("If a new slave isn't afraid of you, make her. Then and only then build her");
	r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted"), "."), ["devotion", "accept"]));
	App.Events.addParagraph(f, r);

	r = [];
	r.push("The personal attention assignment should be used tactically. It is the most powerful single way of improving slaves because it's reliable. Devotion and");
	r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust"));
	r.push("gains during a single week are normally capped. However, personal attention removes these caps. This is most powerful for slaves that are already well broken and are enjoying fairly luxurious lives. With so many things driving up devotion and");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("trust", "Trust"), ","));
	r.push("using personal attention to remove the caps can quickly maximize both stats. Focusing on business instead (by selecting no slave for personal attention) is also powerful. Doing so produces");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("proportional to the amount of");
	r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
	r.push("on hand, and improves prosperity growth, which improves future income from rents.");
	App.Events.addParagraph(f, r);

	return f;
}, "guide");

App.Encyclopedia.addArticle("Design Your Master", function() {
	const outer = document.createElement("p");
	const showSecExp = V.secExpEnabled > 0;

	outer.append(content(showSecExp));

	return outer;

	/**
	 * @param {boolean} showSecExp
	 * @returns {DocumentFragment}
	 */
	function content(showSecExp) {
		const f = new DocumentFragment();
		let r;

		r = [];
		r.push("This happens at the start of a game of FC: it is not possible to change the PC during the main game. The player must select a career background, a rumored method of acquiring the arcology, and their age group; then choose between some broad body and gender options.");
		App.Events.addParagraph(f, r);

		r = [];
		r.push(`Wealth is a choice for both the career background and rumored method of acquiring the arcology options. Both provide you with ${cashFormat(10000)} each for a total of ${cashFormat(30000)} if both are chosen. As a background option it means that your starting slaves will have two free levels of sex skills available`);
		if (showSecExp) {
			r.push("and maintaining");
			r.push(App.Encyclopedia.Dialog.linkDOM("authority", "Security Expansion", "darkviolet"));
			r.push("will be harder, but upgrades in the propaganda hub will be");
			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
		} else {
			r.push(r.pop() + ".");
		}
		App.Events.addParagraph(f, r);

		App.UI.DOM.appendNewElement("h3", f, "Career background options");
		const p = document.createElement("p");
		p.append("Being an ex-");
		let ul = document.createElement("ul");

		r = [];
		r.push("business owner (also referred to as capitalist) enhances the business-focused personal attention, increasing the");
		r.push(App.Encyclopedia.Dialog.linkDOM("money", "Money", "cash"));
		r.push("it produces and improving arcology prosperity when business-focused personal attention is selected. Also,");
		if (showSecExp) {
			r.push("upgrades in the propaganda hub will be");
			r.push(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money", "cash"));
			r.push("and");
		}
		r.push("your starting slaves will have a free level of prostitution skill available.	Starts having already mastered");
		r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Trading", "PC Skills"), "."));
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("private security contractor (also referred to as mercenary background) greatly reduces the cost of keeping mercenaries in your employ.");
		if (showSecExp) {
			r.push("Upgrades in the security HQ will be");
			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
		}
		r.push("Your starting slaves will have free");
		r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust careful"));
		r.push("available. Starts having already mastered");
		r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Warfare", "PC Skills"), "."));
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("slave driver enhances slave-focused personal attention, adding bonus");
		r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "devotion accept"));
		r.push("or");
		r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust careful"));
		r.push("to many training applications or preventing their loss.");
		if (showSecExp) {
			r.push(App.Encyclopedia.Dialog.linkDOM("Authority", "Security Expansion", "darkviolet"));
			r.push("will be easier to maintain. Plus upgrades in the security HQ will be");
			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
		}
		r.push("Starting slaves will be cheaper, in addition having already mastered");
		r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Slaving", "PC Skills"), "."));
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("arcology engineer provides a significant discount on many arcology upgrades and expansions. In addition to the arcology starting off with basic economic upgrades already installed. Starts having already mastered");
		r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Engineering", "PC Skills"), "."));
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("doctor allows the player character to perform surgery personally, providing a discount on surgery costs and a reduction to resulting health damage. Additionally, slaves may react differently to surgery if the player character performs it and starting slaves will have free implants available. Starts having already mastered");
		r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Medicine", "PC Skills"), "."));
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("escort provides a one-time bonus to a slave's entertainment, whoring, and two sexual skills when a new slave is acquired. Furthermore, society will not take lightly to being run by an ex-whore, and you will receive heavy");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		if (showSecExp) {
			r.push("and");
			r.push(App.Encyclopedia.Dialog.linkDOM("authority", "Security Expansion", "darkviolet"));
		}
		r.push("losses each week. You can spend your free time selling your body for");
		r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("money", "Money"), ","), "cash"));
		r.push("at the cost of a large amount of");
		r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation"), "."), ["reputation", "inc"]));
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("celebrity provides extra");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		r.push("at game start");
		if (showSecExp) {
			r.push("and upgrades in the propaganda hub will be");
			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
		} else {
			r.push(r.pop() + ".");
		}
		r.push("Starting slaves will have a free level of entertainment skill available.");
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("servant provides a one-time bonus to a slave's");
		r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust careful"));
		r.push("and");
		r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted"), "."), ["devotion", "accept"]));
		r.push("Furthermore, society will not approve of being run by an ex-servant, and you will face");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		if (showSecExp) {
			r.push("and");
			r.push(App.Encyclopedia.Dialog.linkDOM("authority", "Security Expansion", "darkviolet"));
		}
		r.push("losses each week. You can spend your free time, putting your previous experience to use, by greatly reducing the costs of your penthouse. You also passively reduce costs when not focusing on doing so.");
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("gang leader provides a one-time bonus to a slave's health and a free level of combat skill. Furthermore, society will not approve of being run by a gang-banger, and you will face");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		r.push("losses each week. New slaves will likely have heard of your previous exploits and fear you.");
		if (showSecExp) {
			r.push("You know how to haggle slaves and assert your");
			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("authority", "Security Expansion"), "."), "darkviolet"));
			r.push("Plus upgrades in the security HQ will be");
			r.push(App.UI.DOM.makeElement("span", App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money"), "."), "cash"));
		}
		r.push("You know how to haggle slaves. You can spend your free time putting your previous experience to use, proving another source of income however this isn't guaranteed.");
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("incursion specialist provides starting slaves with a free level of intelligence. Also certain upgrades may be");
		r.push(App.Encyclopedia.Dialog.linkDOM("cheaper", "Money", "cash"));
		r.push("and you may find alternative approaches to");
		if (showSecExp) {
			r.push("problems, but you will find");
			r.push(App.Encyclopedia.Dialog.linkDOM("authority", "Security Expansion", "darkviolet"));
			r.push("quite hard to maintain.");
		} else {
			r.push("problems.");
		}
		r.push("Starts having already mastered");
		r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("Hacking", "PC Skills"), "."));
		App.Events.addNode(ul, r, "li");

		p.append(ul);
		f.append(p);

		r = [];
		let text;
		if (showSecExp) {
			text = "Hide SecExp details";
		} else {
			r.push("Players using the");
			r.push(App.Encyclopedia.Dialog.linkDOM("Security Expansion", "Security Expansion"));
			r.push("mod may want to view this page with");
			text = "additional details";
		}
		r.push(App.UI.DOM.combineNodes(App.UI.DOM.link(text, () => {
			$(outer).empty().append(content(!showSecExp));
		}), "."));
		App.Events.addParagraph(f, r);

		App.UI.DOM.appendNewElement("h3", f, "Rumored acquisition options");
		ul = document.createElement("ul");
		r = [];
		r.push("Hard Work provides a one-time bonus to both");
		r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "devotion accept"));
		r.push("and");
		r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust accept"));
		r.push("when a new slave is acquired.");
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("Force means that if a slave does not have enough");
		r.push(App.Encyclopedia.Dialog.linkDOM("devotion", "From Rebellious to Devoted", "devotion accept"));
		r.push("to obey when acquired, this option will terrify her and reduce her");
		r.push(App.Encyclopedia.Dialog.linkDOM("trust", "Trust", "trust accept"));
		r.push("to the point where she should comply.");
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("Social Engineering means that you will start with the first societal option unlocked, since you manipulated the arcology's citizens.");
		App.Events.addNode(ul, r, "li");

		r = [];
		r.push("Luck provides extra");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		r.push("at game start, but no ongoing advantages once the main game begins.");
		App.Events.addNode(ul, r, "li");

		App.UI.DOM.appendNewElement("p", f, ul);

		App.UI.DOM.appendNewElement("h3", f, "Age groups");
		r = [];
		r.push("Older PCs enjoy easier");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		r.push("maintenance, but possess lower");
		r.push(App.Encyclopedia.Dialog.linkDOM("sexual energy", "Sexual Energy"));
		r.push("while younger PC's are the opposite.");
		App.Events.addParagraph(f, r);

		App.UI.DOM.appendNewElement("h3", f, "Body and gender options");
		r = [];
		r.push("All PC body changes will alter scenes, but their main mechanical effect is on");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		r.push("maintenance. Feminine options will make it harder to maintain");
		r.push(App.Encyclopedia.Dialog.linkDOM("reputation", "Arcologies and Reputation", "reputation inc"));
		r.push("without providing any gameplay advantage, making playing as a feminine PC a form of increased difficulty. There are other minor gameplay differences including differing slave reactions to the PC based on attraction, but these are fairly minor.");
		App.Events.addParagraph(f, r);

		return f;
	}
}, "guide");

App.Encyclopedia.addCategory("guide", function() {
	const r = [];
	r.push(App.Encyclopedia.Dialog.linkDOM("First Game Guide", "First Game Guide"));
	r.push(App.Encyclopedia.Dialog.linkDOM("How to Play", "How to Play"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Keyboard Shortcuts", "Keyboard Shortcuts"));
	r.push(App.Encyclopedia.Dialog.linkDOM("The Arcology Interface", "The Arcology Interface"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Tips and Tricks", "Tips and Tricks"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Design Your Master", "Design Your Master"));
	return App.UI.DOM.generateLinksStrip(r);
});


code:
App.Encyclopedia.addArticle("Obtaining Slaves", function() {
	const f = new DocumentFragment();
	App.UI.DOM.appendNewElement("p", f, "Future room for lore text", "note");
	App.UI.DOM.appendNewElement("p", f, "Choose a more particular entry below:");
	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Kidnapped Slaves", function() {
	const f = new DocumentFragment();

	App.Events.addParagraph(f, ["Slavers, from disreputable to noble, visit the Free Cities in droves. Their merchandise is, as a rule, offered as-is and no questions asked. This usually means that their charges have been forcibly kidnapped. These slaves are generally rebellious, often unhealthy, and always cheap."]);

	App.Encyclopedia.addArticleSource(f, "Guide to Modern Slavery, 2037 Edition", "Lawrence, W. G.");

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Slave Schools", function() {
	const f = new DocumentFragment();
	let r;

	r = [];
	if (V.minimumSlaveAge < 16) {
		r.push("The Free Cities host what are referred to as 'orphanages,' but are in fact slave schools.");
	} else {
		r.push("It is not legal to own children in the Free Cities. It is however legal to hold an interest in future ownership of a child once they reach their 16th birthday. The Free Cities host what are referred to as 'orphanages,' but are in fact slave schools. Of course, instruction cannot include sexual training, so it instead focuses on obedience and fitness.");
	}
	App.Events.addParagraph(f, r);

	App.Events.addParagraph(f, ["The standard slave school produces merchandise to a strict mold. Their stock is guaranteed to be robustly healthy, at a sleek weight, body modification free, 16 to 19 years of age, very obedient, and 100% virgin. A few schools specialize in slaves with non-standard organs or in modified slaves, but most protect brand identity by confining themselves to natural females."]);

	App.Events.addParagraph(f, ["It has recently become common practice to begin treating such trainees with drugs years before sale. Not all orphanages engage in this questionable practice, usually justified as 'seeing to orphans' medical welfare,' but you will occasionally see fresh slaves sold with breasts and asses unusually well-developed for their age. These are very rare, as the newness of slavery means that few slaves have been so from a young age. Presumably, slaves treated in this way will become more common as the Free Cities mature."]);

	App.Encyclopedia.addArticleSource(f, "Guide to Modern Slavery, 2037 Edition", "Lawrence, W. G.");

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Stables", function() {
	const f = new DocumentFragment();

	App.Events.addParagraph(f, ["At any given time, many hundreds of new slaves are listed for sale in the Free City. Since these slaves have come through a training stable, they will tend to be fairly obedient, reasonably healthy, and have basic sexual skill, but will never be virgins."]);

	App.Encyclopedia.addArticleSource(f, "Guide to Modern Slavery, 2037 Edition", "Lawrence, W. G.");

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Household Liquidations", function() {
	const f = new DocumentFragment();

	App.Events.addParagraph(f, ["It is natural that where there is a demand for slaves who are related to one another, supply should arise."]);

	App.Events.addParagraph(f, ["Suppliers of slaves from the outside world are well aware that paired slaves, whether mothers and daughters or sisters, command a premium. This special merchandise is best found at dealers that specialize in it. After all, the demand is strong enough that only experienced dealers have the skill and equipment to defeat all the tricks suppliers are willing to use to pass slaves off as relatives."]);

	App.Events.addParagraph(f, ["Nature has contrived that the demand for twin slaves should far outstrip the supply. Since slavery is new, a majority of those now enslaved were born free, so this is difficult for slave trainers to address. However, the coming decades should see a great increase in the number of slave twins as breeders improve fertility treatments."]);

	App.Encyclopedia.addArticleSource(f, "Guide to Modern Slavery, 2037 Edition", "Lawrence, W. G.");

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Direct Sales", function() {
	const f = new DocumentFragment();

	App.Events.addParagraph(f, ["On occasion, an established slaveowner will sell a trained and modified slave due to financial need, because he is bored of her, or because he trains unique slaves as a hobby."]);

	App.Events.addParagraph(f, ["Some of the most powerful persons in the Free Cities also maneuver their enemies into selling a favorite slave as a way of bloodlessly showing dominance. The truly powerful occasionally feel the need to show that they can obtain any slave, at any time, regardless of her owners' wishes."]);

	App.Encyclopedia.addArticleSource(f, "Guide to Modern Slavery, 2037 Edition", "Lawrence, W. G.");

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Pre-Owned Slaves", function() {
	const f = new DocumentFragment();

	App.Events.addParagraph(f, ["The slaves left behind by the previous owner of your arcology are from a catalog of slaves that can also be accessed through the pre-owned slave vendor."]);

	// TODO: update link
	App.Events.addParagraph(f, ["Most of these slaves were submitted to the game by anons on /d/. If you'd like to submit a slave for addition to the game, you can do so at the GitGud development site."]);

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Discarded Slaves", function() {
	const f = new DocumentFragment();
	let r;

	App.Events.addParagraph(f, ["Slaves don't last forever in the Free Cities. Many don't even last until retirement, with broken minds and abused or over-used bodies."]);

	r = [];
	r.push("These slaves which have lost their value are often simply culled from the owners' herds, but may also be sold through");
	r.push(App.Encyclopedia.Dialog.linkDOM("the Flesh Heap", "The Flesh Heap"));
	r.push("as discount merchandise for new or cash-strapped slaveowners who can wring some final use out of them. Their new owners may end up using them as discount whores,");
	r.push(App.UI.DOM.combineNodes(App.Encyclopedia.Dialog.linkDOM("living sex toys", "Fuckdolls"), ","));
	r.push("or for medical testing.");
	App.Events.addParagraph(f, r);

	r = [];
	r.push("Some discarded slaves are also");
	r.push(App.Encyclopedia.topic("rescued"));
	r.push("by the so-called Slave Shelters. These charities place the discarded slaves with well-off slaveowners who are willing to invest the time and effort into caring for them, whether to restore them to serviceable condition or simply for humanitarian reasons. Abuse and resale of placed shelter slaves is generally prohibited, and most shelters attempt to enforce these terms with regular inspections.");
	App.Events.addParagraph(f, r);

	App.Encyclopedia.addArticleSource(f, "Guide to Modern Slavery, 2037 Edition", "Lawrence, W. G.");

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("The Flesh Heap", function() {
	const f = new DocumentFragment();
	let r;

	r = [];
	r.push("More of a trash heap than a slave market, the");
	r.push(App.Encyclopedia.topic("Flesh Heap"));
	r.push("is a dumping ground for thoroughly broken slaves. Relatively healthy bodies are usually scooped up for medical testing or other purposes; several that one wouldn't want to waste a valuable slave on. Anything with some sort of life in it is up for sale, usually at extremely low prices, though one gets what they pay for; most slaves are nothing more than vegetables. One would have to place a reserve should they want a mindless, healthy slave for whatever they seek.");
	App.Events.addParagraph(f, r);

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("The Job Fulfillment Center", function() {
	const f = new DocumentFragment();
	let r;

	r = [];
	r.push("If you are looking for a slave qualified for a specific role, look no further than the Traders Union that makes up the Job Fulfillment Center. Leave the job description and a list of desired traits and before long a suitable slave will be delivered to your doorstep and ready to serve you. Due to the nature of the business, these slaves are not");
	r.push(App.Encyclopedia.Dialog.linkDOM("cheap", "Money", "cash"));
	r.push("and usually not perfect, but they always fulfill their job adequately and obediently.");
	App.Events.addParagraph(f, r);

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addArticle("Wetware CPUs", function() {
	const f = new DocumentFragment();

	App.Events.addParagraph(f, ["Slaves stripped of all unneeded parts, attached to a VR world, and honed to near perfection. Their minds are peerless, but their bodies are broken; if one is able to overcome such an obstacle, a valuable slave awaits."]);

	return f;
}, "obtainingSlaves");

App.Encyclopedia.addCategory("obtainingSlaves", function() {
	const r = [];
	r.push(App.Encyclopedia.Dialog.linkDOM("Kidnapped Slaves", "Kidnapped Slaves"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Slave Schools", "Slave Schools"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Stables", "Stables"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Household Liquidations", "Household Liquidations"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Direct Sales", "Direct Sales"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Pre-Owned Slaves", "Pre-Owned Slaves"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Random Events", "Random Events"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Discarded Slaves", "Discarded Slaves"));
	r.push(App.Encyclopedia.Dialog.linkDOM("The Flesh Heap", "The Flesh Heap"));
	r.push(App.Encyclopedia.Dialog.linkDOM("The Job Fulfillment Center", "The Job Fulfillment Center"));
	r.push(App.Encyclopedia.Dialog.linkDOM("Wetware CPUs", "Wetware CPUs"));
	r.push(App.Encyclopedia.Dialog.linkDOM("The Corporation", "The Corporation"));
	return App.UI.DOM.generateLinksStrip(r);
});

repo_name: Pecanus/fc

license: mit


code:
:: Related Links [nobr]

/* pages asking the player to click a link for more information have no section heading */
<<if !["Being in Charge", "Body", "Fetishes", "Game Mods", "Inflation", "Leadership Positions", "Lolimod", "Lore", "Obtaining Slaves", "Paraphilias", "Playing Free Cities", "Skills", "Slave Assignments", "Slave Modification", "Slaves", "Terrain Types", "The X-Series Arcology"].includes($encyclopedia)>>

Related Links

<</if>>

<<set _pass = App.Encyclopedia.renderCategory($encyclopedia)>>
<<if _pass>>
	<<includeDOM _pass>>
<<else>>

<<switch $encyclopedia>>

/**********
SLAVE LEADERS:
**********/
<<case "Attendant" "Bodyguard" "Career Experience" "Concubine" "DJ" "Farmer" "Head Girl" "Leadership Positions" "Madam" "Matron" "Milkmaid" "Nurse" "Recruiter" "Schoolteacher" "Stewardess" "Wardeness">>
	<<= App.Encyclopedia.Dialog.linkSC("Leadership Positions", "Leadership Positions")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Career Experience", "Career Experience")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Attendant", "Attendant")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Bodyguard", "Bodyguard")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Concubine", "Concubine")>>
	| <<= App.Encyclopedia.Dialog.linkSC("DJ", "DJ")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Farmer", "Farmer")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Head Girl", "Head Girl")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Madam", "Madam")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Matron", "Matron")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Milkmaid", "Milkmaid")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Nurse", "Nurse")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Recruiter", "Recruiter")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Schoolteacher", "Schoolteacher")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Stewardess", "Stewardess")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Wardeness", "Wardeness")>>

/**********
SLAVE SKILLS
**********/
<<case "Anal Skill" "Combat Skill" "Entertainment Skill" "Oral Skill" "Skills" "Vaginal Skill" "Whoring Skill">>
	<<= App.Encyclopedia.Dialog.linkSC("Anal Skill", "Anal Skill")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Combat Skill", "Combat Skill")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Entertainment Skill", "Entertainment Skill")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Oral Skill", "Oral Skill")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Vaginal Skill", "Vaginal Skill")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Whoring Skill", "Whoring Skill")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Career Experience", "Career Experience")>>

/**********
SLAVE FETISHES:
**********/
<<case "Boob Fetishists" "Buttsluts" "Cumsluts" "Doms" "Fetishes" "Humiliation Fetishists" "Masochists" "Pregnancy Fetishists" "Sadists" "Submissives">>
	<<= App.Encyclopedia.Dialog.linkSC("Boob Fetishists", "Boob Fetishists")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Buttsluts", "Buttsluts")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Cumsluts", "Cumsluts")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Doms", "Doms")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Humiliation Fetishists", "Humiliation Fetishists")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Masochists", "Masochists")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Pregnancy Fetishists", "Pregnancy Fetishists")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Sadists", "Sadists")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Submissives", "Submissives")>>

/**********
SLAVE PARAPHILIAS
**********/
<<case "Abusiveness" "Anal Addicts" "Attention Whores" "Breast Obsession" "Breeding Obsession" "Cum Addicts" "Maliciousness" "Paraphilias" "Self Hatred" "Self Neglect">>
	<<= App.Encyclopedia.Dialog.linkSC("Abusiveness", "Abusiveness")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Anal Addicts", "Anal Addicts")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Attention Whores", "Attention Whores")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Breast Obsession", "Breast Obsession")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Breeding Obsession", "Breeding Obsession")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Cum Addicts", "Cum Addicts")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Maliciousness", "Maliciousness")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Self Hatred", "Self Hatred")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Self Neglect", "Self Neglect")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Fetishes", "Fetishes")>>

/**********
SLAVE QUIRKS
**********/
<<case "Adores Men" "Adores Women" "Advocate" "Confident" "Cutting" "Fitness" "Funny" "Insecure" "Sinful" "Caring" "Gagfuck Queen" "Painal Queen" "Perverted" "Quirks" "Romantic" "Size Queen" "Strugglefuck Queen" "Tease" "Unflinching">>
	//Behavioral <<= App.Encyclopedia.Dialog.linkSC("Quirks", "Quirks")>>://
	<<= App.Encyclopedia.Dialog.linkSC("Adores men", "Adores Men")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Adores women", "Adores Women")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Advocate", "Advocate")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Confident", "Confident")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Cutting", "Cutting")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Fitness", "Fitness")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Funny", "Funny")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Insecure", "Insecure")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Sinful", "Sinful")>>

	//Sexual <<= App.Encyclopedia.Dialog.linkSC("Quirks", "Quirks")>>://
	<<= App.Encyclopedia.Dialog.linkSC("Caring", "Caring")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Gagfuck Queen", "Gagfuck Queen")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Painal Queen", "Painal Queen")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Perverted", "Perverted")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Romantic", "Romantic")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Size Queen", "Size Queen")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Strugglefuck Queen", "Strugglefuck Queen")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Tease", "Tease")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Unflinching", "Unflinching")>>

/**********
SLAVE FLAWS
**********/
<<case "Anorexic" "Arrogant" "Bitchy" "Devout" "Flaws" "Gluttonous" "Hates Men" "Hates Women" "Liberated" "Odd" "Apathetic" "Crude" "Hates Anal" "Hates Oral" "Hates Penetration" "Idealistic" "Judgemental" "Repressed" "Shamefast">>
	//Behavioral <<= App.Encyclopedia.Dialog.linkSC("Flaws", "Flaws")>>://
	<<= App.Encyclopedia.Dialog.linkSC("Anorexic", "Anorexic")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Arrogant", "Arrogant")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Bitchy", "Bitchy")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Devout", "Devout")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Gluttonous", "Gluttonous")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hates men", "Hates Men")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hates women", "Hates Women")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Liberated", "Liberated")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Odd", "Odd")>>

	//Sexual <<= App.Encyclopedia.Dialog.linkSC("Flaws", "Flaws")>>://
	<<= App.Encyclopedia.Dialog.linkSC("Apathetic", "Apathetic")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Crude", "Crude")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hates anal", "Hates Anal")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hates oral", "Hates Oral")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hates penetration", "Hates Penetration")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Idealistic", "Idealistic")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Judgemental", "Judgemental")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Repressed", "Repressed")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Shamefast", "Shamefast")>>

/**********
SLAVE RELATIONSHIPS
**********/
<<case "Emotional Slut" "Emotionally Bonded" "Relationships" "Rivalries" "Romances" "Slave Marriages" "Slaveowner Marriages">>
	<<= App.Encyclopedia.Dialog.linkSC("Relationships", "Relationships")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Rivalries", "Rivalries")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Romances", "Romances")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Emotionally Bonded", "Emotionally Bonded")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Emotional Slut", "Emotional Slut")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Marriages", "Slave Marriages")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slaveowner Marriages", "Slaveowner Marriages")>>

/**********
PREGNANCY
**********/
<<case "Artificial Insemination" "Breeders Dietary Blend" "Childbirth and C-Secs" "Cloning" "Fertility Mix" "Gestation Drugs and Labor Suppressants" "Hyper-Pregnancy" "Ova Transplantation" "Player Pregnancy" "Pregnancy" "Pregnancy Generator" "Slave Fertility" "Super Fertility Drugs" "Surrogacy" "Inbreeding">>
	<<= App.Encyclopedia.Dialog.linkSC("Pregnancy", "Pregnancy")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Fertility", "Slave Fertility")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Player Pregnancy", "Player Pregnancy")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hyper-Pregnancy", "Hyper-Pregnancy")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Super Fertility Drugs", "Super Fertility Drugs")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Fertility Mix", "Fertility Mix")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Breeders Dietary Blend", "Breeders Dietary Blend")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Pregnancy Generator", "Pregnancy Generator")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Childbirth and C-Secs", "Childbirth and C-Secs")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Gestation Drugs and Labor Suppressants", "Gestation Drugs and Labor Suppressants")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Artificial Insemination", "Artificial Insemination")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Surrogacy", "Surrogacy")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Cloning", "Cloning")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Ova Transplantation", "Ova Transplantation")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Eugenics Breeding Proposal", "Eugenics Breeding Proposal")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Repopulationist Breeding School", "Repopulationist Breeding School")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Inbreeding", "Inbreeding")>>

/**********
INFLATION
**********/
<<case "Belly Implants" "Cervix Micropump Filter" "Enemas and Force-Feeding" "Inflation" "Organic Mesh Breast Implant">>
	<<= App.Encyclopedia.Dialog.linkSC("Inflation", "Inflation")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Enemas and Force-Feeding", "Enemas and Force-Feeding")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Belly Implants", "Belly Implants")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Cervix Micropump Filter", "Cervix Micropump Filter")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Organic Mesh Breast Implant", "Organic Mesh Breast Implant")>>

/**********
SLAVE MODIFICATION
**********/
<<case "Slave Modification">>
	<<= App.Encyclopedia.Dialog.linkSC("Slave Modification", "Slave Modification")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Corrective Diet", "Corrective Diet")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Nipple Conversion — Penetratable", "Nipple Conversion — Penetratable")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Ejaculation Boosting Prostate Implant", "Ejaculation Boosting Prostate Implant")>>

/**********
THE X-SERIES ARCOLOGY
**********/
<<case "Personal Assistant" "Security Drones" "Slave Nutrition" "The Auto Salon" "The Pharmaceutical Fab." "The Remote Surgery" "The Studio" "The Wardrobe" "The X-Series Arcology" "Water Filtration" "What the Upgrades Do">>
	<<= App.Encyclopedia.Dialog.linkSC("What the Upgrades Do", "What the Upgrades Do")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Personal Assistant", "Personal Assistant")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Wardrobe", "The Wardrobe")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Auto Salon", "The Auto Salon")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Body Mod Studio", "The Studio")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Remote Surgery", "The Remote Surgery")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Pharmaceutical Fab.", "The Pharmaceutical Fab.")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Security Drones", "Security Drones")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Water Filtration", "Water Filtration")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Nutrition", "Slave Nutrition")>>

/**********
ARCOLOGY FACILITIES
**********/
<<case "Advertising" "Arcade" "Brothel" "Cellblock" "Clinic" "Club" "Dairy" "Facilities" "Farmyard" "Head Girl Suite" "Master Suite" "Nursery" "Pit" "Schoolroom" "Servants' Quarters" "Spa" "The Incubation Facility" "Variety">>
	//Arcology <<= App.Encyclopedia.Dialog.linkSC("Facilities", "Facilities")>>://
	<<= App.Encyclopedia.Dialog.linkSC("Arcade", "Arcade")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Brothel", "Brothel")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Cellblock", "Cellblock")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Clinic", "Clinic")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Club", "Club")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Dairy", "Dairy")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Head Girl Suite", "Head Girl Suite")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Master Suite", "Master Suite")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Pit", "Pit")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Schoolroom", "Schoolroom")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Servants' Quarters", "Servants' Quarters")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Spa", "Spa")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Nursery", "Nursery")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Farmyard", "Farmyard")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Incubation Facility ", "The Incubation Facility")>>

	//Facility Bonuses://
	<<= App.Encyclopedia.Dialog.linkSC("Advertising", "Advertising")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Variety", "Variety")>>

/**********
TERRAIN TYPES
**********/
<<case "Terrain Types" "Urban Terrain" "Rural Terrain" "Marine Terrain" "Oceanic Terrain">>
	<<= App.Encyclopedia.Dialog.linkSC("Urban", "Urban Terrain")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Rural", "Rural Terrain")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Marine", "Marine Terrain")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Oceanic", "Oceanic Terrain")>>

/**********
FUTURE SOCIETIES
**********/
<<case "Arabian Revivalism" "Asset Expansionism" "Aztec Revivalism" "Body Purism" "Chattel Religionism" "Chinese Revivalism" "Degradationism" "Edo Revivalism" "Egyptian Revivalism" "Ethnic Subjugationism" "Ethnic Supremacy" "Eugenics Focus" "Future Societies" "Gender Fundamentalism" "Gender Radicalism" "Hedonistic Decadence" "Intellectual Dependency" "Maturity Preferentialism" "Multiculturalism" "Pastoralism" "Paternalism" "Petite Admiration" "Physical Idealism" "Repopulationism" "Roman Revivalism" "Slave Professionalism" "Slimness Enthusiasm" "Statuesque Glorification" "Transformation Fetishism" "Youth Preferentialism" "Neo-Imperialism">>
	//Vanilla Future Societies://
	<<= App.Encyclopedia.Dialog.linkSC("Ethnic Supremacy", "Ethnic Supremacy")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Ethnic Subjugationism", "Ethnic Subjugationism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Gender Radicalism", "Gender Radicalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Gender Fundamentalism", "Gender Fundamentalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Paternalism", "Paternalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Degradationism", "Degradationism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Body Purism", "Body Purism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Transformation Fetishism", "Transformation Fetishism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Maturity Preferentialism", "Maturity Preferentialism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Youth Preferentialism", "Youth Preferentialism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slimness Enthusiasm", "Slimness Enthusiasm")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Asset Expansionism", "Asset Expansionism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Pastoralism", "Pastoralism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Physical Idealism", "Physical Idealism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Chattel Religionism", "Chattel Religionism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Multiculturalism", "Multiculturalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Roman Revivalism", "Roman Revivalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Egyptian Revivalism", "Egyptian Revivalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Edo Revivalism", "Edo Revivalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Arabian Revivalism", "Arabian Revivalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Chinese Revivalism", "Chinese Revivalism")>>

	//Modded Future Societies://
	<<= App.Encyclopedia.Dialog.linkSC("Repopulationism", "Repopulationism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Eugenics Focus", "Eugenics Focus")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Professionalism", "Slave Professionalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Intellectual Dependency", "Intellectual Dependency")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Petite Admiration", "Petite Admiration")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Statuesque Glorification", "Statuesque Glorification")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hedonistic Decadence", "Hedonistic Decadence")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Aztec Revivalism", "Aztec Revivalism")>>
 	| <<= App.Encyclopedia.Dialog.linkSC("Neo-Imperialism", "Neo-Imperialism")>>

/**********
LORE: THE FREE CITIES TODAY
**********/
<<case "Lore" "Money" "Food" "Disease in the Free Cities" "Free Cities Justice" "Modern Anal" "Slave Couture" "Slave Marriage" "The Ejaculate Market" "Gingering" "Dyes"
/**********
LORE: FREE CITIES CULTURE TOMORROW
**********/
"The New Rome" "The Return of Feudalism" "Naked, Barefoot, and Pregnant" "The Sons of Sekhmet" "The Top" "The Bottom" "The Purity of the Human Form" "A World Built on Implants" "Slaves as Stock" "Slavery and the Physical Ideal" "Faith in the Free Cities"
/**********
LORE: INTERVIEWS
**********/
"Slave Whore, Arcology K-2" "Slave Acolyte, Arcology V-7" "Public Slave, Arcology A-3" "Mercenary, Arcology B-2" "Slave Trainer, Arcology D-10" "Monarch, Arcology F-8">>
	//The Free Cities today://
	@@.yellowgreen; <<= App.Encyclopedia.Dialog.linkSC("Money", "Money")>>@@
	| <<= App.Encyclopedia.Dialog.linkSC("Disease in the Free Cities", "Disease in the Free Cities")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Free Cities Justice", "Free Cities Justice")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Modern Anal", "Modern Anal")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Couture", "Slave Couture")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Marriage", "Slave Marriage")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Ejaculate Market", "The Ejaculate Market")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Gingering", "Gingering")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Dyes", "Dyes")>>

//Free Cities culture tomorrow://
	<<= App.Encyclopedia.Dialog.linkSC("The New Rome", "The New Rome")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Return of Feudalism", "The Return of Feudalism")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Naked, Barefoot, and Pregnant", "Naked, Barefoot, and Pregnant")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Sons of Sekhmet", "The Sons of Sekhmet")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Top", "The Top")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Bottom", "The Bottom")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Purity of the Human Form", "The Purity of the Human Form")>>
	| <<= App.Encyclopedia.Dialog.linkSC("A World Built on Implants", "A World Built on Implants")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slaves as Stock", "Slaves as Stock")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slavery and the Physical Ideal", "Slavery and the Physical Ideal")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Faith in the Free Cities", "Faith in the Free Cities")>>

//Interviews://
	<<= App.Encyclopedia.Dialog.linkSC("Slave Whore, Arcology K-2", "Slave Whore, Arcology K-2")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Acolyte, Arcology V-7", "Slave Acolyte, Arcology V-7")>>
	<<if $seeExtreme != 0>>
		| <<= App.Encyclopedia.Dialog.linkSC("Public Slave, Arcology A-3", "Public Slave, Arcology A-3")>>
	<</if>>
	| <<= App.Encyclopedia.Dialog.linkSC("Mercenary, Arcology B-2", "Mercenary, Arcology B-2")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Trainer, Arcology D-10", "Slave Trainer, Arcology D-10")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Monarch, Arcology F-8", "Monarch, Arcology F-8")>>

/**********
BLACK MARKET
**********/
<<case "The Black Market" "Contraband and Illegal Goods" "Gender Radicalism Research" "Slave Professionalism Research" "Transformation Fetishism Research" "Asset Expansionist Research" "Slimness Enthusiast Research" "Hedonistic Decadence Research" "Eugenics Breeding Proposal" "Youth Preferentialism Research" "Repopulationist Breeding School">>
	<<= App.Encyclopedia.Dialog.linkSC("The Black Market", "The Black Market")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Contraband and Illegal Goods", "Contraband and Illegal Goods")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Gender Radicalism Research", "Gender Radicalism Research")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slave Professionalism Research", "Slave Professionalism Research")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Transformation Fetishism Research", "Transformation Fetishism Research")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Asset Expansionist Research", "Asset Expansionist Research")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Slimness Enthusiast Research", "Slimness Enthusiast Research")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Youth Preferentialism Research", "Youth Preferentialism Research")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Hedonistic Decadence Research", "Hedonistic Decadence Research")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Childhood Fertility Induced NCS", "Childhood Fertility Induced NCS")>>

/**********
MODS
**********/
<<case "Game Mods">>
	<<= App.Encyclopedia.Dialog.linkSC("Lolimod", "Lolimod")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Special Force Mod", "Special Force")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Security Expansion Mod", "Security Expansion")>>
	| <<= App.Encyclopedia.Dialog.linkSC("FCTV", "FCTV")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Catmod", "Catmod")>>

<<case "Lolimod" "Lolis and the Free Cities" "Fertility Age" "Male Fertility" "Cradle Robbers" "Precocious Puberty" "Childhood Fertility Induced NCS">>
	<<= App.Encyclopedia.Dialog.linkSC("Lolis and the Free Cities", "Lolis and the Free Cities")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Fertility Age", "Fertility Age")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Male Fertility", "Male Fertility")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Precocious Puberty", "Precocious Puberty")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Cradle Robbers", "Cradle Robbers")>>
	| <<= App.Encyclopedia.Dialog.linkSC("The Incubation Facility", "The Incubation Facility")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Childhood Fertility Induced NCS", "Childhood Fertility Induced NCS")>>

<<case "Security Expansion" "Battles">>
	<<= App.Encyclopedia.Dialog.linkSC("The Security Expansion Mod", "Security Expansion")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Battles", "Battles")>>

<<case "FCTV" "FCTVReceiver">>
	<<= App.Encyclopedia.Dialog.linkSC("FCTV", "FCTV")>>
	| <<= App.Encyclopedia.Dialog.linkSC("FCTVReceiver", "FCTVReceiver")>>

<<case "Catmod" "Bioengineering" "Catgirls">>
	<<= App.Encyclopedia.Dialog.linkSC("Catmod", "Catmod")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Catgirls", "Catgirls")>>
	| <<= App.Encyclopedia.Dialog.linkSC("Bioengineering", "Bioengineering")>>

<</switch>>
<</if>>


code:
/** Render a link that toggles the slave's favorite status
 * @param {App.Entity.SlaveState} slave
 * @param {function():void} [handler]
 * @returns {HTMLAnchorElement}
 */
App.UI.favoriteToggle = function(slave, handler) {
	function favLink() {
		const linkID = `fav-link-${slave.ID}`;
		if (V.favorites.includes(slave.ID)) {
			const link = App.UI.DOM.link(String.fromCharCode(0xe800), () => {
				V.favorites.delete(slave.ID);
				$(`#${linkID}`).replaceWith(favLink());

				if (handler) {
					handler();
				}
			});
			link.classList.add("icons", "favorite");
			link.id = linkID;
			return link;
		} else {
			const link = App.UI.DOM.link(String.fromCharCode(0xe801), () => {
				V.favorites.push(slave.ID);
				$(`#${linkID}`).replaceWith(favLink());

				if (handler) {
					handler();
				}
			});
			link.classList.add("icons", "not-favorite");
			link.id = linkID;
			return link;
		}
	}

	return favLink();
};


code:
App.Intro.alphaDisclaimer = function() {
	App.Intro.init();
	const node = new DocumentFragment();

	App.UI.DOM.appendNewElement("h2", node, "Warning");

	App.UI.DOM.appendNewElement("p", node, `This is a text-based game that includes descriptions of sexual activity, graphic violence, drug use, and other subjects not suitable for persons under the age of 18. This is a work of fiction; any resemblance to actual persons, places, or events is unintended.`, "yellow");

	App.UI.DOM.appendNewElement("h2", node, "Welcome!");

	App.UI.DOM.appendNewElement("p", node, `An in-game encyclopedia is available from the sidebar, with answers to most basic gameplay questions.`);
	App.Events.addParagraph(node, [
		App.UI.DOM.makeElement("span", `Important info for new players, and a reminder for FC veterans:`, "bold"),
		`when the player is offered a set of choices, the`,
		App.UI.DOM.makeElement("span", `Continue`, "bold"),
		`button at the top of the left sidebar will almost always remain available. Using this to decline all the options presented is not cheating. If it's available, it's supposed to be available. It represents the player character politely bowing out of the situation.`
	]);

	App.UI.DOM.appendNewElement("h2", node, "Please note");
	const p = App.UI.DOM.appendNewElement("p", node);
	App.Events.addNode(p, [
		App.UI.DOM.makeElement("span", `This is an alpha.`, "bold"),
		`That means the game is missing content, is full of bugs, is imbalanced, and is generally in an incomplete state. The game will keep a start of turn autosave. If you encounter a bug, we strongly recommend you reload your start of turn autosave immediately. Please submit your feedback and bug reports here. Consider attaching a save file and screenshot of the problem.`,
	], "div");
	App.Events.addNode(p, [`Pregmod is a modification of the original <i>Free Cities</i> ${V.ver} created by FCdev, which can be seen <a href='https://freecitiesblog.blogspot.com/' target='_blank'>here</a>.`], "div");

	App.Events.addNode(p, [`mod version: ${V.pmodVer}, build: ${V.releaseID}${App.Version.commitHash ? `, commit: ${App.Version.commitHash}` : ``}`], "div", "note");
	App.Events.addNode(p, [`4.0.0 is an alpha release. This means the new player content has minimal implementation.`], "div", "bold"); /* remove me with 4.0.0! */

	App.Events.addResponses(node, [
		new App.Events.Result(`More version info`, versionInfo)
	]);

	App.UI.DOM.appendNewElement("p", node, App.UI.DOM.passageLink(
		"I am 18 or more years of age, I understand, and I wish to continue",
		"Economy Intro"
	));

	return node;

	function versionInfo() {
		const frag = new DocumentFragment();
		App.Events.addNode(frag, [
			App.UI.DOM.makeElement("span", "Mod: expanded age ranges and other tweaks 2016-08-30", ["green", "note"]),
			App.UI.DOM.makeElement("span", `+SV`, "darkred"),
		], "div");
		App.UI.DOM.appendNewElement("div", frag, "Mod: extra preg content and other crap", ["green", "note"]);
		App.UI.DOM.appendNewElement("div", frag, "Saves from versions prior to 0.6 are not compatible.", "bold");

		return frag;
	}
};


code:
/**
 * Provide a mechanism to inspect multiple slaves at once (for example, for Household Liquidators and recETS).
 * @param {Array<App.Entity.SlaveState>} slaves
 * @param {boolean} showFamilyTree
 * @param {FC.SlaveMarketName} [market]
 * @returns {DocumentFragment}
 */
App.UI.MultipleInspect = function(slaves, showFamilyTree, market) {
	const tabBar = new App.UI.Tabs.TabBar("MultipleInspect");

	for (const slave of slaves) {
		tabBar.addTab(slave.slaveName, `slave${slave.ID}`, App.Desc.longSlave(slave, {market: market}));
	}

	if (slaves.length > 1 && showFamilyTree) {
		tabBar.addTab("Family Tree", "family-tree-tab", renderFamilyTree(slaves, slaves[0].ID));
	}

	return tabBar.render();
};


code:
App.UI.descriptionOptions = function() {
	const f = document.createDocumentFragment();
	App.UI.DOM.appendNewElement("h1", f, "Description Options");

	App.UI.DOM.appendNewElement("p", f,
		"These options will affect both the long form description of each slave and the miniscenes available from the main menu.",
		"scene-intro");

	const options = new App.UI.OptionsGroup();

	options.addOption("", "surnameOrder")
		.addValue("Allow nationality name order", 0).customDescription("Order names ''based on country of origin''.")
		.addValue("Force name surname", 1).customDescription("Names will always be ''Name Surname''.")
		.addValue("Force surname name", 2).customDescription("Names will always be ''Surname Name''.");

	options.addOption("", "seeRace")
		.addValue("Disable most mentions of race", 0).off()
		.customDescription("Ethnicity will ''almost never'' be mentioned.")
		.addValue("Enable mentions of race", 1).on().customDescription("Ethnicity will ''occasionally'' be mentioned.");

	options.addOption("", "seeNationality")
		.addValue("Disable most mentions of nationality", 0).off()
		.customDescription("Nationality will ''almost never'' be mentioned.")
		.addValue("Enable mentions of nationality", 1).on()
		.customDescription("Nationality will ''occasionally'' be mentioned.");

	options.addOption("The effects of implants are", "showImplantEffects")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Clothing is mostly", "showClothing")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Detailed slave age information is", "showAgeDetail")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Approximate height is", "showHeightCMs")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Cosmetic body mods are", "showBodyMods")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Sexual histories are", "showSexualHistory")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Attractiveness and Sexual scores are", "showScores")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Volume, in CCs, of breasts is", "showBoobCCs")
		.addValue("Shown", 1).on().addValue("Hidden", 0).off();

	options.addOption("Height and length units are in", "showInches")
		.addValueList([["Metric", 0], ["Both", 1], ["Imperial", 2]]);

	if (V.seeDicks > 0) {
		options.addOption("Approximate sizes of dicks and balls are", "showDickCMs")
			.addValue("Shown", 1).on().addValue("Hidden", 0).off();
	}

	options.addOption("Numbers are displayed as", "showNumbers")
		.addValueList([["Integers", 2], ["Both", 1], ["Words", 0]]);

	if (V.showNumbers === 1) {
		options.addOption(`Only numbers up to ${V.showNumbersMax} are displayed as words`, "showNumbersMax")
			.addValue("Default (20)", 20).showTextBox();
	}

	App.UI.DOM.appendNewElement("p", f, options.render());

	return f;
};