diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.tw
index 6e632eea575794b6c0f800489e40ba198f7a4a48..443ab177c628a58fa71331f22d3152fdca4472f7 100644
--- a/src/js/DefaultRules.tw
+++ b/src/js/DefaultRules.tw
@@ -386,7 +386,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective glasses") {
 							slave.eyewear = "corrective glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective glasses.`;
 						}
 					} else {
@@ -401,7 +401,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective contacts") {
 							slave.eyewear = "corrective contacts";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective contacts.`;
 						}
 					} else {
@@ -416,7 +416,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes > -1) {
 						if (slave.eyewear != "blurring glasses") {
 							slave.eyewear = "blurring glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given blurring glasses.`;
 						}
 					} else {
@@ -431,7 +431,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes > -1) {
 						if (slave.eyewear != "blurring contacts") {
 							slave.eyewear = "blurring contacts";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given blurring contacts.`;
 						}
 					} else {
@@ -446,13 +446,13 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective glasses") {
 							slave.eyewear = "corrective glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective glasses.`;
 						}
 					} else {
 						if (slave.eyewear != "glasses") {
 							slave.eyewear = "glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given decorative glasses.`;
 						}
 					}
@@ -476,7 +476,7 @@ window.DefaultRules = (function() {
 					if (slave.hears == -1) {
 						if (slave.earwear != "hearing aids") {
 							slave.earwear = "hearing aids";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given hearing aids.`;
 						}
 					} else {
@@ -491,7 +491,7 @@ window.DefaultRules = (function() {
 					if (slave.hears > -1) {
 						if (slave.earwear != "muffling ear plugs") {
 							slave.earwear = "muffling ear plugs";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given muffling ear plugs.`;
 						}
 					} else {
@@ -506,7 +506,7 @@ window.DefaultRules = (function() {
 					if (slave.hears > -2) {
 						if (slave.earwear != "deafening ear plugs") {
 							slave.earwear = "deafening ear plugs";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given deafening ear plugs.`;
 						}
 					} else {
@@ -1882,25 +1882,25 @@ window.DefaultRules = (function() {
 			if ((rule.teeth == "universal")) {
 				if ((slave.teeth == "crooked")) {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
 				} else if (slave.teeth == "gapped") {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces to close the gap in her teeth.`;
 				} else if ((slave.teeth == "normal")) {
 					slave.teeth = "cosmetic braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given cosmetic braces.`;
 				}
 			} else if ((rule.teeth == "straighten")) {
 				if ((slave.teeth == "crooked")) {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
 				} else if (slave.teeth == "gapped") {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces to close the gap in her teeth.`;
 				} else if ((slave.teeth == "cosmetic braces")) {
 					slave.teeth = "normal";
@@ -1922,7 +1922,7 @@ window.DefaultRules = (function() {
 		if (rule.eyeColor !== undefined && (rule.eyeColor !== "no default setting")) {
 			if ((slave.eyeColor !== rule.eyeColor)) {
 				slave.eyeColor = rule.eyeColor;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName} has been given ${slave.eyeColor} contact lenses.`;
 			}
 		}
@@ -1930,7 +1930,7 @@ window.DefaultRules = (function() {
 		if (rule.makeup !== undefined && (rule.makeup !== "no default setting")) {
 			if ((slave.makeup !== rule.makeup)) {
 				slave.makeup = rule.makeup;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName} has been assigned the standard makeup.`;
 			}
 		}
@@ -1939,7 +1939,7 @@ window.DefaultRules = (function() {
 			if (rule.nails !== undefined && (rule.nails !== "no default setting")) {
 				if ((slave.nails !== rule.nails)) {
 					slave.nails = rule.nails;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName} has been assigned the standard nails.`;
 				}
 			}
@@ -1949,7 +1949,7 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hColor !== rule.hColor)) {
 					slave.hColor = rule.hColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s hair has been dyed ${rule.hColor}.`;
 				}
 			}
@@ -1959,7 +1959,7 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hStyle !== rule.hStyle)) {
 					slave.hStyle = rule.hStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					if ((rule.hStyle == "shaved")) {
 						slave.hLength = 0;
 						r += `<br>${slave.slaveName}'s hair has been shaved.`;
@@ -1973,10 +1973,10 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hLength !== rule.hLength)) {
 					if ((slave.hLength > rule.hLength)) {
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s hair has been cut; it `;
 					} else {
-						V.cash -= V.modCost*Math.trunc((rule.hLength-slave.hLength)/10);
+						cashX(forceNeg(V.modCost*Math.trunc((rule.hLength-slave.hLength)/10)), "slaveMod");
 						r += `<br>${slave.slaveName} has been given extensions; her hair `;
 					}
 				r += `is now ${lengthToEitherUnit(rule.hLength)} long.`;
@@ -2001,7 +2001,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowHColor !== rule.eyebrowHColor)) {
 					slave.eyebrowHColor = rule.eyebrowHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`;
 				}
 			}
@@ -2011,7 +2011,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) {
 					slave.eyebrowHStyle = rule.eyebrowHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; they are now ${rule.eyebrowHStyle}.`;
 				}
 			}
@@ -2021,7 +2021,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowFullness !== rule.eyebrowFullness)) {
 					slave.eyebrowFullness = rule.eyebrowFullness;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair thickness has been adjusted; they are now ${rule.eyebrowFullness}.`;
 				}
 			}
@@ -2031,7 +2031,7 @@ window.DefaultRules = (function() {
 			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
 				if ((slave.pubicHColor !== rule.pubicHColor)) {
 					slave.pubicHColor = rule.pubicHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s pubic hair, if present, has been dyed ${rule.pubicHColor}.`;
 				}
 			}
@@ -2041,7 +2041,7 @@ window.DefaultRules = (function() {
 			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
 				if ((slave.pubicHStyle !== rule.pubicHStyle)) {
 					slave.pubicHStyle = rule.pubicHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s pubic hair has been restyled; it is now ${rule.pubicHStyle}.`;
 				}
 			}
@@ -2051,7 +2051,7 @@ window.DefaultRules = (function() {
 			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
 				if ((slave.underArmHColor !== rule.underArmHColor)) {
 					slave.underArmHColor = rule.underArmHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s underarm hair, if present, has been dyed ${rule.underArmHColor}.`;
 				}
 			}
@@ -2061,7 +2061,7 @@ window.DefaultRules = (function() {
 			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
 				if ((slave.underArmHStyle !== rule.underArmHStyle)) {
 					slave.underArmHStyle = rule.underArmHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s underarm hair has been restyled; it is now ${rule.underArmHStyle}.`;
 				}
 			}
@@ -2071,7 +2071,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowHColor !== rule.eyebrowHColor)) {
 					slave.eyebrowHColor = rule.eyebrowHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`;
 				}
 			}
@@ -2081,7 +2081,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) {
 					slave.eyebrowHStyle = rule.eyebrowHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; it is now ${rule.eyebrowHStyle}.`;
 				}
 			}
