diff --git a/css/gui/tooltips/tippy.css b/css/gui/tooltips/tippy.css index 020f60d5d539062a097b435a48003672c64127a4..0025e60e0503ff55ccc7f55dbe171352cc5ddb24 100644 --- a/css/gui/tooltips/tippy.css +++ b/css/gui/tooltips/tippy.css @@ -1,5 +1,6 @@ .has-tooltip { text-decoration: underline dotted; + white-space: nowrap; } .tippy-content { diff --git a/devTools/javaSanityCheck/excluded b/devTools/javaSanityCheck/excluded index 77372f70251a771e95c1337a2d66e75f3d6f4b8c..a9bc4033967119c6ec2bac63456ad793bc88003f 100644 --- a/devTools/javaSanityCheck/excluded +++ b/devTools/javaSanityCheck/excluded @@ -3,10 +3,8 @@ #O : OnlyUsedOnce, if variables are used more than once #S : SpellCheck, matches based on dictionaries in devTools/ # -src/art/;LO src/gui/svgFilters.tw;L # #JS files, logic won't be checked here anyways -src/js/economyJS.js;S src/data/backwardsCompatibility/datatypeCleanup.js;S js/003-data/miscDataNames.js;S diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js index 0a1b83c17a76b481ac4f84ad1f5dc05288cb91c9..3f1aef12bb84382dc06d4220214cace8e365d821 100644 --- a/js/003-data/policiesData.js +++ b/js/003-data/policiesData.js @@ -1340,7 +1340,7 @@ App.Data.Policies.Selection = { { title: "Invalid Protection Act", titleClass: "lime", - text: "by law, anyone unable to pass a standardized test of intelligence and not already a dependant will be enslaved for their own well being.", + text: "by law, anyone unable to pass a standardized test of intelligence and not already a dependant will be enslaved for their own well-being.", get requirements() { return (V.arcologies[0].FSIntellectualDependency >= 80); }, note: `Will convert some immigrants to menial slaves and give a small boost to reputation` } diff --git a/js/medicine/surgery/assets/breastShapePreservation.js b/js/medicine/surgery/assets/breastShapePreservation.js index 8b3f7e0eaab63efc85f363e227ad5b6126007cea..e8f2ba66e049f0cd8a95683658bc4202e35a0a5f 100644 --- a/js/medicine/surgery/assets/breastShapePreservation.js +++ b/js/medicine/surgery/assets/breastShapePreservation.js @@ -92,7 +92,7 @@ App.Medicine.Surgery.Reactions.BreastShapePreservationFailure = class extends Ap } else { r.push(`${He} bounces a little to feel ${his} tiny breasts move and turns ${his} torso to you with a smile to show them off. ${He}'s still sore, so ${he} doesn't bounce too much.`); } - r.push(`<span class="devotion inc">${He}'s happy with your changes to ${his} boobs</span> and <span class="trust inc">thankful</span> that you'd consider ${his} health, well being and ability to fuck. As with all invasive surgery <span class="health dec">${his} health has been affected.</span>`); + r.push(`<span class="devotion inc">${He}'s happy with your changes to ${his} boobs</span> and <span class="trust inc">thankful</span> that you'd consider ${his} health, well-being, and ability to fuck. As with all invasive surgery <span class="health dec">${his} health has been affected.</span>`); reaction.devotion += 4; reaction.trust += 4; } else if (slave.devotion >= -20) { diff --git a/js/medicine/surgery/assets/mastectomy.js b/js/medicine/surgery/assets/mastectomy.js index f8e9d6adb556355c7a7324fe0f2d80eb92dc47cb..e0579208b06e6fd99214490d63271fe1b576c2e4 100644 --- a/js/medicine/surgery/assets/mastectomy.js +++ b/js/medicine/surgery/assets/mastectomy.js @@ -177,7 +177,7 @@ App.Medicine.Surgery.Reactions.Mastectomy = class extends App.Medicine.Surgery.S } else { r.push(`${He} bounces a little to feel ${his} tiny breasts move and turns ${his} torso to you with a smile to show them off. ${He}'s still sore, so ${he} doesn't bounce too much.`); } - r.push(`<span class="devotion inc">${He}'s happy with your changes to ${his} boobs</span> and <span class="trust inc">thankful</span> that you'd consider ${his} health, well being and ability to fuck. As with all invasive surgery <span class="health dec">${his} health has been affected.</span>`); + r.push(`<span class="devotion inc">${He}'s happy with your changes to ${his} boobs</span> and <span class="trust inc">thankful</span> that you'd consider ${his} health, well-being, and ability to fuck. As with all invasive surgery <span class="health dec">${his} health has been affected.</span>`); reaction.devotion += 4; reaction.trust += 4; } else if (slave.devotion >= -20) { diff --git a/js/medicine/surgery/ears/deafen.js b/js/medicine/surgery/ears/deafen.js index 73b0c4e9cfb4b467492c17c875f362d447062d6f..e8a186574b7f7184e136f6d65290477470a6694e 100644 --- a/js/medicine/surgery/ears/deafen.js +++ b/js/medicine/surgery/ears/deafen.js @@ -12,7 +12,7 @@ App.Medicine.Surgery.Reactions.Deafen = class extends App.Medicine.Surgery.Simpl r.push(`When ${he} finally figures it out, ${he} begins to bawl, not understanding what ${he} did to earn this. After a short expurgation of <span class="trust dec">grief and terror,</span> ${he} takes a deep breath and visibly suppresses ${his} emotions.`); reaction.trust -= 20; } else { - r.push(`When ${he} realizes what's happened, ${his} face <span class="devotion dec">clouds with rage.</span> ${He} begins to peer around, looking for the source of ${his} woes. ${He} finally understands the true use of deafness when ${he} realizes ${he} won't be able to easily tell where you are, or anyone else is for that matter. ${His} well being is now firmly in the hands of someone ${he} distrusts. ${He} begins to <span class="trust dec">shake with fear.</span>`); + r.push(`When ${he} realizes what's happened, ${his} face <span class="devotion dec">clouds with rage.</span> ${He} begins to peer around, looking for the source of ${his} woes. ${He} finally understands the true use of deafness when ${he} realizes ${he} won't be able to easily tell where you are, or anyone else is for that matter. ${His} well-being is now firmly in the hands of someone ${he} distrusts. ${He} begins to <span class="trust dec">shake with fear.</span>`); reaction.trust -= 8; reaction.devotion -= 8; } diff --git a/js/medicine/surgery/eye/blind.js b/js/medicine/surgery/eye/blind.js index cc5f35337e08ff61e5e421dceefbf1f6e9aadeba..68e9f0159dae78da2314637f1c7ff14fefa0490e 100644 --- a/js/medicine/surgery/eye/blind.js +++ b/js/medicine/surgery/eye/blind.js @@ -13,7 +13,7 @@ App.Medicine.Surgery.Reactions.Blind = class extends App.Medicine.Surgery.Simple r.push(`When ${he} finally figures it out, ${he} begins to bawl, not understanding what ${he} did to earn this. After a short expurgation of <span class="trust dec">grief and terror,</span> ${he} takes a deep breath and visibly suppresses ${his} emotions.`); reaction.trust -= 20; } else { - r.push(`When ${he} realizes what's happened, ${his} face <span class="devotion dec">clouds with rage.</span> Reflexively, ${he} begins to peer around, looking for the source of ${his} woes. ${He} finally understands the true use of blindness when ${he} realizes ${he} won't be able to tell where you are, where anyone is, or even where ${he} is. ${His} well being is now firmly in the hands of someone ${he} distrusts. ${He} begins to <span class="trust dec">shake with fear.</span>`); + r.push(`When ${he} realizes what's happened, ${his} face <span class="devotion dec">clouds with rage.</span> Reflexively, ${he} begins to peer around, looking for the source of ${his} woes. ${He} finally understands the true use of blindness when ${he} realizes ${he} won't be able to tell where you are, where anyone is, or even where ${he} is. ${His} well-being is now firmly in the hands of someone ${he} distrusts. ${He} begins to <span class="trust dec">shake with fear.</span>`); reaction.trust -= 8; reaction.devotion -= 8; } diff --git a/js/medicine/surgery/eye/removeEyes.js b/js/medicine/surgery/eye/removeEyes.js index 065c19b55dfd0eddb56f72a663df12ba92bd1bdc..185ec0773a6f4a8e4940d0a2c78e26d9ac1229af 100644 --- a/js/medicine/surgery/eye/removeEyes.js +++ b/js/medicine/surgery/eye/removeEyes.js @@ -13,7 +13,7 @@ App.Medicine.Surgery.Reactions.RemoveEyes = class extends App.Medicine.Surgery.S r.push(`When ${he} realizes why, ${he} begins to bawl, not understanding what ${he} did to earn this. After a short expurgation of <span class="trust dec">grief and terror,</span> ${he} takes a deep breath and visibly suppresses ${his} emotions.`); reaction.trust -= 20; } else { - r.push(`When ${he} realizes what's happened, ${his} face <span class="devotion dec">clouds with rage.</span> Reflexively, ${he} swings ${his} head around, looking for the source of ${his} woes. ${He} finally understands the true use of blindness when ${he} realizes ${he} won't be able to tell where you are, where anyone is, or even where ${he} is. ${His} well being is now firmly in the hands of someone ${he} distrusts. ${He} begins to <span class="trust dec">shake with fear.</span>`); + r.push(`When ${he} realizes what's happened, ${his} face <span class="devotion dec">clouds with rage.</span> Reflexively, ${he} swings ${his} head around, looking for the source of ${his} woes. ${He} finally understands the true use of blindness when ${he} realizes ${he} won't be able to tell where you are, where anyone is, or even where ${he} is. ${His} well-being is now firmly in the hands of someone ${he} distrusts. ${He} begins to <span class="trust dec">shake with fear.</span>`); reaction.trust -= 8; reaction.devotion -= 8; } diff --git a/sanityCheck.sh b/sanityCheck.sh index be825347d967449688397e816e92e00d6d7f56ca..9d2f403dd3ef21a95e6d7050b67c5f3f0dfa4560 100755 --- a/sanityCheck.sh +++ b/sanityCheck.sh @@ -31,7 +31,7 @@ $GREP "<<[ ]*[^\$><_\[]*\(activeSlave\|PC\)[.]" -- "src/*" | myprint "MissingDol # Check for closing bracket without opening bracket. e.g.: <<if foo)>> (but <<case "foo")>> is valid, so ignore those $GREP -e "<<[ a-zA-Z]\+\([^()<>]\|[^()<>][<>][^()<>]\)*)" --and --not -e "<< *case" -- "src/**/*.tw" | myprint "MissingOpeningBracket" # Check for opening bracket without closing bracket. e.g.: <<if (foo>> -$GREP -e "<<[ a-zA-Z]\([^<>]\|[^<>][<>][^<>]\)\+(\([^()<>]\|[^<>()][<>][^<>()]\|([^<>()]*])\)*>>" -- "src/*" | myprint "MissingClosingBracket" +$GREP -e "<<[ a-zA-Z]\([^<>]\|[^<>][<>][^<>]\)\+(\([^()<>]\|[^<>()][<>][^<>()]\|([^<>()]*])\)*>>" -- "src/**/*.tw" | myprint "MissingClosingBracket" # Check for two closing brackets but one opening bracket. e.g.: <<if (foo))>> $GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*)[^()]*)[^()<>]*>>" -- "src/**/*.tw" | myprint "MissingOpeningBracket2" # Check for one closing bracket but two opening brackets. e.g.: <<if ((foo)>> diff --git a/src/endWeek/reports/masterSuiteReport.js b/src/endWeek/reports/masterSuiteReport.js index ece7e1579348577a73a9cf953b7bb5c417390cbe..a7a0e0d895478d02e5840b34790645fb88e8a4ee 100644 --- a/src/endWeek/reports/masterSuiteReport.js +++ b/src/endWeek/reports/masterSuiteReport.js @@ -286,10 +286,10 @@ App.EndWeek.masterSuiteReport = function() { if (V.masterSuiteUpgradePregnancy === 1) { /* If they're not on fertility drugs and the toggle is active, stick them on (if they can take them). Otherwise take them off. */ - if (V.masterSuitePregnancyFertilityDrugs === 1 && slave.drugs !== "fertility drugs" && canGetPregnant(slave)) { - slave.drugs = "fertility drugs"; - } else if (V.masterSuiteHyperPregnancy === 1 && slave.drugs !== "super fertility drugs" && canGetPregnant(slave)) { + if (V.masterSuiteHyperPregnancy === 1 && slave.drugs !== "super fertility drugs" && canGetPregnant(slave)) { slave.drugs = "super fertility drugs"; + } else if (V.masterSuitePregnancyFertilityDrugs === 1 && slave.drugs !== "fertility drugs" && canGetPregnant(slave)) { + slave.drugs = "fertility drugs"; } else if ( ( (V.masterSuitePregnancyFertilityDrugs === 0 && slave.drugs === "fertility drugs") || diff --git a/src/endWeek/saArena.js b/src/endWeek/saArena.js index cf6a84cdadf15a016a09cab18fe720a19cfecd26..1eb188dedfc930acea6adf580f1cd4c6feeee444 100644 --- a/src/endWeek/saArena.js +++ b/src/endWeek/saArena.js @@ -33,7 +33,7 @@ App.SlaveAssignment.arena = function saArena(slave) { if (slave.health.illness < 4) { r.push(`${His} illness is preventing ${him} from doing strenuous exercise, making ${him} focus on theory this week.`); } else { - r.push(`${He} is so ill that ${he} is just laying on the sidelines the whole time.`); + r.push(`${He} is so ill that ${he} is just lying on the sidelines the whole time.`); learningBlocked = true; } } @@ -59,7 +59,7 @@ App.SlaveAssignment.arena = function saArena(slave) { function body() { if (slave.muscles < -30) { - r.push(`${His} frail body prevents ${him} from doing continues training, hampering ${his} progress.`); + r.push(`${His} frail body prevents ${him} from doing continuous training, hampering ${his} progress.`); skillIncrease -= 1; } else if ( slave.muscles > 30) { diff --git a/src/endWeek/saClothes.js b/src/endWeek/saClothes.js index b110fdce3e27809804179bc05cf24032ab5ebc3f..5269ecd65078d6b51489a23ea20fb1c74c028afe 100644 --- a/src/endWeek/saClothes.js +++ b/src/endWeek/saClothes.js @@ -1252,7 +1252,7 @@ App.SlaveAssignment.clothes = function saClothes(slave) { if (slave.anus < 4) { if (slave.fuckdoll === 0 && slave.fetish !== Fetish.MINDBROKEN) { if (slave.sexualQuirk === "size queen") { - r.push(`${He} thinks of the horribly huge tailed plug ${he} has wear in ${his} butt as <span class="lime">preparation for the biggest cocks,</span> and <span class="hotpink">looks forward</span> to being able to safely take unlubricated anal from them. Even so, the tail hanging from ${his} rear is <span class="gold">a constant degrading reminder of ${his} submission.</span>`); + r.push(`${He} thinks of the horribly huge tailed plug ${he} has to wear in ${his} butt as <span class="lime">preparation for the biggest cocks,</span> and <span class="hotpink">looks forward</span> to being able to safely take unlubricated anal from them. Even so, the tail hanging from ${his} rear is <span class="gold">a constant degrading reminder of ${his} submission.</span>`); slave.devotion += 4; slave.trust -= 5; } else if (slave.fetish === Fetish.MASOCHIST && slave.fetishKnown === 1 && slave.fetishStrength > 60) { @@ -1304,7 +1304,7 @@ App.SlaveAssignment.clothes = function saClothes(slave) { if (slave.anus < 4) { if (slave.fuckdoll === 0 && slave.fetish !== Fetish.MINDBROKEN) { if (slave.sexualQuirk === "size queen") { - r.push(`${He} thinks of the horribly huge plug ${he} has wear in ${his} butt as <span class="lime">preparation for the biggest cocks,</span> and <span class="hotpink">looks forward</span> to being able to safely take unlubricated anal from them.`); + r.push(`${He} thinks of the horribly huge plug ${he} has to wear in ${his} butt as <span class="lime">preparation for the biggest cocks,</span> and <span class="hotpink">looks forward</span> to being able to safely take unlubricated anal from them.`); slave.devotion += 4; } else if (slave.fetish === Fetish.MASOCHIST && slave.fetishKnown === 1 && slave.fetishStrength > 60) { r.push(`${He} gets off on the agony of having ${his} anal sphincter`); diff --git a/src/events/RESS/languageLesson.js b/src/events/RESS/languageLesson.js index e5e308abba2ea2f44ef450bcbdf4f713c2946568..4ebf111de258777d8220246399273a75512bf4de 100644 --- a/src/events/RESS/languageLesson.js +++ b/src/events/RESS/languageLesson.js @@ -283,7 +283,7 @@ App.Events.RESSLanguageLesson = class RESSLanguageLesson extends App.Events.Base r.push(`to repetition of`); r.push(Spoken(eventSlave, `"Intercourse, sex, unh, fucking, breeding, um, mounting,"`)); const Orgasm = Spoken(eventSlave, "Orgasm"); - r.push(`and so on. Just when the eavesdropping ${girlU} decides that this might be too salicious for ${hisU} well being and turns to go about ${hisU} business, ${eventSlave.slaveName}'s voice rises sharply in pitch. "Aaah! <span class="trust inc">${Orgasm}!</span>`); + r.push(`and so on. Just when the eavesdropping ${girlU} decides that this might be too salacious for ${hisU} well-being and turns to go about ${hisU} business, ${eventSlave.slaveName}'s voice rises sharply in pitch. "Aaah! <span class="trust inc">${Orgasm}!</span>`); r.push(Spoken(eventSlave, `Oh ${Master}, ohh, orgasm, orgasm,"`)); r.push(`followed by much breathless repetition of what's about to come, and a final, ecstatic`); r.push(Spoken(eventSlave, `"C-creampie!"`)); diff --git a/src/events/RESS/retchingCum.js b/src/events/RESS/retchingCum.js index 4f50c973ff1b48a11c51a052c2c73aca4c59264f..cef9c3ebe7e7a4dd86cadca514ba37763b298fbf 100644 --- a/src/events/RESS/retchingCum.js +++ b/src/events/RESS/retchingCum.js @@ -76,7 +76,7 @@ App.Events.RESSRetchingCum = class RESSRetchingCum extends App.Events.BaseEvent eventSlave.devotion -= 5; eventSlave.trust += 5; eventSlave.dietCum = 0; - return `You see how ${eventSlave.slaveName} is suffering and you decide to reconsider ${his} dietary prescription. You instruct ${V.assistant.name} to change ${eventSlave.slaveName}'s diet to exclude cum for now. Slaves who can't eat are unhealthy, and unhealthy slaves are unprofitable slaves. ${He} is now <span class="mediumorchid">more confident that ${he} can resist you and get ${his} way,</span> ${he} also <span class="mediumaquamarine">trusts you a little more</span> to look after ${his} well being.`; + return `You see how ${eventSlave.slaveName} is suffering and you decide to reconsider ${his} dietary prescription. You instruct ${V.assistant.name} to change ${eventSlave.slaveName}'s diet to exclude cum for now. Slaves who can't eat are unhealthy, and unhealthy slaves are unprofitable slaves. ${He} is now <span class="mediumorchid">more confident that ${he} can resist you and get ${his} way,</span> ${he} also <span class="mediumaquamarine">trusts you a little more</span> to look after ${his} well-being.`; } function heavy() { eventSlave.devotion -= 3; diff --git a/src/events/RESS/review/tittymonsterInspection.js b/src/events/RESS/review/tittymonsterInspection.js index c1003fe3bef85c109acbb4509c27143ebddc5ae3..e4b8f0e63ae1a1b20afaac322c7de6937109058b 100644 --- a/src/events/RESS/review/tittymonsterInspection.js +++ b/src/events/RESS/review/tittymonsterInspection.js @@ -60,17 +60,17 @@ App.Events.RESSTittymonsterInspection = class RESSTittymonsterInspection extends } r.push(`and legs hidden, ${he} appears to consist of a`); if (eventSlave.face > 95) { - r.push(`gorgeous,`); + r.push(`gorgeous`); } else if (eventSlave.face > 50) { - r.push(`beautiful,`); + r.push(`beautiful`); } else if (eventSlave.face >= 10) { - r.push(`pretty,`); + r.push(`pretty`); } else if (eventSlave.face >= 0) { - r.push(`nice,`); + r.push(`nice`); } else { - r.push(`homely,`); + r.push(`homely`); } - r.push(`${eventSlave.faceShape} face, a`); + r.addToLast(`${eventSlave.faceShape !== "normal" ? `, ${eventSlave.faceShape}` : ``} face, a`); if (eventSlave.collar === "none") { r.push(`bare`); } else { diff --git a/src/events/nonRandom/rival/pRivalryActions.js b/src/events/nonRandom/rival/pRivalryActions.js index 4d21a3303466f9a933ed5c03c504c832969ca461..03d1efafd092d7f5c8a5d79d20246eb781245141 100644 --- a/src/events/nonRandom/rival/pRivalryActions.js +++ b/src/events/nonRandom/rival/pRivalryActions.js @@ -3562,19 +3562,23 @@ App.Events.pRivalryActions = function() { arc.rival = 0; arc.government = "direct democracy"; if (rivalCaptured) { - V.rival.state = 3; if (arc.FSSupremacist > 20) { + // @ts-ignore V.rival.race = arc.FSSupremacistRace; } else if (arc.FSSubjugationist > 20) { V.rival.race = Array.from(App.Data.misc.filterRacesPublic.keys()).filter(race => race !== arc.FSSubjugationistRace).random(); } - } else { - V.rival.state = 4; } break; } } } + if (rivalCaptured) { + V.rival.state = 3; + } else { + V.rival.state = 4; + } + if (V.rival.hostageState === 1) { r.push(`${V.assistant.name} pauses. "Also confirm package is secure."`); V.rival.hostageState = 2; diff --git a/src/events/reRecruit/schoolSale.js b/src/events/reRecruit/schoolSale.js index 8f97e9887895158765059ee3d741bc82f01f8168..5524a4b5d6ec47c151397f3a9894e79cb5cafe8d 100644 --- a/src/events/reRecruit/schoolSale.js +++ b/src/events/reRecruit/schoolSale.js @@ -88,7 +88,9 @@ App.Events.recSchoolSale = class recSchoolSale extends App.Events.BaseEvent { slave.skill.vaginal = 0; slave.skill.oral = 0; slave.skill.anal = 0; - slave.hStyle = "long and in twin schoolgirl tails"; + slave.hLength = 5 * random(10, 18); // 50-90cm + slave.hStyle = "tails"; // custom hairstyle replaced with dictionary item, original dummied out for record-keeping + // slave.hStyle = "long and in twin schoolgirl tails"; slave.pubicHStyle = "waxed"; slave.underArmHStyle = "waxed"; slave.birthWeek = 0; diff --git a/src/events/reRecruit/schoolTrap.js b/src/events/reRecruit/schoolTrap.js index e74c65a5dedf1ee5d3c88785b76c22a0538a1d7b..bec8e04c9ba490cb11ad9894c71d8ee282633358 100644 --- a/src/events/reRecruit/schoolTrap.js +++ b/src/events/reRecruit/schoolTrap.js @@ -88,7 +88,9 @@ App.Events.recSchoolTrap = class recSchoolTrap extends App.Events.BaseEvent { slave.clit = 0; slave.skill.oral = 0; slave.skill.anal = 0; - slave.hStyle = "long and in twin schoolgirl tails"; + slave.hLength = 5 * random(10, 18); // 50-90cm + slave.hStyle = "tails"; // custom hairstyle replaced with dictionary item, original dummied out for record-keeping + // slave.hStyle = "long and in twin schoolgirl tails"; slave.pubicHStyle = "waxed"; slave.underArmHStyle = "waxed"; slave.pubertyXY = 0; diff --git a/src/events/recFS/recfsPastoralistTwo.js b/src/events/recFS/recfsPastoralistTwo.js index 128971114480ff836df1d5ebe610dbc96918ea6c..1d8e4692be444b32476bb1481828106ccc3be984 100644 --- a/src/events/recFS/recfsPastoralistTwo.js +++ b/src/events/recFS/recfsPastoralistTwo.js @@ -64,7 +64,7 @@ App.Events.recFSPastoralistTwo = class recFSPastoralistTwo extends App.Events.Ba function enslave() { const frag = new DocumentFragment(); r = []; - r.push(`${He} speaks to you as a free ${woman} while working through the enslavement process, perhaps ${he} hasn't quite grasped ${his} new role. Nonetheless, it seems as if a vast weight has been lifted from ${his} shoulders. You've seen this before, the perverse internal freedom that comes with the knowledge that ${his} life is in the hands of another now, and that all ${he} has to do or can do is obey. ${His} last words to you as a free ${woman} are an ironic statement that, people always praised ${his} milk-filled udders as givers of life, yet ${he} never thought they'd save ${hers} one day.`); + r.push(`${He} speaks to you as a free ${woman} while working through the enslavement process, perhaps ${he} hasn't quite grasped ${his} new role. Nonetheless, it seems as if a vast weight has been lifted from ${his} shoulders. You've seen this before, the perverse internal freedom that comes with the knowledge that ${his} life is in the hands of another now, and that all ${he} has to do or can do is obey. ${His} last words to you as a free ${woman} are an ironic statement that, while people always praised ${his} milk-filled udders as givers of life, ${he} never thought they'd save ${hers} one day.`); r.push(App.UI.newSlaveIntro(slave)); App.Events.addParagraph(frag, r); diff --git a/src/gui/Encyclopedia/encyclopediaSlaves.js b/src/gui/Encyclopedia/encyclopediaSlaves.js index da73f16fc198295e22650cf1578d56ad016a89ba..468615007371ea1c5f08ae5face6e196149cef81 100644 --- a/src/gui/Encyclopedia/encyclopediaSlaves.js +++ b/src/gui/Encyclopedia/encyclopediaSlaves.js @@ -25,7 +25,7 @@ App.Encyclopedia.addArticle("Demand for Sex", function() { App.Encyclopedia.addArticle("Living Conditions", function() { const f = new DocumentFragment(); - App.Events.addParagraph(f, ["Slaves can be assigned different living conditions which affect their mental state and well being. Some Facilities may overwrite manually set living conditions."]); + App.Events.addParagraph(f, ["Slaves can be assigned different living conditions which affect their mental state and well-being. Some Facilities may overwrite manually set living conditions."]); const dl = document.createElement("dl"); App.Events.addNode(dl, ["<dt>Spare</dt><dd>The cheapest and the default but may cause some issues.</dd>"], ); diff --git a/src/markets/marketUI.js b/src/markets/marketUI.js index 66291e9f0a0041552c8cd9e4cbe881253c3b3b4f..066f9ac62cb7ec9a2c096295b702cf971bc7b879 100644 --- a/src/markets/marketUI.js +++ b/src/markets/marketUI.js @@ -98,7 +98,10 @@ App.Markets.purchaseFramework = function(slaveMarket, {sTitleSingular = "slave", V.nextButton = "Continue"; V.returnTo = "Main"; student(); - jQuery("#slave-markets").empty().append(App.UI.newSlaveIntro(slave)); + jQuery("#slave-markets").empty().append( + App.Desc.longSlave(slave, {market: slaveMarket}), + App.UI.newSlaveIntro(slave) + ); }, ) ); diff --git a/src/npc/interaction/fondleBoobs.js b/src/npc/interaction/fondleBoobs.js index 81f815f9ba15af99290d3cd6499cf03967f01926..7d5b96aa815a229e2751e77a46c60baf2c55666a 100644 --- a/src/npc/interaction/fondleBoobs.js +++ b/src/npc/interaction/fondleBoobs.js @@ -160,13 +160,13 @@ App.Interact.fondleBoobs = function(slave) { if (slave.lactation > 0) { r.push(`milky`); } - r.push(`nipples with your thumbs and fingers and tweak them in your fingertips, then you dab ${his} nipples with your thumbs, flicking them in different directions. ${He} moans at your playing with ${his} breasts, ${He} rubs ${himself} while you do, getting intensely aroused at the expert way you move around ${his} tits and nipples. You continue, rolling ${his} ${slave.nipples} nipples between your fingers and thumbs while ${he} gets increasingly frenzied at the continued stimulation. When it seems like ${he}'s close, you give them a hard pull, sending ${him} gasping over the edge of ecstasy.`); + r.push(`nipples with your thumbs and fingers and tweak them in your fingertips, then you dab ${his} nipples with your thumbs, flicking them in different directions. ${He} moans at your playing with ${his} breasts, rubbing ${himself} while you do, growing intensely aroused at the expert way you move around ${his} tits and nipples. You continue, rolling ${his} ${slave.nipples} nipples between your fingers and thumbs while ${he} gets increasingly frenzied at the continued stimulation. When it seems like ${he}'s close, you give them a hard pull, sending ${him} gasping over the edge of ecstasy.`); } else { r.push(`Then you alternate, gently probing the depths of the other nipple. You dig deep into both ${his} breasts, teasing what was once the tips of ${his}`); if (slave.lactation > 0) { r.push(`milky`); } - r.push(`nipples with your fingers before vigorously fingering ${his} tits. ${He} moans at your playing with ${his} breasts, ${He} rubs ${himself} while you do, getting intensely aroused at the expert way you move around ${his} tits and nipples. You continue, adding more fingers into ${his} ${slave.nipples} nipples while ${he} gets increasingly frenzied at the continued stimulation. When it seems like ${he}'s close, you cram your whole fist in, sending ${him} gasping over the edge of ecstasy.`); + r.push(`nipples with your fingers before vigorously fingering ${his} tits. ${He} moans at your playing with ${his} breasts, rubbing ${himself} while you do, growing intensely aroused at the expert way you move around ${his} tits and nipples. You continue, adding more fingers into ${his} ${slave.nipples} nipples while ${he} gets increasingly frenzied at the continued stimulation. When it seems like ${he}'s close, you cram your whole fist in, sending ${him} gasping over the edge of ecstasy.`); } } else if (slave.devotion > 50 && slave.fetish === "dom" && slave.fetishKnown === 1 && slave.fetishStrength > 60) { r.push(`${He} eagerly comes over to you, puffing ${his} chest out at you. When you place your hands on ${his}`); @@ -380,9 +380,9 @@ App.Interact.fondleBoobs = function(slave) { } r.push(`at you longingly, hungry for more.`); } else if (slave.devotion > 50) { - r.push(`${He} devotedly comes over to you, to stand between you and your desk. ${His} doting`); + r.push(`${He} devotedly comes over to you, to stand between you and your desk, ${his} doting`); r.push(App.Desc.eyesColor(slave)); - r.push(`looking in yours. You place your hands on ${his}`); + r.push(`gazing deep into yours. You place your hands on ${his}`); if (slave.boobs >= 20000) { r.push(`colossal tits, before sinking your body into their immense softness,`); } else if (slave.boobs >= 10000) { diff --git a/src/npc/interaction/passage/fSlaveSlaveAss.js b/src/npc/interaction/passage/fSlaveSlaveAss.js index a91fed705032ce9461158fa5369b9b7890b45e33..7f86dfd0301be0155a98db2d84228e3619b1c5bc 100644 --- a/src/npc/interaction/passage/fSlaveSlaveAss.js +++ b/src/npc/interaction/passage/fSlaveSlaveAss.js @@ -354,7 +354,7 @@ App.Interact.fSlaveSlaveAss = function(slave, rapist) { } r.push(`into place. ${slave.slaveName} does ${his} best to hump ${himself} against the unwilling cock until you deal ${rapist.slaveName} a terrific swat across the ass and promise to give ${him2} more of the same until ${he2} gets going. ${He2} is still unenthusiastic, so you have ${him2} lie down and have ${slave.slaveName} ride ${himself} to orgasm. ${He2} resents what you made ${him2} do and fears you'll force ${him2} to do it again. Though ${slave.slaveName} accepts the situation, ${he} looks into ${rapist.slaveName}'s eyes with obvious apology.`); } else if (rapist.fetish === "dom" && rapist.fetishStrength > 20 && rapist.devotion > 20) { - r.push(`${slave.slaveName} is tied and placed on the bed with ${his} asshole defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected ${rapist.slaveName} that ${he2} is quite eager to rape another slave for ${his2} pleasure. ${He2} penetrates ${him} immediately, fondling, pinching and licking while pistoning away, fully enjoying ${his2} dominant role, edging ${his2} poor toy again and again and making ${him} beg for release.`); + r.push(`${slave.slaveName} is tied and placed on the bed with ${his} asshole defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected ${rapist.slaveName} that ${he2} is quite eager to rape another slave for ${his2} pleasure. ${He2} penetrates ${him} immediately, fondling, pinching, and licking while pistoning away, fully enjoying ${his2} dominant role, edging ${his2} poor toy again and again and making ${him} beg for release.`); if (slave.fetish === "dom") { if (slave.devotion < -20) { r.push(`By the end of the day ${slave.slaveName}'s abused backdoor is`); diff --git a/src/npc/interaction/passage/fSlaveSlaveDick.js b/src/npc/interaction/passage/fSlaveSlaveDick.js index 6d1cd239955f048ffe1df9bf53bd435f8a7aafa5..052d40a0171527959170d0713c4e8dc94a79a8d1 100644 --- a/src/npc/interaction/passage/fSlaveSlaveDick.js +++ b/src/npc/interaction/passage/fSlaveSlaveDick.js @@ -917,7 +917,7 @@ App.Interact.fSlaveSlaveDick = function(slave, rapist) { rapist.vagina = 1; rapist.fetishStrength += 1; } - r.push(`${He2} begins playing with ${him2} immediately, fondling, pinching and licking while bouncing on the meaty shaft. Occasionally ${he2} stops, denying ${slave.slaveName} release and teasing ${him}, fully enjoying ${his2} dominant role.`); + r.push(`${He2} begins playing with ${him} immediately, fondling, pinching, and licking while bouncing on the meaty shaft. Occasionally ${he2} stops, denying ${slave.slaveName} release and teasing ${him}, fully enjoying ${his2} dominant role.`); if (slave.dick > 0) { if (slave.fetish === Fetish.SUBMISSIVE) { r.push(`By the end of the session ${slave.slaveName}'s abused, pent-up penis has shot a massive load into ${rapist.slaveName}'s welcoming pussy. ${He} is glad to be dominated.`); diff --git a/src/npc/interaction/passage/fSlaveSlaveVag.js b/src/npc/interaction/passage/fSlaveSlaveVag.js index 98421890dba761f521b5b0162b61b7139746dde9..4c5eb5c5ec6a7b183bd906188049b18647d6bc46 100644 --- a/src/npc/interaction/passage/fSlaveSlaveVag.js +++ b/src/npc/interaction/passage/fSlaveSlaveVag.js @@ -365,7 +365,7 @@ App.Interact.fSlaveSlaveVag = function(slave, rapist) { } r.push(`into place. ${slave.slaveName} does ${his} best to hump ${himself} against the unwilling cock until you deal ${rapist.slaveName} a terrific swat across the ass and promise to give ${him2} more of the same until ${he2} gets going. ${He2} is still unenthusiastic, so you have ${him2} lie down and have ${slave.slaveName} ride ${himself} to orgasm. ${He2} resents what you made ${him2} do and fears you'll force ${him2} to do it again. Though ${slave.slaveName} accepts the situation, ${he} looks into ${rapist.slaveName}'s eyes with obvious apology.`); } else if (rapist.fetish === "dom" && rapist.fetishStrength > 20 && rapist.devotion > 20) { - r.push(`${slave.slaveName} is tied and placed on the bed with ${his} pussy defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected ${rapist.slaveName} that ${he2} is quite eager to rape another slave for ${his2} pleasure. ${He2} penetrates ${him} immediately, fondling, pinching and licking while pistoning away, fully enjoying ${his2} dominant role, edging ${his2} poor toy again and again and making ${him} beg for release.`); + r.push(`${slave.slaveName} is tied and placed on the bed with ${his} pussy defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected ${rapist.slaveName} that ${he2} is quite eager to rape another slave for ${his2} pleasure. ${He2} penetrates ${him} immediately, fondling, pinching, and licking while pistoning away, fully enjoying ${his2} dominant role, edging ${his2} poor toy again and again and making ${him} beg for release.`); if (slave.fetish === "dom") { if (slave.devotion < -20) { r.push(`By the end of the day ${slave.slaveName}'s abused cunt is`);