From bae29f4343674e4dce9dc342b3e733968fbdb27d Mon Sep 17 00:00:00 2001
From: DCoded <dicoded@email.com>
Date: Sat, 29 Jan 2022 20:29:53 -0500
Subject: [PATCH] Pit Decorations 2: Electric Boogaloo

---
 devTools/types/FC/facilities.d.ts  |  2 ++
 src/002-config/fc-version.js       |  2 +-
 src/facilities/pit/pit.js          | 50 ++++++++++++++++++++++++++++--
 src/facilities/pit/pitBC.js        |  1 +
 src/facilities/pit/pitFramework.js |  2 +-
 src/facilities/pit/pitUtils.js     |  1 +
 6 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/devTools/types/FC/facilities.d.ts b/devTools/types/FC/facilities.d.ts
index b0a63a0d2e7..c74e4d7810e 100644
--- a/devTools/types/FC/facilities.d.ts
+++ b/devTools/types/FC/facilities.d.ts
@@ -133,6 +133,8 @@ declare namespace FC {
 			audience: "none" | "free" | "paid";
 			/** Whether or not the bodyguard is fighting this week. */
 			bodyguardFights: boolean;
+			/** The type of decoration the Pit is using. */
+			decoration: FC.FutureSocietyDeco;
 			/**
 			 * Who is fighting this week.
 			 *
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index 8081e88f01b..c354f450722 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -2,5 +2,5 @@ App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "4.0.0-alpha.12",
 	commitHash: null,
-	release: 1158, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
+	release: 1159, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
 };
diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js
index 0276a96a07c..17de68b00df 100644
--- a/src/facilities/pit/pit.js
+++ b/src/facilities/pit/pit.js
@@ -41,6 +41,52 @@ App.Facilities.Pit.pit = class Pit extends App.Facilities.Facility {
 		return text.join(' ');
 	}
 
+	/** @returns {string} */
+	get decorations() {
+		/** @type {FC.Facilities.Decoration} */
+		const FS = {
+			// TODO: go over these again
+			"Roman Revivalist": `is styled after an ancient Roman gladiatorial arena. The floor is covered in a fine layer of sand, and large marble columns make up much of the décor.`,
+			"Neo-Imperialist": `is a futuristic take on an ancient Roman gladiatorial arena. The floor is a matte concrete, and all of the décor is sleek and modern.`,
+			"Aztec Revivalist": `is decorated in the traditional Aztec way, with stacked stone walls painted with bright murals and straw mats on the floor.`,
+			"Egyptian Revivalist": `is a fairly simple affair, little more than a sunken pit with a sand floor and sandstone walls.`,
+			"Edo Revivalist": `is styled after a lush Japanese garden, with a large open area in the center for the fighters.`,
+			"Arabian Revivalist": `is a fairly simple affair, little more than a sunken pit with a sand floor and sandstone walls.`,
+			"Chinese Revivalist": `is decorated like a traditional Chinese courtyard, with a large open area in the center surrounded by low buildings with paper walls and clay tile roofs.`,	// TODO: not actually sure if Chinese architecture used paper walls or if that's a Japanese thing
+			"Chattel Religionist": `is a simple arena with a large open area in the center surrounded by a low stone wall and seating for guests.`,
+			"Degradationist": `is a large, modern arena with huge screens mounted strategically to allow its guests the possible view of the combatants' rape or dismemberment.`,
+			"Repopulationist": `is a large, modern stadium with a large open area in the center for the fighters.`,
+			"Eugenics": `is decorated to look like a club. Loud music is playing, and the whores that aren't with customers are stripping and pole dancing on a stage. Safe sex is greatly encouraged. The real action happens in several reserved rooms dedicated to society's best, since the loud music drowns out private conversations.`,
+			"Asset Expansionist": `is decorated to look like a club. Loud music is playing, and the whores that aren't with customers are stripping and pole dancing on a stage.`,
+			"Transformation Fetishist": `is sterile and clean. Interactive screens on the walls list the whores and their modifications in clinical detail.`,
+			"Gender Radicalist": `is decorated to look like an old world bordello. The rich décor includes erotic photography and pornographic statuary, depicting every possible combination of human sexual congress.`,
+			"Gender Fundamentalist": `is decorated to look like an old world whorehouse. Screens on the walls are showing pornography starring the whores, with prices flashing after each sex act.`,
+			"Physical Idealist": `is decorated to look like a club. Loud music is playing, and the whores that aren't with customers are stripping on a stage. There is a distinct smell of sweat, and there is as much emphasis on the strippers' muscles as their breasts.`,
+			"Supremacist": `is decorated like an old world gentleman's club. The pictures on the wall depict degradation of every race on earth, except ${V.arcologies[0].FSSupremacistRace} people.`,
+			"Subjugationist": `is decorated to celebrate the degradation of ${V.arcologies[0].FSSubjugationistRace} whores. The whores greet customers in stereotypical ${V.arcologies[0].FSSubjugationistRace} accents.`,
+			"Paternalist": `is decorated to look like a trendy bar. Whores are encouraged to meet customers for a drink and get to know them a little before heading back into a private room.`,
+			"Pastoralist": `is decorated to look like a dairy. Though it isn't one, there is an intense sexual focus on boobs and lactation, and all the whores have their sizes and productivity proudly posted.`,
+			"Maturity Preferentialist": `is decorated to look like a refined bar. It has a row of sturdy backless barstools, perfect for a delectable selection of succulent MILFs to perch on.`,
+			"Youth Preferentialist": `is decorated to look like the sort of bar old world students visit on spring break. Vapid music is playing, and when whores aren't with customers, they dance and make out with each other to attract some.`,
+			"Body Purist": `is decorated to look like an old world bordello. The rich décor includes erotic photography and pornographic statuary, depicting idealized human forms in the act of love.`,
+			"Slimness Enthusiast": `is decorated to look like an old world bordello. The rich décor includes erotic photography and pornographic statuary, depicting slim, girlish figures playing, dancing, and loving.`,
+			"Hedonistic": `is comfortable and full of soft couches and chairs for its overweight whores to lounge upon between clients ${V.arcologies[0].FSHedonisticDecadenceResearch === 1 ? `and enjoy a plate of snacks` : `and enjoy a big cup of slave food`}. The smells of fresh baked goods are pumped into the facility to mask the smell of sweat. It's not unusual for a client to fuck a whore right on her chosen couch, since the effort of moving is often too much.`,
+			"Intellectual Dependency": `is decorated to look like a club. The sexually charged atmosphere has the whores horny and making out with each other. Customers are expected to come in, grab a bimbo to their tastes, and pull them off to have a good time.`,
+			"Slave Professionalism": `is decorated to look like a high-class bordello. Courtesans are expected to greet and entice customers to join them for a night they'll never forget.`,
+			"Petite Admiration": `is decorated to look like an old world whorehouse. The whores have personal platforms to stand on for inspection from their taller customers.`,
+			"Statuesque Glorification": `is decorated to look like an old world bordello. The rich décor specializes in pornographic statuary, depicting towering human forms in the act of love.`,
+			"standard": `is fairly unremarkable – little more than a fairly large, circular amphitheater set into one corner of ${V.arcologies[0].name}.`,
+		};
+
+		const res = FS[V.pit.decoration];
+
+		if (!res) {
+			throw new Error(`Unknown V.pit.decoration value of '${V.pit.decoration}' found in decorations().`);
+		}
+
+		return res;
+	}
+
 	/** @returns {FC.Facilities.Expand} */
 	get expand() {
 		return {
@@ -143,7 +189,7 @@ App.Facilities.Pit.pit = class Pit extends App.Facilities.Facility {
 
 								V.pit.slavesFighting = [];
 							},
-						}
+						},
 					],
 					object: V.pit,
 				},
