From b46c1c72b54f42c17230bfb1bf03e060eb6d560c Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Sun, 23 Mar 2025 13:32:08 +0100
Subject: [PATCH 1/5] Option to hide Main Menu Arcology Tab

---
 js/003-data/gameVariableData.js | 1 +
 src/gui/options/options.js      | 3 +++
 src/js/slaveListing.js          | 8 +++++---
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 6b703ed3408..e128f157d2b 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -421,6 +421,7 @@ App.Data.defaultGameStateVariables = {
 	useSlaveListInPageJSNavigation: 0,
 	useSlaveSummaryOverviewTab: 0,
 	useSlaveSummaryTabs: 0,
+	useSlaveArcologyTab: 0,
 	useTabs: 0,
 	verboseDescriptions: 0,
 	verticalizeArcologyLinks: 0,
diff --git a/src/gui/options/options.js b/src/gui/options/options.js
index dc90d275dd2..366bfbf1185 100644
--- a/src/gui/options/options.js
+++ b/src/gui/options/options.js
@@ -979,6 +979,9 @@ App.Intro.display = function(isIntro) {
 	options.addOption("Condense special slaves into their own tab", "useSlaveSummaryOverviewTab")
 		.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
 
+	options.addOption("Main Menu category with all slaves", "useSlaveArcologyTab")
+		.addValue("Enabled", 1).on().addValue("Disabled", 0).off();
+
 	options.addOption("Interactions with your fucktoys are", "fucktoyInteractionsPosition")
 		.addValueList([["next to them", 1], ["at page bottom", 0]]);
 
diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js
index 1512342fa9a..6ee4b86dd55 100644
--- a/src/js/slaveListing.js
+++ b/src/js/slaveListing.js
@@ -980,12 +980,12 @@ App.UI.SlaveList.penthousePage = function() {
 		tabs.push(makeTabDesc("overview", "Special Roles", overviewTabContent()));
 	}
 
-	tabs.push(penthouseTab());
-
 	if (V.favorites.length > 0 || V.useSlaveSummaryTabs === 0) {
 		tabs.push(favorites());
 	}
 
+	tabs.push(penthouseTab());
+
 	// tabs for each assignment
 	for (const jn of ph.jobsNames) {
 		const slaves = _slavesForJob(jn);
@@ -996,7 +996,9 @@ App.UI.SlaveList.penthousePage = function() {
 		}
 	}
 
-	tabs.push(arcologyTab());
+	if (V.useSlaveArcologyTab) {
+		tabs.push(arcologyTab());
+	}
 
 	const tabBar = new App.UI.Tabs.TabBar("Main");
 	let buttonClass = undefined;
-- 
GitLab


From 9be2d125c8d3334e640662b81216720a4e159a4a Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Tue, 25 Mar 2025 16:43:30 +0100
Subject: [PATCH 2/5] Fix arcology ownership is not updated correctly

---
 src/004-base/arcologyBuilding.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/004-base/arcologyBuilding.js b/src/004-base/arcologyBuilding.js
index 162162f5a4f..53c712a9083 100644
--- a/src/004-base/arcologyBuilding.js
+++ b/src/004-base/arcologyBuilding.js
@@ -176,9 +176,9 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable {
 					span.append(App.Arcology.getCellLink("Sell", that.name, () => that.cellPassage(containingBuilding),
 						() => {
 							cashX(price(false), "capEx");
-							App.Arcology.updateOwnership();
 							A.demandFactor -= DEMAND_FACTOR_DIFF;
 							cell.owner = 0;
+							App.Arcology.updateOwnership();
 						}));
 					fragment.append(" ", span);
 				}
@@ -192,8 +192,8 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable {
 						() => {
 							cashX(-(price(true) + 10000), "capEx");
 							A.demandFactor += DEMAND_FACTOR_DIFF;
-							App.Arcology.updateOwnership();
 							cell.owner = 1;
+							App.Arcology.updateOwnership();
 						}));
 					fragment.append(" ", buySpan);
 
@@ -207,8 +207,8 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable {
 								() => {
 									repX(-(repPrice), "capEx");
 									A.demandFactor += DEMAND_FACTOR_DIFF;
-									App.Arcology.updateOwnership();
 									cell.owner = 1;
+									App.Arcology.updateOwnership();
 								}));
 						fragment.append(repDiv);
 					}
