From feca31d64d6b55579de2b217eaf19e13a26ed170 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Sun, 17 May 2020 02:08:31 -0400
Subject: [PATCH] JS saServeYourOtherSlaves

---
 src/endWeek/saServeYourOtherSlaves.js  | 1266 ++++++++++++++++++++++++
 src/uncategorized/fullReport.tw        |    2 +-
 src/utility/descriptionWidgetsFlesh.tw |    2 +-
 3 files changed, 1268 insertions(+), 2 deletions(-)
 create mode 100644 src/endWeek/saServeYourOtherSlaves.js

diff --git a/src/endWeek/saServeYourOtherSlaves.js b/src/endWeek/saServeYourOtherSlaves.js
new file mode 100644
index 00000000000..8460fe37812
--- /dev/null
+++ b/src/endWeek/saServeYourOtherSlaves.js
@@ -0,0 +1,1266 @@
+App.SlaveAssignment.serveYourOtherSlaves = (function() {
+	"use strict";
+
+	let r;
+
+	// eslint-disable-next-line no-unused-vars
+	let he, him, his, hers, himself, girl, loli, He, His;
+	// eslint-disable-next-line no-unused-vars
+	let he2, him2, his2, hers2, himself2, girl2, loli2, He2, His2;
+
+	let jobType;
+	let fetishChange;
+
+	let oralUse;
+	let analUse;
+	let vaginalUse;
+	let mammaryUse;
+	let penetrativeUse;
+	let fuckCount;
+	let load;
+	let cervixPump;
+
+	let dom;
+	let domSlave;
+	let domName;
+	let domRace;
+
+	let subName;
+	let subRace;
+	let hands;
+
+	return saServeYourOtherSlaves;
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string}
+	 */
+	function saServeYourOtherSlaves(slave) {
+		r = [];
+		fetishChange = fetishChangeChance(slave);
+
+		({
+			// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, girl, He, His, loli
+		} = getPronouns(slave));
+
+		oralUse = 0;
+		analUse = 0;
+		vaginalUse = 0;
+		mammaryUse = 0;
+		penetrativeUse = 0;
+		cervixPump = 0;
+		fuckCount = 0;
+		load = 0;
+
+		subName = slave.slaveName;
+		hands = hasBothArms(slave) ? "hands" : "hand";
+
+		validateJob(slave);
+		if (jobType === "stud") {
+			studLife(slave);
+		} else if (jobType === "cumdump") {
+			cumdumpLife(slave);
+		} else if (jobType === "sub") {
+			subLife(slave);
+		}
+		sexualSatiation(slave);
+		physicalEffects(slave);
+		mentalEffects(slave);
+		slaveSkills(slave);
+
+		return r.join(" ");
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function validateJob(slave) {
+		if (slave.subTarget === -1) {
+			jobType = "stud";
+		} else if (slave.subTarget === 0) {
+			jobType = "cumdump";
+		} else {
+			// validate .subTarget
+			dom = V.slaveIndices[slave.subTarget];
+			if (dom !== undefined) {
+				jobType = "sub";
+				domSlave = V.slaves[dom];
+				domName = domSlave.slaveName;
+			} else {
+				jobType = "cumdump";
+				slave.subTarget = 0;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function studLife(slave) {
+		if (slave.fuckdoll > 0) {
+			r.push(`is positioned as a sperm dispenser for fertile slaves to ride or milk at their discretion.`);
+		} else if (slave.fetish === "mindbroken") {
+			if (slave.career === "a breeding bull" && canWalk(slave)) {
+				r.push(`is allowed to freely breed any fertile slaves ${he} can find.`);
+			} else {
+				r.push(`is left as a sperm dispenser for fertile slaves to ride or milk at their discretion.`);
+			}
+		} else if (slave.career === "a breeding bull") {
+			r.push(`sees it as ${his} duty to impregnate everyone in ${his} path. A role ${he} <span class="hotpink">appreciates</span> you <span class="mediumaquamarine">untrusting ${him} with.</span>`);
+			slave.devotion += 1;
+			slave.trust += 1;
+			if (slave.fetishKnown === 1) {
+				if (slave.fetish === "pregnancy") {
+					r.push(`${He} <span class="hotpink">thoroughly enjoys</span> ${his} dream-like, pregnancy-centered life.`);
+					slave.devotion += 1;
+				} else if (slave.fetish === "dom") {
+					r.push(`${He} <span class="hotpink">thoroughly enjoys</span> having permission to mount and breed any slave ${he} wants.`);
+					slave.devotion += 1;
+				}
+			}
+		} else if (slave.devotion <= 20) {
+			if (slave.trust >= -20) {
+				r.push(`is bound and laid out to serve as a source of cum for your fertile slaves. Being tied up and left to the wolves <span class="gold">frightens ${him} into obedience.</span>`);
+				slave.trust -= 5;
+				if (slave.fetishKnown === 1) {
+					if (slave.fetish === "pregnancy") {
+						r.push(`${He} secretly gets off at the thought of all the wombs ${he} will seed <span class="hotpink">and can't wait to get to work.</span>`);
+						slave.devotion += 1;
+					} else if (slave.fetish === "submissive") {
+						r.push(`${He} secretly enjoys the prospect of being pinned by mothers-to-be and milked to orgasm; <span class="hotpink">${he} needs it.</span>`);
+						slave.devotion += 1;
+					}
+				}
+			} else {
+				r.push(`is forced to serve as a sperm dispenser for your fertile slaves. Being taken advantage of in such a way <span class="hotpink">habituates ${him} to subservience</span> and <span class="gold">keeps ${him} fearful.</span>`);
+				slave.trust -= 2;
+				slave.devotion += 2;
+				if (slave.fetishKnown === 1) {
+					if (slave.fetish === "pregnancy") {
+						r.push(`${He} privately enjoys the prospect of fertilizing so many eggs <span class="hotpink">and accepts it.</span>`);
+						slave.devotion += 1;
+					} else if (slave.fetish === "masochist") {
+						r.push(`${He} privately enjoys the prospect of rough treatment <span class="hotpink">and accepts it.</span>`);
+						slave.devotion += 1;
+					} else if (slave.fetish === "submissive") {
+						r.push(`${He} privately enjoys the prospect of being treated as a mere tool <span class="hotpink">and accepts it.</span>`);
+						slave.devotion += 1;
+					}
+				}
+			}
+		} else {
+			r.push(`obediently seeds your fertile slaves. Being used as a stud <span class="hotpink">keeps ${him} in a good frame of mind</span> and <span class="mediumaquamarine">builds ${his} trust in you.</span> `);
+			slave.devotion += 2;
+			slave.trust += 2;
+			if (slave.fetishKnown === 1) {
+				if (slave.fetish === "pregnancy") {
+					r.push(`${He} <span class="hotpink">openly enjoys</span> getting the honor of fathering new slaves on your behalf.`);
+					slave.devotion += 1;
+				} else if (slave.fetish === "dom") {
+					r.push(`${He} <span class="hotpink">openly enjoys</span> the prospect of laying claim to any womb that comes ${his} way.`);
+					slave.devotion += 1;
+				}
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function cumdumpLife(slave) {
+		if (slave.devotion <= 20) {
+			if (slave.trust >= -20) {
+				r.push(`is forced to serve your other slaves' sexual needs by constant punishment. Being castigated and raped <span class="gold">frightens ${him} into obedience.</span>`);
+				slave.trust -= 5;
+				if (slave.sexualQuirk === "strugglefuck queen") {
+					r.push(`${He} secretly likes being raped <span class="hotpink">and wants more.</span>`);
+					slave.devotion += 1;
+				} else if (slave.sexualQuirk === "gagfuck queen") {
+					r.push(`${He} secretly enjoys the oral abuse <span class="hotpink">and wants more.</span>`);
+					slave.devotion += 1;
+				} else if (slave.sexualQuirk === "painal queen") {
+					r.push(`${He} secretly gets off on assrape <span class="hotpink">and wants more.</span>`);
+					slave.devotion += 1;
+				}
+			} else {
+				r.push(`is forced to serve your other slaves' sexual needs by ${his} fear. Being used on pain of punishment <span class="hotpink">habituates ${him} to subservience</span> and <span class="gold">keeps ${him} fearful.</span>`);
+				slave.trust -= 2;
+				slave.devotion += 2;
+				if (slave.sexualQuirk === "strugglefuck queen") {
+					r.push(`${He} privately likes being abused <span class="hotpink">and accepts it.</span>`);
+					slave.devotion += 1;
+				} else if (slave.sexualQuirk === "gagfuck queen") {
+					r.push(`${He} privately likes being an oral toy and <span class="hotpink">and accepts it.</span>`);
+					slave.devotion += 1;
+				} else if (slave.sexualQuirk === "painal queen") {
+					r.push(`${He} privately likes being an anal toy <span class="hotpink">and accepts it.</span>`);
+					slave.devotion += 1;
+				}
+			}
+		} else {
+			r.push(`obediently serves your other slaves' sexual needs. Being used as a sexual outlet for everyone <span class="hotpink">keeps ${him} in a good frame of mind.</span>`);
+			slave.devotion += 2;
+			if (slave.sexualQuirk === "strugglefuck queen") {
+				r.push(`${He} <span class="hotpink">openly enjoys</span> how other slaves can take whatever they want from ${him}.`);
+				slave.devotion += 1;
+			} else if (slave.sexualQuirk === "gagfuck queen") {
+				r.push(`${He} <span class="hotpink">openly enjoys</span> how other slaves can order ${him} to lick, suck or blow anything at all.`);
+				slave.devotion += 1;
+			} else if (slave.sexualQuirk === "painal queen") {
+				r.push(`${He} <span class="hotpink">openly enjoys</span> how other slaves can shove anything up ${his} butt without asking first.`);
+				slave.devotion += 1;
+			}
+		}
+		if (hasAnyLegs(slave) && !canWalk(slave)) {
+			r.push(`Since ${he}'s forced to crawl around, ${he}'s especially vulnerable.`);
+		}
+		if (V.subSlaves <= 0) {
+			V.subSlaves = 1;
+		}
+		if ((V.dormitoryPopulation + V.roomsPopulation - V.subSlaves) > 5) {
+			load = (V.subSlaves / (V.dormitoryPopulation + V.roomsPopulation - V.subSlaves));
+			if (load > .8) {
+				r.push(`Since there are enough other slaves servicing your stock alongside ${him}, ${he} sees limited action.`);
+			} else if (load > .5) {
+				r.push(`With ${his} servicing sisters, ${his} workload is reasonable and ${he} isn't overworked.`);
+			} else if (load > .2) {
+				r.push(`While ${he} may have support in servicing your stock, ${he} is <span class="red">overwhelmed by their collective need.</span>`);
+				slave.health.tired += 10;
+				if (slave.sexualFlaw === "self hating") {
+					r.push(`With so many other slaves taking advantage of ${his} body, ${his} life's purpose of <span class="hotpink">being nothing more than a piece of meat</span> has come true.`);
+					slave.devotion += 5;
+				} else if (slave.sexualFlaw === "attention whore") {
+					r.push(`With little competition for ${his} body and so many slaves eager to use ${him}, ${his} dreams of being the center of attention are <span class="hotpink">have come true.</span>`);
+					if (slave.weight < 10 && slave.belly < 100) {
+						if (canDoVaginal(slave) && slave.vagina > 0 && canDoAnal(slave) && slave.anus > 0) {
+							r.push(`${He} ends each day cradling ${his} cum swollen stomach, marveling at the "attention" bestowed upon ${him}.`);
+						} else if ((canDoVaginal(slave) && slave.vagina > 0) || (canDoAnal(slave) && slave.anus > 0)) {
+							r.push(`By the end of the day, ${his} stomach has a noticeable bulge to it from all the "attention" bestowed upon ${him}.`);
+						}
+					}
+					slave.devotion += 5;
+				} else if (slave.energy > 95) {
+					r.push(`With so many other slaves using ${his} body, ${his} <span class="hotpink">burning libido is finally sated.</span>`);
+					slave.devotion += 2;
+				}
+			} else {
+				r.push(`Since`);
+				if (V.subSlaves === 1) {
+					r.push(`${he} is the only slave`);
+				} else {
+					r.push(`there are so few other slaves`);
+				}
+				r.push(`servicing your stock, ${he} is used to the <span class="red">point of exhaustion.</span>`);
+				slave.health.tired += 30;
+				healthDamage(slave, 10);
+				if (V.averageDick > 5) {
+					if (canDoVaginal(slave) && slave.vagina > 0 && slave.vagina < 4) {
+						if ((slave.vagina * 40) - (V.averageDick * 5) < jsRandom(1, 100)) {
+							r.push(`So many huge dicks pistoning in and out of ${his} pussy <span class="lime">loosen ${him} up.</span>`);
+							slave.vagina++;
+							slave.counter.vaginal += 3;
+							V.vaginalTotal += 3;
+						}
+					}
+					if (canDoAnal(slave) && slave.anus > 0 && slave.anus < 4) {
+						if ((slave.anus * 40) - (V.averageDick * 5) < jsRandom(1, 100)) {
+							r.push(`<span class="lime">${His} asshole is loosened</span> after being pounded by so many giant cocks.`);
+							slave.anus++;
+							slave.counter.anal += 3;
+							V.analTotal += 3;
+						}
+					}
+				}
+				if (slave.sexualFlaw === "self hating") {
+					r.push(`With so many other slaves taking advantage of ${his} body, ${his} life's purpose of <span class="hotpink">being nothing more than a piece of meat</span> has come true.`);
+					slave.devotion += 5;
+				} else if (slave.sexualFlaw === "attention whore") {
+					r.push(`With little competition for ${his} body and so many slaves eager to use ${him}, ${his} dreams of being the center of attention are <span class="hotpink">have come true.</span>`);
+					if (slave.weight < 10 && slave.belly < 100) {
+						if (canDoVaginal(slave) && slave.vagina > 0 && canDoAnal(slave) && slave.anus > 0) {
+							r.push(`${He} ends each day cradling ${his} cum swollen stomach, marveling at the "attention" bestowed upon ${him}.`);
+						} else if ((canDoVaginal(slave) && slave.vagina > 0) || (canDoAnal(slave) && slave.anus > 0)) {
+							r.push(`By the end of the day, ${his} stomach has a noticeable bulge to it from all the "attention" bestowed upon ${him}.`);
+						}
+					}
+					slave.devotion += 5;
+				} else if (slave.energy > 95) {
+					r.push(`With so many other slaves using ${his} body, ${his} <span class="hotpink">burning libido is finally sated.</span>`);
+					slave.devotion += 2;
+				}
+			}
+		} else {
+			r.push(`Since you have so few slaves in need of release, ${he} sees little action.`);
+		}
+		fuckCount = Math.ceil((((V.dormitoryPopulation + V.roomsPopulation) + jsRandom(((V.dormitoryPopulation + V.roomsPopulation) * 1), (V.dormitoryPopulation + V.roomsPopulation) * 7)) / V.subSlaves) * healthPenalty(slave));
+		SimpleSexAct.Slave(slave, fuckCount);
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function subLife(slave) {
+		({
+			// eslint-disable-next-line no-unused-vars
+			he2, him2, his2, hers2, himself2, girl2, He2, His2, loli2
+		} = getPronouns(domSlave));
+
+		if (V.seeRace === 1) {
+			domRace = domSlave.race;
+			subRace = slave.race;
+		} else {
+			domRace = "";
+			subRace = "";
+		}
+
+		r.push(`is serving <strong>${domName}</strong> this week.`);
+		if (hasAnyLegs(domSlave) && !canWalk(slave)) {
+			r.push(`Since ${subName} cannot stand, ${domName} has no trouble taking whatever ${he2} wants from ${him}.`);
+		} else if (isAmputee(domSlave)) {
+			r.push(`Since ${he2} has no limbs, ${domName} has to put forth extra effort taking whatever ${he2} wants from ${subName}.`);
+		}
+
+		if (canPenetrate(domSlave)) {
+			if (slave.anus === 0 && canDoAnal(slave) && slave.vagina === 0 && canDoVaginal(slave)) {
+				r.push(`Of course, ${he2} respects ${subName}'s virgin holes and does not penetrate ${him}.`);
+			} else if (slave.anus === 0 && canDoAnal(slave)) {
+				r.push(`Of course, ${he2} respects ${subName}'s anal virginity and does not penetrate ${him} there.`);
+			} else if (slave.vagina === 0 && canDoVaginal(slave)) {
+				r.push(`Of course, ${he2} respects ${subName}'s virginity and does not penetrate ${his} pussy.`);
+			}
+		}
+
+		if (domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "buttslut") {
+			if (canPenetrate(slave) && canDoAnal(domSlave) && (domSlave.anus !== 0)) {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves anal, ${subName} finds ${himself} forced to use ${his} stiff prick to please ${domName}'s insatiable ass. ${He} spends the week trying to avoid ${domName}, because ${domName} won't stop forcing ${him} to get ${his} ${subRace} dick hard so ${domName} can ride ${his2} ${domRace} butt up and down on it. <span class="hotpink">${domName} enjoys having ${his2} own personal cock for the week,</span> even if it does have to be persuaded.`);
+				} else if ((slave.devotion <= 50)) {
+					r.push(`Since ${domName} loves anal, ${subName} finds ${himself} constantly asked to use ${his} stiff prick to please ${domName}'s insatiable ass. ${He} spends the week desperately trying to keep ${himself} hard, because ${domName} constantly expects ${his} ${subRace} dick to be erect so ${domName} can ride ${his2} ${domRace} butt up and down on it. <span class="hotpink">${domName} enjoys having ${his2} own personal cock for the week.</span>`);
+				} else {
+					r.push(`${domName} loves anal and ${subName} has a stiff prick. The two of them have good fun together.`);
+					if (hasAnyLegs(domSlave)) {
+						r.push(`${domName} pulls ${his2} anal ${girl}toy into bathrooms and corners constantly`);
+					} else {
+						r.push(`${domName} has ${his2} anal ${girl}toy hold ${his2}`);
+						if (isAmputee(domSlave)) {
+							r.push(`limbless`);
+						}
+						r.push(`torso`);
+					}
+					r.push(`so ${he2} can ride that ${subRace} dick with ${his2} ${domRace} butt. <span class="hotpink">${domName} enjoys a week of constant butt loving.</span>`);
+				}
+				penetrativeUse = jsRandom(9, 12);
+				domSlave.counter.anal += penetrativeUse;
+				V.analTotal += penetrativeUse;
+				if (canImpreg(domSlave, slave)) {
+					r.push(`${knockMeUp(domSlave, 30, 1, slave.ID, 1)}`);
+					if (domSlave.pregKnown === 1) {
+						r.push(`With so many potent deposits into ${his2} fertile rear, it comes as little surprise when <span class="lime">${he2} ends up pregnant with ${subName}'s child.</span>`);
+					}
+				}
+			} else if (canDoAnal(domSlave)) {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves anal, ${subName} finds ${himself} forced to give analingus on command. ${He} spends the week trying to avoid servicing ${domName}'s insatiable ${domRace} ass with ${his} ${subRace} mouth, but ${domName} insists. <span class="hotpink">${domName} enjoys being able to force ${subName} to service ${his2} butt.</span>`);
+				} else if ((slave.devotion <= 50)) {
+					r.push(`Since ${domName} loves anal, ${subName} finds ${himself} giving analingus on command. ${He} spends the week servicing ${domName}'s insatiable ${domRace} ass with ${his} ${subRace} mouth. <span class="hotpink">${domName} enjoys having ${his2} ass pleasured whenever ${he2} wants it.</span>`);
+				} else {
+					r.push(`Since ${domName} loves anal play, ${subName} lavishes attention on ${his2} butt. ${He} spends the week servicing ${domName}'s insatiable ${domRace} ass with ${his} ${subRace} mouth. <span class="hotpink">${domName} enjoys having an enthusiastic anal playmate.</span>`);
+				}
+				oralUse = jsRandom(9, 12);
+				domSlave.counter.anal += oralUse;
+				V.analTotal += oralUse;
+			} else {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves ${his2} rear, ${subName} finds ${himself} forced to`);
+					if (!hasAnyArms(slave)) {
+						r.push(`massage`);
+					} else {
+						r.push(`fondle`);
+					}
+					r.push(`it on command. ${He} spends the week trying to avoid servicing ${domName}'s ${domRace} ass with ${his} ${subRace}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`face,`);
+					} else {
+						r.push(`${hands},`);
+					}
+					r.push(`but ${domName} insists. <span class="hotpink">${domName} enjoys being able to force ${subName} to service ${his2} butt.</span>`);
+				} else if (slave.devotion <= 50) {
+					r.push(`Since ${domName} loves ${his} rear, ${subName} finds ${himself}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`massaging`);
+					} else {
+						r.push(`fondling`);
+					}
+					r.push(`it on command. ${He} spends the week servicing ${domName}'s ${domRace} ass with ${his} ${subRace}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`face.`);
+					} else {
+						r.push(`${hands}.`);
+					}
+					r.push(`<span class="hotpink">${domName} enjoys having ${his2} ass pleasured whenever ${he2} wants it.</span>`);
+				} else {
+					r.push(`Since ${domName} loves ${his2} rear played with, ${subName} lavishes attention on ${his2} butt. ${He} spends the week fondling ${domName}'s ${domRace} ass with ${his} ${subRace}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`face.`);
+					} else {
+						r.push(`${hands}.`);
+					}
+					r.push(`<span class="hotpink">${domName} enjoys having a playmate so fond of ${his2} booty.</span>`);
+				}
+			}
+		} else if (slave.devotion >= -20 && domSlave === "submissive" && domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60) {
+			r.push(`${domName} loves to submit, and tells ${subName} to fuck ${him2}; when ${subName} asks how, ${domName} tells ${him} to take charge.`);
+			if (canPenetrate(slave)) {
+				penetrativeUse = jsRandom(9, 12);
+				if (isAmputee(slave)) {
+					if (canDoVaginal(domSlave) && domSlave.vagina !== 0) {
+						r.push(`${domName} finds ${himself2} under the weight of ${subName}'s limbless body and ${his2} ${domRace} slit accommodating an eager ${subRace} cock. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top for ${his} efforts. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to fuck a willing pussy.`);
+						domSlave.counter.vaginal += penetrativeUse;
+						V.vaginalTotal += penetrativeUse;
+						if (canImpreg(domSlave, slave)) {
+							r.push(`${knockMeUp(domSlave, 30, 0, slave.ID, 1)}`);
+							if (domSlave.pregKnown === 1) {
+								r.push(`With so many potent loads kissing ${his2} cervix, it comes as little surprise when <span class="lime">${he2} ends up pregnant with ${subName}'s child.</span>`);
+							}
+						}
+					} else if (canDoAnal(domSlave) && domSlave.anus !== 0) {
+						r.push(`${domName} finds ${himself2} under the weight of ${subName}'s limbless body and ${his2} ${domRace} ass accommodating an eager ${subRace} cock. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top for ${his} efforts. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to fuck a willing asshole.`);
+						domSlave.counter.anal += penetrativeUse;
+						V.analTotal += penetrativeUse;
+						if (canImpreg(domSlave, slave)) {
+							r.push(`${knockMeUp(domSlave, 30, 1, slave.ID, 1)}`);
+							if (domSlave.pregKnown === 1) {
+								r.push(`With so many potent deposits into ${his2} fertile rear, it comes as little surprise when <span class="lime">${he2} ends up pregnant with ${subName}'s child.</span>`);
+							}
+						}
+					} else {
+						r.push(`${domName} finds ${his2} head under the weight of ${subName}'s limbless body and ${his2} ${domRace} face accommodating an eager ${subRace} cock. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top for ${his} efforts. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to fuck a willing asshole.`);
+						domSlave.counter.oral += penetrativeUse;
+						V.oralTotal += penetrativeUse;
+					}
+				} else {
+					if (canDoVaginal(domSlave) && domSlave.vagina !== 0) {
+						r.push(`${domName} finds ${himself2} with ${his2} face pushed firmly into ${his2} bedsheets and ${his2} ${domRace} slit accommodating ${subName}'s eager ${subRace} cock. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to fuck a willing pussy.`);
+						domSlave.counter.vaginal += penetrativeUse;
+						V.vaginalTotal += penetrativeUse;
+						if (canImpreg(domSlave, slave)) {
+							r.push(`${knockMeUp(domSlave, 30, 0, slave.ID)}`);
+							if (domSlave.pregKnown === 1) {
+								r.push(`With so many potent loads kissing ${his2} cervix, it comes as little surprise when <span class="lime">${he2} ends up pregnant with ${subName}'s child.</span>`);
+							}
+						}
+					} else if (canDoAnal(domSlave) && domSlave.anus !== 0) {
+						r.push(`${domName} finds ${himself2} with ${his2} face pushed firmly into ${his2} bedsheets and ${his2} ${domRace} ass accommodating ${subName}'s eager ${subRace} cock. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to fuck a willing asshole.`);
+						domSlave.counter.anal += penetrativeUse;
+						V.analTotal += penetrativeUse;
+						if (canImpreg(domSlave, slave)) {
+							r.push(`${knockMeUp(domSlave, 30, 1, slave.ID)}`);
+							if (domSlave.pregKnown === 1) {
+								r.push(`With so many potent deposits into ${his2} fertile rear, it comes as little surprise when <span class="lime">${he2} ends up pregnant with ${subName}'s child.</span>`);
+							}
+						}
+					} else {
+						r.push(`${domName} finds ${himself2} with ${his2} face pushed firmly into ${subName}'s crotch and ${his2} ${domRace} face accommodating an eager ${subRace} cock. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to fuck a willing asshole.`);
+						domSlave.counter.oral += penetrativeUse;
+						V.oralTotal += penetrativeUse;
+					}
+				}
+			} else if (slave.clit > 2) {
+				if (isAmputee(slave)) {
+					r.push(`${domName} finds ${himself2} pinned by the weight of ${subName}'s limbless body and ${his} quickly hardening ${subRace} clit being pushed eagerly into ${his2} ${domRace} mouth. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top for ${his} efforts.`);
+				} else {
+					r.push(`${domName} finds ${himself2} with ${his2} back pushed firmly into ${his2} bedsheets and ${subName}'s quickly hardening clit being pushed eagerly into ${his2} mouth. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top.`);
+				}
+				r.push(`${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> constant oral attention.`);
+				penetrativeUse = jsRandom(9, 12);
+				domSlave.counter.oral += penetrativeUse;
+				V.oralTotal += penetrativeUse;
+			} else {
+				if (isAmputee(slave)) {
+					if (canDoVaginal(domSlave)) {
+						r.push(`${domName} finds ${himself2} under the weight of ${subName}'s limbless body and ${his2} ${domRace} slit molested by an eager tongue. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top for ${his} efforts. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to torment a willing pussy.`);
+						oralUse = jsRandom(9, 12);
+						domSlave.counter.vaginal += oralUse;
+						V.vaginalTotal += oralUse;
+					} else if (!(domSlave.chastityPenis) && domSlave.dick > 0) {
+						r.push(`${domName} finds ${himself2} under the weight of ${subName}'s limbless body with the tight embrace of ${subRace} lips around ${his2} ${domRace} cock. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top for ${his} efforts. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to torment a willing dick.`);
+						oralUse = jsRandom(9, 12);
+						domSlave.counter.penetrative += oralUse;
+						V.penetrativeTotal += oralUse;
+					} else {
+						r.push(`${domName} finds ${himself2} under the weight of ${subName}'s limbless body and`);
+						if (domSlave.boobs >= 300) {
+							r.push(`${his2} ${domRace} tits`);
+						} else {
+							r.push(`${his2} ${nippleColor(domSlave)} nipples`);
+						}
+						r.push(`under attack by an eager mouth. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top for ${his} efforts. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind</span> being expected to play with a willing chest.`);
+						oralUse = jsRandom(9, 12);
+						domSlave.counter.mammary += oralUse;
+						V.mammaryTotal += oralUse;
+					}
+				} else {
+					if (canDoVaginal(domSlave) && domSlave.vagina !== 0) {
+						r.push(`${domName} finds ${himself2} with ${his2} face pushed firmly into ${his2} bedsheets and ${his2} ${domRace} slit accommodating ${subName}'s thrusting ${subRace} fingers. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind the fun.</span>`);
+						fuckCount = jsRandom(9, 12);
+						domSlave.counter.vaginal += fuckCount;
+						V.vaginalTotal += fuckCount;
+					} else if (canDoAnal(domSlave) && domSlave.anus !== 0) {
+						r.push(`${domName} finds ${himself2} with ${his2} face pushed firmly into ${his2} bedsheets and ${his2} ${domRace} ass accommodating ${subName}'s thrusting ${subRace} fingers. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind the fun.</span>`);
+						fuckCount = jsRandom(9, 12);
+						domSlave.counter.anal += fuckCount;
+						V.analTotal += fuckCount;
+					} else {
+						r.push(`${domName} finds ${himself2} pushed firmly into ${his2} bedsheets and ${his2}`);
+						if (domSlave.boobs >= 300) {
+							r.push(`${domRace} tits`);
+						} else {
+							r.push(`${nippleColor(domSlave)} nipples`);
+						}
+						r.push(`being roughly handled by ${subName}'s ${subRace} fingers. Afterward, ${domName} lavishes kisses on ${his2} satisfactory top. ${domName} <span class="hotpink">enjoys a week of constant submission,</span> and even though ${he}'s technically being used, ${subName} <span class="hotpink">doesn't mind the fun.</span>`);
+						fuckCount = jsRandom(9, 12);
+						domSlave.counter.mammary += fuckCount;
+						V.mammaryTotal += fuckCount;
+					}
+				}
+			}
+			slave.devotion += 1;
+		} else if (slave.devotion >= -20 && domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "dom" && canWalk(domSlave)) {
+			r.push(`${domName} loves to dominate, and the first indication ${subName} gets of what ${he}'s in for this week is when ${domName} ambushes ${him} in the dormitory, tackles ${him} from behind, and`);
+			if (isAmputee(slave)) {
+				r.push(`bursts out`);
+				if (canTalk(domSlave)) {
+					r.push(`laughing`);
+				} else {
+					r.push(`in silent laughter`);
+				}
+				r.push(`at ${his} inability to right ${himself} without limbs.`);
+			} else {
+				r.push(`hogties ${him} with sheets.`);
+			}
+			r.push(`${subName} wriggles a little but doesn't really start to attempt escape until ${domName} begins to carefully tease ${his} ${subRace}`);
+			if (slave.dick > 0 && !(slave.chastityPenis)) {
+				r.push(`dickhead,`);
+			} else if (slave.clit > 0) {
+				r.push(`clit,`);
+			} else if (canDoVaginal(slave)) {
+				r.push(`pussy,`);
+			} else {
+				r.push(`nipples,`);
+			}
+			r.push(`edging ${him} right up to the point of orgasm and making ${him} beg. It's a long but <span class="hotpink">obedience-building</span> week for ${subName}, and ${domName} certainly <span class="hotpink">enjoys ${his2} toy.</span>`);
+			slave.devotion += 1;
+			if (slave.need && slave.fetishKnown) {
+				if (slave.fetish === "submissive" || slave.fetish === "masochist") {
+					r.push(`${subName} needs this kind of treatment to be truly sexually satisfied; this week, ${his} desire for abuse is sated.`);
+					slave.need = 0;
+				}
+			}
+		} else if (domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "sadist" && canWalk(domSlave)) {
+			r.push(`${domName} loves to inflict pain, and the first indication ${subName} gets of what ${he}'s in for this week is when ${domName} ambushes ${him} in the dormitory, tackles ${him} from behind, and hogties ${him} with sheets.`);
+			if (canTalk(domSlave)) {
+				r.push(`${domName} bends close to the immobilized ${subName}'s ear and whispers to ${him} that ${he} might as well scream.`);
+			} else {
+				r.push(`${domName} carefully uses gestures to communicate to ${him} that ${he} might as well scream.`);
+			}
+			r.push(` ${subName}'s struggles to escape become desperate at this, and more desperate still when the week's first <span class="red">beating</span> starts. Later, ${he} tries going limp and unresistant, but that just makes the annoyed ${domName} beat ${his2} pain slave all the harder until ${he2} gets a reaction again. It's a long and <span class="hotpink">will breaking</span> week for ${subName}, and ${domName} certainly <span class="hotpink">enjoys torturing ${his2} toy.</span>`);
+			slave.devotion += 1;
+			healthDamage(slave, 3);
+			if (slave.need && slave.fetishKnown) {
+				if (slave.fetish === "submissive" || slave.fetish === "masochist") {
+					r.push(`${subName} needs this kind of treatment to be truly sexually satisfied; this week, ${his} desire for abuse is sated.`);
+					slave.need = 0;
+				}
+			}
+		} else if (domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "boobs") {
+			if (domSlave.nipples === "fuckable" && canPenetrate(slave)) {
+				r.push(`Since ${domName} loves to have ${his2} nipples fucked, ${subName} spends the week getting to use ${his} dick for a change. ${subName}'s ${subRace} body thrusting into ${domName}'s supple ${domRace} breasts is a frequent sight as ${domName} takes ${his2} pleasure. <span class="hotpink">${domName} enjoys being able to use ${subName}.</span>`);
+				penetrativeUse = jsRandom(9, 12);
+				domSlave.counter.mammary += penetrativeUse;
+				V.mammaryTotal += penetrativeUse;
+				domSlave.counter.penetrative += penetrativeUse;
+				V.penetrativeTotal += penetrativeUse;
+			} else if (domSlave.lactation > 0) {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves giving milk, ${subName} finds ${himself} forced to nurse. ${He} spends the week trying to avoid guzzling down milk from ${domName}'s ${nippleColor(domSlave)} ${domRace} nipples with ${his} ${subRace} mouth, but ${domName} insists. <span class="hotpink">${domName} enjoys being able to force ${subName} to drink from ${him2}.</span>`);
+				} else if (slave.devotion <= 50) {
+					r.push(`Since ${domName} loves giving milk, ${subName} finds ${himself} constantly nursing. ${He} spends the week obediently taking milk from ${domName}'s ${nippleColor(domSlave)} ${domRace} nipples with ${his} ${subRace} mouth, to ${domName}'s motherly satisfaction. <span class="hotpink">${domName} enjoys having ${subName} to drink from ${him2} whenever ${he2} feels overfull.</span>`);
+				} else {
+					r.push(`Since ${domName} loves giving milk, ${subName} constantly nurses from ${him2}. ${He} spends the week happily taking milk from ${domName}'s ${nippleColor(domSlave)} ${domRace} nipples with ${his} hungry ${subRace} mouth, to ${domName}'s motherly delight. <span class="hotpink">${domName} loves having ${subName} to feed and fill.</span>`);
+				}
+			} else {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves having ${his2} breasts attended to, ${subName} finds ${himself} forced to `);
+					if (!hasAnyArms(slave)) {
+						r.push(`nuzzle and suck.`);
+					} else {
+						r.push(`knead, massage, and even suck.`);
+					}
+					r.push(`${He} spends the week trying to avoid servicing ${domName}'s ${domRace} breasts with ${his} ${subRace}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`face,`);
+					} else {
+						r.push(`${hands},`);
+					}
+					r.push(`but ${domName} insists. <span class="hotpink">${domName} enjoys being able to force ${subName} to see to ${his2} tits.</span>`);
+				} else if (slave.devotion <= 50) {
+					r.push(`Since ${domName} loves having ${his2} breasts attended to, ${subName} finds ${himself}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`nuzzling and sucking.`);
+					} else {
+						r.push(`kneading, massaging, and even sucking.`);
+					}
+					r.push(`${He} spends the week obediently servicing ${domName}'s ${domRace} breasts with ${his} ${subRace}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`face,`);
+					} else {
+						r.push(`${hands},`);
+					}
+					r.push(`to ${domName}'s languorous pleasure. <span class="hotpink">${domName} enjoys having ${subName} to see to ${his2} tits.</span>`);
+				} else {
+					r.push(`Since ${domName} loves having ${his2} breasts attended to, ${subName} pampers ${his2} breasts shamelessly. ${He} spends the week devotedly massaging ${domName}'s ${domRace} breasts with ${his} ${subRace}`);
+					if (!hasAnyArms(slave)) {
+						r.push(`face,`);
+					} else {
+						r.push(`${hands},`);
+					}
+					r.push(`sucking lovingly at ${his2} nipples, and caring for everything with lotions and`);
+					if (!hasAnyArms(slave)) {
+						r.push(`oils (as best ${he} can without hands).`);
+					} else {
+						r.push(`oils.`);
+					}
+					r.push(`They sleep together so that ${subName} can`);
+					if (!hasAnyArms(slave)) {
+						r.push(`snuggle into ${his2} bust`);
+					} else {
+						r.push(`hold ${his2} boobs`);
+					}
+					r.push(`as ${he} goes to sleep, which sometimes results in less sleep for both as the breast play continues long into the night. <span class="hotpink">${domName} enjoys having ${subName} to see to ${his2} tits.</span>`);
+				}
+			}
+			if (domSlave.lactation > 0) {
+				domSlave.lactationDuration = 2;
+				domSlave.boobs -= domSlave.boobsMilk;
+				domSlave.boobsMilk = 0;
+			}
+			oralUse = jsRandom(9, 12);
+			domSlave.counter.mammary += oralUse;
+			V.mammaryTotal += oralUse;
+		} else if (slave.balls !== 0 && ((slave.chastityPenis === 0 && slave.dick > 0) || (slave.chastityVagina === 0)) && domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "cumslut") {
+			if (canAchieveErection(slave)) {
+				r.push(`Since ${domName} loves cum, and ${subName} has a dick, ${domName} has ${his2} own private semen dispenser. ${domName} sometimes gets tired of having to work hard for cum, so ${he2} spends the week`);
+				if (hasAnyArms(domSlave)) {
+					r.push(`stimulating poor ${subName}'s`);
+				} else {
+					r.push(`ordering ${subName} to stimulate ${his} own`);
+				}
+				if (slave.prostate) {
+					r.push(`prostate`);
+				} else {
+					r.push(`balls`);
+				}
+				r.push(`to force ${him} to climax so ${domName} can wrap ${his2} ${domRace} lips around ${subName}'s ${subRace} dickhead to suck down ${his2} cum. <span class="hotpink">${domName} enjoys having a servile dick on demand.</span>`);
+			} else if (slave.dick > 0 && !canAchieveErection(slave)) {
+				r.push(`Since ${domName} loves cum, and ${subName} has a dick, ${domName} has ${his2} own private semen dispenser, even if it's rather limp. ${domName} sometimes gets tired of having to work hard for cum, so ${he2} spends the week making ${subName} painstakingly bring ${his} flaccid dick almost to orgasm before ${domName} wraps ${his2} ${domRace} lips around ${subName}'s ${subRace} soft dickhead to suck down the cum. <span class="hotpink">${domName} enjoys having a servile dick on demand.</span>`);
+			} else {
+				r.push(`Since ${domName} loves cum, and ${subName} has balls, ${domName} has ${his2} own private semen dispenser. ${domName} sometimes gets tired of having to work hard for cum, so ${he2} spends the week`);
+				if (hasAnyArms(domSlave)) {
+					r.push(`stimulating poor ${subName}'s`);
+				} else {
+					r.push(`ordering ${subName} to stimulate ${his} own`);
+				}
+				if (slave.prostate) {
+					r.push(`prostate`);
+				} else {
+					r.push(`balls`);
+				}
+				r.push(`to force ${him} to climax so ${domName} can plant ${his2} ${domRace} lips overs ${subName}'s ${subRace}`);
+				if (slave.vagina >= 0) {
+					r.push(`urethra`);
+				} else {
+					r.push(`smooth crotch`);
+				}
+				r.push(`to catch ${his} cum. <span class="hotpink">${domName} enjoys having ${his2} little sperm fountain.</span>`);
+			}
+			penetrativeUse = jsRandom(9, 12);
+			domSlave.counter.oral += penetrativeUse;
+			V.oralTotal += penetrativeUse;
+		} else if (domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "humiliation" && hasAnyLegs(slave)) {
+			r.push(`${domName} loves being degraded, and the first indication ${subName} gets of what ${he}'s in for this week is when ${domName}`);
+			if (canWalk(domSlave)) {
+				r.push(`escorts ${him} to the cafeteria for lunch`);
+			} else {
+				r.push(`begs to be taken to the cafeteria for lunch`);
+			}
+			r.push(`and settles ${himself2}`);
+			if (hasBothLegs(slave)) {
+				r.push(`between ${subName}'s legs,`);
+			} else {
+				r.push(`in ${subName}'s crotch,`);
+			}
+			r.push(`before asking for ${his2} portion to be plated appropriately. ${subName} struggles to eat`);
+			if (slave.dick > 0) {
+				if (slave.chastityDick) {
+					r.push(`with an eager tongue probing the gaps around ${his} chastity cage trying to gather every last drop of slave food.`);
+				} else {
+					r.push(`while ${his}`);
+					if (slave.dick === 1) {
+						r.push(`tiny`);
+					} else if (slave.dick === 2) {
+						r.push(`cute`);
+					} else if (slave.dick === 3) {
+						r.push(`average`);
+					} else if (slave.dick === 4) {
+						r.push(`big`);
+					} else if (slave.dick === 5) {
+						r.push(`impressive`);
+					} else if (slave.dick === 6) {
+						r.push(`huge`);
+					} else if (slave.dick === 7) {
+						r.push(`gigantic`);
+					} else if (slave.dick === 8) {
+						r.push(`titanic`);
+					} else if (slave.dick === 9) {
+						r.push(`absurd`);
+					} else if (slave.dick === 10) {
+						r.push(`inhuman`);
+					} else {
+						r.push(`immense`);
+					}
+					if (canAchieveErection(slave)) {
+						r.push(`erection`);
+					} else {
+						r.push(`dick`);
+					}
+					r.push(`is licked clean of any slave food clinging to it.`);
+					if (domSlave.skills.oral - ((slave.dick * 15) - 20) >= 0) {
+						r.push(`${subName} practically throws ${his} cup when ${domName} sucks the entire length of ${his} dick into ${his2} mouth and down ${his2} throat, and`);
+					} else {
+						r.push(`${subName} shudders as ${domName} wraps ${his2} lips around ${his} cockhead and`);
+					}
+					r.push(`struggles to maintain any sense of composure as ${domName} works for ${his2} dessert.`);
+					if (slave.ballType !== "sterile" && slave.balls > 0) {
+						r.push(`The stimulation inevitably sends ${him} over the edge,`);
+						if (slave.vasectomy) {
+							r.push(`forcing ${him} to buck and ram ${his} cock a little too far into ${domName}.`);
+						} else if (slave.balls >= 30 || slave.prostate > 2) {
+							r.push(`unleashing a massive spurt down ${domName}'s throat. ${domName} gags and pulls back, recieving the rest of ${subName}'s load across ${his2} face and body. ${domName} couldn't even come close to hiding what happened — just the way ${he2} likes it.`);
+						} else if (slave.balls >= 10) {
+							r.push(`filling ${domName}'s throat with such volume it sprays out ${his2} nose. ${domName} stands no chance of cleaning ${himself2} up without being seen — quite enjoyable, really.`);
+						} else {
+							r.push(`giving ${domName} a cum chaser to ${his2} meal.`);
+						}
+					} else {
+						r.push(`But alas, ${subName}'s dispenser has nothing to give ${domName}, so ${his2} efforts are in vain — and in a way, ${he2} prefers it that way.`);
+					}
+				}
+			} else if (slave.scrotum > 0) {
+				r.push(`while ${his}`);
+				if (slave.balls === 0) {
+					r.push(`empty ballsack is`);
+				} else if (slave.balls === 1) {
+					r.push(`tiny balls are`);
+				} else if (slave.balls === 2) {
+					r.push(`small balls are`);
+				} else if (slave.balls === 3) {
+					r.push(`balls are`);
+				} else if (slave.balls === 4) {
+					r.push(`big balls are`);
+				} else if (slave.balls === 5) {
+					r.push(`lemon-sized balls are`);
+				} else if (slave.balls < 9) {
+					r.push(`fist-sized balls are`);
+				} else if (slave.balls < 14) {
+					r.push(`softball-sized balls are`);
+				} else if (slave.balls < 30) {
+					r.push(`melon-sized balls are`);
+				} else {
+					r.push(`$his hypertrophied balls are`);
+				}
+				r.push(`licked and sucked clean of slave food.`);
+				if (slave.ballType !== "sterile") {
+					r.push(`The stimulation inevitably sends ${him} over the edge,`);
+					if (slave.vasectomy) {
+						r.push(`forcing ${him} to buck and smacking ${domName} into the underside of the table, spilling ${his} cup.`);
+					} else if (slave.balls >= 30 || slave.prostate > 2) {
+						r.push(`unleashing a veritable flood of semen across ${his} nuts. ${domName} sighs a little as ${his2} meal washes away, but sets to work on cleaning up the new mess all the same.`);
+					} else if (slave.balls >= 10) {
+						r.push(`completely refilling ${domName}'s makeshift bowl with a heavy second course — not that ${he2}'d complain.`);
+					} else {
+						r.push(`adding a mix of semen into ${domName}'s meal — which ${he2} wastes no time in lapping up.`);
+					}
+				}
+			} else if (canDoVaginal(slave)) {
+				r.push(`while ${his} pussy is being invaded by drops of slave food and the tongue pursuing them.`);
+				if (slave.clit > 2) {
+					r.push(`${subName} practically throws ${his} cup when ${domName} sucks the entire length of ${his} clit into ${his2} mouth.`);
+				}
+			} else {
+				r.push(`with an eager tongue roaming ${his} thighs, pubic mound, and taint trying to lap up the slave food before it slips away.`);
+			}
+			r.push(`The lewdness eminating from beneath the table is not lost on the other diners, <span class="hotpink">much to ${domName}'s enjoyment.</span>`);
+		} else if (domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "masochist" && hasAnyLimbs(slave)) {
+			r.push(`${domName} loves pain, and the first indication ${subName} gets of what ${he}'s in for this week is when ${domName}`);
+			if (canHold(domSlave)) {
+				r.push(`hands ${him}`);
+			} else if (canTalk(domSlave)) {
+				r.push(`orders ${him} to pick up`);
+			} else {
+				r.push(`gestures at`);
+			}
+			r.push(`${his2} favorite crop and implores ${subName} to punish ${him2}; ${domName} has been bad and ${subName} needs to teach ${him2} a lesson. ${subName} spends a long and <span class="trust inc">empowering</span> week learning new ways to <span class="red">inflict pain</span> on someone, not that the <span class="hotpink">thoroughly bruised ${domName} will complain.</span>`);
+			slave.trust += 1;
+			healthDamage(domSlave, 3);
+			if (slave.need && slave.fetishKnown) {
+				if (slave.fetish === "submissive" || slave.fetish === "masochist") {
+					r.push(`${subName} needs this kind of treatment to be truly sexually satisfied; this week, ${his} desire for abuse is sated.`);
+					slave.need = 0;
+				}
+			}
+		} else if (domSlave.fetishKnown === 1 && domSlave.fetishStrength > 60 && domSlave.fetish === "pregnancy") {
+			if (canImpreg(slave, domSlave)) {
+				// wip
+			} else if (domslave.pregKnown === 1 || slave.belly > 10000 || slave.bellyPreg >= 1500) {
+				// wip
+			} else if (canImpreg(domSlave, slave)) {
+				// wip
+			} else {
+				// wip
+			}
+		} else if (domSlave.energy > 95) {
+			if (slave.devotion < -20) {
+				r.push(`Since ${domName} loves to fuck, ${subName} spends the week getting fucked. ${domName}'s ${domRace} body atop ${subName}'s resisting ${subRace} form is a frequent sight as ${domName} takes ${his2} pleasure. <span class="hotpink">${domName} enjoys being able to use ${subName}.</span>`);
+			} else if (slave.devotion <= 50) {
+				r.push(`Since ${domName} loves to fuck, ${subName} spends the week getting fucked. ${domName}'s ${domRace} body atop ${subName}'s compliant ${subRace} form is a frequent sight as ${domName} takes ${his2} pleasure. <span class="hotpink">${domName} enjoys being able to use ${subName}.</span>`);
+			} else {
+				r.push(`Since ${domName} loves to fuck, ${subName} spends the week getting fucked. ${domName}'s ${domRace} body atop ${subName}'s enthusiastic ${subRace} form is a frequent sight as the two of them share pleasure. <span class="hotpink">${domName} enjoys having an extra outlet for ${his2} sexual needs.</span>`);
+			}
+			if (canPenetrate(domSlave)) {
+				fuckCount = jsRandom(15, 25);
+				r.push(`${SimpleSexAct.Slaves(slave, domSlave, fuckCount)}`);
+			} else if (canPenetrate(slave) && ((canDoVaginal(domSlave) && domSlave.vagina > 0) || (canDoAnal(domSlave) && domSlave.anus > 0))) {
+				/* yes, that means she rides her */
+				fuckCount = jsRandom(15, 25);
+				r.push(`${SimpleSexAct.Slaves(domSlave, slave, fuckCount)}`);
+			} else {
+				oralUse = jsRandom(15, 25);
+			}
+		} else if (domSlave.dick > 0 && canPenetrate(domSlave)) {
+			if (slave.devotion < -20) {
+				r.push(`${domName} doesn't get to use ${his2} still-functional cock as much as ${he2} would like; it often stands stiff and untended while ${he2}'s being used. Not this week: ${subName} spends the week with ${domName}'s ${domRace} dick thrusting in and out of ${his} ${subRace} body, whenever ${he2} feels like forcing it into ${subName}'s unwilling holes. <span class="hotpink">${domName} loves having someone to fuck whenever ${he2} wants.</span>`);
+			} else if (slave.devotion <= 50) {
+				r.push(`${domName} doesn't get to use ${his2} still-functional cock as much as ${he2} would like; it often stands stiff and untended while ${he2}'s being used. Not this week: ${subName} spends the week with ${domName}'s ${domRace} dick thrusting in and out of ${his} ${subRace} body, whenever ${he2} feels like putting it into ${subName}'s compliant holes. <span class="hotpink">${domName} loves having someone to stick ${his2} dick in at last.</span>`);
+			} else {
+				r.push(`${domName} doesn't get to use ${his2} still-functional cock as much as ${he2} would like; it often stands stiff and untended while ${he2}'s being used. Not this week: ${subName} spends the week with ${domName}'s ${domRace} dick thrusting in and out of ${his} ${subRace} body, whenever ${he2} feels like having an enthusiastic fuck. <span class="hotpink">${domName} loves having someone to tend to ${his2} prick at last.</span>`);
+			}
+			fuckCount = jsRandom(9, 12);
+			r.push(`${SimpleSexAct.Slaves(slave, domSlave, fuckCount)}`);
+		} else if (hasAnyArms(domSlave) && domSlave.attrXX > 85 && slave.dick === 0 && slave.vagina > -1) { // feminine check
+			if (slave.devotion < -20) {
+				r.push(`Since ${domName} loves girls, ${subName} finds ${himself} groped, fingered, and toyed with. ${He} spends the week trying to avoid ${domName}'s playful ${domRace}`);
+				if (hasBothArms(domSlave)) {
+					r.push(`hands,`);
+				} else {
+					r.push(`fingers,`);
+				}
+				r.push(`but they rove across ${his} ${subRace} body anyway. <span class="hotpink">${domName} enjoys having a nice little toy right at hand,</span> even if ${he} does have to be forced.`);
+			} else if (slave.devotion <= 50) {
+				r.push(`Since ${domName} loves girls, ${subName} finds ${himself} groped, fingered, and toyed with. ${He} spends the week accepting the attention of ${domName}'s playful ${domRace}`);
+				if (hasBothArms(domSlave)) {
+					r.push(`hands.`);
+				} else {
+					r.push(`fingers.`);
+				}
+				r.push(`They rove across ${his} ${subRace} body, eliciting embarrassed arousal. <span class="hotpink">${domName} enjoys having a nice little toy right at hand,</span> even if ${he} is a little hesitant.`);
+			} else {
+				r.push(`Since ${domName} loves girls, ${subName} finds ${himself} with a frank and open lover for the week. ${He} spends the week accepting the attention of ${domName}'s adoring ${domRace}`);
+				if (hasBothArms(domSlave)) {
+					r.push(`hands.`);
+				} else {
+					r.push(`fingers.`);
+				}
+				r.push(`They rove across ${his} ${subRace} body, knowing just where to touch and where to press. <span class="hotpink">${domName} enjoys having a compliant ${girl} friend,</span > and they spend as much time together as they can.`);
+			}
+			if (canPenetrate(domSlave)) {
+				fuckCount = jsRandom(9, 12);
+				r.push(`${SimpleSexAct.Slaves(slave, domSlave, fuckCount)}`);
+			} else {
+				oralUse = jsRandom(9, 12);
+			}
+		} else if (slave.dick > 0 && hasAnyArms(domSlave) && domSlave.attrXY > 85) {
+			if (canPenetrate(slave)) {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves hard cocks, ${subName} finds ${him} self forced to get hard and fuck. ${He} spends the week trying to avoid ${domName}'s constant demands. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it does have to be forced to stand up for ${him2}.`);
+				} else if (slave.devotion <= 50) {
+					r.push(`Since ${domName} loves hard cocks, ${subName} finds ${himself} required to get hard and fuck constantly. ${He} spends the week doing ${his} best to satisfy ${domName}'s constant demands. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> and won't leave it alone.`);
+				} else {
+					r.push(`Since ${domName} loves hard cocks, ${subName} finds ${himself} asked to get hard and fuck constantly. ${He} spends the week doing ${his} best to satisfy ${domName}'s constant demands. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> and won't leave it alone.`);
+				}
+			} else if (slave.dick > 6 && slave.balls > 0) {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves cocks, even big soft ones, ${subName} finds ${himself} being sucked, groped, and cruelly taunted for ${his} inability to get hard. ${He} spends the week trying to avoid ${domName}'s abuse of ${his} poor oversized penis. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it's only good for taunting and torture.`);
+				} else if (slave.devotion <= 50) {
+					r.push(`Since ${domName} loves cocks, even big soft ones, ${subName} finds ${himself} being sucked, groped, and toyed with. ${He} spends the week complying with ${domName}'s amusements. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it's only good as a body pillow.`);
+				} else {
+					r.push(`Since ${domName} loves cocks, even big soft ones, ${subName} finds ${himself} being sucked, groped, and played with until ${he} comes. ${He} spends the week enjoying with ${domName}'s little games. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it's only good as a body pillow that occasionally discharges blobs of semen.`);
+				}
+			} else {
+				if (slave.devotion < -20) {
+					r.push(`Since ${domName} loves cocks, even soft ones, ${subName} finds ${himself} being sucked, groped, and cruelly taunted for ${his} impotence. ${He} spends the week trying to avoid ${domName}'s abuse of ${his} poor useless penis. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it's only good for taunting and torture.`);
+				} else if ((slave.devotion <= 50)) {
+					r.push(`Since ${domName} loves cocks, even soft ones, ${subName} finds ${himself} being sucked, groped, and toyed with. ${He} spends the week complying with ${domName}'s amusements. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it's only good as a soft toy.`);
+				} else {
+					r.push(`Since ${domName} loves cocks, even soft ones, ${subName} finds ${himself} being sucked, groped, and played with until ${he} comes. ${He} spends the week enjoying with ${domName}'s little games. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it's only good as a soft, dripping toy.`);
+				}
+			}
+			fuckCount = jsRandom(9, 12);
+			r.push(`${SimpleSexAct.Slaves(domSlave, slave, fuckCount)}`);
+		} else if (isAmputee(slave)) {
+			r.push(`${domName} doesn't have any special desires, so ${he2} simply uses the helpless ${subName} for comfort and convenience. ${subName} finds ${his} helpless ${subRace} torso being used as a bath toy, a bedwarmer, and for sexual convenience. <span class="hotpink">${domName} enjoys the ease and companionship.</span>`);
+			fuckCount = jsRandom(9, 12);
+			r.push(`${SimpleSexAct.Slaves(slave, domSlave, fuckCount)}`);
+		} else {
+			r.push(`${domName} doesn't have any special desires ${subName} can satisfy, so ${he2} simply uses ${subName} for comfort and convenience. ${subName} washes ${his} superior's ${domRace} body thoroughly and uses ${his} own ${subRace} body to warm ${domName}'s bed at night. <span class="hotpink">${domName} enjoys the ease and companionship.</span>`);
+			fuckCount = jsRandom(9, 12);
+			r.push(`${SimpleSexAct.Slaves(slave, domSlave, fuckCount)}`);
+		}
+		domSlave.devotion += 4;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function sexualSatiation(slave) {
+		/* This is here because SimpleSexAct.Slaves doesn't update analUse, etc. and that is needed to calculate cervixPump and .need clearing */
+		oralUse = slave.counter.oral - oralUse;
+		analUse = slave.counter.anal - analUse;
+		vaginalUse = slave.counter.vaginal - vaginalUse;
+		mammaryUse = slave.counter.mammary - mammaryUse;
+		penetrativeUse = slave.counter.penetrative - penetrativeUse;
+
+		if (jobType === "stud") {
+			slave.need -= 50;
+		} else if (jobType === "cumdump") {
+			slave.need -= ((penetrativeUse + vaginalUse + analUse) * 3);
+			// cumdumps don't get to be doms or sadists
+			switch (slave.fetish) {
+				case "masochist":
+				case "submissive":
+					if (analUse + vaginalUse > 5) {
+						if (slave.fetishKnown) {
+							r.push(`Being frequently pinned and fucked really satisfies ${him}.`);
+						} else {
+							r.push(`${He} seems to enjoy getting pushed down and fucked; ${he}'s got a <span class="lightcoral"> ${slave.fetish === "masochist" ? "masochistic" : "submissive"} streak</span> in ${him}.`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+					}
+					break;
+				case "cumslut":
+					if (oralUse > 5) {
+						if (slave.fetishKnown) {
+							r.push(`Frequently getting to suck cum out of slaves really satisfies ${him}.`);
+						} else {
+							r.push(`${He} seems to enjoy putting ${his} mouth to use; ${he}'s got a <span class="lightcoral">taste for cum.</span>`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+					}
+					break;
+				case "buttslut":
+					if (analUse > 5) {
+						if (slave.fetishKnown) {
+							r.push(`Frequently having ${his} butthole fucked really satisfies ${subName}.`);
+						} else {
+							r.push(`${He} seems to rather enjoy getting assfucked; <span class="lightcoral">anal gets ${him} worked up.</span>`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+					}
+					break;
+				case "pregnancy":
+					if (canGetPregnant(slave)) {
+						if (slave.mpreg === 0 && vaginalUse > 7) {
+							if (slave.fetishKnown) {
+								r.push(`Having ${his} fertile pussy see so much use really satisfies ${subName}.`);
+							} else {
+								r.push(`Frequent unprotected sex in ${his} fertile hole exposes ${him} for the <span class="lightcoral">pregnancy fetishest ${he} is.</span>`);
+								slave.fetishKnown = 1;
+							}
+							slave.need = 0;
+						} else if (slave.mpreg === 1 && analUse > 7) {
+							if (slave.fetishKnown) {
+								r.push(`Having ${his} fertile ass see so much use really satisfies ${subName}.`);
+							} else {
+								r.push(`Frequent unprotected sex in ${his} fertile hole exposes ${him} for the <span class="lightcoral">pregnancy fetishest ${he} is.</span>`);
+								slave.fetishKnown = 1;
+							}
+							slave.need = 0;
+						}
+					}
+					break;
+				case "humiliation":
+					if (slave.fetishKnown) {
+						r.push(`Having all the other slaves see ${him} in such a humiliating role really satisfies ${subName}.`);
+					} else {
+						r.push(`${He} seems to enjoy ${his} humiliating role; ${he} <span class="lightcoral"> gets off to being degraded.</span>`);
+						slave.fetishKnown = 1;
+					}
+					slave.need = 0;
+					break;
+				case "boobs":
+					if (mammaryUse > 5) {
+						if (slave.fetishKnown) {
+							r.push(`Having so much attention lavished on ${his} tits really satisfies ${subName}.`);
+						} else {
+							r.push(`${He} seems to enjoy all the attention ${his} breasts are getting; ${he}'s a <span class="lightcoral">breast fetishest.</span>`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+						slave.induceLactation += 2;
+						r.push(`${induceLactation(slave)}`);
+					}
+					break;
+			}
+		} else if (jobType === "sub") {
+			domSlave.need = 0;
+			slave.need -= ((penetrativeUse + vaginalUse + analUse) * 5);
+			switch (slave.fetish) {
+				case "masochist":
+				case "submissive":
+					if (analUse + vaginalUse > 0) {
+						if (slave.fetishKnown) {
+							r.push(`Being someone's submissive toy really satisfies ${subName}.`);
+						} else {
+							r.push(`${He} seems to enjoy being a toy; ${he}'s got a <span class="lightcoral"> ${slave.fetish === "masochist" ? "masochistic" : "submissive"} streak</span> in ${him}.`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+					}
+					break;
+				case "dom":
+				case "sadist":
+					if (penetrativeUse > 0) {
+						if (slave.fetishKnown) {
+							r.push(`Getting to be on top is precious, and it really satisfies ${subName}.`);
+						} else {
+							r.push(`${He} relishes getting to be on top; ${he}'s got a <span class="lightcoral"> ${slave.fetish === "dom" ? "dominant" : "sadistic"} side</span> to ${him}.`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+					}
+					break;
+				case "cumslut":
+					if (oralUse > 0) {
+						if (slave.fetishKnown) {
+							r.push(`Being someone's oral toy really satisfies ${subName}.`);
+						} else {
+							r.push(`${He} seems to thoroughly enjoy being an oral toy; ${he}'s <span class="lightcoral">an honest cumslut.</span>`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+					}
+					break;
+				case "buttslut":
+					if (analUse > 0) {
+						if (slave.fetishKnown) {
+							r.push(`Having ${his} butthole serve as someone's toy really satisfies ${subName}.`);
+						} else {
+							r.push(`${He} seems to thoroughly enjoy ${his} ass being reduced to someone's toy; ${he}'s <span class="lightcoral">an honest buttslut.</span>`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+					}
+					break;
+				case "pregnancy":
+					if (canGetPregnant(slave)) {
+						if (slave.mpreg === 0 && vaginalUse > 0) {
+							if (slave.fetishKnown) {
+								r.push(`Having ${his} pussy serve as someone's toy really satisfies ${subName}.`);
+							} else {
+								r.push(`Having ${his} fertile pussy unused exposes ${him} for the <span class="lightcoral">pregnancy fetishest ${he} is.</span>`);
+								slave.fetishKnown = 1;
+							}
+							slave.need = 0;
+						} else if (slave.mpreg === 1 && analUse > 0) {
+							if (slave.fetishKnown) {
+								r.push(`Having ${his} ass serve as someone's toy really satisfies ${subName}.`);
+							} else {
+								r.push(`Having ${his} fertile asspussy unused exposes ${him} for the <span class="lightcoral">pregnancy fetishest ${he} is.</span>`);
+								slave.fetishKnown = 1;
+							}
+							slave.need = 0;
+						}
+					}
+					break;
+				case "humiliation":
+					if (slave.fetishKnown) {
+						r.push(`Having all the other slaves see ${him} in such a humiliating role really satisfies ${subName}.`);
+					} else {
+						r.push(`${He} seems to enjoy ${his} humiliating role; ${he} <span class="lightcoral"> gets off to being degraded.</span>`);
+						slave.fetishKnown = 1;
+					}
+					slave.need = 0;
+					break;
+				case "boobs":
+					if (mammaryUse > 0) {
+						if (slave.fetishKnown) {
+							r.push(`Having ${his} tits serve as someone's toy really satisfies ${subName}.`);
+						} else {
+							r.push(`${He} seems to thoroughly enjoy ${his} breasts being reduced to someone's toys; ${he}'s <span class="lightcoral">an honest boobslut.</span>`);
+							slave.fetishKnown = 1;
+						}
+						slave.need = 0;
+						slave.induceLactation += 2;
+						r.push(`${induceLactation(slave)}`);
+					}
+					break;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function physicalEffects(slave) {
+		if (jobType === "sub") {
+			if (domSlave.health.condition < 40) {
+				r.push(`<span class="green">${domName}'s health improves</span> with ${subName} to serve ${him2} and help with some of ${his2} harder duties.`);
+				// Add tiredness recovery here
+				improveCondition(domSlave, 10);
+			}
+		}
+
+		if (slave.cervixImplant === 1 || slave.cervixImplant === 3) {
+			cervixPump += 20 * vaginalUse;
+		}
+		if (slave.cervixImplant === 2 || slave.cervixImplant === 3) {
+			cervixPump += 20 * analUse;
+		}
+		if (cervixPump > 0) {
+			r.push(`${He} notices ${his} <span class="lime">belly is a little heavier</span> after all the`);
+			if (slave.cervixImplant === 1) {
+				r.push(`vaginal`);
+			} else if (slave.cervixImplant === 2) {
+				r.push(`anal`);
+			}
+			r.push(`sex ${he} had throughout the week.`);
+			slave.bellyImplant += cervixPump;
+		}
+
+		if (slave.lactation > 0 && mammaryUse > 0) {
+			slave.lactationDuration = 2;
+			if (slave.boobsMilk > 0) {
+				slave.boobs -= slave.boobsMilk;
+				slave.boobsMilk = 0;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function mentalEffects(slave) {
+		if (jobType === "sub") {
+			if (slave.devotion <= 20) {
+				if (slave.trust >= -20) {
+					r.push(`${subName} <span class="gold">is further habituated to subservience</span> by ${domName}.`);
+					slave.trust -= 5;
+					if (slave.sexualQuirk === "strugglefuck queen") {
+						r.push(`Secretly, though, ${subName} gets off on being raped, <span class="hotpink">and wants more.</span>`);
+						slave.devotion += 1;
+					}
+				}
+			}
+
+			if (slave.behavioralFlaw === "hates men") {
+				if (domSlave.dick > 0 && slave.devotion > 20) {
+					r.push(`Spending so much time in close proximity to a slave with a dick <span class="green">reconciles ${him} to getting fucked by them.</span>`);
+					slave.behavioralFlaw = "none";
+				}
+			} else if (slave.behavioralFlaw === "hates women") {
+				if (domSlave.vagina !== -1 && slave.devotion > 20) {
+					r.push(`Spending so much time in close proximity to a slave with a pussy <span class="green">reconciles ${him} to sex with girls.</span>`);
+					slave.behavioralFlaw = "none";
+				}
+			}
+
+			if (slave.relationship === 0) {
+				if (slave.rivalryTarget !== domSlave.ID && slave.devotion >= 10 && domSlave.relationship === 0) {
+					if (jsRandom(1, 100) > 50) {
+						r.push(`${subName} and ${domName} enjoy spending time together and <span class="lightgreen">strike up a friendship.</span>`);
+						domSlave.relationship = 1;
+						domSlave.relationshipTarget = slave.ID;
+						slave.relationship = 1;
+						slave.relationshipTarget = domSlave.ID;
+					} else {
+						r.push(`${subName} and ${domName} find they enjoy their sexual relationship and <span class="lightgreen">become friends with benefits.</span>`);
+						domSlave.relationship = 3;
+						domSlave.relationshipTarget = slave.ID;
+						slave.relationship = 3;
+						slave.relationshipTarget = domSlave.ID;
+					}
+				}
+			} else if (slave.relationship > 0) {
+				if (slave.relationshipTarget === domSlave.ID && slave.devotion >= -20) {
+					r.push(`${subName} likes getting fucked by ${domName} and <span class="hotpink">appreciates</span> having it as ${his} job.`);
+					slave.devotion += 1;
+				}
+				if (slave.relationship < 3) {
+					if (slave.relationshipTarget === domSlave.ID) {
+						if (slave.devotion >= 10) {
+							r.push(`${subName} and ${domName} find that they enjoy having sex just as much as they like being friends, and become <span class="lightgreen">friends with benefits.</span>`);
+							domSlave.relationship = 3;
+							slave.relationship = 3;
+						} else if (slave.devotion <= 20) {
+							r.push(`${subName} and ${domName}'s relationship is <span class="lightsalmon">damaged</span> by ${domName} having the right to use ${subName}.`);
+							domSlave.relationship--;
+							slave.relationship--;
+						}
+					}
+				} else if (slave.relationship < 4) {
+					if (slave.relationshipTarget === domSlave.ID && slave.devotion >= 10) {
+						r.push(`${subName} and ${domName} don't have to be encouraged to have sex, but with extra time for it, they become <span class="lightgreen">lovers.</span>`);
+						domSlave.relationship++;
+						slave.relationship++;
+					}
+				}
+			}
+
+			if (slave.rivalry === 0) {
+				if (slave.relationshipTarget !== domSlave.ID && slave.devotion <= 50 && domSlave.rivalry === 0 && jsRandom(1, 100) > 50) {
+					r.push(`${subName} resents ${domName} for using ${him} and the two <span class="lightsalmon">start to dislike each other.</span>`);
+					domSlave.rivalry = 1;
+					domSlave.rivalryTarget = slave.ID;
+					slave.rivalry = 1;
+					slave.rivalryTarget = domSlave.ID;
+				}
+			} else {
+				if (slave.rivalryTarget === domSlave.ID && slave.devotion <= 50) {
+					r.push(`${subName} resents subordinating ${him}self to ${domName} and <span class="mediumorchid">dislikes</span> having it as ${his} job.`);
+					slave.devotion -= 2;
+				}
+				if (slave.rivalry < 3 && slave.rivalryTarget === domSlave.ID) {
+					if (slave.devotion <= 50) {
+						r.push(`${subName} hates being used by ${his} rival ${domName} so much that their <span class="lightsalmon">feud worsens.</span>`);
+						domSlave.rivalry++;
+						slave.rivalry++;
+					} else if (slave.devotion > 50) {
+						r.push(`${subName} serves ${domName} so devotedly that they <span class="lightgreen">work out</span> some of their differences through sex.`);
+						domSlave.rivalry--;
+						slave.rivalry--;
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * */
+	function slaveSkills(slave) {
+		// WIP
+	}
+})();
diff --git a/src/uncategorized/fullReport.tw b/src/uncategorized/fullReport.tw
index d70e4eafe05..f409b5fa69d 100644
--- a/src/uncategorized/fullReport.tw
+++ b/src/uncategorized/fullReport.tw
@@ -27,7 +27,7 @@
 <<case "please you">>
 	<<= App.SlaveAssignment.pleaseYou($slaves[$i])>>
 <<case "be a subordinate slave">>
-	<<include "SA serve your other slaves">>
+	<<= App.SlaveAssignment.serveYourOtherSlaves($slaves[$i])>>
 <<case "be a servant">>
 	<<= App.SlaveAssignment.servant($slaves[$i])>>
 <<case "stay confined">>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index 2b866e2daa5..af1d0b5dd29 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -2821,7 +2821,7 @@ $He's got a
 	<</if>>
 
 	<<if $activeSlave.fuckdoll == 0>>
-		<<if $activeSlave.mpreg == 1 && canAchieveErection($activeSlave) && $activeSlave.belly >= 10000 && $activeSlave.prostate > 0>>
+		<<if $activeSlave.mpreg == 1 && canAchieveErection($activeSlave) && $activeSlave.bellyPreg >= 10000 && $activeSlave.prostate > 0>>
 			$His huge pregnancy puts pressure on $his prostate at all times, leaving $him fully erect and trailing cum.
 		<<elseif ($activeSlave.assignment == "work in the dairy") && ($dairyStimulatorsSetting > 1) && canAchieveErection($activeSlave)>>
 			<<if ($activeSlave.dick > 8)>>
-- 
GitLab