diff --git a/Changelog.txt b/Changelog.txt index c7772af86614ec71a98e2d3cc6e2b4fea8580552..fca166bd7af3a43f169a14bbcc21d1ddb099550c 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -2,6 +2,12 @@ Pregmod 0.10.7.1-3.5.x + 6/06/2020 + + 2 + -sub slave content expanded + -backend work + 5/13/2020 1 diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 46bb53da708ee564eae510c2bd536f490a3eed0d..d21532d362208997b0f0eceab3f226394a38bb44 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -1104,8 +1104,7 @@ App.Data.resetOnNGPlus = { milkmaidImpregnates: 0, /** @type {FC.SlaveStateOrZero} */ Farmer: 0, - /** @type {FC.SlaveStateOrZero} */ - Stewardess: 0, + StewardessID: 0, stewardessImpregnates: 0, /** @type {FC.SlaveStateOrZero} */ Schoolteacher: 0, diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index 1293db3e986a6e5023ee66f8f1ecccae094b444b..9badb48800271187d79b877d43287470b7051937 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -1,6 +1,6 @@ App.Version = { base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed. - pmod: "3.5.0", + pmod: "3.5.1", release: 1071, }; diff --git a/src/004-base/specialSlavesProxy.js b/src/004-base/specialSlavesProxy.js index 36ca1085ab44f8531695f28c0e3f66b3edb69cad..07e27ee0402c44331dcb78e62ec9f5e5a8860bf1 100644 --- a/src/004-base/specialSlavesProxy.js +++ b/src/004-base/specialSlavesProxy.js @@ -42,7 +42,7 @@ App.SpecialSlavesProxy = class SpecialSlavesProxy { return V.Schoolteacher; } get Stewardess() { - return V.Stewardess; + return slaveStateById(V.StewardessID); } get Stud() { return slaveStateById(V.StudID); diff --git a/src/Mods/SecExp/securityReport.tw b/src/Mods/SecExp/securityReport.tw index d4b0074ecdb0efe6c587b3a23d4c7d0f890d1ae4..eb5f88d1a94d919f7b3f72504af43b22b88d9e11 100644 --- a/src/Mods/SecExp/securityReport.tw +++ b/src/Mods/SecExp/securityReport.tw @@ -629,7 +629,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor The mercenaries do not appreciate the barely adequate wage given to them for their service. Still their professionalism keeps them determined to finish their contract. <<set _loyaltyChange += random(-5,5)>> <<else>> - The mercenaries do not appreciate the low wage given to them for their service.Their skill would be better served by a better contract and this world does not lack demand for guns for hire. + The mercenaries do not appreciate the low wage given to them for their service. Their skill would be better served by a better contract and this world does not lack demand for guns for hire. <<set _loyaltyChange -= random(5,10)>> <</if>> <<if $mercSoldierPrivilege == 1>> diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index 3ce6a3b7a02f1d9526fbceebd16bd4b27046b1f8..15c76b0794daf4304884b379088104cfe2310eef 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -2152,7 +2152,7 @@ globalThis.FacilityDatatypeCleanup = (function() { V.servantsQuarters = Math.max(+V.servantsQuarters, 0) || 0; V.servantsQuartersUpgradeMonitoring = Math.clamp(+V.servantsQuartersUpgradeMonitoring, 0, 1) || 0; /* stewardess */ - V.Stewardess = V.slaves.find(s => s.assignment === Job.STEWARD) || 0; + V.StewardessID = findSlaveId(s => s.assignment === Job.STEWARD); V.stewardessImpregnates = Math.clamp(+V.stewardessImpregnates, 0, 1) || 0; } diff --git a/src/endWeek/endWeek.js b/src/endWeek/endWeek.js index 56c114d32c7a9b31ee58340a8e80ee51c594f96d..6fdeb9f60703361abab5a025d25e6d58a45bf11e 100644 --- a/src/endWeek/endWeek.js +++ b/src/endWeek/endWeek.js @@ -297,7 +297,6 @@ globalThis.endWeek = (function() { V.DJRepBonus = 0; V.Milkmaid = 0; V.Farmer = 0; - V.Stewardess = 0; V.Schoolteacher = 0; V.Wardeness = 0; V.Concubine = 0; diff --git a/src/endWeek/saDrugs.js b/src/endWeek/saDrugs.js index 455d9d7929d2b04ef9deebd2fa628055a9fc8d9f..37504c2890d44ddb7bb6b71bf6111128ff76a18b 100644 --- a/src/endWeek/saDrugs.js +++ b/src/endWeek/saDrugs.js @@ -978,7 +978,7 @@ App.SlaveAssignment.drugs = (function() { } // health issues if (jsRandom(1, 10) === 1 && growth !== 5) { - r += ` The stimulants stressed slave.slaveName's body more than expected, <span class="red">damaging ${his} health.</span>`; + r += ` The stimulants stressed ${slave.slaveName}'s body more than expected, <span class="red">damaging ${his} health.</span>`; healthDamage(slave, 10); } if (slave.physicalAge > V.maxGrowthAge) { @@ -1781,7 +1781,7 @@ App.SlaveAssignment.drugs = (function() { r += ` and can't help but <span class="gold">worry a little about ${his} well-being.</span>`; slave.trust -= 1; } else { - r += ` but ${he} carries on without complaint, keeping ${his} <span class="mediumorchid">growing doubts</span> to $himself.`; + r += ` but ${he} carries on without complaint, keeping ${his} <span class="mediumorchid">growing doubts</span> to ${himself}.`; slave.devotion -= 2; } } else if (slave.health.tired > 60) { diff --git a/src/endWeek/saGetMilked.js b/src/endWeek/saGetMilked.js index 046414c081eb4f47d2752b7d8a2ad9ab5feb6c83..1bef5b03cfae8bf73f6760523dced021239e3421 100644 --- a/src/endWeek/saGetMilked.js +++ b/src/endWeek/saGetMilked.js @@ -482,7 +482,7 @@ App.SlaveAssignment.getMilked = (function() { } else { r += `butt is machine-fucked`; } - r += ` to extract the cum from $his `; + r += ` to extract the cum from ${his} `; if (slave.scrotum === 0) { r += `invisible`; } else { diff --git a/src/endWeek/saInflation.js b/src/endWeek/saInflation.js index 780937d0670cf0dcd3cfdfa2c5018a7c3c4c3d38..10ea153a1306a13259732e9cccdc2f831144c523 100644 --- a/src/endWeek/saInflation.js +++ b/src/endWeek/saInflation.js @@ -69,7 +69,7 @@ App.SlaveAssignment.inflation = (function() { slave.inflationMethod = 0; SetBellySize(slave); } else if (slave.inflationType === "milk" && slave.inflationMethod === 3 && cow.lactation === 0) { - r.push(`${cow.slaveName} is no longer lactating and thus can no longer keep slave.slaveName filled with milk. <span class="yellow">${His} inflation regimen has been ended.</span>`); + r.push(`${cow.slaveName} is no longer lactating and thus can no longer keep ${slave.slaveName} filled with milk. <span class="yellow">${His} inflation regimen has been ended.</span>`); slave.inflation = 0; slave.inflationType = "none"; slave.inflationMethod = 0; @@ -82,7 +82,7 @@ App.SlaveAssignment.inflation = (function() { slave.inflationMethod = 0; SetBellySize(slave); } else if (slave.inflationType === "cum" && slave.inflationMethod === 3 && cow.balls === 0) { - r.push(`${cow.slaveName} no longer has testicles and thus can no longer keep slave.slaveName filled with cum. <span class="yellow">${His} inflation regimen has been ended.</span>`); + r.push(`${cow.slaveName} no longer has testicles and thus can no longer keep ${slave.slaveName} filled with cum. <span class="yellow">${His} inflation regimen has been ended.</span>`); slave.inflation = 0; slave.inflationType = "none"; slave.inflationMethod = 0; diff --git a/src/endWeek/saRules_old.js b/src/endWeek/saRules_old.js index 43d0f3b6308d8838f8a0aa052217f6b37240ba86..cf4c012f03cea205da3832881b7e0f8f677cd5be 100644 --- a/src/endWeek/saRules_old.js +++ b/src/endWeek/saRules_old.js @@ -314,7 +314,7 @@ } } else if (slave.fetishKnown && slave.fetishStrength > 60) { if (slave.fetish === "sadist") { - if (App.Entity.facilities.nursery.employeesIDs().sizeh > 2) { + if (App.Entity.facilities.nursery.employeesIDs().size > 2) { r += `Under the rules, ${he}'s allowed to sexually abuse other slaves, and ${he} <span class="hotpink">adores</span> you for providing a whole nursery of slaves for ${him} to rape. `; } else { r += `Under the rules, ${he}'s allowed to sexually abuse other slaves, and ${he} <span class="hotpink">eagerly awaits</span> the day ${V.Matron ? `more of your slaves join ${him} in ${V.nurseryName}` : `you assign more nurses to ${V.nurseryName} to help ${him} unwind`}. `; @@ -465,7 +465,7 @@ case "confinement": r += `When ${he} disobeys, ${he}'s`; if (V.cellblock) { - r += `<span class="gold">put in $cellblockName</span>${V.Wardeness ? `, where ${he} can experience ${Wardeness.slaveName}'s tender mercies` : ``}. `; + r += `<span class="gold">put in $cellblockName</span>${V.Wardeness ? `, where ${he} can experience ${V.Wardeness.slaveName}'s tender mercies` : ``}. `; } else { r += `<span class="gold">shut up in a box</span> until ${he} behaves. `; } diff --git a/src/endWeek/saServant.js b/src/endWeek/saServant.js index bf1205953bbafe76c3e8d018f8b14e6ff74cbfab..7aee822d5cbb6a214552ac6679502021d56198fd 100644 --- a/src/endWeek/saServant.js +++ b/src/endWeek/saServant.js @@ -8,15 +8,18 @@ App.SlaveAssignment.servant = (function() { let cash; let oralUse; + let stewardessBonus; return saServant; /** * @param {App.Entity.SlaveState} slave + * @param {number} [bonus=0] - bonus from facility leader effects * @returns {string} */ - function saServant(slave) { + function saServant(slave, bonus=0) { r = []; + stewardessBonus = bonus; ({ // eslint-disable-next-line no-unused-vars @@ -59,8 +62,8 @@ App.SlaveAssignment.servant = (function() { r.push(`Since there's extra space in the servants' quarters, ${V.assistant.name} attaches ${him} to the cadre of maids there.`); V.servantsQuartersSpots--; } - if (V.Stewardess !== 0) { - r.push(`This brings ${him} under ${V.Stewardess.slaveName}'s supervision. The Stewardess`); + if (S.Stewardess) { + r.push(`This brings ${him} under ${S.Stewardess.slaveName}'s supervision. The Stewardess`); if (slave.devotion < -20) { r.push(`subjects ${him} to <span class="trust dec">corrective rape</span> when ${his} service is imperfect, <span class="devotion inc">when ${he} steps out of line,</span> or when the Stewardess just feels like raping ${him}, forcing the poor slave to <span class="yellowgreen">find refuge in work.</span>`); slave.devotion += 2; @@ -74,13 +77,13 @@ App.SlaveAssignment.servant = (function() { } // Portion that calculates upkeep reduction, we call it income if (!(canHear(slave))) { - r.push(`However, ${his} inability to hear often leaves ${him} oblivious to ${V.Stewardess.slaveName}'s orders, limiting their meaningful interactions.`); - cash = V.stewardessBonus / 4 * healthPenalty(slave); + r.push(`However, ${his} inability to hear often leaves ${him} oblivious to ${S.Stewardess.slaveName}'s orders, limiting their meaningful interactions.`); + cash = stewardessBonus / 4 * healthPenalty(slave); } else if ((slave.hears === -1 && slave.earwear !== "hearing aids") || (slave.hears === 0 && slave.earwear === "muffling ear plugs")) { - r.push(`However, ${he} often doesn't catch what ${V.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`); - cash = V.stewardessBonus / 2 * healthPenalty(slave); + r.push(`However, ${he} often doesn't catch what ${S.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`); + cash = stewardessBonus / 2 * healthPenalty(slave); } else { - cash = V.stewardessBonus * healthPenalty(slave); + cash = stewardessBonus * healthPenalty(slave); } if (slave.assignment === window.Job.HOUSE) { cashX(cash, "slaveAssignmentHouse", slave); @@ -222,8 +225,8 @@ App.SlaveAssignment.servant = (function() { r.push(`${He} is assigned easy tasks <span class="green">so ${he} may rest</span> while still being productive.`); } else if (slave.health.tired + 11 >= 90 && !willWorkToDeath(slave)) { r.push(`${He} attempts to refuse to work due to ${his} exhaustion, but can do little to avoid it or the resulting`); - if (V.Stewardess !== 0) { - r.push(`<span class="trust dec">severe punishment</span> by ${V.Stewardess.slaveName}. ${His} slacking is kept in check by your watchful Stewardess keeping $him on task, but by the end of ${his} shift, <span class="devotion dec">${his} thoughts are made clear in the poor job ${he} did.</span>`); + if (S.Stewardess) { + r.push(`<span class="trust dec">severe punishment</span> by ${S.Stewardess.slaveName}. ${His} slacking is kept in check by your watchful Stewardess keeping ${him} on task, but by the end of ${his} shift, <span class="devotion dec">${his} thoughts are made clear in the poor job ${he} did.</span>`); } else { r.push(`<span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">accomplishes little,</span> having chosen ${his} overall well-being over the consequences.`); } @@ -243,8 +246,8 @@ App.SlaveAssignment.servant = (function() { r.push(`${He} is assigned easy tasks <span class="green">so ${he} may rest</span> while still being productive.`); } else if (slave.health.tired + 11 >= 90 && !willWorkToDeath(slave)) { r.push(`${He} attempts to refuse to work due to ${his} exhaustion, but can do little to avoid it or the resulting`); - if (V.servantsQuarters > 0 && V.universalRulesFacilityWork === 1 && V.servantsQuartersSpots > 0 && V.Stewardess !== 0) { - r.push(`<span class="trust dec">severe punishment</span> by ${V.Stewardess.slaveName}. ${His} slacking is kept in check by your watchful Stewardess keeping $him on task, but by the end of ${his} shift, <span class="devotion dec">${his} thoughts are made clear in the poor job ${he} did.</span>`); + if (V.servantsQuarters > 0 && V.universalRulesFacilityWork === 1 && V.servantsQuartersSpots > 0 && S.Stewardess) { + r.push(`<span class="trust dec">severe punishment</span> by ${S.Stewardess.slaveName}. ${His} slacking is kept in check by your watchful Stewardess keeping ${him} on task, but by the end of ${his} shift, <span class="devotion dec">${his} thoughts are made clear in the poor job ${he} did.</span>`); } else { r.push(`<span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">accomplishes little,</span> having chosen ${his} overall well-being over the consequences.`); } diff --git a/src/endWeek/saServeYourOtherSlaves.js b/src/endWeek/saServeYourOtherSlaves.js index c98bcc2d17573307aa78145b84effc3090719b26..b14d8ab1ff6ab16f3019871236626cf6ffc921ee 100644 --- a/src/endWeek/saServeYourOtherSlaves.js +++ b/src/endWeek/saServeYourOtherSlaves.js @@ -986,7 +986,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { } else if (slave.balls < 30) { r.push(`melon-sized balls are`); } else { - r.push(`$his hypertrophied balls are`); + r.push(`${his} hypertrophied balls are`); } r.push(`licked and sucked clean of slave food.`); if (slave.ballType !== "sterile") { @@ -1292,7 +1292,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { } else { r.push(`fingers.`); } - r.push(`They rove across ${his} ${subRace} body, knowing just where to touch and where to press. <span class="hotpink">${domName} enjoys having a compliant ${girl} friend,</span > and they spend as much time together as they can.`); + r.push(`They rove across ${his} ${subRace} body, knowing just where to touch and where to press. <span class="hotpink">${domName} enjoys having a compliant ${girl} friend,</span> and they spend as much time together as they can.`); } if (canPenetrate(domSlave)) { fuckCount = jsRandom(9, 12); diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js index e5204a0889b95bf553405b26c8eaab8728138c7e..4a5dacf8093322fff3e13b6ce70b854005141f3a 100644 --- a/src/endWeek/saWorkAGloryHole.js +++ b/src/endWeek/saWorkAGloryHole.js @@ -154,11 +154,11 @@ App.SlaveAssignment.workAGloryHole = (function() { } if (slave.assignment === Job.ARCADE) { if (!slave.fuckdoll) { - r += ` $He spends $his working hours constrained to a box, and $his time outside preparing for $his next shift; <span class="red">an exhausting life for even the healthiest of slaves.</span>`; + r += ` ${He} spends ${his} working hours constrained to a box, and ${his} time outside preparing for ${his} next shift; <span class="red">an exhausting life for even the healthiest of slaves.</span>`; if (V.arcadeUpgradeHealth > 0) { r += ` The curative cocktail pumped into ${him} is laced with `; if (V.arcadeUpgradeHealth === 2) { - r += `sedatives and painkillers to keep $him in a <span class="green">state of forced rest.</span>`; + r += `sedatives and painkillers to keep ${him} in a <span class="green">state of forced rest.</span>`; } else { r += `painkillers and mild muscle relaxants; Not enough to ruin a customer's fun, but enough to keep ${him} in a <span class="green">state of pseudo-rest.</span>`; } diff --git a/src/endWeek/servantsQuartersReport.js b/src/endWeek/servantsQuartersReport.js new file mode 100644 index 0000000000000000000000000000000000000000..8d4355f1dbfde62ac8773b3b073299a7cb5cc68b --- /dev/null +++ b/src/endWeek/servantsQuartersReport.js @@ -0,0 +1,353 @@ +App.EndWeek.servantsQuartersReport = function() { + let frag = document.createDocumentFragment(); + + const slaves = App.Utils.sortedEmployees(App.Entity.facilities.servantsQuarters); + const devBonus = (V.servantsQuartersDecoration !== "standard") ? 1 : 0; + let stewardessBonus = 0; + + function stewardessText() { + let r = []; + let FLsFetish = 0; + let stewardessImpregnated = 0; + + if (S.Stewardess) { + S.Stewardess.devotion += devBonus; + if (S.Stewardess.health.condition < -80) { + improveCondition(S.Stewardess, 20); + } else if ((S.Stewardess.health.condition < -40)) { + improveCondition(S.Stewardess, 15); + } else if ((S.Stewardess.health.condition < 0)) { + improveCondition(S.Stewardess, 10); + } else if ((S.Stewardess.health.condition < 90)) { + improveCondition(S.Stewardess, 7); + } + if (S.Stewardess.devotion <= 60) { + S.Stewardess.devotion++; + } + if (S.Stewardess.trust < 60) { + S.Stewardess.trust++; + } + if (S.Stewardess.fetishStrength <= 95) { + if (S.Stewardess.fetish !== "dom") { + if (fetishChangeChance(S.Stewardess) > jsRandom(0, 100)) { + FLsFetish = 1; + S.Stewardess.fetishKnown = 1; + S.Stewardess.fetish = "dom"; + } + } else if (S.Stewardess.fetishKnown === 0) { + FLsFetish = 1; + S.Stewardess.fetishKnown = 1; + } else { + FLsFetish = 2; + S.Stewardess.fetishStrength += 4; + } + } + if (S.Stewardess.rules.living !== "luxurious") { + S.Stewardess.rules.living = "luxurious"; + } + + const {He, he, His, his, him, wife} = getPronouns(S.Stewardess); + r.push(`${SlaveFullName(S.Stewardess)} is serving as your Stewardess.`); + if (S.Stewardess.relationship === -3 && S.Stewardess.devotion > 50) { + r.push(`${He} does ${his} best to be your perfect lovely house${wife}.`); + } + if (V.stewardessImpregnates === 1 && canPenetrate(S.Stewardess) && S.Stewardess.pubertyXY === 1) { + for (const slave of slaves) { + if (canImpreg(slave, S.Stewardess)) { // FIXME: assumes vaginal pregnancy without check + seX(S.Stewardess, "penetrative", slave, "vaginal", 10); + r.push(knockMeUp(slave, 100, 2, S.Stewardess.ID)); + if (slave.vagina === 0) { + slave.vagina = 1; // FIXME: silent virginity loss? + } + stewardessImpregnated++; + slave.need = 0; + } + } + if (stewardessImpregnated > 0) { + r.push(`It's ${his} responsibility to keep ${his} charges pregnant, so`); + if (stewardessImpregnated === 1) { + r.push(`${he} cums in the only fertile slave's pussy all week.`); + } else { + r.push(`${he} ensures the ${stewardessImpregnated} fertile servants are full of ${his} cum at all times.`); + } + if (S.Stewardess.career === "a breeding bull") { + r.push(`${He} was conditioned to fill empty wombs, so ${he} takes a <span class="hotpink">deep pleasure</span> in ${his} job.`); + S.Stewardess.devotion++; + } + S.Stewardess.need = 0; + } + } + if (FLsFetish === 1) { + r.push(`${He}'s allowed and even expected to use ${his} charges for ${his} own gratification, and sometimes they'll even instigate submissive sex with ${him} just to ingratiate themselves. ${He} becomes comfortable with the role of a <span class="lightcoral">sexual dominant.</span>`); + } else if (FLsFetish === 2) { + r.push(`Having a legion of servants jumping to obey ${his} daily commands <span class="lightsalmon">makes ${him} more dominant.</span>`); + } + if (S.Stewardess.health.condition < 10) { + r.push(`Though ${he} tries to watch the servants, ${his} lack of good health inhibits ${him}.`); + } else if (S.Stewardess.health.condition < 80) { + stewardessBonus += 50; + r.push(`${His} good health allows ${him} to work long hours and <span class="yellowgreen">drive</span> the servants hard.`); + } else { + stewardessBonus += 75; + r.push(`${His} perfect health allows ${him} to work exhaustive hours and <span class="yellowgreen">drive</span> the servants very hard.`); + } + if (setup.stewardessCareers.includes(S.Stewardess.career)) { + stewardessBonus += 25; + r.push(`${He} has applicable experience with daily sums and organizational trifles from ${his} life before ${he} was a slave.`); + } else if (S.Stewardess.skill.stewardess >= V.masteredXP) { + stewardessBonus += 25; + r.push(`${He} has applicable experience with daily sums and organizational trifles from working for you.`); + } else { + S.Stewardess.skill.stewardess += jsRandom(1, Math.ceil((S.Stewardess.intelligence + S.Stewardess.intelligenceImplant) / 15) + 8); + } + if (S.Stewardess.actualAge > 35) { + stewardessBonus += 25; + r.push(`${His} age and experience give ${him} added effectiveness.`); + } else if (V.AgePenalty === 0) { + stewardessBonus +=25; + } + if (S.Stewardess.intelligence + S.Stewardess.intelligenceImplant > 15) { + stewardessBonus += S.Stewardess.intelligence + S.Stewardess.intelligenceImplant; + r.push(`${He}'s smart enough that ${he} misses very little.`); + } + const bonusToggle = S.Stewardess.energy > 95 || (S.Stewardess.fetishKnown === 1 && S.Stewardess.fetish === "dom"); + for (const slave of slaves) { + const {he2, him2, his2} = getPronouns(slave).appendSuffix('2'); + if (S.Stewardess.rivalryTarget === slave.ID) { + r.push(`${He} bears down on ${his} ${rivalryTerm(S.Stewardess)}, ${slave.slaveName}, forcing ${him2} to work extra hard or suffer punishment.`); + slave.devotion--; + slave.trust--; + if (jsRandom(1, 100) > 65) { + S.Stewardess.rivalry++; + slave.rivalry++; + } + } else if (S.Stewardess.relationshipTarget === slave.ID) { + r.push(`${He} dotes over ${his} ${relationshipTerm(S.Stewardess)}}, _${slave.slaveName}, making sure ${he2} knows how to do a good job and keeping ${him2} well stocked with everything ${he2} needs.`); + slave.devotion++; + } else if (areRelated(S.Stewardess, slave)) { + r.push(`${He} pays special attention to ${his} ${relativeTerm(S.Stewardess, slave)}, ${slave.slaveName}, making sure ${he2} doesn't slack off just because they are related.`); + slave.trust++; + } + switch (slave.prestigeDesc) { + case "$He is a famed Free Cities whore, and commands top prices.": + r.push(`${He} does ${his} best to motivate the famous whore, ${slave.slaveName}, though ${he} is uncertain why ${he2} is here.`); + break; + case "$He is a famed Free Cities slut, and can please anyone.": + r.push(`${He} ignores ${his} duties in order the fawn over the famous entertainer, ${slave.slaveName}.`); + break; + case "$He is remembered for winning best in show as a cockmilker.": + if ((slave.dick !== 0) && (slave.balls !== 0) && (slave.prostate > 1)) { + r.push(`${slave.slaveName} leaves a trail of cum wherever ${he2} goes and frequently stops to masturbate, greatly annoying ${S.Stewardess.slaveName}.`); + if (jsRandom(1, 100) > 90 && S.Stewardess.rivalry === 0 && slave.rivalry === 0) { + S.Stewardess.rivalryTarget = slave.ID; + S.Stewardess.rivalry++; + slave.rivalryTarget = S.Stewardess.ID; + slave.rivalry++; + } + } + break; + case "$He is remembered for winning best in show as a dairy cow.": + if ((slave.lactation > 0) && ((slave.boobs-slave.boobsImplant) > 6000)) { + r.push(`${slave.slaveName}'s huge breasts frequently get in the way of ${his2} work and ${he2} leaks milk everywhere, greatly annoying ${S.Stewardess.slaveName}.`); + if (jsRandom(1, 100) > 90 && S.Stewardess.rivalry === 0 && slave.rivalry === 0) { + S.Stewardess.rivalryTarget = slave.ID; + S.Stewardess.rivalry++; + slave.rivalryTarget = S.Stewardess.ID; + slave.rivalry++; + } + } + break; + case "$He is remembered for winning best in show as a breeder.": + if (slave.bellyPreg >= 10000) { + r.push(`${slave.slaveName}'s big pregnant belly frequently gets in the way of ${his2} work. However, ${S.Stewardess.slaveName} is willing to overlook it, as well as allow ${him2} easy jobs, due to how valuable ${his2} womb is.`); + } + break; + } + if (bonusToggle && slave.devotion < 45) { + slave.devotion += 5; + } + } + if (slaves.length > 0) { + if (S.Stewardess.fetishKnown === 1 && S.Stewardess.fetish === "dom") { + r.push(`${He} walks among the cowering servants as a queen among peasants, playing the role of a dominant to perfection and increasing ${his} charges' <span class="hotpink">obedience.</span>`); + } else if (S.Stewardess.energy > 95) { + r.push(`${He} walks among the cowering servants looking for an excuse to extract sex from shirkers as <span class="hotpink">punishment.</span>`); + } + cashX(stewardessBonus * slaves.length, "servantsQuarters", S.Stewardess); + } + if (V.arcologies[0].FSRestart !== "unset" && stewardessImpregnated > 0 && V.eugenicsFullControl !== 1) { + r.push(`<br>The Societal Elite know you've ordered ${S.Stewardess.slaveName} to impregnate your maids. <span class="red">They are not amused by your disinterest in eugenics.</span>`); + V.failedElite += 10; + } + } + return r.join(' '); + } + + /** Generate (and return, if not silent) the "standard" part of the slave report + * @param {App.Entity.SlaveState} slave + * @param {boolean} silent + * @returns {HTMLElement|null} + */ + function standardSlaveReport(slave, silent) { + const clothes = App.SlaveAssignment.choosesOwnClothes(slave); + tired(slave); + const rules = App.UI.DOM.renderPassage("SA rules"); + const diet = App.UI.DOM.renderPassage("SA diet"); + const ltEffects = App.UI.DOM.renderPassage("SA long term effects"); + const drugs = App.SlaveAssignment.drugs(slave); + const relationships = App.UI.DOM.renderPassage("SA relationships"); + const rivalries = App.UI.DOM.renderPassage("SA rivalries"); + const devotion = App.UI.DOM.renderPassage("SA devotion"); + if (!silent) { + const content = App.UI.DOM.makeElement("div", '', "indent"); + $(content).append(clothes, rules, diet, ltEffects, drugs, relationships, rivalries, document.createElement('br'), devotion); + return content; + } + } + + const stewardessEffects = App.UI.DOM.appendNewElement("p", frag, '', "indent"); + $(stewardessEffects).append(stewardessText()); + + if (slaves.length > 0) { + const intro = App.UI.DOM.appendNewElement("p", frag, '', "indent"); + let r = []; + if (slaves.length > 1) { + r.push(`<strong>There are ${slaves.length} slaves working out of the servants' quarters.</strong> They work to`); + } else { + const {He} = getPronouns(slaves[0]); + r.push(`<strong>There is one slave working out of the servants' quarters.</strong> ${He} works to`); + } + r.push(`<span class="yellowgreen">reduce</span> your household expenses; having a well-staffed house slightly <span class="green">increases</span> your reputation.`); + $(intro).append(r.join(' ')); + } + + if (S.Stewardess) { + /** @type {App.Entity.SlaveState} */ + const slave = S.Stewardess; + V.i = V.slaveIndices[slave.ID]; + App.Utils.setLocalPronouns(slave); // need this for the includes + /* apply following SA passages to facility leader */ + if (V.showEWD !== 0) { + const stewardessEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); + if (V.seeImages && V.seeReportImages) { + App.UI.DOM.appendNewElement("div", stewardessEntry, App.Art.SlaveArtElement(slave, 0, 0), ["imageRef", "tinyImg"]); + } + $(stewardessEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> is serving as your Stewardess.`); + $(stewardessEntry).append(standardSlaveReport(slave, false)); + } else { + standardSlaveReport(slave, true); + } + } + + V.servantMilkersMultiplier = 0.5; + let SQMilk = 0; + let SQMilkSale = 0; + + for (const slave of slaves) { + V.i = V.slaveIndices[slave.ID]; + slave.devotion += devBonus; + if (slave.devotion <= 20 && slave.trust >= -20) { + slave.devotion -= 5; + slave.trust -= 5; + } else if (slave.devotion <= 10) { + slave.devotion += 2; + } else if (slave.devotion >= 80) { + slave.devotion -= 2; + } + if (slave.devotion < -20) { + slave.trust += 3; + } else if (slave.trust < -50) { + slave.trust += 2; + } else if (slave.trust < -30) { + slave.trust += 1; + } + if (slave.health.condition < -80) { + improveCondition(slave, 20); + } else if (slave.health.condition < -40) { + improveCondition(slave, 10); + } else if (slave.health.condition < 0) { + improveCondition(slave, 7); + } else if (slave.health.condition < 90) { + improveCondition(slave, 3); + } + switch (V.servantsQuartersDecoration) { + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Degradationist": + case "Edo Revivalist": + case "Egyptian Revivalist": + case "Roman Revivalist": + case "Subjugationist": + case "Supremacist": + slave.rules.living = "spare"; + break; + case "Slave Professionalism": + if (slave.intelligence+slave.intelligenceImplant > 15) { + slave.rules.living = "normal"; + } else { + slave.rules.living = "spare"; + } + break; + case "Petite Admiration": + case "Statuesque Glorification": + if (heightPass(slave)) { + slave.rules.living = "normal"; + } else { + slave.rules.living = "spare"; + } + break; + default: + slave.rules.living = "normal"; + } + + App.Utils.setLocalPronouns(slave); // need this for the includes + if (V.showEWD !== 0) { + const {He} = getPronouns(slave); + const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); + if (V.seeImages && V.seeReportImages) { + App.UI.DOM.appendNewElement("div", slaveEntry, App.Art.SlaveArtElement(slave, 0, 0), ["imageRef", "tinyImg"]); + } + $(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `); + if (slave.choosesOwnAssignment === 2) { + $(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job")); + } else { + $(slaveEntry).append(`is working out of ${V.servantsQuartersName}.`); + } + const servantContent = App.UI.DOM.appendNewElement("div", slaveEntry, '', "indent"); + $(servantContent).append(`${He} ${App.SlaveAssignment.servant(slave, stewardessBonus)}`); + if ((V.servantMilkers === 1) && (slave.lactation > 0)) { + const milkContent = App.UI.DOM.appendNewElement("div", slaveEntry, '', "indent"); + $(milkContent).append(`${He} ${App.SlaveAssignment.getMilked(slave)}`); + SQMilk += V.milk; + SQMilkSale += V.milkSale; + } + $(slaveEntry).append(standardSlaveReport(slave, false)); + } else { + // discard return values silently + App.SlaveAssignment.servant(slave, stewardessBonus); + if ((V.servantMilkers === 1) && (slave.lactation > 0)) { + App.SlaveAssignment.getMilked(slave); + SQMilk += V.milk; + SQMilkSale += V.milkSale; + } + standardSlaveReport(slave, true); + } + } + + if (SQMilk > 0) { + const milkEffects = App.UI.DOM.appendNewElement("p", frag, '', "indent"); + $(milkEffects).append(`Since your lactating servants spend most of their time working in the penthouse, they use the milkers there, giving ${SQMilk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(SQMilkSale)}.</span>`); + } + + if (V.servantsQuartersDecoration !== "standard") { + const decorationEffects = App.UI.DOM.appendNewElement("p", frag, '', "indent"); + $(decorationEffects).append(`${V.servantsQuartersNameCaps}'s ${V.servantsQuartersDecoration} atmosphere <span class="hotpink">has a minor impact on your servants.</span>`); + } + + V.servantMilkersMultiplier = 1; + repX(slaves.length * 20, "servantsQuarters"); + + return frag; +}; diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index 64bfb6ffd7cf808552f35fea961eac9f565b7a3f..de174c7a7da10a0d8203342428b4d56dab3f3fa9 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -561,30 +561,29 @@ App.EndWeek.slaveAssignmentReport = function() { } break; case Job.STEWARD: - V.Stewardess = slave; if (!canTalk(slave)) { _printSlaveUnassignedNote(slave, "can't give servants verbal orders"); - V.Stewardess = 0; + V.StewardessID = 0; } else if (slave.preg > 37 && slave.broodmother === 2) { _printSlaveUnassignedNote(slave, "spends so much time giving birth and laboring that", `${getPronouns(slave).he} cannot effectively serve as your Stewardess any longer`); - V.Stewardess = 0; + V.StewardessID = 0; } else if (slave.fetish === "mindbroken") { _printSlaveUnassignedNote(slave, "is mindbroken"); - V.Stewardess = 0; + V.StewardessID = 0; } else if (!canWalk(slave)) { _printSlaveUnassignedNote(slave, "is no longer independently mobile"); - V.Stewardess = 0; + V.StewardessID = 0; } else if (!canHold(slave)) { _printSlaveUnassignedNote(slave, `can no longer handle ${getPronouns(slave).his} underlings nor effectively clean`); - V.Stewardess = 0; + V.StewardessID = 0; } else if (!canSee(slave)) { _printSlaveUnassignedNote(slave, "can no longer see"); - V.Stewardess = 0; + V.StewardessID = 0; } else if (!canHear(slave)) { _printSlaveUnassignedNote(slave, "can no longer hear"); - V.Stewardess = 0; + V.StewardessID = 0; } - if (V.Stewardess === 0) { + if (V.StewardessID === 0) { removeJob(slave, Job.STEWARD); } break; diff --git a/src/events/RESS/waistlineWoes.js b/src/events/RESS/waistlineWoes.js index 9db20b016ef210e77a55e1ac18cb519b7b4a839e..14feb646d8d3c9597fc446d54cbe9a007c3796a2 100644 --- a/src/events/RESS/waistlineWoes.js +++ b/src/events/RESS/waistlineWoes.js @@ -184,7 +184,7 @@ App.Events.RESSWaistlineWoes = class RESSWaistlineWoes extends App.Events.BaseEv let t = []; t.push(`${He}'s left standing there blankly, uncertain on just how to respond to such a bold statement. ${He}'s even less certain when you invite ${him} to join you for lunch in the cafeteria for the rest of the week. You want chubby and what ${he} is barely comes close.`); if (eventSlave.behavioralQuirk === "insecure") { - t.push(`${He} <span class="devotion inc">enjoys</span> you watching ${him} stuff ${himself} and quivers with delight as you measure the progress of ${his} waistline. By week's end, you're treated to the lovely sight of $his <span class="lime">new belly jiggling</span> as ${he} passes by your office.`); + t.push(`${He} <span class="devotion inc">enjoys</span> you watching ${him} stuff ${himself} and quivers with delight as you measure the progress of ${his} waistline. By week's end, you're treated to the lovely sight of ${his} <span class="lime">new belly jiggling</span> as ${he} passes by your office.`); eventSlave.weight += 10; } else if (eventSlave.behavioralFlaw === "gluttonous") { t.push(`${He} <span class="devotion inc">thoroughly enjoys</span> being permitted to stuff ${his} face for your amusement, even if your lunch is in jeopardy for the duration of the week. There is no denying the results, however, as you savor the sight of the <span class="lime">chubby ${girl}</span> jiggling past your office when it's over.`); diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css index 083a1985fe51bbd417f4718fbc95ced8beb78041..e380ff8791f1bc0c60203b6c2562700912828939 100644 --- a/src/gui/css/mainStyleSheet.css +++ b/src/gui/css/mainStyleSheet.css @@ -307,6 +307,10 @@ table.corporate td { .tab { margin-left: 2em; } +div.slave-report { + margin-top: 1em; + margin-bottom: 1em; +} div.indent, p.indent { text-indent: 2em; } diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js index 8e0722e0e0f63b5c1b545e4ccfc6e603a0eaa88c..a065abf550d9de0b33c6ee0106c0c873d766be12 100644 --- a/src/interaction/main/walkPast.js +++ b/src/interaction/main/walkPast.js @@ -4550,7 +4550,7 @@ globalThis.walkPast = (function() { if (slave.boobs > (slave.belly+250)) { t += `${slave.slaveName}'s gigantic breasts push out ${his} overalls so far that ${his} huge implant-filled belly is left halfway uncovered.`; } else { - t += `The front of slave.slaveName's overalls barely covers half of ${his} huge implant-filled pregnant belly.`; + t += `The front of ${slave.slaveName}'s overalls barely covers half of ${his} huge implant-filled pregnant belly.`; } break; case "an apron": diff --git a/src/interaction/wardrobeUse.js b/src/interaction/wardrobeUse.js index 2d00eea7b39aada17f8919ed60c5119b6b59abb9..ce542db95738e535cb35ce6be78517efdef3f2de 100644 --- a/src/interaction/wardrobeUse.js +++ b/src/interaction/wardrobeUse.js @@ -93,7 +93,7 @@ App.UI.Wardrobe.collar = function(slave) { if (slave.fuckdoll !== 0) { return; } - // <<collarDescription>> + // <<= App.Desc.collar($activeSlave)>> let el = document.createElement('div'); let label = document.createElement('div'); @@ -277,7 +277,7 @@ App.UI.Wardrobe.armAccessory = function(slave) { } let el = document.createElement('div'); - // <<armwearDescription>> + // App.Desc.armwear(slave) let label = document.createElement('div'); label.append(`Arm accessory: `); @@ -663,7 +663,7 @@ App.UI.Wardrobe.vaginalAttachment = function(slave) { } else if (slave.vaginalAccessory === "none") { return jQuery('#vaginalAttachment').empty(); } - // <<vaginalAttachmentDescription>> + // App.Desc.vaginalAttachment(slave); const { // eslint-disable-next-line no-unused-vars diff --git a/src/js/assayJS.js b/src/js/assayJS.js index 0f5cdb5ce5f16ea133802f2997c2c89971cfa5fd..e2082d7c3c414e457f7eea0cad9cfc11552490c3 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -78,7 +78,7 @@ globalThis.inferiorRaceP = function(slave) { */ globalThis.isLeaderP = function(slave) { /** @type {FC.SlaveStateOrZero[]} */ - const leaders = [V.HeadGirl, V.Bodyguard, V.Recruiter, V.Concubine, V.Nurse, S.Attendant, V.Matron, V.Madam, V.DJ, V.Milkmaid, V.Farmer, V.Stewardess, V.Schoolteacher, V.Wardeness]; + const leaders = [V.HeadGirl, V.Bodyguard, V.Recruiter, V.Concubine, V.Nurse, S.Attendant, V.Matron, V.Madam, V.DJ, V.Milkmaid, V.Farmer, S.Stewardess, V.Schoolteacher, V.Wardeness]; return leaders.some(leader => leader && leader.ID && leader.ID === slave.ID); }; diff --git a/src/js/assignJS.js b/src/js/assignJS.js index e40f3e6136ffa32b284a9bf385a4c6c46b1dd307..a79213523cab2231a372807a8bda25c85a24d73f 100644 --- a/src/js/assignJS.js +++ b/src/js/assignJS.js @@ -506,8 +506,8 @@ globalThis.removeJob = function(slave, assignment, saveRecord = false) { V.Matron = 0; } else if (V.Nurse !== 0 && slave.ID === V.Nurse.ID) { V.Nurse = 0; - } else if (V.Stewardess !== 0 && slave.ID === V.Stewardess.ID) { - V.Stewardess = 0; + } else if (V.StewardessID === slave.ID) { + V.StewardessID = 0; } else if (V.Wardeness !== 0 && slave.ID === V.Wardeness.ID) { V.Wardeness = 0; } else if (V.Concubine !== 0 && slave.ID === V.Concubine.ID) { diff --git a/src/js/modification.js b/src/js/modification.js index c9c04d9e3d9036bf4f1eada534ccdc5e4903dac1..6240b073b6fc81f9c85aaddf8aaf1664d7767495 100644 --- a/src/js/modification.js +++ b/src/js/modification.js @@ -298,7 +298,7 @@ App.Medicine.Modification.setPiercing = function(slave, location, weight) { r += `${His} girly new `; switch (location) { case "ear": - r += `pierced ears should help ${him} a little with $his issues about ${his} self-image as a fuckable slave girl. `; + r += `pierced ears should help ${him} a little with ${his} issues about ${his} self-image as a fuckable slave girl. `; break; case "lips": r += `facial piercing, just below ${his} pretty mouth, should help ${him} get used to the idea of it being a warm, wet hole for cocks. `; @@ -379,7 +379,7 @@ App.Medicine.Modification.setTattoo = function(slave, location, design) { r += `${he} giggles.`; break; case "rude words": - r += `$He stares, $his mouth working as $he spells out `; + r += `${He} stares, ${his} mouth working as ${he} spells out `; if (slave.vagina > -1) { r += `'Fucktoy's Favorite Fuckhole.' ${He} smiles naughtily. "${Master}, it sure i${s}, `; } else { @@ -418,7 +418,7 @@ App.Medicine.Modification.setTattoo = function(slave, location, design) { break; case "flowers": case "tribal patterns": - r += `${He} gasps at the beautiful design. "It'${s} ${s}o pretty, ${Master}," $he ${say}s. "Thank you. I love you ${s}o much!"`; + r += `${He} gasps at the beautiful design. "It'${s} ${s}o pretty, ${Master}," ${he} ${say}s. "Thank you. I love you ${s}o much!"`; break; case "advertisements": case "degradation": @@ -459,7 +459,7 @@ App.Medicine.Modification.setTattoo = function(slave, location, design) { r += `${He} stares, `; switch (design) { case "bleached": - r += `fascinated. $He doesn't seem sure what to make of this. `; + r += `fascinated. ${He} doesn't seem sure what to make of this. `; break; case "flowers": case "tribal patterns": diff --git a/src/js/pregJS.js b/src/js/pregJS.js index 39d567cde31dcd49e6c25b1b4319d4480907a95e..1bcec8237648c669fcf309e101b18aa885ef1829 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -414,14 +414,15 @@ globalThis.setPregType = function(actor) { return Math.ceil(ovum); }; -/* - Penetrative ability, ability to become pregnant, and canBreed() must be checked outside of this. Designed to assume .eggType === "human". - target is the slave to get pregnant. Also accepts the PC. - chance is the % chance to conceive. - hole control's the hole involved (0 - vagina, 1 - ass, 2 - both). .mpreg did this. - fatherID is the ID of her sire or 0 if undefined. - displayOverride is an override if defined - fatherID must be defined in this case. -*/ +/** Attempt to get a slave pregnant + * Penetrative ability, ability to become pregnant, and canBreed() must be checked outside of this. Designed to assume .eggType === "human". + * @param {App.Entity.SlaveState} target is the slave to get pregnant. Also accepts the PC. + * @param {number} chance is the % chance to conceive. + * @param {number} hole control's the hole involved (0 - vagina, 1 - ass, 2 - both). .mpreg did this. + * @param {number} [fatherID] is the ID of her sire or 0 if undefined. + * @param {boolean} [displayOverride] is an override if defined - fatherID must be defined in this case. + * @returns {string} + */ globalThis.knockMeUp = function(target, chance, hole, fatherID, displayOverride) { let He; let r = ``; diff --git a/src/js/rulesAutosurgery.js b/src/js/rulesAutosurgery.js index 5f145b80d1fee004ebe2c38075d66bc1a5d9aee3..80fdc094750671a602ae7c94b26e1e869443772e 100644 --- a/src/js/rulesAutosurgery.js +++ b/src/js/rulesAutosurgery.js @@ -454,7 +454,7 @@ globalThis.rulesAutosurgery = (function() { surgeriesDisplay = surgeries.slice(0, surgeries.length - 1).join(", "); surgeriesDisplay += `, and ${surgeries[surgeries.length - 1]}`; } - r += `${capFirstChar(V.assistant.name)}, ordered to apply surgery, gives ${slave.slaveName} ${numberWithPlural(surgeries.length, 'a single operation', `${surgeries.length} surgeries`)}: <span class="lime">${surgeriesDisplay}.</span>`; + r += `${capFirstChar(V.assistant.name)}, ordered to apply surgery, gives ${slave.slaveName} ${surgeries.length > 1 ? `${surgeries.length} surgeries` : 'a single operation'}: <span class="lime">${surgeriesDisplay}.</span>`; } /** diff --git a/src/npc/descriptions/accent.js b/src/npc/descriptions/accent.js index 07ef4aad9dbcf41c7c6ca41e5132c6f51eda1651..32787c8736a8840b185df3b02c042f3a536e284c 100644 --- a/src/npc/descriptions/accent.js +++ b/src/npc/descriptions/accent.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.accent = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/belly/belly.js b/src/npc/descriptions/belly/belly.js index 6ef8664b6d53937c762070fbdd7711753227a98a..8a604f5e2e4f3e08ea0682a3489824f7dcf80a7c 100644 --- a/src/npc/descriptions/belly/belly.js +++ b/src/npc/descriptions/belly/belly.js @@ -1,8 +1,12 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.belly = function(slave) { let heavyBelly; const r = []; const { - he, him, his, hers, himself, boy, He, His + he, him, his, hers, himself, girl, He, His, loli } = getPronouns(slave); if (slave.belly >= 30000) { if (slave.belly >= 400000 + (slave.muscles * 2000) && slave.physicalAge >= 18) { @@ -83,7 +87,7 @@ App.Desc.belly = function(slave) { r.push(`${He} requires multiple slaves to move ${his} bulk when ${he} must go somewhere.`); } } else if (slave.physicalAge <= 12) { - r.push(`and ${he} is nothing more than an obscene over - filled implant with a ${loli} attached. ${He} struggles to not be lost under the straining mass that dwarfs ${his} body.`); + r.push(`and ${he} is nothing more than an obscene over-filled implant with a ${loli} attached. ${He} struggles to not be lost under the straining mass that dwarfs ${his} body.`); if (hasAnyNaturalLegs(slave)) { r.push(`${He} requires multiple slaves to`); if (!hasBothLegs(slave)) { @@ -94,7 +98,7 @@ App.Desc.belly = function(slave) { r.push(`and aid ${him} through ${his} daily affairs.`); } } else { - r.push(`and ${he} is nothing more than an over - filled implant with a ${girl} attached. ${He} is physically unable to keep ${his} boundless middle off the ground for long, if at all.`); + r.push(`and ${he} is nothing more than an over-filled implant with a ${girl} attached. ${He} is physically unable to keep ${his} boundless middle off the ground for long, if at all.`); if (hasAnyNaturalLegs(slave)) { r.push(`${He} requires multiple slaves to`); if (!hasBothLegs(slave)) { @@ -110,7 +114,7 @@ App.Desc.belly = function(slave) { } } if (slave.weight > 190) { - r.push(`${His} massively fat belly is stretched to the limit, so much so ${his} folds are pulled flat and ${his} softness, firm. ${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin.It is so full, not one motion can be seen in its contents nor can one push their hand into it.It's a wonder that both ${him} and ${his} implant have managed to hold together this long.`); + r.push(`${His} massively fat belly is stretched to the limit, so much so ${his} folds are pulled flat and ${his} softness, firm. ${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin. It is so full, not one motion can be seen in its contents nor can one push their hand into it. It's a wonder that both ${him} and ${his} implant have managed to hold together this long.`); } else { r.push(`${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin. It is so full, not one motion can be seen in its contents nor can one push their hand into it. It's a wonder that both ${him} and ${his} implant have managed to hold together this long.`); } @@ -120,8 +124,7 @@ App.Desc.belly = function(slave) { r.push(`${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin. It is so full, not one motion can be seen in its contents nor can one push their hand into it.`); } r.push(`It baffles the mind how ${him} and ${his} implant could swell to such a size.`); - if (slave.belly > (slave.pregAdaptation * 1000)) { - } else { + if (slave.belly <= (slave.pregAdaptation * 1000)) { r.push(`Unbelievably, ${he} seems unshaken by ${his} obscene gravidity; ${his} body is so adapted to carrying children that, even at ${his} current volume, ${he} is physically capable of growing larger.`); } if (slave.bellyFluid >= 1500) { @@ -320,7 +323,7 @@ App.Desc.belly = function(slave) { r.push(`should be nearing ${his} limit,`); } if (slave.physicalAge <= 3) { - r.push(`and ${he} is lost under the straining mass of the ready - to - rupture implant that`); + r.push(`and ${he} is lost under the straining mass of the ready-to-rupture implant that`); if (slave.belly > (slave.pregAdaptation * 1000)) { r.push(`threatens to burst out of.`); } else { @@ -331,7 +334,7 @@ App.Desc.belly = function(slave) { r.push(`${He} requires multiple slaves to move ${his} bulk when ${he} must go somewhere.`); } } else if (slave.physicalAge <= 12) { - r.push(`and ${he} is nothing more than a ready - to - rupture implant with a ${loli} attached. ${He} struggles to not be lost under the straining mass that`); + r.push(`and ${he} is nothing more than a ready-to-rupture implant with a ${loli} attached. ${He} struggles to not be lost under the straining mass that`); if (slave.belly > (slave.pregAdaptation * 1000)) { r.push(`threatens to burst out of ${his} body.`); } else { @@ -382,7 +385,7 @@ App.Desc.belly = function(slave) { } } } else if (slave.height < 150) { - r.push(`and ${he} is nothing more than a ready - to - rupture implant with a ${girl} attached. ${He} struggles to remain seen under the straining mass that`); + r.push(`and ${he} is nothing more than a ready-to-rupture implant with a ${girl} attached. ${He} struggles to remain seen under the straining mass that`); if (slave.belly > (slave.pregAdaptation * 1000)) { r.push(`threatens to burst out of ${his} body.`); } else { @@ -465,8 +468,7 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin. It is so full, not one motion can be seen in its contents nor can one push their hand into it. It's a wonder that both ${him} and ${his} implant have managed to hold together this long.`); } - if (slave.belly > (slave.pregAdaptation * 1000)) { - } else { + if (slave.belly <= (slave.pregAdaptation * 1000)) { r.push(`Unbelievably, ${he} seems unshaken by ${his} obscene gravidity; ${his} body is so adapted to carrying children that, even at ${his} current volume, ${he} is physically capable of growing larger, even if the implant can't.`); } if (slave.bellyFluid >= 1500) { @@ -552,7 +554,7 @@ App.Desc.belly = function(slave) { } else if (slave.muscles > 90) { r.push(`and ${his} muscular body barely allows ${him} to manage ${his} titanic belly.`); } else { - r.push(`and ${he} is nothing more than a womb with a ${girl} attached.While ${he} can barely heft ${his} titanic belly off the floor, it takes a considerable amount of effort to do so and quickly comes to rest back where it started.`); + r.push(`and ${he} is nothing more than a womb with a ${girl} attached. While ${he} can barely heft ${his} titanic belly off the floor, it takes a considerable amount of effort to do so and quickly comes to rest back where it started.`); if (hasAnyNaturalLegs(slave)) { r.push(`${He} requires multiple slaves to`); if (!hasBothLegs(slave)) { @@ -574,7 +576,7 @@ App.Desc.belly = function(slave) { } } if (slave.weight > 190) { - r.push(`${His} massively fat belly is stretched to the limit, so much so ${his} folds are pulled flat and ${his} softness, firm.Despite being so taut, ${his} belly visibly bulges and squirms from all the babies writhing within ${him}. ${His} womb is so full you can see the babies forced up against ${his} uterus,`); + r.push(`${His} massively fat belly is stretched to the limit, so much so ${his} folds are pulled flat and ${his} softness, firm. Despite being so taut, ${his} belly visibly bulges and squirms from all the babies writhing within ${him}. ${His} womb is so full you can see the babies forced up against ${his} uterus,`); if (slave.belly > (slave.pregAdaptation * 1000)) { r.push(`${he} is at risk of rupturing should ${he} grow larger.`); } else { @@ -671,7 +673,7 @@ App.Desc.belly = function(slave) { } else if (slave.muscles > 90) { r.push(`and ${his} muscular body barely allows ${him} to manage ${his} titanic belly.`); } else { - r.push(`and ${he} is nothing more than a greatly overfilled implant with a ${girl} attached.While ${he} can barely heft ${his} titanic belly off the floor, it takes a considerable amount of effort to do so and quickly comes to rest back where it started.`); + r.push(`and ${he} is nothing more than a greatly overfilled implant with a ${girl} attached. While ${he} can barely heft ${his} titanic belly off the floor, it takes a considerable amount of effort to do so and quickly comes to rest back where it started.`); if (hasAnyNaturalLegs(slave)) { r.push(`${He} requires multiple slaves to`); if (!hasBothLegs(slave)) { @@ -693,9 +695,9 @@ App.Desc.belly = function(slave) { } } if (slave.weight > 190) { - r.push(`${His} massively fat belly is stretched to the limit, so much so ${his} folds are pulled flat and ${his} softness, firm. ${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin.It is so full, not one motion can be seen in its contents.`); + r.push(`${His} massively fat belly is stretched to the limit, so much so ${his} folds are pulled flat and ${his} softness, firm. ${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin. It is so full, not one motion can be seen in its contents.`); } else { - r.push(`${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin.It is so full, not one motion can be seen in its contents.`); + r.push(`${He} is so overfilled you can clearly make out the implant within ${his} body through ${his} skin. It is so full, not one motion can be seen in its contents.`); } if (slave.belly > (slave.pregAdaptation * 1000)) { r.push(`Both ${him} and ${his} implant are at risk of rupturing should either be filled any more.`); @@ -1151,7 +1153,7 @@ App.Desc.belly = function(slave) { } } } else if (slave.height >= 185) { - r.push(`but ${his} tall frame barely bears ${his} oversized, drum - taut belly.`); + r.push(`but ${his} tall frame barely bears ${his} oversized, drum-taut belly.`); } else if (slave.height < 150) { r.push(`and ${he} can barely function with ${his} oversized belly.`); } else if (slave.muscles > 30) { @@ -1166,21 +1168,21 @@ App.Desc.belly = function(slave) { r.push(`Given how far along ${he} is, ${he} is clearly having an obscene number of children.`); } else if (slave.preg > slave.pregData.normalBirth * 1.05) { if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive unborn child.It has grown so large that ${he} will never be able to birth it.`); + r.push(`${His} womb contains one single, massive unborn child. It has grown so large that ${he} will never be able to birth it.`); } else if (slave.pregType === 2) { - r.push(`${His} womb contains a pair of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a pair of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 3) { - r.push(`${His} womb contains a trio of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a trio of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 4) { - r.push(`${His} womb contains a quartet of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a quartet of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 5) { - r.push(`${His} womb contains a quintet of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a quintet of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 6) { - r.push(`${His} womb contains a sextet of oversized babies.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a sextet of oversized babies. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 7) { - r.push(`${His} womb contains a septet of oversized babies.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a septet of oversized babies. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 8) { - r.push(`${His} womb contains an octet of oversized babies.There is little chance of ${him} giving birth to them.`); + r.push(`${His} womb contains an octet of oversized babies. There is little chance of ${him} giving birth to them.`); } } if (slave.bellyFluid >= 1500) { @@ -1235,7 +1237,7 @@ App.Desc.belly = function(slave) { } } } else if (slave.height >= 185) { - r.push(`but ${his} tall frame barely bears ${his} oversized, drum - taut belly.`); + r.push(`but ${his} tall frame barely bears ${his} oversized, drum-taut belly.`); } else if (slave.height < 150) { r.push(`and ${he} can barely function with ${his} oversized belly.`); } else if (slave.muscles > 30) { @@ -1314,21 +1316,21 @@ App.Desc.belly = function(slave) { if (slave.preg < 40) { r.push(`Given how far along ${he} is, ${he} is clearly having an obscene number of children.`); } else if (slave.preg < 42) { - r.push(`${He} is clearly full - term with octuplets.`); + r.push(`${He} is clearly full-term with octuplets.`); } else if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive unborn child.It has grown so large that ${he} will never be able to birth it.`); + r.push(`${His} womb contains one single, massive unborn child. It has grown so large that ${he} will never be able to birth it.`); } else if (slave.pregType === 2) { - r.push(`${His} womb contains a pair of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a pair of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 3) { - r.push(`${His} womb contains a trio of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a trio of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 4) { - r.push(`${His} womb contains a quartet of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a quartet of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 5) { - r.push(`${His} womb contains a quintet of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a quintet of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 6) { - r.push(`${His} womb contains a sextet of oversized babies.There is little chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a sextet of oversized babies. There is little chance of ${him} giving birth to them.`); } else if (slave.pregType === 7) { - r.push(`${His} womb contains a septet of oversized babies.There is little to no chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a septet of oversized babies. There is little to no chance of ${him} giving birth to them.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { @@ -1383,36 +1385,36 @@ App.Desc.belly = function(slave) { } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly lewdly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not too obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so massively fat that it's not too obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.preg < 40) { r.push(`Given how far along ${he} is, ${he} is clearly having more than seven.`); } else if (slave.preg < 42) { - r.push(`${He} is clearly full - term with septuplets.`); + r.push(`${He} is clearly full-term with septuplets.`); } else if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive unborn child.It has grown so large that ${he} will never be able to birth it.`); + r.push(`${His} womb contains one single, massive unborn child. It has grown so large that ${he} will never be able to birth it.`); } else if (slave.pregType === 2) { - r.push(`${His} womb contains a pair of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a pair of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 3) { - r.push(`${His} womb contains a trio of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a trio of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 4) { - r.push(`${His} womb contains a quartet of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a quartet of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 5) { - r.push(`${His} womb contains a quintet of massive unborn children.There is little chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a quintet of massive unborn children. There is little chance of ${him} giving birth to them.`); } else if (slave.pregType === 6) { - r.push(`${His} womb contains a sextet of oversized babies.There is little to no chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a sextet of oversized babies. There is little to no chance of ${him} giving birth to them.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { @@ -1424,24 +1426,23 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} looks full term with septuplets,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1452,39 +1453,38 @@ App.Desc.belly = function(slave) { } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly lewdly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not too obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so massively fat that it's not too obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.preg < 40) { r.push(`Given how far along ${he} is, ${he} is clearly having more than six.`); } else if (slave.preg < 42) { - r.push(`${He} is clearly full - term with sextuplets.`); + r.push(`${He} is clearly full-term with sextuplets.`); } else if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive unborn child.It has grown so large that ${he} will never be able to birth it.`); + r.push(`${His} womb contains one single, massive unborn child. It has grown so large that ${he} will never be able to birth it.`); } else if (slave.pregType === 2) { - r.push(`${His} womb contains a pair of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a pair of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 3) { - r.push(`${His} womb contains a trio of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a trio of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 4) { - r.push(`${His} womb contains a quartet of massive unborn children.There is little chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a quartet of massive unborn children. There is little chance of ${him} giving birth to them.`); } else if (slave.pregType === 5) { - r.push(`${His} womb contains a quintet of oversized babies.There is little to no chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a quintet of oversized babies. There is little to no chance of ${him} giving birth to them.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1492,24 +1492,23 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} looks full term with sextuplets,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1520,37 +1519,36 @@ App.Desc.belly = function(slave) { } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly lewdly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not too obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so massively fat that it's not too obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.preg < 40) { r.push(`Given how far along ${he} is, ${he} is clearly having more than five.`); } else if (slave.preg < 42) { - r.push(`${He} is clearly full - term with quintuplets.`); + r.push(`${He} is clearly full-term with quintuplets.`); } else if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive unborn child.It has grown so large that ${he} will never be able to birth it.`); + r.push(`${His} womb contains one single, massive unborn child. It has grown so large that ${he} will never be able to birth it.`); } else if (slave.pregType === 2) { - r.push(`${His} womb contains a pair of massive unborn children.They have grown so large that ${he} will never be able to birth them.`); + r.push(`${His} womb contains a pair of massive unborn children. They have grown so large that ${he} will never be able to birth them.`); } else if (slave.pregType === 3) { - r.push(`${His} womb contains a trio of massive unborn children.There is little chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a trio of massive unborn children. There is little chance of ${him} giving birth to them.`); } else if (slave.pregType === 4) { - r.push(`${His} womb contains a quartet of oversized babies.There is little to no chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a quartet of oversized babies. There is little to no chance of ${him} giving birth to them.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1558,24 +1556,23 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} looks full term with quintuplets,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1586,35 +1583,34 @@ App.Desc.belly = function(slave) { } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly lewdly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not too obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so massively fat that it's not too obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.preg < 36) { r.push(`Given how far along ${he} is, ${he} is clearly having more than four.`); } else if (slave.preg < 42) { - r.push(`${He} is clearly full - term with quadruplets.`); + r.push(`${He} is clearly full-term with quadruplets.`); } else if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive unborn child.It has grown so large that ${he} will never be able to birth it.`); + r.push(`${His} womb contains one single, massive unborn child. It has grown so large that ${he} will never be able to birth it.`); } else if (slave.pregType === 2) { - r.push(`${His} womb contains a pair of massive unborn children.There is little to no chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a pair of massive unborn children. There is little to no chance of ${him} giving birth to them.`); } else if (slave.pregType === 3) { - r.push(`${His} womb contains a trio of oversized babies.There is little chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a trio of oversized babies. There is little chance of ${him} giving birth to them.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1622,24 +1618,23 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} looks full term with quadruplets,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1650,33 +1645,32 @@ App.Desc.belly = function(slave) { } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly lewdly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not too obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so massively fat that it's not too obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.preg < 35) { r.push(`Given how far along ${he} is, ${he} is clearly having more than three.`); } else if (slave.preg < 42) { - r.push(`${He} is clearly full - term with triplets.`); + r.push(`${He} is clearly full-term with triplets.`); } else if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive unborn child.There is little to no chance of ${him} giving birth to it.`); + r.push(`${His} womb contains one single, massive unborn child. There is little to no chance of ${him} giving birth to it.`); } else if (slave.pregType === 2) { - r.push(`${His} womb contains a pair of oversized babies.There is little chance of ${him} giving birth to them.`); + r.push(`${His} womb contains a pair of oversized babies. There is little chance of ${him} giving birth to them.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1684,24 +1678,23 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} looks full term with triplets,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1712,31 +1705,30 @@ App.Desc.belly = function(slave) { } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly lewdly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not too obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so massively fat that it's not too obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.preg < 33) { r.push(`Given how far along ${he} is, ${he} is clearly having more than two.`); } else if (slave.preg < 42) { - r.push(`${He} is clearly full - term with twins.`); + r.push(`${He} is clearly full-term with twins.`); } else if (slave.pregType === 1) { - r.push(`${His} womb contains one single, massive child.There is little chance of ${him} giving birth to it.`); + r.push(`${His} womb contains one single, massive child. There is little chance of ${him} giving birth to it.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1744,24 +1736,23 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} looks full term with twins,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1772,29 +1763,28 @@ App.Desc.belly = function(slave) { } else if (slave.bellyPreg > 0) { r.push(`${He} is enormously pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} womb. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly lewdly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.preg < 33) { r.push(`Given how far along ${he} is, ${he} is clearly having multiples.`); } else { - r.push(`${He} is clearly full - term.`); + r.push(`${He} is clearly full-term.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1802,24 +1792,23 @@ App.Desc.belly = function(slave) { } else { r.push(`${He} looks hugely pregnant,`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} implant. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 190) { - r.push(`but ${he} 's so massively fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); + r.push(`but ${he}'s so massively fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's bulging it outwards.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} huge, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} huge, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} huge, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} huge, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} huge, drum-taut belly well.`); } else { - r.push(`and ${his} huge, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} huge, drum-taut belly dominates ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1829,19 +1818,19 @@ App.Desc.belly = function(slave) { if (slave.bellyFluid >= slave.bellyPreg && slave.bellyFluid >= slave.bellyImplant) { r.push(`${His} middle is enormously distended with ${slave.inflationType},`); if (slave.physicalAge <= 3) { - r.push(`and ${his} toddlerish body is absolutely filled by ${his} bloated innards. ${He} can barely move ${him} self and resembles an over inflated blow - up doll.`); + r.push(`and ${his} toddlerish body is absolutely filled by ${his} bloated innards. ${He} can barely move ${him} self and resembles an over inflated blow-up doll.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} massive, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} massive, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.weight > 130) { - r.push(`but ${he} 's so fat that it's not obvious.`); + r.push(`but ${he}'s so fat that it's not obvious.`); } else if (slave.height >= 185) { - r.push(`but ${his} tall frame bears ${his} massive, drum - taut belly well.`); + r.push(`but ${his} tall frame bears ${his} massive, drum-taut belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} massive, drum - taut belly dominates ${his} poor little frame.`); + r.push(`and ${his} massive, drum-taut belly dominates ${his} poor little frame.`); } else if (slave.muscles > 30) { - r.push(`and ${his} fit body bears ${his} massive, drum - taut belly well.`); + r.push(`and ${his} fit body bears ${his} massive, drum-taut belly well.`); } else { - r.push(`and ${his} massive, drum - taut belly dominates ${his} frame.`); + r.push(`and ${his} massive, drum-taut belly dominates ${his} frame.`); } } else if (slave.bellyPreg > 0) { r.push(`${He} is heavily pregnant,`); @@ -1850,7 +1839,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 12) { r.push(`and ${his} gravid belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 130) { - r.push(`but ${he} 's so fat that it's not obvious.Only the firmness at its top gives away ${his} pregnancy.`); + r.push(`but ${he}'s so fat that it's not obvious. Only the firmness at its top gives away ${his} pregnancy.`); } else if (slave.height >= 185) { r.push(`but ${his} tall frame bears ${his} gravid belly well.`); } else if (slave.height < 150) { @@ -1867,8 +1856,7 @@ App.Desc.belly = function(slave) { } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1880,7 +1868,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 12) { r.push(`and ${his} distended belly lewdly dominates ${his} poor little frame.`); } else if (slave.weight > 130) { - r.push(`but ${he} 's so fat that it's not obvious.Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's amiss.`); + r.push(`but ${he}'s so fat that it's not obvious. Only the firmness at ${his} belly's top and the weight in its sway give any hint that something's amiss.`); } else if (slave.height >= 185) { r.push(`but ${his} tall frame bears ${his} distended belly well.`); } else if (slave.height < 150) { @@ -1892,8 +1880,7 @@ App.Desc.belly = function(slave) { } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1905,39 +1892,38 @@ App.Desc.belly = function(slave) { if (slave.physicalAge <= 3) { r.push(`and ${his} swollen belly is nearly as big as ${his} toddlerish body.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} swollen belly is eye - catching on ${his} little frame.`); + r.push(`and ${his} swollen belly is eye-catching on ${his} little frame.`); } else if (slave.weight > 130) { - r.push(`but ${he} 's so fat that it's not obvious.`); + r.push(`but ${he}'s so fat that it's not obvious.`); } else if (slave.height >= 185) { r.push(`but ${his} tall frame bears ${his} swollen belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} swollen belly is eye - catching on ${his} little frame.`); + r.push(`and ${his} swollen belly is eye-catching on ${his} little frame.`); } else if (slave.muscles > 30) { r.push(`and ${his} fit body bears ${his} swollen belly well.`); } else { - r.push(`and ${his} swollen belly is eye - catching on ${his} little frame.`); + r.push(`and ${his} swollen belly is eye-catching on ${his} little frame.`); } } else if (slave.bellyPreg > 0) { r.push(`${He} is clearly pregnant,`); if (slave.physicalAge <= 3) { r.push(`and ${his} rounded belly takes up much of ${his} toddlerish body.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} rounded belly is eye - catching on ${his} little frame.`); + r.push(`and ${his} rounded belly is eye-catching on ${his} little frame.`); } else if (slave.weight > 130) { - r.push(`but ${he} 's so fat that it's not obvious.`); + r.push(`but ${he}'s so fat that it's not obvious.`); } else if (slave.height >= 185) { r.push(`but ${his} tall frame bears ${his} rounded middle well.`); } else if (slave.height < 150) { - r.push(`and ${his} rounded belly is eye - catching on ${his} little frame.`); + r.push(`and ${his} rounded belly is eye-catching on ${his} little frame.`); } else if (slave.muscles > 30) { r.push(`and ${his} fit body bears ${his} rounded belly well.`); } else { - r.push(`and ${his} rounded belly is eye - catching on ${his} frame.`); + r.push(`and ${his} rounded belly is eye-catching on ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1947,22 +1933,21 @@ App.Desc.belly = function(slave) { if (slave.physicalAge <= 3) { r.push(`and ${his} swollen belly dominates ${his} toddlerish body.`); } else if (slave.physicalAge <= 12) { - r.push(`and ${his} swollen belly is eye - catching on ${his} little frame.`); + r.push(`and ${his} swollen belly is eye-catching on ${his} little frame.`); } else if (slave.weight > 130) { - r.push(`but ${he} 's so fat that it's not obvious.`); + r.push(`but ${he}'s so fat that it's not obvious.`); } else if (slave.height >= 185) { r.push(`but ${his} tall frame bears ${his} swollen belly well.`); } else if (slave.height < 150) { - r.push(`and ${his} swollen belly is eye - catching on ${his} little frame.`); + r.push(`and ${his} swollen belly is eye-catching on ${his} little frame.`); } else if (slave.muscles > 30) { r.push(`and ${his} fit body bears ${his} swollen belly well.`); } else { - r.push(`and ${his} swollen belly is eye - catching on ${his} frame.`); + r.push(`and ${his} swollen belly is eye-catching on ${his} frame.`); } if (slave.bellyFluid >= 1500) { if (slave.inflationMethod === 2) { - r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${ - slave.inflationType}.`); + r.push(`There is a distinct curve to ${his} upper belly, the result of a stomach filled with ${slave.inflationType}.`); } else { r.push(`${His} stomach bulges a little larger thanks to all the ${slave.inflationType} in ${his} bowels.`); } @@ -1976,7 +1961,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 10) { r.push(`and ${his} sloshing belly looks huge on ${his} tiny frame.`); } else if (slave.weight > 95) { - r.push(`but ${he} 's sufficiently overweight that it's not obvious.`); + r.push(`but ${he}'s sufficiently overweight that it's not obvious.`); } else if (slave.height < 150) { r.push(`and ${his} sloshing belly looks huge on ${his} tiny frame.`); } else if (slave.weight <= -10) { @@ -1994,7 +1979,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 10) { r.push(`and ${his} swelling belly already looks huge on ${his} tiny frame.`); } else if (slave.weight > 95) { - r.push(`but ${he} 's sufficiently overweight that it's not obvious.`); + r.push(`but ${he}'s sufficiently overweight that it's not obvious.`); } else if (slave.height < 150) { r.push(`and ${his} swelling belly already looks huge on ${his} tiny frame.`); } else if (slave.weight < -10) { @@ -2012,7 +1997,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 12) { r.push(`and ${his} swollen belly already looks huge on ${his} tiny frame.`); } else if (slave.weight > 95) { - r.push(`but ${he} 's sufficiently overweight that it's not obvious.`); + r.push(`but ${he}'s sufficiently overweight that it's not obvious.`); } else if (slave.height < 150) { r.push(`and ${his} swollen belly already looks huge on ${his} tiny frame.`); } else if (slave.weight < -10) { @@ -2032,7 +2017,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 10) { r.push(`and abundantly clear on ${his} youthful frame.`); } else if (slave.weight > 95) { - r.push(`but ${he} 's sufficiently overweight that it's not noticeable in passing.`); + r.push(`but ${he}'s sufficiently overweight that it's not noticeable in passing.`); } else if (slave.height < 150) { r.push(`and abundantly clear on ${his} tiny frame.`); } else if (slave.weight < -10) { @@ -2047,7 +2032,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 10) { r.push(`and abundantly clear on ${his} youthful frame.`); } else if (slave.weight > 95) { - r.push(`but ${he} 's sufficiently overweight that it's not noticeable in passing.`); + r.push(`but ${he}'s sufficiently overweight that it's not noticeable in passing.`); } else if (slave.height < 150) { r.push(`and abundantly clear on ${his} tiny frame.`); } else if (slave.weight < -10) { @@ -2065,7 +2050,7 @@ App.Desc.belly = function(slave) { } else if (slave.physicalAge <= 10) { r.push(`and abundantly clear on ${his} youthful frame.`); } else if (slave.weight > 95) { - r.push(`but ${he} 's sufficiently overweight that it's not noticeable in passing.`); + r.push(`but ${he}'s sufficiently overweight that it's not noticeable in passing.`); } else if (slave.height < 150) { r.push(`and abundantly clear on ${his} tiny frame.`); } else if (slave.weight < -10) { @@ -2097,7 +2082,7 @@ App.Desc.belly = function(slave) { r.push(`${His} stomach is painfully distended from the nutrition and hydration being pumped down ${his} throat and up ${his} butt.`); } else if (slave.weight > 190) { if (slave.muscles > 95) { - r.push(`${His} massive abs are lost beneath ${his} overwhelming flab.In fact, ${he} 's so massively fat that ${his} navel is also lost deep in a fold of ${his} belly. Multiple thick, huge rolls run along its sides around to ${his} flabby back.`); + r.push(`${His} massive abs are lost beneath ${his} overwhelming flab. In fact, ${he}'s so massively fat that ${his} navel is also lost deep in a fold of ${his} belly. Multiple thick, huge rolls run along its sides around to ${his} flabby back.`); } else if (slave.muscles > 30) { r.push(`${His} abs are lost beneath ${his} overwhelming flab; ${he}'s so hugely fat that ${his} navel is also lost deep in a fold of ${his} belly. Multiple thick rolls run along its sides around to ${his} flabby back.`); } else { @@ -2329,7 +2314,7 @@ App.Desc.belly = function(slave) { } } if (slave.mpreg === 1 && slave.belly < 100) { - r.push(`${He} has a slight curve to ${his} abdomen, unusual for a male ${slave}.`); + r.push(`${He} has a slight curve to ${his} abdomen, unusual for a male slave.`); } if (V.showClothing === 1 && V.saleDescription === 0) { diff --git a/src/npc/descriptions/belly/bellyImplant.js b/src/npc/descriptions/belly/bellyImplant.js index 4afe9cc87e89a4a50f44cd80c9bcb9b98288e33c..29413aaaedc1095a225299c4ac3ac639e5b051b6 100644 --- a/src/npc/descriptions/belly/bellyImplant.js +++ b/src/npc/descriptions/belly/bellyImplant.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.bellyImplant = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/belly/bellyInflation.js b/src/npc/descriptions/belly/bellyInflation.js index ebbb822e229e9d97a8f89124bf28a7da6b9d54a9..fb58e5aeca6ed6e550bd2667278de2d7804027a9 100644 --- a/src/npc/descriptions/belly/bellyInflation.js +++ b/src/npc/descriptions/belly/bellyInflation.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.bellyInflation = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/boobs/boobsShape.js b/src/npc/descriptions/boobs/boobsShape.js index 19e47533ed296adc21df6edea41531c30c124f5d..0d4a1777781f961717d2540bf697a4103bf824da 100644 --- a/src/npc/descriptions/boobs/boobsShape.js +++ b/src/npc/descriptions/boobs/boobsShape.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.boobsShape = function(slave) { const r = []; const { @@ -148,9 +152,9 @@ App.Desc.boobsShape = function(slave) { } } else if ((slave.boobsImplant <= 600)) { if (slave.boobs > 800) { - r.push(`${He} has ${slave.boobsImplant} cc breast implants.${His} implants are well done, but ${his} breasts are so perfect and gravity - defying that they are clearly artificial.`); + r.push(`${He} has ${slave.boobsImplant} cc breast implants. ${His} implants are well done, but ${his} breasts are so perfect and gravity-defying that they are clearly artificial.`); } else { - r.push(`${He} has ${slave.boobsImplant} cc breast implants.${His} implants are well done, but ${his} breasts are so rounded and high that they are clearly artificial.`); + r.push(`${He} has ${slave.boobsImplant} cc breast implants. ${His} implants are well done, but ${his} breasts are so rounded and high that they are clearly artificial.`); } if (V.arcologies[0].FSTransformationFetishist !== "unset") { if (slave.boobsImplant > 0) { @@ -191,60 +195,31 @@ App.Desc.boobsShape = function(slave) { } if (V.arcologies[0].FSTransformationFetishist > 20) { - if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") { - if (slave.boobs >= 400) { - if (slave.boobs >= 10000) { - if (slave.boobsImplant / slave.boobs < .75) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } - } else if (slave.boobs >= 2000) { - if (slave.boobsImplant / slave.boobs < .50) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } - } else if (slave.boobs >= 1000) { - if (slave.boobsImplant / slave.boobs < .25) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } + const boobThreshold = V.arcologies[0].FSSlimnessEnthusiast !== "unset" ? 400 : 600; + if (slave.boobs >= boobThreshold) { + if (slave.boobs >= 10000) { + if (slave.boobsImplant / slave.boobs < .75) { + r.push(`${His} breasts are <span class="red">disgustingly natural</span> for their size.`); } else { - if (slave.boobsImplant / slave.boobs < .10) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } + r.push(`${His} breasts are <span class="green">obviously implants,</span> as they should be.`); } - } - } else { - if (slave.boobs >= 600) { - if (slave.boobs >= 10000) { - if (slave.boobsImplant / slave.boobs < .75) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } - } else if (slave.boobs >= 2000) { - if (slave.boobsImplant / slave.boobs < .50) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } - } else if (slave.boobs >= 1000) { - if (slave.boobsImplant / slave.boobs < .25) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } + } else if (slave.boobs >= 2000) { + if (slave.boobsImplant / slave.boobs < .50) { + r.push(`${His} breasts are <span class="red">disgustingly natural</span> for their size.`); } else { - if (slave.boobsImplant / slave.boobs < .10) { - r.push(`${His} breasts are <span class="red"> disgustingly natural</span> for their size.`); - } else { - r.push(`${His} breasts are <span class="green"> obviously implants,</span> as they should be.`); - } + r.push(`${His} breasts are <span class="green">obviously implants,</span> as they should be.`); + } + } else if (slave.boobs >= 1000) { + if (slave.boobsImplant / slave.boobs < .25) { + r.push(`${His} breasts are <span class="red">disgustingly natural</span> for their size.`); + } else { + r.push(`${His} breasts are <span class="green">obviously implants,</span> as they should be.`); + } + } else { + if (slave.boobsImplant / slave.boobs < .10) { + r.push(`${His} breasts are <span class="red">disgustingly natural</span> for their size.`); + } else { + r.push(`${His} breasts are <span class="green">obviously implants,</span> as they should be.`); } } } diff --git a/src/npc/descriptions/boobs/piercing.js b/src/npc/descriptions/boobs/piercing.js index 04cded3cd68cc6c57fb86796eb9f835a8cfbe603..42352651a96e15e3f33ea092010b2aa05b48e768 100644 --- a/src/npc/descriptions/boobs/piercing.js +++ b/src/npc/descriptions/boobs/piercing.js @@ -1,11 +1,9 @@ /** * @param {App.Entity.SlaveState} slave - * @param {App.Utils.Pronouns} pronouns * @returns {string} */ -App.Desc.areolaePiercing = function(slave, pronouns) { - pronouns = pronouns || getPronouns(slave); - const {his, He, His} = pronouns; +App.Desc.areolaePiercing = function(slave) { + const {his, He, His} = getPronouns(slave); const nipColor = nippleColor(slave); let r = []; if (slave.fuckdoll === 0) { diff --git a/src/npc/descriptions/butt/anus.js b/src/npc/descriptions/butt/anus.js index e559d9de110395338b351325c61d153f1e751f72..a4e0f47b75b8cf966792f9363bfab7b83ffbbb03 100644 --- a/src/npc/descriptions/butt/anus.js +++ b/src/npc/descriptions/butt/anus.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.anus = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/butt/butt.js b/src/npc/descriptions/butt/butt.js index 36a381904e48ceb9f623dd33c5bc1dc3502d9458..d01d44bb98fd7a26d972d8e669776c522a414820 100644 --- a/src/npc/descriptions/butt/butt.js +++ b/src/npc/descriptions/butt/butt.js @@ -1,7 +1,11 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.butt = function(slave) { const r = []; const { - he, him, his, hers, himself, boy, He, His + he, him, his, hers, himself, girl, He, His } = getPronouns(slave); if (V.showClothing === 1 && V.saleDescription === 0) { if (V.surgeryDescription === 0) { @@ -1155,21 +1159,12 @@ App.Desc.butt = function(slave) { } } if (V.arcologies[0].FSTransformationFetishist > 20) { - if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") { - if (slave.butt >= 3) { - if (slave.buttImplant / slave.butt < .25) { - r.push(`${His} ass is < span class="red" > disgustingly natural</span > for its size.`); - } else { - r.push(`${His} asscheeks are < span class="green" > obviously implants,</span > as they should be.`); - } - } - } else { - if (slave.butt >= 6) { - if (slave.buttImplant / slave.butt < .5) { - r.push(`${His} ass is < span class="red" > disgustingly natural</span > for its size.`); - } else { - r.push(`${His} asscheeks are < span class="green" > obviously implants,</span > as they should be.`); - } + const buttThreshold = V.arcologies[0].FSSlimnessEnthusiast !== "unset" ? 3 : 6; + if (slave.butt >= buttThreshold) { + if (slave.buttImplant / slave.butt < .25) { + r.push(`${His} ass is <span class="red">disgustingly natural</span> for its size.`); + } else { + r.push(`${His} asscheeks are <span class="green">obviously implants,</span> as they should be.`); } } } @@ -1226,11 +1221,10 @@ App.Desc.butt = function(slave) { if (V.buttAccessibility === 1) { r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`); } else { - r.push(`${He}`); if (V.saleDescription === 1) { - r.push(`'ll have`); + r.push(`${He}'ll have`); } else { - r.push(`has`); + r.push(`${He} has`); } r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`); } @@ -1241,7 +1235,7 @@ App.Desc.butt = function(slave) { } else if (slave.physicalAge <= 12) { if (slave.butt >= 12) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} butt is so massive that it is difficult for ${him} to move.`); @@ -1273,11 +1267,10 @@ App.Desc.butt = function(slave) { if (V.buttAccessibility === 1) { r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`); } else { - r.push(`${He}`); if (V.saleDescription === 1) { - r.push(`'ll have`); + r.push(`${He}'ll have`); } else { - r.push(`has`); + r.push(`${He} has`); } r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`); } @@ -1288,7 +1281,7 @@ App.Desc.butt = function(slave) { } else if (slave.physicalAge > 12) { if (slave.butt > 17) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} butt is so massive that it is difficult for ${him} to move.`); @@ -1320,11 +1313,10 @@ App.Desc.butt = function(slave) { if (V.buttAccessibility === 1) { r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`); } else { - r.push(`${He}`); if (V.saleDescription === 1) { - r.push(`'ll have`); + r.push(`${He}'ll have`); } else { - r.push(`has`); + r.push(`${He} has`); } r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`); } @@ -1363,7 +1355,7 @@ App.Desc.butt = function(slave) { } else if (slave.tail === "combat") { r.push(`${He} has a very long ${slave.tailColor} metallic tail that can lash out, constrict, and deploy razor sharp spikes on command.`); } else if (slave.tail === "sex") { - r.push(`${He} has a long, slender, ${slave.tailColor} tail.While not strong, it is very dexterous and has a small fleshy spade - shaped tip that can vibrate and dispense lube on command.`); + r.push(`${He} has a long, slender, ${slave.tailColor} tail. While not strong, it is very dexterous and has a small fleshy spade-shaped tip that can vibrate and dispense lube on command.`); } r.push(App.Desc.mods(slave, "buttock")); diff --git a/src/npc/descriptions/butt/buttplug.js b/src/npc/descriptions/butt/buttplug.js index 2a9f42943ca6541a262f015f32f24050dbdf8a39..dbbee73b48793d462e28d2184a1d3e1d626d4345 100644 --- a/src/npc/descriptions/butt/buttplug.js +++ b/src/npc/descriptions/butt/buttplug.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.buttplug = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/crotch/crotch.js b/src/npc/descriptions/crotch/crotch.js index 878337554f00100cb42b0387bb9e61cbc0a92202..1327548bed98685befa89339d2ceba19e761c8df 100644 --- a/src/npc/descriptions/crotch/crotch.js +++ b/src/npc/descriptions/crotch/crotch.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.crotch = function(slave) { const r = []; const { @@ -1449,63 +1453,55 @@ App.Desc.crotch = function(slave) { break; case 8: r.push(`titanic`); - if (canAchieveErection(slave)) { - } else { - r.push(`, flaccid`); + if (!canAchieveErection(slave)) { + r.push(`flaccid`); } r.push(`cock hangs naked.`); break; case 7: r.push(`gigantic`); - if (canAchieveErection(slave)) { - } else { - r.push(`, flaccid`); + if (!canAchieveErection(slave)) { + r.push(`flaccid`); } r.push(`cock hangs naked.`); break; case 6: r.push(`huge`); - if (canAchieveErection(slave)) { - } else { - r.push(`, flaccid`); + if (!canAchieveErection(slave)) { + r.push(`flaccid`); } r.push(`cock hangs naked.`); break; case 5: r.push(`imposing`); - if (canAchieveErection(slave)) { - } else { - r.push(`, flaccid`); + if (!canAchieveErection(slave)) { + r.push(`flaccid`); } r.push(`cock swings naked.`); break; case 4: r.push(`big`); - if (canAchieveErection(slave)) { - } else { - r.push(`, flaccid`); + if (!canAchieveErection(slave)) { + r.push(`flaccid`); } r.push(`cock dangles naked.`); break; case 3: - if (canAchieveErection(slave)) { - } else { + if (!canAchieveErection(slave)) { r.push(`flaccid`); } r.push(`cock dangles bare.`); break; case 2: r.push(`little`); - if (canAchieveErection(slave)) { - } else { + if (!canAchieveErection(slave)) { r.push(`flaccid`); } r.push(`dick is bare.`); break; case 1: r.push(`tiny`); - if (canAchieveErection(slave)) { - } else { + if (!canAchieveErection(slave)) { r.push(`flaccid`); } r.push(`dick is bare.`); diff --git a/src/npc/descriptions/crotch/dick.js b/src/npc/descriptions/crotch/dick.js index 5d60283e4783cd01baf10c8dc0d0996a1b0633e6..169e20f86eaf6e6eceb4e45e2fb44c7671be45a9 100644 --- a/src/npc/descriptions/crotch/dick.js +++ b/src/npc/descriptions/crotch/dick.js @@ -1,7 +1,11 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.dick = function(slave) { const r = []; const { - he, him, his, hers, himself, boy, He, His + he, him, his, hers, himself, girl, He, His } = getPronouns(slave); if (slave.dick > 0) { switch (slave.dick) { @@ -930,7 +934,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge <= 12) { if (slave.dick >= 30) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic dick are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic dick are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} penis so massive that it is difficult for ${him} to move.`); @@ -964,7 +968,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge > 12) { if (slave.dick >= 30) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic dick are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic dick are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} penis so massive that it is difficult for ${him} to move.`); @@ -998,9 +1002,9 @@ App.Desc.dick = function(slave) { } if (slave.balls >= 50) { - r.push(`${His} testicles are so big and sensitive that ${he} can barely move without stopping to let shivers run down ${his} body.It takes a great deal of control to not release their contents in huge spurts in every direction.`); + r.push(`${His} testicles are so big and sensitive that ${he} can barely move without stopping to let shivers run down ${his} body. It takes a great deal of control to not release their contents in huge spurts in every direction.`); } else if (slave.balls >= 37) { - r.push(`${His} perpetual stream of semen - laced precum leaves a mess on the floor wherever ${he}`); + r.push(`${His} perpetual stream of semen-laced precum leaves a mess on the floor wherever ${he}`); if (canAchieveErection(slave)) { r.push(`goes, along with ${his} shaft`); if (hasAnyLegs(slave)) { @@ -1026,7 +1030,7 @@ App.Desc.dick = function(slave) { if (slave.physicalAge <= 3) { if (slave.balls >= 25) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); @@ -1062,7 +1066,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge <= 12) { if (slave.balls >= 50) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); @@ -1098,7 +1102,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge > 12) { if (slave.balls > 70) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); @@ -1445,7 +1449,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge <= 12) { if (slave.balls >= 50) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); @@ -1481,7 +1485,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge > 12) { if (slave.balls > 70) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); @@ -1516,9 +1520,9 @@ App.Desc.dick = function(slave) { } } if (slave.prostate > 2) { - r.push(`The area above ${his} crotch has a slight swell to it from ${his} prostate implant.A constant dribble of precum streams from the hole; ${his} artificially hyperactive prostate keeps ${him} that way.`); + r.push(`The area above ${his} crotch has a slight swell to it from ${his} prostate implant. A constant dribble of precum streams from the hole; ${his} artificially hyperactive prostate keeps ${him} that way.`); } else if ((slave.prostate > 1)) { - r.push(`${He} 's got a string of precum dangling from the hole; ${his} artificially hyperactive prostate keeps ${him} that way.`); + r.push(`${He}'s got a string of precum dangling from the hole; ${his} artificially hyperactive prostate keeps ${him} that way.`); } if (slave.aphrodisiacs > 0 || slave.inflationType === "aphrodisiac") { r.push(`The aphrodisiacs have ${him} so horny that there's a`); @@ -1875,7 +1879,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge <= 12) { if (slave.balls >= 50) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); @@ -1911,7 +1915,7 @@ App.Desc.dick = function(slave) { } else if (slave.physicalAge > 12) { if (slave.balls > 70) { if (slave.fuckdoll > 0) { - r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he} 's almost always restrained, stationary, or both.`); + r.push(`The difficulties of having a gigantic pair of testicles are greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`); } else { if (canWalk(slave)) { r.push(`${His} balls are so massive that it is difficult for ${him} to move.`); @@ -1946,9 +1950,9 @@ App.Desc.dick = function(slave) { } } if (slave.prostate > 2) { - r.push(`The area above ${his} crotch has a slight swell to it from ${his} prostate implant.A constant dribble of precum streams from the hole and down ${his} testicles; ${his} artificially hyperactive prostate keeps ${him} that way.`); + r.push(`The area above ${his} crotch has a slight swell to it from ${his} prostate implant. A constant dribble of precum streams from the hole and down ${his} testicles; ${his} artificially hyperactive prostate keeps ${him} that way.`); } else if ((slave.prostate > 1)) { - r.push(`${He} 's got a string of precum dangling from the hole and down ${his} testicles; ${his} artificially hyperactive prostate keeps ${him} that way.`); + r.push(`${He}'s got a string of precum dangling from the hole and down ${his} testicles; ${his} artificially hyperactive prostate keeps ${him} that way.`); } if (slave.aphrodisiacs > 0 || slave.inflationType === "aphrodisiac") { r.push(`The aphrodisiacs have ${him} so horny that there's a`); diff --git a/src/npc/descriptions/crotch/dickAccessory.js b/src/npc/descriptions/crotch/dickAccessory.js index 3b35f29701017b4f8748832065957bb8957cb44c..c8ba6361e403b1d189f4a39497ed909adf458f16 100644 --- a/src/npc/descriptions/crotch/dickAccessory.js +++ b/src/npc/descriptions/crotch/dickAccessory.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.dickAccessory = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/crotch/vagina.js b/src/npc/descriptions/crotch/vagina.js index 0e88c771aa8292232c43e5d358183e728c91e88d..62189b9d2cd89f8b6a35eb745bbb525a44bbebe7 100644 --- a/src/npc/descriptions/crotch/vagina.js +++ b/src/npc/descriptions/crotch/vagina.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.vagina = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/crotch/vaginalAccessory.js b/src/npc/descriptions/crotch/vaginalAccessory.js index ee7b25d9e5416229eb53fc6e496fb96803ed1e6e..129a41c0d7d6d40790f87e303c83cf715e3dfb0e 100644 --- a/src/npc/descriptions/crotch/vaginalAccessory.js +++ b/src/npc/descriptions/crotch/vaginalAccessory.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.vaginalAccessory = function(slave) { const r = []; const { @@ -86,9 +90,36 @@ App.Desc.vaginalAccessory = function(slave) { } break; } + r.push(App.Desc.vaginalAttachment(slave)); if (slave.chastityVagina && V.arcologies[0].FSRestart !== "unset") { r.push(`This pleases the Societal Elite.`); } return r.join(" "); }; + +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ +App.Desc.vaginalAttachment = function(slave) { + const r = []; + const { + his, He, His + } = getPronouns(slave); + switch (slave.vaginalAttachment) { + case "vibrator": + // TODO: not sure about this description + r.push(`${He} looks distinctly uncomfortable as ${his} dildo buzzes every so often.`); + if (slave.chastityVagina) { + r.push(`The chastity belt locking it in place means there is no escape.`); + } + // TODO: add descriptions for slaves with gaping+ vaginas + break; + default: + if (slave.vaginalAccessory !== "none") { + r.push(`${His} current accessory is silent.`); + } + } + return r.join(" "); +}; diff --git a/src/npc/descriptions/describePiercings.js b/src/npc/descriptions/describePiercings.js index 5b3a0f4ab424f020dd8fcfda047fbf112369a685..85b9c8e85761333bd588a9951b7fd876f18b10c7 100644 --- a/src/npc/descriptions/describePiercings.js +++ b/src/npc/descriptions/describePiercings.js @@ -7,7 +7,7 @@ App.Desc.piercing = function(slave, surface) { let r = []; /* eslint-disable no-unused-vars*/ const { - he, him, his, hers, himself, boy, He, His + he, him, his, hers, himself, girl, He, His } = getPronouns(slave); /* eslint-enable */ if (V.showBodyMods !== 1) { @@ -200,7 +200,7 @@ App.Desc.piercing = function(slave, surface) { } case "nose": { if (slave.nosePiercing === 1) { - r.push(`${He} has simple studs in $his nose.`); + r.push(`${He} has simple studs in ${his} nose.`); } else if (slave.nosePiercing === 2) { r.push(`${He} has nasal studs and a large septum ring.`); if (slave.clothes === "slutty jewelry" && slave.earPiercing > 0) { @@ -246,9 +246,9 @@ App.Desc.piercing = function(slave, surface) { } else { r.push(`fortunately`); } - r.push(`'V.enunciate.title' is easy to pronounce.`); + r.push(`'${V.enunciate.title}' is easy to pronounce.`); } else { - r.push(`'V.writtenTitle' comes out as 'V.enunciate.title.'`); + r.push(`'${V.writtenTitle}' comes out as '${V.enunciate.title}.'`); } } } @@ -800,7 +800,7 @@ App.Desc.piercing = function(slave, surface) { if (!(slave.chastityPenis)) { if (slave.dick > 4) { if (slave.boobs > 1000) { - if (canAchieveErection(slave.balls > 0)) { + if (canAchieveErection(slave) && slave.balls > 0) { if (slave.devotion > 20) { if (slave.energy > 90) { r.push(`${His} very special body allows ${him} to wear an incredibly lewd piece of jewelry: a thin golden chain that runs from nipple to nipple, through ${his} pierced cockhead. The chain is short, and any motion at all tugs at ${his} nipples and penis.`); diff --git a/src/npc/descriptions/describeScars.js b/src/npc/descriptions/describeScars.js index 2c8faa1ab3a09b73f68d1aa1d4173f5a5a58b7db..29e032ca2da227d6d775fee0eaff30a92986330d 100644 --- a/src/npc/descriptions/describeScars.js +++ b/src/npc/descriptions/describeScars.js @@ -127,6 +127,7 @@ App.Desc.expandScarString = function(slave, surface) { // scars can sometimes be if (!slave.scar[surface]) { return r; } + const {he, his} = getPronouns(slave); const bodypart = Object.keys(slave.scar[surface]); for (const kind of bodypart) { let scar = slave.scar[surface][kind]; @@ -159,7 +160,7 @@ App.Desc.expandScarString = function(slave, surface) { // scars can sometimes be } r += "raised lines from a whip tracing the curves"; } else if (["left upper arm", "right upper arm"].includes(surface)) { - r += "rough edges where a whip abused $his skin"; + r += `rough edges where a whip abused ${his} skin`; } else { if (scar > 2) { r += "frightening "; @@ -269,7 +270,7 @@ App.Desc.expandScarString = function(slave, surface) { // scars can sometimes be break; case "cutting": if (["left wrist", "right wrist", "neck"].includes(surface)) { - r += "some scars as though $he attempted self harm"; + r += `some scars as though ${he} attempted self harm`; } else { r += "some cuts as though from a razor"; } diff --git a/src/npc/descriptions/describeTattoos.js b/src/npc/descriptions/describeTattoos.js index 58c4af2c6cb1e60a04158420443dbe10ced41050..5d08d394fbc826a4ceeda0d4f5caf7197d824ec2 100644 --- a/src/npc/descriptions/describeTattoos.js +++ b/src/npc/descriptions/describeTattoos.js @@ -7,7 +7,7 @@ App.Desc.tattoo = function(slave, surface) { let r = []; /* eslint-disable no-unused-vars*/ const { - he, him, his, hers, himself, boy, He, His + he, him, his, hers, himself, He, His, woman } = getPronouns(slave); /* eslint-enable */ if (V.showBodyMods !== 1) { @@ -100,7 +100,7 @@ App.Desc.tattoo = function(slave, surface) { r.push(`${His} facial tattoos include 'Sex Slave' across ${his} forehead, 'Face' to the left of ${his} mouth, and 'Pussy' to the right of it.`); break; case "degradation": - r.push(`'${V.desc}' is tattooed across ${his} forehead.`); + r.push(`'${SlaveTitle(slave)}' is tattooed across ${his} forehead.`); break; case "Asian art": r.push(`${He} has a blossoming cherry tree tattooed on one temple; its pink petals are dappled across ${his} cheeks.`); @@ -123,7 +123,7 @@ App.Desc.tattoo = function(slave, surface) { r.push(`'Property of ${PlayerName()}' is tattooed across ${his} forehead.`); break; case "paternalist": - r.push(`'Beloved ${V.desc}' is tattooed across one of ${his} cheeks.`); + r.push(`'Beloved ${SlaveTitle(slave)}' is tattooed across one of ${his} cheeks.`); break; default: r.push(slave.lipsTat); @@ -512,7 +512,7 @@ App.Desc.tattoo = function(slave, surface) { r.push(`${He} has a tramp stamp which reads 'Fuck my ass and be blessed.'`); break; case "possessive": - r.push(`${He} has a tramp stamp which reads '${V.PC.slaveName}'s ${V.desc}.'`); + r.push(`${He} has a tramp stamp which reads '${V.PC.slaveName}'s ${SlaveTitle(slave)}.'`); break; case "paternalist": r.push(`${He} has a tramp stamp which reads 'Fuck me slowly' with an arrow pointing downward.`); @@ -587,12 +587,12 @@ App.Desc.tattoo = function(slave, surface) { if (slave.vagina > -1) { r.push(`'Make me suffer.'`); } else { - r.push(`'As a ${slave}.'`); + r.push(`'As a slave.'`); } r.push(`is tattooed across ${his} right.`); break; case "possessive": - r.push(`'${V.PC.slaveName} made me their' is tattooed across ${his} left buttock; with '${V.desc}' tattooed across ${his} right.`); + r.push(`'${V.PC.slaveName} made me their' is tattooed across ${his} left buttock; with '${SlaveTitle(slave)}' tattooed across ${his} right.`); break; case "paternalist": r.push(`'Treat it' is tattooed across ${his} left buttock; 'Gently' is tattooed across ${his} right.`); @@ -682,7 +682,7 @@ App.Desc.tattoo = function(slave, surface) { } else if (slave.physicalAge > 35) { r.push(`'horny old bitch.'`); } else { - r.push(`'sex ${slave}.'`); + r.push(`'sex slave.'`); } break; case "scenes": @@ -890,7 +890,7 @@ App.Desc.tattoo = function(slave, surface) { r.push(`${His} thighs are used as simple ad space, promoting ${V.arcologies[0].name} and your business pursuits.`); break; case "rude words": - r.push(`${His} left thigh reads '${V.desc}' and the right 'slut.'`); + r.push(`${His} left thigh reads '${SlaveTitle(slave)}' and the right 'slut.'`); break; case "degradation": if (slave.vagina < 0) { diff --git a/src/npc/descriptions/descriptionWidgets.js b/src/npc/descriptions/descriptionWidgets.js index db042db98e265601bf10e08900cffd6cc9b39eb3..2606e331030394e182d96d89d4caf4c160a3a117 100644 --- a/src/npc/descriptions/descriptionWidgets.js +++ b/src/npc/descriptions/descriptionWidgets.js @@ -1354,7 +1354,7 @@ App.Desc.mouthAccessory = function(slave) { r += `ball-shaped gag that prevents ${him} from uttering a word while keeping ${him} uncomfortably aware of ${his} status.`; break; case "bit gag": - r += `${He} is wearing a jaw spreading, bar-shaped gag that prevents ${him} from speaking while keeping $him uncomfortably aware of ${his} status.`; + r += `${He} is wearing a jaw spreading, bar-shaped gag that prevents ${him} from speaking while keeping ${him} uncomfortably aware of ${his} status.`; break; case "dildo gag": r += `${He} is wearing a sturdy leather collar that continues up to restrict ${his} jaw as well. It holds a ring gag in ${his} mouth, into which slots a formidable inward-facing dildo that reaches down ${his} throat. It can be removed to facefuck ${him}.`; diff --git a/src/npc/descriptions/ears.js b/src/npc/descriptions/ears.js index 6d94ae8af562a0e5eb9110fc9aaa3cf2df733515..a0b298074bcda46f20be7d4c0f999eae6c40d918 100644 --- a/src/npc/descriptions/ears.js +++ b/src/npc/descriptions/ears.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.ears = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/face.js b/src/npc/descriptions/face.js index ffed0ce46ca4aeb95e09709972bf65131a94d504..09b39b23203224a0faa91cd1fb9a49270c39a139 100644 --- a/src/npc/descriptions/face.js +++ b/src/npc/descriptions/face.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.face = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/heels.js b/src/npc/descriptions/heels.js index 27beec101b51436ce53371e258ac75954bb02f91..2f7658c29ec011f0aef7b911c4a92d38becfe01a 100644 --- a/src/npc/descriptions/heels.js +++ b/src/npc/descriptions/heels.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.heels = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/heightImplant.js b/src/npc/descriptions/heightImplant.js index 17eb02b9eceed8a4173f27ce3ac81390ea01c306..70360ad026447b24a5f211bc09b6cb89ec49a98b 100644 --- a/src/npc/descriptions/heightImplant.js +++ b/src/npc/descriptions/heightImplant.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.heightImplant = function(slave) { let r = []; const { diff --git a/src/npc/descriptions/hips.js b/src/npc/descriptions/hips.js index 7503c167a628e50ff50c46af30120ddea881669d..3af4a1c094806ae1c31469dfce339353e6777adc 100644 --- a/src/npc/descriptions/hips.js +++ b/src/npc/descriptions/hips.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.hips = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/horns.js b/src/npc/descriptions/horns.js index 053687b0d854d2f56be03142be7fc7a419bcc247..a8ad3d4c4f91cc80a791620ce7c581d7a8c89abe 100644 --- a/src/npc/descriptions/horns.js +++ b/src/npc/descriptions/horns.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.horns = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/limbs.js b/src/npc/descriptions/limbs.js index c5d4a53e508080896b4083ce2a83eb34334411e6..bcad2198f4131d4545bb9f82c33bc1a1f019871b 100644 --- a/src/npc/descriptions/limbs.js +++ b/src/npc/descriptions/limbs.js @@ -124,7 +124,7 @@ App.Desc.limbChange = function() { /** * Generates an array with the current limbs of a slave. * @param {App.Entity.SlaveState} slave - * @returns {[number]} + * @returns {number[]} */ function currentState(slave) { let a = []; @@ -197,7 +197,7 @@ App.Desc.limbChange = function() { /** * * @param {App.Entity.SlaveState} slave - * @param {[number]} newState + * @param {number[]} newState */ function applySelector(slave, newState) { if (getLeftArmID(slave) !== newState[0]) { diff --git a/src/npc/descriptions/mouth.js b/src/npc/descriptions/mouth.js index 9999113115871da6760ad4e9f09274df41ce6703..a61e2d37959bdd19ce33ab2a929931966d104027 100644 --- a/src/npc/descriptions/mouth.js +++ b/src/npc/descriptions/mouth.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.mouth = function(slave) { const r = []; const { @@ -32,9 +36,9 @@ App.Desc.mouth = function(slave) { if (V.arcologies[0].FSTransformationFetishist > 20) { if (slave.lips > 70) { if (slave.lipsImplant / slave.lips < .50) { - r.push(`${His} lips are huge and < span class="red" > disgustingly natural</span > for their size.`); + r.push(`${His} lips are huge and <span class="red">disgustingly natural</span> for their size.`); } else { - r.push(`${His} lips are huge and < span class="green" > obviously implants,</span > as they should be.`); + r.push(`${His} lips are huge and <span class="green">obviously implants,</span> as they should be.`); } } } diff --git a/src/npc/descriptions/shoulders.js b/src/npc/descriptions/shoulders.js index ecf0a2e43525a9574ee95f38850debe39f38096e..4f1dceae5929d0431be779d5d8f4ca766264f2bb 100644 --- a/src/npc/descriptions/shoulders.js +++ b/src/npc/descriptions/shoulders.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.shoulders = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/skin.js b/src/npc/descriptions/skin.js index 507f2a612ffebbbded00295e49bbd3d0faf74a45..38ef0d1600be18ad4a772e4f52c261b527c72cdd 100644 --- a/src/npc/descriptions/skin.js +++ b/src/npc/descriptions/skin.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.skin = function(slave) { let r = []; const { diff --git a/src/npc/descriptions/style/armwear.js b/src/npc/descriptions/style/armwear.js new file mode 100644 index 0000000000000000000000000000000000000000..fa1fbc29ce7230b220b391dcda84c58bfe12d521 --- /dev/null +++ b/src/npc/descriptions/style/armwear.js @@ -0,0 +1,44 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ +App.Desc.armwear = function(slave) { + const r = []; + const { + his, He + } = getPronouns(slave); + // TODO: check clothing descriptions for glove references + if (hasAnyArms(slave)) { + switch (slave.armAccessory) { + case "hand gloves": + r.push(`${He} is wearing a pair of simple gloves that covers ${his}`); + if (hasBothArms(slave)) { + r.push(`hands`); + } else { + r.push(`hand`); + } + r.push(`up to ${his}`); + if (hasBothArms(slave)) { + r.push(`wrists.`); + } else { + r.push(`wrist.`); + } + break; + case "elbow gloves": + r.push(`${He} is wearing a pair of long gloves that covers ${his}`); + if (hasBothArms(slave)) { + r.push(`arms`); + } else { + r.push(`arm`); + } + r.push(`until just past ${his}`); + if (hasBothArms(slave)) { + r.push(`elbows.`); + } else { + r.push(`elbow.`); + } + } + } + + return r.join(" "); +}; diff --git a/src/npc/descriptions/style/clothing.js b/src/npc/descriptions/style/clothing.js index c9b7bba47f2c21a17e3e228c812f6f6fa0a14e91..13405c87e77926e924b02bdfcee2abde82b413b5 100644 --- a/src/npc/descriptions/style/clothing.js +++ b/src/npc/descriptions/style/clothing.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.clothing = function(slave) { const r = []; const { @@ -241,7 +245,7 @@ App.Desc.clothing = function(slave) { } break; case "a chattel habit": - r.push(`the revealing white and gold vestments of an ordained sex ${slave}.`); + r.push(`the revealing white and gold vestments of an ordained sex slave.`); if (hasAnyLegs(slave)) { r.push(`They include`); r.push(App.Desc.footwear(slave)); @@ -314,7 +318,7 @@ App.Desc.clothing = function(slave) { } else if ((skinToneLevel(slave.skin) > 22)) { r.push(`in white to create a striking contrast with ${his} ${slave.skin} skin,`); } else if (slave.addict > 5) { - r.push(`in the electric blue color of aphrodisiacs to signal ${he} 's down to fuck high,`); + r.push(`in the electric blue color of aphrodisiacs to signal ${he}'s down to fuck high,`); } else if ((slave.dick > 0) && canAchieveErection(slave)) { r.push(`in blue to signal that ${he} can get hard,`); } else { @@ -820,7 +824,7 @@ App.Desc.clothing = function(slave) { r.push(`${His} uniform is pinned with the`); if (slave.ID === V.Bodyguard.ID || slave.ID === V.HeadGirl.ID || slave.ID === V.Recruiter.ID || slave.ID === V.Concubine.ID) { r.push(`golden whip and manacles insignia of a senior slave officer,`); - } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.Stewardess.ID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { + } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.StewardessID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { r.push(`golden manacles insignia of a junior slave officer,`); } else if ((slave.skill.combat > 0) && getLimbCount(slave, 105) > 0) { r.push(`silver spear and manacles insignia of an augmented slave soldier,`); @@ -842,7 +846,7 @@ App.Desc.clothing = function(slave) { r.push(`${His} uniform is pinned with the`); if (slave.ID === V.Bodyguard.ID || slave.ID === V.HeadGirl.ID || slave.ID === V.Recruiter.ID || slave.ID === V.Concubine.ID) { r.push(`golden whip and manacles insignia of a senior slave officer,`); - } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.Stewardess.ID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { + } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.StewardessID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { r.push(`golden manacles insignia of a junior slave officer,`); } else if ((slave.skill.combat > 0) && getLimbCount(slave, 105)) { r.push(`silver spear and manacles insignia of an augmented slave soldier,`); @@ -864,7 +868,7 @@ App.Desc.clothing = function(slave) { r.push(`${His} uniform is pinned with the`); if ((slave.ID === V.Bodyguard.ID) || (slave.ID === V.HeadGirl.ID) || (slave.ID === V.Recruiter.ID) || (slave.ID === V.Concubine.ID)) { r.push(`golden whip and manacles insignia of a senior slave officer,`); - } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.Stewardess.ID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { + } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.StewardessID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { r.push(`golden manacles insignia of a junior slave officer,`); } else if ((slave.skill.combat > 0) && getLimbCount(slave, 105)) { r.push(`silver spear and manacles insignia of an augmented slave soldier,`); @@ -886,7 +890,7 @@ App.Desc.clothing = function(slave) { r.push(`${His} uniform is pinned with the`); if ((slave.ID === V.Bodyguard.ID) || (slave.ID === V.HeadGirl.ID) || (slave.ID === V.Recruiter.ID) || (slave.ID === V.Concubine.ID)) { r.push(`golden whip and manacles insignia of a senior slave officer,`); - } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.Stewardess.ID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { + } else if ((slave.ID === V.Madam.ID) || (slave.ID === V.Nurse.ID) || (slave.ID === V.AttendantID) || (slave.ID === V.Matron.ID) || (slave.ID === V.DJ.ID) || (slave.ID === V.Milkmaid.ID) || (slave.ID === V.Farmer.ID) || (slave.ID === V.StewardessID) || (slave.ID === V.Schoolteacher.ID) || (slave.ID === V.Wardeness.ID)) { r.push(`golden manacles insignia of a junior slave officer,`); } else if ((slave.skill.combat > 0) && getLimbCount(slave, 105)) { r.push(`silver spear and manacles insignia of an augmented slave soldier,`); diff --git a/src/npc/descriptions/style/clothingCorset.js b/src/npc/descriptions/style/clothingCorset.js new file mode 100644 index 0000000000000000000000000000000000000000..97f941f6badb6a635e47b10348ab2d65d145251d --- /dev/null +++ b/src/npc/descriptions/style/clothingCorset.js @@ -0,0 +1,628 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ +App.Desc.clothingCorset = function(slave) { + const r = []; + const { + his, He, His + } = getPronouns(slave); + switch (slave.clothes) { + case "a Fuckdoll suit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is built into ${his} suit.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is built into ${his} suit.`); + } + break; + case "a hijab and blouse": + case "conservative clothing": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is hidden by ${his} blouse.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is hidden by ${his} blouse.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} blouse.`); + } + break; + case "spats and a tank top": + if (slave.boobs > 1200) { + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is open to view due to ${his} large chest hiking up ${his} top.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is open to view due to ${his} large chest hiking up ${his} top.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is open to view due to ${his} large chest hiking up ${his} top.`); + } + } else { + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is hidden by ${his} top.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is hidden by ${his} top.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} top.`); + } + } + break; + case "chains": + if (slave.bellyAccessory === "a corset") { + r.push(`Leather cased lengths of chain form a corset around ${his} waist.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${He}'s encased in a very tight corset made of leather cased iron straps, with eyelets to attach to the chains.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is buried under ${his} chains.`); + } + break; + case "Western clothing": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is hidden by ${his} flannel.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is hidden by ${his} flannel.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} flannel.`); + } + break; + case "body oil": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is ${his} only real item of clothing.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is ${his} only real item of clothing.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is ${his} only real item of clothing.`); + } + break; + case "a toga": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is hidden by the toga.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is hidden by the toga.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by the toga.`); + } + break; + case "a huipil": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is visible through the sides.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is visible through the sides.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is is visible through the sides.`); + } + break; + case "a slutty qipao": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is hidden by the silk.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is hidden by the silk.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by the silk.`); + } + break; + case "uncomfortable straps": + if (slave.bellyAccessory === "a corset") { + r.push(`${He}'s wearing a leather corset, hooked into the straps.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${He}'s wearing an extreme leather corset, hooked into the straps.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is buried under ${his} straps.`); + } + break; + case "shibari ropes": + if (slave.bellyAccessory === "a corset") { + r.push(`A dense web of thick ropes around ${his} waist form an effective corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} ropes bind into an extreme corset woven from hemp.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is buried under ${his} ropes.`); + } + break; + case "restrictive latex": + if (slave.bellyAccessory === "a corset") { + r.push(`The latex features an integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The latex features a punishingly extreme integral corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by the latex.`); + } + break; + case "a latex catsuit": + if (slave.bellyAccessory === "a corset") { + r.push(`An underbust corset cinches ${his} waist and ensures proper posture.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`An underbust corset in punishing tightlace cinches ${his} waist and ensures proper posture.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by the latex.`); + } + break; + case "attractive lingerie": + case "attractive lingerie for a pregnant woman": + case "kitty lingerie": + if (slave.bellyAccessory === "a corset") { + r.push(`${He}'s wearing a pretty lace corset to match.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${He}'s wearing a strict whalebone corset to match.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is in plain sight.`); + } + break; + case "a succubus outfit": + case "a courtesan dress": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset includes steel stays to give it real effect.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} corset includes punishingly tight steel stays to give it real effect.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is layered under ${his} corset.`); + } + break; + case "a fallen nuns habit": + if (slave.bellyAccessory === "a corset") { + r.push(`The latex features an integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The latex features a punishingly extreme integral corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is layered under ${his} corset.`); + } + break; + case "a chattel habit": + if (slave.bellyAccessory === "a corset") { + r.push(`The habit includes a prominent white corset with gold stays.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The habit includes an extremely tight white corset with gold stays.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is visible through ${his} habit.`); + } + break; + case "a penitent nuns habit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is hidden, but very uncomfortable.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} corset is hidden, but crushingly uncomfortable.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} habit.`); + } + break; + case "a string bikini": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is a fun color, but still clashes with ${his} bikini pretty badly.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corset is a fun color, but still clashes with ${his} bikini pretty badly.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is a fun color, but still clashes with ${his} bikini pretty badly.`); + } + break; + case "a scalemail bikini": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is a dull color, and clashes with ${his} bikini pretty badly.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corset is a dull color, and clashes with ${his} bikini pretty badly.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band clashes with ${his} bikini pretty badly.`); + } + break; + case "striped panties": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is a fun color and compliments ${his} cute panties.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corset is a fun color and compliments ${his} cute panties.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is a fun color and compliments ${his} cute panties.`); + } + break; + case "a cheerleader outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} top incorporates a subtle corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} top incorporates severe corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} top does little to conceal ${his} support band.`); + } + break; + case "clubslut netting": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is a fun color, but still clashes with ${his} netting pretty badly.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corset is a fun color, but still clashes with ${his} netting pretty badly.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is a fun color, but still clashes with ${his} netting pretty badly.`); + } + break; + case "cutoffs and a t-shirt": + if (slave.bellyAccessory === "a corset") { + r.push(`The t-shirt conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The t-shirt conceals ${his} severe corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} t-shirt.`); + } + break; + case "a slave gown": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} gown has an elegant integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} gown has extreme corsetage built into it.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is concealed by ${his} gown.`); + } + break; + case "slutty business attire": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} jacket totally conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} jacket totally conceals ${his} absurd corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} jacket.`); + } + break; + case "nice business attire": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} jacket totally conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} jacket totally conceals ${his} absurd corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} jacket.`); + } + break; + case "a ball gown": + if (slave.bellyAccessory === "a corset") { + r.push(`The dress has an elegant integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The dress has extreme corsetage built into it.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} gown.`); + } + break; + case "a halter top dress": + if (slave.bellyAccessory === "a corset") { + r.push(`The dress has an elegant integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The dress has extreme corsetage built into it.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} dress.`); + } + break; + case "a mini dress": + if (slave.bellyAccessory === "a corset") { + r.push(`The dress also cleverly doubles as an overbust corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The dress also cleverly doubles as an extreme overbust corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} dress.`); + } + break; + case "a comfortable bodysuit": + if (slave.bellyAccessory === "a corset") { + r.push(`Its middle is reinforced to act as a corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`Its middle is strongly reinforced to act as a merciless corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} bodysuit.`); + } + break; + case "a leotard": + if (slave.bellyAccessory === "a corset") { + r.push(`The leotard's middle is reinforced to act as a corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The leotard's middle is strongly reinforced to act as a merciless corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} leotard.`); + } + break; + case "a burkini": + case "a one-piece swimsuit": + if (slave.bellyAccessory === "a corset") { + r.push(`The swimsuit's middle is reinforced to act as a corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The swimsuit's middle is strongly reinforced to act as a merciless corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden under ${his} swimsuit.`); + } + break; + case "a monokini": + if (slave.bellyAccessory === "a corset") { + r.push(`A corset peaks out from the top of the swimsuit.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`An extreme corset peaks out from the top of the swimsuit.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band peaks out from the top of the swimsuit.`); + } + break; + case "overalls": + if (slave.bellyAccessory === "a corset") { + r.push(`A corset peaks out from the top of the overalls.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`An extreme corset peaks out from the top of the overalls.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band peaks out from the top of the overalls.`); + } + break; + case "an apron": + if (slave.bellyAccessory === "a corset") { + r.push(`The apron hides the front of ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The apron hides the front of ${his} extreme corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`The apron hides the front of ${his} support band.`); + } + break; + case "a cybersuit": + if (slave.bellyAccessory === "a corset") { + r.push(`A corset wraps the bodysuit snugly.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`An extreme corset wraps the bodysuit tightly.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden under ${his} bodysuit.`); + } + break; + case "a bunny outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} bunny outfit has an integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} bunny outfit has extreme corsetage built into it.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} teddy.`); + } + break; + case "a slutty maid outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} maid uniform has an integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} maid uniform has extreme corsetage built into it.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} maid uniform.`); + } + break; + case "a nice maid outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} maid uniform has an integral corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} uniform has extreme corsetage built into it.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} maid uniform.`); + } + break; + case "a slutty nurse outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} jacket totally conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} jacket totally conceals ${his} absurd corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} jacket.`); + } + break; + case "a nice nurse outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} scrubs totally conceal ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} scrubs totally conceal ${his} absurd corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} scrubs.`); + } + break; + case "a schoolgirl outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`The outline of ${his} corset can be seen through ${his} blouse.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The outline of ${his} absurd corsetage can be seen through ${his} blouse.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band can be seen under ${his} blouse.`); + } + break; + case "a hanbok": + case "a kimono": + if (slave.bellyAccessory === "a corset") { + r.push(`The handsome silk completely conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The handsome silk completely conceals ${his} absurd corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`The handsome silk completely conceals ${his} support band.`); + } + break; + case "a klan robe": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is hidden by ${his} long robes.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corsetage is hidden by ${his} long robes.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} long robes.`); + } + break; + case "a burqa": + case "a hijab and abaya": + case "a niqab and abaya": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is properly hidden along with everything else.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corsetage is properly hidden along with everything else.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is properly hidden along with everything else.`); + } + break; + case "a gothic lolita dress": + case "a Santa dress": + if (slave.bellyAccessory === "a corset") { + r.push(`The thick fabric of ${his} dress conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`The thick fabric of ${his} dress conceals ${his} extreme corset.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`The thick fabric of ${his} dress conceals ${his} support band.`); + } + break; + case "a military uniform": + case "a mounty outfit": + case "a red army uniform": + case "a schutzstaffel uniform": + case "a slutty schutzstaffel uniform": + case "a police uniform": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} tunic conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} tunic conceals ${his} extreme corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} tunic.`); + } + break; + case "a biyelgee costume": + case "a dirndl": + case "a long qipao": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} dress conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} dress conceals ${his} extreme corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} dress.`); + } + break; + case "battlearmor": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} armor conceals ${his} corset.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} armor conceals ${his} extreme corsetage.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden under ${his} armor.`); + } + break; + case "lederhosen": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is built into the suspenders of ${his} outfit.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is built into the suspenders of ${his} outfit.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} outfit.`); + } + break; + case "battledress": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is strapped on top of ${his} shirt.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} ridiculous corset is strapped on top of ${his} shirt.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} shirt.`); + } + break; + case "harem gauze": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset, though functional, is covered with little bells and charms that glint through the gauze.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corset, though cruelly functional, is covered with little bells and charms that glint through the gauze.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is covered with little bells and charms that glint through the gauze.`); + } + break; + case "slutty jewelry": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is ${his} only real piece of clothing.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corset is ${his} only real piece of clothing.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is ${his} only real piece of clothing.`); + } + break; + case "a maternity dress": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is hidden by ${his} blouse.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is hidden by ${his} blouse.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} blouse.`); + } + break; + case "stretch pants and a crop-top": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is completely exposed between ${his} top and bottom.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is completely exposed between ${his} top and bottom.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is left completely exposed between ${his} top and bottom.`); + } + break; + case "a nice pony outfit": + case "a slutty pony outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset compliments ${his} outfit nicely.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage compliments ${his} outfit nicely.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden within ${his} outfit.`); + } + break; + case "a tube top and thong": + case "striped underwear": + case "leather pants and tube top": + case "sport shorts and a sports bra": + case "a slutty klan robe": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is completely exposed between ${his} top and bottom.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is completely exposed between ${his} top and bottom.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is completely exposed between ${his} top and bottom.`); + } + break; + case "a bra": + case "a striped bra": + case "a sports bra": + case "a thong": + case "panties": + case "a tube top": + case "a skimpy loincloth": + case "boyshorts": + case "cutoffs": + case "jeans": + case "sport shorts": + case "leather pants": + case "leather pants and a tube top": + case "leather pants and pasties": + case "panties and pasties": + case "pasties": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is completely exposed.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is completely exposed.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is completely exposed.`); + } + break; + case "a button-up shirt and panties": + case "a button-up shirt": + case "a sweater": + case "a tank-top": + case "a sweater and panties": + case "a t-shirt": + case "a tank-top and panties": + case "a t-shirt and thong": + case "an oversized t-shirt and boyshorts": + case "an oversized t-shirt": + case "a t-shirt and jeans": + case "sport shorts and a t-shirt": + case "a t-shirt and panties": + case "a sweater and cutoffs": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} sturdy corset is hidden by ${his} clothing.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corsetage is hidden by ${his} clothing.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is hidden by ${his} clothing.`); + } + break; + case "a bimbo outfit": + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is a fun color and compliments ${his} slutty appearance.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} absurd corset is a fun color and compliments ${his} slutty appearance.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is a fun color and compliments ${his} slutty appearance.`); + } + break; + default: + if (slave.bellyAccessory === "a corset") { + r.push(`${His} corset is ${his} only real piece of clothing.`); + } else if (slave.bellyAccessory === "an extreme corset") { + r.push(`${His} extreme corset is ${his} only real piece of clothing.`); + } else if (slave.bellyAccessory === "a support band") { + r.push(`${His} support band is ${his} only real piece of clothing.`); + } + } + + return r.join(" "); +}; diff --git a/src/npc/descriptions/style/collar.js b/src/npc/descriptions/style/collar.js new file mode 100644 index 0000000000000000000000000000000000000000..add1e5c611c66014016bf8316baf662b29309512 --- /dev/null +++ b/src/npc/descriptions/style/collar.js @@ -0,0 +1,152 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ +App.Desc.collar = function(slave) { + const r = []; + let daddy; + const pregCollar = either(1, 2, 3); + const { + he, him, his, He + } = getPronouns(slave); + switch (slave.collar) { + case "uncomfortable leather": + r.push(`${He} is wearing an uncomfortable leather collar with a useful steel ring in front.`); + break; + case "preg biometrics": + if (slave.pregSource > 0) { + daddy = findFather(slave.pregSource).slaveName; + } + r.push(`${He} is wearing a heavy metal collar with a digital display; it currently reads:`); + if (slave.preg > 0 && slave.pregKnown === 0) { + r.push(`"I might be preggers! Rub my belly for luck!"`); + } else { + if (pregCollar === 1) { + if (slave.pregWeek < 0) { + r.push(`"I'm a mommy now!"`); + } else if (slave.pregKnown === 0) { + r.push(`"Knock me up!"`); + } else if (slave.pregKnown === 1) { + if (slave.pregType === 0) { + r.push(`"1 baby`); + } else { + r.push(`${slave.pregType} babies`); + } + r.push(`on board!"`); + } else { + r.push(`"I'm infertile!"`); + } + } else if (pregCollar === 2) { + if (slave.pregWeek < 0) { + r.push(`"${num(slave.pregWeek * -1)}`); + if (slave.pregWeek === -1) { + r.push(`week`); + } else { + r.push(`weeks`); + } + r.push(`until I can get preggers again!"`); + } else if (slave.pregKnown === 1) { + if (slave.broodmother === 2) { + if (slave.preg > 37) { + r.push(`"I'm crowning as you read this!"`); + } else { + r.push(`"${38 - Math.ceil(slave.preg)} weeks till I pop!"`); + } + } else if (slave.broodmother === 1) { + r.push(`"${38 - Math.ceil(slave.preg)} weeks till I pop!"`); + } else { + r.push(`"${40 - slave.preg} weeks till I pop!"`); + } + } else { + r.push(`"My womb needs filling!"`); + } + } else { + if (slave.pregWeek < 0) { + r.push(`"I can't wait for my belly to swell with life again!"`); + } else if (slave.pregKnown === 0) { + r.push(`"Put a baby in me today!"`); + } else if (slave.pregSource === -1) { + r.push(`"Womb claimed by my ${WrittenMaster(slave)}!"`); + } else if (slave.pregSource === 0 || slave.pregSource === -2 || slave.pregSource === -5) { + r.push(`"Baby made by slutting around!"`); + } else if (slave.pregSource === -7) { + r.push(`"My baby was made with science!"`); + } else if (slave.pregSource === -9) { + r.push(`"Futanari Sisters, now two for the price of one!"`); + } else if (slave.pregSource > 0) { + r.push(`"Womb claimed by ${daddy}!"`); + } else { + r.push(`"Put a baby in me today!"`); + } + } + } + break; + case "silk ribbon": + r.push(`${He} is wearing a tight silk ribbon fitted to ${his} neck, it is oddly elegant.`); + break; + case "tight steel": + r.push(`${He} is wearing a tight steel collar whose restricting metal touch ${he} cannot escape.`); + break; + case "shock punishment": + r.push(`${He} is wearing a utilitarian collar with a punishment device at ${his} throat to administer agonizing shocks.`); + break; + case "neck corset": + r.push(`${He} is wearing a fitted leather neck corset that constricts ${his} breathing and holds ${his} head rigidly upright.`); + break; + case "stylish leather": + r.push(`${He} is wearing a stylish leather collar buckled in the front, a classic accessory for the well behaved slave.`); + break; + case "satin choker": + r.push(`${He} is wearing a steel reinforced black satin choker that is at once elegant and functional.`); + break; + case "heavy gold": + r.push(`${He} is wearing a heavy gold collar, an outstanding bit of ostentation.`); + break; + case "pretty jewelry": + r.push(`${He} is wearing a pretty slave collar that can almost be mistaken for jewelry.`); + break; + case "bell collar": + r.push(`${He} is wearing a comfortable leather collar with a small brass bell at ${his} throat.`); + break; + case "leather with cowbell": + r.push(`${He} is wearing a comfortable leather collar with a small steel cowbell at ${his} throat.`); + break; + case "bowtie": + r.push(`${He} is wearing the collar from a white formal shirt, and a black bowtie, though these conceal an actual collar that works perfectly well for restraint.`); + break; + case "neck tie": + r.push(`${He} is wearing a neck tie, though it conceals an actual collar that works perfectly well for restraint.`); + break; + case "ancient Egyptian": + r.push(`${He} is wearing a beautiful golden wesekh, a collar that spreads from ${his} neck out onto both shoulders and down ${his} front.`); + break; + case "cruel retirement counter": + case "nice retirement counter": + r.push(`${He} is wearing a`); + if (slave.collar === "cruel retirement counter") { + r.push(`heavy metal collar`); + } else { + r.push(`nice collar, almost a necklace,`); + } + r.push(`with a small numerical display reading`); + if (slave.indenture > -1) { + r.push(`${slave.indenture}, the number of weeks left in ${his} indenture.`); + } else if (V.policies.retirement.sex > 0) { + r.push(`${V.policies.retirement.sex - (slave.counter.oral + slave.counter.anal + slave.counter.vaginal + slave.counter.penetrative + slave.counter.mammary)}, for the number of cocks between ${him} and ${his} freedom.`); + } else if (V.policies.retirement.milk > 0) { + r.push(`${V.policies.retirement.milk - slave.counter.milk}, for the amount of milk ${he} has yet to give.`); + } else if (V.policies.retirement.cum > 0) { + r.push(`${V.policies.retirement.cum - slave.counter.cum}, for the amount of cum ${he} has yet to give.`); + } else if (V.policies.retirement.births > 0) { + r.push(`${V.policies.retirement.births - slave.counter.births}, for the number of pregnancies still between ${him} and freedom.`); + } else if (V.policies.retirement.kills > 0) { + r.push(`${V.policies.retirement.kills - slave.counter.pitKills}, for the number of lives still between ${him} and freedom.`); + } else if (V.policies.retirement.physicalAgePolicy === 0) { + r.push(`${(365 * (V.retirementAge - slave.actualAge)) + (7 * (52 - slave.birthWeek))}, the number of days of sexual slavery ahead of ${him}.`); + } else { + r.push(`${(365 * (V.retirementAge - slave.physicalAge)) + (7 * (52 - slave.birthWeek))}, the number of days of sexual slavery ahead of ${him}.`); + } + } + + return r.join(" "); +}; diff --git a/src/npc/descriptions/style/footwear.js b/src/npc/descriptions/style/footwear.js index e8eeb80582c94504d87d6c097dd93c48b9b00ce7..9e61f591c2ec5e16d7ff90e3c10dfcfa64588ec1 100644 --- a/src/npc/descriptions/style/footwear.js +++ b/src/npc/descriptions/style/footwear.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.footwear = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/style/hair.js b/src/npc/descriptions/style/hair.js index b62db26e51427fd3988aa03c4243cb1a3cb3e1fc..86f18eb74e619c8227761e5b2bdf2e5a9b97bb1b 100644 --- a/src/npc/descriptions/style/hair.js +++ b/src/npc/descriptions/style/hair.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.hair = function(slave) { const r = []; const { @@ -13,7 +17,7 @@ App.Desc.hair = function(slave) { break; case "shaved": case "shaved bald": - r.push(`hair has been shaved.If ${his} hair were visible, it would be ${slave.hColor}.`); + r.push(`hair has been shaved. If ${his} hair were visible, it would be ${slave.hColor}.`); break; case "buzzcut": r.push(`${slave.hColor} hair is in a short buzzcut.`); @@ -24,7 +28,7 @@ App.Desc.hair = function(slave) { case "afro": r.push(`${slave.hColor} hair is in a`); if (slave.hLength > 100) { - r.push(`gigantic puffed - up afro and looks ridiculous.`); + r.push(`gigantic puffed-up afro and looks ridiculous.`); } else if (slave.hLength > 30) { r.push(`puffy afro.`); } else { @@ -34,13 +38,13 @@ App.Desc.hair = function(slave) { case "cornrows": r.push(`${slave.hColor} hair is formed tightly into cornrows in a decorative pattern on ${his} head, dangling`); if (slave.hLength >= 150) { - r.push(`down calf - length,`); + r.push(`down calf-length,`); } else if (slave.hLength >= 100) { - r.push(`down ass - length,`); + r.push(`down ass-length,`); } else if (slave.hLength >= 30) { r.push(`down long,`); } else if (slave.hLength >= 10) { - r.push(`down shoulder - length,`); + r.push(`down shoulder-length,`); } else { r.push(`down,`); } @@ -83,19 +87,19 @@ App.Desc.hair = function(slave) { case "tails": case "up": if (hairLength > 0.9) { - r.push(`floor - length,`); + r.push(`floor-length,`); } else if (hairLength > 0.8) { - r.push(`calf - length,`); + r.push(`calf-length,`); } else if (hairLength > 0.7) { - r.push(`knee - length,`); + r.push(`knee-length,`); } else if (hairLength >= 0.6) { - r.push(`thigh - length,`); + r.push(`thigh-length,`); } else if (hairLength >= 0.4) { - r.push(`ass - length,`); + r.push(`ass-length,`); } else if (hairLength >= 0.2) { r.push(`long,`); } else if (hairLength >= 15) { - r.push(`shoulder - length,`); + r.push(`shoulder-length,`); } else { r.push(`short,`); } @@ -103,17 +107,17 @@ App.Desc.hair = function(slave) { r.push(App.Desc.hairClothing(slave)); break; default: - r.push(`${slave.hColor} hair is slave.hStyle.`); + r.push(`${slave.hColor} hair is ${slave.hStyle}.`); } r.push(`${His}`); if (slave.eyebrowHStyle === "bald") { - r.push(`brows do not grow hair.${His} eyebrows would be ${slave.eyebrowHColor} in color if they did.`); + r.push(`brows do not grow hair. ${His} eyebrows would be ${slave.eyebrowHColor} in color if they did.`); } else if (slave.eyebrowHStyle === "shaved") { r.push(`eyebrows have`); if (slave.hStyle === "shaved" || slave.hStyle === "shaved bald") { r.push(`also`); } - r.push(`been shaved off.If they were visible, they would be ${slave.eyebrowHColor} in color.`); + r.push(`been shaved off. If they were visible, they would be ${slave.eyebrowHColor} in color.`); } else { r.push(`${slave.eyebrowHColor} eyebrows`); switch (slave.eyebrowHStyle) { @@ -130,7 +134,7 @@ App.Desc.hair = function(slave) { r.push(`naturally contour to the shape of ${his} brow.`); break; case "curved": - r.push(`form small "S" - shaped curves above ${his} eyes.`); + r.push(`form small "S"-shaped curves above ${his} eyes.`); break; case "straight": r.push(`are near perfectly straight, instead of curving.`); diff --git a/src/npc/descriptions/style/hairClothing.js b/src/npc/descriptions/style/hairClothing.js index 43eca1ab8ab04d89eae08c44fa25b59daac18774..b0b4a402cc8025fde936113b94b0f9407c4aaf84 100644 --- a/src/npc/descriptions/style/hairClothing.js +++ b/src/npc/descriptions/style/hairClothing.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.hairClothing = function(slave) { const r = []; const { diff --git a/src/npc/descriptions/style/upperFace.js b/src/npc/descriptions/style/upperFace.js new file mode 100644 index 0000000000000000000000000000000000000000..9e4963b48101ac9d582bf0232829e867614bb9e4 --- /dev/null +++ b/src/npc/descriptions/style/upperFace.js @@ -0,0 +1,241 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ +App.Desc.upperFace = function(slave) { + const r = []; + const { + he, him, his, He, His + } = getPronouns(slave); + if (slave.fuckdoll === 0) { + switch (slave.clothes) { + case "restrictive latex": + r.push(`The upper half of ${his} face is covered by the hood of ${his} latex suit: though`); + if (canSee(slave)) { + r.push(`${he} can see through eye-holes, these can easily be closed to blind ${him}.`); + } else { + r.push(`there are eye-holes, they are currently closed due to their lack of use.`); + } + break; + case "harem gauze": + r.push(`${His} harem outfit includes the traditional veil for ${his} face.`); + break; + case "a burkini": + r.push(`Above ${his} shoulders, ${his} burkini leaves only ${his} face bare.`); + break; + case "a hijab and blouse": + r.push(`Above the shoulders of ${his} blouse, ${his} hijab leaves only ${his} face bare.`); + break; + case "a hijab and abaya": + r.push(`Above the shoulders of ${his} abaya, ${his} hijab leaves only ${his} face bare.`); + break; + case "a niqab and abaya": + r.push(`Above the shoulders of ${his} abaya, ${his} niqab leaves only the area around ${his} eyes bare.`); + break; + case "a klan robe": + case "a slutty klan robe": + r.push(`Above the shoulders of ${his} robe, ${his} hood leaves only the area around ${his} eyes bare.`); + break; + case "a burqa": + r.push(`${His} burqa near totally covers ${his} face, aside from what can be seen behind the fabric mesh that covers ${his} eyes.`); + break; + case "a chattel habit": + r.push(`A golden circlet crowns ${his} white cowl, securing ${his} habit to ${his} head.`); + break; + case "a succubus outfit": + r.push(`${He} has a pair of false horns sprouting from just behind ${his} hairline and sweeping backward, which are anchored to a wire headband hidden by ${his} hair.`); + break; + case "a bunny outfit": + r.push(`A pair of bunny ears sprout from a headband atop ${his} head.`); + break; + } + if (hasAnyCyberneticEyes(slave)) { + r.push(`${He} has artificial`); + if (hasBothCyberneticEyes(slave)) { + r.push(`eyes.`); + } else { + r.push(`an eye.`); + } + } + if (slave.eyewear === "corrective glasses" || slave.eyewear === "blurring glasses" || slave.eyewear === "glasses") { + r.push(`${He}'s wearing a pair of`); + switch (slave.clothes) { + case "chains": + case "shibari ropes": + case "uncomfortable straps": + case "a chattel habit": + case "overalls": + case "Western clothing": + r.push(`sturdy glasses,`); + break; + case "restrictive latex": + r.push(`glasses over the hood,`); + break; + case "a ball gown": + case "a slave gown": + case "conservative clothing": + case "cutoffs and a t-shirt": + case "a halter top dress": + case "a maternity dress": + case "a courtesan dress": + r.push(`nice frameless glasses,`); + break; + case "body oil": + r.push(`big retro glasses,`); + break; + case "slutty business attire": + r.push(`horn-rimmed glasses to accent ${his} business attire,`); + break; + case "a schoolgirl outfit": + r.push(`horn-rimmed glasses to improve ${his} schoolgirl look,`); + break; + case "nice business attire": + r.push(`wire-frame glasses to accent ${his} business attire,`); + break; + case "attractive lingerie": + case "attractive lingerie for a pregnant woman": + case "an apron": + case "a hijab and blouse": + r.push(`feminine glasses,`); + break; + case "kitty lingerie": + r.push(`cat-eye glasses,`); + break; + case "a succubus outfit": + r.push(`severe steel-frame glasses,`); + break; + case "harem gauze": + case "slutty jewelry": + r.push(`glasses with golden wire frames,`); + break; + case "a burqa": + case "a niqab and abaya": + case "a penitent nuns habit": + case "a klan robe": + case "a slutty klan robe": + r.push(`cheap glasses,`); + break; + case "a gothic lolita dress": + r.push(`Victorian-styled glasses,`); + break; + case "a hanbok": + r.push(`folding spectacle glasses,`); + break; + case "a police uniform": + r.push(`aviator sunglasses,`); + break; + case "a Santa dress": + r.push(`antique reading glasses,`); + break; + case "a bunny outfit": + case "a monokini": + r.push(`girly retro glasses,`); + break; + case "a hijab and abaya": + case "a huipil": + case "a kimono": + case "a long qipao": + case "a nice maid outfit": + case "a slutty qipao": + case "a slutty maid outfit": + r.push(`an old fashioned pair of horn rimmed glasses,`); + break; + case "a fallen nuns habit": + case "a cheerleader outfit": + case "a slutty nurse outfit": + r.push(`a daring pair of horn rimmed glasses,`); + break; + case "clubslut netting": + case "a string bikini": + case "striped panties": + case "a bimbo outfit": + r.push(`a pair of girly pastel glasses,`); + break; + case "a scalemail bikini": + r.push(`a pair of ancient-looking glasses,`); + break; + case "a burkini": + case "a one-piece swimsuit": + r.push(`swim goggles,`); + break; + default: + r.push(`simple wire-frame glasses,`); + } + if (getBestVision(slave) === 0) { + r.push(`which, since ${he} is <span class="red">blind,</span> are just for show. ${He} moves carefully as to not bump into things.`); + } else { + if (slave.eyewear === "blurring glasses") { + if (anyVisionEquals(slave, 2)) { + r.push(`which are designed to blur ${his} vision, making ${him} clumsy.`); + } else { + r.push(`which do nothing to help ${his} <span class="yellow">nearsightedness</span> and consequent clumsiness.`); + } + } else if (slave.eyewear === "corrective glasses") { + if (anyVisionEquals(slave, 1)) { + r.push(`which correct ${his} vision.`); + } else { + r.push(`which are just for show.`); + } + } else { + r.push(`which are just for show.`); + } + } + } else { + if (!canSee(slave)) { + r.push(`${He} is <span class="red">blind,</span> and moves very carefully as a result.`); + } else if (!canSeePerfectly(slave)) { + if (slave.eyewear === "blurring contacts") { + r.push(`${He}'s wearing contacts designed to blur ${his} vision, making ${him} clumsy.`); + } else { + r.push(`${He}'s <span class="yellow">nearsighted,</span> and a bit clumsy as a result.`); + } + } else { + if (slave.eyewear === "corrective contacts") { + r.push(`${He}'s wearing contact lenses to correct ${his} <span class="yellow">nearsightedness.</span>`); + } + } + } + // CLOSES EYEWEAR + if (slave.earwear === "hearing aids" || slave.earwear === "muffling ear plugs" || slave.earwear === "deafening ear plugs") { + r.push(`In ${his} ears, ${he} wears`); + if (slave.earwear === "hearing aids") { + r.push(`a pair of hearing aids,`); + if (slave.hears > -1) { + r.push(`which do little to correct ${his} already adequate hearing.`); + } else if (slave.hears === -1) { + r.push(`which are used to correct ${his} <span class="yellow">hearing impairment.</span>`); + } else if (slave.hears < -1) { + r.push(`which, due to ${his} <span class="red">deafness,</span> are useless.`); + } + } else if (slave.earwear === "muffling ear plugs") { + r.push(`a pair of small foam ear plugs,`); + if (slave.hears > -1) { + r.push(`which noticeably <span class="yellow">muffle ${his} hearing.</span>`); + } else if (slave.hears === -1) { + r.push(`which are pointless, as ${he} is already <span class="yellow">hard of hearing.</span>`); + } else if (slave.hears < -1) { + r.push(`which are pointless, as ${he} is totally <span class="red">deaf.</span>`); + } + } else if (slave.earwear === "deafening ear plugs") { + r.push(`a pair of large silicone ear plugs,`); + if (slave.hears > -1) { + r.push(`which <span class="red">nullify ${his} sense of hearing.</span>`); + } else if (slave.hears === -1) { + r.push(`which impair ${his} hearing to the point of <span class="red">deafness.</span>`); + } else if (slave.hears < -1) { + r.push(`which are pointless, as ${he} is already <span class="red">deaf.</span>`); + } + } + } else { + if (slave.hears === -1) { + r.push(`${He}'s <span class="yellow">hard of hearing,</span> and a bit nervous as a result.`); + } else if (slave.hears < -1) { + r.push(`${He} is <span class="red">deaf,</span> and overly paranoid as a result.`); + } + } + } else { + r.push(`${His} face is featurelessly obscured by the Fuckdoll suit from the top of ${his} head down to ${his} face hole.`); + } + + return r.join(" "); +}; diff --git a/src/npc/descriptions/waist.js b/src/npc/descriptions/waist.js index f48ba2ec54f7db993f529d7ba556fbe902b69994..4e885748d63fce6f77ba6a717f1626e687da1140 100644 --- a/src/npc/descriptions/waist.js +++ b/src/npc/descriptions/waist.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.waist = function(slave) { const r = []; let frag; @@ -107,7 +111,7 @@ App.Desc.waist = function(slave) { r.push(`figure and accentuates how fat ${he} is.`); } else if (slave.weight < -30) { r.push(`figure despite how thin ${he} is.`); - } else{ + } else { r.push(`figure.`); } if (slave.belly >= 1500) { diff --git a/src/npc/descriptions/womb/pregnancy.js b/src/npc/descriptions/womb/pregnancy.js index 28a9055fe4d8a0c64922b499cb7b3477cea207f3..1a9fd903abae738cf88dc0050530a1d503d10457 100644 --- a/src/npc/descriptions/womb/pregnancy.js +++ b/src/npc/descriptions/womb/pregnancy.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.pregnancy = function(slave) { const r = []; const { @@ -772,7 +776,7 @@ App.Desc.pregnancy = function(slave) { if (sameFather !== 1) { r.push(`tests report multiple different sources.`); } else { - if (slaveWD.litterData[litCount][0].age > slave.pregData.normalBirth / 8) { + if (slaveWD.litterData[slaveWD.litters.length-1][0].age > slave.pregData.normalBirth / 8) { r.push(`all of them too young to tell the father of.`); } else if (slave.pregSource === -7) { r.push(`all of them modified children from the gene lab.`); diff --git a/src/npc/descriptions/womb/superfetation.js b/src/npc/descriptions/womb/superfetation.js index e1f0abfb16a116e94e776a185a680d916b4421ac..dfd4ef1bc129e77786ebf1e0fc5e192e6fee113a 100644 --- a/src/npc/descriptions/womb/superfetation.js +++ b/src/npc/descriptions/womb/superfetation.js @@ -1,3 +1,7 @@ +/** + * @param {App.Entity.SlaveState} slave + * @returns {string} + */ App.Desc.superfetation = function(slave) { const r = []; const { diff --git a/src/player/desc/playerBelly.js b/src/player/desc/playerBelly.js index ab532aca55547ac6f438cc28db0fcd09851d1122..a0e020c364587bc00e1c469b3a3ede477900ac0a 100644 --- a/src/player/desc/playerBelly.js +++ b/src/player/desc/playerBelly.js @@ -5,6 +5,7 @@ App.Desc.Player.belly = function() { let toSearch; let babyDaddy; let adjust; + const {girlP} = getPronouns(V.PC).appendSuffix("P"); if (passage() === "Manage Personal Affairs") { if (V.PC.preg > 0) { @@ -71,11 +72,11 @@ App.Desc.Player.belly = function() { if (V.PC.career === "servant") { if (V.PC.preg > 0) { if (V.PC.belly >= 120000) { - r.push(`You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-`); + r.push(`You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a`); if (V.showInches === 2) { - r.push(`yard`); + r.push(`half-yard`); } else { - r.push(`meter`); + r.push(`half-meter`); } r.push(`from your front and has soundly defeated the seams of your`); if (V.PC.dick !== 0) { @@ -115,7 +116,7 @@ App.Desc.Player.belly = function() { } else if (V.PC.belly >= 15000) { r.push(`You've taken the time to let out your own dress so that you can look proper even with a belly as big as any full-term woman's.`); } else if (V.PC.belly >= 14000) { - r.push(`Your dress is at its capacity; any bigger and you'd risk tearing it at the seams, though your late Master did make sure his ${_girlP}s were well dressed even when they were fully rounded with his child.`); + r.push(`Your dress is at its capacity; any bigger and you'd risk tearing it at the seams, though your late Master did make sure his ${girlP}s were well dressed even when they were fully rounded with his child.`); } else if (V.PC.belly >= 12000) { r.push(`You keep bumping into things with your huge belly; you're used to it though,`); if (V.PC.counter.birthMaster >= 2) { @@ -227,12 +228,10 @@ App.Desc.Player.belly = function() { adjustFatherProperty(babyDaddy, "PCKnockedUp", adjust); } if (V.slaveIndices[V.PC.pregSource]) { - ({ - he, him, his, hers, himself, girl, He, His, loli, wife, wives - } = getPronouns(babyDaddy)); + const {him} = getPronouns(babyDaddy); r.push(`Rumors spread among your slaves that your middle is swollen with ${babyDaddy.slaveName}'s child. They're not wrong, though`); if (babyDaddy.devotion > 20) { - r.push(`babyDaddy.slaveName is broken enough to not try and use it against you.In fact, it might even draw ${him} closer to you.`); + r.push(`${babyDaddy.slaveName} is broken enough to not try and use it against you. In fact, it might even draw ${him} closer to you.`); } else { r.push(`you'd have liked it to have kept that from ${babyDaddy.slaveName}, lest the rebellious bitch use it to remain defiant.`); } @@ -242,11 +241,11 @@ App.Desc.Player.belly = function() { } else if (V.PC.career === "escort") { if (V.PC.preg > 0) { if (V.PC.belly >= 120000) { - r.push(`You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-`); + r.push(`You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a`); if (V.showInches === 2) { - r.push(`yard`); + r.push(`half-yard`); } else { - r.push(`meter`); + r.push(`half-meter`); } r.push(`from your front and has seized control as your dominant aspect.`); if (V.PC.dick !== 0) { @@ -374,9 +373,7 @@ App.Desc.Player.belly = function() { adjustFatherProperty(babyDaddy, "PCKnockedUp", adjust); } if (V.slaveIndices[V.PC.pregSource]) { - ({ - him - } = getPronouns(babyDaddy)); + const {him} = getPronouns(babyDaddy); r.push(`Rumors spread among your slaves that your middle is swollen with ${babyDaddy.slaveName}'s child. They're not wrong, though`); if (babyDaddy.devotion > 20) { r.push(`${babyDaddy.slaveName} is broken enough to not try and use it against you. In fact, it might even draw ${him} closer to you.`); @@ -389,11 +386,11 @@ App.Desc.Player.belly = function() { } else { if (V.PC.preg > 0) { if (V.PC.belly >= 120000) { - r.push(`You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a half-`); + r.push(`You don't know how much more you can take. You feel so full and your children never calm down. You swear they take shifts tormenting your poor bladder. Even worse, your pregnancy juts out over a`); if (V.showInches === 2) { - r.push(`yard`); + r.push(`half-yard`); } else { - r.push(`meter`); + r.push(`half-meter`); } r.push(`from your front and has soundly defeated your maternity suit.`); if (V.PC.dick !== 0) { @@ -499,9 +496,7 @@ App.Desc.Player.belly = function() { adjustFatherProperty(babyDaddy, "PCKnockedUp", adjust); } if (V.slaveIndices[V.PC.pregSource]) { - ({ - him - } = getPronouns(babyDaddy)); + const {him} = getPronouns(babyDaddy); r.push(`Rumors spread among your slaves that your middle is swollen with ${babyDaddy.slaveName}'s child. They're not wrong, though`); if (babyDaddy.devotion > 20) { r.push(`${babyDaddy.slaveName} is broken enough to not try and use it against you. In fact, it might even draw ${him} closer to you.`); @@ -547,9 +542,9 @@ App.Desc.Player.belly = function() { r.push(`As your dick hardens under the prostate stimulation, you call for a slave to receive the incoming load.`); } } else if (V.PC.belly >= 105000) { - r.push(`Getting out of your chair is practically a dream at this point.It takes far too much effort to do it on your own and is a little embarrassing to ask help with.`); + r.push(`Getting out of your chair is practically a dream at this point. It takes far too much effort to do it on your own and is a little embarrassing to ask help with.`); } else if (V.PC.belly >= 90000) { - r.push(`You can barely reach around your gravid mass any longer.You've also had to reinforce your chair under your growing weight.`); + r.push(`You can barely reach around your gravid mass any longer. You've also had to reinforce your chair under your growing weight.`); } else if (V.PC.belly >= 75000) { r.push(`Your belly is starting to become worrying; you feel over-filled at all times and your children like to remind you just how stuffed you are.`); } else if (V.PC.belly >= 60000) { diff --git a/src/player/desc/playerBoobs.js b/src/player/desc/playerBoobs.js index bd3196f6611499b756792c6a5fa5478ae47a0215..96e8c6de508360b3b22f8e9c3b17114ed4ce1b94 100644 --- a/src/player/desc/playerBoobs.js +++ b/src/player/desc/playerBoobs.js @@ -21,7 +21,7 @@ App.Desc.Player.boobs = function() { } else if (V.PC.boobs >= 1200) { r.push(`you have a <span class="orange">pair of G-cup breasts.</span>`); if (V.PC.boobsImplant > 0) { - r.push(`They are kind of rounded and much too perky for their size to pass as real. They have a bit of bounce to them as you fuck a ${slave}.`); + r.push(`They are kind of rounded and much too perky for their size to pass as real. They have a bit of bounce to them as you fuck a slave.`); } else { r.push(`They are all natural and a little heavy. The bounce everywhere when you fuck your slaves.`); } diff --git a/src/player/desc/playerCrotch.js b/src/player/desc/playerCrotch.js index 1ed89d53f948673cbb5533c81c8ce31b4368c830..14b17b094e464114dbd4ed4e851be7dc330bd09c 100644 --- a/src/player/desc/playerCrotch.js +++ b/src/player/desc/playerCrotch.js @@ -1,5 +1,6 @@ App.Desc.Player.crotch = function() { const r = []; + const {girlP} = getPronouns(V.PC).appendSuffix('P'); if (passage() === "Manage Personal Affairs") { r.push(`you have`); @@ -39,7 +40,7 @@ App.Desc.Player.crotch = function() { if (V.PC.newVag === 1) { r.push(`<span class="orange">tight vagina.</span> Your pussy is very resilient; you shouldn't be able to stretch it out again.`); } else if (V.PC.career === "escort") { - r.push(`<span class="red">very loose vagina.</span> Years of whoring will do that to a _girlP.`); + r.push(`<span class="red">very loose vagina.</span> Years of whoring will do that to a ${girlP}.`); } else if (V.PC.counter.birthsTotal >= 10) { r.push(`<span class="red">rather loose vagina,</span> stretched from your many children.`); } else if (V.PC.career === "servant") { @@ -97,7 +98,7 @@ App.Desc.Player.crotch = function() { if (V.PC.newVag === 1) { r.push(`<span class="orange">tight vagina.</span> Your pussy is very resilient; you shouldn't be able to stretch it out again.`); } else if (V.PC.career === "escort") { - r.push(`<span class="red">very loose vagina.</span> Years of whoring will do that to a _girlP.`); + r.push(`<span class="red">very loose vagina.</span> Years of whoring will do that to a ${girlP}.`); } else if (V.PC.counter.birthsTotal >= 10) { r.push(`<span class="red">rather loose vagina,</span> stretched from your many children.`); } else if (V.PC.career === "servant") { diff --git a/src/pregmod/widgets/pregmodBirthWidgets.tw b/src/pregmod/widgets/pregmodBirthWidgets.tw index 16eb04389ce628158d9e517745225e43f9b4dbe6..17602dd1738b829ae827366cce41105ac4df9cb4 100644 --- a/src/pregmod/widgets/pregmodBirthWidgets.tw +++ b/src/pregmod/widgets/pregmodBirthWidgets.tw @@ -381,11 +381,11 @@ <<if _birthScene > 50>> While giving a slave oral service, $slaves[$i].slaveName's water breaks. $He disregards this development and continues working. <<ClothingBirth>> - The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. Instead, $he draws <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child to $his breast until <<if $Stewardess != 0>>$Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>> shouts at $him to move $his useless pregnant ass. + The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. Instead, $he draws <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child to $his breast until <<if _S.Stewardess>>_S.Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>> shouts at $him to move $his useless pregnant ass. <<else>> While scrubbing the penthouse floor, $slaves[$i].slaveName's water breaks. $He turns to clean this new spill, disregarding what it means. <<ClothingBirth>> - Instead of cleaning the fresh mess $he made, $he draws <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child to $his breast until <<if $Stewardess != 0>>$Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>> shouts at $him to move $his useless pregnant ass. + Instead of cleaning the fresh mess $he made, $he draws <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child to $his breast until <<if _S.Stewardess>>_S.Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>> shouts at $him to move $his useless pregnant ass. <</if>> <</if>> <<else>> @@ -396,11 +396,11 @@ While giving a slave oral service, $slaves[$i].slaveName's water breaks. $He desperately tries to pull away but they grab $his head and force $him back to their crotch. <<set $humiliation = 1>> <<ClothingBirth>> - The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. $He hurriedly tries to mop up the mess and collect <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child before <<if $Stewardess != 0>>$Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>><</if>> shouts at $him for dragging $his pregnant ass. + The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. $He hurriedly tries to mop up the mess and collect <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child before <<if _S.Stewardess>>_S.Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>><</if>> shouts at $him for dragging $his pregnant ass. <<else>> While scrubbing the penthouse floor, $slaves[$i].slaveName's water breaks. $He panics at the thought of not cleaning up $his spill but $his worsening contractions force $him to find a secluded place to give birth. <<ClothingBirth>> - Collecting <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child, $he carefully exits $his hiding place before coming under the eye of <<if $Stewardess != 0>>the glaring $Stewardess.slaveName. $His child is promptly taken<<elseif $HeadGirl != 0>>the glaring $HeadGirl.slaveName. $His child is promptly taken <<else>>. $His child is promptly taken by other servants<</if>> following a lecture about priorities and time management given $his constant pregnancy and predictable birth cycle. + Collecting <<if $slaves[$i].counter.birthsTotal == 0>>$his first<<else>>this week's<</if>> child, $he carefully exits $his hiding place before coming under the eye of <<if _S.Stewardess>>the glaring _S.Stewardess.slaveName. $His child is promptly taken<<elseif $HeadGirl != 0>>the glaring $HeadGirl.slaveName. $His child is promptly taken <<else>>. $His child is promptly taken by other servants<</if>> following a lecture about priorities and time management given $his constant pregnancy and predictable birth cycle. <</if>> <</if>> <</if>> @@ -1490,18 +1490,18 @@ <<if random(0,1) == 1>> While giving a slave oral service, $slaves[$i].slaveName's body begins to birth another of $his brood. $He disregards this development and continues working. <<ClothingBirth>> - The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. Instead, $he struggles to bring $his child to $his breast until <<if $Stewardess != 0>>$Stewardess.slaveName shouts at $him to move $his useless ass<<elseif $HeadGirl != 0>>$HeadGirl.slaveName shouts at $him to move $his useless ass<<else>>shouts at $him to move $his useless ass<</if>>. + The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. Instead, $he struggles to bring $his child to $his breast until <<if _S.Stewardess>>_S.Stewardess.slaveName shouts at $him to move $his useless ass<<elseif $HeadGirl != 0>>$HeadGirl.slaveName shouts at $him to move $his useless ass<<else>>shouts at $him to move $his useless ass<</if>>. <<else>> While struggling to scrub the penthouse floor, $slaves[$i].slaveName's body begins to birth another of $his brood. $He carries on trying to clean as $he drags $his belly along the floor. <<ClothingBirth>> - Instead of carrying on $his task, $he draws $his child to $his breast until <<if $Stewardess != 0>>$Stewardess.slaveName shouts at $him to move $his useless ass<<elseif $HeadGirl != 0>>$HeadGirl.slaveName shouts at $him to move $his useless ass<<else>>shouts at $him to move $his useless ass<</if>>. + Instead of carrying on $his task, $he draws $his child to $his breast until <<if _S.Stewardess>>_S.Stewardess.slaveName shouts at $him to move $his useless ass<<elseif $HeadGirl != 0>>$HeadGirl.slaveName shouts at $him to move $his useless ass<<else>>shouts at $him to move $his useless ass<</if>>. <</if>> <<else>> <<if random(0,1) == 1>> While giving a slave oral service, $slaves[$i].slaveName's body begins to birth another of $his brood. $He desperately tries to pull away but they grab $his head and force $him back to their crotch. <<set $humiliation = 1>> <<ClothingBirth>> - The slave gets off quite strongly to the show and shoves $him to the ground, leaving $him struggling to get up before <<if $Stewardess != 0>>$Stewardess.slaveName shouts at $him<<elseif $HeadGirl != 0>>$HeadGirl.slaveName shouts at $him <<else>>shouts at $him<</if>>. + The slave gets off quite strongly to the show and shoves $him to the ground, leaving $him struggling to get up before <<if _S.Stewardess>>_S.Stewardess.slaveName shouts at $him<<elseif $HeadGirl != 0>>$HeadGirl.slaveName shouts at $him <<else>>shouts at $him<</if>>. <<else>> While using $his bloated belly to scrub the penthouse floor, $slaves[$i].slaveName's body begins to birth another of $his brood. Since this isn't the first time this week this happened, $he readies $himself for the coming birth. <<ClothingBirth>> diff --git a/src/uncategorized/PETS.tw b/src/uncategorized/PETS.tw index b36ce153d9bc665ecc637b7a59b6871376341fba..b66d64bbf2551d8f212448c3484a843015c52c1b 100644 --- a/src/uncategorized/PETS.tw +++ b/src/uncategorized/PETS.tw @@ -45,7 +45,7 @@ <<case "nurse molestation">> <<set $activeSlave = $Nurse, $subSlave = $slaves.find(function(s) { return s.anus != 0 && s.assignment == "get treatment in the clinic"; })>> <<case "stewardess beating">> - <<set $activeSlave = $Stewardess, $subSlave = $slaves.find(function(s) { return s.assignment == "work as a servant"; })>> + <<set $activeSlave = _S.Stewardess, $subSlave = $slaves.find(function(s) { return s.assignment == "work as a servant"; })>> <<case "aggressive schoolteacher">> <<set $activeSlave = $Schoolteacher, $subSlave = $slaves.find(function(s) { return s.assignment == "learn in the schoolroom"; })>> <<case "abusive wardeness">> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 83b65de06a916db44bf1e53f9d32b2d5008d874b..eee4b3b31264daba041c0c2619d7473a969a550d 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -16234,7 +16234,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h gets to $his knee<<if hasBothLegs($activeSlave)>>s<</if>>, using $his hand<<if hasBothArms($activeSlave)>>s<</if>> to spread $his cheeks for the phallus. <</if>> Sensing that it's being offered an anus, it gently pushes inside $his rectum. Its strokes get longer and faster, <<if $activeSlave.anus > 2>>until $he's groaning under the sodomy despite $his loose ass<<elseif $activeSlave.anus > 1>>quickly gaping $his big butthole and making $him groan<<else>>making $him gasp as it stretches $his poor little asshole<</if>>. - <<if ($suppository != 0) && ($activeSlave.drugs != "none")>>$He doesn't manage to groan for long, though, since the kitchen extends another phallus to feed $him $his breakfast. Before long, $he's being spitroasted by machines.<</if>> + <<if ($cockFeeder != 0) && ($activeSlave.drugs != "none")>>$He doesn't manage to groan for long, though, since the kitchen extends another phallus to feed $him $his breakfast. Before long, $he's being spitroasted by machines.<</if>> Once $he's fully awake, $he's mostly @@.mediumaquamarine;relieved@@ that you let $him get away with hesitation about obedience and took the time to talk $him through it. <<set $activeSlave.trust += 4>> <</replace>> @@ -16248,7 +16248,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h get down on $his knees <</if>> and <<if $activeSlave.butt > 6>>heave $his huge buttocks apart<<elseif $activeSlave.butt > 3>>spread $his broad buttocks<<else>>spread $his cute ass wide<</if>>. - <<if ($suppository != 0) && ($activeSlave.drugs != "none")>>Once it's got its phallus sliding in and out of $his asshole, the kitchen gives $him another, to suck off for $his breakfast. Fortunately for $him, $he doesn't object, and only gets facefucked by the normal dildo.<</if>> + <<if ($cockFeeder != 0) && ($activeSlave.drugs != "none")>>Once it's got its phallus sliding in and out of $his asshole, the kitchen gives $him another, to suck off for $his breakfast. Fortunately for $him, $he doesn't object, and only gets facefucked by the normal dildo.<</if>> $He keeps the threat in mind, and has a slightly sore ass to @@.hotpink;help $him remember to obey without question.@@ <<set $activeSlave.trust -= 2, $activeSlave.devotion += 2>> <</replace>> @@ -16256,7 +16256,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <br><<link "Double penetrate $his ass for insolence">> <<replace "#result">> You step forward and take gentle hold of the slave's throat, telling $him to get down on $his knees like a good little $desc. You make no threat, but give $him the order in a voice of brass. $He knows what you can do to $him, and hurries to obey, @@.gold;terribly frightened.@@ $His fear is justified. You announce that $he's avoided serious punishment, but $he still needs correction for $his hesitation and insolence. $He's concerned when $he <<if canSee($activeSlave)>>sees<<elseif canHear($activeSlave)>>hears<<else>>feels<</if>> you <<if $PC.dick != 0>>get your dick<<if $PC.vagina != -1>>and pussy<</if>> out<<else>>don a strap-on<</if>>, though $he's distracted by the rapidly accelerating buttfuck $he's getting from the machine. $He tries to offer you $his throat, but $his hopes are dashed when you walk around behind $him, swing a leg over the machine pistoning in and out of $his asshole, and command it to stop for a moment. Then you work <<if $PC.dick != 0>>yourself<<else>>your own dildo<</if>> up $his ass alongside the phallus that already fills it. The drugs are delivered with lubricant, and you do fit, but only after a nice long session of sobbing, spasming, and finally crying resignation. Then you order the machine to go back to what it was doing, and the resignation vanishes, replaced with anal pain as $activeSlave.slaveName takes double penetration up $his <<if $activeSlave.anus > 2>>gaping anus<<elseif $activeSlave.anus == 2>>big butthole<<else>>poor, abused little butt<</if>>. - <<if ($suppository != 0) && ($activeSlave.drugs != "none")>>When you grow tired of the whining, you order the kitchen to give the bitch breakfast. It extends a feeding phallus and fills $his throat, muffling the noise somewhat.<</if>> + <<if ($cockFeeder != 0) && ($activeSlave.drugs != "none")>>When you grow tired of the whining, you order the kitchen to give the bitch breakfast. It extends a feeding phallus and fills $his throat, muffling the noise somewhat.<</if>> <<set $activeSlave.trust -= 4>> <<= VCheck.Anal()>> <</replace>> diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index 8bbf589512a7bde5c84045c66827d6f6ba363a62..a16d2668fb50a825823ba2dd6bf9dc9f5e1234a0 100644 --- a/src/uncategorized/longSlaveDescription.tw +++ b/src/uncategorized/longSlaveDescription.tw @@ -1478,8 +1478,9 @@ is <<= App.Desc.limbs($activeSlave)>> <<= App.Desc.clothing($activeSlave)>> +<<= App.Desc.armwear($activeSlave)>> <<if $showBodyMods == 1>> - <<clothingCorsetDescription>> + <<= App.Desc.clothingCorset($activeSlave)>> <</if>> <<if ($showClothing == 1) && ($saleDescription == 0)>> @@ -1838,7 +1839,7 @@ $He is <<= App.Desc.ears($activeSlave)>> - <<upperFaceDescription>> + <<= App.Desc.upperFace($activeSlave)>> <<= App.Desc.hair($activeSlave)>> @@ -1915,7 +1916,7 @@ $He is <<if ($showClothing == 1) && ($saleDescription == 0)>> <<if $activeSlave.fuckdoll == 0>> - <<collarDescription>> + <<= App.Desc.collar($activeSlave)>> <<= App.Desc.faceAccessory($activeSlave)>> <<= App.Desc.mouthAccessory($activeSlave)>> <<if ($activeSlave.relationship > 4)>> diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 8293e06236324248b66656278b6fa5ecb745dbfb..5d762d66439cbc3aa860d235528445e3f62d1864 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -415,7 +415,7 @@ <</if>> <</if>> - <<if ($Stewardess != 0) && (_L.servantsQuarters > 0) && ($Stewardess.actualAge >= 35 || $AgePenalty == 0)>> + <<if (_S.Stewardess) && (_L.servantsQuarters > 0) && (_S.Stewardess.actualAge >= 35 || $AgePenalty == 0)>> <<set $PETSevent.push("stewardess beating")>> <</if>> diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw index 01775d78605a4f0ff7b6abcee7ba94d8c800dd90..dc47c42182ac2d0c87c47a5ee99763c232d6f900 100644 --- a/src/uncategorized/reNickname.tw +++ b/src/uncategorized/reNickname.tw @@ -140,7 +140,7 @@ <<if ($activeSlave.ID == $Milkmaid.ID) && $activeSlave.dick > 5 && canPenetrate($activeSlave) && $cumSlaves > 3>> <<set _qualifiedNicknames.push("Collectrix")>> <</if>> -<<if ($activeSlave.ID == $Stewardess.ID)>> +<<if ($activeSlave.ID == $StewardessID)>> <<set _qualifiedNicknames.push("Stewardess")>> <</if>> <<if ($activeSlave.ID == $Schoolteacher.ID)>> diff --git a/src/uncategorized/saRelationships.tw b/src/uncategorized/saRelationships.tw index a6d00acccdd09a2b53be5e6aef30a5d322606040..e6968eeabedcb1843698379463205605bb9b438e 100644 --- a/src/uncategorized/saRelationships.tw +++ b/src/uncategorized/saRelationships.tw @@ -141,7 +141,7 @@ <<set _SlaveI.devotion += 1>> <</if>> <</if>> - <<elseif (_SlaveJ.ID == $Stewardess.ID) && (_SlaveI.assignment == "work as a servant")>> + <<elseif (_SlaveJ.ID == $StewardessID) && (_SlaveI.assignment == "work as a servant")>> <<if _SlaveJ.rules.relationship != "restrictive">> _SlaveI.slaveName manages to ingratiate $himself with the Stewardess, _SlaveJ.slaveName. The two slaves have @@.lightgreen;struck up a friendship.@@ <<set _SlaveJ.relationship = 1, _SlaveJ.relationshipTarget = _SlaveI.ID, _SlaveI.relationship = 1, _SlaveI.relationshipTarget = _SlaveJ.ID>> diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw index 69f0bc8c8e927cbb3027fdb93eaaa2eb8d719ed4..9001f41cb9fd723b1436ed177169743596de26b1 100644 --- a/src/uncategorized/saRules.tw +++ b/src/uncategorized/saRules.tw @@ -478,14 +478,14 @@ <<if ($universalRulesConsent == 0)>> <<if ($slaves[$i].devotion <= 20)>> <<if ($slaves[$i].trust > -10)>> - <<if App.Entity.facilities.brothel.employeesIDs().size > 2 || $Madam != 0>> + <<if App.Entity.facilities.brothel.employeesIDs().size > 2 || _S.Madam>> Under the rules, $he finds $himself constantly molested by other slaves, and lives $his life constantly @@.gold;afraid.@@ <<else>> Under the rules, $he is free game for other slaves to molest, and lives $his life constantly @@.gold;afraid@@ of the day you assign more whores to $brothelName. <</if>> <<set $slaves[$i].trust -= 2>> <<else>> - <<if App.Entity.facilities.brothel.employeesIDs().size > 2 || $Madam != 0>> + <<if App.Entity.facilities.brothel.employeesIDs().size > 2 || _S.Madam>> Under the rules, $he finds $himself constantly molested by other slaves, but $he's already in such constant terror it doesn't seriously affect $him. <<else>> Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind. @@ -519,7 +519,7 @@ <</if>> <<else>> <<if ($slaves[$i].devotion <= 20) && ($slaves[$i].devotion >= -20)>> - <<if App.Entity.facilities.brothel.employeesIDs().size > 2 || $Madam != 0>> + <<if App.Entity.facilities.brothel.employeesIDs().size > 2 || _S.Madam>> Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. <<else>> Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. Well, that and the fact $brothelName is rather empty. @@ -1037,14 +1037,14 @@ <<if ($universalRulesConsent == 0)>> <<if ($slaves[$i].devotion <= 20)>> <<if ($slaves[$i].trust > -10)>> - <<if App.Entity.facilities.club.employeesIDs().size > 2 || $DJ != 0>> + <<if App.Entity.facilities.club.employeesIDs().size > 2 || _S.DJ>> Under the rules, $he finds $himself constantly molested by other slaves, and lives $his life constantly @@.gold;afraid.@@ <<else>> Under the rules, $he is free game for other slaves to molest, and lives $his life constantly @@.gold;afraid@@ of the day you assign more sluts to $clubName. <</if>> <<set $slaves[$i].trust -= 2>> <<else>> - <<if App.Entity.facilities.club.employeesIDs().size > 2 || $DJ != 0>> + <<if App.Entity.facilities.club.employeesIDs().size > 2 || _S.DJ>> Under the rules, $he finds $himself constantly molested by other slaves, but $he's already in such constant terror it doesn't seriously affect $him. <<else>> Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind. @@ -1078,7 +1078,7 @@ <</if>> <<else>> <<if ($slaves[$i].devotion <= 20) && ($slaves[$i].devotion >= -20)>> - <<if App.Entity.facilities.club.employeesIDs().size > 2 || $DJ != 0>> + <<if App.Entity.facilities.club.employeesIDs().size > 2 || _S.DJ>> Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. <<else>> Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. Well, that and the fact $clubName is rather empty. @@ -1407,12 +1407,12 @@ is well-loved by $his family; this week, $his <<= relativeTerm($slaves[$i], _famVisitor)>> @@.lightgreen;_famVisitor.slaveName@@ pays special attention to $him, making sure $his sexual needs are met. <<set $slaves[$i].need = 0>> <<set _famVisitor.counter.oral += 7, $oralTotal += 7>> - <<elseif $Nurse != 0>> - is routinely brought to orgasm by $Nurse.slaveName as part of $his duties. - <<if canPenetrate($slaves[$i]) && $Nurse.boobs >= 500>> - <<set $slaves[_FLs].counter.mammary += 14, $mammaryTotal += 14>> + <<elseif _S.Nurse>> + is routinely brought to orgasm by _S.Nurse.slaveName as part of $his duties. + <<if canPenetrate($slaves[$i]) && _S.Nurse.boobs >= 500>> + <<run actX(_S.Nurse, "mammary", 14)>> <<else>> - <<set $slaves[_FLs].counter.oral += 14, $oralTotal += 14>> + <<run actX(_S.Nurse, "oral", 14)>> /* possible cumflation code here */ <</if>> <<set $slaves[$i].need -= 60>> @@ -1775,7 +1775,7 @@ <</switch>> <</if>> <<case "be confined in the cellblock">> - <<if $Wardeness != 0 && canPenetrate($Wardeness)>> + <<if _S.Wardeness && canPenetrate(_S.Wardeness)>> <<set _wardenFunTimes = random(0,5)>> <<set $slaves[$i].need -= (10*_wardenFunTimes)>> <</if>> @@ -1803,61 +1803,46 @@ <<elseif canDoAnal($slaves[$i]) && $slaves[$i].anus > 0>> <<set $slaves[$i].counter.anal += 7, $analTotal += 7>> <</if>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if $Wardeness != 0 && canPenetrate($Wardeness)>> + <<else>> + <<if _S.Wardeness && canPenetrate(_S.Wardeness)>> <<run SimpleSexAct.Slave($slaves[$i], _wardenFunTimes)>> - <<set $slaves[_FLs].counter.penetrative += _wardenFunTimes, $penetrativeTotal += _wardenFunTimes>> - <<if _wardenFunTimes > 0 && canImpreg($slaves[$i], $Wardeness) && ($cellblockWardenCumsInside == 1 || $Wardeness.fetish == "mindbroken") && (($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1) || ($slaves[$i].anus > 0 && $slaves[$i].mpreg == 1))>> + <<run actX(_S.Wardeness, "penetrative", _wardenFunTimes)>> + <<if _wardenFunTimes > 0 && canImpreg($slaves[$i], _S.Wardeness) && ($cellblockWardenCumsInside == 1 || _S.Wardeness.fetish == "mindbroken")>> <<if ($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)>> - <<= knockMeUp($slaves[$i], 10, 0, $Wardeness.ID, 1)>> - <<set $slaves[$i].counter.vaginal++, $vaginalTotal++>> - <<set $slaves[_FLs].counter.penetrative += 1, $penetrativeTotal += 1>> - <<else>> - <<= knockMeUp($slaves[$i], 10, 1, $Wardeness.ID, 1)>> - <<set $slaves[$i].counter.anal++, $analTotal++>> - <<set $slaves[_FLs].counter.penetrative += 1, $penetrativeTotal += 1>> + <<= knockMeUp($slaves[$i], 10, 0, _S.Wardeness.ID, 1)>> + <<run seX($slaves[$i], "vaginal", _S.Wardeness, 1)>> + <<elseif ($slaves[$i].anus > 0 && $slaves[$i].mpreg == 1)>> + <<= knockMeUp($slaves[$i], 10, 1, _S.Wardeness.ID, 1)>> + <<run seX($slaves[$i], "anal", _S.Wardeness, 1)>> <</if>> <</if>> <</if>> - <<if ($slaves[$i].devotion <= 20)>> - gets off despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - <<if $Wardeness != 0 && canPenetrate($Wardeness)>> - <<run SimpleSexAct.Slave($slaves[$i], _wardenFunTimes)>> - <<set $slaves[_FLs].counter.penetrative += _wardenFunTimes, $penetrativeTotal += _wardenFunTimes>> - <<if _wardenFunTimes > 0 && canImpreg($slaves[$i], $Wardeness) && ($cellblockWardenCumsInside == 1 || $Wardeness.fetish == "mindbroken") && (($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1) || ($slaves[$i].anus > 0 && $slaves[$i].mpreg == 1))>> - <<if ($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)>> - <<= knockMeUp($slaves[$i], 10, 0, $Wardeness.ID, 1)>> - <<set $slaves[$i].counter.vaginal++, $vaginalTotal++>> - <<set $slaves[_FLs].counter.penetrative += 1, $penetrativeTotal += 1>> - <<else>> - <<= knockMeUp($slaves[$i], 10, 1, $Wardeness.ID, 1)>> - <<set $slaves[$i].counter.anal++, $analTotal++>> - <<set $slaves[_FLs].counter.penetrative += 1, $penetrativeTotal += 1>> + <<if $slaves[$i].need < $slaves[$i].needCap*0.5>> + <<if ($slaves[$i].devotion <= 20)>> + gets off despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ + <<set $slaves[$i].devotion += 1>> + <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> + $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ + <<set $slaves[$i].trust -= 1>> <</if>> + <<set $slaves[$i].need -= 20>> <</if>> - <</if>> - <<if random(-100,0) > $slaves[$i].devotion>> - refuses to not touch $himself and is @@.gold;severely punished@@ for illicit masturbation. - <<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>> <<else>> - @@.gold;fears@@ trying to - <<if ($slaves[$i].chastityPenis)>> - touch $himself - <<elseif canAchieveErection($slaves[$i])>> - jack off + <<if random(-100,0) > $slaves[$i].devotion>> + refuses to not touch $himself and is @@.gold;severely punished@@ for illicit masturbation. + <<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>> <<else>> - touch $himself + @@.gold;fears@@ trying to + <<if ($slaves[$i].chastityPenis)>> + touch $himself + <<elseif canAchieveErection($slaves[$i])>> + jack off + <<else>> + touch $himself + <</if>> + to get relief when $he knows what the consequences are. + <<set $slaves[$i].trust -= 1>> <</if>> - to get relief when $he knows what the consequences are. - <<set $slaves[$i].trust -= 1>> <</if>> <</if>> @@ -2637,20 +2622,20 @@ <<elseif $slaves[$i].energy <= 20>> is frigid and has little interest in getting off. <<set $slaves[$i].need = 0>> - <<elseif $Matron != 0>> - is routinely relieved of any built up tension by $Matron.slaveName and $his - <<if canPenetrate($slaves[$i]) && $Matron.boobs >= 500>> + <<elseif _S.Matron>> + is routinely relieved of any built up tension by _S.Matron.slaveName and $his + <<if canPenetrate($slaves[$i]) && _S.Matron.boobs >= 500>> luscious breasts. - <<set $slaves[_FLs].counter.mammary += 14, $mammaryTotal += 14>> + <<run actX(_S.Matron, "mammary", 14)>> <<else>> - <<if $slaves[_FLs].lips > 40>> + <<if _S.Matron.lips > 40>> luscious lips. - <<elseif $slaves[_FLs].skill.oral > 30>> + <<elseif _S.Matron.skill.oral > 30>> skilled tongue. <<else>> willing mouth. <</if>> - <<set $slaves[_FLs].counter.oral += 14, $oralTotal += 14>> + <<run actX(_S.Matron, "oral", 14)>> /* possible cumflation code here */ <</if>> <<set $slaves[$i].need -= 60>> @@ -2867,7 +2852,7 @@ <<if _L.nursery > 2>> Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania. <<else>> - Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him relieve $his <<if $slaves[$i].balls > 0>>swollen balls<<else>>tension<</if>><</if>>. + Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly awaits@@ the day <<if _S.Matron>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him relieve $his <<if $slaves[$i].balls > 0>>swollen balls<<else>>tension<</if>><</if>>. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> @@ -2875,14 +2860,14 @@ <<if _L.nursery > 2>> Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;adores@@ you for providing a whole nursery of slaves for $him to rape. <<else>> - Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him unwind<</if>>. + Under the rules, $he's allowed to sexually abuse other slaves, and $he @@.hotpink;eagerly awaits@@ the day <<if _S.Matron>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him unwind<</if>>. <</if>> <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].fetish == "dom")>> <<if _L.nursery > 2>> Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;adores@@ you for providing a whole nursery of slaves for $him to dominate. <<else>> - Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day <<if $Matron != 0>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him unwind<</if>>. + Under the rules, $he's allowed to force other slaves to have sex with $him, and $he @@.hotpink;eagerly awaits@@ the day <<if _S.Matron>>more of your slaves join $him in $nurseryName <<else>>you assign more nurses to $nurseryName to help $him unwind<</if>>. <</if>> <<set $slaves[$i].devotion += 1>> <</if>> @@ -2893,7 +2878,7 @@ <<if _L.nursery > 2>> Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. <<else>> - Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. Well, that and the fact $nurseryName is <<if $Matron != 0>>mostly frequented by other slaveowners' stock<<else>>$his little private sanctuary<</if>>. + Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. Well, that and the fact $nurseryName is <<if _S.Matron>>mostly frequented by other slaveowners' stock<<else>>$his little private sanctuary<</if>>. <</if>> <<set $slaves[$i].trust += 1>> <</if>> @@ -3190,37 +3175,41 @@ <</switch>> <</if>> <<case "learn in the schoolroom">> - <<if $Schoolteacher != 0>> + <<if _S.Schoolteacher>> <<set $slaves[$i].need -= 30>> - <<set $slaves[$i].counter.oral += 7, $slaves[$i].counter.mammary += 7, $oralTotal += 7, $mammaryTotal += 7>> + <<run actX($slaves[$i], "oral", 7), actX($slaves[$i], "mammary", 7)>> <<if canDoVaginal($slaves[$i])>> <<if $slaves[$i].vagina != 0>> - <<set $slaves[$i].counter.vaginal += 7, $vaginalTotal += 7>> - <<if canImpreg($slaves[$i], $Schoolteacher) && ($slaves[$i].breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset") && $slaves[$i].vagina != 0>> - <<= knockMeUp($slaves[$i], 5, 0, $Schoolteacher.ID, 1)>> + <<run seX(_S.Schoolteacher, "penetrative", $slaves[$i], "vaginal", 7)>> + <<if canImpreg($slaves[$i], _S.Schoolteacher) && ($slaves[$i].breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> + <<= knockMeUp($slaves[$i], 5, 0, _S.Schoolteacher.ID, 1)>> <</if>> <</if>> <<set $slaves[$i].need -= 10>> <</if>> <<if canDoAnal($slaves[$i])>> <<if $slaves[$i].anus != 0>> - <<set $slaves[$i].counter.anal += 7, $analTotal += 7>> - <<if canImpreg($slaves[$i], $Schoolteacher) && ($slaves[$i].breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset") && $slaves[$i].anus != 0>> - <<= knockMeUp($slaves[$i], 5, 1, $Schoolteacher.ID, 1)>> + <<run seX(_S.Schoolteacher, "penetrative", $slaves[$i], "anal", 7)>> + <<if canImpreg($slaves[$i], _S.Schoolteacher) && ($slaves[$i].breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> + <<= knockMeUp($slaves[$i], 5, 1, _S.Schoolteacher.ID, 1)>> <</if>> <</if>> <<set $slaves[$i].need -= 10>> <</if>> <<if canPenetrate($slaves[$i])>> - <<set $slaves[$i].counter.penetrative += 7, $penetrativeTotal += 7>> - <<set $slaves[$i].need -= 10>> - <<if canImpreg($Schoolteacher, $slaves[$i]) && ($Schoolteacher.breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> - <<if $Schoolteacher.vagina != 0 && $Schoolteacher.ovaries == 1>> - <<= knockMeUp($slaves[_FLs], 5, 0, $slaves[$i].ID, 1)>> - <<elseif $Schoolteacher.anus != 0 && $Schoolteacher.mpreg == 1>> - <<= knockMeUp($slaves[_FLs], 5, 1, $slaves[$i].ID, 1)>> + <<if _S.Schoolteacher.vagina != 0>> + <<run seX(_S.Schoolteacher, "vaginal", $slaves[$i], "penetrative", 7)>> + <<elseif _S.Schoolteacher.anus != 0>> + <<run seX(_S.Schoolteacher, "anal", $slaves[$i], "penetrative", 7)>> + <</if>> + <<if canImpreg(_S.Schoolteacher, $slaves[$i]) && (_S.Schoolteacher.breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> + <<if _S.Schoolteacher.vagina != 0 && _S.Schoolteacher.ovaries == 1>> + <<= knockMeUp(_S.Schoolteacher, 5, 0, $slaves[$i].ID, 1)>> + <<elseif _S.Schoolteacher.anus != 0 && _S.Schoolteacher.mpreg == 1>> + <<= knockMeUp(_S.Schoolteacher, 5, 1, $slaves[$i].ID, 1)>> <</if>> <</if>> + <<set $slaves[$i].need -= 10>> <</if>> <</if>> <<if $slaves[$i].devotion < -50>> @@ -3390,14 +3379,14 @@ <<if ($universalRulesConsent == 0)>> <<if ($slaves[$i].devotion <= 20)>> <<if ($slaves[$i].trust > -10)>> - <<if _L.schoolroom > 2 || $Schoolteacher != 0>> + <<if _L.schoolroom > 2 || _S.Schoolteacher>> Under the rules, $he finds $himself constantly molested by other slaves, and lives $his life constantly @@.gold;afraid.@@ <<else>> Under the rules, $he is free game for other slaves to molest, and lives $his life constantly @@.gold;afraid@@ of the day more students enroll in $schoolroomName. <</if>> <<set $slaves[$i].trust -= 2>> <<else>> - <<if _L.schoolroom > 2 || $Schoolteacher != 0>> + <<if _L.schoolroom > 2 || _S.Schoolteacher>> Under the rules, $he finds $himself constantly molested by other slaves, but $he's already in such constant terror it doesn't seriously affect $him. <<else>> Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind. @@ -3431,7 +3420,7 @@ <</if>> <<else>> <<if ($slaves[$i].devotion <= 20) && ($slaves[$i].devotion >= -20)>> - <<if _L.schoolroom > 2 || $Schoolteacher != 0>> + <<if _L.schoolroom > 2 || _S.Schoolteacher>> Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. <<else>> Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows@@ that the rule that slaves must get consent before having sex with $him are all that protect $him from abuse. Well, that and the fact $schoolroomName is rather empty. diff --git a/src/uncategorized/servantsQuarters.tw b/src/uncategorized/servantsQuarters.tw index 1d14602cf0d2ced5fafa2e500094d930097ea02d..1c1d71e93e47d0b973d75c721ddc7bccc60df860 100644 --- a/src/uncategorized/servantsQuarters.tw +++ b/src/uncategorized/servantsQuarters.tw @@ -72,8 +72,8 @@ $servantsQuartersNameCaps are busy with hurrying slaves. One shift of servants is eating, cleaning the quarters, and bathing. The second is sleeping, and the third is out in the penthouse cleaning and serving. <<elseif _DL > 0>> A few slaves are working out of the servants' quarters. They must split their scant time between looking after their own needs and the superior needs of everyone else. - <<elseif $Stewardess != 0>> - $Stewardess.slaveName is alone, and seems rather bereft without anyone to order around. + <<elseif _S.Stewardess>> + _S.Stewardess.slaveName is alone, and seems rather bereft without anyone to order around. <<else>> None of your slaves are working out of the servants' quarters. <div class="choices" style="font-style:normal"> @@ -124,10 +124,10 @@ <p> <<set _facility = App.Entity.facilities.servantsQuarters>> - <<if $Stewardess != 0>> - <<setLocalPronouns $Stewardess>> + <<if _S.Stewardess>> + <<setLocalPronouns _S.Stewardess>> <<print App.UI.SlaveList.displayManager(_facility)>> - <<if canAchieveErection($Stewardess) && $Stewardess.pubertyXY == 1>> + <<if canAchieveErection(_S.Stewardess) && _S.Stewardess.pubertyXY == 1>> <<if $stewardessImpregnates == 1>> Keeping the maids pregnant is part of $his job. <div class="choices"> diff --git a/src/uncategorized/servantsQuartersReport.tw b/src/uncategorized/servantsQuartersReport.tw index 28abb38eff176e710cc78d5426016ef73962b9ad..6abf6fc4e9d59aec7819e2b6c0eaa63e013633f6 100644 --- a/src/uncategorized/servantsQuartersReport.tw +++ b/src/uncategorized/servantsQuartersReport.tw @@ -1,334 +1,5 @@ :: Servants' Quarters Report [nobr] -<<set _slaves = App.Utils.sortedEmployees(App.Entity.facilities.servantsQuarters)>> -<<set _DL = _slaves.length, _SL = $slaves.length, _FLsFetish = 0, $stewardessBonus = 0>> - -<<if $servantsQuartersDecoration != "standard">> - <<set _devBonus = 1>> -<<else>> - <<set _devBonus = 0>> -<</if>> - -<<if ($Stewardess != 0)>> - <<set _FLs = $slaveIndices[$Stewardess.ID]>> - - <<set $slaves[_FLs].devotion += _devBonus>> - <<if ($slaves[_FLs].health.condition < -80)>> - <<run improveCondition($slaves[_FLs], 20)>> - <<elseif ($slaves[_FLs].health.condition < -40)>> - <<run improveCondition($slaves[_FLs], 15)>> - <<elseif ($slaves[_FLs].health.condition < 0)>> - <<run improveCondition($slaves[_FLs], 10)>> - <<elseif ($slaves[_FLs].health.condition < 90)>> - <<run improveCondition($slaves[_FLs], 7)>> - <</if>> - <<if $slaves[_FLs].devotion <= 60>> - <<set $slaves[_FLs].devotion++>> - <</if>> - <<if $slaves[_FLs].trust < 60>> - <<set $slaves[_FLs].trust++>> - <</if>> - <<if $slaves[_FLs].fetishStrength <= 95>> - <<if $slaves[_FLs].fetish != "dom">> - <<if fetishChangeChance($slaves[_FLs]) > random(0,100)>> - <<set _FLsFetish = 1, $slaves[_FLs].fetishKnown = 1, $slaves[_FLs].fetish = "dom">> - <</if>> - <<elseif $slaves[_FLs].fetishKnown == 0>> - <<set _FLsFetish = 1, $slaves[_FLs].fetishKnown = 1>> - <<else>> - <<set _FLsFetish = 2, $slaves[_FLs].fetishStrength += 4>> - <</if>> - <</if>> - <<if $slaves[_FLs].rules.living != "luxurious">> - <<set $slaves[_FLs].rules.living = "luxurious">> - <</if>> - <<set $Stewardess = $slaves[_FLs]>> - <<setLocalPronouns $Stewardess>> - <<= SlaveFullName($Stewardess)>> is serving as your Stewardess.<<if $Stewardess.relationship == -3 && $Stewardess.devotion > 50>> $He does $his best to be your perfect lovely house<<= $wife>>.<</if>> - <<if ($stewardessImpregnates == 1) && (_DL > 0) && (canPenetrate($Stewardess)) && $Stewardess.pubertyXY == 1>> - <<set _stewardessImpregnated = 0>> - <<for _slave range _slaves>> - <<if (canImpreg(_slave, $Stewardess))>> - <<= knockMeUp(_slave, 100, 2, $Stewardess.ID)>> - <<set _slave.preg = 1, _slave.pregKnown = 1, _slave.pregWeek = 1, _slave.pregSource = $Stewardess.ID>><<set _slave.pregType = setPregType(_slave)>> - <<set WombImpregnate(_slave, _slave.pregType, _slave.pregSource, 1)>> - <<set _slave.vagina = Math.clamp(_slave.vagina,1,10), _stewardessImpregnated++, _slave.counter.vaginal += 10, $vaginalTotal += 10>> - <<set _slave.need = 0>> - <</if>> - <</for>> - <<if _stewardessImpregnated > 0>> - It's $his responsibility to keep $his charges pregnant, so - <<if _stewardessImpregnated == 1>> - $he cums in the only fertile slave's pussy all week. - <<else>> - $he ensures the _stewardessImpregnated fertile servants are full of $his cum at all times. - <</if>> - <<if $Stewardess.career == "a breeding bull">> - $He was conditioned to fill empty wombs, so $he takes a @@.hotpink;deep pleasure@@ in $his job. - <<set $slaves[_FLs].devotion++>> - <</if>> - <<set _Tmult = (_stewardessImpregnated * 10), $slaves[_FLs].counter.penetrative += _Tmult, $Stewardess.counter.penetrative += _Tmult, $penetrativeTotal += _Tmult>> - <<set $slaves[_FLs].need = 0>> - <</if>> - <</if>> - <<if _FLsFetish == 1>> - $He's allowed and even expected to use $his charges for $his own gratification, and sometimes they'll even instigate submissive sex with $him just to ingratiate themselves. $He becomes comfortable with the role of a @@.lightcoral;sexual dominant.@@ - <<elseif _FLsFetish == 2>> - Having a legion of servants jumping to obey $his daily commands @@.lightsalmon;makes $him more dominant.@@ - <</if>> - <<if ($Stewardess.health.condition < 10)>> - Though $he tries to watch the servants, $his lack of good health inhibits $him. - <<elseif ($Stewardess.health.condition < 80)>> - <<set $stewardessBonus += 50>> - $His good health allows $him to work long hours and @@.yellowgreen;drive@@ the servants hard. - <<else>> - <<set $stewardessBonus += 75>> - $His perfect health allows $him to work exhaustive hours and @@.yellowgreen;drive@@ the servants very hard. - <</if>> - <<if setup.stewardessCareers.includes($Stewardess.career)>> - <<set $stewardessBonus += 25>> - $He has applicable experience with daily sums and organizational trifles from $his life before $he was a slave. - <<elseif $Stewardess.skill.stewardess >= $masteredXP>> - <<set $stewardessBonus += 25>> - $He has applicable experience with daily sums and organizational trifles from working for you. - <<else>> - <<set $slaves[_FLs].skill.stewardess += random(1,Math.ceil(($Stewardess.intelligence+$Stewardess.intelligenceImplant)/15) + 8)>> - <</if>> - <<if ($Stewardess.actualAge > 35)>> - <<set $stewardessBonus += 25>> - $His age and experience give $him added effectiveness. - <<elseif $AgePenalty == 0>> - <<set $stewardessBonus +=25>> - <</if>> - <<if ($Stewardess.intelligence+$Stewardess.intelligenceImplant > 15)>> - <<set $stewardessBonus += $Stewardess.intelligence+$Stewardess.intelligenceImplant>> - $He's smart enough that $he misses very little. - <</if>> - <<if ($Stewardess.energy > 95) || (($Stewardess.fetishKnown == 1) && ($Stewardess.fetish == "dom"))>> - <<set _BonusToggle = 1>> - <<else>> - <<set _BonusToggle = 0>> - <</if>> - <<for _slave range _slaves>> - <<setLocalPronouns _slave 2>> - <<if $Stewardess.rivalryTarget == _slave.ID>> - $He bears down on $his <<print rivalryTerm($Stewardess)>>, _slave.slaveName, forcing _him2 to work extra hard or suffer punishment. - <<set _slave.devotion--, _slave.trust-->> - <<if random(1,100) > 65>> - <<set $Stewardess.rivalry++, $slaves[_FLs].rivalry++, _slave.rivalry++>> - <</if>> - <<elseif $Stewardess.relationshipTarget == _slave.ID>> - $He dotes over $his <<print relationshipTerm($Stewardess)>>, _slave.slaveName, making sure _he2 knows how to do a good job and keeping _him2 well stocked with everything _he2 needs. - <<set _slave.devotion++>> - <<elseif areRelated($Stewardess, _slave)>> - $He pays special attention to $his <<print relativeTerm($Stewardess,_slave)>>, _slave.slaveName, making sure _he2 doesn't slack off just because they are related. - <<set _slave.trust++>> - <</if>> - <<switch _slave.prestigeDesc>> - <<case "$He is a famed Free Cities whore, and commands top prices.">> - $He does $his best to motivate the famous whore, _slave.slaveName, though $he is uncertain why _he2 is here. - <<case "$He is a famed Free Cities slut, and can please anyone.">> - $He ignores $his duties in order the fawn over the famous entertainer, _slave.slaveName. - <<case "$He is remembered for winning best in show as a cockmilker.">> - <<if (_slave.dick != 0) && (_slave.balls != 0) && (_slave.prostate > 1)>> - _slave.slaveName leaves a trail of cum wherever _he2 goes and frequently stops to masturbate, greatly annoying $Stewardess.slaveName. - <<if random(1,100) > 90 && $Stewardess.rivalry == 0 && _slave.rivalry == 0>> - <<set $Stewardess.rivalryTarget = _slave.ID, $Stewardess.rivalry++, $slaves[_FLs].rivalryTarget = _slave.ID, $slaves[_FLs].rivalry++>> - <<set _slave.rivalryTarget = $Stewardess.ID, _slave.rivalry++>> - <</if>> - <</if>> - <<case "$He is remembered for winning best in show as a dairy cow.">> - <<if (_slave.lactation > 0) && ((_slave.boobs-_slave.boobsImplant) > 6000)>> - _slave.slaveName's huge breasts frequently get in the way of _his2 work and _he2 leaks milk everywhere, greatly annoying $Stewardess.slaveName. - <<if random(1,100) > 90 && $Stewardess.rivalry == 0 && _slave.rivalry == 0>> - <<set $Stewardess.rivalryTarget = _slave.ID, $Stewardess.rivalry++, $slaves[_FLs].rivalryTarget = _slave.ID, $slaves[_FLs].rivalry++>> - <<set _slave.rivalryTarget = $Stewardess.ID, _slave.rivalry++>> - <</if>> - <</if>> - <<case "$He is remembered for winning best in show as a breeder.">> - <<if _slave.bellyPreg >= 10000>> - _slave.slaveName's big pregnant belly frequently gets in the way of _his2 work. However, $Stewardess.slaveName is willing to overlook it, as well as allow _him2 easy jobs, due to how valuable _his2 womb is. - <</if>> - <</switch>> - <<if (_BonusToggle == 1) && (_slave.devotion < 45)>> - <<set _slave.devotion += 5>> - <</if>> - <</for>> - <<if (_DL > 0)>> - <<if ($Stewardess.fetishKnown == 1) && ($Stewardess.fetish == "dom")>> - $He walks among the cowering servants as a queen among peasants, playing the role of a dominant to perfection and increasing $his charges' @@.hotpink;obedience.@@ - <<elseif ($Stewardess.energy > 95)>> - $He walks among the cowering servants looking for an excuse to extract sex from shirkers as @@.hotpink;punishment.@@ - <</if>> - /% Get it out of the loop %/ - <<run cashX(($stewardessBonus * _DL), "servantsQuarters", $Stewardess)>> - <br><br> - <</if>> -<</if>> - -<<if $arcologies[0].FSRestart != "unset" && _stewardessImpregnated == 1 && $eugenicsFullControl != 1>> - The Societal Elite know you've ordered $Stewardess.slaveName to impregnate your maids. @@.red;They are not amused by your disinterest in eugenics.@@ - <<set $failedElite += 10>> -<</if>> -<<if (_DL > 0)>> - <<setLocalPronouns _slaves[0]>> - <<if (_DL != 1)>>''There are _DL slaves working out of the servants' quarters.'' They work to<<else>>''There is one slave working out of the servants' quarters.'' $He works to<</if>> @@.yellowgreen;reduce@@ your household expenses; having a well-staffed house slightly @@.green;increases@@ your reputation. -<</if>> - -<<if ($Stewardess != 0)>> - <<set $i = _FLs>> /* apply following SA passages to facility leader */ - <<if $showEWD != 0>> - <br><br> - /* 000-250-006 */ - <<if $seeImages && $seeReportImages>> - <div class="imageRef tinyImg"> - <<= SlaveArt($slaves[_FLs], 0, 0)>> - </div> - <</if>> - /* 000-250-006 */ - <span class='slave-name'><<= SlaveFullName($slaves[_FLs])>></span> is serving as your Stewardess. - <br> - <<= App.SlaveAssignment.choosesOwnClothes($slaves[$i])>> - <<run tired($slaves[$i])>> - <<include "SA rules">> - <<include "SA diet">> - <<include "SA long term effects">> - <<= App.SlaveAssignment.drugs($slaves[$i])>> - <<include "SA relationships">> - <<include "SA rivalries">> - <br><<include "SA devotion">> - <<else>> - <<silently>> - <<run App.SlaveAssignment.choosesOwnClothes($slaves[$i])>> - <<run tired($slaves[$i])>> - <<include "SA rules">> - <<include "SA diet">> - <<include "SA long term effects">> - <<run App.SlaveAssignment.drugs($slaves[$i])>> - <<include "SA relationships">> - <<include "SA rivalries">> - <<include "SA devotion">> - <</silently>> - <</if>> - <<set $Stewardess = $slaves[_FLs]>> -<</if>> - -<<set $servantMilkersMultiplier = 0.5, _SQMilk = 0, _SQMilkSale = 0>> - -<<for _slave range _slaves>> - <<set $i = $slaveIndices[_slave.ID]>> - <<set _slave.devotion += _devBonus>> - <<setLocalPronouns _slave 2>> - <<if (_slave.devotion <= 20) && (_slave.trust >= -20)>> - <<set _slave.devotion -= 5, _slave.trust -= 5>> - <<elseif (_slave.devotion <= 10)>> - <<set _slave.devotion += 2>> - <<elseif (_slave.devotion >= 80)>> - <<set _slave.devotion -= 2>> - <</if>> - <<if (_slave.devotion < -20)>> - <<set _slave.trust += 3>> - <<elseif (_slave.trust < -50)>> - <<set _slave.trust += 2>> - <<elseif (_slave.trust < -30)>> - <<set _slave.trust += 1>> - <</if>> - <<if (_slave.health.condition < -80)>> - <<run improveCondition(_slave, 20)>> - <<elseif (_slave.health.condition < -40)>> - <<run improveCondition(_slave, 10)>> - <<elseif (_slave.health.condition < 0)>> - <<run improveCondition(_slave, 7)>> - <<elseif (_slave.health.condition < 90)>> - <<run improveCondition(_slave, 3)>> - <</if>> - <<switch $servantsQuartersDecoration>> - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Degradationist" "Edo Revivalist" "Egyptian Revivalist" "Roman Revivalist" "Subjugationist" "Supremacist">> - <<set _slave.rules.living = "spare">> - <<case "Slave Professionalism">> - <<if _slave.intelligence+_slave.intelligenceImplant > 15>> - <<set _slave.rules.living = "normal">> - <<else>> - <<set _slave.rules.living = "spare">> - <</if>> - <<case "Petite Admiration">> - <<if heightPass(_slave)>> - <<set _slave.rules.living = "normal">> - <<else>> - <<set _slave.rules.living = "spare">> - <</if>> - <<case "Statuesque Glorification">> - <<if heightPass(_slave)>> - <<set _slave.rules.living = "normal">> - <<else>> - <<set _slave.rules.living = "spare">> - <</if>> - <<default>> - <<set _slave.rules.living = "normal">> - <</switch>> - <<if $showEWD != 0>> - <br><br> - /* 000-250-006 */ - <<if $seeImages && $seeReportImages>> - <div class="imageRef tinyImg"> - <<= SlaveArt(_slave, 0, 0)>> - </div> - <</if>> - /* 000-250-006 */ - <span class='slave-name'><<= SlaveFullName(_slave)>></span> - <<if _slave.choosesOwnAssignment == 2>> - <<include "SA chooses own job">> - <<else>> - is working out of $servantsQuartersName. - <</if>> - <br> _He2 <<= App.SlaveAssignment.servant(_slave)>> - <<if ($servantMilkers == 1) && (_slave.lactation > 0)>> - <br> _He2 <<= App.SlaveAssignment.getMilked(_slave)>> - <<set _SQMilk += $milk, _SQMilkSale += $milkSale>> - <</if>> - <br> - <<= App.SlaveAssignment.choosesOwnClothes(_slave)>> - <<include "SA rules">> - <<include "SA diet">> - <<include "SA long term effects">> - <<= App.SlaveAssignment.drugs(_slave)>> - <<include "SA relationships">> - <<include "SA rivalries">> - <br><<include "SA devotion">> - <<else>> - <<silently>> - <<include "SA chooses own job">> - <<run App.SlaveAssignment.servant(_slave)>> - <<if ($servantMilkers == 1) && (_slave.lactation > 0)>> - <<run App.SlaveAssignment.getMilked(_slave)>> - <<set _SQMilk += $milk, _SQMilkSale += $milkSale>> - <</if>> - <<run App.SlaveAssignment.choosesOwnClothes(_slave)>> - <<include "SA rules">> - <<include "SA diet">> - <<include "SA long term effects">> - <<run App.SlaveAssignment.drugs(_slave)>> - <<include "SA relationships">> - <<include "SA rivalries">> - <<include "SA devotion">> - <</silently>> - <</if>> -<</for>> - -<<if _SQMilk > 0 || $servantsQuartersDecoration != "standard">> - <br><br> - <<if _SQMilk > 0>> - Since your lactating servants spend most of their time working in the penthouse, they use the milkers there, giving _SQMilk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_SQMilkSale)>>.@@ - <</if>> -<</if>> - -<<if $servantsQuartersDecoration != "standard">> - <br><br> $servantsQuartersNameCaps's $servantsQuartersDecoration atmosphere @@.hotpink;has a minor impact on your servants.@@ -<</if>> - -<<set $servantMilkersMultiplier = 1>> -<<run repX(_DL*20, "servantsQuarters")>> - -<<if _DL > 0 || $Stewardess != 0>> - <br><br> -<</if>> +/* This passage probably isn't really necessary but it helps organize the profiler output. + * TODO: Once all the facility reports look like this, we should probably get rid of these intermediate passages. */ +<<includeDOM App.EndWeek.servantsQuartersReport()>> diff --git a/src/uncategorized/stewardessSelect.tw b/src/uncategorized/stewardessSelect.tw index 1c5c4f97b7c7efc3b391293baa551769833d98dd..dfac601f9c962157abd5bff5c29e7e16b88b5f7a 100644 --- a/src/uncategorized/stewardessSelect.tw +++ b/src/uncategorized/stewardessSelect.tw @@ -1,15 +1,14 @@ :: Stewardess Select [nobr jump-to-safe jump-hidden jump-from-safe] <<set $nextButton = "Back", $nextLink = "Servants' Quarters", $encyclopedia = "Stewardess">> -<<if ($Stewardess != 0)>> - <<set $Stewardess = getSlave($Stewardess.ID)>> - <<setLocalPronouns $Stewardess>> - <span class='slave-name'><<= SlaveFullName($Stewardess)>></span> is serving as your Stewardess.<br><br>$He will manage the Servants' Quarters. +<<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($Stewardess, "be the Stewardess")]] +<br><br>[[None|Servants' Quarters][removeJob(_S.Stewardess, Job.STEWARD)]] <br><br> <<print App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.servantsQuarters, "Servants' Quarters")>> diff --git a/src/utility/birthWidgets.tw b/src/utility/birthWidgets.tw index 780e49081c67ccab87e0aa0d91da8e9db09a8102..c2567c6909de754bc69f881cf2a9991fb0cd392a 100644 --- a/src/utility/birthWidgets.tw +++ b/src/utility/birthWidgets.tw @@ -357,7 +357,7 @@ $He returns to $his bed and strips before slipping into it. $He makes $himself comfortable and begins working on birthing $his bab<<if $slaves[$i].pregType > 1>>ies<<else>>y<</if>>. $He is quite experienced in delivering $his cows' children, but $he finds it much more difficult to apply $his knowledge to $himself. $His child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> promptly taken and, after a short rest, $he returns to caring for your cows. <<case "be the Farmer">> - $He heads to $his private room before stripping and calling in a couple of nearby slaves to aid $him. Though $he has delivered more than a few of $his livestocks' offspring, delivering $his own proves to be a slightly more difficult ordeal. $He manages, though, and after $his child<<if $slaves[$i].pregType > 1>>ren are<</else>> is<</if>> taken from $him and $he's had a shower and a short rest, $he returns to looking after $farmyardName. + $He heads to $his private room before stripping and calling in a couple of nearby slaves to aid $him. Though $he has delivered more than a few of $his livestocks' offspring, delivering $his own proves to be a slightly more difficult ordeal. $He manages, though, and after $his child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> taken from $him and $he's had a shower and a short rest, $he returns to looking after $farmyardName. <<case "be the Wardeness">> <<if $slaves[$i].fetish == "mindbroken">> /* FIXME: can Wardens be mindbroken? */ @@ -861,22 +861,22 @@ <<if _birthScene > 50>> While giving a slave oral service, $slaves[$i].slaveName's water breaks. $He disregards this development and continues working. <<ClothingBirth>> - The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. Instead, $he draws $his child<<if $slaves[$i].pregType > 1>>ren<</if>> to $his breast<<if $slaves[$i].pregType > 1>>s<</if>> until <<if $Stewardess != 0>>$Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>>shouts at $him to move $his useless ass. + The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. Instead, $he draws $his child<<if $slaves[$i].pregType > 1>>ren<</if>> to $his breast<<if $slaves[$i].pregType > 1>>s<</if>> until <<if _S.Stewardess>>_S.Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>>shouts at $him to move $his useless ass. <<else>> While scrubbing the penthouse floor, $slaves[$i].slaveName's water breaks. $He turns to clean this new spill, disregarding what it means. <<ClothingBirth>> - Instead of cleaning the fresh mess $he made, $he draws $his child<<if $slaves[$i].pregType > 1>>ren<</if>> to $his breast<<if $slaves[$i].pregType > 1>>s<</if>> until <<if $Stewardess != 0>>$Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>>shouts at $him to move $his useless ass. + Instead of cleaning the fresh mess $he made, $he draws $his child<<if $slaves[$i].pregType > 1>>ren<</if>> to $his breast<<if $slaves[$i].pregType > 1>>s<</if>> until <<if _S.Stewardess>>_S.Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>>shouts at $him to move $his useless ass. <</if>> <<else>> <<if _birthScene > 50>> While giving a slave oral service, $slaves[$i].slaveName's water breaks. $He desperately tries to pull away but they grab $his head and force $him back to their crotch. <<set $humiliation = 1>> <<ClothingBirth>> - The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. $He hurriedly tries to mop up the mess and collect $his child<<if $slaves[$i].pregType > 1>>ren<</if>> before <<if $Stewardess != 0>>$Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>> shouts at $him. + The slave gets off quite strongly to the show and shoves $him out of the way, leaving $him to clean up $his mess. $He hurriedly tries to mop up the mess and collect $his child<<if $slaves[$i].pregType > 1>>ren<</if>> before <<if _S.Stewardess != 0>>_S.Stewardess.slaveName<<elseif $HeadGirl != 0>>$HeadGirl.slaveName<<else>>$assistant.name<</if>> shouts at $him. <<else>> While scrubbing the penthouse floor, $slaves[$i].slaveName's water breaks. $He panics at the thought of not cleaning up $his spill but $his worsening contractions force $him to find a secluded place to give birth. <<ClothingBirth>> - Collecting $his child<<if $slaves[$i].pregType > 1>>ren<</if>>, $he exits $his hiding place before coming under the eye of <<if $Stewardess != 0>>the glaring $Stewardess.slaveName<<elseif $HeadGirl != 0>>the glaring $HeadGirl.slaveName<<else>>$assistant.name<</if>>. $His child<<if $slaves[$i].pregType > 1>>ren<</if>> are promptly taken by other servants following a lecture about priorities and time management. + Collecting $his child<<if $slaves[$i].pregType > 1>>ren<</if>>, $he exits $his hiding place before coming under the eye of <<if _S.Stewardess != 0>>the glaring _S.Stewardess.slaveName<<elseif $HeadGirl != 0>>the glaring $HeadGirl.slaveName<<else>>$assistant.name<</if>>. $His child<<if $slaves[$i].pregType > 1>>ren<</if>> are promptly taken by other servants following a lecture about priorities and time management. <</if>> <</if>> diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw deleted file mode 100644 index 2a2c9a9ffc7a8b69d9413d216420bd95be97b2bb..0000000000000000000000000000000000000000 --- a/src/utility/descriptionWidgetsStyle.tw +++ /dev/null @@ -1,870 +0,0 @@ -:: clothing description widgets [widget nobr] - -<<widget "upperFaceDescription">> - <<if $activeSlave.fuckdoll == 0>> - <<switch $activeSlave.clothes>> - <<case "restrictive latex">> - The upper half of $his face is covered by the hood of $his latex suit: though <<if canSee($activeSlave)>>$he can see through eye-holes, these can easily be closed to blind $him<<else>>there are eye-holes, they are currently closed due to their lack of use<</if>>. - <<case "harem gauze">> - $His harem outfit includes the traditional veil for $his face. - <<case "a burkini">> - Above $his shoulders, $his burkini leaves only $his face bare. - <<case "a hijab and blouse">> - Above the shoulders of $his blouse, $his hijab leaves only $his face bare. - <<case "a hijab and abaya">> - Above the shoulders of $his abaya, $his hijab leaves only $his face bare. - <<case "a niqab and abaya">> - Above the shoulders of $his abaya, $his niqab leaves only the area around $his eyes bare. - <<case "a klan robe" "a slutty klan robe">> - Above the shoulders of $his robe, $his hood leaves only the area around $his eyes bare. - <<case "a burqa">> - $His burqa near totally covers $his face, aside from what can be seen behind the fabric mesh that covers $his eyes. - <<case "a chattel habit">> - A golden circlet crowns $his white cowl, securing $his habit to $his head. - <<case "a succubus outfit">> - $He has a pair of false horns sprouting from just behind $his hairline and sweeping backward, which are anchored to a wire headband hidden by $his hair. - <<case "a bunny outfit">> - A pair of bunny ears sprout from a headband atop $his head. - <</switch>> - <<if hasAnyCyberneticEyes($activeSlave)>> - $He has artificial <<if hasBothCyberneticEyes($activeSlave)>>eyes<<else>>an eye<</if>>. - <</if>> - <<if ($activeSlave.eyewear == "corrective glasses") || ($activeSlave.eyewear == "blurring glasses") || ($activeSlave.eyewear == "glasses")>> - $He's wearing a pair of - <<switch $activeSlave.clothes>> - <<case "chains" "shibari ropes" "uncomfortable straps" "a chattel habit" "overalls" "Western clothing">> - sturdy glasses, - <<case "restrictive latex">> - glasses over the hood, - <<case "a ball gown" "a slave gown" "conservative clothing" "cutoffs and a t-shirt" "a halter top dress" "a maternity dress" "a courtesan dress">> - nice frameless glasses, - <<case "body oil">> - big retro glasses, - <<case "slutty business attire">> - horn-rimmed glasses to accent $his business attire, - <<case "a schoolgirl outfit">> - horn-rimmed glasses to improve $his schoolgirl look, - <<case "nice business attire">> - wire-frame glasses to accent $his business attire, - <<case "attractive lingerie" "attractive lingerie for a pregnant woman" "an apron" "a hijab and blouse">> - feminine glasses, - <<case "kitty lingerie">> - cat-eye glasses, - <<case "a succubus outfit">> - severe steel-frame glasses, - <<case "harem gauze" "slutty jewelry">> - glasses with golden wire frames, - <<case "a burqa" "a niqab and abaya" "a penitent nuns habit" "a klan robe" "a slutty klan robe">> - cheap glasses, - <<case "a gothic lolita dress">> - Victorian-styled glasses, - <<case "a hanbok">> - folding spectacle glasses, - <<case "a police uniform">> - aviator sunglasses, - <<case "a Santa dress">> - antique reading glasses, - <<case "a bunny outfit" "a monokini">> - girly retro glasses, - <<case "a hijab and abaya" "a huipil" "a kimono" "a long qipao" "a nice maid outfit" "a slutty qipao" "a slutty maid outfit">> - an old fashioned pair of horn rimmed glasses, - <<case "a fallen nuns habit" "a cheerleader outfit" "a slutty nurse outfit">> - a daring pair of horn rimmed glasses, - <<case "clubslut netting" "a string bikini" "striped panties" "a bimbo outfit">> - a pair of girly pastel glasses, - <<case "a scalemail bikini">> - a pair of ancient-looking glasses, - <<case "a burkini" "a one-piece swimsuit">> - swim goggles, - <<default>> - simple wire-frame glasses, - <</switch>> - <<if getBestVision($activeSlave) === 0>> - which, since $he is @@.red;blind,@@ are just for show. $He moves carefully as to not bump into things. - <<else>> - <<if $activeSlave.eyewear == "blurring glasses">> - <<if anyVisionEquals($activeSlave, 2)>> - which are designed to blur $his vision, making $him clumsy. - <<else>> - which do nothing to help $his @@.yellow;nearsightedness@@ and consequent clumsiness. - <</if>> - <<elseif $activeSlave.eyewear == "corrective glasses">> - <<if anyVisionEquals($activeSlave, 1)>> - which correct $his vision. - <<else>> - which are just for show. - <</if>> - <<else>> - which are just for show. - <</if>> - <</if>> - <<else>> - <<if !canSee($activeSlave)>> - $He is @@.red;blind,@@ and moves very carefully as a result. - <<elseif !canSeePerfectly($activeSlave)>> - <<if $activeSlave.eyewear == "blurring contacts">> - $He's wearing contacts designed to blur $his vision, making $him clumsy. - <<else>> - $He's @@.yellow;nearsighted,@@ and a bit clumsy as a result. - <</if>> - <<else>> - <<if $activeSlave.eyewear == "corrective contacts">> - $He's wearing contact lenses to correct $his @@.yellow;nearsightedness.@@ - <</if>> - <</if>> - <</if>> /* CLOSES EYEWEAR */ - <<if ($activeSlave.earwear == "hearing aids") || ($activeSlave.earwear == "muffling ear plugs") || ($activeSlave.earwear == "deafening ear plugs")>> - In $his ears, $he wears - <<if $activeSlave.earwear == "hearing aids">> - a pair of hearing aids, - <<if $activeSlave.hears > -1>> - which do little to correct $his already adequate hearing. - <<elseif $activeSlave.hears == -1>> - which are used to correct $his @@.yellow;hearing impairment.@@ - <<elseif $activeSlave.hears < -1>> - which, due to $his @@.red;deafness,@@ are useless. - <</if>> - <<elseif $activeSlave.earwear == "muffling ear plugs">> - a pair of small foam ear plugs, - <<if $activeSlave.hears > -1>> - which noticeably @@.yellow;muffle $his hearing.@@ - <<elseif $activeSlave.hears == -1>> - which are pointless, as $he is already @@.yellow;hard of hearing.@@ - <<elseif $activeSlave.hears < -1>> - which are pointless, as $he is totally @@.red;deaf.@@ - <</if>> - <<elseif $activeSlave.earwear == "deafening ear plugs">> - a pair of large silicone ear plugs, - <<if $activeSlave.hears > -1>> - which @@.red;nullify $his sense of hearing.@@ - <<elseif $activeSlave.hears == -1>> - which impair $his hearing to the point of @@.red;deafness.@@ - <<elseif $activeSlave.hears < -1>> - which are pointless, as $he is already @@.red;deaf.@@ - <</if>> - <</if>> - <<else>> - <<if $activeSlave.hears == -1>> - $He's @@.yellow;hard of hearing,@@ and a bit nervous as a result. - <<elseif $activeSlave.hears < -1>> - $He is @@.red;deaf,@@ and overly paranoid as a result. - <</if>> - <</if>> - <<else>> - $His face is featurelessly obscured by the Fuckdoll suit from the top of $his head down to $his face hole. - <</if>> -<</widget>> - -<<widget "collarDescription">> - <<switch $activeSlave.collar>> - <<case "uncomfortable leather">> - $He is wearing an uncomfortable leather collar with a useful steel ring in front. - <<case "preg biometrics">> - <<if $activeSlave.pregSource > 0>> - <<set _daddy = findFather($activeSlave.pregSource), _daddy = _daddy.slaveName>> - <</if>> - <<set _pregCollar = either(1, 2, 3)>> - $He is wearing a heavy metal collar with a digital display; it currently reads: - <<if $activeSlave.preg > 0 && $activeSlave.pregKnown == 0>> - "I might be preggers! Rub my belly for luck!" - <<else>> - <<if _pregCollar == 1>> - <<if $activeSlave.pregWeek < 0>> - "I'm a mommy now!" - <<elseif $activeSlave.pregKnown == 0>> - "Knock me up!" - <<elseif $activeSlave.pregKnown == 1>> - "<<if $activeSlave.pregType == 0>>1<<else>>$activeSlave.pregType<</if>> bab<<if $activeSlave.pregType > 1>>ies<<else>>y<</if>> on board!" - <<else>> - "I'm infertile!" - <</if>> - <<elseif _pregCollar == 2>> - <<if $activeSlave.pregWeek < 0>> - "<<= num($activeSlave.pregWeek*-1)>> week<<if $activeSlave.pregWeek != -1>>s<</if>> until I can get preggers again!" - <<elseif $activeSlave.pregKnown == 1>> - <<if $activeSlave.broodmother == 2>> - <<if $activeSlave.preg > 37>> - "I'm crowning as you read this!" - <<else>> - "<<print 38-Math.ceil($activeSlave.preg)>> weeks till I pop!" - <</if>> - <<elseif $activeSlave.broodmother == 1>> - "<<print 38-Math.ceil($activeSlave.preg)>> weeks till I pop!" - <<else>> - "<<print 40-$activeSlave.preg>> weeks till I pop!" - <</if>> - <<else>> - "My womb needs filling!" - <</if>> - <<else>> - <<if $activeSlave.pregWeek < 0>> - "I can't wait for my belly to swell with life again!" - <<elseif $activeSlave.pregKnown == 0>> - "Put a baby in me today!" - <<elseif $activeSlave.pregSource == -1>> - "Womb claimed by my <<= WrittenMaster($activeSlave)>>!" - <<elseif ($activeSlave.pregSource == 0 || $activeSlave.pregSource == -2 || $activeSlave.pregSource == -5)>> - "Baby made by slutting around!" - <<elseif $activeSlave.pregSource == -7>> - "My baby was made with science!" - <<elseif $activeSlave.pregSource == -9>> - "Futanari Sisters, now two for the price of one!" - <<elseif $activeSlave.pregSource > 0>> - "Womb claimed by _daddy!" - <<else>> - "Put a baby in me today!" - <</if>> - <</if>> - <</if>> - <<case "silk ribbon">> - $He is wearing a tight silk ribbon fitted to $his neck, it is oddly elegant. - <<case "tight steel">> - $He is wearing a tight steel collar whose restricting metal touch $he cannot escape. - <<case "shock punishment">> - $He is wearing a utilitarian collar with a punishment device at $his throat to administer agonizing shocks. - <<case "neck corset">> - $He is wearing a fitted leather neck corset that constricts $his breathing and holds $his head rigidly upright. - <<case "stylish leather">> - $He is wearing a stylish leather collar buckled in the front, a classic accessory for the well behaved slave. - <<case "satin choker">> - $He is wearing a steel reinforced black satin choker that is at once elegant and functional. - <<case "heavy gold">> - $He is wearing a heavy gold collar, an outstanding bit of ostentation. - <<case "pretty jewelry">> - $He is wearing a pretty slave collar that can almost be mistaken for jewelry. - <<case "bell collar">> - $He is wearing a comfortable leather collar with a small brass bell at $his throat. - <<case "leather with cowbell">> - $He is wearing a comfortable leather collar with a small steel cowbell at $his throat. - <<case "bowtie">> - $He is wearing the collar from a white formal shirt, and a black bowtie, though these conceal an actual collar that works perfectly well for restraint. - <<case "neck tie">> - $He is wearing a neck tie, though it conceals an actual collar that works perfectly well for restraint. - <<case "ancient Egyptian">> - $He is wearing a beautiful golden wesekh, a collar that spreads from $his neck out onto both shoulders and down $his front. - <<case "cruel retirement counter" "nice retirement counter">> - $He is wearing a <<if $activeSlave.collar == "cruel retirement counter">>heavy metal collar<<else>>nice collar, almost a necklace,<</if>> with a small numerical display reading - <<if $activeSlave.indenture > -1>> - $activeSlave.indenture, the number of weeks left in $his indenture. - <<elseif $policies.retirement.sex > 0>> - <<print $policies.retirement.sex - ($activeSlave.counter.oral + $activeSlave.counter.anal + $activeSlave.counter.vaginal + $activeSlave.counter.penetrative + $activeSlave.counter.mammary)>>, for the number of cocks between $him and $his freedom. - <<elseif $policies.retirement.milk > 0>> - <<print $policies.retirement.milk - $activeSlave.counter.milk>>, for the amount of milk $he has yet to give. - <<elseif $policies.retirement.cum > 0>> - <<print $policies.retirement.cum - $activeSlave.counter.cum>>, for the amount of cum $he has yet to give. - <<elseif $policies.retirement.births > 0>> - <<print $policies.retirement.births - $activeSlave.counter.births>>, for the number of pregnancies still between $him and freedom. - <<elseif $policies.retirement.kills > 0>> - <<print $policies.retirement.kills - $activeSlave.counter.pitKills>>, for the number of lives still between $him and freedom. - <<elseif $policies.retirement.physicalAgePolicy == 0>> - <<print (365*($retirementAge-$activeSlave.actualAge))+(7*(52-$activeSlave.birthWeek))>>, the number of days of sexual slavery ahead of $him. - <<else>> - <<print (365*($retirementAge-$activeSlave.physicalAge))+(7*(52-$activeSlave.birthWeek))>>, the number of days of sexual slavery ahead of $him. - <</if>> - <</switch>> -<</widget>> - -<<widget "armwearDescription">> -/* check clothing descriptions from above for glove references */ -<<if (hasAnyArms($activeSlave))>> - <<switch $activeSlave.armAccessory>> - <<case "hand gloves">> - $He is wearing a pair of simple gloves that covers $his hand<<if hasBothArms($activeSlave)>>s<</if>> up to $his wrist<<if hasBothArms($activeSlave)>>s<</if>>. - - <<case "elbow gloves">> - $He is wearing a pair of long gloves that covers $his arm<<if hasBothArms($activeSlave)>>s<</if>> until just past $his elbow<<if hasBothArms($activeSlave)>>s<</if>>. - - <</switch>> -<</if>> -<</widget>> - -<<widget "clothingCorsetDescription">> -<<switch $activeSlave.clothes>> -<<case "a Fuckdoll suit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is built into $his suit. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is built into $his suit. - <</if>> - -<<case "a hijab and blouse" "conservative clothing">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is hidden by $his blouse. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is hidden by $his blouse. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his blouse. - <</if>> - -<<case "spats and a tank top">> - <<if $activeSlave.boobs > 1200>> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is open to view due to $his large chest hiking up $his top. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is open to view due to $his large chest hiking up $his top. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is open to view due to $his large chest hiking up $his top. - <</if>> - <<else>> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is hidden by $his top. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is hidden by $his top. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his top. - <</if>> - <</if>> - -<<case "chains">> - <<if $activeSlave.bellyAccessory == "a corset">> - Leather cased lengths of chain form a corset around $his waist. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $He's encased in a very tight corset made of leather cased iron straps, with eyelets to attach to the chains. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is buried under $his chains. - <</if>> - -<<case "Western clothing">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is hidden by $his flannel. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is hidden by $his flannel. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his flannel. - <</if>> - -<<case "body oil">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is $his only real item of clothing. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is $his only real item of clothing. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is $his only real item of clothing. - <</if>> - -<<case "a toga">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is hidden by the toga. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is hidden by the toga. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by the toga. - <</if>> - -<<case "a huipil">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is visible through the sides. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is visible through the sides. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is is visible through the sides. - <</if>> - -<<case "a slutty qipao">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is hidden by the silk. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is hidden by the silk. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by the silk. - <</if>> - -<<case "uncomfortable straps">> - <<if $activeSlave.bellyAccessory == "a corset">> - $He's wearing a leather corset, hooked into the straps. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $He's wearing an extreme leather corset, hooked into the straps. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is buried under $his straps. - <</if>> - -<<case "shibari ropes">> - <<if $activeSlave.bellyAccessory == "a corset">> - A dense web of thick ropes around $his waist form an effective corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His ropes bind into an extreme corset woven from hemp. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is buried under $his ropes. - <</if>> - -<<case "restrictive latex">> - <<if $activeSlave.bellyAccessory == "a corset">> - The latex features an integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The latex features a punishingly extreme integral corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by the latex. - <</if>> - -<<case "a latex catsuit">> - <<if $activeSlave.bellyAccessory == "a corset">> - An underbust corset cinches $his waist and ensures proper posture. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - An underbust corset in punishing tightlace cinches $his waist and ensures proper posture. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by the latex. - <</if>> - -<<case "attractive lingerie" "attractive lingerie for a pregnant woman" "kitty lingerie">> - <<if $activeSlave.bellyAccessory == "a corset">> - $He's wearing a pretty lace corset to match. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $He's wearing a strict whalebone corset to match. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is in plain sight. - <</if>> - -<<case "a succubus outfit" "a courtesan dress">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset includes steel stays to give it real effect. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His corset includes punishingly tight steel stays to give it real effect. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is layered under $his corset. - <</if>> - -<<case "a fallen nuns habit">> - <<if $activeSlave.bellyAccessory == "a corset">> - The latex features an integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The latex features a punishingly extreme integral corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is layered under $his corset. - <</if>> - -<<case "a chattel habit">> - <<if $activeSlave.bellyAccessory == "a corset">> - The habit includes a prominent white corset with gold stays. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The habit includes an extremely tight white corset with gold stays. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is visible through $his habit. - <</if>> - -<<case "a penitent nuns habit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is hidden, but very uncomfortable. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His corset is hidden, but crushingly uncomfortable. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his habit. - <</if>> - -<<case "a string bikini">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is a fun color, but still clashes with $his bikini pretty badly. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corset is a fun color, but still clashes with $his bikini pretty badly. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is a fun color, but still clashes with $his bikini pretty badly. - <</if>> - -<<case "a scalemail bikini">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is a dull color, and clashes with $his bikini pretty badly. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corset is a dull color, and clashes with $his bikini pretty badly. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band clashes with $his bikini pretty badly. - <</if>> - -<<case "striped panties">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is a fun color and compliments $his cute panties. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corset is a fun color and compliments $his cute panties. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is a fun color and compliments $his cute panties. - <</if>> - -<<case "a cheerleader outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His top incorporates a subtle corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His top incorporates severe corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His top does little to conceal $his support band. - <</if>> - -<<case "clubslut netting">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is a fun color, but still clashes with $his netting pretty badly. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corset is a fun color, but still clashes with $his netting pretty badly. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is a fun color, but still clashes with $his netting pretty badly. - <</if>> - -<<case "cutoffs and a t-shirt">> - <<if $activeSlave.bellyAccessory == "a corset">> - The t-shirt conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The t-shirt conceals $his severe corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his t-shirt. - <</if>> - -<<case "a slave gown">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His gown has an elegant integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His gown has extreme corsetage built into it. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is concealed by $his gown. - <</if>> - -<<case "slutty business attire">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His jacket totally conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His jacket totally conceals $his absurd corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his jacket. - <</if>> - -<<case "nice business attire">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His jacket totally conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His jacket totally conceals $his absurd corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his jacket. - <</if>> - -<<case "a ball gown">> - <<if $activeSlave.bellyAccessory == "a corset">> - The dress has an elegant integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The dress has extreme corsetage built into it. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his gown. - <</if>> - -<<case "a halter top dress">> - <<if $activeSlave.bellyAccessory == "a corset">> - The dress has an elegant integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The dress has extreme corsetage built into it. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his dress. - <</if>> - -<<case "a mini dress">> - <<if $activeSlave.bellyAccessory == "a corset">> - The dress also cleverly doubles as an overbust corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The dress also cleverly doubles as an extreme overbust corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his dress. - <</if>> - -<<case "a comfortable bodysuit">> - <<if $activeSlave.bellyAccessory == "a corset">> - Its middle is reinforced to act as a corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - Its middle is strongly reinforced to act as a merciless corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his bodysuit. - <</if>> - -<<case "a leotard">> - <<if $activeSlave.bellyAccessory == "a corset">> - The leotard's middle is reinforced to act as a corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The leotard's middle is strongly reinforced to act as a merciless corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his leotard. - <</if>> - -<<case "a burkini" "a one-piece swimsuit">> - <<if $activeSlave.bellyAccessory == "a corset">> - The swimsuit's middle is reinforced to act as a corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The swimsuit's middle is strongly reinforced to act as a merciless corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden under $his swimsuit. - <</if>> - -<<case "a monokini">> - <<if $activeSlave.bellyAccessory == "a corset">> - A corset peaks out from the top of the swimsuit. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - An extreme corset peaks out from the top of the swimsuit. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band peaks out from the top of the swimsuit. - <</if>> - -<<case "overalls">> - <<if $activeSlave.bellyAccessory == "a corset">> - A corset peaks out from the top of the overalls. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - An extreme corset peaks out from the top of the overalls. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band peaks out from the top of the overalls. - <</if>> - -<<case "an apron">> - <<if $activeSlave.bellyAccessory == "a corset">> - The apron hides the front of $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The apron hides the front of $his extreme corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - The apron hides the front of $his support band. - <</if>> - -<<case "a cybersuit">> - <<if $activeSlave.bellyAccessory == "a corset">> - A corset wraps the bodysuit snugly. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - An extreme corset wraps the bodysuit tightly. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden under $his bodysuit. - <</if>> - -<<case "a bunny outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His bunny outfit has an integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His bunny outfit has extreme corsetage built into it. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his teddy. - <</if>> - -<<case "a slutty maid outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His maid uniform has an integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His maid uniform has extreme corsetage built into it. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his maid uniform. - <</if>> - -<<case "a nice maid outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His maid uniform has an integral corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His uniform has extreme corsetage built into it. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his maid uniform. - <</if>> - -<<case "a slutty nurse outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His jacket totally conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His jacket totally conceals $his absurd corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his jacket. - <</if>> - -<<case "a nice nurse outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His scrubs totally conceal $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His scrubs totally conceal $his absurd corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his scrubs. - <</if>> - -<<case "a schoolgirl outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - The outline of $his corset can be seen through $his blouse. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The outline of $his absurd corsetage can be seen through $his blouse. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band can be seen under $his blouse. - <</if>> - -<<case "a hanbok" "a kimono">> - <<if $activeSlave.bellyAccessory == "a corset">> - The handsome silk completely conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The handsome silk completely conceals $his absurd corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - The handsome silk completely conceals $his support band. - <</if>> - -<<case "a klan robe">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is hidden by $his long robes. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corsetage is hidden by $his long robes. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his long robes. - <</if>> - -<<case "a burqa" "a hijab and abaya" "a niqab and abaya">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is properly hidden along with everything else. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corsetage is properly hidden along with everything else. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is properly hidden along with everything else. - <</if>> - -<<case "a gothic lolita dress" "a Santa dress">> - <<if $activeSlave.bellyAccessory == "a corset">> - The thick fabric of $his dress conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - The thick fabric of $his dress conceals $his extreme corset. - <<elseif $activeSlave.bellyAccessory == "a support band">> - The thick fabric of $his dress conceals $his support band. - <</if>> - -<<case "a military uniform" "a mounty outfit" "a red army uniform" "a schutzstaffel uniform" "a slutty schutzstaffel uniform" "a police uniform">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His tunic conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His tunic conceals $his extreme corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his tunic. - <</if>> - -<<case "a biyelgee costume" "a dirndl" "a long qipao">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His dress conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His dress conceals $his extreme corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his dress. - <</if>> - -<<case "battlearmor">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His armor conceals $his corset. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His armor conceals $his extreme corsetage. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden under $his armor. - <</if>> - -<<case "lederhosen">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is built into the suspenders of $his outfit. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is built into the suspenders of $his outfit. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his outfit. - <</if>> - -<<case "battledress">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is strapped on top of $his shirt. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His ridiculous corset is strapped on top of $his shirt. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his shirt. - <</if>> - -<<case "harem gauze">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset, though functional, is covered with little bells and charms that glint through the gauze. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corset, though cruelly functional, is covered with little bells and charms that glint through the gauze. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is covered with little bells and charms that glint through the gauze. - <</if>> - -<<case "slutty jewelry">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is $his only real piece of clothing. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corset is $his only real piece of clothing. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is $his only real piece of clothing. - <</if>> - -<<case "a maternity dress">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is hidden by $his blouse. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is hidden by $his blouse. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his blouse. - <</if>> - -<<case "stretch pants and a crop-top">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is completely exposed between $his top and bottom. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is completely exposed between $his top and bottom. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is left completely exposed between $his top and bottom. - <</if>> - -<<case "a nice pony outfit" "a slutty pony outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset compliments $his outfit nicely. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage compliments $his outfit nicely. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden within $his outfit. - <</if>> - -<<case "a tube top and thong" "striped underwear" "leather pants and tube top" "sport shorts and a sports bra" "a slutty klan robe">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is completely exposed between $his top and bottom. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is completely exposed between $his top and bottom. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is completely exposed between $his top and bottom. - <</if>> - -<<case "a bra" "a striped bra" "a sports bra" "a thong" "panties" "a tube top" "a skimpy loincloth" "boyshorts" "cutoffs" "jeans" "sport shorts" "leather pants" "leather pants and a tube top" "leather pants and pasties" "panties and pasties" "pasties">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is completely exposed. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is completely exposed. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is completely exposed. - <</if>> - -<<case "a button-up shirt and panties" "a button-up shirt" "a sweater" "a tank-top" "a sweater and panties" "a t-shirt" "a tank-top and panties" "a t-shirt and thong" "an oversized t-shirt and boyshorts" "an oversized t-shirt" "a t-shirt and jeans" "sport shorts and a t-shirt" "a t-shirt and panties" "a sweater and cutoffs">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His sturdy corset is hidden by $his clothing. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corsetage is hidden by $his clothing. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is hidden by $his clothing. - <</if>> - -<<case "a bimbo outfit">> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is a fun color and compliments $his slutty appearance. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His absurd corset is a fun color and compliments $his slutty appearance. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is a fun color and compliments $his slutty appearance. - <</if>> - -<<default>> - <<if $activeSlave.bellyAccessory == "a corset">> - $His corset is $his only real piece of clothing. - <<elseif $activeSlave.bellyAccessory == "an extreme corset">> - $His extreme corset is $his only real piece of clothing. - <<elseif $activeSlave.bellyAccessory == "a support band">> - $His support band is $his only real piece of clothing. - <</if>> - -<</switch>> -<</widget>> - -<<widget "vaginalAccessoryDescription">> -<</widget>> - -<<widget "vaginalAttachmentDescription">> -<<switch $activeSlave.vaginalAttachment>> -<<case "vibrator">> - /* TODO: not sure about this description */ - $He looks distinctly uncomfortable as $his dildo buzzes every so often. - <<if $activeSlave.chastityVagina>> - The chastity belt locking it in place means there is no escape. - <</if>> - /* TODO: add descriptions for slaves with gaping+ vaginas */ -<<default>> - <<if $activeSlave.vaginalAccessory != "none">> - $His current accessory is silent. - <</if>> -<</switch>> -<</widget>> -