From 71ccf19226cf0a0183b2b604b1b5b397f403397d Mon Sep 17 00:00:00 2001
From: Trinidad <anchaiscastilla@gmail.com>
Date: Thu, 27 Jun 2024 10:14:42 +0200
Subject: [PATCH] Focus on face, neg topless, further limit bobs size.

---
 src/art/genAI/prompts/breastsPromptPart.js | 14 +++++++-------
 src/art/genAI/prompts/clothesPromptPart.js |  2 +-
 src/art/genAI/prompts/stylePromptPart.js   |  8 ++++----
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/art/genAI/prompts/breastsPromptPart.js b/src/art/genAI/prompts/breastsPromptPart.js
index a21567c958e..e77b5ebdb56 100644
--- a/src/art/genAI/prompts/breastsPromptPart.js
+++ b/src/art/genAI/prompts/breastsPromptPart.js
@@ -10,13 +10,13 @@ App.Art.GenAI.BreastsPromptPart = class BreastsPromptPart extends App.Art.GenAI.
 			prompt = `small breasts, flat chest`;
 		} else if (this.slave.boobs < 500) {
 			prompt = `small breasts`;
-		} else if (this.slave.boobs < 650) {
+		} else if (this.slave.boobs < 650 || (this.slave.visualAge < 6 && V.aiAgeFilter)) {
 			prompt = `medium breasts`;
-		} else if (this.slave.boobs < 800 || (this.slave.visualAge < 7 && V.aiAgeFilter)) {
+		} else if (this.slave.boobs < 800 || (this.slave.visualAge < 10 && V.aiAgeFilter)) {
 			prompt = `large breasts`;
-		} else if (this.slave.boobs < 1000 || (this.slave.visualAge < 13 && V.aiAgeFilter)) {
+		} else if (this.slave.boobs < 1000 || (this.slave.visualAge < 18 && V.aiAgeFilter)) {
 			prompt = `huge breasts`;
-		} else if (this.slave.boobs < 1400 || (this.slave.visualAge < 18 && V.aiAgeFilter)) {
+		} else if (this.slave.boobs < 1400) {
 			prompt = `huge breasts, large breasts`;
 		} else { // bigger than H cup: best to use the LoRA if we can
 			if (App.Art.GenAI.sdClient.hasLora("BEReaction")) {
@@ -33,11 +33,11 @@ App.Art.GenAI.BreastsPromptPart = class BreastsPromptPart extends App.Art.GenAI.
 	 */
 	negative() {
 		if (this.slave.boobs < 300) {
-			return `medium breasts, large breasts, huge breasts${this.slave.visualAge < 18 && V.aiAgeFilter ? ", bare breasts, (nipples:1.1), areola" : ""}`;
+			return `medium breasts, large breasts, huge breasts${this.slave.visualAge < 18 && V.aiAgeFilter ? ", bare breasts, (nipples:1.1), areola, exposed chest" : ""}`;
 		} else if (this.slave.boobs < 650) {
-			return this.slave.visualAge < 18 && V.aiAgeFilter ? "bare breasts, (nipples:1.1), areola" : undefined;
+			return this.slave.visualAge < 18 && V.aiAgeFilter ? "bare breasts, (nipples:1.1), areola, exposed chest" : undefined;
 		} else {
-			return `small breasts, flat chest${this.slave.visualAge < 18 && V.aiAgeFilter ? ", bare breasts, (nipples:1.3), areola" : ""}`;
+			return `small breasts, flat chest${this.slave.visualAge < 18 && V.aiAgeFilter ? ", bare breasts, (nipples:1.3), areola, exposed chest" : ""}`;
 		}
 	}
 };
diff --git a/src/art/genAI/prompts/clothesPromptPart.js b/src/art/genAI/prompts/clothesPromptPart.js
index 024103dff90..52360dbdd76 100644
--- a/src/art/genAI/prompts/clothesPromptPart.js
+++ b/src/art/genAI/prompts/clothesPromptPart.js
@@ -768,7 +768,7 @@ App.Art.GenAI.ClothesPromptPart = class ClothesPromptPart extends App.Art.GenAI.
 	 * @returns {string}
 	 */
 	addNegativeControl(negPrompt) {
-		const toAdd = ["penis", "pussy", "nude", "scrotum", "clitoris"];
+		const toAdd = ["penis", "pussy", "nude", "scrotum", "clitoris", "topless"];
 		if (this.slave.visualAge < 18 && V.aiAgeFilter) {
 			toAdd.forEach(w => {
 				if (!negPrompt.includes(w)) {
diff --git a/src/art/genAI/prompts/stylePromptPart.js b/src/art/genAI/prompts/stylePromptPart.js
index d1e8192794f..70a89815d86 100644
--- a/src/art/genAI/prompts/stylePromptPart.js
+++ b/src/art/genAI/prompts/stylePromptPart.js
@@ -12,13 +12,13 @@ App.Art.GenAI.StylePromptPart = class StylePromptPart extends App.Art.GenAI.Prom
 			}
 			case 1: // photorealistic
 				if (this.slave.visualAge < 18 && V.aiAgeFilter) {
-					return "<lora:LowRA:0.5> front-up portrait, (tight medium shot:1.2), focus on face, photorealistic, dark theme, black background";
+					return "<lora:LowRA:0.5> front-up portrait, (tight medium shot:1.2), (focus on face:1.2), photorealistic, dark theme, black background";
 				} else {
 					return "<lora:LowRA:0.5> full body portrait, photorealistic, dark theme, black background";
 				}
 			case 2: // anime/hentai
 			if (this.slave.visualAge < 18 && V.aiAgeFilter) {
-				return "front-up portrait, (tight medium shot:1.1), focus on face, 2d, anime, hentai, dark theme, black background";
+				return "front-up portrait, (tight medium shot:1.1), (focus on face:1.2), 2d, anime, hentai, dark theme, black background";
 			} else {
 				return "full body portrait, 2d, anime, hentai, dark theme, black background";
 			}
@@ -38,13 +38,13 @@ App.Art.GenAI.StylePromptPart = class StylePromptPart extends App.Art.GenAI.Prom
 			}
 			case 1: // photorealistic
 			if (this.slave.visualAge < 18 && V.aiAgeFilter) {
-				return "NSFW, greyscale, monochrome, cg, render, unreal engine, full shot, medium full shot, full body portrait, waist, hips, navel, bottom, legs";
+				return "NSFW, greyscale, monochrome, cg, render, unreal engine, full shot, medium full shot, full body portrait, waist, hips, navel, bottom, legs, head out of frame, eye out of frame";
 			} else {
 				return "greyscale, monochrome, cg, render, unreal engine, closeup, medium shot";
 			}
 			case 2: // anime/hentai
 			if (this.slave.visualAge < 18 && V.aiAgeFilter) {
-				return "NSFW, greyscale, monochrome, photography, 3d render, text, speech bubble, (head out of frame), full shot, medium full shot, full body portrait, waist, hips, navel, bottom, legs";
+				return "NSFW, greyscale, monochrome, photography, 3d render, text, speech bubble, (head out of frame), full shot, medium full shot, full body portrait, waist, hips, navel, bottom, legs, head out of frame, eye out of frame";
 			} else {
 				return "greyscale, monochrome, photography, 3d render, text, speech bubble, closeup, medium shot";
 			}
-- 
GitLab