From 22ffcc35e50bd7cd5d8ba7f5f37f081bf43cbe24 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Fri, 4 Dec 2020 15:47:22 -0500
Subject: [PATCH] bein adding cheats to surgery screen

---
 src/js/health.js           |  9 ++++++---
 src/npc/surgery/surgery.js | 36 +++++++++++++++++++++---------------
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/src/js/health.js b/src/js/health.js
index 4e7d09d9896..20613e8d670 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 1a51b33059b..44a2459bd07 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) {
 	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;
-- 
GitLab