@@ -2091,7 +2091,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowFullness !== rule.eyebrowFullness)) {
 					slave.eyebrowFullness = rule.eyebrowFullness;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been reshaped; it is now ${rule.eyebrowFullness}.`;
 				}
 			}
@@ -2111,7 +2111,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s nipple piercings have been removed.`;
 				} else if (slave.nipples !== "fuckable") {
 					slave.nipplesPiercing = rule.nipplesPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s nipples have been pierced.`;
 				} else {
 					r += `<br>${slave.slaveName}'s nipples are inverted and cannot be pierced.`;
@@ -2126,7 +2126,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s areolae piercings have been removed.`;
 				} else {
 					slave.areolaePiercing = rule.areolaePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s areolae have been given stud piercings.`;
 				}
 			}
@@ -2149,9 +2149,9 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s clit has been pierced.`;
 
 					if (rule.clitPiercing == 3)
-						V.cash -= 1000;
+						cashX(-1000, "slaveMod");
 					else
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 				}
 			}
 		}
@@ -2164,7 +2164,7 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s labia piercings have been removed.`;
 					} else {
 						slave.vaginaPiercing = rule.vaginaPiercing;
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s pussylips have been pierced.`;
 					}
 				}
@@ -2179,7 +2179,7 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s shaft piercings have been removed.`;
 					} else {
 						slave.dickPiercing = rule.dickPiercing;
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s shaft has been pierced.`;
 					}
 				}
@@ -2193,7 +2193,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s asshole piercings have been removed.`;
 				} else {
 					slave.anusPiercing = rule.anusPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s asshole has been pierced.`;
 				}
 			}
@@ -2206,7 +2206,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s lip piercings have been removed.`;
 				} else {
 					slave.lipsPiercing = rule.lipsPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s lips have been pierced.`;
 				}
 			}
@@ -2219,7 +2219,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s tongue piercings have been removed.`;
 				} else {
 					slave.tonguePiercing = rule.tonguePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s tongue has been pierced.`;
 				}
 			}
@@ -2232,7 +2232,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s ear piercings have been removed.`;
 				} else {
 					slave.earPiercing = rule.earPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s ears have been pierced.`;
 				}
 			}
@@ -2245,7 +2245,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s nose piercing has been removed.`;
 				} else {
 					slave.nosePiercing = rule.nosePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s nose has been pierced.`;
 				}
 			}
@@ -2258,7 +2258,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s eyebrow piercings have been removed.`;
 				} else {
 					slave.eyebrowPiercing = rule.eyebrowPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrows have been pierced.`;
 				}
 			}
@@ -2271,7 +2271,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s navel piercing have been removed.`;
 				} else {
 					slave.navelPiercing = rule.navelPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s navel has been pierced.`;
 				}
 			}
@@ -2284,7 +2284,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s corset piercings have been removed.`;
 				} else {
 					slave.corsetPiercing = rule.corsetPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName} has been given a set of corset piercings.`;
 				}
 			}
@@ -2361,7 +2361,7 @@ window.DefaultRules = (function() {
 		if (rule.boobsTat !== undefined && (rule.boobsTat !== "no default setting")) {
 			if ((slave.boobsTat !== rule.boobsTat)) {
 				slave.boobsTat = rule.boobsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s chest has been tattooed.`;
 			}
 		}