@@ -187,7 +233,7 @@ App.Facilities.Pit.pit = class Pit extends App.Facilities.Facility {
 							prereqs: [
 								() => (!!V.active.canine && !!V.active.hooved) ||
 									(!!V.active.canine && !!V.active.feline) ||
-									(!!V.active.hooved && !!V.active.feline)
+									(!!V.active.hooved && !!V.active.feline),
 							],
 						},
 					],
diff --git a/src/facilities/pit/pitBC.js b/src/facilities/pit/pitBC.js
index 1811a0f6a52..b3edba2820b 100644
--- a/src/facilities/pit/pitBC.js
+++ b/src/facilities/pit/pitBC.js
@@ -32,6 +32,7 @@ App.Facilities.Pit.BC = function() {
 		V.pit.fought = V.pit.fought || V.pitFought || false;
 
 		V.pit.slavesFighting = V.pit.slavesFighting || [];
+		V.pit.decoration = V.pit.decoration || "standard";
 	}
 
 	if (V.slaveFightingBG) {
diff --git a/src/facilities/pit/pitFramework.js b/src/facilities/pit/pitFramework.js
index 9401caf98b6..ffb7a1954f4 100644
--- a/src/facilities/pit/pitFramework.js
+++ b/src/facilities/pit/pitFramework.js
@@ -12,7 +12,7 @@ App.Data.Facilities.pit = {
 	},
 	defaultJob: "fighter",
 	manager: null,
-	decorated: false
+	decorated: true,
 };
 
 App.Entity.Facilities.PitFighterJob = class extends App.Entity.Facilities.FacilitySingleJob {
diff --git a/src/facilities/pit/pitUtils.js b/src/facilities/pit/pitUtils.js
index ade3beb5d66..987315f9d05 100644
--- a/src/facilities/pit/pitUtils.js
+++ b/src/facilities/pit/pitUtils.js
@@ -6,6 +6,7 @@ App.Facilities.Pit.init = function() {
 		animal: null,
 		audience: "free",
 		bodyguardFights: false,
+		decoration: "standard",
 		fighters: 0,
 		fighterIDs: [],
 		fought: false,
-- 
GitLab