From b1d4bc22833a96269bc4343872b29a26fe9ad58e Mon Sep 17 00:00:00 2001
From: Blank_Alt <12406-Blank_Alt@users.noreply.gitgud.io>
Date: Tue, 27 Oct 2020 10:32:55 -0700
Subject: [PATCH] Tweak generate job fulfillment slave II

---
 .../generate/generateLeadershipSlave.js}      | 106 +++++++++++-------
 .../JobFulfillmentCenterDelivery.tw           |   2 +-
 2 files changed, 67 insertions(+), 41 deletions(-)
 rename src/{pregmod/JobFulfillmentCenter/generateJobFulfillmentSlave.js => npc/generate/generateLeadershipSlave.js} (62%)
 rename src/pregmod/{JobFulfillmentCenter => }/JobFulfillmentCenterDelivery.tw (94%)

diff --git a/src/pregmod/JobFulfillmentCenter/generateJobFulfillmentSlave.js b/src/npc/generate/generateLeadershipSlave.js
similarity index 62%
rename from src/pregmod/JobFulfillmentCenter/generateJobFulfillmentSlave.js
rename to src/npc/generate/generateLeadershipSlave.js
index 3a35edd8373..981f2e8061c 100644
--- a/src/pregmod/JobFulfillmentCenter/generateJobFulfillmentSlave.js
+++ b/src/npc/generate/generateLeadershipSlave.js
@@ -1,4 +1,4 @@
-globalThis.generateJobFulfillmentSlave = function() {
+globalThis.generateLeadershipSlave = function(input, location) {
 	const applyMaleGenitalia = function({dick, balls, prostate}) {
 		if (V.seeDicks > 0) {
 			slave.dick = dick;
@@ -6,13 +6,50 @@ globalThis.generateJobFulfillmentSlave = function() {
 			slave.prostate = prostate;
 		}
 	};
-	let slave = GenerateNewSlave("XX", {minAge: 20, maxAge: 36, ageOverridesPedoMode: 1, disableDisability: 1});
-	const {his} = getPronouns(slave);
+	
 	const agePenaltyCheck = V.AgePenalty === 1 ? 36 : 20;
-	slave.trust = 80; slave.devotion = 80;
+	const isMotherly = V.JFC.role === 'Motherly Attendant';
+	let ageMin, ageMax;
+	switch (input) {
+		case "Teacher":
+		case "Attendant":
+		case "Motherly Attendant":
+		case "Matron":
+			if (input === 'Teacher') {
+				ageMin = 36;
+			} else if (input === 'Matron') {
+				ageMin = 24;
+			} else if (input.contains('Attendant')) {
+				ageMin = isMotherly ? 36 : 26);
+			}			
+			ageMax = V.retirementAge-3;
+			break;
+		case "Headgirl":
+		case "Stewardess":
+		case "Farmer":
+		case "Madam":
+			ageMin = agePenaltyCheck;
+			ageMax = V.retirementAge-5;
+			break;
+		default:
+			ageMin = 20;
+			ageMax = 36;
+	}
+	
+	let slave = GenerateNewSlave("XX", {minAge: ageMin, maxAge: ageMax, ageOverridesPedoMode: 1, disableDisability: 1});
+	const {his} = getPronouns(slave);
+	slave.devotion = jsRandom(21, 85);
+	slave.trust = jsRandom(21, 85);
 	slave.weight = jsRandom(-30, 20);
 	slave.waist = jsRandom(-30, 10);
+	slave.intelligenceImplant = 30;
+	slave.intelligence = jsRandom(20, 85);
+	slave.hears = 0;
+	slave.voice = 2;
 	slave.face = jsRandom(40, 60);
+	if (location === 'Job Fulfillment Center') {
+		slave.origin = `The ${location} offered ${his} contract to fill your request for a ${input}.`;
+	}
 	if (slave.faceShape === "masculine") {
 		slave.faceShape = "sensual";
 	}
@@ -20,15 +57,12 @@ globalThis.generateJobFulfillmentSlave = function() {
 		slave.boobShape = "perky";
 	}
 	eyeSurgery(slave, "both", "normal");
-	slave.hears = 0;
-	slave.voice = 2;
-	slave.intelligenceImplant = 30; slave.intelligence = jsRandom(20, 100);
 	setHealth(slave, jsRandom(80, 95), 0, 0, 0, 0);
-	slave.origin = `The Job Fulfillment Center offered ${his} contract to fill your request for a ${V.JFC.role}.`;
-	switch (V.JFC.role) {
+	switch (input) {
 	// Security
 		case "Bodyguard":
-			slave.devotion = 90;
+			slave.devotion = jsRandom(51, 85);
+			slave.trust = jsRandom(51, 85);
 			slave.muscles = jsRandom(30, 70);
 			slave.height = Math.round(Height.random(slave, {skew: 3, spread: .2, limitMult: [1, 4]}));
 			slave.weight = jsRandom(-10, 10);
@@ -42,7 +76,8 @@ globalThis.generateJobFulfillmentSlave = function() {
 		case "Wardeness":
 			slave.energy = jsRandom(80, 100);
 			slave.sexualFlaw = either("malicious", "none", "none", "none", "none");
-			slave.fetish = "sadist"; slave.fetishStrength = 100;
+			slave.fetish = "sadist";
+			slave.fetishStrength = 100;
 			slave.muscles = jsRandom(50, 80);
 			slave.skill.combat = 1;
 			applyMaleGenitalia({dick: jsRandom(3, 6), balls: jsRandom(3, 6), prostate: either(1, 1, 1, 2, 2, 3)});
@@ -50,20 +85,20 @@ globalThis.generateJobFulfillmentSlave = function() {
 			break;
 			// Management
 		case "Headgirl":
-			slave = GenerateNewSlave("XX", {minAge: agePenaltyCheck, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1});
-			slave.intelligenceImplant = 30; slave.intelligence = jsRandom(50, 100);
-			slave.devotion = 90; slave.trust = 100,
-			slave.fetish = "dom"; slave.fetishStrength = 100;
-			slave.energy = jsRandom(70, 90);
 			slave.intelligence = jsRandom(60, 100);
+			slave.devotion = jsRandom(51, 85);
+			slave.trust = jsRandom(51, 85);
+			slave.fetish = "dom";
+			slave.fetishStrength = 100;
+			slave.energy = jsRandom(70, 90);
 			Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100});
 			slave.vagina = jsRandom(3, 4);
 			applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 6), prostate: either(1, 1, 2)});
 			slave.career = either(App.Data.misc.HGCareers);
 			break;
 		case "Teacher":
-			slave = GenerateNewSlave("XX", {minAge: 36, maxAge: V.retirementAge-3, ageOverridesPedoMode: 1, disableDisability: 1});
-			slave.fetish = "dom"; slave.fetishStrength = 100;
+			slave.fetish = "dom";
+			slave.fetishStrength = 100;
 			slave.energy = jsRandom(70, 90);
 			slave.intelligence = 100;
 			Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100});
