diff --git a/saveTools/fc_edit_save.py b/saveTools/fc_edit_save.py
index 141009769029209d0eab7ab37bd9ecbc0178104a..010d3cc07dd98f3bc855118b59ad1b24f14a86c7 100755
--- a/saveTools/fc_edit_save.py
+++ b/saveTools/fc_edit_save.py
@@ -77,7 +77,8 @@ IGNORE_IN_SLAVES = [
     "counter.birthClient", "counter.birthDegenerate", "counter.birthElite",
     "counter.birthFutaSis", "counter.birthLab", "counter.birthMaster",
     "counter.birthOther", "counter.birthSelf", "counter.storedCum",
-    "criticalDamage", "degeneracy", "fertDrugs", "forcedFertDrugs", "newVag",
+    "criticalDamage", "badRumors.penetrative", "badRumors.birth", "badRumors.weakness",
+    "fertDrugs", "forcedFertDrugs", "newVag",
     "origEye", "physicalImpairment", "pregMood", "refreshment",
     "refreshmentType", "relationships", "reservedChildren",
     "reservedChildrenNursery", "rumor", "sexualEnergy", "skill.cumTap",
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index 14f201392c599c9f437ebd243c8a45d0f9ef6f7d..7e2da15ca209193873565698d2e7ae269548c8d1 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -2,5 +2,5 @@ App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "4.0.0-alpha.31",
 	commitHash: null,
-	release: 1250, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
+	release: 1251, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
 };
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index ac1d4f3f4b57a554334ba376354015c635c293da..05c8d4834398f334f4a51bda631ff2212bc5bee3 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -2581,7 +2581,9 @@ App.Update.oldVersions = function(node) {
 		newPC.pregSource = V.PC.pregSource;
 		newPC.pregMood = V.PC.pregMood;
 		newPC.labor = V.PC.labor;
-		newPC.degeneracy = V.PC.degeneracy;
+		newPC.badRumors.birth = V.PC.badRumors.birth;
+		newPC.badRumors.penetrative = V.PC.badRumors.penetrative;
+		newPC.badRumors.weakness = V.PC.badRumors.weakness;
 		newPC.pubicHStyle = V.PC.pubicHStyle;
 		newPC.underArmHStyle = V.PC.underArmHStyle;
 		if (V.PC.dick === 1) {
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index e4850752a9b8a2c7c90e9dbe5e04c193aa6b5b0f..e0966cede9cb6995de7a1d06dc6f676c7ddb1b3f 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -1661,7 +1661,16 @@ globalThis.PCDatatypeCleanup = (function PCDatatypeCleanup() {
 	function PCPreferencesDatatypeCleanup(PC) {
 		PC.energy = Math.clamp(+PC.energy, 0, 100) || 80;
 		PC.need = Math.max(+PC.need, 0) || 0;
-		PC.degeneracy = Math.max(+PC.degeneracy, 0) || 0;
+		if (!PC.hasOwnProperty("badRumors")) {
+			PC.badRumors = {
+				penetrative: PC.degeneracy ?? 0,
+				birth: 0,
+				weakness: 0,
+			}
+			if (PC.hasOwnProperty("degeneracy")) {
+				delete PC.degeneracy;
+			}
+		}
 	}
 
 	/**
@@ -2167,7 +2176,7 @@ App.Entity.Utils.GenePoolRecordCleanup = (function() {
 			"lastWeeksCashIncome", "lastWeeksRepIncome", "lastWeeksRepExpenses",
 			"lifetimeCashIncome", "lifetimeCashExpenses", "lifetimeRepIncome", "lifetimeRepExpenses",
 			// player stuff
-			"degeneracy", "refreshment", "refreshmentType",
+			"degeneracy", "badRumors", "refreshment", "refreshmentType",
 			"relationships",
 			"criticalDamage",
 			"fertKnown", "forcedFertDrugs"
diff --git a/src/endWeek/economics/persBusiness.js b/src/endWeek/economics/persBusiness.js
index 615b6ce3c341947081d07a3d57e663b914ef9a76..6d6a08d9d88e84da045e81699de396689aa0a3ed 100644
--- a/src/endWeek/economics/persBusiness.js
+++ b/src/endWeek/economics/persBusiness.js
@@ -211,9 +211,9 @@ App.EndWeek.personalBusiness = function() {
 			r.push(`This week you gave up business opportunities worth ${cashFormat(policies.cost())} to help deserving citizens, <span class="green">burnishing your reputation.</span>`);
 			repX(1000, "personalBusiness");
 			cashX(forceNeg(policies.cost()), "policies");
-			if (V.PC.degeneracy > 1) {
+			if (getRumors() > 1) {
 				r.push(`This also helps <span class="green">offset any rumors</span> about your private actions.`);
-				V.PC.degeneracy -= 1;
+				softenRumors.all();
 			}
 		} else {
 			r.push(`Money was too tight this week to risk giving up any business opportunities.`);
@@ -222,9 +222,9 @@ App.EndWeek.personalBusiness = function() {
 	if (V.policies.goodImageCampaign === 1) {
 		if (V.cash > 5000) {
 			r.push(`This week you paid ${cashFormat(policies.cost())} to have positive rumors spread about you, <span class="green">making you look`);
-			if (V.PC.degeneracy > 1) {
+			if (getRumors() > 1) {
 				r.push(`good and weakening existing undesirable rumors.</span>`);
-				V.PC.degeneracy -= 2;
+				softenRumors.all(2);
 			} else {
 				r.push(`good.</span>`);
 			}
diff --git a/src/endWeek/economics/reputation.js b/src/endWeek/economics/reputation.js
index d300894a38f42072bb1fb63d4f9478c79d6e4ce2..7aa9041acbf85e44d19cebc79ecc9815485b31ba 100644
--- a/src/endWeek/economics/reputation.js
+++ b/src/endWeek/economics/reputation.js
@@ -129,20 +129,16 @@ App.EndWeek.reputation = function() {
 		if (V.arcologies[0].FSChattelReligionistLaw === 1) {
 			if (repLoss > 100) {
 				repLoss -= 100;
-				V.PC.degeneracy = 0;
 			} else {
 				repLoss = 0;
-				V.PC.degeneracy = 0;
 			}
 			r.push(`Since you are the Prophet, your reputation degrades less.`);
 		}
 		if (V.arcologies[0].FSRestartDecoration === 100) {
 			if (repLoss > 100) {
 				repLoss -= 100;
-				V.PC.degeneracy = 0;
 			} else {
 				repLoss = 100;
-				V.PC.degeneracy = 0;
 			}
 			r.push(`Since you are an established member of the Societal Elite, your public reputation degrades less.`);
 		}
@@ -166,9 +162,6 @@ App.EndWeek.reputation = function() {
 			V.enduringRep += enduringRepToGain;
 		}
 	} else {
-		if (V.arcologies[0].FSChattelReligionistLaw === 1 || V.arcologies[0].FSRestartDecoration === 100) {
-			V.PC.degeneracy = 0;
-		}
 		repLoss = 0;
 		if (enduringRep > 8000) {
 			r.push(`You have been a figure of renown for so long that your reputation does not decay past its present level.`);
@@ -1097,32 +1090,32 @@ App.EndWeek.reputation = function() {
 			repX(forceNeg(V.PC.addict), "PCactions");
 		}
 	}
-
-	if (V.PC.degeneracy > 0) {
-		if (V.PC.degeneracy > 100) {
+	const badRumors = getRumors();
+	if (badRumors > 0) {
+		if (badRumors > 100) {
 			r.push(`There are <span class="red">severe and devastating rumors</span> about you spreading across the arcology.`);
-			repX(forceNeg(100 * V.PC.degeneracy), "PCactions");
+			repX(forceNeg(100 * badRumors), "PCactions");
 			V.enduringRep = 0;
-		} else if (V.PC.degeneracy > 75) {
+		} else if (badRumors > 75) {
 			r.push(`There are <span class="red">severe rumors</span> about you spreading across the arcology.`);
-			repX(forceNeg(20 * V.PC.degeneracy), "PCactions");
-		} else if (V.PC.degeneracy > 50) {
+			repX(forceNeg(20 * badRumors), "PCactions");
+		} else if (badRumors > 50) {
 			r.push(`There are <span class="red">bad rumors</span> about you spreading across the arcology.`);
-			repX(forceNeg(10 * V.PC.degeneracy), "PCactions");
-		} else if (V.PC.degeneracy > 25) {
+			repX(forceNeg(10 * badRumors), "PCactions");
+		} else if (badRumors > 25) {
 			r.push(`There are <span class="red">rumors</span> about you spreading across the arcology.`);
-			repX(forceNeg(5 * V.PC.degeneracy), "PCactions");
-		} else if (V.PC.degeneracy > 10) {
+			repX(forceNeg(5 * badRumors), "PCactions");
+		} else if (badRumors > 10) {
 			r.push(`There are <span class="red">minor rumors</span> about you spreading across the arcology.`);
-			repX(forceNeg(2 * V.PC.degeneracy), "PCactions");
+			repX(forceNeg(2 * badRumors), "PCactions");
 		} else {
 			r.push(`The occasional rumor about you can be heard throughout the arcology.`);
-			repX(forceNeg(1 * V.PC.degeneracy), "PCactions");
+			repX(forceNeg(1 * badRumors), "PCactions");
 		}
 	}
 	if (V.rapedThisWeek) {
 		let rapeFameDec = 25 + V.rapedThisWeek * 75;
-		r.push(`There's ${V.PC.degeneracy ? "also " : ""}a <span class="red">rumor you've been raped${V.PC.counter.raped ? " again" : ""}.</span>`);
+		r.push(`There's ${badRumors ? "also " : ""}a <span class="red">rumor you've been raped${V.PC.counter.raped ? " again" : ""}.</span>`);
 		if (V.rep < 3000) {
 			r.push(`Since you are almost unknown, the rumor goes nearly unnoticed.`);
 			rapeFameDec *= V.rep / 10000;
@@ -1217,11 +1210,11 @@ App.EndWeek.reputation = function() {
 		if (V.rep <= 19900) {
 			repX(100, "policies");
 			r.push(`Reputation subsidized as planned.`);
-			if (V.PC.degeneracy > 1) {
-				V.PC.degeneracy -= 1;
+			if (getRumors() > 1) {
+				softenRumors.all();
 			}
-		} else if (V.PC.degeneracy > 1) {
-			V.PC.degeneracy -= 1;
+		} else if (getRumors() > 1) {
+			softenRumors.all();
 			r.push(`Rumors quelled as planned.`);
 		} else {
 			cashX(1000, "policies");
@@ -1232,9 +1225,8 @@ App.EndWeek.reputation = function() {
 	if (V.failedElite > 1) {
 		V.failedElite -= 1;
 	}
-	if (V.PC.degeneracy > 1) {
-		V.PC.degeneracy -= 1;
-	}
+
+	softenRumors.all();
 
 	if (V.arcologies[0].FSRestartDecoration === 100) {
 		if (V.eugenicsFullControl !== 1) {
diff --git a/src/endWeek/saDevotion.js b/src/endWeek/saDevotion.js
index 4e9ccb7ae6037552de9fc8fd82f6bbc20eb5a345..fe213e8ab323e1146fb705ebc45371be2a86146d 100644
--- a/src/endWeek/saDevotion.js
+++ b/src/endWeek/saDevotion.js
@@ -715,9 +715,7 @@ App.SlaveAssignment.devotion = function saDevotion(slave) {
 						knockMeUp(PC, App.EndWeek.saVars.freeSexualEnergy, 1, slave.ID);
 					}
 				}
-				if (V.policies.sexualOpenness === 0) {
-					PC.degeneracy++;
-				}
+				newRumor.penetrative();
 			}
 			V.PC.deferredNeed -= App.EndWeek.saVars.freeSexualEnergy * 2;
 			if (V.PC.energy < 100) {
@@ -868,7 +866,7 @@ App.SlaveAssignment.devotion = function saDevotion(slave) {
 				}
 			}
 		}
-		if (PC.degeneracy > 2) {
+		if (getRumors("penetrative") > 2) {
 			if ((canPenetrate(slave) || slave.clit >= 3) && V.policies.sexualOpenness === 0) {
 				if (slave.toyHole !== ToyHole.DICK && slave.skill.penetrative > 60) {
 					r.push(`There are rumors about you enjoying taking it from slaves and`);
diff --git a/src/endWeek/saPleaseYou.js b/src/endWeek/saPleaseYou.js
index 4b65f0090862eaa8ad942966645a6ae946ef627b..9316f9306a88f2bf1581cc601120d7d1beafb8f7 100644
--- a/src/endWeek/saPleaseYou.js
+++ b/src/endWeek/saPleaseYou.js
@@ -2808,10 +2808,7 @@ App.SlaveAssignment.pleaseYou = function saPleaseYou(slave) {
 			seX(slave, "penetrative", V.PC, "anal", qualitySex + straponUse);
 			tryKnockMeUp(V.PC, qualitySex, 1, slave);
 		}
-		if (V.policies.sexualOpenness === 0) {
-			r.push(`Rumors spread that you <span class="warning">enjoy taking it from slaves.</span>`);
-			V.PC.degeneracy += 2;
-		}
+		r.push(newRumor.penetrative(slave, 2));
 	}
 
 	/**
@@ -3187,10 +3184,7 @@ App.SlaveAssignment.pleaseYou = function saPleaseYou(slave) {
 			slaveNeed -= ((qualitySex * penetrativePleasure) + (excessSex * penetrativePleasure * 0.5));
 		}
 		seX(slave, "penetrative", V.PC, "oral", penetrativeUse);
-		if (V.policies.sexualOpenness === 0) {
-			r.push(`Rumors spread that you <span class="warning">enjoy taking it from slaves.</span>`);
-			V.PC.degeneracy += 2;
-		}
+		r.push(newRumor.penetrative(slave, 2));
 	}
 
 	/**
diff --git a/src/events/RE/reAWOL.js b/src/events/RE/reAWOL.js
index 8a9fb1f831a95aba7a208c4e3bff1a86430ad06f..a3cd39be9686cf79935fb9dc133a9d18dd3a397e 100644
--- a/src/events/RE/reAWOL.js
+++ b/src/events/RE/reAWOL.js
@@ -75,6 +75,7 @@ App.Events.REAWOL = class REAWOL extends App.Events.BaseEvent {
 
 		function release() {
 			repX(-1000, "event", slave);
+			newRumor.weakness();
 			return `You inform your personal assistant that you aren't planning to take any action. By the next morning, word has spread to the rest of your arcology that crossing you is apparently permissible and your <span class="reputation dec">reputation has suffered</span> as a result.`;
 		}
 
diff --git a/src/events/RE/reMalefactor.js b/src/events/RE/reMalefactor.js
index e858d719bb20640a6a961313e684fd3527d8f7ef..138c0545c6944b10d35867193a8ebff80af01c77 100644
--- a/src/events/RE/reMalefactor.js
+++ b/src/events/RE/reMalefactor.js
@@ -490,6 +490,7 @@ App.Events.REMalefactor = class REMalefactor extends App.Events.BaseEvent {
 			} else {
 				r.push(`<span class="red">feels you let this criminal off too easy.</span>`);
 				repX(forceNeg(100), "event", slave);
+				newRumor.weakness();
 			}
 			r.push(App.UI.newSlaveIntro(slave));
 
@@ -528,6 +529,7 @@ App.Events.REMalefactor = class REMalefactor extends App.Events.BaseEvent {
 			} else {
 				r.push(`<span class="red">feels you let this criminal off too easy.</span>`);
 				repX(forceNeg(100), "event", slave);
+				newRumor.weakness();
 			}
 
 			App.Events.addParagraph(frag, r);
diff --git a/src/events/RESS/escapee.js b/src/events/RESS/escapee.js
index 5a047747641b864216552289e9d91192cf2eab24..343fc2640a99c19ff2abdf318ff2229cd403df6c 100644
--- a/src/events/RESS/escapee.js
+++ b/src/events/RESS/escapee.js
@@ -80,7 +80,7 @@ App.Events.RESSEscapee = class RESSEscapee extends App.Events.BaseEvent {
 			t = [];
 
 			t.push(`Considering how easily this attempt was thwarted, you don't see much of a point in wasting your valuable time on punishing ${eventSlave.slaveName} in the hopes that ${he}'ll learn ${his} lesson. You send ${him} back to ${his} assigned duties, warning ${him} that you may not be so lenient in the future. ${eventSlave.slaveName} proclaims ${his} obedience, but, privately, it's clear that ${he} views your decision as <span class="mediumorchid">an act of weakness</span> rather than kindness. In addition, every single one of your other slaves not already obedient to you is <span class="orangered">encouraged in their trust that you won't hurt them</span> by this minuscule punishment of an escape attempt.`);
-
+			t.push(newRumor.weakness());
 			eventSlave.devotion -= 10;
 			eventSlave.trust += 2;
 			V.slaves.forEach(function(s) { if (s.devotion <= 20) { s.trust += 8; } });
diff --git a/src/events/RESS/forbiddenMasturbation.js b/src/events/RESS/forbiddenMasturbation.js
index 646f02f48a0cd5ee1d3860b13f4f6a57ad05b277..e473421f5cc6bf06d97bcc49676408341cc8eda7 100644
--- a/src/events/RESS/forbiddenMasturbation.js
+++ b/src/events/RESS/forbiddenMasturbation.js
@@ -231,6 +231,7 @@ App.Events.RESSForbiddenMasturbation = class RESSForbiddenMasturbation extends A
 				r.push(`gets on ${his} ${knees}`);
 			}
 			r.push(`and sucks you off. ${He} does a decent job, playing with ${himself} all the while. ${He}'s learned that ${he} can get away with infractions if ${he}'s willing to suck dick afterward. ${His} resistance to your will <span class="devotion dec">has increased.</span>`);
+			r.push(newRumor.weakness());
 			eventSlave.devotion -= 5;
 			seX(eventSlave, "oral", V.PC, "penetrative");
 			return r;
diff --git a/src/events/RESS/review/notMyName.js b/src/events/RESS/review/notMyName.js
index 85ba1d3d6181c84e9854e6bca711fc71f21e9b35..743a97f3354bbcf5e113478bcb1b53fb479bc58a 100644
--- a/src/events/RESS/review/notMyName.js
+++ b/src/events/RESS/review/notMyName.js
@@ -100,7 +100,7 @@ App.Events.RESSNotMyName = class RESSNotMyName extends App.Events.BaseEvent {
 		function allow() {
 			r = [];
 			r.push(`You calmly and charitably tell ${him} that that's acceptable; ${he} can be ${eventSlave.birthName} again. ${He} has the wit to be worried, but ${he} soon finds that ${his} fears are unjustified. You offer no condition or "catch" with this bit of generosity; it seems all ${he} really had to do was ask. You usher the stunned ${SlaveTitle(eventSlave)} out of your office and on to ${his} duties before ${he} can even offer a perfunctory "thanks". Over the next week, it's clear that while ${eventSlave.slaveName} — no, ${eventSlave.birthName} — is <span class="devotion dec">not sure what to think of you now,</span> it's clear that ${he} is at least <span class="trust inc">less afraid of you.</span>`);
-
+			r.push(newRumor.weakness());
 			eventSlave.trust += 15;
 			eventSlave.devotion -= 5;
 			eventSlave.slaveName = eventSlave.birthName;
diff --git a/src/events/RESS/review/rebelliousArrogant.js b/src/events/RESS/review/rebelliousArrogant.js
index 1e153fb43749252b94c924217417d23e5729156e..7c6b5eb338a874c85c463ffdcdbe820e0be5f9e2 100644
--- a/src/events/RESS/review/rebelliousArrogant.js
+++ b/src/events/RESS/review/rebelliousArrogant.js
@@ -94,7 +94,10 @@ App.Events.RESSRebelliousArrogant = class RESSRebelliousArrogant extends App.Eve
 		function stay() {
 			eventSlave.trust += 10;
 			eventSlave.devotion -= 10;
-			return `You shrug and walk out of the room and back to your office; you've got more important things to worry about than some drowsy brat. ${eventSlave.slaveName}, for ${his} part, gets out of bed not long after you leave, but is surprised at <span class="devotion dec">how easily ${he} got away with this,</span> and is wondering <span class="trust inc">what else ${he} could get away with.</span>`;
+			let r = [];
+			r.push(`You shrug and walk out of the room and back to your office; you've got more important things to worry about than some drowsy brat. ${eventSlave.slaveName}, for ${his} part, gets out of bed not long after you leave, but is surprised at <span class="devotion dec">how easily ${he} got away with this,</span> and is wondering <span class="trust inc">what else ${he} could get away with.</span>`);
+			r.push(newRumor.weakness());
+			return r;
 		}
 
 		function restroom() {
diff --git a/src/events/RESS/review/vocalDisobedience.js b/src/events/RESS/review/vocalDisobedience.js
index 74949eee28112d13a4c55413569cad2427544f99..ef5af8576b4992dc4eb42ceeb3f2a02cba12c44b 100644
--- a/src/events/RESS/review/vocalDisobedience.js
+++ b/src/events/RESS/review/vocalDisobedience.js
@@ -216,7 +216,10 @@ App.Events.RESSVocalDisobedience = class RESSVocalDisobedience extends App.Event
 
 		function off() {
 			eventSlave.devotion -= 5;
-			return `${He} skips away happily and spends the rest of the day lounging around. ${His} obedience to you <span class="devotion dec">has decreased.</span>`;
+			let r = [];
+			r.push(`${He} skips away happily and spends the rest of the day lounging around. ${His} obedience to you <span class="devotion dec">has decreased.</span>`);
+			r.push(newRumor.weakness());
+			return r;
 		}
 	}
 };
diff --git a/src/events/nonRandom/daughters/pUndergroundRailroad.js b/src/events/nonRandom/daughters/pUndergroundRailroad.js
index 0bf84e747dee23662f8a5c261297e7a07b8e8d83..cb5f60a954deb4887b66fd9c8910ace646cc58ec 100644
--- a/src/events/nonRandom/daughters/pUndergroundRailroad.js
+++ b/src/events/nonRandom/daughters/pUndergroundRailroad.js
@@ -390,6 +390,7 @@ App.Events.PUndergroundRailroad = class PUndergroundRailroad extends App.Events.
 			r.push(`All attempts to use your monitoring systems to find the citizens who contacted ${him} fail; it seems their ability to corrupt your systems is considerable. <span class="devotion dec">Whispers of freedom</span> run like wildfire amongst your slaves.`);
 			V.slaves.filter(desiresFreedom).forEach(s => s.devotion -= 10);
 			traitor.devotion -= 15;
+			newRumor.weakness();
 			App.Events.addParagraph(frag, r);
 			return frag;
 		}
diff --git a/src/events/scheduled/sePlayerBirth.js b/src/events/scheduled/sePlayerBirth.js
index 054de537201166dff4097109644ded22208756d4..d1b11d2bc06b611de0b07b83bd73f3d44b28cc4b 100644
--- a/src/events/scheduled/sePlayerBirth.js
+++ b/src/events/scheduled/sePlayerBirth.js
@@ -965,6 +965,7 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent {
 				if (V.PC.pregSource > 0 && curBabies > 0) {
 					const pb = findFather(V.PC.pregSource);
 					if (pb) {
+						newRumor.birth(10);
 						if (V.arcologies[0].FSRestartDecoration === 100 && V.eugenicsFullControl !== 1) {
 							r.push(`Word spreads fast through your peers that you gave birth to`);
 							if (curBabies > 1) {
@@ -990,17 +991,14 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent {
 							}
 						} else {
 							r.push(`Rumors spread that your child${curBabies > 1 ? `ren were` : `was`} fathered by a slave, <span class="red">harming your lasting reputation.</span>`);
-							V.PC.degeneracy += 20;
 							if (FutureSocieties.isActive('FSSupremacist')) {
 								if (pb.race !== V.arcologies[0].FSSupremacistRace) {
 									r.push(`Furthermore, word is that your child${curBabies > 1 ? `ren were` : `was`} not ${V.arcologies[0].FSSupremacistRace}, <span class="red">further hurting your lasting reputation.</span>`);
-									V.PC.degeneracy += 10;
 								}
 							}
 							if (FutureSocieties.isActive('FSSubjugationist')) {
 								if (pb.race === V.arcologies[0].FSSubjugationistRace) {
 									r.push(`In addition, there is a nasty rumor that you gave birth to ${V.arcologies[0].FSSubjugationistRace} ${(curBabies > 1) ? "children" : "a child"}, <span class="red">devastating your lasting reputation.</span>`);
-									V.PC.degeneracy += 50;
 								}
 							}
 						}
diff --git a/src/js/states/PlayerState.js b/src/js/states/PlayerState.js
index d89db0805899cc74bee328a440cb1e4b90450bb5..703ddfdd5dbd30560fb4727e1678c9b5b57562ce 100644
--- a/src/js/states/PlayerState.js
+++ b/src/js/states/PlayerState.js
@@ -124,15 +124,23 @@ App.Entity.PlayerState = class extends App.Entity.HumanState {
 		 * 0: female; 1: male */
 		this.title = 1;
 		/**
-		 * How strong/are there rumors about you doing unsavory things with your slaves
-		 * * 0 - 10: occasional whispers
+		 * How strong are the rumors about you doing things unbecoming of a respectable arcology owner
+		 * * 0: no rumors
+		 * * 1 - 10: occasional whispers
 		 * * 11	- 25: minor rumors
 		 * * 26	- 50: rumors
 		 * * 51	- 75: bad rumors
 		 * * 70	- 100: severe rumors
 		 * * 101+: life ruining rumors
 		 */
-		this.degeneracy = 0;
+		this.badRumors = {
+			/** Strength of the rumors about you being penetrated by slaves */
+			penetrative: 0,
+			/** Strength of whispers that you have given birth to miscegenated or slave's babies */
+			birth: 0,
+			/** Strength of the rumors that you are too soft on your rebellious slaves. */
+			weakness: 0,
+		}
 		/** your favorite refreshment
 		 * @type {string} */
 		this.refreshment = "cigar";
diff --git a/src/js/utilsPC.js b/src/js/utilsPC.js
index 96c5cea2660a0c4ebe255329b52c7eb706edfa31..c1be65a74922a9ead2a3a920e72449252d246c7c 100644
--- a/src/js/utilsPC.js
+++ b/src/js/utilsPC.js
@@ -1156,6 +1156,191 @@ globalThis.isPlayerFrigid = function() {
 	return false;
 };
 
+/** Returns the value of bad rumors circulating about the player, of a specific type or the overall weighted value.
+ * * 0: no rumors
+ * * 1 - 10: occasional whispers
+ * * 11	- 25: minor rumors
+ * * 26	- 50: rumors
+ * * 51	- 75: bad rumors
+ * * 70	- 100: severe rumors
+ * * 101+: life ruining rumors
+ * @param {"penetrative" | "birth" | "weakness" | "all"} rumorType
+ * @returns {number}
+  */
+ globalThis.getRumors = function(rumorType = "all") {
+	let result = {
+		penetrative: V.PC.badRumors.penetrative,
+		birth: V.PC.badRumors.birth,
+		weakness: V.PC.badRumors.weakness,
+	};
+	if (V.PC.counter.raped > 0) { // rapes are everlasting weakness rumors
+		result.weakness += Math.min(V.PC.counter.raped, 10);
+		if (V.PC.counter.raped > 10) {
+			result.weakness + Math.sqrt(V.PC.counter.raped - 10);
+		}
+		result.weakness = Math.floor(result.weakness);
+	}
+	if (V.policies.sexualOpenness === 1 || V.arcologies[0].FSChattelReligionistLaw === 1 || V.arcologies[0].FSRestartDecoration > 99) {
+		result.penetrative = 0;
+	}
+	if ((rumorType === "weakness" || rumorType === "all") && result.weakness > 0) {
+		result.weakness = 1 + Math.round((result.weakness - 1) * 0.5); // weakness is not as devastating as other bad rumors.
+		if (result.penetrative + result.birth > 20) {
+			result.weakness = Math.round(result.weakness * 0.66); // other rumors downplay the impact of weakness ones. 
+		}
+	}
+	return rumorType === "all" ? result.penetrative + result.birth + result.weakness : result[rumorType];
+}
+
+ /** Records possible harmful rumors about the player. */
+ globalThis.newRumor = (function() {
+
+	return{
+		penetrative: penetrated,
+		birth: miscegenated,
+		weakness: weak,
+		// other: other,
+	}
+
+	/** Records rumors about the player being penetrated by a slave, if applicable, and returns a warning text in that case.
+	 * @param {FC.SlaveState} slave - penetrator
+	 * @param {number} strength - multiplier, defaults to 1
+	 * @returns {string}
+	 */
+	function penetrated(slave = undefined, strength = 1) {
+		if (V.policies.sexualOpenness === 1 || V.arcologies[0].FSChattelReligionistLaw === 1 || V.arcologies[0].FSRestartDecoration > 99 || (V.arcologies[0].FSRepopulationFocus >= 60 && (canGetPregnant(V.PC) || V.PC.preg.isBetween(0, 11)))) {
+			return "";
+		}
+		let acceptance = 0;
+		if (!slave || !asSlave(slave)) {
+			acceptance = penetrativeSocialUse();
+		} else {
+			acceptance = penetrativeSocialUse(slave);
+		}
+		if (acceptance > 70) {
+			return "";
+		} else if (acceptance > 40) {
+			let luck = 70 - jsRandom(40, acceptance); // from 1 to 30
+			strength = Math.round(strength / 30 * luck); // the higher the acceptance, the highest chance of stength being 0
+			if (strength === 0) {
+				return "";
+			}
+		}
+		V.PC.badRumors.penetrative = Math.round(V.PC.badRumors.penetrative + strength);
+		return `Rumors spread that you <span class="warning">enjoy taking it from slaves.</span>`;
+	}
+
+	/** Records the displeasure of the society over the fact that the player gave birth to babies of slaves or miscegenated. Call only once per birth. It returns nothing.
+	 * @param {number} strength - multiplier, defaults to 1
+	 */
+	function miscegenated(strength = 10) {
+		if (V.arcologies[0].FSChattelReligionistLaw === 1) { // society accepts the acts of the prophet 
+			return;
+		}
+		let weight = FutureSocieties.isActive("FSRepopulationFocus") && V.arcologies[0].FSRepopulationFocus > 99 ? .1 : 2;
+		let impregnator = findFather(V.PC.pregSource);
+		if (FutureSocieties.isActive('FSSupremacist') && impregnator.race !== V.arcologies[0].FSSupremacistRace) {
+			weight += 1;
+		}
+		if (FutureSocieties.isActive('FSSubjugationist') && impregnator.race === V.arcologies[0].FSSubjugationistRace) {
+			weight += 5;
+		}
+		V.PC.badRumors.birth = Math.round(V.PC.badRumors.birth + weight * strength);
+	}
+
+	/** Records rumors about the player having a weak character to impose himself on his slaves.
+	 * @param {number} strength - multiplier, defaults to 1
+	 * @returns {string}
+	 */
+	function weak(strength = 1) {
+		let luck = Math.min(V.rep > 7000 ? 1 : (jsRandom(1, V.rep) / 4000), 1) - (FutureSocieties.isActive("FSPaternalist") && jsRandom(0, V.arcologies[0].FSPaternalist) > 50 ? 1 : 0) + (FutureSocieties.isActive("FSDegradationist") && jsRandom(0, V.arcologies[0].FSDegradationist) > 50 ? 1 : 0);
+		luck = Math.max(luck, 0);
+		strength = Math.round(luck * strength);
+		V.PC.badRumors.weakness += strength;
+		return strength > 0 ? `Rumors spread that <span class="warning">you are not able to impose yourself on your slaves.</span>` : "";
+	}
+})();
+
+ /** Softens harmful rumors about the player. */
+ globalThis.softenRumors = (function() {
+
+	return{
+		penetrative: penetrated,
+		birth: miscegenated,
+		weakness: weak,
+		// other: other,
+		all: all,
+	}
+
+	/** Softens rumors about the player being penetrated by slaves.
+	 * @param {number} strength - multiplier, defaults to 1
+	 */
+	function penetrated(strength = 1) {
+		if (V.policies.sexualOpenness === 1 || V.arcologies[0].FSChattelReligionistLaw === 1 || V.arcologies[0].FSRestartDecoration > 99) {
+			V.PC.badRumors.penetrative = 0;
+			return;
+		}
+		if (V.PC.badRumors.penetrative <= 1) {
+			return;
+		}
+		if (V.arcologies[0].FSRepopulationFocus > 60 && (canGetPregnant(V.PC) || V.PC.preg.isBetween(0, 11))) {
+			if (V.PC.badRumors.penetrative > 5 * strength) {
+				V.PC.badRumors.penetrative -= 5 * strength;
+			} else {
+				V.PC.badRumors.penetrative = 1;
+			}
+		}
+		if (V.PC.badRumors.penetrative <= strength) {
+			strength = V.PC.badRumors.penetrative - 1;
+		}
+		if (V.PC.badRumors.penetrative > Math.max(10, strength)) {
+			V.PC.badRumors.penetrative -= strength;
+			if (V.PC.badRumors.penetrative > Math.max(20, strength) && penetrativeSocialUse() > 75) {
+				V.PC.badRumors.penetrative -= [0, 0, 1].random();
+			}
+		} else if (V.PC.badRumors.penetrative > 1 && (jsRandom(0, 10 + penetrativeSocialUse()) > 20)) { //intended: doesn't go below 10 if there isn't a minimum social acceptance of penetration.
+			V.PC.badRumors.penetrative -= Math.min(strength, V.PC.badRumors.penetrative - 1);
+		}
+	}
+
+	/** Softens rumors about unpopular births by the player.
+	 * @param {number} strength - multiplier, defaults to 1
+	 */
+	function miscegenated(strength = 1) {
+		if (V.arcologies[0].FSChattelReligionistLaw === 1) {
+			if (V.PC.badRumors.birth > 10) { // implies baby born before the player became the prophet
+				V.PC.badRumors.birth = Math.round(V.PC.badRumors.birth / 2);
+			} else {
+				V.PC.badRumors.birth =  0;
+			}
+			return;
+		}
+		if (V.PC.badRumors.birth > 1) {
+			let luck = 3 + (FutureSocieties.isActive("FSRestart") || FutureSocieties.isActive("FSSubjugationist") || FutureSocieties.isActive("FSSupremacist") ? 1 : 0);
+			V.PC.badRumors.birth -= jsRandom(0, luck) < 3 ? Math.min(strength, V.PC.badRumors.birth - 1) : 0;
+		}
+	}
+
+	/** Softens rumors about the player's weakness of character.
+	 * @param {number} strength - multiplier, defaults to 1
+	 */
+	function weak(strength = 1) {
+		let luck = 1 + Math.floor(V.rep / 7000); // the higher the reputation, less chances of reducing rumors since society expects more authority of the player
+		if (V.PC.badRumors.weakness > 1 && jsRandom(0, luck) <= 1) {
+			V.PC.badRumors.weakness - Math.min(strength, V.PC.badRumors.weakness - 1);
+		}
+	}
+
+	/** Softens all rumors about the player.
+	 * @param {number} strength - multiplier, defaults to 1
+	 */
+	function all(strength = 1) {
+		penetrated(strength);
+		miscegenated(strength);
+		weak(strength);
+	}
+})();
+
 /**
  * Check which of their own holes the player prefers
  * @returns {"vagina" | "anus"}
diff --git a/src/npc/interaction/fDick.js b/src/npc/interaction/fDick.js
index b3511c883cc2dd9796c0c4ee93598c5f0b0ed322..1c2f2b7d510235d5595bf002454e0335b6e12ee9 100644
--- a/src/npc/interaction/fDick.js
+++ b/src/npc/interaction/fDick.js
@@ -104,11 +104,7 @@ App.Interact.fDick = function(slave) {
 		}
 	}
 
-	if (V.policies.sexualOpenness === 0) {
-		text.push(rumors());
-
-		V.PC.degeneracy += 2;
-	}
+	text.push(newRumor.penetrative(slave, 2));
 
 	text.toParagraph();
 
@@ -462,8 +458,4 @@ App.Interact.fDick = function(slave) {
 
 		return text.join(' ');
 	}
-
-	function rumors() {
-		return `Rumors spread that you <span class="red">enjoy taking it from slaves.</span>`;
-	}
 };
diff --git a/src/npc/interaction/fSuckDick.js b/src/npc/interaction/fSuckDick.js
index 8ff299bf770379aeb0cd07603c049d70a3c8e0d6..fa417cac8b27568fd21c1a419fc3b44d1606fbad 100644
--- a/src/npc/interaction/fSuckDick.js
+++ b/src/npc/interaction/fSuckDick.js
@@ -268,13 +268,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			App.Events.addParagraph(node, r);
 
@@ -287,13 +281,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			App.Events.addParagraph(node, r);
 
@@ -314,13 +302,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			App.Events.addParagraph(node, r);
 
@@ -335,13 +317,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			slave.trust -= 2;
 			slave.devotion -= 5;
@@ -403,13 +379,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			App.Events.addParagraph(node, r);
 			return node;
@@ -465,13 +435,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			slave.trust += 10;
 
@@ -487,13 +451,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			slave.trust += 2;
 			slave.devotion += 2;
@@ -515,13 +473,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			slave.trust += 2;
 			slave.devotion += 2;
@@ -564,13 +516,7 @@ App.Interact.fSuckDick = function(slave) {
 			r.push(cleanup());
 			App.Events.addParagraph(node, r);
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			slave.devotion += 2;
 			slave.trust += 5;
@@ -586,16 +532,12 @@ App.Interact.fSuckDick = function(slave) {
 			r.push(cleanup());
 			App.Events.addParagraph(node, r);
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			slave.devotion += 5;
 			slave.trust += 2;
+
+			return node;
 		} else { // Default
 			r.push(`You continue to suck ${him}, stroking ${his} body with one hand, making sure the blowjob is memorable. At one point you feel ${his} member stiffen and ${he} lets you know that ${his} orgasm is imminent. You take one last firm suck before slowly letting the glans out of your mouth and taking the base of ${his} ${dickAdj} member ${slave.dick > 2 ? "with your hand" : "with your forefinger and thumb"}, toying the shaft with your ${lipsLong}, just in time to feel the first contraction.`);
 			r.push(cumFinal());
@@ -623,13 +565,7 @@ App.Interact.fSuckDick = function(slave) {
 
 			r.push(cleanup());
 
-			if (V.policies.sexualOpenness === 0) {
-				r = [];
-				r.push(rumors());
-				App.Events.addParagraph(node, r);
-
-				V.PC.degeneracy += 1;
-			}
+			r.push(newRumor.penetrative(slave));
 
 			slave.trust += 2;
 			slave.devotion += 5;
@@ -801,9 +737,4 @@ App.Interact.fSuckDick = function(slave) {
 
 		return text.join(' ');
 	}
-
-
-	function rumors() {
-		return `Rumors spread that you <span class="reputation dec">enjoy taking it from slaves.</span>`;
-	}
 };
diff --git a/src/player/electiveSurgery.js b/src/player/electiveSurgery.js
index 5daeb3f0f42e8f27464bda7613ce6e9d3de85f86..517e5792376d4e0b8c64e2bb8b00b0efb7b1a6bb 100644
--- a/src/player/electiveSurgery.js
+++ b/src/player/electiveSurgery.js
@@ -767,7 +767,7 @@ App.UI.electiveSurgery = function() {
 		const linkArray = [];
 		if (V.PC.vagina >= 3 && V.PC.newVag === 0) {
 			r.push(`"Looking a little loose down there; I can fix that for you. Get you nice and tight again. Oh, and our pussies are guaranteed to not lose their tightness, or your money back! <span class="cash">${cashFormat(applyDiscount(15000))}</span> for a brand new vagina. ${V.PC.preg < 1 ? "I can even do a hymen reconstruction if you want. Nobody will notice that your vagina has already been used, it will be a perfect work of craftsmanship" : "If you weren't pregnant, I could give you a hymen reconstruction, think about it for when you have your uterus free"}. It costs <span class="cash">${cashFormat(applyDiscount(2000))}</span> more."`);
-			if (V.PC.degeneracy > 0) {
+			if (getRumors("penetrative") > 0) {
 				r.push(`${HeU} thinks for a moment and adds: "The advantage of having an intact hymen is that ${V.doctor.state > 0 ? "your" : "a renowned "} doctor can certify your virginity: this will help to reduce the rumors about you. It will cost you another <span class="cash">${cashFormat(applyDiscount(2000))},</span> but it is worth it."`);
 			}
 			linkArray.push(surgeryLink("Get a tighter vagina", "tightPussy", () => {
@@ -781,7 +781,7 @@ App.UI.electiveSurgery = function() {
 					V.PC.newVag = 1;
 					V.PC.trueVirgin = 0;
 					V.PC.counter.reHymen = V.PC.counter.reHymen ? V.PC.counter.reHymen + 1 : 1;
-					if (V.PC.degeneracy > 0) {
+					if (getRumors("penetrative") > 0) {
 						cashX(forceNeg(applyDiscount(19000)), "PCmedical");
 					} else {
 						cashX(forceNeg(applyDiscount(17000)), "PCmedical");
@@ -802,14 +802,14 @@ App.UI.electiveSurgery = function() {
 				} else {
 					r.push("that of a preteen girl.");
 				}
-				if (V.PC.degeneracy > 0) {
+				if (getRumors("penetrative") > 0) {
 					r.push(`${HeU} thinks for a moment and adds: "The advantage of having an intact hymen is that ${V.doctor.state > 0 ? "your" : "a renowned "} doctor can certify your virginity: this will help to reduce the rumors about you. It will cost you <span class="cash">${cashFormat(applyDiscount(2000))}</span> more, but it is worth it."`);
 				}
 				linkArray.push(surgeryLink("Get your hymen restored", "reVirgin", () => {
 					V.PC.vagina = 0;
 					V.PC.trueVirgin = 0;
 					V.PC.counter.reHymen = V.PC.counter.reHymen ? V.PC.counter.reHymen + 1 : 1;
-					if (V.PC.degeneracy > 0) {
+					if (getRumors("penetrative") > 0) {
 						cashX(forceNeg(applyDiscount(4000)), "PCmedical");
 					} else {
 						cashX(forceNeg(applyDiscount(2000)), "PCmedical");
@@ -828,7 +828,7 @@ App.UI.electiveSurgery = function() {
 				} else {
 					r.push("that of a preteen girl.");
 				}
-				if (V.PC.degeneracy > 0) {
+				if (getRumors("penetrative") > 0) {
 					r.push(`${HeU} thinks for a moment and adds: "The advantage of having an intact hymen is that ${V.doctor.state > 0 ? "your" : "a renowned "} doctor can certify your virginity: this would help to reduce the rumors about you. It would cost you <span class="cash">${cashFormat(applyDiscount(2000))}</span> more, but it is worth it."`);
 				}
 				r.push(`${He} makes a resigned face and tells you "Come back when you're not pregnant if you're interested."`);
diff --git a/src/player/managePersonalAffairs.js b/src/player/managePersonalAffairs.js
index dc158910a5b0e333738e58f30eb5dd6cf76ddd4b..420cd03cff10b6a9486b0fa5541b92ef84a4bd8a 100644
--- a/src/player/managePersonalAffairs.js
+++ b/src/player/managePersonalAffairs.js
@@ -318,18 +318,22 @@ App.UI.managePersonalAffairs = function() {
 			 * @returns {string} the correct rumor flavor text for the players degeneracy level
 			 */
 			function getPlayerRumors() {
-				if (PC.degeneracy > 100) {
+				const rumors = getRumors();
+				if (rumors > 100) {
 					return `There are severe and devastating rumors about you spreading across the arcology.`;
-				} else if (PC.degeneracy > 75) {
+				} else if (rumors > 75) {
 					return `There are severe rumors about you spreading across the arcology.`;
-				} else if (PC.degeneracy > 50) {
+				} else if (rumors > 50) {
 					return `There are bad rumors about you spreading across the arcology.`;
-				} else if (PC.degeneracy > 25) {
+				} else if (rumors > 25) {
 					return `There are rumors about you spreading across the arcology.`;
-				} else if (PC.degeneracy > 10) {
+				} else if (rumors > 10) {
 					return `There are minor rumors about you spreading across the arcology.`;
-				} else {
+				} else  if (rumors > 1) {
 					return `The occasional rumor about you can be heard throughout the arcology.`;
+				} else {
+					return `The are no rumors about you.`;
+
 				}
 			}
 		}
diff --git a/src/player/pcSurgeryDegradation.js b/src/player/pcSurgeryDegradation.js
index 68c18d0dd7aad4967eeebfa9b1ffd0b18e524ec6..5068ea051c5a9f4c2fb8d7268d5e9e32f265ecb7 100644
--- a/src/player/pcSurgeryDegradation.js
+++ b/src/player/pcSurgeryDegradation.js
@@ -480,13 +480,13 @@ App.UI.PCSurgeryDegradation = function(surgeryType) {
 					r.push(`${HisU} long tongue enters your vagina and you feel ${heU} rhythmically pressing into your new hymen with just enough pressure for you to feel it.`);
 				}
 				r.push(`${HeU} is quite good at ${hisU} job and quickly brings you to climax; your neglected dick spraying cum across your belly. ${HeU} rises from your crotch to lick up your wayward cum. "I always did like the taste of you. Feel free to rest as long as you need before departing.`);
-				if (V.PC.degeneracy > 0) {
+				if (V.PC.badRumors.penetrative > 0) {
 					r.push(`Ah, I forgot, while you were sedated ${V.doctor.state > 0 ? "your" : "a renowned "} doctor came, did an examination, issued a virginity certificate and made a public declaration that you are a virgin.`);
-					V.PC.degeneracy = Math.max(V.PC.degeneracy, 0);
-					if (V.PC.degeneracy > 0) {
-						V.PC.degeneracy = Math.floor(V.PC.degeneracy / 2);
-						if (V.PC.degeneracy >= 100) {
-							V.PC.degeneracy = Math.min(50 + Math.floor(V.PC.degeneracy / 3), 99);
+					V.PC.badRumors.penetrative = Math.max(V.PC.badRumors.penetrative, 0);
+					if (V.PC.badRumors.penetrative > 0) {
+						V.PC.badRumors.penetrative = Math.floor(V.PC.badRumors.penetrative / 2);
+						if (V.PC.badRumors.penetrative >= 100) {
+							V.PC.badRumors.penetrative = Math.min(50 + Math.floor(V.PC.badRumors.penetrative / 3), 99);
 						}
 					}
 				}
@@ -503,13 +503,13 @@ App.UI.PCSurgeryDegradation = function(surgeryType) {
 					r.push(`${HisU} long tongue enters your vagina and you feel ${heU} rhythmically pressing into your new hymen with just enough pressure for you to feel it.`);
 				}
 				r.push(`${HeU} is quite good at ${hisU} job and quickly brings you to climax; your new${V.PC.vagina === 0 ? " virgin" : ""} pussy squirting girlcum across ${hisU} face. ${HeU} rises from your crotch and licks ${hisU} lips. "I always did like the taste of you. Feel free to rest as long as you need before departing.`);
-				if (V.PC.degeneracy > 0 && V.PC.vagina === 0) {
+				if (V.PC.badRumors.penetrative > 0 && V.PC.vagina === 0) {
 					r.push(`Ah, I forgot, ${V.doctor.state > 0 ? "your" : "a renowned "} doctor came while you were sedated, did an examination, issued a virginity certificate and <span class="reputation inc">made a public statement that you are a virgin.</span>`);
-					V.PC.degeneracy = Math.max(V.PC.degeneracy - 10, 0); /** -10 points */
-					if (V.PC.degeneracy > 0) {
-						V.PC.degeneracy = V.PC.degeneracy - Math.max(Math.floor(V.PC.degeneracy / 2), 50); /** reduces half of the points from 11 to 60 */
-						if (V.PC.degeneracy > 50) {
-							V.PC.degeneracy = Math.min(50 + Math.floor((V.PC.degeneracy - 50) / 3), 99); /** reduces 2/3 of the points from 61 to 99, caps at 99 */
+					V.PC.badRumors.penetrative = Math.max(V.PC.badRumors.penetrative - 10, 0); /** -10 points */
+					if (V.PC.badRumors.penetrative > 0) {
+						V.PC.badRumors.penetrative = V.PC.badRumors.penetrative - Math.max(Math.floor(V.PC.badRumors.penetrative / 2), 50); /** reduces half of the points from 11 to 60 */
+						if (V.PC.badRumors.penetrative > 50) {
+							V.PC.badRumors.penetrative = Math.min(50 + Math.floor((V.PC.badRumors.penetrative - 50) / 3), 99); /** reduces 2/3 of the points from 61 to 99, caps at 99 */
 						}
 					}
 				}
@@ -541,13 +541,13 @@ App.UI.PCSurgeryDegradation = function(surgeryType) {
 					r.push(`disappears between your thighs.`);
 				}
 				r.push(`You feel ${hisU} face brush your inner legs as ${heU} brings ${hisU} mouth to your cunt and begins to enthusiastically eat you out. ${HisU} long tongue enters your vagina and you feel ${heU} rhythmically pressing into your new hymen with just enough pressure for you to feel it. ${HeU} is quite good at ${hisU} job and quickly brings you to climax; your virgin pussy squirting girlcum across ${hisU} face. ${HeU} rises from your crotch and licks ${hisU} lips. "I always did like the taste of you. Feel free to rest as long as you need before departing.`);
-				if (V.PC.degeneracy > 0 && V.PC.vagina === 0) {
+				if (V.PC.badRumors.penetrative > 0 && V.PC.vagina === 0) {
 					r.push(`Ah, I forgot, ${V.doctor.state > 0 ? "your" : "a renowned "} doctor came while you were sedated, did an examination, issued a virginity certificate and <span class="reputation inc">made a public statement that you are a virgin.</span>`);
-					V.PC.degeneracy = Math.max(V.PC.degeneracy - 10, 0); /** -10 points */
-					if (V.PC.degeneracy > 0) {
-						V.PC.degeneracy = V.PC.degeneracy - Math.max(Math.floor(V.PC.degeneracy / 2), 50); /** reduces half of the points from 11 to 60 */
-						if (V.PC.degeneracy > 50) {
-							V.PC.degeneracy = Math.min(50 + Math.floor((V.PC.degeneracy - 50) / 3), 99); /** reduces 2/3 of the points from 61 to 99, caps at 99 */
+					V.PC.badRumors.penetrative = Math.max(V.PC.badRumors.penetrative - 10, 0); /** -10 points */
+					if (V.PC.badRumors.penetrative > 0) {
+						V.PC.badRumors.penetrative = V.PC.badRumors.penetrative - Math.max(Math.floor(V.PC.badRumors.penetrative / 2), 50); /** reduces half of the points from 11 to 60 */
+						if (V.PC.badRumors.penetrative > 50) {
+							V.PC.badRumors.penetrative = Math.min(50 + Math.floor((V.PC.badRumors.penetrative - 50) / 3), 99); /** reduces 2/3 of the points from 61 to 99, caps at 99 */
 						}
 					}
 				}