diff --git a/src/js/health.js b/src/js/health.js
index 4e7d09d9896c10b9e76dc2133fef486d0ba9c8fb..20613e8d670ea8d76f15d317ae7954ddff06348d 100644
--- a/src/js/health.js
+++ b/src/js/health.js
@@ -69,11 +69,14 @@ globalThis.healthCure = function(slave, cure) {
  * Surgical procedures also depend on the PC's medicine skill
  * @param {App.Entity.SlaveState} slave
  * @param {number} damage
+ * @param {boolean} [cheat]
  * @returns {void}
  */
-globalThis.surgeryDamage = function(slave, damage) {
-	const playerSkillFactor = 1 + Math.clamp(Math.pow(V.PC.skill.medicine / 100, 2), 0, 1);
-	healthDamage(slave, Math.trunc(damage / playerSkillFactor));
+globalThis.surgeryDamage = function(slave, damage, cheat = false) {
+	if (!cheat) {
+		const playerSkillFactor = 1 + Math.clamp(Math.pow(V.PC.skill.medicine / 100, 2), 0, 1);
+		healthDamage(slave, Math.trunc(damage / playerSkillFactor));
+	}
 };
 
 /**
diff --git a/src/npc/surgery/surgery.js b/src/npc/surgery/surgery.js
index 1a51b33059b06747cda05db44392ad27d8614edd..4777bc268a2e2e0c4e56966a2663940ffbacd767 100644
--- a/src/npc/surgery/surgery.js
+++ b/src/npc/surgery/surgery.js
@@ -10,16 +10,17 @@
  * @param {number} [costs] money costs
  * @param {number} [hCosts] health costs
  * @param {string} [surgeryType]
+ * @param {boolean} [cheat]
  * @returns {FC.Medicine.Surgery.Procedure}
  */
-App.Medicine.Surgery.makeOption = function(typeId, label, effect, desc, action, costs, hCosts, surgeryType) {
+App.Medicine.Surgery.makeOption = function(typeId, label, effect, desc, action, costs, hCosts, surgeryType, cheat = false) {
 	return {
 		typeId: typeId,
 		label: label,
 		targetEffect: effect,
 		description: desc,
-		costs: costs,
-		healthCosts: hCosts,
+		costs: (cheat) ? 0 : costs,
+		healthCosts: (cheat) ? 0 : hCosts,
 		action: action,
 		surgeryType: surgeryType
 	};
@@ -72,12 +73,15 @@ App.Medicine.Keys = {
  * Commit procedure, executing its action and subtracting its costs
  * @param {FC.Medicine.Surgery.Procedure} surgery
  * @param {App.Entity.SlaveState} slave
+ * @param {boolean} [cheat]
  */
-App.Medicine.Surgery.commit = function(surgery, slave) {
+App.Medicine.Surgery.commit = function(surgery, slave, cheat = false) {
 	V.surgeryType = surgery.surgeryType;
 	surgery.action(slave);
-	cashX(forceNeg(surgery.costs), "slaveSurgery", slave);
-	surgeryDamage(slave, surgery.healthCosts);
+	if (!cheat) {
+		cashX(forceNeg(surgery.costs), "slaveSurgery", slave);
+		surgeryDamage(slave, surgery.healthCosts, cheat);
+	}
 };
 
 /**
@@ -85,9 +89,10 @@ App.Medicine.Surgery.commit = function(surgery, slave) {
  * @param {string} passage Passage to go after the surgery
  * @param {FC.Medicine.Surgery.Procedure} surgery
  * @param {App.Entity.SlaveState} slave
+ * @param {boolean} [cheat]
  * @returns {string}
  */
-App.Medicine.Surgery.makeLink = function(passage, surgery, slave) {
+App.Medicine.Surgery.makeLink = function(passage, surgery, slave, cheat = false) {
 	if (surgery.action === undefined) {
 		return App.UI.disabledLink(surgery.label, [surgery.description]);
 	}
@@ -107,7 +112,7 @@ App.Medicine.Surgery.makeLink = function(passage, surgery, slave) {
 	}
 
 	return App.UI.link(surgery.label, App.Medicine.Surgery.commit, [surgery, slave], passage,
-		`${capFirstChar(surgery.description)}.\nSurgery costs: ${cashFormat(surgery.costs)}.\nProjected health damage: ${healthCosts()}.`);
+		`${capFirstChar(surgery.description)}.${cheat ? `` : `\nSurgery costs: ${cashFormat(surgery.costs)}.\nProjected health damage: ${healthCosts()}.`}`);
 };
 
 /**
@@ -574,22 +579,23 @@ App.Medicine.Surgery.sizingProcedures = function() {
  * For limbs use removeLimbs()
  * @param {App.Entity.SlaveState} slave
  * @param {string} part
+ * @param {boolean} [cheat]
  */
-globalThis.surgeryAmp = function(slave, part) {
+globalThis.surgeryAmp = function(slave, part, cheat = false) {
 	switch (part) {
 		case "left ear":
 			delete slave.brand["left ear"];
 			slave.earShape = "none";
 			slave.earT = "none";
 			slave.earPiercing = 0;
-			surgeryDamage(slave, 10);
+			surgeryDamage(slave, 10, cheat);
 			break;
 		case "right ear":
 			delete slave.brand["right ear"];
 			slave.earShape = "none";
 			slave.earT = "none";
 			slave.earPiercing = 0;
-			surgeryDamage(slave, 10);
+			surgeryDamage(slave, 10, cheat);
 			break;
 		case "dick":
 			slave.dick = 0;
@@ -599,7 +605,7 @@ globalThis.surgeryAmp = function(slave, part) {
 			slave.dickTat = 0;
 			slave.dickAccessory = "none";
 			slave.chastityPenis = 0;
-			surgeryDamage(slave, 20);
+			surgeryDamage(slave, 20, cheat);
 			break;
 		case "vagina":
 			slave.vagina = -1;
@@ -611,17 +617,17 @@ globalThis.surgeryAmp = function(slave, part) {
 			slave.vaginalAccessory = "none";
 			slave.vaginalAttachment = "none";
 			slave.chastityVagina = 0;
-			surgeryDamage(slave, 20);
+			surgeryDamage(slave, 20, cheat);
 			break;
 		case "horn":
 			slave.horn = "none";
 			slave.hornColor = "none";
-			surgeryDamage(slave, 10);
+			surgeryDamage(slave, 10, cheat);
 			break;
 		case "voicebox":
 			slave.voice = 0;
 			slave.voiceImplant = 0;
-			surgeryDamage(slave, 10);
+			surgeryDamage(slave, 10, cheat);
 			break;
 		case "lips":
 			slave.lips -= slave.lipsImplant;