From 0ad8ac5fadd7ead09186a15b8d5401bc827ddf26 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 4 Jan 2021 02:38:36 -0500 Subject: [PATCH] finish hair and face --- src/005-passages/facilitiesPassages.js | 4 +- src/facilities/surgery/remoteSurgery.tw | 4 +- .../surgery/remoteSurgeryPassage.js | 567 ++++++++++-------- src/uncategorized/surgeryDegradation.tw | 2 +- 4 files changed, 309 insertions(+), 268 deletions(-) diff --git a/src/005-passages/facilitiesPassages.js b/src/005-passages/facilitiesPassages.js index d11f09ce738..582882c56f3 100644 --- a/src/005-passages/facilitiesPassages.js +++ b/src/005-passages/facilitiesPassages.js @@ -79,10 +79,10 @@ new App.DomPassage("Toy Shop", ); new App.DomPassage("Remote Surgery", - (slave) => { + () => { V.nextButton = "Confirm changes"; V.nextLink = "Slave Interact"; V.encyclopedia = "The Remote Surgery"; - return App.UI.remoteSurgery(slave); + return App.UI.remoteSurgery(getSlave(V.AS)); }, ["jump-to-safe", "jump-from-safe"] ); diff --git a/src/facilities/surgery/remoteSurgery.tw b/src/facilities/surgery/remoteSurgery.tw index f31ea7a6196..ba6d2333ae5 100644 --- a/src/facilities/surgery/remoteSurgery.tw +++ b/src/facilities/surgery/remoteSurgery.tw @@ -1,4 +1,4 @@ -:: Remote Surgery [nobr jump-from-safe] +:: Remote Surgery Old [nobr jump-from-safe] <style> .active { @@ -759,7 +759,7 @@ <<if getSlave($AS).scar["left cheek"]>> $He has <<= App.Desc.expandScarString(getSlave($AS), "left cheek")>> on $his left cheek. <div class="choices"> - [[Remove all scars there|Surgery Degradation][delete getSlave($AS).scar["left cheek"], cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),5), $surgeryType = "scarRemov"]] + [[Remove all scars there|Surgery Degradation][delete getSlave($AS).scar["left cheek"], cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),5), $surgeryType = "scarRemove"]] </div> <<else>> $His face is unscarred. diff --git a/src/facilities/surgery/remoteSurgeryPassage.js b/src/facilities/surgery/remoteSurgeryPassage.js index 2e7ceeb792a..33988b80481 100644 --- a/src/facilities/surgery/remoteSurgeryPassage.js +++ b/src/facilities/surgery/remoteSurgeryPassage.js @@ -6,7 +6,7 @@ App.UI.remoteSurgery = function(slave) { const { His, He, - his, he, him + his, him } = getPronouns(slave); const container = document.createElement("span"); container.append(intro()); @@ -49,6 +49,7 @@ App.UI.remoteSurgery = function(slave) { function hairAndFace() { const el = new DocumentFragment(); const _pubertyAge = Math.min(slave.pubertyAgeXX, slave.pubertyAgeXY); + /** @type {HTMLAnchorElement[]} */ let linkArray; App.Events.drawEventArt(el, slave); @@ -66,7 +67,7 @@ App.UI.remoteSurgery = function(slave) { `Surgically remove ${his} ability to grow hair`, "hair removal", () => { slave.bald = 1; }), - "note"); + "choices"); } } else { App.UI.DOM.appendNewElement("div", el, `${He} is no longer capable of growing hair on ${his} head.`); @@ -83,7 +84,7 @@ App.UI.remoteSurgery = function(slave) { `Surgically remove ${his} ability to grow eyebrows`, "eyebrow removal", ), - "note"); + "choices"); } } else { App.UI.DOM.appendNewElement("div", el, `${He} is no longer capable of growing eyebrow hair.`); @@ -128,6 +129,7 @@ App.UI.remoteSurgery = function(slave) { const _artificiality = 25 - (5 * Math.trunc(V.PC.skill.medicine / 50)) - (5 * V.surgeryUpgrade); r = []; r.push(`${His} ${slave.faceShape} face is`); + const faceDiv = App.UI.DOM.appendNewElement("div", el); if (slave.face < -95) { r.push(`very ugly.`); } else if (slave.face < -40) { @@ -151,7 +153,7 @@ App.UI.remoteSurgery = function(slave) { } else if (slave.faceImplant > 30) { r.push(`It has been totally reworked.`); } - App.Events.addNode(el, r, "div"); + App.Events.addNode(faceDiv, r, "div"); if (slave.indentureRestrictions > 1) { App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]); @@ -159,19 +161,14 @@ App.UI.remoteSurgery = function(slave) { App.UI.DOM.appendNewElement("div", el, `${His} face cannot sustain further cosmetic surgery`, ["choices", "note"]); } else { linkArray = []; - linkArray.push(makeLink( - `Surgically remove ${his} ability to grow eyebrows`, - "eyebrow removal", - )); - if (slave.faceShape !== "normal") { linkArray.push(makeLink( `Make conventionally feminine`, "face", () => { slave.faceShape = "normal"; - slave.faceImplant = Math.clamp(slave.faceImplant + _artificiality, 0, 100) - surgeryDamage(slave, 10) + slave.faceImplant = Math.clamp(slave.faceImplant + _artificiality, 0, 100); + surgeryDamage(slave, 10); } )); } @@ -249,7 +246,7 @@ App.UI.remoteSurgery = function(slave) { surgeryDamage(slave, 10); } )); - const links = App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices") + App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); r = []; r.push(`Facial surgery can either rework it and improve its attractiveness, or simply make it more attractive. No facial surgery is perfect and each surgery will make it look less natural.`); if (V.PC.skill.medicine >= 100 && V.surgeryUpgrade) { @@ -270,27 +267,9 @@ App.UI.remoteSurgery = function(slave) { } else { r.push(`A single facial surgery is not projected to significantly impact artificiality.`); } - App.Events.addNode(el, r, "span", "note"); - } - - - if (slave.eyebrowHStyle !== "bald") { - App.UI.DOM.appendNewElement("div", el, `${He} has ${slave.origHColor} eyebrows.`); - if (slave.indentureRestrictions > 1) { - App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]); - } else { - App.UI.DOM.appendNewElement("div", el, - makeLink( - `Surgically remove ${his} ability to grow eyebrows`, - "eyebrow removal", - ), - "note"); - } - } else { - App.UI.DOM.appendNewElement("div", el, `${He} is no longer capable of growing eyebrow hair.`); + App.Events.addNode(faceDiv, r, "span", "note"); } - if (slave.indentureRestrictions < 2 && slave.faceImplant <= 95) { if (slave.ageImplant > 1) { App.UI.DOM.appendNewElement("div", el, `${He}'s had a multiple facelifts and other cosmetic procedures in an effort to preserve ${his} youth.`); @@ -307,18 +286,11 @@ App.UI.remoteSurgery = function(slave) { surgeryDamage(slave, 10); } ), "choices"); - } } - /*Eyes*/ - //<div> - r.push(`${He} has ${App.Desc.eyesType(slave)}`); - if (hasAnyEyes(slave)) { - r.push(`, they are ${App.Desc.eyesVision(slave)}`); - } - r.push(`.`); - //<div class="choices"> + /* Eyes*/ + App.UI.DOM.appendNewElement("div", el, `${He} has ${App.Desc.eyesType(slave)}${(hasAnyEyes(slave)) ? `, they are ${App.Desc.eyesVision(slave)}`:``}.`); /* eye blur and fix */ if (hasAnyEyes(slave)) { /* Blur eyes*/ @@ -348,7 +320,7 @@ App.UI.remoteSurgery = function(slave) { } if (linkArray.length === 2) { linkArray.push(makeLink( - "Blur both eye", + "Blur both eyes", "eyeBlur", () => { eyeSurgery(slave, "both", "blur"); @@ -465,7 +437,7 @@ App.UI.remoteSurgery = function(slave) { App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); /* implant */ if (isProstheticAvailable(slave, "ocular")) { - //<div> + // <div> linkArray = []; if (!hasLeftEye(slave)) { linkArray.push(makeLink( @@ -503,10 +475,10 @@ App.UI.remoteSurgery = function(slave) { } - /*Regular Ears*/ - //<div> + /* Regular Ears*/ + // <div> r = []; - linkArray = [] + linkArray = []; r.push(`${He} has`); if (slave.earShape === "normal") { r.push(`normal ears.`); @@ -531,8 +503,8 @@ App.UI.remoteSurgery = function(slave) { } else { r.push(`bugged ears. You done goofed. <span class="note">Report This//</span>`); } + App.Events.addNode(el, r, "div"); - //<div class="choices"> if (slave.indentureRestrictions >= 2) { App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]); } else { @@ -559,7 +531,7 @@ App.UI.remoteSurgery = function(slave) { )); } if (slave.earShape === "none") { - //TODO: remove this BC code + // TODO: remove this BC code if (slave.hears !== -2 && slave.earImplant !== 1) { slave.hears = -1; } @@ -600,7 +572,7 @@ App.UI.remoteSurgery = function(slave) { } App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); - /*Top Ears*/ + /* Top Ears*/ r = []; linkArray = []; r.push(`${He} has`); @@ -630,7 +602,7 @@ App.UI.remoteSurgery = function(slave) { r.push(`You done goofed.`); r.push(`<span class="note">Report This</span>`); } - + App.Events.addNode(el, r, "div"); if (slave.indentureRestrictions >= 2) { App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]); } else { @@ -639,7 +611,7 @@ App.UI.remoteSurgery = function(slave) { "Remove them", "earGone", () => { - slave.earT = "none" + slave.earT = "none"; surgeryDamage(slave, 20); } )); @@ -649,7 +621,7 @@ App.UI.remoteSurgery = function(slave) { "Reshape into cat Ears", "earMajor", () => { - slave.earT = "neko" + slave.earT = "neko"; surgeryDamage(slave, 10); } )); @@ -659,7 +631,7 @@ App.UI.remoteSurgery = function(slave) { "Reshape into dog Ears", "earMajor", () => { - slave.earT = "inu" + slave.earT = "inu"; surgeryDamage(slave, 10); } )); @@ -669,7 +641,7 @@ App.UI.remoteSurgery = function(slave) { "Reshape into fox Ears", "earMajor", () => { - slave.earT = "kit" + slave.earT = "kit"; surgeryDamage(slave, 10); } )); @@ -679,7 +651,7 @@ App.UI.remoteSurgery = function(slave) { "Reshape into tanuki Ears", "earMajor", () => { - slave.earT = "tanuki" + slave.earT = "tanuki"; surgeryDamage(slave, 10); } )); @@ -689,7 +661,7 @@ App.UI.remoteSurgery = function(slave) { "Reshape into rabbit Ears", "earMajor", () => { - slave.earT = "usagi" + slave.earT = "usagi"; surgeryDamage(slave, 10); } )); @@ -700,7 +672,7 @@ App.UI.remoteSurgery = function(slave) { "Implant hair mimicking fibers", "earMinor", () => { - slave.earTColor = slave.hColor + slave.earTColor = slave.hColor; surgeryDamage(slave, 10); } )); @@ -710,7 +682,7 @@ App.UI.remoteSurgery = function(slave) { "Remove them", "earMinor", () => { - slave.earTColor = "hairless" + slave.earTColor = "hairless"; surgeryDamage(slave, 10); } )); @@ -718,7 +690,7 @@ App.UI.remoteSurgery = function(slave) { App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); } - /*Hearing*/ + /* Hearing*/ r = []; if (slave.earImplant === 1) { r.push(`${He} has cochlear implants.`); @@ -738,7 +710,7 @@ App.UI.remoteSurgery = function(slave) { } App.Events.addNode(el, r, "div"); - //<div class="choices"> + linkArray = []; if (slave.earImplant !== 1) { if (slave.hears === -1) { if (slave.earImplant !== 1 && slave.earShape !== "none") { @@ -791,9 +763,8 @@ App.UI.remoteSurgery = function(slave) { } App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); - /*Horns*/ - //<div> - r = [] + /* Horns*/ + r = []; r.push(`${He} has`); if (slave.horn === "none") { r.push(`no horns.`); @@ -801,7 +772,7 @@ App.UI.remoteSurgery = function(slave) { r.push(`${slave.horn}.`); } App.Events.addNode(el, r, "div"); - //<div class="choices"> + if (slave.indentureRestrictions >= 2) { App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]); } else if (slave.horn === "none") { @@ -812,7 +783,7 @@ App.UI.remoteSurgery = function(slave) { "horn", () => { slave.horn = "curved succubus horns"; - slave.hornColor = "jet black" + slave.hornColor = "jet black"; surgeryDamage(slave, 10); } )); @@ -823,7 +794,7 @@ App.UI.remoteSurgery = function(slave) { "horn", () => { slave.horn = "backswept horns"; - slave.hornColor = "jet black" + slave.hornColor = "jet black"; surgeryDamage(slave, 10); } )); @@ -834,7 +805,7 @@ App.UI.remoteSurgery = function(slave) { "horn", () => { slave.horn = "cow horns"; - slave.hornColor = "ivory" + slave.hornColor = "ivory"; surgeryDamage(slave, 10); } )); @@ -877,7 +848,7 @@ App.UI.remoteSurgery = function(slave) { "Remove them", "hornGone", () => { - surgeryAmp(slave, "horn") + surgeryAmp(slave, "horn"); } )); } else { @@ -885,13 +856,13 @@ App.UI.remoteSurgery = function(slave) { "Remove it", "hornGone", () => { - surgeryAmp(slave, "horn") + surgeryAmp(slave, "horn"); } )); } App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); - /*Lips*/ + /* Lips*/ r = []; linkArray = []; r.push(`${He} has`); @@ -908,15 +879,14 @@ App.UI.remoteSurgery = function(slave) { } else { r.push(`a facepussy: ${his} lips are so huge that they're always a bit parted in the middle, forming a moist, inviting hole for cock.`); } - if (slave.lipsImplant === 0) { - } else if (slave.lipsImplant <= 10) { - r.push(`${He} has moderate lip implants.`); - } else if (slave.lipsImplant <= 20) { + if (slave.lipsImplant > 20) { + r.push(`${He} has enormous lip implants.`); + } else if (slave.lipsImplant > 10) { r.push(`${He} has large lip implants.`); } else { - r.push(`${He} has enormous lip implants.`); + r.push(`${He} has moderate lip implants.`); } - r.push(App.UI.DOM.makeElement("span", `Installing implants will reduce ${his} oral skills`, "note")) + r.push(App.UI.DOM.makeElement("span", `Installing implants will reduce ${his} oral skills`, "note")); App.Events.addNode(el, r, "div"); if (slave.indentureRestrictions >= 2) { @@ -928,7 +898,7 @@ App.UI.remoteSurgery = function(slave) { "lips", () => { slave.lipsImplant += 20; - slave.lips += 20 + slave.lips += 20; surgeryDamage(slave, 10); } )); @@ -938,7 +908,7 @@ App.UI.remoteSurgery = function(slave) { "lips", () => { slave.lipsImplant = 20; - slave.lips += 20 + slave.lips += 20; surgeryDamage(slave, 10); } )); @@ -950,7 +920,7 @@ App.UI.remoteSurgery = function(slave) { "Remove lip implants", "lips", () => { - surgeryAmp(slave, "lips") + surgeryAmp(slave, "lips"); } )); } @@ -962,16 +932,16 @@ App.UI.remoteSurgery = function(slave) { "lips", () => { slave.lips -= 10; - surgeryDamage(slave, 10);; + surgeryDamage(slave, 10); } )); } } + App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); - /*Teeth*/ + /* Teeth*/ r = []; linkArray = []; - const someNaturalteeth = new Set(["normal", "crooked", "gapped", "straightening braces", "cosmetic braces", "baby"]) switch (slave.teeth) { case "crooked": r.push(`${He} has crooked teeth.`); @@ -979,30 +949,12 @@ App.UI.remoteSurgery = function(slave) { "Apply braces", "braces", () => { - slave.teeth = "straightening braces" + slave.teeth = "straightening braces"; } )); - if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { - linkArray.push(makeLink( - "Replace them with removable prosthetics", - "teeth", - () => { - slave.teeth = "removable"; - surgeryDamage(slave, 20) - } - )); - linkArray.push(makeLink( - "Replace them with sharp teeth", - "teeth", - () => { - slave.teeth = "pointy"; - surgeryDamage(slave, 20) - } - )); - } + break; case "gapped": r.push(`${He} has a noticeable gap in ${his} front teeth.`); - //<div class="choices"> linkArray.push(makeLink( "Apply braces", "braces", @@ -1010,27 +962,9 @@ App.UI.remoteSurgery = function(slave) { slave.teeth = "straightening braces"; } )); - if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { - linkArray.push(makeLink( - "Replace them with removable prosthetics", - "teeth", - () => { - slave.teeth = "removable"; - surgeryDamage(slave, 20); - } - )); - linkArray.push(makeLink( - "Replace them with sharp teeth", - "teeth", - () => { - slave.teeth = "pointy"; - surgeryDamage(slave, 20); - } - )); - } + break; case "straightening braces": r.push(`${His} crooked teeth are in braces.`); - //<div class="choices"> linkArray.push(makeLink( "Remove braces", "teeth", @@ -1038,104 +972,63 @@ App.UI.remoteSurgery = function(slave) { slave.teeth = "crooked"; } )); - - - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { - linkArray.push(makeLink( - "Replace them with removable prosthetics", - "teeth", - () => { - slave.teeth = "removable"; - surgeryDamage(slave, 20); - } - )); - linkArray.push(makeLink( - "Replace them with sharp teeth", - "teeth", - () => { - slave.teeth = "pointy"; - surgeryDamage(slave, 20); - } - )); - } - //</div> + break; case "cosmetic braces": r.push(`${He} has braces on ${his} straight teeth.`); - //<div class="choices"> - [[Remove braces | Remote Surgery][slave.teeth = "normal"]] - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { - linkArray.push(makeLink( - "Replace them with removable prosthetics", - "teeth", - () => { - slave.teeth = "removable"; - surgeryDamage(slave, 20); - } - )); - linkArray.push(makeLink( - "Replace them with sharp teeth", + linkArray.push(makeLink( + "Remove braces", "teeth", () => { - slave.teeth = "pointy"; - surgeryDamage(slave, 20); + slave.teeth = "normal"; } - } - //</div> + )); + break; case "removable": r.push(`${He} has prosthetic teeth that can be removed for extreme oral sex.`); - //<div class="choices"> - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { - linkArray.push(makeLink( - "Replace them with sharp teeth", - "teeth", - () => { - slave.teeth = "pointy"; - surgeryDamage(slave, 20); - } - [[Normal dental implants | Surgery Degradation][slave.teeth = "normal", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "oral"]] - } - //</div> + break; case "pointy": r.push(`${His} teeth have been replaced with sturdy, realistic implants that mimic the dentition of a predator.`); - //<div class="choices"> - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { + if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { linkArray.push(makeLink( - "Replace them with removable prosthetics", - "teeth", + "Normal dental implants", + "oral", () => { - slave.teeth = "removable"; - surgeryDamage(slave, 20); + slave.teeth = "normal"; + surgeryDamage(slave, 10); } )); - | - [[Normal dental implants | Surgery Degradation][slave.teeth = "normal", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "oral"]] } - //</div> + break; case "fangs": r.push(`${His} upper canines have been replaced with sturdy, realistic implants that can only be described as vampiric.`); - //<div class="choices"> - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { - [[Replace them with removable prosthetics | Surgery Degradation][slave.teeth = "removable", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "teeth"]] | - [[Remove a fang | Surgery Degradation][slave.teeth = "fang", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "fang"]] | - [[Normal dental implants | Surgery Degradation][slave.teeth = "normal", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "oral"]] + // <div class="choices"> + if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { + linkArray.push(makeLink( + "Remove a fang", + "fang", + () => { + slave.teeth = "fang"; + surgeryDamage(slave, 20); + } + )); + linkArray.push(makeLink( + "Normal dental implants", + "oral", + () => { + slave.teeth = "normal"; + surgeryDamage(slave, 10); + } + )); } - //</div> + break; + // </div> case "fang": r.push(`A single one of ${his} upper canines has been replaced with a sturdy, realistic implant shaped like a fang.`); if (slave.lips <= 50) { r.push(`It is occasionally visible over ${his} lower lip.`); } - //<div class="choices"> - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { - [[Replace them with removable prosthetics | Surgery Degradation][slave.teeth = "removable", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "teeth"]] | - [[Add another fang | Surgery Degradation][slave.teeth = "fangs", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "fangs"]] | - [[Normal dental implants | Surgery Degradation][slave.teeth = "normal", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "oral"]] - } - //</div> - case "baby": - r.push(`${He} has baby teeth.`); - //<div class="choices"> - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { + // <div class="choices"> + if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { linkArray.push(makeLink( "Replace them with removable prosthetics", "teeth", @@ -1145,41 +1038,97 @@ App.UI.remoteSurgery = function(slave) { } )); linkArray.push(makeLink( - "Replace them with sharp teeth", - "teeth", - () => { - slave.teeth = "pointy"; - surgeryDamage(slave, 20); - } - | - [[Normal dental implants | Surgery Degradation][slave.teeth = "normal", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "oral"]] + "Add another fang", + "fangs", + () => { + slave.teeth = "fangs"; + } + )); + linkArray.push(makeLink( + "Normal dental implants", + "oral", + () => { + slave.teeth = "normal"; + surgeryDamage(slave, 10); + } + )); + } + break; + case "baby": + r.push(`${He} has baby teeth.`); + if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { + linkArray.push(makeLink( + "Normal dental implants", + "oral", + () => { + slave.teeth = "normal"; + surgeryDamage(slave, 10); + } + )); } - //</div> + break; case "mixed": r.push(`${He} has a mix of baby and normal teeth.`); - //<div class="choices"> - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { - [[Replace them with removable prosthetics | Surgery Degradation][slave.teeth = "removable", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "teeth"]] | - [[Replace them with sharp teeth | Surgery Degradation][slave.teeth = "pointy", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "sharp"]] | - [[Normal dental implants | Surgery Degradation][slave.teeth = "normal", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "oral"]] - } - //</div> + break; default: r.push(`${He} has normal, healthy teeth.`); - //<div class="choices"> - [[Unnecessary braces | Surgery Degradation][slave.teeth = "cosmetic braces", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), V.surgeryType = "braces"]] - if (V.seeExtreme === 1) && (slave.indentureRestrictions < 1) { - | [[Replace them with removable prosthetics | Surgery Degradation][slave.teeth = "removable", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "teeth"]] | - [[Replace them with sharp teeth | Surgery Degradation][slave.teeth = "pointy", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "sharp"]] | - [[Replace them with fangs | Surgery Degradation][slave.teeth = "fangs", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "fangs"]] | - [[Add a fang | Surgery Degradation][slave.teeth = "fang", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "fang"]] | + linkArray.push(makeLink( + "Unnecessary braces", + "teeth", + () => { + slave.teeth = "cosmetic braces"; + } + )); + if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { + linkArray.push(makeLink( + "Add a fang", + "fang", + () => { + slave.teeth = "fang"; } - //</div> + )); + } + } + if (V.seeExtreme === 1 && slave.indentureRestrictions < 1) { + if (slave.teeth !== "removable") { + linkArray.push(makeLink( + "Replace them with removable prosthetics", + "teeth", + () => { + slave.teeth = "removable"; + surgeryDamage(slave, 20); + } + )); + } + + if (slave.teeth !== "pointy") { + linkArray.push(makeLink( + "Replace them with sharp teeth", + "sharp", + () => { + slave.teeth = "pointy"; + surgeryDamage(slave, 20); + } + )); + } + + if (slave.teeth !== "fangs" && slave.teeth !== "fang") { + linkArray.push(makeLink( + "Replace them with fangs", + "fangs", + () => { + slave.teeth = "fangs"; + surgeryDamage(slave, 20); + } + )); + } } - //</div> + App.Events.addNode(el, r, "div"); + App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); - /*Voice*/ - //<div> + /* Voice*/ + // <div> + r = []; if (slave.electrolarynx === 1) { r.push(`${He} has an artificial larynx.`); } else { @@ -1198,30 +1147,55 @@ App.UI.remoteSurgery = function(slave) { r.push(`${He} has had surgery on ${his} voice box to lower ${his} voice.`); } } - if (slave.indentureRestrictions < 1) && (slave.electrolarynx !== 1) { - //<div class="choices"> + App.Events.addNode(el, r, "div"); + if (slave.indentureRestrictions < 1 && slave.electrolarynx !== 1) { + linkArray = []; if (slave.voice !== 0) { if (slave.voice < 3) { - [[Perform surgery to raise voice | Surgery Degradation][slave.voice += 1, slave.voiceImplant += 1, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "voice"]] - } - if (slave.voice === 2) { - | + linkArray.push(makeLink( + "Perform surgery to raise voice", + "voice", + () => { + slave.voice += 1; + surgeryDamage(slave, 10); } + )); + } if (slave.voice > 1) { - [[Perform surgery to lower voice | Surgery Degradation][slave.voice -= 1, slave.voiceImplant -= 1, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "voice2"]] + linkArray.push(makeLink( + "Perform surgery to lower voice", + "voice2", + () => { + slave.voice -= 1; + surgeryDamage(slave, 10); + } + )); } if (V.seeExtreme === 1) { - | [[Remove vocal cords | Surgery Degradation][surgeryAmp(slave, "voicebox"), V.surgeryType = "mute", cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave)]] + linkArray.push(makeLink( + "Remove vocal cords", + "mute", + () => { + surgeryAmp(slave, "voicebox"); + } + )); } } else if (isProstheticAvailable(slave, "electrolarynx")) { - [["Give " + ${ him } + " an electrolarynx" | Surgery Degradation][slave.electrolarynx = 1, slave.voice = 2, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 20), V.surgeryType = "electrolarynx"]] + linkArray.push(makeLink( + `Give ${him} an electrolarynx`, + "electrolarynx", + () => { + slave.electrolarynx = 1; + slave.voice = 2; + surgeryDamage(slave, 20); + } + )); } - //</div> + App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); } - //</div> - /*Smell*/ - //<div> + /* Smell*/ + r = []; if (slave.smells === 0 && slave.tastes === 0) { r.push(`${He} has a working chemosensory system.`); } else if (slave.smells === 0) { @@ -1232,47 +1206,116 @@ App.UI.remoteSurgery = function(slave) { r.push(`${He} has an impaired chemosensory system.`); } if (slave.indentureRestrictions < 1) { - //<div class="choices"> - if (slave.smells === 0) && (V.seeExtreme === 1) { - [[Remove sense of smell | Surgery Degradation][slave.smells = -1, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "desmell"]] + // <div class="choices"> + if (slave.smells === 0 && V.seeExtreme === 1) { + linkArray.push(makeLink( + "Remove sense of smell", + "desmell", + () => { + slave.smells = -1; + surgeryDamage(slave, 10); + } + )); } else if (slave.smells === -1) { - | [[Repair sense of smell | Surgery Degradation][slave.smells = 0, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "resmell"]] + linkArray.push(makeLink( + "Repair sense of smell", + "resmell", + () => { + slave.smells = 0; + surgeryDamage(slave, 10); + } + )); } - if (slave.tastes === 0) && (V.seeExtreme === 1) { - | [[Remove sense of taste | Surgery Degradation][slave.tastes = -1, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "detaste"]] + if (slave.tastes === 0 && V.seeExtreme === 1) { + linkArray.push(makeLink( + "Remove sense of taste", + "detaste", + () => { + slave.smells = -1; + surgeryDamage(slave, 10); + } + )); } else if (slave.tastes === -1) { - | [[Repair sense of taste | Surgery Degradation][slave.tastes = 0, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 10), V.surgeryType = "retaste"]] + linkArray.push(makeLink( + "Repair sense of taste", + "retaste", + () => { + slave.smells = 0; + surgeryDamage(slave, 10); + } + )); } - //</div> } - //</div> - /*Scars*/ - //<div> + /* Scars*/ + r = []; + linkArray = []; if (slave.scar["left cheek"]) { - r.push(`${He} has `); - V.App.Desc.expandScarString(slave, "left cheek") - r.push(` on ${his} left cheek.`); - //<div class="choices"> - [[Remove all scars there | Surgery Degradation][delete slave.scar["left cheek"], cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 5), V.surgeryType = "scarRemov"]] - //</div> + r.push(`${He} has ${App.Desc.expandScarString(slave, "left cheek")} on ${his} left cheek.`); + linkArray.push(makeLink( + "Remove all scars there", + "scarRemove", + () => { + delete slave.scar["left cheek"]; + surgeryDamage(slave, 5); + } + )); } else { r.push(`${His} face is unscarred.`); - //<div class="choices"> if (slave.indentureRestrictions > 1) { - //<span class="note">${His} indenture forbids elective surgery//</span> + App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]); } else { - [[Give a menacing scar | Surgery Degradation][App.Medicine.Modification.addScar(slave, "left cheek", "menacing"), cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 5), V.surgeryType = "scarFear"]] | - [[Give an exotic scar | Surgery Degradation][App.Medicine.Modification.addScar(slave, "left cheek", "exotic"), cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave), surgeryDamage(slave, 5), V.surgeryType = "scarExo"]] + linkArray.push(makeLink( + "Give a menacing scar", + "scarFear", + () => { + App.Medicine.Modification.addScar(slave, "left cheek", "menacing"); + surgeryDamage(slave, 5); + } + )); + linkArray.push(makeLink( + "Give a exotic scar", + "scarExo", + () => { + App.Medicine.Modification.addScar(slave, "left cheek", "exotic"); + surgeryDamage(slave, 5); + } + )); } - //</div> } - //</div> - //</div> return el; } - function capacity() { + function upper() { + const el = new DocumentFragment(); + let r = []; + + App.Events.addNode(el, r, "div"); + return el; + } + + function lower() { + const el = new DocumentFragment(); + let r = []; + + App.Events.addNode(el, r, "div"); + return el; + } + function race() { + const el = new DocumentFragment(); + let r = []; + + App.Events.addNode(el, r, "div"); + return el; + } + function structural() { + const el = new DocumentFragment(); + let r = []; + + App.Events.addNode(el, r, "div"); + return el; + } + function extremeSurgery() { const el = new DocumentFragment(); let r = []; @@ -1360,8 +1403,6 @@ App.UI.remoteSurgery = function(slave) { el.append(tabBar); - App.Events.drawEventArt(el, slave); - el.append(tabContents); return el; diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw index 4ee418c8de4..e8a66c8f58f 100644 --- a/src/uncategorized/surgeryDegradation.tw +++ b/src/uncategorized/surgeryDegradation.tw @@ -1013,7 +1013,7 @@ As the remote surgery's long recovery cycle completes, <<case "endejac">> $His groin is a little sore, and $he examines it closely, but $he can't find much difference other than the swelling in $his crotch has gone down. $He'll realize later when $his next ejaculation is rather underwhelming from what $he has become accustomed to. As with all surgery @@.health.dec;$his health has been slightly affected.@@ -<<case "scarRemov">> +<<case "scarRemove">> Even though removing scars is a trivial process, @@.health.dec;$his health has been slightly affected.@@ <<if getSlave($AS).fetish != "mindbroken" && getSlave($AS).fuckdoll == 0>> When $he exits the room, $he feels that most of $his skin is numb, and $he is @@.hotpink;happy@@ when $he finds $his scars have been removed. -- GitLab