diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js index 22495e4211661c649b670f1e2588822547c4b593..aff9ba89a903b2b24c1d94f33a9c17680a20dc45 100644 --- a/src/endWeek/saTakeClasses.js +++ b/src/endWeek/saTakeClasses.js @@ -299,66 +299,52 @@ App.SlaveAssignment.takeClasses = (function() { function skillLessons(slave) { let undevoted = 0; // forces an obedience lesson to replace the first skill lesson let skillIncrease = 0; + let lessons; + const set = new Set(); if (V.schoolroomRemodelBimbo !== 1 || slave.assignment !== Job.SCHOOL) { skillIncrease = (10 + Math.floor((slave.intelligence + slave.intelligenceImplant) / 32)); } else { skillIncrease = (10 + (Math.abs(Math.floor((slave.intelligence + slave.intelligenceImplant) / 32)))); } - for (let lessons = 0; lessons < Math.max(1, learning); lessons++) { + for (lessons = 0; lessons < Math.max(1, learning); lessons++) { if (slave.devotion <= 20 && undevoted === 0) { - r += ` Since ${he} is wanting in basic obedience, ${he} suffers through courses on <span class="devotion inc">${his} place</span> in the Free Cities world.`; + set.add(` Since ${he} is wanting in basic obedience, ${he} suffers through courses on <span class="devotion inc">${his} place</span> in the Free Cities world.`); slave.devotion += 10; undevoted++; } else if (slave.skill.oral <= 10) { - r += ` Since ${he} is orally incompetent, ${he} is taught basic gag reflex suppression exercises and other simple oral things.`; - r += ` ${slaveSkillIncrease('oral', slave, skillIncrease)}`; + set.add(` Since ${he} is orally incompetent, ${he} is taught basic gag reflex suppression exercises and other simple oral things. ${slaveSkillIncrease('oral', slave, skillIncrease)}`); } else if (slave.skill.vaginal <= 10 && slave.vagina > 0 && canDoVaginal(slave)) { - r += ` Since ${he} is unskilled at using ${his} pussy, ${he} is taught Kegel exercises and other simple vaginal skills.`; - r += ` ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`; + set.add(` Since ${he} is unskilled at using ${his} pussy, ${he} is taught Kegel exercises and other simple vaginal skills. ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`); } else if (slave.skill.vaginal <= 10 && slave.vagina >= 0) { - r += ` Since ${he} is unskilled at using ${his} pussy and not permitted to learn through practice, ${he} is taught Kegel exercises, vaginal basics and several new positions.`; - r += ` ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`; + set.add(` Since ${he} is unskilled at using ${his} pussy and not permitted to learn through practice, ${he} is taught Kegel exercises, vaginal basics and several new positions. ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`); } else if (slave.skill.anal <= 10 && slave.anus > 0 && canDoAnal(slave)) { - r += ` Since ${he} is a novice at taking it up ${his} butt, ${he} is taught relaxation exercises and other simple anal basics.`; - r += ` ${slaveSkillIncrease('anal', slave, skillIncrease)}`; + set.add(` Since ${he} is a novice at taking it up ${his} butt, ${he} is taught relaxation exercises and other simple anal basics. ${slaveSkillIncrease('anal', slave, skillIncrease)}`); } else if (slave.skill.anal <= 10 && slave.anus >= 0) { - r += ` Since ${he} is a novice at taking it up ${his} butt and not permitted to learn through practice, ${he} is taught relaxation exercises and other simple anal basics.`; - r += ` ${slaveSkillIncrease('anal', slave, skillIncrease)}`; + set.add(` Since ${he} is a novice at taking it up ${his} butt and not permitted to learn through practice, ${he} is taught relaxation exercises and other simple anal basics. ${slaveSkillIncrease('anal', slave, skillIncrease)}`); } else if (slave.skill.whoring <= 10) { - r += ` Since ${he} has little idea what's involved in selling ${his} body, ${he} is taught basic safety practices and other simple prostitution skills.`; - r += ` ${slaveSkillIncrease('whoring', slave, skillIncrease)}`; + set.add(` Since ${he} has little idea what's involved in selling ${his} body, ${he} is taught basic safety practices and other simple prostitution skills. ${slaveSkillIncrease('whoring', slave, skillIncrease)}`); } else if (slave.skill.entertainment <= 10) { - r += ` Since ${his} entertainment value is limited to ${his} holes, ${he} is taught simple conversational skills and other courtesan's essentials.`; - r += ` ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`; + set.add(` Since ${his} entertainment value is limited to ${his} holes, ${he} is taught simple conversational skills and other courtesan's essentials. ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`); } else if (V.schoolroomUpgradeSkills === 1) { if (slave.skill.oral <= 30) { - r += ` Having completed the basic sex slave curriculum, ${he} studies more advanced ways to use ${his} lips and tongue to please cocks, cunts, and asses.`; - r += ` ${slaveSkillIncrease('oral', slave, skillIncrease)}`; + set.add(` Having completed the basic sex slave curriculum, ${he} studies more advanced ways to use ${his} lips and tongue to please cocks, cunts, and asses. ${slaveSkillIncrease('oral', slave, skillIncrease)}`); } else if (slave.skill.whoring <= 30) { - r += ` Having completed the basic sex slave curriculum, ${he} studies intermediate prostitution, including how to stay as safe as possible and maximize ${his} efficiency.`; - r += ` ${slaveSkillIncrease('whoring', slave, skillIncrease)}`; + set.add(` Having completed the basic sex slave curriculum, ${he} studies intermediate prostitution, including how to stay as safe as possible and maximize ${his} efficiency. ${slaveSkillIncrease('whoring', slave, skillIncrease)}`); } else if (slave.skill.entertainment <= 30) { - r += ` Having completed the basic sex slave curriculum, ${he} studies courtesanship, including social dynamics and flirtation more subtle than straightforward begging for sex.`; - r += ` ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`; + set.add(` Having completed the basic sex slave curriculum, ${he} studies courtesanship, including social dynamics and flirtation more subtle than straightforward begging for sex. ${slaveSkillIncrease('entertainment', slave, skillIncrease)}`); } else if (slave.skill.vaginal <= 30 && slave.vagina >= 0) { - r += ` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} `; - if (slave.vagina === 0) { - r += `virgin pussy for use in ${his} first time.`; - } else { - r += `pussy.`; - } - r += ` ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`; + set.add(` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} ${(slave.vagina === 0) ? `virgin pussy for use in ${his} first time`:`pussy`}. ${slaveSkillIncrease('vaginal', slave, skillIncrease)}`); } else if (slave.skill.anal <= 30) { - r += ` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} `; - if (slave.anus === 0) { - r += `virgin ass for use in ${his} first time.`; - } else { - r += `ass.`; - } - r += ` ${slaveSkillIncrease('anal', slave, skillIncrease)}`; + set.add(` Having completed the basic sex slave curriculum, ${he} studies more advanced techniques and exotic positions to make use of ${his} ${(slave.anus === 0) ? `virgin ass for use in ${his} first time` : `ass`}. ${slaveSkillIncrease('anal', slave, skillIncrease)}`); } } } + if (lessons > 1) { + r += ` ${He} passed ${num(lessons)} exams this week.`; + } + for (const item of set) { + r += item; + } } /** diff --git a/src/npc/descriptions/mouth.js b/src/npc/descriptions/mouth.js index 2e31bcbc1cb5e75abe23cbd88db5538cccf8f9d8..41f0efc530cf68ef5e8de7d4f1bee56e82ff093f 100644 --- a/src/npc/descriptions/mouth.js +++ b/src/npc/descriptions/mouth.js @@ -56,9 +56,9 @@ App.Desc.mouth = function(slave) { } else { if (canTalk(slave)) { if (slave.lips > 70) { - r.push(`${He} can barely enunciate past ${his} dick-sucking lips; '${getWrittenTitle(slave)}' comes out as '${lispReplace(getWrittenTitle(slave))}.'`); const {title} = getEnunciation(slave); const writtenTitle = getWrittenTitle(slave); + r.push(`${He} can barely enunciate past ${his} dick-sucking lips;`); if (title === writtenTitle) { if (setup.badNames.includes(capFirstChar(writtenTitle))) { r.push(`unfortunately`); diff --git a/src/npc/interaction/fRelation.tw b/src/npc/interaction/fRelation.tw index 76a208997178b29c7f2c363497e3cd1e4ec84069..6cc29e525f815fcb5f7e903325fce0236280a026 100644 --- a/src/npc/interaction/fRelation.tw +++ b/src/npc/interaction/fRelation.tw @@ -33,7 +33,7 @@ <<run Enunciate(getSlave($AS))>> <<run App.Utils.setLocalPronouns(getSlave($AS))>> <<run addPartner(getSlave($AS), -1)>> -<<run addPartner(getSlave($AS), $partner)>> +<<run addPartner(getSlave($AS), $slaves[$partner])>> <<setLocalPronouns $slaves[$partner] 2>>