@@ -73,24 +108,23 @@ globalThis.generateJobFulfillmentSlave = function() {
 			slave.career = either(App.Data.misc.schoolteacherCareers);
 			break;
 		case "Nurse":
-			slave.fetish = "dom"; slave.fetishStrength = 100;
+			slave.fetish = "dom";
+			slave.fetishStrength = 100;
 			slave.muscles = jsRandom(6, 50);
 			slave.face = jsRandom(41, 90);
 			slave.sexualQuirk = "caring";
-			slave.intelligence = jsRandom(51, 100);
 			slave.career = either(App.Data.misc.nurseCareers);
 			break;
 		case "Attendant":
 		case "Motherly Attendant":
-			const isMotherly = V.JFC.role.includes('Motherly');
-			slave = GenerateNewSlave("XX", {minAge: (isMotherly ? 36 : 26), maxAge: V.retirementAge-3, ageOverridesPedoMode: 1, disableDisability: 1});
-			slave.intelligenceImplant = 30; slave.intelligence = jsRandom(20, 100);
-			slave.devotion = 90; slave.trust = 90;
-			slave.fetish = "submissive"; slave.fetishStrength = 100;
+			slave.fetish = "submissive";
+			slave.fetishStrength = 100;
 			slave.face = jsRandom(60, 90);
 			if (isMotherly) {
 				slave.counter.birthsTotal = jsRandom(1, 3);
-				slave.pregKnown = 1; slave.pregWeek = slave.preg = jsRandom(20, 35); slave.pregType = 1;
+				slave.pregKnown = 1;
+				slave.pregWeek = slave.preg = jsRandom(20, 35);
+				slave.pregType = 1;
 				SetBellySize(slave);
 				slave.vagina = jsRandom(3, 4);
 			} else {
@@ -100,35 +134,30 @@ globalThis.generateJobFulfillmentSlave = function() {
 			slave.career = either(App.Data.misc.attendantCareers);
 			break;
 		case "Matron":
-			slave = GenerateNewSlave("XX", {minAge: 24, maxAge: V.retirementAge-3, ageOverridesPedoMode: 1, disableDisability: 1});
-			slave.intelligenceImplant = 30; slave.intelligence = jsRandom(20, 100);
-			slave.devotion = 90; slave.trust = 90;
 			slave.sexualQuirk = "caring";
-			slave.counter.birthsTotal = jsRandom(2, 4); slave.vagina = 3;
+			slave.counter.birthsTotal = jsRandom(2, 4);
+			slave.vagina = 3;
 			slave.face = jsRandom(60, 90);
 			slave.career = either(App.Data.misc.matronCareers);
 			break;
 		case "Stewardess":
-			slave = GenerateNewSlave("XX", {minAge: agePenaltyCheck, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1});
-			slave.intelligenceImplant = 30; slave.intelligence = jsRandom(20, 100);
 			slave.energy = jsRandom(70, 90);
-			slave.fetish = "dom"; slave.fetishStrength = 100;
+			slave.fetish = "dom";
+			slave.fetishStrength = 100;
 			slave.career = either(App.Data.misc.stewardessCareers);
 			break;
 		case "Milkmaid":
 			slave.muscles = jsRandom(31, 60);
 			slave.skill.oral = jsRandom(31, 60);
-			slave.sexualQuirk = "caring"; slave.behavioralQuirk = "funny";
-			slave.intelligence = jsRandom(20, 70);
+			slave.sexualQuirk = "caring";
+			slave.behavioralQuirk = "funny";
 			applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(4, 9), prostate: either(1, 1, 1, 2)});
 			slave.career = either(App.Data.misc.milkmaidCareers);
 			break;
 		case "Farmer":
-			slave = GenerateNewSlave("XX", {minAge: agePenaltyCheck, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1});
 			slave.muscles = jsRandom(41, 70);
 			slave.sexualQuirk = "caring";
 			slave.weight = jsRandom(0, 30);
-			slave.intelligence = jsRandom(20, 70);
 			slave.height = Math.round(Height.random(slave, {skew: 3, spread: .2, limitMult: [1, 4]}));
 			applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(4, 9), prostate: either(1, 1, 1, 2)});
 			slave.career = either(App.Data.misc.farmerCareers);
