diff --git a/src/npc/generate/generateMarketSlave.js b/src/npc/generate/generateMarketSlave.js
index f97424d4254c388c4910804d557fc56249588c10..27c64f2b01b7c690a6cac322614aade78f78e3a8 100644
--- a/src/npc/generate/generateMarketSlave.js
+++ b/src/npc/generate/generateMarketSlave.js
@@ -1121,9 +1121,33 @@ globalThis.generateMarketSlave = function(market = "kidnappers", numArcology = 1
 				eyeSurgery(slave, "both", "blur");
 			}
 			slave.hears = jsEither([-2, -1, -1, -1, -1, 0, 0, 0]);
-			if (V.seeExtreme === 1 && jsRandom(0, 2) === 2) {
-				// TODO: maybe only partly amputee?
-				removeLimbs(slave, "all");
+			if (V.seeExtreme === 1) {
+				/** @type {FC.LimbArgument[]} */
+				const limbs = ["left arm", "left leg", "right arm", "right leg"];
+				switch (jsRandom(0, 16)) {
+					case 1:
+					case 2:
+						// 1/8 chance quad amputee
+						removeLimbs(slave, "all");
+						break;
+					case 3:
+						// 1/16 chance no arms
+						removeLimbs(slave, "left arm");
+						removeLimbs(slave, "right arm");
+						break;
+					case 4:
+						// 1/16 chance no legs
+						removeLimbs(slave, "left leg");
+						removeLimbs(slave, "right leg");
+						break;
+					case 5:
+					case 6:
+						// 1/8 chance missing one random limb
+						removeLimbs(slave, limbs.random());
+						break;
+					default:
+						// 5/8 chance all limbs intact
+				}
 			}
 			if (hasAnyLegs(slave)) {
 				slave.heels = jsEither([0, 0, 0, 0, 0, 1, 1]);