diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 76b215d039868c3e5f79d982b7c32668b8dd90d8..2e1759390cf7e323f4218f2c122c585e553ccf14 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -879,7 +879,6 @@ App.Data.resetOnNGPlus = { Farmer: [], Wardeness: [] }, - tutorGraduate: [], weddingPlanned: 0, /** @type {string|Array<{ID:number, trainingRegimen:string}>} */ diff --git a/src/endWeek/reports/schoolroomReport.js b/src/endWeek/reports/schoolroomReport.js index d5b51cc0edfc29e72703e0dfe089d2f8ca2264cf..d00bb83e034aad0d7073bb36fd95dac65f3f2a94 100644 --- a/src/endWeek/reports/schoolroomReport.js +++ b/src/endWeek/reports/schoolroomReport.js @@ -191,7 +191,7 @@ App.EndWeek.schoolroomReport = function() { ((slave.skill.entertainment > 30) || ((V.schoolroomUpgradeSkills === 0) && (slave.skill.entertainment > 10))) && ((slave.skill.anal > 30) || ((V.schoolroomUpgradeSkills === 0) && (slave.skill.anal > 10))) && ((slave.skill.vaginal > 30) || ((V.schoolroomUpgradeSkills === 0) && (slave.skill.vaginal > 10)) || (slave.vagina < 0)) && - (tutorForSlave(slave) === null || V.tutorGraduate.includes(slave.ID))) { + (!needsTutoring(slave))) { const reassignment = App.UI.DOM.appendNewElement("p", frag, ''); const {he, his} = getPronouns(slave); let r = []; diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js index aff9ba89a903b2b24c1d94f33a9c17680a20dc45..49518639d4ed455773b85060c4864b8d70af3164 100644 --- a/src/endWeek/saTakeClasses.js +++ b/src/endWeek/saTakeClasses.js @@ -37,7 +37,7 @@ App.SlaveAssignment.takeClasses = (function() { if (slave.accent > 1 && slave.voice !== 0) { speechLessons(slave); } - if (tutorForSlave(slave) != null) { + if (needsTutoring(slave)) { tutorLessons(slave); } graduation(slave); @@ -661,8 +661,7 @@ App.SlaveAssignment.takeClasses = (function() { if ((slave.skill.entertainment > 30) || (V.schoolroomUpgradeSkills === 0 && slave.skill.entertainment > 10)) { if ((slave.skill.anal > 30) || (V.schoolroomUpgradeSkills === 0 && slave.skill.anal > 10)) { if ((slave.skill.vaginal > 30) || (V.schoolroomUpgradeSkills === 0 && slave.skill.vaginal > 10) || (slave.vagina < 0)) { - if (tutorForSlave(slave) === null || V.tutorGraduate.includes(slave.ID)) { - V.tutorGraduate.delete(slave.ID); + if (!needsTutoring(slave)) { r += ` ${He} can learn little from further classes, <span class="noteworthy">`; if (V.assignmentRecords[slave.ID]) { let oldJob = V.assignmentRecords[slave.ID]; diff --git a/src/facilities/schoolroom/schoolroomFramework.js b/src/facilities/schoolroom/schoolroomFramework.js index d27511c7e178d12959a38e67b4a6a575eb2bdb00..dbf8428adbe66bd2a01bb4f824323881117648a8 100644 --- a/src/facilities/schoolroom/schoolroomFramework.js +++ b/src/facilities/schoolroom/schoolroomFramework.js @@ -45,7 +45,7 @@ App.Entity.Facilities.SchoolroomStudentJob = class extends App.Entity.Facilities (slave.voice === 0 || slave.accent + this.facility.upgrade("Language") <= 2) && (slave.skill.oral > maxSkill) && (slave.skill.whoring > maxSkill) && (slave.skill.entertainment > maxSkill) && (slave.skill.anal > maxSkill) && ((slave.vagina < 0) || (slave.skill.vaginal > maxSkill)) && - ((tutorForSlave(slave) === null) || (V.tutorGraduate.includes(slave.ID)))) { + (!needsTutoring(slave))) { r.push(`${slave.slaveName} has nothing left to learn.`); } diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js index eceecbd41bfcd32850eaf714614e3c12b9f4b428..e1ea7a1dbcc2d7b2157725374cdbce03502f2d8c 100644 --- a/src/js/slaveListing.js +++ b/src/js/slaveListing.js @@ -172,10 +172,9 @@ App.UI.SlaveList.render = function() { } else { assignment.innerText = slave.assignment; if (slave.assignment === Job.CLASSES) { - for (const role of Object.keys(V.slaveTutor)) { - if (V.slaveTutor[role].contains(slave.ID)) { - assignment.innerText += ` on being a ${role}`; break; - } + const role = tutorForSlave(slave); + if (role) { + assignment.innerText += ` on being a ${role}`; } } if (slave.sentence > 0) { @@ -184,7 +183,6 @@ App.UI.SlaveList.render = function() { } if (slave.assignment === Job.CLINIC) { let list = []; - let i; if (slave.health.condition <= 40) { list.push(`poor health`); } @@ -207,18 +205,10 @@ App.UI.SlaveList.render = function() { } } if (list.length > 0) { - assignment.innerText += " for "; + assignment.innerText += ` for ${arrayToSentence(list)}`; } else { assignment.innerText += ", preparing to check out"; } - for (i = 0; i < list.length; i++) { - assignment.innerText += list[i]; - if (i === (list.length - 2)) { - assignment.innerText += " and "; - } else if (i < (list.length - 2)) { - assignment.innerText += ", "; - } - } } else if (slave.assignment === Job.SPA) { let list = []; let i; @@ -235,29 +225,17 @@ App.UI.SlaveList.render = function() { list.push(`improving in health`); } if (list.length > 0) { - assignment.innerText += ", "; + assignment.innerText += `, ${arrayToSentence(list)}`; } else { assignment.innerText += ", preparing to move out"; } - for (i = 0; i < list.length; i++) { - assignment.innerText += list[i]; - if (i === (list.length - 2)) { - assignment.innerText += " and "; - } else if (i < (list.length - 2)) { - assignment.innerText += ", "; - } - } } } else if (slave.assignment === Job.SCHOOL) { - for (const role of Object.keys(V.slaveTutor)) { - if (V.slaveTutor[role].contains(slave.ID)) { - assignment.innerText += ` about being a ${role}`; break; - } - } let lessons = []; - let i; - if ((V.schoolroomRemodelBimbo === 1 && slave.intelligenceImplant > -15) || (V.schoolroomRemodelBimbo === 0 && slave.intelligenceImplant < 30)) { - lessons.push("general"); + if (V.schoolroomRemodelBimbo === 1 && slave.intelligenceImplant > -15) { + lessons.push("being a dumb bimbo"); + } else if (V.schoolroomRemodelBimbo === 0 && slave.intelligenceImplant < 30) { + lessons.push("general education"); } if (!((slave.voice === 0) || (slave.accent <= 1) || ((V.schoolroomUpgradeLanguage === 0) && (slave.accent <= 2)))) { lessons.push("speech"); @@ -277,19 +255,15 @@ App.UI.SlaveList.render = function() { if (!((slave.skill.vaginal > 30) || ((V.schoolroomUpgradeSkills === 0) && (slave.skill.vaginal > 10)) || (slave.vagina < 0))) { lessons.push("vaginal"); } + const role = tutorForSlave(slave); + if (role && needsTutoring(slave)) { + lessons.push(`being a good ${role}`); + } if (lessons.length > 0) { - assignment.innerText += ", practicing: "; + assignment.innerText += `, practicing ${arrayToSentence(lessons)}`; } else { assignment.innerText += ", studying for finals"; } - for (i = 0; i < lessons.length; i++) { - assignment.innerText += lessons[i]; - if (i === (lessons.length - 2)) { - assignment.innerText += " and "; - } else if (i < (lessons.length - 2)) { - assignment.innerText += ", "; - } - } } else if (slave.assignment === Job.SUBORDINATE) { if (slave.subTarget === -1) { assignment.innerText += ", serving as your Stud"; diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js index 1a1026588ab1d33a0fe45da25a729fb175d9b2ee..729fc725525a7c1bf52fca5f02bdcc0a20b84842 100644 --- a/src/js/utilsSlave.js +++ b/src/js/utilsSlave.js @@ -1466,6 +1466,23 @@ globalThis.tutorForSlave = function(slave) { return null; }; +/** + * @param {App.Entity.SlaveState} slave + * @returns {boolean} + */ +globalThis.needsTutoring = function(slave) { + const tutor = tutorForSlave(slave); + if (!tutor) { + return false; + } + const skill = slave.skill[uncapFirstChar(tutor)] || 0; + if (skill >= 200) { // if her tutoring is done, make sure it's turned off + V.slaveTutor[tutor].delete(slave.ID); + return false; + } + return true; +}; + /** * @param {string} skill * @returns {number} @@ -3287,13 +3304,8 @@ globalThis.induceLactation = function(slave, induce = 0) { globalThis.slaveSkillIncrease = function(targetSkill, slave, skillIncrease = 1) { let r = "", skillDec; const { He, his, him } = getPronouns(slave); - const isleadershipRole = function() { - if (['headGirl', 'recruiter', 'bodyguard', 'madam', 'DJ', 'nurse', 'teacher', 'attendant', 'matron', 'stewardess', 'milkmaid', 'farmer', 'wardeness'].includes(targetSkill)) { - return true; - } - return false; - }; - if (isleadershipRole()) { + const isleadershipRole = ['headGirl', 'recruiter', 'bodyguard', 'madam', 'DJ', 'nurse', 'teacher', 'attendant', 'matron', 'stewardess', 'milkmaid', 'farmer', 'wardeness'].includes(targetSkill); + if (isleadershipRole) { if (slave.skill[targetSkill] <= 20) { if (slave.skill[targetSkill] + skillIncrease > 20) { r = `<span class="green">${He} now has basic skills as a ${capFirstChar(targetSkill)}</span>`; @@ -3309,11 +3321,9 @@ globalThis.slaveSkillIncrease = function(targetSkill, slave, skillIncrease = 1) } else if (slave.skill[targetSkill] < 200) { if (slave.skill[targetSkill] + skillIncrease >= 200) { r = `<span class="green">${He} now has knowledge on par with those with applicable career experience for a ${capFirstChar(targetSkill)}.</span>`; - V.tutorGraduate.push(slave.ID); V.slaveTutor[capFirstChar(targetSkill)].delete(slave.ID); } } else { // failsafe - V.tutorGraduate.push(slave.ID); V.slaveTutor[capFirstChar(targetSkill)].delete(slave.ID); } } else { diff --git a/submodules/sugarcube-2 b/submodules/sugarcube-2 index 8464936f0524c87f5e41960359de37aa5c34040f..e8af6b2f60fa88f5111d1812593e0b0e47b2779f 160000 --- a/submodules/sugarcube-2 +++ b/submodules/sugarcube-2 @@ -1 +1 @@ -Subproject commit 8464936f0524c87f5e41960359de37aa5c34040f +Subproject commit e8af6b2f60fa88f5111d1812593e0b0e47b2779f