From 3237ee1aaa41b5dd6974e69759933356d870204f Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Tue, 31 Oct 2023 14:45:39 -0400
Subject: [PATCH] Make nationality prompting optional.

---
 js/003-data/gameVariableData.js        | 1 +
 src/art/genAI/nationalityPromptPart.js | 8 +++++++-
 src/gui/options/options.js             | 3 +++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 635f2b522be..1e18d4fb675 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -179,6 +179,7 @@ App.Data.defaultGameStateVariables = {
 	aiCustomStyleNeg: "",
 	aiCustomStylePos: "",
 	aiHeight: 768,
+	aiNationality: 2,
 	aiSamplingMethod: "DPM++ 2M SDE Karras",
 	aiSamplingSteps: 20,
 	aiStyle: 1,
diff --git a/src/art/genAI/nationalityPromptPart.js b/src/art/genAI/nationalityPromptPart.js
index aec2b4ded3f..2318e4b0050 100644
--- a/src/art/genAI/nationalityPromptPart.js
+++ b/src/art/genAI/nationalityPromptPart.js
@@ -35,7 +35,13 @@ App.Art.GenAI.NationalityPromptPart = class NationalityPromptPart extends App.Ar
 		if (this.slave.nationality.endsWith("Revivalist")) {
 			return;
 		}
-		return microstateFix[this.slave.nationality] || this.slave.nationality;
+		const nationalityPrompt = microstateFix[this.slave.nationality] || this.slave.nationality;
+		switch (V.aiNationality) {
+			case 0: return; // disabled
+			case 1: return `[${nationalityPrompt}]`; // weak
+			case 2: return nationalityPrompt; // strong;
+			default: throw new Error("Unexpected value for aiNationality");
+		}
 	}
 
 	/**
diff --git a/src/gui/options/options.js b/src/gui/options/options.js
index 5656e386cf3..a67528845f7 100644
--- a/src/gui/options/options.js
+++ b/src/gui/options/options.js
@@ -1147,6 +1147,9 @@ App.UI.aiPromptingOptions = function(options) {
 	} else if (V.aiStyle === 2) {
 		options.addComment("For best results, use an appropriately-trained hentai base model, such as Hassaku.");
 	}
+	options.addOption("Nationality factor in prompt", "aiNationality")
+		.addValue("Strong", 2).addValue("Weak", 1).on().addValue("Disabled", 0).off()
+		.addComment("Helps differentiate between ethnicities that share a Free Cities race, like Japanese and Korean or Spanish and Greek. May cause flags/national colors to appear unexpectedly, and can have a negative impact on slaves that belong to a minority race for their nationality.");
 };
 
 App.UI.artOptions = function() {
-- 
GitLab