From 44403dba76cc15ee85a365af1b1242f92dc1f1f2 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Fri, 19 Feb 2021 20:43:43 -0500
Subject: [PATCH] eliminate dupe nickname categories using Set

---
 src/events/reNickname.js | 180 +++++++++++++++++++--------------------
 1 file changed, 90 insertions(+), 90 deletions(-)

diff --git a/src/events/reNickname.js b/src/events/reNickname.js
index af06ea2e27a..90809e29ed0 100644
--- a/src/events/reNickname.js
+++ b/src/events/reNickname.js
@@ -11,7 +11,7 @@ App.Events.RENickname = class RENickname extends App.Events.BaseEvent {
 			(s) => s.assignment !== Job.ARCADE, // not immured in the arcade
 			(s) => s.fuckdoll === 0, // not in a fuckdoll suit
 			(s) => !s.slaveName.toLowerCase().includes("'"), // doesn't have a nickname yet
-			(s) => this.getQualifiedNicknames(s).length > 0 // qualifies for at least one nickname category
+			(s) => this.getQualifiedNicknames(s).size > 0 // qualifies for at least one nickname category
 		]];
 	}
 
@@ -37,269 +37,269 @@ App.Events.RENickname = class RENickname extends App.Events.BaseEvent {
 
 	/** @param {App.Entity.SlaveState} slave */
 	getQualifiedNicknames(slave) {
-		const _qualifiedNicknames = [];
+		const _qualifiedNicknames = new Set();
 
 		if (slave.nationality) {
-			_qualifiedNicknames.push("nationality");
+			_qualifiedNicknames.add("nationality");
 		}
 		if (V.seeRace === 1) {
 			switch (slave.race) {
 				case "amerindian":
-					_qualifiedNicknames.push("amerindian");
+					_qualifiedNicknames.add("amerindian");
 					break;
 				case "asian":
-					_qualifiedNicknames.push("asian");
+					_qualifiedNicknames.add("asian");
 					break;
 				case "black":
-					_qualifiedNicknames.push("black");
+					_qualifiedNicknames.add("black");
 					break;
 				case "indo-aryan":
-					_qualifiedNicknames.push("indo-aryan");
+					_qualifiedNicknames.add("indo-aryan");
 					break;
 				case "latina":
-					_qualifiedNicknames.push("latina");
+					_qualifiedNicknames.add("latina");
 					break;
 				case "malay":
-					_qualifiedNicknames.push("malay");
+					_qualifiedNicknames.add("malay");
 					break;
 				case "middle eastern":
-					_qualifiedNicknames.push("middle eastern");
+					_qualifiedNicknames.add("middle eastern");
 					break;
 				case "mixed race":
-					_qualifiedNicknames.push("mixed race");
+					_qualifiedNicknames.add("mixed race");
 					break;
 				case "pacific islander":
-					_qualifiedNicknames.push("pacific islander");
+					_qualifiedNicknames.add("pacific islander");
 					break;
 				case "semitic":
-					_qualifiedNicknames.push("semitic");
+					_qualifiedNicknames.add("semitic");
 					break;
 				case "southern european":
-					_qualifiedNicknames.push("southern european");
+					_qualifiedNicknames.add("southern european");
 					break;
 				case "white":
-					_qualifiedNicknames.push("white");
+					_qualifiedNicknames.add("white");
 					break;
 			}
 		}
 
 		if (slave.boobs < 500 && slave.butt < 3 && slave.weight <= 10) {
-			_qualifiedNicknames.push("girlish");
+			_qualifiedNicknames.add("girlish");
 		}
 		if (slave.boobs <= 300) {
-			_qualifiedNicknames.push("flat");
+			_qualifiedNicknames.add("flat");
 		}
 		if (slave.anus > 2 || slave.vagina > 2) {
-			_qualifiedNicknames.push("loose");
+			_qualifiedNicknames.add("loose");
 		}
 		if (slave.boobs < 500 && slave.butt < 3 && slave.dick > 0) {
-			_qualifiedNicknames.push("trap");
+			_qualifiedNicknames.add("trap");
 		}
 		if (slave.boobs > 500 && slave.butt > 3 && slave.dick > 0) {
-			_qualifiedNicknames.push("trans");
+			_qualifiedNicknames.add("trans");
 		}
 		if (slave.weight > 30) {
-			_qualifiedNicknames.push("chubby");
+			_qualifiedNicknames.add("chubby");
 		}
 		if (slave.weight > 100) {
-			_qualifiedNicknames.push("fat");
+			_qualifiedNicknames.add("fat");
 		}
 		if (slave.muscles > 30) {
-			_qualifiedNicknames.push("muscles");
+			_qualifiedNicknames.add("muscles");
 		}
 		if (slave.energy > 95) {
 			if (slave.anus > 1) {
-				_qualifiedNicknames.push("buttslut");
+				_qualifiedNicknames.add("buttslut");
 			}
-			_qualifiedNicknames.push("cumslut");
-			_qualifiedNicknames.push("humiliation");
-			_qualifiedNicknames.push("submissive");
+			_qualifiedNicknames.add("cumslut");
+			_qualifiedNicknames.add("humiliation");
+			_qualifiedNicknames.add("submissive");
 		}
 		if (slave.fetishKnown === 1 && slave.fetishStrength > 60) {
 			switch (slave.fetish) {
 				case "buttslut":
 					if (slave.anus > 0) {
-						_qualifiedNicknames.push("buttslut");
+						_qualifiedNicknames.add("buttslut");
 					} else {
-						_qualifiedNicknames.push("butt toy");
+						_qualifiedNicknames.add("butt toy");
 					}
 					break;
 				case "cumslut":
-					_qualifiedNicknames.push("cumslut");
+					_qualifiedNicknames.add("cumslut");
 					break;
 				case "humiliation":
-					_qualifiedNicknames.push("humiliation");
+					_qualifiedNicknames.add("humiliation");
 					break;
 				case "submissive":
-					_qualifiedNicknames.push("submissive");
+					_qualifiedNicknames.add("submissive");
 			}
 		}
 		if (slave.counter.oral + slave.counter.vaginal + slave.counter.anal > 500) {
-			_qualifiedNicknames.push("veteran");
+			_qualifiedNicknames.add("veteran");
 		}
 		if ((slave.boobs * slave.lactation) > 1000) {
-			_qualifiedNicknames.push("cow");
+			_qualifiedNicknames.add("cow");
 		}
 		if (slave.skill.oral <= 30 && slave.skill.anal <= 30) {
-			_qualifiedNicknames.push("novice");
+			_qualifiedNicknames.add("novice");
 		}
 		if (slave.ID === V.HeadGirlID) {
-			_qualifiedNicknames.push("Head Girl");
+			_qualifiedNicknames.add("Head Girl");
 		}
 		if (slave.ID === V.BodyguardID) {
-			_qualifiedNicknames.push("Bodyguard");
+			_qualifiedNicknames.add("Bodyguard");
 		}
 		if (slave.ID === V.ConcubineID) {
-			_qualifiedNicknames.push("Concubine");
+			_qualifiedNicknames.add("Concubine");
 		}
 		if (slave.ID === V.AttendantID) {
-			_qualifiedNicknames.push("Attendant");
+			_qualifiedNicknames.add("Attendant");
 		}
 		if (slave.ID === V.MatronID) {
-			_qualifiedNicknames.push("Matron");
+			_qualifiedNicknames.add("Matron");
 		}
 		if (slave.ID === V.MadamID) {
-			_qualifiedNicknames.push("Madam");
+			_qualifiedNicknames.add("Madam");
 		}
 		if (slave.ID === V.djID) {
-			_qualifiedNicknames.push("DJ");
+			_qualifiedNicknames.add("DJ");
 		}
 		if (slave.ID === V.RecruiterID) {
-			_qualifiedNicknames.push("Recruiter");
+			_qualifiedNicknames.add("Recruiter");
 		}
 		if (slave.ID === V.WardenessID) {
-			_qualifiedNicknames.push("Wardeness");
+			_qualifiedNicknames.add("Wardeness");
 		}
 		if (slave.ID === V.MilkmaidID) {
-			_qualifiedNicknames.push("Milkmaid");
+			_qualifiedNicknames.add("Milkmaid");
 		}
 		if (slave.ID === V.FarmerID) {
-			_qualifiedNicknames.push("Farmer");
+			_qualifiedNicknames.add("Farmer");
 		}
 		if (slave.ID === V.MilkmaidID && slave.dick > 5 && canPenetrate(slave) && V.cumSlaves > 3) {
-			_qualifiedNicknames.push("Collectrix");
+			_qualifiedNicknames.add("Collectrix");
 		}
 		if (slave.ID === V.StewardessID) {
-			_qualifiedNicknames.push("Stewardess");
+			_qualifiedNicknames.add("Stewardess");
 		}
 		if (slave.ID === V.SchoolteacherID) {
-			_qualifiedNicknames.push("Schoolteacher");
+			_qualifiedNicknames.add("Schoolteacher");
 		}
 		if (slave.ID === V.NurseID) {
-			_qualifiedNicknames.push("Nurse");
+			_qualifiedNicknames.add("Nurse");
 		}
 		if (slave.ID === V.LurcherID) {
-			_qualifiedNicknames.push("Lurcher");
+			_qualifiedNicknames.add("Lurcher");
 		}
 		if (slave.assignment === "be a subordinate slave") {
-			_qualifiedNicknames.push("server");
+			_qualifiedNicknames.add("server");
 		}
 		if (slave.nipples === "huge" || slave.nipples === "puffy") {
-			_qualifiedNicknames.push("nipples");
+			_qualifiedNicknames.add("nipples");
 		} else if (slave.nipples === "fuckable") {
-			_qualifiedNicknames.push("nippleCunts");
+			_qualifiedNicknames.add("nippleCunts");
 		}
 		if (slave.areolae > 2) {
-			_qualifiedNicknames.push("areolae");
+			_qualifiedNicknames.add("areolae");
 		}
 		if (slave.lips > 40) {
-			_qualifiedNicknames.push("lips");
+			_qualifiedNicknames.add("lips");
 		}
 		if (slave.labia > 1 && slave.vagina > -1) {
-			_qualifiedNicknames.push("labia");
+			_qualifiedNicknames.add("labia");
 		}
 		if (slave.physicalAge < 18) {
-			_qualifiedNicknames.push("young");
+			_qualifiedNicknames.add("young");
 		}
 		if (slave.physicalAge > 35) {
-			_qualifiedNicknames.push("old");
+			_qualifiedNicknames.add("old");
 		}
 		if (slave.physicalAge > 59) {
-			_qualifiedNicknames.push("reallyold");
+			_qualifiedNicknames.add("reallyold");
 		}
 		if (isAmputee(slave)) {
-			_qualifiedNicknames.push("amp");
+			_qualifiedNicknames.add("amp");
 		}
 		if ((slave.boobsImplant / slave.boobs) >= .60 || (slave.buttImplant / slave.butt) > .60) {
-			_qualifiedNicknames.push("implants");
+			_qualifiedNicknames.add("implants");
 		}
 		if ((slave.boobsImplant >= 750) && (slave.boobsImplant / slave.boobs) >= .60 && (slave.buttImplant >= 2) && (slave.buttImplant / slave.butt) > .60 && (slave.lipsImplant >= 10) && (slave.lipsImplant / slave.lips) > .30 && (slave.intelligence + slave.intelligenceImplant < -15)) {
-			_qualifiedNicknames.push("bimbo");
+			_qualifiedNicknames.add("bimbo");
 		}
 		if (slave.intelligence + slave.intelligenceImplant < -50) {
-			_qualifiedNicknames.push("stupid");
+			_qualifiedNicknames.add("stupid");
 		}
 		if (slave.intelligence + slave.intelligenceImplant > 50) {
-			_qualifiedNicknames.push("smart");
+			_qualifiedNicknames.add("smart");
 		}
 		if (getBestVision(slave) === 0) {
-			_qualifiedNicknames.push("blind");
+			_qualifiedNicknames.add("blind");
 		}
 		if (slave.hears <= -2) {
-			_qualifiedNicknames.push("deaf");
+			_qualifiedNicknames.add("deaf");
 		}
 		if (slave.voice === 0) {
-			_qualifiedNicknames.push("mute");
+			_qualifiedNicknames.add("mute");
 		}
 		if (slave.breedingMark === 1 && V.propOutcome === 1 && V.arcologies[0].FSRestart !== "unset") {
-			_qualifiedNicknames.push("mark");
+			_qualifiedNicknames.add("mark");
 		}
 		if (slave.broodmother > 1 && slave.preg >= 37) {
-			_qualifiedNicknames.push("hyperbroodmother");
+			_qualifiedNicknames.add("hyperbroodmother");
 		}
 		if (slave.broodmother === 1 && slave.preg >= 37) {
-			_qualifiedNicknames.push("broodmother");
+			_qualifiedNicknames.add("broodmother");
 		}
 		if (slave.bellyPreg >= 300000) {
-			_qualifiedNicknames.push("hyperpreg");
+			_qualifiedNicknames.add("hyperpreg");
 		}
 		if (slave.bellyPreg >= 30000 && slave.boobs >= 5000 && slave.butt > 5 && slave.hips >= 2 && slave.weight < 100) {
-			_qualifiedNicknames.push("fertilityGoddess");
+			_qualifiedNicknames.add("fertilityGoddess");
 		}
 		if (slave.dick > 5 && slave.balls > 5 && slave.counter.slavesKnockedUp > 4) {
-			_qualifiedNicknames.push("babymaker");
+			_qualifiedNicknames.add("babymaker");
 		}
 		if (slave.prostate > 2 && slave.dick === 0 && slave.vagina > -1) {
-			_qualifiedNicknames.push("superSquirter");
+			_qualifiedNicknames.add("superSquirter");
 		}
 		if (slave.bellyPreg >= 100 && slave.pregKnown === 1) {
-			_qualifiedNicknames.push("preg");
+			_qualifiedNicknames.add("preg");
 			if ((slave.ovaries === 1 && slave.vagina === 0) || (slave.mpreg === 1 && slave.anus === 0)) {
-				_qualifiedNicknames.push("virgin preg");
+				_qualifiedNicknames.add("virgin preg");
 			}
 		}
 		if (slave.dick > 4) {
-			_qualifiedNicknames.push("hung");
+			_qualifiedNicknames.add("hung");
 		}
 		if (slave.dick > 0 && slave.balls === 0) {
-			_qualifiedNicknames.push("gelding");
+			_qualifiedNicknames.add("gelding");
 		}
 		if (slave.dick === 1) {
-			_qualifiedNicknames.push("micropenis");
+			_qualifiedNicknames.add("micropenis");
 		}
 		if (slave.boobs >= 800) {
-			_qualifiedNicknames.push("boobs");
+			_qualifiedNicknames.add("boobs");
 		}
 		if (slave.butt > 5) {
-			_qualifiedNicknames.push("butt");
+			_qualifiedNicknames.add("butt");
 		}
 		if (slave.vagina === 0) {
-			_qualifiedNicknames.push("virgin");
+			_qualifiedNicknames.add("virgin");
 		}
 		if (slave.height >= 185) {
-			_qualifiedNicknames.push("tall");
+			_qualifiedNicknames.add("tall");
 		}
 		if (slave.height < 150) {
-			_qualifiedNicknames.push("short");
+			_qualifiedNicknames.add("short");
 		}
 		if (slave.vagina === 1 && slave.skill.vaginal <= 10) {
-			_qualifiedNicknames.push("vaginalWhiner");
+			_qualifiedNicknames.add("vaginalWhiner");
 		}
 		if (slave.anus === 1 && slave.skill.anal <= 10) {
-			_qualifiedNicknames.push("analWhiner");
+			_qualifiedNicknames.add("analWhiner");
 		}
 		if (slave.vagina === -1 && slave.dick === 0 && slave.balls === 0) {
-			_qualifiedNicknames.push("null");
+			_qualifiedNicknames.add("null");
 		}
 		return _qualifiedNicknames;
 	}
@@ -319,7 +319,7 @@ App.Events.RENickname = class RENickname extends App.Events.BaseEvent {
 		}
 
 		const qualifiedNicknames = this.getQualifiedNicknames(slave);
-		let seed = qualifiedNicknames.random();
+		let seed = Array.from(qualifiedNicknames).random();
 		let regen = 0;
 
 		App.Events.drawEventArt(node, slave);
@@ -344,7 +344,7 @@ App.Events.RENickname = class RENickname extends App.Events.BaseEvent {
 				new App.Events.Result("Encourage use of the nickname", encourage),
 				new App.Events.Result("Disapprove, but encourage the other slaves to come up with a better nickname", () => {
 					regen++;
-					seed = qualifiedNicknames.random();
+					seed = Array.from(qualifiedNicknames).random();
 					jQuery(intro).empty().append(introPassage());
 					return ``;
 				}),
-- 
GitLab