-- 
GitLab


From 1651c678b8c8bf09e9d27d0eeeadde6190f7a0ed Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Fri, 21 Mar 2025 22:21:02 +0100
Subject: [PATCH 3/5] Fix player pregnancy text condition

---
 src/endWeek/player/prPregnancy.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/endWeek/player/prPregnancy.js b/src/endWeek/player/prPregnancy.js
index b2826c8b50b..803117e24e7 100644
--- a/src/endWeek/player/prPregnancy.js
+++ b/src/endWeek/player/prPregnancy.js
@@ -354,7 +354,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) {
 					}
 				}
 			} else if (boobSize < boobTarget) {
-				if (PC.weight <= 35 && random(random(1, 100) > 50)) {
+				if (PC.weight <= 35 && random(1, 100) > 50) {
 					r.push(`You can't help but <span class="change negative">put on a little baby weight</span> due to your increased appetite.`);
 					PC.weight += 1;
 				}
-- 
GitLab


From 74260024ad3c73118d61663c6402af1c52d47aee Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Tue, 25 Mar 2025 17:02:34 +0100
Subject: [PATCH 4/5] Display proper icon for incubator notify

---
 src/arcologyBuilding/penthouse.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/arcologyBuilding/penthouse.js b/src/arcologyBuilding/penthouse.js
index 396383f95e4..5581f0c629a 100644
--- a/src/arcologyBuilding/penthouse.js
+++ b/src/arcologyBuilding/penthouse.js
@@ -69,7 +69,7 @@ App.Arcology.Cell.Penthouse = class extends App.Arcology.Cell.BaseCell {
 					(tankSlaveCount() + FetusGlobalReserveCount("incubator")), "empty tank")})`;
 
 				if (App.Facilities.Incubator.readySlaves() > 0) {
-					wrapper.append(createFacilityDiv(link, App.UI.DOM.combineNodes(desc, App.UI.DOM.makeElement("span", "[!]", ["noteworthy"]))));
+					wrapper.append(createFacilityDiv(link, App.UI.DOM.combineNodes(desc, App.UI.DOM.makeElement("span", "\uf06a", ["noteworthy", "icons"]))));
 				} else {
 					wrapper.append(createFacilityDiv(link, desc));
 				}
-- 
GitLab


From 2c0fb31baa619f5aa2a0537b600c0f9cba01f1b5 Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Tue, 25 Mar 2025 17:14:09 +0100
Subject: [PATCH 5/5] Fix slave anal/vaginal skill resets

---
 src/npc/startingGirls/startingGirls.js | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js
index e3d43ed274f..2f8d9e377f7 100644
--- a/src/npc/startingGirls/startingGirls.js
+++ b/src/npc/startingGirls/startingGirls.js
@@ -149,14 +149,20 @@ App.StartingGirls.cleanup = function(slave) {
 
 	if (slave.anus <= 0) {
 		slave.skill.anal = 0;
-	} else if ((slave.anus > 2 && slave.skill.anal <= 10) || (slave.anus === 0 && slave.skill.anal > 30)) {
-		slave.skill.anal = 15;
+	} else if (slave.anus <= 1) {
+		slave.skill.anal = Math.min(slave.skill.anal, 35);
+	} else if (slave.anus > 2) {
+		slave.skill.anal = Math.max(slave.skill.anal, 15);
 	}
-	if (slave.vagina < 0) {
+
+	if (slave.vagina <= 0) {
 		slave.skill.vaginal = 0;
-	} else if ((slave.vagina > 2 && slave.skill.vaginal <= 10) || (slave.vagina === 0 && slave.skill.vaginal > 30)) {
-		slave.skill.vaginal = 15;
+	} else if (slave.vagina <= 1) {
+		slave.skill.vaginal = Math.min(slave.skill.vaginal, 35);
+	} else if (slave.vagina > 2) {
+		slave.skill.vaginal = Math.max(slave.skill.vaginal, 15);
 	}
+
 	if (slave.dick > 0 && slave.physicalAge >= slave.pubertyAgeXY + 2 && slave.skill.penetrative <= 10) {
 		slave.skill.penetrative = 15;
 	}
-- 
GitLab