From a04e8e5e1680ee806dc0e1b50dba845f0257e2ae Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Thu, 23 Jul 2020 22:29:12 -0400
Subject: [PATCH] Apply canStand/canMove

---
 src/npc/descriptions/boobs/boobs.js | 48 +++++++++++++-
 src/npc/descriptions/crotch/dick.js | 99 +++++++++++++++++++++++++++++
 2 files changed, 145 insertions(+), 2 deletions(-)

diff --git a/src/npc/descriptions/boobs/boobs.js b/src/npc/descriptions/boobs/boobs.js
index 52cadbad17c..9c4bee2b3d1 100644
--- a/src/npc/descriptions/boobs/boobs.js
+++ b/src/npc/descriptions/boobs/boobs.js
@@ -1324,12 +1324,22 @@ App.Desc.boobs = function() {
 			if (!hasAnyLegs(slave)) {
 				return `${he} might not be able to walk, if ${he} still had legs.`;
 			} else if (slave.muscles >= 5) {
-				return `${his} ${musclesTone(slave)} back muscles get a workout just from supporting them. If they grow any larger, ${he} may not be able to walk.`;
+				return `${his} ${musclesTone(slave)} back muscles get a workout just from supporting them. If they grow any larger, ${he} may not be able to stand, let alone walk.`;
 			} else {
 				return `${he} can barely stand. If they grow any larger, ${he} may not be able to walk.`;
 			}
 		}
 