@@ -2369,7 +2369,7 @@ window.DefaultRules = (function() {
 		if (rule.buttTat !== undefined && (rule.buttTat !== "no default setting")) {
 			if ((slave.buttTat !== rule.buttTat)) {
 				slave.buttTat = rule.buttTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s butt has been tattooed.`;
 			}
 		}
@@ -2377,7 +2377,7 @@ window.DefaultRules = (function() {
 		if (rule.vaginaTat !== undefined && (rule.vaginaTat !== "no default setting")) {
 			if ((slave.vaginaTat !== rule.vaginaTat)) {
 				slave.vaginaTat = rule.vaginaTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s abdomen has been tattooed.`;
 			}
 		}
@@ -2386,7 +2386,7 @@ window.DefaultRules = (function() {
 			if (rule.dickTat !== undefined && (rule.dickTat !== "no default setting")) {
 				if ((slave.dickTat !== rule.dickTat)) {
 					slave.dickTat = rule.dickTat;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s dick has been tattooed.`;
 				}
 			}
@@ -2395,7 +2395,7 @@ window.DefaultRules = (function() {
 		if (rule.lipsTat !== undefined && (rule.lipsTat !== "no default setting")) {
 			if ((slave.lipsTat !== rule.lipsTat)) {
 				slave.lipsTat = rule.lipsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s face has been tattooed.`;
 			}
 		}
@@ -2403,7 +2403,7 @@ window.DefaultRules = (function() {
 		if (rule.anusTat !== undefined && (rule.anusTat !== "no default setting")) {
 			if ((slave.anusTat !== rule.anusTat)) {
 				slave.anusTat = rule.anusTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s asshole has been modded.`;
 			}
 		}
@@ -2411,7 +2411,7 @@ window.DefaultRules = (function() {
 		if (rule.shouldersTat !== undefined && (rule.shouldersTat !== "no default setting")) {
 			if ((slave.shouldersTat !== rule.shouldersTat)) {
 				slave.shouldersTat = rule.shouldersTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s shoulders have been tattooed.`;
 			}
 		}
@@ -2419,7 +2419,7 @@ window.DefaultRules = (function() {
 		if (rule.armsTat !== undefined && (rule.armsTat !== "no default setting")) {
 			if ((slave.armsTat !== rule.armsTat)) {
 				slave.armsTat = rule.armsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s arms have been tattooed.`;
 			}
 		}
@@ -2427,7 +2427,7 @@ window.DefaultRules = (function() {
 		if (rule.legsTat !== undefined && (rule.legsTat !== "no default setting")) {
 			if ((slave.legsTat !== rule.legsTat)) {
 				slave.legsTat = rule.legsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s legs have been tattooed.`;
 			}
 		}
@@ -2435,7 +2435,7 @@ window.DefaultRules = (function() {
 		if (rule.stampTat !== undefined && (rule.stampTat !== "no default setting")) {
 			if ((slave.stampTat !== rule.stampTat)) {
 				slave.stampTat = rule.stampTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s lower back has been tattooed.`;
 			}
 		}
diff --git a/src/js/rulesAutosurgery.tw b/src/js/rulesAutosurgery.tw
index 7c67af634535dfe437714214bbefe6c0f99e6cf3..be621970378be01742150c61bc3d6e2618262035 100644
--- a/src/js/rulesAutosurgery.tw
+++ b/src/js/rulesAutosurgery.tw
@@ -129,56 +129,56 @@ window.rulesAutosurgery = (function() {
 		if ((slave.eyes == -1) && (thisSurgery.surgery_eyes == 1)) {
 			surgeries.push("surgery to correct her vision");
 			slave.eyes = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.eyes == 1) && (thisSurgery.surgery_eyes == -1)) {
 			surgeries.push("surgery to blur her vision");
 			slave.eyes = -1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.hears == -1) && (thisSurgery.surgery_hears == 1)) {
 			surgeries.push("surgery to correct her hearing");
 			slave.hears = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.hears == 0) && (thisSurgery.surgery_hears == -1)) {
 			surgeries.push("surgery to muffle her hearing");
 			slave.hears = -1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.lactation == 2) && (thisSurgery.surgery_lactation == 0)) {
 			surgeries.push("surgery to remove her lactation implants");
 			slave.lactation = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.lactation != 2 && (thisSurgery.surgery_lactation == 1)) {
 			surgeries.push("lactation inducing implanted drugs");
 			slave.lactation = 2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.prostate == 2) && (thisSurgery.surgery_prostate == 0)) {
 			surgeries.push("surgery to remove her prostate implant");
 			slave.prostate = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.prostate == 1 && (thisSurgery.surgery_prostate == 1)) {
 			surgeries.push("a precum production enhancing drug implant");
 			slave.prostate = 2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -187,7 +187,7 @@ window.rulesAutosurgery = (function() {
 			slave.anus = 3;
 			if (slave.analSkill > 10)
 				slave.analSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -196,7 +196,7 @@ window.rulesAutosurgery = (function() {
 			slave.vagina = 3;
 			if (slave.vaginalSkill > 10)
 				slave.vaginalSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -205,7 +205,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.faceShape == "masculine") slave.faceShape = "androgynous";
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
 			slave.face = Math.clamp(slave.face+20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -218,7 +218,7 @@ window.rulesAutosurgery = (function() {
 			else if (slave.visualAge > 50) slave.visualAge -= 20;
 			else if (slave.visualAge > 36) slave.visualAge -= 10;
 			else slave.visualAge -= 5;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -226,19 +226,19 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("body hair removal");
 			if (slave.underArmHStyle != "hairless") slave.underArmHStyle = "bald";
 			if (slave.pubicHStyle != "hairless") slave.pubicHStyle = "bald";
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 
 		} else if ((slave.bald == 0 || slave.hStyle != "bald" || slave.eyebrowHStyle != "bald") && (thisSurgery.surgery_hair == 2)) {
 			surgeries.push("hair removal");
 			slave.eyebrowHStyle = "bald";
 			slave.hStyle = "bald";
 			slave.bald = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 
 		} else if ((slave.weight >= 10) && (thisSurgery.surgery_cosmetic > 0)) {
 			surgeries.push("liposuction");
 			slave.weight -= 50;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -246,21 +246,21 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("a feminine voice");
 			slave.voice += 1;
 			slave.voiceImplant += 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.waist >= -10) && (thisSurgery.surgery_cosmetic > 0)) {
 			surgeries.push("a narrower waist");
 			slave.waist -= 20;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (((slave.boobShape == "saggy") || (slave.boobShape == "downward-facing")) && (thisSurgery.surgery_cosmetic > 0) && (slave.breastMesh != 1)) {
 			surgeries.push("a breast lift");
 			slave.boobShape = "normal";
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -270,7 +270,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.boobShape = "perky";
 			surgeries.push("more interestingly shaped breasts");
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -280,7 +280,7 @@ window.rulesAutosurgery = (function() {
 			slave.lipsImplant = 0;
 			if (slave.oralSkill > 10)
 				slave.oralSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -291,7 +291,7 @@ window.rulesAutosurgery = (function() {
 				slave.lips += 10;
 				if (slave.oralSkill > 10)
 					slave.oralSkill -= 10;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -301,7 +301,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.faceShape == "masculine") slave.faceShape = "androgynous";
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
 			slave.face = Math.clamp(slave.face+20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -309,7 +309,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -328,14 +328,14 @@ window.rulesAutosurgery = (function() {
 				slave.visualAge -= 5;
 			}
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.waist >= -95) && (thisSurgery.surgery_cosmetic == 2) && (V.seeExtreme == 1)) {
 			surgeries.push("a narrower waist");
 			slave.waist = Math.clamp(slave.waist-20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -343,7 +343,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("a bimbo's voice");
 			slave.voice += 1;
 			slave.voiceImplant += 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -352,7 +352,7 @@ window.rulesAutosurgery = (function() {
 			slave.butt -= slave.buttImplant;
 			slave.buttImplant = 0;
 			slave.buttImplantType = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -361,7 +361,7 @@ window.rulesAutosurgery = (function() {
 			slave.boobs -= slave.boobsImplant;
 			slave.boobsImplant = 0;
 			slave.boobsImplantType = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 		} else if ((slave.butt <= 3) && (slave.butt < thisSurgery.surgery_butt)) {
@@ -369,7 +369,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -378,7 +378,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 400;
 				slave.boobs += 400;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -387,7 +387,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("modestly bigger boobs");
 				slave.boobsImplant += 200;
 				slave.boobs += 200;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -397,7 +397,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -407,7 +407,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 400;
 				slave.boobs += 400;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -418,7 +418,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.analSkill > 10) {
 				slave.analSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -427,7 +427,7 @@ window.rulesAutosurgery = (function() {
 			slave.vagina = 0;
 			if (slave.vaginalSkill > 10)
 				slave.vaginalSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -435,7 +435,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -445,7 +445,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.analSkill > 10) {
 				slave.analSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -455,7 +455,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.vaginalSkill > 10) {
 				slave.vaginalSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -464,7 +464,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -474,7 +474,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 200;
 				slave.boobs += 200;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -483,14 +483,14 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.bellyImplant < 0 && V.bellyImplants > 0 && thisSurgery.surgery_bellyImplant == "install" && slave.womb.length == 0 && slave.broodmother == 0) {
 			slave.bellyImplant = 100;
 			slave.preg = -2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 			if (slave.ovaries == 1 || slave.mpreg == 1) {
 				surgeries.push("belly implant");
 				V.surgeryType = "bellyIn";
@@ -514,7 +514,7 @@ window.rulesAutosurgery = (function() {
 			slave.preg = 0;
 			slave.bellyImplant = -1;
 			slave.cervixImplant = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 		} else if (slave.balls > 0 && slave.vasectomy === 0 && thisSurgery.surgery_vasectomy === true) {
 			surgeries.push("vasectomy");
 			V.surgeryType = "vasectomy";
@@ -523,7 +523,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.health -= 10;
 			slave.vasectomy = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 		} else if (slave.balls > 0 && slave.vasectomy === 1 && thisSurgery.surgery_vasectomy === false) {
 			surgeries.push("undo vasectomy");
 			V.surgeryType = "vasectomy undo";
@@ -532,7 +532,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.health -= 10;
 			slave.vasectomy = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 		}
 	}