@@ -141,14 +170,11 @@ globalThis.generateJobFulfillmentSlave = function() {
 			slave.career = either(App.Data.misc.DJCareers);
 			break;
 		case "Madam":
-			slave = GenerateNewSlave("XX", {minAge: agePenaltyCheck, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1});
-			slave.intelligenceImplant = 30; slave.intelligence = jsRandom(20, 100);
 			slave.skill.whoring = 100;
 			applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 5), prostate: either(1, 1, 1, 2)});
 			slave.career = either(App.Data.misc.madamCareers);
 			break;
 		case "Concubine":
-			slave.devotion = jsRandom(90, 95); slave.trust = jsRandom(90, 100);
 			slave.prestige = 3;
 			slave.energy = jsRandom(80, 100);
 			Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100});
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw b/src/pregmod/JobFulfillmentCenterDelivery.tw
similarity index 94%
rename from src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
rename to src/pregmod/JobFulfillmentCenterDelivery.tw
index eacddecee66..a9f6bb403ae 100644
--- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
+++ b/src/pregmod/JobFulfillmentCenterDelivery.tw
@@ -1,7 +1,7 @@
 :: JobFulfillmentCenterDelivery [nobr]
 
 <<set $JFC.order = 0, $nextButton = "Continue", $nextLink = "Scheduled Event", $encyclopedia = "Enslaving People">>
-<<set _slave = generateJobFulfillmentSlave()>>
+<<set _slave = generateLeadershipSlave($JFC.role, 'Job Fulfillment Center')>>
 <<set _slaveCost = slaveCost(_slave) * 6>> 
 <<setLocalPronouns _slave>>
 <<run App.Utils.setLocalPronouns(_slave)>>
-- 
GitLab