+		function movingAbility(slave) {
+			if (!hasAnyLegs(slave)) {
+				return `${he} might not be able to move at all, if ${he} still had legs.`;
+			} else if (slave.muscles >= 5) {
+				return `${his} ${musclesTone(slave)} muscles get a workout just from living with them. If they grow any larger, ${he} may not be able to move at all.`;
+			} else {
+				return `${he} can barely move ${himself}. If they grow any larger, ${he} may become completely immobilized.`;
+			}
+		}
+
 		let r = `${His} `;
 		if (slave.boobs < 300) {
 			r += `${App.Desc.boobBits.adjective(slave.boobs)} breasts are practically non-existent.`;
@@ -1362,6 +1372,14 @@ App.Desc.boobs = function() {
 				r += 'They';
 			}
 			r += ` are so large that ${walkingAbility(slave)}`;
+		} else if (slave.boobs < 25000 + (slave.muscles * 20) && slave.physicalAge <= 3) {
+			r += `${App.Desc.boobBits.noun(slave.boobs, false)} have ${slave.boobsImplant / slave.boobs >= .50 ? 'been altered' : 'grown'} past any pretense of proportion. `;
+			if (V.showBoobCCs) {
+				r += `At ${num(slave.boobs)} CCs each, they`;
+			} else {
+				r += 'They';
+			}
+			r += ` are so large that ${movingAbility(slave)}`;
 		} else if (slave.boobs < 25000 + (slave.muscles * 100) && slave.physicalAge < 18 && slave.physicalAge >= 13) {
 			r += `${App.Desc.boobBits.noun(slave.boobs, false)} have ${slave.boobsImplant / slave.boobs >= .50 ? 'been altered' : 'grown'} past any pretense of proportion. `;
 			if (V.showBoobCCs) {
@@ -1465,6 +1483,28 @@ App.Desc.boobsExtra = function(slave, {market, eventDescription} = {}) {
 		return r;
 	}
 
+	/**
+	 * @param {slaveTestCallback} dairyTest
+	 * @returns {string}
+	 */
+	function movingRestrictions(dairyTest) {
+		let r = '';
+		if (slave.muscles > 95) {
+			r += `However, ${he} is so powerfully built that ${he} can crawl with them using ${his} intense musculature.`;
+		} else if (slave.muscles > 50) {
+			r += `However, ${he} is so buff ${he} can manage to crawl with them, using ${his} strong muscles to carry their weight.`;
+		} else if (slave.muscles > 30) {
+			r += `${He} can barely manage to lift them off the ground, but ${his} toned body allows ${him} to retain some semblance of mobility.`;
+		} else if (slave.muscles > 5) {
+			r += `${He} requires assistance to lift them, and has little choice but to drag them along the ground should ${he} want to move someplace.`;
+		} else if ((slave.assignment === App.Data.Facilities.dairy.jobs.cow.assignment) && (V.dairyRestraintsSetting > 1) && (dairyTest(slave))) {
+			r += `The straps that secure ${him} to the milking machine have become less necessary since ${his} breasts grew to the point where they pin ${him} to it.`;
+		} else {
+			r += `${He} requires assistance to lift them and can barely manage to drag them along the ground.`;
+		}
+		return r;
+	}
+
 	/**
 	 * @param {number} sizeLimit
 	 * @param {number} bodySize
@@ -1479,7 +1519,7 @@ App.Desc.boobsExtra = function(slave, {market, eventDescription} = {}) {
 				res.push(`The difficulties of having gigantic breasts are much reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`);
 			} else {
 				if (canWalk(slave)) {
-					res.push(`${His} breasts are so heavy that it is difficult for ${him} to move.`);
+					res.push(`${His} breasts are so heavy that it is difficult for ${him} to walk.`);
 					res.push(walkingRestrictions(dairyTest));
 				} else if (slave.boobs >= dwarfSize) {
 					res.push(`They each dwarf ${him}, making ${him} mostly boob.`);
@@ -1488,6 +1528,10 @@ App.Desc.boobsExtra = function(slave, {market, eventDescription} = {}) {
 				} else {
 					res.push(`Together they are nearly the same size as ${his} torso, making ${him} about half boob.`);
 				}
+				if (canMove(eventSlave) && !canWalk(eventSlave)) {
+					res.push(`${His} breasts are so heavy that it is difficult for ${him} to move at all.`);
+					res.push(movingRestrictions(dairyTest));
+				}
 				if (slave.boobs >= 25000) {
 					if ((slave.assignment !== App.Data.Facilities.dairy.jobs.cow.assignment) || (V.dairyRestraintsSetting < 2)) {
 						res.push(penthouseAccessibility());
diff --git a/src/npc/descriptions/crotch/dick.js b/src/npc/descriptions/crotch/dick.js
index 496b1af1bfc..0fa49789ea6 100644
--- a/src/npc/descriptions/crotch/dick.js
+++ b/src/npc/descriptions/crotch/dick.js
@@ -1048,6 +1048,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`${His} testicles each dwarf ${him}, making ${him} almost entirely testicle.`);
 						} else {
@@ -1084,6 +1095,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`${His} testicles are each nearly the same size as ${him}, making ${him} mostly testicle.`);
 						} else {
@@ -1120,6 +1142,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`Together, ${his} testicles are nearly the same size as ${him}, making ${him} about half testicle.`);
 						} else {
@@ -1431,6 +1464,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`${His} testicles each dwarf ${him}, making ${him} almost entirely testicle.`);
 						} else {
@@ -1467,6 +1511,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`${His} testicles are each nearly the same size as ${him}, making ${him} about mostly testicle.`);
 						} else {
@@ -1503,6 +1558,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`Together, ${his} testicles are nearly the same size as ${him}, making ${him} about half testicle.`);
 						} else {
@@ -1861,6 +1927,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`${His} testicles each dwarf ${him}, making ${him} almost entirely testicle.`);
 						} else {
@@ -1897,6 +1974,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`${His} testicles are each nearly the same size as ${him}, making ${him} about mostly testicle.`);
 						} else {
@@ -1933,6 +2021,17 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) {
 							} else {
 								r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated so ${his} enormous balls don't weigh ${him} down as much.`);
 							}
+						} else if (canMove(slave)) {
+							r.push(`${His} balls are so massive that it is difficult for ${him} to move at all.`);
+							if (slave.muscles > 95) {
+								r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, dragging ${his} testicles along behind ${him}.`);
+							} else if (slave.muscles > 30) {
+								r.push(`${He} can barely manage to lift ${his} testicles, and finds it exhausting to drag them everywhere.`);
+							} else if (slave.muscles > 5) {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and tries avoid moving them whenever ${he} can.`);
+							} else {
+								r.push(`${He} requires assistance to get ${his} testicles off the ground, and can barely manage to drag them along behind ${him}.`);
+							}
 						} else if (slave.balls >= 100) {
 							r.push(`Together, ${his} testicles are nearly the same size as ${him}, making ${him} about half testicle.`);
 						} else {
-- 
GitLab