diff --git a/src/005-passages/facilitiesPassages.js b/src/005-passages/facilitiesPassages.js index 7cc3640ea05ce90f289661635ec2bcd189f755c3..d111733c1d5b89dd4af44a8c6951b9eacf8efe32 100644 --- a/src/005-passages/facilitiesPassages.js +++ b/src/005-passages/facilitiesPassages.js @@ -40,18 +40,144 @@ new App.DomPassage("Agent Select", V.nextLink = "Neighbor Interact"; V.encyclopedia = "Agents"; - const f = document.createDocumentFragment(); - App.UI.DOM.appendNewElement("h2", f, "Appoint an Agent from your devoted slaves"); + return App.Facilities.AgentSelect(); + }, ["jump-from-safe"] +); - f.append(App.UI.SlaveList.slaveSelectionList( - s => App.Entity.facilities.arcologyAgent.manager.checkRequirements(s), - (slave) => App.UI.DOM.passageLink(SlaveFullName(slave), "Agent Workaround", - () => { V.i = V.slaves.findIndex((s) => s.ID === slave.ID); }), - s => App.Entity.facilities.arcologyAgent.manager.slaveHasExperience(s) - )); +new App.DomPassage("Attendant Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Spa"; + V.encyclopedia = "Attendant"; - return f; - }, ["jump-from-safe"] + return App.Facilities.AttendantSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("BG Select", + () => { + V.nextButton = "Back to Main"; + V.nextLink = "Main"; + V.encyclopedia = "Bodyguard"; + + return App.Facilities.BGSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Concubine Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Master Suite"; + V.encyclopedia = "Concubine"; + + return App.Facilities.ConcubineSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("DJ Select", + () => { + return App.Facilities.DJSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("HG Select", + () => { + V.nextButton = "Back to Main"; + V.nextLink = "Main"; + V.encyclopedia = "Head Girl"; + + return App.Facilities.HGSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Madam Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Brothel"; + V.encyclopedia = "Madam"; + + return App.Facilities.MadamSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Milkmaid Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Dairy"; + V.encyclopedia = "Milkmaid"; + + return App.Facilities.MilkmaidSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Nurse Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Clinic"; + V.encyclopedia = "Nurse"; + + return App.Facilities.NurseSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Recruiter Select", + () => { + V.nextButton = "Back to Main"; + V.nextLink = "Main"; + V.encyclopedia = "Recruiter"; + + return App.Facilities.RecruiterSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Schoolteacher Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Schoolroom"; + V.encyclopedia = "Schoolteacher"; + + return App.Facilities.SchoolTeacherSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Stewardess Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Servants' Quarters"; + V.encyclopedia = "Stewardess"; + + return App.Facilities.StewardessSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Wardeness Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Cellblock"; + V.encyclopedia = "Wardeness"; + + return App.Facilities.WardenessSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Farmer Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Farmyard"; + V.encyclopedia = "Farmer"; + + return App.Facilities.FarmerSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] +); + +new App.DomPassage("Matron Select", + () => { + V.nextButton = "Back"; + V.nextLink = "Nursery"; + V.encyclopedia = "Matron"; + + return App.Facilities.MatronSelect(); + }, ["jump-to-safe", "jump-hidden", "jump-from-safe"] ); new App.DomPassage("Rules Assistant", diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index 2c5745850af6ed89473dd911639d797bf9185eb7..96c0dfc96fac4d83624b144ffc0421d3da2c8caa 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -183,7 +183,7 @@ App.EndWeek.slaveAssignmentReport = function() { App.EndWeek.saVars.HGEnergy = 0; } if (canAchieveErection(slave)) { - App.EndWeek.saVars.HGCum = 2 + Math.trunc((slave.balls / 5) + (slave.energy / 95) + (slave.health.condition / 95) + (slave.devotion / 95) + (V.reproductionFormula * 5)); + App.EndWeek.saVars.HGCum = resetHGCum(slave); } } diff --git a/src/facilities/AgentSelect.js b/src/facilities/AgentSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..1d67d8d8eb6bbc73eefac04b76f477fc2b781d48 --- /dev/null +++ b/src/facilities/AgentSelect.js @@ -0,0 +1,12 @@ +App.Facilities.AgentSelect = function() { + const f = document.createDocumentFragment(); + + App.UI.DOM.appendNewElement("h2", f, "Appoint an Agent from your devoted slaves"); + f.append(App.UI.SlaveList.slaveSelectionList( + s => App.Entity.facilities.arcologyAgent.manager.checkRequirements(s), + (slave) => App.UI.DOM.passageLink(SlaveFullName(slave), "Agent Workaround", + () => { V.i = V.slaves.findIndex((s) => s.ID === slave.ID); }), + s => App.Entity.facilities.arcologyAgent.manager.slaveHasExperience(s) + )); + return f; +}; diff --git a/src/facilities/armory/BGSelect.js b/src/facilities/armory/BGSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..1a8115b75bea69454251bc416b1a42d3324dabca --- /dev/null +++ b/src/facilities/armory/BGSelect.js @@ -0,0 +1,21 @@ +App.Facilities.BGSelect = function() { + let div = document.createElement("div"); + const f = document.createDocumentFragment(); + + if (S.Bodyguard) { + f.append(`${SlaveFullName(S.Bodyguard)} is working as your Bodyguard, remaining close to you at all times and guards your person. `); + f.append(App.UI.DOM.link("Remove Bodyguard", () => { + removeJob(S.Bodyguard, Job.BODYGUARD); + }, + [], "Main" + )); + } else { + f.append(`No Bodyguard assigned, appoint one from your devoted slaves.`); + } + + div.append(App.UI.DOM.makeCheckbox("bodyguardTrains"), " Can train potential successors."); + f.append(div); + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.armory, "Main")); + return f; +}; diff --git a/src/facilities/brothel/MadamSelect.js b/src/facilities/brothel/MadamSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..1d883bcb9495f1943971b38445b0af1c370e8d01 --- /dev/null +++ b/src/facilities/brothel/MadamSelect.js @@ -0,0 +1,17 @@ +App.Facilities.MadamSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Madam) { + f.append(`Madam: ${SlaveFullName(S.Madam)}, manages the brothel. `); + f.append(App.UI.DOM.link("Remove Madam", () => { + removeJob(S.Madam, Job.MADAM); + }, + [], "Brothel" + )); + } else { + f.append(`No Madam assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.brothel, "Brothel")); + return f; +}; diff --git a/src/facilities/cellblock/WardenessSelect.js b/src/facilities/cellblock/WardenessSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..ab9b749520f639806bb2db72f841b5958d28ba8e --- /dev/null +++ b/src/facilities/cellblock/WardenessSelect.js @@ -0,0 +1,17 @@ +App.Facilities.WardenessSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Wardeness) { + f.append(`Wardeness: ${SlaveFullName(S.Wardeness)}, helps breaking your prisoners. `); + f.append(App.UI.DOM.link("Remove Wardeness", () => { + removeJob(S.Wardeness, Job.WARDENESS); + }, + [], "Cellblock" + )); + } else { + f.append(`No Wardeness assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.cellblock, "Cellblock")); + return f; +}; diff --git a/src/facilities/clinic/NurseSelect.js b/src/facilities/clinic/NurseSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..b63ebff3cbeab4653a8ef2e22cb9e88bef1b0901 --- /dev/null +++ b/src/facilities/clinic/NurseSelect.js @@ -0,0 +1,17 @@ +App.Facilities.NurseSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Nurse) { + f.append(`${SlaveFullName(S.Nurse)} is working as your Nurse, helping to heal your slaves. `); + f.append(App.UI.DOM.link("Remove Nurse", () => { + removeJob(S.Nurse, Job.NURSE); + }, + [], "Clinic" + )); + } else { + f.append(`No Nurse assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.clinic, "Clinic")); + return f; +}; diff --git a/src/facilities/club/DJSelect.js b/src/facilities/club/DJSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..0c9709074305f1a13092b2543b5366d85db82500 --- /dev/null +++ b/src/facilities/club/DJSelect.js @@ -0,0 +1,20 @@ +App.Facilities.DJSelect = function() { + const f = document.createDocumentFragment(); + V.nextButton = "Back"; + V.nextLink = "Club"; + V.encyclopedia = "DJ"; + + if (S.DJ) { + f.append(`${SlaveFullName(S.DJ)} is working as your DJ, managing entertainment in ${V.clubName}. `); + f.append(App.UI.DOM.link("Remove DJ", () => { + removeJob(S.Concubine, Job.DJ); + }, + [], "Club" + )); + } else { + f.append(`No DJ assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.club, "Club")); + return f; +}; diff --git a/src/facilities/dairy/MilkmaidSelect.js b/src/facilities/dairy/MilkmaidSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..71d0137889fecd798c6cbb54bc5c51b4c76a1903 --- /dev/null +++ b/src/facilities/dairy/MilkmaidSelect.js @@ -0,0 +1,17 @@ +App.Facilities.MilkmaidSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Milkmaid) { + f.append(`${SlaveFullName(S.Milkmaid)} is working as your Milkmaid, looking after your livestock, helping them give milk${V.seeDicks > 0 ? ' and semen' : ''}. `); + f.append(App.UI.DOM.link("Remove Milkmaid", () => { + removeJob(S.Milkmaid, Job.MILKMAID); + }, + [], "Dairy" + )); + } else { + f.append(`No Milkmaid assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.dairy, "Dairy")); + return f; +}; diff --git a/src/facilities/farmyard/FarmerSelect.js b/src/facilities/farmyard/FarmerSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..12e8db3a450746bf8da2218017394d32e94c86c9 --- /dev/null +++ b/src/facilities/farmyard/FarmerSelect.js @@ -0,0 +1,17 @@ +App.Facilities.FarmerSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Farmer) { + f.append(`Farmer: ${SlaveFullName(S.Farmer)}, tends to your crops and animals. `); + f.append(App.UI.DOM.link("Remove Farmer", () => { + removeJob(S.Farmer, Job.FARMER); + }, + [], "Farmyard" + )); + } else { + f.append(`No Farmer assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.farmyard, "Farmyard")); + return f; +}; diff --git a/src/facilities/farmyard/farmerSelect.tw b/src/facilities/farmyard/farmerSelect.tw deleted file mode 100644 index dfaadbb1a96df02ad478825766207ce21efd0ea8..0000000000000000000000000000000000000000 --- a/src/facilities/farmyard/farmerSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Farmer Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Farmyard", $encyclopedia = "Farmer">> -<<if ($FarmerID != 0)>> - <<setLocalPronouns _S.Farmer>> - <span class='slave-name'><<= SlaveFullName(_S.Farmer)>></span> is serving as your Farmer.<br><br>$He will tend to your crops and animals. -<<else>> - You have not selected a Farmer. -<</if>> - -<br><br>''Appoint a Farmer from your obedient slaves:'' -<br><br>[[None|Farmyard][removeJob(_S.Farmer, Job.FARMER)]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.farmyard, "Farmyard")>> diff --git a/src/facilities/masterSuite/ConcubineSelect.js b/src/facilities/masterSuite/ConcubineSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..289eeb32199ebf51d64f3d3ab8f11681c1a0c424 --- /dev/null +++ b/src/facilities/masterSuite/ConcubineSelect.js @@ -0,0 +1,17 @@ +App.Facilities.ConcubineSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Concubine) { + f.append(`${SlaveFullName(S.Concubine)} is your Concubine, taking the lead in seeing to your pleasure. `); + f.append(App.UI.DOM.link("Remove Concubine", () => { + removeJob(S.Concubine, Job.CONCUBINE); + }, + [], "Master Suite" + )); + } else { + f.append(`No Concubine assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.masterSuite, "Master Suite")); + return f; +}; diff --git a/src/facilities/nursery/MatronSelect.js b/src/facilities/nursery/MatronSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..b67973ca9eaed2e25adadda46e11dfdb0aff50f6 --- /dev/null +++ b/src/facilities/nursery/MatronSelect.js @@ -0,0 +1,17 @@ +App.Facilities.MatronSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Matron) { + f.append(`${SlaveFullName(S.Matron)} is working as your Matron, managing the nursery. `); + f.append(App.UI.DOM.link("Remove Matron", () => { + removeJob(S.Matron, Job.MATRON); + }, + [], "Nursery" + )); + } else { + f.append(`No Matron assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.nursery, "Nursery")); + return f; +}; diff --git a/src/facilities/nursery/matronSelect.tw b/src/facilities/nursery/matronSelect.tw deleted file mode 100644 index 1f00599be61f945e66b825c517dc574407accc5f..0000000000000000000000000000000000000000 --- a/src/facilities/nursery/matronSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Matron Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Nursery", $encyclopedia = "Matron">> -<<if ($MatronID != 0)>> - <<setLocalPronouns _S.Matron>> - <span class='slave-name'><<= SlaveFullName(_S.Matron)>></span> is serving as your Matron.<br><br>$He will manage the nursery. -<<else>> - You have not selected a Matron. -<</if>> - -<br><br>''Appoint a Matron from your devoted slaves:'' -<br><br>[[None|Nursery][removeJob(_S.Matron, Job.MATRON)]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.nursery, "Nursery")>> diff --git a/src/facilities/penthouse/HGSelect.js b/src/facilities/penthouse/HGSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..27b993c23689b74529f269f7ef14bae69ad192e2 --- /dev/null +++ b/src/facilities/penthouse/HGSelect.js @@ -0,0 +1,218 @@ +App.Facilities.HGSelect = function() { + let HGName = "Your Head Girl"; + let div = document.createElement("div"); + const f = document.createDocumentFragment(); + let r = []; + let links = []; + + if (S.HeadGirl) { + const { + His, He, he, + his, him, himself + } = getPronouns(S.HeadGirl); + HGName = SlaveFullName(S.HeadGirl); + } + + App.UI.DOM.appendNewElement("h1", f, "Head Girl Management"); + + if (S.HeadGirl) { + f.append(`${SlaveFullName(S.HeadGirl)} is working as your HeadGirl. `); + if (V.arcologies[0].FSEgyptianRevivalistLaw === 1) { + f.append(`${He} is also your Consort; serving and providing comfort, in addition to performing normal Head Girl duties. `); + } + if (V.HGSuite) { + f.append(`Currently living in ${capFirstChar(V.HGSuiteName)} `); + } + f.append(App.UI.DOM.link("Remove HeadGirl", () => { + removeJob(S.HeadGirl, Job.HEADGIRL); + }, + [], "Main" + )); + } else { + f.append(`No HeadGirl assigned, appoint one from your devoted slaves.`); + } + + App.UI.DOM.appendNewElement("div", f, `Slave training ${HGName} will prioritize enabled items in the following order`, "bold"); + + div.append(App.UI.DOM.makeCheckbox("headGirlTrainsHealth"), " Health"); + App.UI.DOM.appendNewElement("div", f, div, "indent"); + + div = document.createElement("div"); + div.append(App.UI.DOM.makeCheckbox("headGirlTrainsParaphilias"), " Paraphilias"); + App.UI.DOM.appendNewElement("div", f, div, "indent"); + + if (V.headGirlTrainsFlaws) { + r.push(`${HGName} will train flaws.`,); + } else if (V.headGirlSoftensFlaws) { + r.push(`${HGName} will softern flaws into quirks.`); + } else if (V.headGirlOverridesQuirks) { + r.push(`${HGName} will override quirks.`); + } + + links.push(App.UI.DOM.link(" Override quirks", () => { + V.headGirlTrainsFlaws = 0; + V.headGirlSoftensFlaws = 0; + V.headGirlOverridesQuirks = 1; + }, + [], passage() + )); + links.push(App.UI.DOM.link(" Soften flaws", () => { + V.headGirlTrainsFlaws = 0; + V.headGirlSoftensFlaws = 1; + V.headGirlOverridesQuirks = 0; + }, + [], passage() + )); + links.push(App.UI.DOM.link(" Train flaws", () => { + V.headGirlTrainsFlaws = 1; + V.headGirlSoftensFlaws = 0; + V.headGirlOverridesQuirks = 0; + }, + [], passage() + )); + + r.push(App.UI.DOM.generateLinksStrip(links)); + App.Events.addNode(f, r, "div", "indent"); + + div = document.createElement("div"); + div.append(App.UI.DOM.makeCheckbox("headGirlTrainsObedience"), " Obedience"); + App.UI.DOM.appendNewElement("div", f, div, "indent"); + + div = document.createElement("div"); + div.append(App.UI.DOM.makeCheckbox("headGirlTrainsSkills"), " Skills"); + App.UI.DOM.appendNewElement("div", f, div, "indent"); + + App.UI.DOM.appendNewElement("div", f, "Training methods: ", "underline"); + + r = []; + if (V.HGSeverity === 1) { + r.push(`${HGName} will be <span class="bold">aggressive</span> when punishing, with rape strongly encouraged.`); + r.push(App.UI.DOM.link(" Moderate", () => { + V.HGSeverity = 0; + }, + [], passage() + )); + } else if (V.HGSeverity === 0) { + links = []; + r.push(`${HGName} will be <span class="bold">moderate</span> when punishing, carefully selecting appropriate consequences.`); + links.push(App.UI.DOM.link(" Be aggressive", () => { + V.HGSeverity = 1; + }, + [], passage() + )); + links.push(App.UI.DOM.link(` Apply restrictions`, () => { + V.HGSeverity = -1; + }, + [], passage() + )); + r.push(App.UI.DOM.generateLinksStrip(links)); + } else if (V.HGSeverity === -1) { + r.push(`${HGName} will be <span class="bold">respectful</span> when punishing, treating slaves decently.`); + r.push(App.UI.DOM.link(" Be stricter", () => { + V.HGSeverity = 0; + }, + [], passage() + )); + } + App.Events.addNode(f, r, "div", "indent"); + + r = []; + if (V.HGPiercings === 1) { + r.push(`${HGName} is <span class="bold">allowed</span> to use piercings as a tool to improve slaves' attitudes.`); + r.push(App.UI.DOM.link(" Disallow", () => { + V.HGPiercings = 0; + }, + [], passage() + )); + } else { + r.push(`${HGName} is <span class="bold">not allowed</span> to use piercings as a tool to improve slaves' attitudes.`); + r.push(App.UI.DOM.link(" Allow", () => { + V.HGPiercings = 1; + }, + [], passage() + )); + } + App.Events.addNode(f, r, "div", "indent"); + + r = []; + App.UI.DOM.appendNewElement("div", f, "Behavior towards you: ", "underline"); + if (V.HGFormality === 1) { + r.push(`${HGName} will be <span class="bold">formal:</span> you will always be called ${getWrittenTitle(S.HeadGirl)}, just like any other slave.`); + r.push(App.UI.DOM.link(" Allow private informality", () => { + V.HGFormality = 0; + }, + [], passage() + )); + } else { + r.push(`${HGName} is allowed to be <span class="bold">informal:</span> in private, you can be called ${properTitle()}.`); + r.push(App.UI.DOM.link(" Maintain complete formality", () => { + V.HGFormality = 1; + }, + [], passage() + )); + } + App.Events.addNode(f, r, "div", "indent"); + + if (V.seePreg !== 0 && S.HeadGirl) { + if (V.universalRulesImpregnation === "HG") { + f.append(`${HGName} is responsible for impregnating fertile slaves.`); + V.HGCum = resetHGCum(S.HeadGirl); + if (canPenetrate(S.HeadGirl) && S.HeadGirl.pubertyXY === 1) { + f.append(`To maximize the chances of impregnation, ${he} will fuck fertile pussies frequently during the week. ${S.HeadGirl.slaveName} can service ${V.HGCum} slaves this way.`); + if (S.HeadGirl.devotion > 95) { + f.append(`${He} loves you so much ${he}'ll fuck them until ${he}'s sore.`); + } else { + f.append(`If ${he} were more devoted to you, ${he} might be able to drive ${himself} to get hard and service one more.`); + } + if (S.HeadGirl.balls >= 120) { + r.push(`${His} unreal balls produce nearly an endless supply of semen; ${his} ability to impregnate is almost limitless.`); + } else if (S.HeadGirl.balls >= 80) { + r.push(`${His} inhuman balls produce so much semen ${he} can easily impregnate twenty girls in one sitting.`); + } else if (S.HeadGirl.balls >= 50) { + r.push(`${His} giant balls produce so much semen ${he} can easily impregnate twelve girls in one sitting.`); + } else if (S.HeadGirl.balls >= 25) { + r.push(`${His} oversized balls produce so much semen ${he} can cum repeatedly in a single session.`); + } else if (S.HeadGirl.balls >= 5) { + r.push(`${His} big balls produce so much semen ${he} can cum more before ${he}'s drained.`); + } else { + r.push(`Bigger balls would let ${him} cum more before ${he}'s drained.`); + } + if (S.HeadGirl.health.condition > 95) { + f.append(`${His} wonderful health lets ${him} get hard and stay hard all the time.`); + } else { + f.append(`If ${his} health were perfect, ${he} might be able to get hard more often.`); + } + if (S.HeadGirl.energy > 95) { + f.append(`${His} nymphomania drives ${him} to go above and beyond in this.`); + } else { + f.append(`A more powerful sex drive could reduce ${his} refractory period.`); + } + } else { + f.append(`However, ${S.HeadGirl.slaveName} cannot perform this duty.`); + } + r.push(App.UI.DOM.link(` Rescind ${his} impregnation responsibility`, () => { + V.universalRulesImpregnation = "none"; + }, + [], passage() + )); + r.push(App.UI.DOM.link(` See to it yourself`, () => { + V.universalRulesImpregnation = "PC"; + }, + [], passage() + )); + f.append(App.UI.DOM.generateLinksStrip(r)); + } else { + if (canPenetrate(S.HeadGirl) && S.HeadGirl.pubertyXY === 1) { + App.UI.DOM.appendNewElement("div", f, `${HGName} is capable of impregnating slaves, but it's not part of ${his} responsibilities.`).append( + App.UI.DOM.link(` Assign ${him} to impregnate`, () => { + V.universalRulesImpregnation = "HG"; + }, + [], passage() + )); + } + } + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.headGirlSuite, "Main")); + return f; +}; diff --git a/src/facilities/penthouse/RecruiterSelect.js b/src/facilities/penthouse/RecruiterSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..8f143a82e5906260efded3d1c1b1e4c8c27b89c3 --- /dev/null +++ b/src/facilities/penthouse/RecruiterSelect.js @@ -0,0 +1,160 @@ +App.Facilities.RecruiterSelect = function() { + const f = document.createDocumentFragment(); + const recruiterCap = document.createDocumentFragment(); + let newLine = document.createElement("div"); + let r = []; + + if (S.Recruiter) { + f.append(`${SlaveFullName(S.Recruiter)} is working as your Recruiter, currently ${V.recruiterTarget !== "other arcologies" ? 'recruiting girls. ' : 'acting as a sexual Ambassador'}`); + if (V.recruiterTarget === "other arcologies") { + if (V.arcologies[0].influenceTarget === -1) { + f.append(`.<span class='red'>Since you have not selected another arcology to influence, your recruiter's talents are going to waste. Select an influence target to apply them. `); + } else { + f.append(` to `); + for (const arc of V.arcologies) { + if (arc.direction === V.arcologies[0].influenceTarget) { + f.append(`${arc.name}` ); + break; + } + } + } + } + f.append(App.UI.DOM.link("Remove Recruiter", () => { + removeJob(S.Recruiter, Job.RECRUITER); + }, + [], "Main" + )); + } else { + f.append(`No Recruiter assigned, appoint one from your devoted slaves.`); + } + + App.UI.DOM.appendNewElement("div", f); + f.append(`Your recruiter will target ${V.recruiterTarget}, `); + if (V.recruiterTarget === "desperate whores") { + f.append("they will be skilled but unhealthy. "); + } else if (V.recruiterTarget === "young migrants") { + f.append("they will be young and inexperienced but unhealthy. "); + } else if (V.recruiterTarget === "Will be mature") { + f.append("they will be mature. "); + } else if (V.recruiterTarget === "expectant mothers") { + f.append("they will be pregnant and likely unhealthy. "); + } else if (V.recruiterTarget === "dissolute sissies") { + f.append("they will be born male and have some experience. "); + } else if (V.recruiterTarget === "reassignment candidates") { + f.append("they will be born male. "); + } else if (V.recruiterTarget === "other arcologies") { + f.append("they will appoint the Recruiter to be a sexual Ambassador. "); + } + + r.push(App.UI.DOM.link(`Desperate whores`, () => { + V.recruiterTarget = "desperate whores"; + }, + [], passage() + )); + + r.push(App.UI.DOM.link("Young migrants", () => { + V.recruiterTarget = "young migrants"; + }, + [], passage() + )); + + r.push(App.UI.DOM.link("Recent divorcees", () => { + V.recruiterTarget = "recent divorcees"; + }, + [], passage() + )); + + if (V.seeDicks !== 100 && V.seePreg !== 0) { + r.push(App.UI.DOM.link("Expectant mothers", () => { + V.recruiterTarget = "expectant mothers"; + }, + [], passage() + )); + } + + if (V.seeDicks !== 0) { + r.push(App.UI.DOM.link("Dissolute sissies", () => { + V.recruiterTarget = "dissolute sissies"; + }, + [], passage() + )); + + r.push(App.UI.DOM.link("Reassignment candidates", () => { + V.recruiterTarget = "reassignment candidates"; + }, + [], passage() + )); + } + + if (V.arcologies.length > 1) { + r.push(App.UI.DOM.link("Other arcologies' cultures", () => { + V.oldRecruiterTarget = V.recruiterTarget; + V.recruiterTarget = "other arcologies"; + }, + [], passage() + )); + } + + f.append(App.UI.DOM.generateLinksStrip(r)); + + newLine.append(App.UI.DOM.makeCheckbox("recruiterEugenics"), App.UI.DOM.makeElement("note", " Target only individuals that can pass eugenics SMRs. This option will increase time it takes to recruit depending on how many eugenics SMR are active.")); + f.append(newLine); + + let idleTarget = 2 + + (V.brothel + V.club + V.arcade + V.dairy + V.servantsQuarters) + + V.masterSuite + V.HGSuite + V.dojo + V.brothel + V.club; + if (V.dairy && V.dairyRestraintsSetting < 2) { + idleTarget++; + } + idleTarget += V.farmyard + V.servantsQuarters + V.masterSuite + V.schoolroom + V.spa; + idleTarget += V.nursery + V.clinic + V.cellblock; + + newLine = document.createElement("div"); + newLine.append("Suspend active recruiting and focus on publicity when: "); + if (V.recruiterIdleRule === "number") { + newLine.append(`${V.recruiterIdleNumber} sex slaves owned`); + } else if (V.recruiterIdleRule === "facility") { + newLine.append(`match facility expansion, `); + if (idleTarget >= 20) { + newLine.append(`${idleTarget} positions.`); + } else { + newLine.append("20 positions (rule minimum)."); + } + } else { + newLine.append("always recruit"); + } + f.append(newLine); + + r = []; + r.push(App.UI.DOM.link("Always recruit", () => { + V.recruiterIdleRule = "always"; + }, + [], passage() + )); + r.push(App.UI.DOM.link("Facilities & leadership", () => { + V.recruiterIdleRule = "facility"; + }, + [], passage() + )); + + recruiterCap.append(App.UI.DOM.link("Set to this many slaves ", () => { + V.recruiterIdleRule = "number"; + }, + [], passage() + )); + if (V.recruiterIdleRule === "number") { + recruiterCap.append(App.UI.DOM.makeTextBox(V.recruiterIdleNumber, (v) => { + V.recruiterIdleNumber = v; + Engine.play(passage()); + }, true)); + } + r.push(recruiterCap); + + f.append(App.UI.DOM.generateLinksStrip(r)); + App.UI.DOM.appendNewElement("div", f, "'Facilities' doesn't include training slots in cellblock, schoolroom, spa, clinic (but does include those leaders)"); + + V.recruiterIdleNumber = Math.max(Math.trunc(Number(V.recruiterIdleNumber) || 20), 20); + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.penthouse, "Main")); + return f; +}; diff --git a/src/facilities/schoolroom/SchoolTeacherSelect.js b/src/facilities/schoolroom/SchoolTeacherSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..8501f5f29a9768cbdcc22ecc94e6ea93032cf53a --- /dev/null +++ b/src/facilities/schoolroom/SchoolTeacherSelect.js @@ -0,0 +1,17 @@ +App.Facilities.SchoolTeacherSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Schoolteacher) { + f.append(`${SlaveFullName(S.Schoolteacher)} is working as your Schoolteacher, helping to teach your slaves. `); + f.append(App.UI.DOM.link("Remove Schoolteacher", () => { + removeJob(S.Schoolteacher, Job.TEACHER); + }, + [], "Schoolroom" + )); + } else { + f.append(`No Schoolteacher assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.schoolroom, "Schoolroom")); + return f; +}; diff --git a/src/facilities/servantsQuarters/StewardessSelect.js b/src/facilities/servantsQuarters/StewardessSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..cee631852fc790241f045afac9b051ef59907b21 --- /dev/null +++ b/src/facilities/servantsQuarters/StewardessSelect.js @@ -0,0 +1,17 @@ +App.Facilities.StewardessSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Stewardess) { + f.append(`${SlaveFullName(S.Stewardess)} is working as your Stewardess, managing the Servants' Quarters. `); + f.append(App.UI.DOM.link("Remove Stewardess", () => { + removeJob(S.Stewardess, Job.STEWARD); + }, + [], "Servants' Quarters" + )); + } else { + f.append(`No Stewardess assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.servantsQuarters, "Servants' Quarters")); + return f; +}; diff --git a/src/facilities/spa/AttendantSelect.js b/src/facilities/spa/AttendantSelect.js new file mode 100644 index 0000000000000000000000000000000000000000..c5cdd28a9d28036cd504ded8a0fb13773b700983 --- /dev/null +++ b/src/facilities/spa/AttendantSelect.js @@ -0,0 +1,17 @@ +App.Facilities.AttendantSelect = function() { + const f = document.createDocumentFragment(); + + if (S.Attendant) { + f.append(`${SlaveFullName(S.Attendant)} is working as your Attendant, pampering and counseling your slaves. `); + f.append(App.UI.DOM.link("Remove Attendant", () => { + removeJob(S.Attendant, Job.ATTENDANT); + }, + [], "Spa" + )); + } else { + f.append(`No Attendant assigned, appoint one from your devoted slaves.`); + } + + f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.spa, "Spa")); + return f; +}; diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js index 6ef0785335f9a603419e660d9539e7c9cf4b1a6e..c6ad283d96c664275c21735f1762ad1220dd6c59 100644 --- a/src/js/utilsDOM.js +++ b/src/js/utilsDOM.js @@ -536,3 +536,18 @@ App.UI.DOM.makeRow = function(table, ...items) { cell.innerHTML = item; } }; + +/** + * Creates a checkbox. + * @param arg - item to be checked. Currently only designed to with items that have values of 0 - 1. + */ +App.UI.DOM.makeCheckbox = function(arg) { + const checkbox = document.createElement("input"); + checkbox.setAttribute("type", "checkbox"); + checkbox.checked = (V[arg] === 1); + + checkbox.onchange = () => { + V[arg] = checkbox.checked ? 1 : 0; + }; + return checkbox; +}; diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js index fc914ef55984e879415a152e78ce9db3df6aeb5f..022fab019951c3e911fd88604eaef742b8731ed7 100644 --- a/src/js/utilsSlave.js +++ b/src/js/utilsSlave.js @@ -3564,3 +3564,7 @@ globalThis.addPartner = function(slave, partner) { partnerState.partners.add(slave.ID); } }; + +globalThis.resetHGCum = function(s) { + return 2 + Math.trunc((s.balls / 5) + (s.energy / 95) + (s.health.condition / 95) + (s.devotion / 95) + (V.reproductionFormula * 5)); +}; diff --git a/src/uncategorized/attendantSelect.tw b/src/uncategorized/attendantSelect.tw deleted file mode 100644 index f563ca18ad97374086798e02bcee9b96fc7b9285..0000000000000000000000000000000000000000 --- a/src/uncategorized/attendantSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Attendant Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Spa", $encyclopedia = "Attendant">> -<<if _S.Attendant>> - <<setLocalPronouns _S.Attendant>> - <span class='slave-name'><<= SlaveFullName(_S.Attendant)>></span> is serving as your Attendant.<br><br>$He will help pamper and counsel your slaves. -<<else>> - You have not selected an Attendant. -<</if>> - -<br><br>''Appoint an Attendant from your devoted slaves:'' -<br><br>[[None|Spa][removeJob(_S.Attendant, Job.ATTENDANT)]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.spa, "Spa")>> diff --git a/src/uncategorized/bgSelect.tw b/src/uncategorized/bgSelect.tw deleted file mode 100644 index a1094cd42992729a37a444d0485d0fe4952b1560..0000000000000000000000000000000000000000 --- a/src/uncategorized/bgSelect.tw +++ /dev/null @@ -1,40 +0,0 @@ -:: BG Select [nobr jump-to-safe jump-from-safe] - -<<set $nextButton = "Back to Main", $nextLink = "Main", $encyclopedia = "Bodyguard">> - -<p class="scene-intro"> -</p> - -<p> - <<if (_S.Bodyguard)>> - <<setLocalPronouns _S.Bodyguard>> - <span class="slave-name"><<= SlaveFullName(_S.Bodyguard)>></span> - is serving as your bodyguard. $He will remain close to you at all times and guard your person. - <<else>> - You have not selected a bodyguard. - <</if>> -</p> - -<div> - <<if $bodyguardTrains == 0>> - Your Bodyguard ''is not allowed'' to train potential successors. - <div class="choices"> - [[Allow training|BG Select][$bodyguardTrains = 1]] - </div> - <<else>> - Your Bodyguard ''is allowed'' to train potential successors. - <div class="choices"> - [[Stop training|BG Select][$bodyguardTrains = 0]] - </div> - <</if>> -</div> - -<div style="font-weight:bold"> - Appoint a bodyguard from your devoted slaves: -</div> -<div class="choices"> - [[None|Main][removeJob(_S.Bodyguard, Job.BODYGUARD)]] -</div> -<p> - <<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.armory, "Main")>> -</p> diff --git a/src/uncategorized/concubineSelect.tw b/src/uncategorized/concubineSelect.tw deleted file mode 100644 index bc2b520e072bc93718c5252d550861726e49ff40..0000000000000000000000000000000000000000 --- a/src/uncategorized/concubineSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Concubine Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Master Suite", $encyclopedia = "Concubine">> -<<if ($ConcubineID != 0)>> - <<setLocalPronouns _S.Concubine>> - <span class='slave-name'><<= SlaveFullName(_S.Concubine)>></span> is serving as your Concubine.<br><br>$He will take the lead in seeing to your pleasure. -<<else>> - You have not selected a Concubine. -<</if>> - -<br><br>''Appoint a Concubine from your devoted slaves:'' -<br><br>[[None|Master Suite][removeJob(_S.Concubine, Job.CONCUBINE)]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.masterSuite, "Master Suite")>> diff --git a/src/uncategorized/djSelect.tw b/src/uncategorized/djSelect.tw deleted file mode 100644 index 7a962c67acb2dcb087239931f6a6fc6ff834293f..0000000000000000000000000000000000000000 --- a/src/uncategorized/djSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: DJ Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Club", $encyclopedia = "DJ">> -<<if (_S.DJ)>> - <<setLocalPronouns _S.DJ>> - <span class='slave-name'><<= SlaveFullName(_S.DJ)>></span> is serving as your DJ.<br><br>$He will headline entertainment in $clubName. -<<else>> - You have not selected a DJ. -<</if>> - -<br><br>''Appoint a DJ from your devoted slaves:'' -<br><br>[[None|Club][removeJob(_S.DJ, "be the DJ")]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.club, "Club")>> diff --git a/src/uncategorized/hgSelect.tw b/src/uncategorized/hgSelect.tw deleted file mode 100644 index 8ef653742e91d627531e1c47b57b915b2310411e..0000000000000000000000000000000000000000 --- a/src/uncategorized/hgSelect.tw +++ /dev/null @@ -1,95 +0,0 @@ -:: HG Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back to Main", $nextLink = "Main", $encyclopedia = "Head Girl">> - -<h1>Head Girl Management</h1> - -<<set _HGName = "Your Head Girl">> -<<if ($HeadGirlID != 0)>> - <<setLocalPronouns _S.HeadGirl>> - <<set _HGName = SlaveFullName(_S.HeadGirl)>> - <span class='slave-name'>_HGName</span> is serving as your Head Girl<<if $arcologies[0].FSEgyptianRevivalistLaw == 1>> and Consort; it is $his role to serve and comfort you at your side, in addition to performing normal Head Girl duties<</if>>. - <<if ($HGSuite)>> - <br> Currently $he lives in <<link "<<= capFirstChar($HGSuiteName)>>""Head Girl Suite">><</link>> - <</if>> - <br><br> -<</if>> - -__Slave training__ - -//_HGName will prioritize enabled items in the following order.// - -<br> -<<if $headGirlTrainsHealth>><<checkbox "$headGirlTrainsHealth" 0 1 checked>><<else>><<checkbox "$headGirlTrainsHealth" 0 1>><</if>> -Health -<br> -<<if $headGirlTrainsParaphilias>><<checkbox "$headGirlTrainsParaphilias" 0 1 checked>><<else>><<checkbox "$headGirlTrainsParaphilias" 0 1>><</if>> -Paraphilias -<br> -<<if $headGirlTrainsFlaws>><<checkbox "$headGirlTrainsFlaws" 0 1 checked>><<else>><<checkbox "$headGirlTrainsFlaws" 0 1>><</if>> -Flaws -<<if $headGirlSoftensFlaws>><<checkbox "$headGirlSoftensFlaws" 0 1 checked>><<else>><<checkbox "$headGirlSoftensFlaws" 0 1>><</if>> -Soften -<<if $headGirlOverridesQuirks>><<checkbox "$headGirlOverridesQuirks" 0 1 checked>><<else>><<checkbox "$headGirlOverridesQuirks" 0 1>><</if>> -Soften and Replace -<br> -<<if $headGirlTrainsObedience>><<checkbox "$headGirlTrainsObedience" 0 1 checked>><<else>><<checkbox "$headGirlTrainsObedience" 0 1>><</if>> -Obedience -<br> -<<if $headGirlTrainsSkills>><<checkbox "$headGirlTrainsSkills" 0 1 checked>><<else>><<checkbox "$headGirlTrainsSkills" 0 1>><</if>> -Skills - -<br>__Training methods__ -<br> -_HGName will be -<<if ($HGSeverity > 0)>> - ''aggressive'' when punishing, with rape strongly encouraged. [[Moderate|HG Select][$HGSeverity = 0]] -<<elseif ($HGSeverity == 0)>> - ''moderate'' when punishing, carefully selecting appropriate consequences. [[Be aggressive|HG Select][$HGSeverity = 1]] | [["Restrict " + $him|HG Select][$HGSeverity = -1]] -<<else>> - ''respectful'' when punishing, treating slaves decently. [[Be stricter|HG Select][$HGSeverity = 0]] -<</if>> -<br> -_HGName is -<<if $HGPiercings>> - ''allowed'' to use piercings as a tool to improve slaves' attitudes. [[Disallow|HG Select][$HGPiercings = 0]] -<<else>> - ''not allowed'' to use piercings as a tool to improve slaves' attitudes. [[Allow|HG Select][$HGPiercings = 1]] -<</if>> - -<br>__Behavior towards you__ -<br> -_HGName -<<if ($HGFormality != 0)>> - will be ''formal'': $he will always call you <<= getWrittenTitle(_S.HeadGirl)>>, just like any other slave. [[Allow private informality|HG Select][$HGFormality = 0]] -<<else>> - is allowed to be ''informal'': in private, $he may call you <<= properTitle()>>. [[Maintain complete formality|HG Select][$HGFormality = 1]] -<</if>> - -<<if $seePreg != 0>> - <<if $HeadGirlID != 0>> - <<if $universalRulesImpregnation == "HG">> - <br><br>_HGName is responsible for impregnating fertile slaves. - <<set $HGCum = 2+Math.trunc((_S.HeadGirl.balls/5)+(_S.HeadGirl.energy/95)+(_S.HeadGirl.health.condition/95)+(_S.HeadGirl.devotion/95)+($reproductionFormula*5))>> - <<if canPenetrate(_S.HeadGirl) && _S.HeadGirl.pubertyXY == 1>> - To maximize the chances of impregnation, $he will fuck fertile pussies frequently during the week. _S.HeadGirl.slaveName can service $HGCum slaves this way. - <<if _S.HeadGirl.devotion > 95>>$He loves you so much $he'll fuck them until $he's sore.<<else>>If $he were more devoted to you, $he might be able to drive $himself to get hard and service one more.<</if>> - <<if _S.HeadGirl.balls >= 120>>$His unreal balls produce nearly an endless supply of semen; $his ability to impregnate is almost limitless.<<elseif _S.HeadGirl.balls >= 80>>$His inhuman balls produce so much semen $he can easily impregnate twenty girls in one sitting.<<elseif _S.HeadGirl.balls >= 50>>$His giant balls produce so much semen $he can easily impregnate twelve girls in one sitting.<<elseif _S.HeadGirl.balls >= 25>>$His oversized balls produce so much semen $he can cum repeatedly in a single session.<<elseif _S.HeadGirl.balls >= 5>>$His big balls produce so much semen $he can cum more before $he's drained.<<else>>Bigger balls would let $him cum more before $he's drained.<</if>> - <<if _S.HeadGirl.health.condition > 95>>$His wonderful health lets $him get hard and stay hard all the time.<<else>>If $his health were perfect, $he might be able to get hard more often.<</if>> - <<if _S.HeadGirl.energy > 95>>$His nymphomania drives $him to go above and beyond in this.<<else>>A more powerful sex drive could reduce $his refractory period.<</if>> - <<else>> - However, _S.HeadGirl.slaveName cannot perform this duty. - <</if>> - [["Rescind " + $his + " impregnation responsibility"|HG Select][$universalRulesImpregnation = "none"]] | [[See to it yourself|HG Select][$universalRulesImpregnation = "PC"]] - <<else>> - <<if canPenetrate(_S.HeadGirl) && _S.HeadGirl.pubertyXY == 1>> - <br><br>_HGName is capable of impregnating slaves, but it's not part of $his responsibilities. [["Assign " + $him + " to impregnate"|HG Select][$universalRulesImpregnation = "HG"]] - <</if>> - <</if>> - <</if>> -<</if>> - -<br><br>''Appoint a Head Girl from among your devoted slaves:'' -<br><br>[[None|Main][removeJob(_S.HeadGirl, "be your Head Girl")]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.headGirlSuite, "Main")>> diff --git a/src/uncategorized/madamSelect.tw b/src/uncategorized/madamSelect.tw deleted file mode 100644 index 35ec6c33eb6b97f7f5f6e8f5dca0c69b1643e038..0000000000000000000000000000000000000000 --- a/src/uncategorized/madamSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Madam Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Brothel", $encyclopedia = "Madam">> -<<if ($MadamID != 0)>> - <<setLocalPronouns _S.Madam>> - <span class='slave-name'><<= SlaveFullName(_S.Madam)>></span> is serving as your Madam.<br><br>$He will manage the brothel. -<<else>> - You have not selected a Madam. -<</if>> - -<br><br>''Appoint a Madam from your devoted slaves:'' -<br><br>[[None|Brothel][removeJob(_S.Madam, "be the Madam")]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.brothel, "Brothel")>> diff --git a/src/uncategorized/milkmaidSelect.tw b/src/uncategorized/milkmaidSelect.tw deleted file mode 100644 index 02bfe668d0e973b28a3b8deef5ae6eb7d2e896b4..0000000000000000000000000000000000000000 --- a/src/uncategorized/milkmaidSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Milkmaid Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Dairy", $encyclopedia = "Milkmaid">> -<<if ($MilkmaidID != 0)>> - <<setLocalPronouns _S.Milkmaid>> - <span class='slave-name'><<= SlaveFullName(_S.Milkmaid)>></span> is serving as your Milkmaid.<br><br>$He will look after your livestock, helping them give milk<<if $seeDicks > 0>> and semen<</if>>. -<<else>> - You have not selected a Milkmaid. -<</if>> - -<br><br>''Appoint a Milkmaid from your obedient slaves:'' -<br><br>[[None|Dairy][removeJob(_S.Milkmaid, "be the Milkmaid")]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.dairy, "Dairy")>> diff --git a/src/uncategorized/nurseSelect.tw b/src/uncategorized/nurseSelect.tw deleted file mode 100644 index 84211a0e169b22a1ea03c3bf0e92c6006fdfad19..0000000000000000000000000000000000000000 --- a/src/uncategorized/nurseSelect.tw +++ /dev/null @@ -1,15 +0,0 @@ -:: Nurse Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Clinic", $encyclopedia = "Nurse">> -<<if _S.Nurse>> - <<setLocalPronouns _S.Nurse>> - <span class='slave-name'><<= SlaveFullName(_S.Nurse)>></span> is serving as your Nurse.<br><br>$He will help heal your slaves. -<<else>> - You have not selected a Nurse. -<</if>> - -<br><br>''Appoint a Nurse from your devoted slaves:'' -<br><br>[[None|Clinic][removeJob(_S.Nurse, "be the Nurse")]] -<br><br> - -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.clinic, "Clinic")>> diff --git a/src/uncategorized/recruiterSelect.tw b/src/uncategorized/recruiterSelect.tw deleted file mode 100644 index 23c96f0d8cc23063cdd6b7620c8c611222adee15..0000000000000000000000000000000000000000 --- a/src/uncategorized/recruiterSelect.tw +++ /dev/null @@ -1,67 +0,0 @@ -:: Recruiter Select [nobr jump-to-safe jump-from-safe] - -<<set $nextButton = "Back to Main", $nextLink = "Main", $encyclopedia = "Recruiter">> -<<if ($RecruiterID != 0)>> - <<setLocalPronouns _S.Recruiter>> - <span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> is - <<if $recruiterTarget != "other arcologies">> - recruiting girls. - <<else>> - acting as a sexual - <<if $arcologies[0].influenceTarget == -1>> - Ambassador. @@.red;Since you have not selected another arcology to influence, $he has no target for Ambassadorial duties. Select an influence target to apply $his talents.@@ - <<else>> - Ambassador to <<for $i = 0; $i < $arcologies.length; $i++>><<if $arcologies[$i].direction == $arcologies[0].influenceTarget>>$arcologies[$i].name<<break>><</if>><</for>>. - <</if>> - <</if>> -<<else>> - You do not have a recruiter working at present. -<</if>> - -<br><br>Your recruiter will <<if $recruiterTarget != "other arcologies">>target ''$recruiterTarget.''<<else>>spread your arcology's culture to neighboring arcologies.<</if>> __Assign a different focus:__ -<br> [[Desperate whores|Recruiter Select][$recruiterTarget = "desperate whores"]] //Likely to be skilled but unhealthy// -<br> [[Young migrants|Recruiter Select][$recruiterTarget = "young migrants"]] //Young and inexperienced but unhealthy// -<br> [[Recent divorcees|Recruiter Select][$recruiterTarget = "recent divorcees"]] //Will be mature// -<<if ($seeDicks != 100) && $seePreg != 0>> - <br> [[Expectant mothers|Recruiter Select][$recruiterTarget = "expectant mothers"]] //Will be pregnant, and likely unhealthy// -<</if>> -<<if ($seeDicks != 0)>> - <br> [[Dissolute sissies|Recruiter Select][$recruiterTarget = "dissolute sissies"]] //Will be born male and have some experience// - <br> [[Reassignment candidates|Recruiter Select][$recruiterTarget = "reassignment candidates"]] //Will be born male// -<</if>> -<<if $arcologies.length > 1>> - <<if $FSAnnounced>> - <br> [[Other arcologies' cultures|Recruiter Select][$oldRecruiterTarget = $recruiterTarget, $recruiterTarget = "other arcologies"]] //Will appoint the Recruiter to be a sexual Ambassador// - <</if>> -<</if>> - -<br><br>Target only individuals that can pass eugenics SMR. -<<if $recruiterEugenics < 1>>[[Target|Recruiter Select][$recruiterEugenics = 1]] - <<else>>[[Stop targeting|Recruiter Select][$recruiterEugenics = 0]] -<</if>> -<br> //This option will increase time it takes to recruit depending on how many eugenics SMR are active.// - -/* sum for "facilities & leadership" */ -<<set _idleTarget = (2 + $brothel + $club + $arcade + $dairy + $servantsQuarters + $masterSuite)>> -<<if $HGSuite>><<set _idleTarget++>><</if>> -<<if $dojo>><<set _idleTarget++>><</if>> -<<if $brothel>><<set _idleTarget++>><</if>> -<<if $club>><<set _idleTarget++>><</if>> -<<if $dairy && ($dairyRestraintsSetting < 2)>><<set _idleTarget++>><</if>> -<<if $farmyard>><<set _idleTarget++>><</if>> -<<if $servantsQuarters>><<set _idleTarget++>><</if>> -<<if $masterSuite>><<set _idleTarget++>><</if>> -<<if $schoolroom>><<set _idleTarget++>><</if>> -<<if $spa>><<set _idleTarget++>><</if>> -<<if $nursery>><<set _idleTarget++>><</if>> -<<if $clinic>><<set _idleTarget++>><</if>> -<<if $cellblock>><<set _idleTarget++>><</if>> - -<br><br>Suspend active recruiting and focus on publicity when: <span id="idleRule"><<switch $recruiterIdleRule>><<case "number">>''$recruiterIdleNumber sex slaves owned''<<case "facility">>''match facility expansion'', currently <<if _idleTarget >= 20>>_idleTarget positions<<else>>20 positions (rule minimum)<</if>><<default>>''always recruit''<</switch>></span> -<br> <<link "Always recruit">><<set $recruiterIdleRule = "always">><<replace "#idleRule">>''always recruit''<</replace>><</link>> | <<link "Facilities & leadership">><<set $recruiterIdleRule = "facility">><<replace "#idleRule">>''match facility expansion'', currently <<if _idleTarget >=20>>_idleTarget positions<<else>>20 positions (rule minimum)<</if>><</replace>><</link>> | <<link "Set to this many slaves:">><<set $recruiterIdleRule = "number", $recruiterIdleNumber = Math.max(Math.trunc(Number($seed) || 20), 20)>><<replace "#idleRule">>''$recruiterIdleNumber sex slaves owned''<</replace>><<replace "#numberBox">><<textbox "$seed" $recruiterIdleNumber>><</replace>><</link>> <span id="numberBox"><<textbox "$seed" $recruiterIdleNumber>></span> /* use of $seed in conjunction with link prevents NaN error */ -<br> //"Facilities" doesn't include training slots in cellblock, schoolroom, spa, clinic (but does include those leaders)// - -<br><br>''Appoint a recruiter from among your devoted slaves:'' -<br>[[None|Main][removeJob(_S.Recruiter, "recruit girls")]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.penthouse, "Main")>> diff --git a/src/uncategorized/schoolteacherSelect.tw b/src/uncategorized/schoolteacherSelect.tw deleted file mode 100644 index 7572a3d974d9a863dcab5b573fc2886f6a5cb300..0000000000000000000000000000000000000000 --- a/src/uncategorized/schoolteacherSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Schoolteacher Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Schoolroom", $encyclopedia = "Schoolteacher">> -<<if _S.Schoolteacher>> - <<setLocalPronouns _S.Schoolteacher>> - <span class='slave-name'><<= SlaveFullName(_S.Schoolteacher)>></span> is serving as your Schoolteacher.<br><br>$He will help teach your slaves. -<<else>> - You have not selected a Schoolteacher. -<</if>> - -<br><br>''Appoint a Schoolteacher from your devoted slaves:'' -<br><br>[[None|Schoolroom][removeJob(_S.Schoolteacher, "be the Schoolteacher")]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.schoolroom, "Schoolroom")>> diff --git a/src/uncategorized/stewardessSelect.tw b/src/uncategorized/stewardessSelect.tw deleted file mode 100644 index a9dc36cfaa208ee59e6792dc62cb935d5337c05b..0000000000000000000000000000000000000000 --- a/src/uncategorized/stewardessSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Stewardess Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Servants' Quarters", $encyclopedia = "Stewardess">> -<<if (_S.Stewardess)>> - <<setLocalPronouns _S.Stewardess>> - <span class='slave-name'><<= SlaveFullName(_S.Stewardess)>></span> is serving as your Stewardess.<br><br>$He will manage the Servants' Quarters. -<<else>> - You have not selected a Stewardess. -<</if>> - -<br><br>''Appoint a Stewardess from your devoted slaves:'' -<br><br>[[None|Servants' Quarters][removeJob(_S.Stewardess, Job.STEWARD)]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.servantsQuarters, "Servants' Quarters")>> diff --git a/src/uncategorized/wardenessSelect.tw b/src/uncategorized/wardenessSelect.tw deleted file mode 100644 index 6ae7bf5aed1652a53263bca874574444d24f3719..0000000000000000000000000000000000000000 --- a/src/uncategorized/wardenessSelect.tw +++ /dev/null @@ -1,14 +0,0 @@ -:: Wardeness Select [nobr jump-to-safe jump-hidden jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Cellblock", $encyclopedia = "Wardeness">> -<<if (_S.Wardeness)>> - <<setLocalPronouns _S.Wardeness>> - <span class='slave-name'><<= SlaveFullName(_S.Wardeness)>></span> is serving as your Wardeness.<br><br>$He will help break your prisoners. -<<else>> - You have not selected a Wardeness. -<</if>> - -<br><br>''Appoint a Wardeness from your devoted slaves:'' -<br><br>[[None|Cellblock][removeJob(_S.Wardeness, "be the Wardeness")]] -<br><br> -<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.cellblock, "Cellblock")>>