From e7d672686c79019d2b17f2ad340d74a0fe0cdc46 Mon Sep 17 00:00:00 2001
From: Trinidad <anchaiscastilla@gmail.com>
Date: Tue, 12 Sep 2023 21:51:13 +0200
Subject: [PATCH] 	modified:  
 src/npc/descriptions/genericDescriptions.js

---
 src/npc/descriptions/genericDescriptions.js | 78 +++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/src/npc/descriptions/genericDescriptions.js b/src/npc/descriptions/genericDescriptions.js
index f8fb9400143..645c8e7991b 100644
--- a/src/npc/descriptions/genericDescriptions.js
+++ b/src/npc/descriptions/genericDescriptions.js
@@ -1,3 +1,5 @@
+const { sticky } = require("../../../devTools/types/tippy/tippy");
+
 /**
  * @param {App.Entity.SlaveState} slave
  * @returns {string}
@@ -28,6 +30,7 @@ globalThis.pretty = function(slave) {
  * @returns {string}
  */
 globalThis.vaginaDesc = function(slave, withNoun = true) {
+	if (!slave) {return "ERROR"}
 	let adj = [];
 	let noun = ["vagina", "pussy", "cunt", "pussy", "cunt"];
 	if (slave.newVag && slave.vagina > 0) {
@@ -40,21 +43,28 @@ globalThis.vaginaDesc = function(slave, withNoun = true) {
 		case 0:
 			adj.push(`virgin${slave.counter.reHymen ? "-again" : ""}`, "virgin");
 			noun.push("little slit", "flower");
+			break;
 		case 1:
 			adj.push("tight", "narrow");
+			break;
 		case 2:
 			adj.push("", "welcoming");
+			break;
 		case 3:
 			adj.push("veteran");
+			break;
 		case 4:
 			adj.push("baggy", "loose");
+			break;
 		case 5:
 		case 6:
 			adj.push("gaping");
+			break;
 		case 7:
 		case 8:
 		case 9:
 			adj.push("cavernous");
+			break;
 		default:
 			adj.push("ruined");
 	}
@@ -74,6 +84,7 @@ globalThis.vaginaDesc = function(slave, withNoun = true) {
  * @returns {string}
  */
 globalThis.dickDesc = function(slave, withNoun = true) {
+	if (!slave) {return "ERROR"}
 	let adj =[];
 	let noun = ["dick", "dick", "cock", "cock", "penis", "prick", "phallus"]
 	if (slave.dick === 0) {
@@ -85,25 +96,35 @@ globalThis.dickDesc = function(slave, withNoun = true) {
 				return `${jsEither(["micropenis", "tiny prick", "tiny weenie"])}`;
 			}
 			return "tiny";
+			break;
 		case 2:
 			adj.push("cute", "small");
 			noun.push("weenie");
+			break;
 		case 3:
 			adj.push("", "average");
+			break;
 		case 4:
 			adj.push("big");
+			break;
 		case 5:
 			adj.push("huge");
+			break;
 		case 6:
 			adj.push("gigantic");
+			break;
 		case 7:
 			adj.push("massive");
+			break;
 		case 8:
 			adj.push("titanic", "truly imposing");
+			break;
 		case 9:
 			adj.push("monstrous", "absurd");
+			break;
 		case 10:
 			adj.push("inhuman");
+			break;
 		default:
 			adj.push("hypertrophied");
 	}
@@ -122,18 +143,23 @@ globalThis.dickDesc = function(slave, withNoun = true) {
  * @param {boolean} withNoun
  * @returns {string}
  */globalThis.anusDesc = function(slave, withNoun = true) {
+	if (!slave) {return "ERROR"}
 	let adj = [];
 	let noun = ["anus", "butthole", "asshole", "bumhole", "anus"];
 	switch (slave.anus) {
 		case 0:
 			adj.push("virgin");
 			noun.push("sphincter");
+			break;
 		case 1:
 			adj.push("tight", "narrow", "welcoming");
+			break;
 		case 2:
 			adj.push("loose", "veteran");
+			break;
 		case 3:
 			adj.push("very loose", "lax");
+			break;
 		default:
 			adj.push("gaping", "gaped");
 	}
@@ -156,6 +182,7 @@ globalThis.dickDesc = function(slave, withNoun = true) {
  * @returns {string}
  */
 globalThis.ballsDesc = function(slave, withNoun = true) {
+	if (!slave) {return "ERROR"}
 	let adj =[];
 	let noun = ["balls", "balls", "balls", "testicles"]
 	if (slave.balls === 0) {
@@ -164,23 +191,32 @@ globalThis.ballsDesc = function(slave, withNoun = true) {
 	switch (slave.balls) {
 		case 1:
 			return `vestigial${withNoun ? " " + jsEither(["testes", "testicles"]) : ""}`;
+			break;
 		case 2:
 			adj.push("small");
 			noun.push("testes");
+			break;
 		case 3:
 			adj.push("", "average", "standard");
+			break;
 		case 4:
 			adj.push("large");
+			break;
 		case 5:
 			adj.push("massive");
+			break;
 		case 6:
 			adj.push("huge");
+			break;
 		case 7:
 			adj.push("giant");
+			break;
 		case 8:
 			adj.push("enormous");
+			break;
 		case 9:
 			adj.push("monstrous");
+			break;
 		default:
 			adj.push("overly massive");
 	}
@@ -200,6 +236,7 @@ globalThis.ballsDesc = function(slave, withNoun = true) {
  * @returns {string}
  */
 globalThis.boobsDesc = function(slave, withNoun = true) {
+	if (!slave) {return "ERROR"}
 	if (slave.boobs < 300 && slave.hormoneBalance < -20) {
 		return `masculine${withNoun ? " chest" : ""}`;
 	}
@@ -220,6 +257,7 @@ globalThis.boobsDesc = function(slave, withNoun = true) {
  * @returns {string}
  */
 globalThis.boobsLongDesc = 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" : ""}`;
 	}
@@ -239,29 +277,39 @@ globalThis.boobsLongDesc = function(slave, withNoun = true, withShape = true, wi
  * @returns {string}
  */
 globalThis.buttDesc = function(slave, withNoun = true) {
+	if (!slave) {return "ERROR"}
 	let adj =[];
 	let noun = ["butt", "butt", "butt", "ass", "rear"]
 	switch (slave.butt) {
 		case 0:
 			return `flat${withNoun ? " " + jsEither(["bottom"]) : ""}`;
+			break;
 		case 1:
 			adj.push("small");
+			break;
 		case 2:
 			adj.push("plump", "curved");
+			break;
 		case 3:
 			adj.push("round", "curvy", "big bubble", "big bubble");
+			break;
 		case 4:
 			adj.push("huge", "massive");
+			break;
 		case 5:
 			adj.push("enormous", "cushion-like");
+			break;
 		case 6:
 			adj.push("gigantic", "titanic");
+			break;
 		case 7:
 			adj.push("ridiculous");
+			break;
 		case 8:
 		case 9:
 		case 10:
 			adj.push("immense");
+			break;
 		default:
 			adj.push("inhuman");
 	}
@@ -273,3 +321,33 @@ globalThis.buttDesc = function(slave, withNoun = true) {
 	}
 	return `${jsEither(adj)}`;
 }
+
+/**
+ * Returns the description of the slave lips
+ * @param {FC.HumanState} slave // admits V.PC as argument.
+ * @param {boolean} withNoun
+ * @param {boolean} withSurgery
+ * @returns {string}
+ */
+globalThis.lipsDesc = function(slave, withNoun = true, withSurgery = true) {
+	if (!slave) {return "ERROR"}
+	let adj = [];
+	let noun =["lips"];
+	if (slave.lips < 11) {
+		adj.push("thin", "unattractive");
+	} else if (slave.lips < 21) {
+		adj.push("regular", "");
+	} else if (slave.lips < 41) {
+		adj.push("pretty", "attractive");
+	} else if (slave.lips < 71) {
+		adj.push("plump", "plush");
+	} else if (slave.lips < 96) {
+		adj.push("huge", "beestung");
+	} else {
+		adj.push("pussy-like", "fuckhole");
+	}
+	if (withNoun) {
+		return `${jsEither(adj)} ${jsEither(noun)}`;
+	}
+	return `${jsEither(adj)}`;
+}
\ No newline at end of file
-- 
GitLab