From 2066a1ce4742d2c6082a1bda23b1bab027798db5 Mon Sep 17 00:00:00 2001
From: Trinidad <anchaiscastilla@gmail.com>
Date: Tue, 12 Sep 2023 23:18:01 +0200
Subject: [PATCH] 	modified:   devNotes/usefulJSFunctionDocumentation.md 
 modified:   src/npc/descriptions/genericDescriptions.js

---
 devNotes/usefulJSFunctionDocumentation.md   |  18 ++++
 src/npc/descriptions/genericDescriptions.js | 104 +++++++++++++++++++-
 2 files changed, 120 insertions(+), 2 deletions(-)

diff --git a/devNotes/usefulJSFunctionDocumentation.md b/devNotes/usefulJSFunctionDocumentation.md
index e67ded88ad0..97a39140864 100644
--- a/devNotes/usefulJSFunctionDocumentation.md
+++ b/devNotes/usefulJSFunctionDocumentation.md
@@ -181,6 +181,24 @@ SlaveTitle(slave) // Returns the slave's descriptive title.
 
 relativeTerm(slave1, slave2) // Returns the term for slave2's relation to slave1. (daughter, mother, etc.)
 
+vaginaDesc(slave) // Returns the description of the slave's vagina.
+
+dickDesc(slave) // Returns the description of the slave's penis.
+
+ballsDesc(slave) // Returns the description of the slave's testicles.
+
+anusDesc(slave) // Returns the description of the slave's anus.
+
+boobsDesc(slave) // Returns the size descriptor of the slave's breasts.
+
+boobsDescLong(slave) // Returns the full description of the slave's breasts.
+
+buttDesc(slave) // Returns the description of the slave's bottom.
+
+lipsDesc(slave) // Returns the description of the slave's lips.
+
+bellyDesc(slave, withNoun, pregReference) // Returns the description of the slave's belly.
+
 relationshipChecks [script] All work as expected with <<if X.rivalryTarget == $slaves[$i].ID>> preceding them.
  rivalryTerm(id) // Returns the rivalry term for the input. e.g. lines 99-100 of brothelReport.
   //<<if $Madam.rivalryTarget == $slaves[$i].ID>>
diff --git a/src/npc/descriptions/genericDescriptions.js b/src/npc/descriptions/genericDescriptions.js
index d303c2b00d0..657742bf2da 100644
--- a/src/npc/descriptions/genericDescriptions.js
+++ b/src/npc/descriptions/genericDescriptions.js
@@ -254,7 +254,7 @@ globalThis.boobsDesc = function(slave, withNoun = true) {
  * @param {boolean} withLactation
  * @returns {string}
  */
-globalThis.boobsLongDesc = function(slave, withNoun = true, withShape = true, withCup = true, withSurgery = true, withLactation = true) {
+globalThis.boobsDescLong = function(slave, withNoun = true, withShape = true, withCup = true, withSurgery = true, withLactation = true) {
 	if (!slave) {return "ERROR"}
 	if (slave.boobs < 300 && slave.hormoneBalance < -20) {
 		return `masculine${withNoun ? " chest" : ""}`;
@@ -349,4 +349,104 @@ globalThis.lipsDesc = function(slave, withNoun = true, withSurgery = true) {
 		return `${jsEither(adj)} ${surgery}${jsEither(noun)}`;
 	}
 	return `${surgery}${jsEither(adj)}`;
-}
\ No newline at end of file
+}
+
+/**
+ * Returns the description of the slave's bally
+ * @param {FC.HumanState} slave // admits V.PC as argument.
+ * @param {boolean} withNoun
+ * @param {boolean} pregReference // mentions pregnancy if slave is pregnant
+ * @returns {string}
+ */
+globalThis.bellyDesc = function(slave, withNoun = true, pregReference = true) {
+	if (!slave) {return "ERROR"}
+	let adj = [];
+	let noun =["belly"];
+	if (pregReference && !!V.seePreg && slave.preg > 0) {
+		if (slave.belly > 750000) {
+			adj.push("inhumanly overexpanded pregnant");
+		} else if (slave.belly > 600000) {
+			adj.push("immensely overexpanded pregnant");
+		} else if (slave.belly > 450000) {
+			adj.push("enormously overexpanded pregnant");
+		} else if (slave.belly > 300000) {
+			adj.push("overexpanded pregnant");
+		} else if (slave.belly > 150000) {
+			adj.push("grotesquely oversized pregnant");
+		} else if (slave.belly > 120000) {
+			adj.push("absurd pregnant");
+		} else if (slave.belly > 105000) {
+			adj.push("monstrous pregnant");
+		} else if (slave.belly > 90000) {
+			adj.push("titanic pregnant");
+		} else if (slave.belly > 75000) {
+			adj.push("massive pregnant");
+		} else if (slave.belly > 60000) {
+			adj.push("gigantic pregnant");
+		} else if (slave.belly > 45000) {
+			adj.push("huge pregnant");
+		} else if (slave.belly > 30000) {
+			adj.push("big pregnant");
+		} else if (slave.belly > 15000) {
+			adj.push("full term looking");
+		} else if (slave.belly > 10000) {
+			adj.push("very pregnant");
+		} else if (slave.belly > 5000) {
+			adj.push("obviously pregnant");
+		} else if (slave.belly > 1500) {
+			adj.push("plump");
+		} else if (slave.belly > 100) {
+			adj.push("bloated");
+		} else {
+			adj.push("flat");
+			noun.push("stomach", "tummy");
+		}
+	} else {
+		if (slave.belly > 750000) {
+			adj.push("inhumanly overexpanded");
+		} else if (slave.belly > 600000) {
+			adj.push("immensely overexpanded");
+		} else if (slave.belly > 450000) {
+			adj.push("enormously overexpanded");
+		} else if (slave.belly > 300000) {
+			adj.push("overexpanded");
+		} else if (slave.belly > 150000) {
+			adj.push("grotesquely oversized");
+		} else if (slave.belly > 120000) {
+			adj.push("absurd");
+		} else if (slave.belly > 105000) {
+			adj.push("monstrous");
+		} else if (slave.belly > 90000) {
+			adj.push("titanic");
+		} else if (slave.belly > 75000) {
+			adj.push("massive");
+		} else if (slave.belly > 60000) {
+			adj.push("gigantic");
+		} else if (slave.belly > 45000) {
+			adj.push("huge");
+		} else if (slave.belly > 30000) {
+			adj.push("obese");
+		} else if (slave.belly > 15000) {
+			adj.push("beefy");
+		} else if (slave.belly > 10000) {
+			adj.push("porky");
+		} else if (slave.belly > 5000) {
+			adj.push("chubby");
+		} else if (slave.belly > 1500) {
+			adj.push("plump");
+		} else if (slave.belly > 100) {
+			adj.push("bloated");
+			noun.push("tummy");
+		} else {
+			adj.push("flat");
+		}
+		noun.push("stomach");
+		if (slave.belly > 5000) {
+			noun.push("paunch", "belly");
+		}
+	}
+	if (withNoun) {
+		return `${jsEither(adj)} ${jsEither(noun)}`;
+	}
+	return `${surgery}${jsEither(adj)}`;
+}
-- 
GitLab