diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js index c30f98f32aba47512e6cd03f82298d631dc70d65..3382b650eb3b52cee6acdd73ec56733b78f00f5f 100644 --- a/src/npc/generate/newSlaveIntro.js +++ b/src/npc/generate/newSlaveIntro.js @@ -1,8 +1,9 @@ /** * * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState} [slave2] */ -App.UI.newSlaveIntro = function(slave) { +App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) { const desc = SlaveTitle(slave); const {title: Master} = getEnunciation(slave); const { @@ -228,12 +229,12 @@ App.UI.newSlaveIntro = function(slave) { slave.origRace = slave.race; } if (slave.race !== slave.origRace) { - r.push(`A blood test reveals that ${he} was originally ${slave.origRace}, not slave.race ${(V.PC.skill.medicine >= 50 || V.PC.skill.slaving >= 50) ? `, just as you suspected`:``}.`); + r.push(`A blood test reveals that ${he} was originally ${slave.origRace}, not slave.race ${(V.PC.skill.medicine >= 50 || V.PC.skill.slaving >= 50) ? `, just as you suspected` : ``}.`); } } if (slave.skin !== slave.origSkin) { if (slave.skin !== "sun tanned" && slave.skin !== "spray tanned") { - r.push(`An epidermis scan reveals that ${his} skin was originally ${slave.origSkin}, not slave.skin${(V.PC.skill.medicine >= 75 || V.PC.skill.slaving >= 75)?`, just as you suspected`:``}.`); + r.push(`An epidermis scan reveals that ${his} skin was originally ${slave.origSkin}, not slave.skin${(V.PC.skill.medicine >= 75 || V.PC.skill.slaving >= 75) ? `, just as you suspected` : ``}.`); } } @@ -421,10 +422,10 @@ App.UI.newSlaveIntro = function(slave) { if (V.PC.boobs >= 1400) { if (slave.fetish === "boobs") { if (slave.fetishKnown === 0) { - r.push(`${He} keeps stealing glances at your huge rack${canAchieveErection(slave)?`, ${his} dick rapidly hardening`:``}. You stretch ${(canSee(slave)) ? `, giving ${him} a fantastic view of your breasts,`: ``} before circling around behind ${him} and cupping ${his} chest. Between your tits against ${his} back, and how teasingly big you are pretending ${his} breasts will be, ${he} can't contain ${himself}; ${he} cums from overstimulation, completely pinning ${him} <span class="green">as a breast fetishist!</span>`); + r.push(`${He} keeps stealing glances at your huge rack${canAchieveErection(slave) ? `, ${his} dick rapidly hardening` : ``}. You stretch ${(canSee(slave)) ? `, giving ${him} a fantastic view of your breasts,` : ``} before circling around behind ${him} and cupping ${his} chest. Between your tits against ${his} back, and how teasingly big you are pretending ${his} breasts will be, ${he} can't contain ${himself}; ${he} cums from overstimulation, completely pinning ${him} <span class="green">as a breast fetishist!</span>`); slave.fetishKnown = 1; } else { - r.push(`${He} keeps stealing glances at your huge rack${(canAchieveErection(slave)) ? `, ${his} dick rapidly hardening`:``}. As you inspect ${him}, you take care to keep "accidentally" bumping ${him} with your tits, before "tripping" and landing with ${his} face buried in your chest. ${He} is practically bursting with lust by the end and <span class="hotpink">eager to please you</span> so ${he} can be close to those boobs.`); + r.push(`${He} keeps stealing glances at your huge rack${(canAchieveErection(slave)) ? `, ${his} dick rapidly hardening` : ``}. As you inspect ${him}, you take care to keep "accidentally" bumping ${him} with your tits, before "tripping" and landing with ${his} face buried in your chest. ${He} is practically bursting with lust by the end and <span class="hotpink">eager to please you</span> so ${he} can be close to those boobs.`); slave.devotion += 5; } } @@ -873,7 +874,7 @@ App.UI.newSlaveIntro = function(slave) { linkName: `Brand ${him} on the ${brandTarget} to introduce ${him} to life as a slave whore`, result: function(slave) { const r = []; - r.push(`You tell ${him} you'll be marking ${him} as one of your working ${girl}s. ${He} looks resigned as ${he} follows you to the body modification studio, and lets you strap ${him} down with ${his} ${brandTarget} bare. ${He} understands what's coming. You've got ${him} positioned just right${canDoAnal(slave) ? `, so your cock slides up ${his} experienced asshole easily`:``}. You bring the brand in close so ${he} can feel the radiated heat, which breaks through even ${his} jaded exterior and makes ${him} tighten with fear. When you're close, you apply the brand${canDoAnal(slave) ? `, making the poor whore cinch ${his} sphincter down hard in agony, bringing you to climax`:``}. ${He} knows you know how to <span class="gold">apply pain,</span> now, and ${he} <span class="mediumorchid">learns to dislike you</span> even as ${his} <span class="red">wound</span> heals.`); + r.push(`You tell ${him} you'll be marking ${him} as one of your working ${girl}s. ${He} looks resigned as ${he} follows you to the body modification studio, and lets you strap ${him} down with ${his} ${brandTarget} bare. ${He} understands what's coming. You've got ${him} positioned just right${canDoAnal(slave) ? `, so your cock slides up ${his} experienced asshole easily` : ``}. You bring the brand in close so ${he} can feel the radiated heat, which breaks through even ${his} jaded exterior and makes ${him} tighten with fear. When you're close, you apply the brand${canDoAnal(slave) ? `, making the poor whore cinch ${his} sphincter down hard in agony, bringing you to climax` : ``}. ${He} knows you know how to <span class="gold">apply pain,</span> now, and ${he} <span class="mediumorchid">learns to dislike you</span> even as ${his} <span class="red">wound</span> heals.`); if (canDoAnal(slave)) { r.push(VCheck.Anal()); } @@ -1256,7 +1257,7 @@ App.UI.newSlaveIntro = function(slave) { linkName: `Make sure ${he} enjoys ${his} first anal sex`, result: function(slave) { const r = []; - r.push(`You introduce ${him} to obedience and proper manners regarding ${his} ${WrittenMaster(slave)} before sending ${him} off for a physical. That night, ${he}'s returned to your room, and finds you doing business on a tablet in bed. ${He} looks doubtful, but obeys when you direct ${him} to get into bed${(V.PC.dick === 0) ? `, even after ${he} realizes you're wearing a strap-on`: ``}. You turn out the light and spoon ${him} from behind, kissing ${his} neck and ears, cupping ${his} swollen breasts, and running your hands across ${his} pregnant belly with its taut ${slave.skin} skin. ${He}'s awkward at first but ${his} body responds to the tenderness. Before long ${he}'s humping ${his} pussy back and forth against`); + r.push(`You introduce ${him} to obedience and proper manners regarding ${his} ${WrittenMaster(slave)} before sending ${him} off for a physical. That night, ${he}'s returned to your room, and finds you doing business on a tablet in bed. ${He} looks doubtful, but obeys when you direct ${him} to get into bed${(V.PC.dick === 0) ? `, even after ${he} realizes you're wearing a strap-on` : ``}. You turn out the light and spoon ${him} from behind, kissing ${his} neck and ears, cupping ${his} swollen breasts, and running your hands across ${his} pregnant belly with its taut ${slave.skin} skin. ${He}'s awkward at first but ${his} body responds to the tenderness. Before long ${he}'s humping ${his} pussy back and forth against`); if (V.PC.dick !== 0) { r.push(`your cock.`); } else { @@ -1386,67 +1387,65 @@ App.UI.newSlaveIntro = function(slave) { case "$He was recruited into your service by $his older sibling.": choice({ get introText() { - const {sisterU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U'); - return `and since ${he} was recruited by ${his} older ${sisterU}...`; + const {sister2} = getPronouns(slave2).appendSuffix('2'); + return `and since ${he} was recruited by ${his} older ${sister2}...`; }, get linkName() { - const {sisterU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U'); - return `Use ${his} big ${sisterU} as an example`; + const {sister2} = getPronouns(slave2).appendSuffix('2'); + return `Use ${his} big ${sister2} as an example`; }, result: function(slave) { const r = []; - const {He2, he2, his2, him2, sister2} = getNonlocalPronouns(V.seeDicks).appendSuffix('2'); - r.push(`Your new slave appears`); + const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2'); + r.push(`Your new slave appears `); if (slave.devotion < -10) { r.push(`reluctant to assume ${his} new duties.`); } else { r.push(`unsure what ${his} new duties are.`); } - r.push(`You gesture towards ${slave.slaveName}. ${He2} is`); - if (slave.intelligence + slave.intelligenceImplant > 15) { + r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `); + if (slave2.intelligence + slave2.intelligenceImplant > 15) { r.push(`bright enough`); - } else if (((slave.skill.vaginal + slave.skill.anal + slave.skill.oral) > 100)) { + } else if ((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100) { r.push(`skilled enough`); } else { r.push(`obedient enough`); } - r.push(`to understand you mean a demonstration is in order. ${slave.slaveName} starts things off with a`); - if (slave.skill.entertainment >= 100) { + r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `); + if (slave2.skill.entertainment >= 100) { r.push(`masterful`); - } else if (slave.skill.entertainment > 10) { + } else if (slave2.skill.entertainment > 10) { r.push(`skillful`); } else { r.push(`passable`); } - r.push(`striptease, culminating in ${him2}`); - if (slave.anus > 0 && slave.fetish !== "cumslut") { + r.push(` striptease, culminating in ${him2} `); + if (slave2.anus > 0 && slave2.fetish !== "cumslut") { r.push(`bending over`); } else { r.push(`kneeling`); } - r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your`); - if (slave.energy > 95) { - r.push(`seed like the slut ${he2} is.`); - } else if (slave.skill.whoring > 30) { - r.push(`seed like the whore ${he2} is.`); - } else if ((slave.assignment === "serve in the master suite") || (slave.assignment === "please you")) { - r.push(`seed like the fucktoy ${he2} is.`); - } else { - r.push(`seed.`); + r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`); + if (slave2.energy > 95) { + r.push(` like the slut ${he2} is`); + } else if (slave2.skill.whoring > 30) { + r.push(` like the whore ${he2} is`); + } else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) { + r.push(` like the fucktoy ${he2} is`); } - r.push(`As you finish, ${he2}`); - if (slave.fetish === "cumslut") { - r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again.`); - } else if ((slave.fetish === "buttslut") || (slave.fetish === "submissive")) { - r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`); + r.push(`. As you finish, ${he2} `); + if (slave2.fetish === "cumslut") { + r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`); + } else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) { + r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`); } else { - r.push(`thanks you.`); + r.push(`thanks you`); } - r.push(`Witnessing this display of servitude from ${his} big ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); + r.push(`. Witnessing this display of servitude from ${his} big _sister2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); if (slave.anus > 0 && slave.fetish !== "cumslut") { - actX(slave, "anal"); + actX(slave2, "anal"); } else { - actX(slave, "oral"); + actX(slave2, "oral"); } slave.devotion += 4; slave.trust += 4; @@ -1457,67 +1456,64 @@ App.UI.newSlaveIntro = function(slave) { case "$He was recruited into your service by $his younger sibling.": choice({ get introText() { - const {sisterU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U'); - return `and since ${he} was recruited by ${his} younger ${sisterU}...`; + const {sister2} = getPronouns(slave2).appendSuffix('2'); + return `and since ${he} was recruited by ${his} younger ${sister2}...`; }, get linkName() { - const {sisterU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U'); - return `"Use ${his} little ${sisterU} as an example`; + const {sister2} = getPronouns(slave2).appendSuffix('2'); + return `"Use ${his} little ${sister2} as an example`; }, result: function(slave) { const r = []; - const {He2, he2, his2, him2, sister2} = getNonlocalPronouns(V.seeDicks).appendSuffix('2'); - r.push(`Your new slave appears`); + const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2'); + r.push(`Your new slave appears `); if (slave.devotion < -10) { - r.push(`reluctant to assume ${his} new duties.`); + r.push(`reluctant to assume ${his} new duties`); } else { - r.push(`unsure what ${his} new duties are.`); + r.push(`unsure what ${his} new duties are`); } - r.push(`You gesture towards ${slave.slaveName}. ${He2} is`); - if (slave.intelligence + slave.intelligenceImplant > 15) { + r.push(`. You gesture towards ${slave2.slaveName}. ${He2} is `); + if (slave2.intelligence + slave2.intelligenceImplant > 15) { r.push(`bright enough`); - } else if (((slave.skill.vaginal + slave.skill.anal + slave.skill.oral) > 100)) { + } else if (((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100)) { r.push(`skilled enough`); } else { r.push(`obedient enough`); } - r.push(`to understand you mean a demonstration is in order. ${slave.slaveName} starts things off with a`); - if (slave.skill.entertainment >= 100) { + r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `); + if (slave2.skill.entertainment >= 100) { r.push(`masterful`); - } else if (slave.skill.entertainment > 10) { + } else if (slave2.skill.entertainment > 10) { r.push(`skillful`); } else { r.push(`passable`); } - r.push(`striptease, culminating in ${him2}`); - if (slave.anus > 0 && slave.fetish !== "cumslut") { + r.push(` striptease, culminating in ${him2} `); + if (slave2.anus > 0 && slave2.fetish !== "cumslut") { r.push(`bending over`); } else { r.push(`kneeling`); } - r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your`); - if (slave.energy > 95) { - r.push(`seed like the slut ${he2} is.`); - } else if (slave.skill.whoring > 30) { - r.push(`seed like the whore ${he2} is.`); - } else if ((slave.assignment === "serve in the master suite") || (slave.assignment === "please you")) { - r.push(`seed like the fucktoy ${he2} is.`); - } else { - r.push(`seed.`); + r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`); + if (slave2.energy > 95) { + r.push(` like the slut ${he2} is`); + } else if (slave2.skill.whoring > 30) { + r.push(` like the whore ${he2} is`); + } else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) { + r.push(` like the fucktoy ${he2} is`); } - r.push(`As you finish, ${he2}`); - if (slave.fetish === "cumslut") { - r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again.`); - } else if ((slave.fetish === "buttslut") || (slave.fetish === "submissive")) { - r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`); + r.push(`. As you finish, ${he2} `); + if (slave2.fetish === "cumslut") { + r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`); + } else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) { + r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`); } else { - r.push(`thanks you.`); + r.push(`thanks you`); } - r.push(`Witnessing this display of servitude from ${his} little ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); - if (slave.anus > 0 && slave.fetish !== "cumslut") { - actX(slave, "anal"); + r.push(`. Witnessing this display of servitude from ${his} little _sister2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); if (slave.anus > 0 && slave.fetish !== "cumslut") { + actX(slave2, "anal"); } else { - actX(slave, "oral"); + actX(slave2, "oral"); } slave.devotion += 4; slave.trust += 4; @@ -1529,63 +1525,61 @@ App.UI.newSlaveIntro = function(slave) { choice({ introText: `and since ${he} was recruited by ${his} twin...`, get linkName() { - const {sisterU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U'); - return `"Use ${his} ${sisterU} as an example`; + const {sister2} = getPronouns(slave2).appendSuffix('2'); + return `"Use ${his} ${sister2} as an example`; }, result: function(slave) { const r = []; - const {He2, he2, his2, him2, sister2} = getNonlocalPronouns(V.seeDicks).appendSuffix('2'); - r.push(`Your new slave appears`); + const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2'); + r.push(`Your new slave appears `); if (slave.devotion < -10) { r.push(`reluctant to assume ${his} new duties.`); } else { r.push(`unsure what ${his} new duties are.`); } - r.push(`You gesture towards ${slave.slaveName}. ${He2} is`); - if (slave.intelligence + slave.intelligenceImplant > 15) { + r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `); + if (slave2.intelligence + slave2.intelligenceImplant > 15) { r.push(`bright enough`); - } else if ((slave.skill.vaginal + slave.skill.anal + slave.skill.oral) > 100) { + } else if (((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100)) { r.push(`skilled enough`); } else { r.push(`obedient enough`); } - r.push(`to understand you mean a demonstration is in order. ${slave.slaveName} starts things off with a`); - if (slave.skill.entertainment >= 100) { + r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `); + if (slave2.skill.entertainment >= 100) { r.push(`masterful`); - } else if (slave.skill.entertainment > 10) { + } else if (slave2.skill.entertainment > 10) { r.push(`skillful`); } else { r.push(`passable`); } - r.push(`striptease, culminating in ${him2}`); - if (slave.anus > 0 && slave.fetish !== "cumslut") { + r.push(` striptease, culminating in ${him2} `); + if (slave2.anus > 0 && slave2.fetish !== "cumslut") { r.push(`bending over`); } else { r.push(`kneeling`); } - r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your`); - if (slave.energy > 95) { - r.push(`seed like the slut ${he2} is.`); - } else if (slave.skill.whoring > 30) { - r.push(`seed like the whore ${he2} is.`); - } else if ((slave.assignment === "serve in the master suite") || (slave.assignment === "please you")) { - r.push(`seed like the fucktoy ${he2} is.`); - } else { - r.push(`seed.`); + r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`); + if (slave2.energy > 95) { + r.push(` like the slut ${he2} is`); + } else if (slave2.skill.whoring > 30) { + r.push(` like the whore ${he2} is`); + } else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) { + r.push(` like the fucktoy ${he2} is`); } - r.push(`As you finish, ${he2}`); - if (slave.fetish === "cumslut") { + r.push(`. As you finish, ${he2} `); + if (slave2.fetish === "cumslut") { r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`); - } else if ((slave.fetish === "buttslut") || (slave.fetish === "submissive")) { - r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`); + } else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) { + r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`); } else { - r.push(`thanks you.`); + r.push(`thanks you`); } - r.push(`Witnessing this display of servitude from ${his} twin ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); + r.push(`. Witnessing this display of servitude from ${his} twin _sister2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); if (slave.anus > 0 && slave.fetish !== "cumslut") { - actX(slave, "anal"); + actX(slave2, "anal"); } else { - actX(slave, "oral"); + actX(slave2, "oral"); } slave.devotion += 4; slave.trust += 4; @@ -1599,58 +1593,56 @@ App.UI.newSlaveIntro = function(slave) { linkName: `Use ${his} parent as an example`, result: function(slave) { const r = []; - const {He2, he2, his2, him2} = getNonlocalPronouns(V.seeDicks).appendSuffix('2'); - r.push(`You gesture towards ${slave.slaveName}. ${He2} is`); - if (slave.intelligence + slave.intelligenceImplant > 15) { + const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2'); + r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `); + if (slave2.intelligence + slave2.intelligenceImplant > 15) { r.push(`bright enough`); - } else if (((slave.skill.vaginal + slave.skill.anal + slave.skill.oral) > 100)) { + } else if ((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100) { r.push(`skilled enough`); } else { r.push(`obedient enough`); } - r.push(`to understand you mean a demonstration is in order. ${slave.slaveName} starts things off with a`); - if (slave.skill.entertainment >= 100) { + r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `); + if (slave2.skill.entertainment >= 100) { r.push(`masterful`); - } else if (slave.skill.entertainment > 10) { + } else if (slave2.skill.entertainment > 10) { r.push(`skillful`); } else { r.push(`passable`); } - r.push(`striptease, culminating in ${him2}`); - if (slave.anus > 0 && slave.fetish !== "cumslut") { + r.push(` striptease, culminating in ${him2} `); + if (slave2.anus > 0 && slave2.fetish !== "cumslut") { r.push(`bending over`); } else { r.push(`kneeling`); } - r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your`); - if (slave.energy > 95) { - r.push(`seed like the slut ${he2} is.`); - } else if (slave.skill.whoring > 30) { - r.push(`seed like the whore ${he2} is.`); - } else if ((slave.assignment === "serve in the master suite") || (slave.assignment === "please you")) { - r.push(`seed like the fucktoy ${he2} is.`); - } else { - r.push(`seed.`); + r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`); + if (slave2.energy > 95) { + r.push(` like the slut ${he2} is`); + } else if (slave2.skill.whoring > 30) { + r.push(` like the whore ${he2} is`); + } else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) { + r.push(` like the fucktoy ${he2} is`); } - r.push(`As you finish, ${he2}`); - if (slave.fetish === "cumslut") { + r.push(`. As you finish, ${he2} `); + if (slave2.fetish === "cumslut") { r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`); - } else if ((slave.fetish === "buttslut") || (slave.fetish === "submissive")) { - r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`); + } else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) { + r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`); } else { - r.push(`thanks you.`); + r.push(`thanks you`); } - r.push(`Witnessing this display of servitude from ${his}`); - if (slave.mother === slave.ID) { + r.push(`. Witnessing this display of servitude from ${his} `); + if (slave.mother === slave2.ID) { r.push(`mother`); } else { r.push(`father`); } - r.push(`<span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); + r.push(` <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); if (slave.anus > 0 && slave.fetish !== "cumslut") { - actX(slave, "anal"); + actX(slave2, "anal"); } else { - actX(slave, "oral"); + actX(slave2, "oral"); } slave.devotion += 4; slave.trust += 4; @@ -1661,57 +1653,55 @@ App.UI.newSlaveIntro = function(slave) { case "$He was recruited into your service by $his child.": choice({ get introText() { - const {daughterU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U'); - return `and since ${he} was recruited by ${his} ${daughterU}...`; + const {daughter2} = getPronouns(slave2).appendSuffix('2'); + return `and since ${he} was recruited by ${his} ${daughter2}...`; }, get linkName() { - const {daughterU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U'); - return `Use ${his} ${daughterU} as an example`; + const {daughter2} = getPronouns(slave2).appendSuffix('2'); + return `Use ${his} ${daughter2} as an example`; }, result: function(slave) { const r = []; - const {He2, he2, his2, him2, daughter2} = getNonlocalPronouns(V.seeDicks).appendSuffix('2'); - r.push(`You gesture towards ${slave.slaveName}. ${He2} is`); - if (slave.intelligence + slave.intelligenceImplant > 15) { + const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2'); + r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `); + if (slave2.intelligence + slave2.intelligenceImplant > 15) { r.push(`bright enough`); - } else if (((slave.skill.vaginal + slave.skill.anal + slave.skill.oral) > 100)) { + } else if (((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100)) { r.push(`skilled enough`); } else { r.push(`obedient enough`); } - r.push(`to understand you mean a demonstration is in order. ${slave.slaveName} starts things off with a`); - if (slave.skill.entertainment >= 100) { + r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `); + if (slave2.skill.entertainment >= 100) { r.push(`masterful`); - } else if (slave.skill.entertainment > 10) { + } else if (slave2.skill.entertainment > 10) { r.push(`skillful`); } else { r.push(`passable`); } - r.push(`striptease, culminating in ${him2}`); - if (slave.anus > 0 && slave.fetish !== "cumslut") { + r.push(` striptease, culminating in ${him2} `); + if (slave2.anus > 0 && slave2.fetish !== "cumslut") { r.push(`bending over`); } else { r.push(`kneeling`); } - r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your`); - if (slave.energy > 95) { - r.push(`seed like the slut ${he2} is.`); - } else if (slave.skill.whoring > 30) { - r.push(`seed like the whore ${he2} is.`); - } else if ((slave.assignment === "serve in the master suite") || (slave.assignment === "please you")) { - r.push(`seed like the fucktoy ${he2} is.`); - } else { - r.push(`seed.`); + r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`); + if (slave2.energy > 95) { + r.push(` like the slut ${he2} is`); + } else if (slave2.skill.whoring > 30) { + r.push(` like the whore ${he2} is`); + } else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) { + r.push(` like the fucktoy ${he2} is`); } - r.push(`As you finish, ${he2}`); - if (slave.fetish === "cumslut") { + r.push(`. As you finish, ${he2} `); + if (slave2.fetish === "cumslut") { r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`); - } else if ((slave.fetish === "buttslut") || (slave.fetish === "submissive")) { - r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`); + } else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) { + r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`); } else { - r.push(`thanks you.`); + r.push(`thanks you`); } - r.push(`Witnessing this display of servitude from ${his} ${daughter2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); + r.push(`. Witnessing this display of servitude from ${his} _daughter2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); if (slave.anus > 0 && slave.fetish !== "cumslut") { actX(slave, "anal"); } else { @@ -1735,7 +1725,7 @@ App.UI.newSlaveIntro = function(slave) { if (V.PC.dick === 0) { r.push(`fake`); } - r.push(`cock down ${his} throat as far as it will go. Over the course of the next several hours, you ensure that ${he} understands the fine points of nonconsensual oral${slave.vagina > -1 ? `, vaginal,`: ``} and anal intercourse as intimately as possible. When you're finally too tired to continue,you unshackle ${his} <span class="red">bruised and bloody body</span> and ask ${him} what ${he} learned. ${His} voice hoarse from the same brutal fucking that has gaped ${his} <span class="lime">asshole</span> ${(slave.vagina > -1) ? `and <span class="lime">pussy</span>`: ``}, ${he} hesitantly replies that ${he} has <span class="hotpink">learned a great deal about true dominance,</span> before fainting on the spot from a mixture of total exhaustion and pure terror. You've taught your student well.`); + r.push(`cock down ${his} throat as far as it will go. Over the course of the next several hours, you ensure that ${he} understands the fine points of nonconsensual oral${slave.vagina > -1 ? `, vaginal,` : ``} and anal intercourse as intimately as possible. When you're finally too tired to continue,you unshackle ${his} <span class="red">bruised and bloody body</span> and ask ${him} what ${he} learned. ${His} voice hoarse from the same brutal fucking that has gaped ${his} <span class="lime">asshole</span> ${(slave.vagina > -1) ? `and <span class="lime">pussy</span>` : ``}, ${he} hesitantly replies that ${he} has <span class="hotpink">learned a great deal about true dominance,</span> before fainting on the spot from a mixture of total exhaustion and pure terror. You've taught your student well.`); actX(slave, "oral", 15); slave.anus = 2; actX(slave, "anal", 15); @@ -2132,7 +2122,7 @@ App.UI.newSlaveIntro = function(slave) { } else { r.push(`womb`); } - r.push(`and ovaries are extracted${canSee(slave)?`before ${his} eyes`:``}.`); + r.push(`and ovaries are extracted${canSee(slave) ? `before ${his} eyes` : ``}.`); if (slave.fetish === "pregnancy" && slave.pregKnown === 1) { if ((slave.preg > slave.pregData.normalBirth / 1.6) && (canSee(slave))) { @@ -2183,7 +2173,7 @@ App.UI.newSlaveIntro = function(slave) { if (slave.scrotum > 0) { r.push(`face-down with ${his}`); if (hasAnyLegs(slave)) { - r.push(`${hasBothLegs(slave) ? `legs`:`leg`} spread.`); + r.push(`${hasBothLegs(slave) ? `legs` : `leg`} spread.`); } else { r.push(`testicles exposed.`); } @@ -2938,7 +2928,7 @@ App.UI.newSlaveIntro = function(slave) { linkName: `Make sure ${he} knows pregnant women can still enjoy sex`, result(slave) { const r = []; - r.push(`You introduce ${him} to obedience and proper manners regarding ${his} ${WrittenMaster(slave)} before sending ${him} off for a physical.That night, ${he} 's returned to your room, and finds you doing business on a tablet in bed. ${He} looks doubtful, but obeys when you direct ${him} to get into bed${V.PC.dick === 0 ? `, even after ${he} realizes you're wearing a strap-on`: ``}. You turn out the light and spoon ${him} from behind, kissing ${his} neck and ears, cupping ${his} swollen breasts, and running your hands across ${his} pregnant belly with its taut ${slave.skin} skin. ${He}'s awkward at first but ${his} body responds to the tenderness. Before long ${he}'s humping ${his} pussy back and forth against`); + r.push(`You introduce ${him} to obedience and proper manners regarding ${his} ${WrittenMaster(slave)} before sending ${him} off for a physical.That night, ${he} 's returned to your room, and finds you doing business on a tablet in bed. ${He} looks doubtful, but obeys when you direct ${him} to get into bed${V.PC.dick === 0 ? `, even after ${he} realizes you're wearing a strap-on` : ``}. You turn out the light and spoon ${him} from behind, kissing ${his} neck and ears, cupping ${his} swollen breasts, and running your hands across ${his} pregnant belly with its taut ${slave.skin} skin. ${He}'s awkward at first but ${his} body responds to the tenderness. Before long ${he}'s humping ${his} pussy back and forth against`); if (V.PC.dick !== 0) { r.push(`your cock.`); } else { @@ -2950,7 +2940,7 @@ App.UI.newSlaveIntro = function(slave) { } else { r.push(`its tip`); } - r.push(`up ${his} used pussy. ${He}'s unsure of ${himself}, but you keep ${him} nice and relaxed. After several minutes of gentle loving, ${he}'s nothing but a satisfied puddle in your arms. ${He} believes that ${he} can <span class="mediumaquamarine">trust</span> you won't harm ${him} or ${his} ${(slave.pregType === 1)?`child`:`children`}.`); + r.push(`up ${his} used pussy. ${He}'s unsure of ${himself}, but you keep ${him} nice and relaxed. After several minutes of gentle loving, ${he}'s nothing but a satisfied puddle in your arms. ${He} believes that ${he} can <span class="mediumaquamarine">trust</span> you won't harm ${him} or ${his} ${(slave.pregType === 1) ? `child` : `children`}.`); slave.trust += 5; r.push(VCheck.Vaginal()); @@ -3067,7 +3057,7 @@ App.UI.newSlaveIntro = function(slave) { } else if (slave.dick === 6) { r.push(`You grin sadistically at ${him} as ${his} massive dick fills both of your hands.`); } - r.push(`As ${he} begins to moan with lust, you grip down tightly and force ${him} to the floor. You straddle ${him} and lower your dripping pussy onto ${his} face${V.PC.dick !== 0 ? `, your erect cock coming to rest on ${his} forehead`: ``}. You continue stroking your toy's rod as ${he} eagerly begins eating you out. As ${his} cock begins to throb, anticipating ${his} upcoming orgasm, you quickly bind the base of ${his} penis, denying ${his} release. You grind your cunt into ${his} face, telling ${him} that YOU are the one who'll be orgasming here, not ${him}. Only once you have initiated the new slave by soaking ${his} face in your cum do you release ${his} dick and lean back to avoid the coming blast. A few strokes later and your hand is coated in ${his} cum. You turn around and order the exhausted ${girl} to clean ${his} cum off your hand`); + r.push(`As ${he} begins to moan with lust, you grip down tightly and force ${him} to the floor. You straddle ${him} and lower your dripping pussy onto ${his} face${V.PC.dick !== 0 ? `, your erect cock coming to rest on ${his} forehead` : ``}. You continue stroking your toy's rod as ${he} eagerly begins eating you out. As ${his} cock begins to throb, anticipating ${his} upcoming orgasm, you quickly bind the base of ${his} penis, denying ${his} release. You grind your cunt into ${his} face, telling ${him} that YOU are the one who'll be orgasming here, not ${him}. Only once you have initiated the new slave by soaking ${his} face in your cum do you release ${his} dick and lean back to avoid the coming blast. A few strokes later and your hand is coated in ${his} cum. You turn around and order the exhausted ${girl} to clean ${his} cum off your hand`); if (V.PC.dick !== 0) { r.push(`and to finish off ${his} twitching dick`); } @@ -3095,7 +3085,7 @@ App.UI.newSlaveIntro = function(slave) { } r.push(`until ${he} has no choice but to be pushed to the ground. Standing over ${him}, staring ${him} down as ${he} peeks around your firm globe of a middle, you order ${him} to worship your pregnancy.`); if (slave.fetish === "pregnancy") { - r.push(`${He} complies eagerly. ${He} begins with sucking your popped navel before running ${his} tongue across the taut, smooth surface of your pregnancy. Once ${he} has finished with your belly, ${he} lowers ${himself} under it to begin work on your needy pussy. Before long, ${his} overzealous efforts have you quaking in pleasure, rousing your ${(V.PC.pregType === 1) ?`child`:`children`}. Once ${he} finishes you off, ${he} returns to rubbing your belly, soothing your rowdy child`); + r.push(`${He} complies eagerly. ${He} begins with sucking your popped navel before running ${his} tongue across the taut, smooth surface of your pregnancy. Once ${he} has finished with your belly, ${he} lowers ${himself} under it to begin work on your needy pussy. Before long, ${his} overzealous efforts have you quaking in pleasure, rousing your ${(V.PC.pregType === 1) ? `child` : `children`}. Once ${he} finishes you off, ${he} returns to rubbing your belly, soothing your rowdy child`); if (V.PC.pregType > 1) { r.push(`ren`); } @@ -3679,7 +3669,7 @@ App.UI.newSlaveIntro = function(slave) { linkName: `Fill ${him} with cum`, result(slave) { const r = []; - r.push(`You securely restrain your new slave${(V.dairyRestraintsSetting > 1)?`in a milking stall`:``}. A quick finger check of ${his} holes allows you to choose wisely from a selection of hollow phalluses, which push into your helpless new slave's mouth,`); + r.push(`You securely restrain your new slave${(V.dairyRestraintsSetting > 1) ? `in a milking stall` : ``}. A quick finger check of ${his} holes allows you to choose wisely from a selection of hollow phalluses, which push into your helpless new slave's mouth,`); actX(slave, "oral"); if (slave.vagina > 0) { r.push(`vagina,`); @@ -3873,7 +3863,7 @@ App.UI.newSlaveIntro = function(slave) { if (slave.vagina > -1) { r.push(`and triple`); } - r.push(`penetration. By nighttime ${he}'s properly prepared to take ${V.dairyName}'s giant phalli, and you're bored, so you consign ${him} to ${his} fate. ${He} might have some opinion on how ${he}'s spent ${his} day, but it's unlikely ${he}'ll remember it by tomorrow, what with the forearm-sized dildos sliding in and out of ${his} throat${(slave.vagina > -1) ? `, cunt,`: ``} and asshole.`); + r.push(`penetration. By nighttime ${he}'s properly prepared to take ${V.dairyName}'s giant phalli, and you're bored, so you consign ${him} to ${his} fate. ${He} might have some opinion on how ${he}'s spent ${his} day, but it's unlikely ${he}'ll remember it by tomorrow, what with the forearm-sized dildos sliding in and out of ${his} throat${(slave.vagina > -1) ? `, cunt,` : ``} and asshole.`); return r.join(" "); }, @@ -4094,7 +4084,7 @@ App.UI.newSlaveIntro = function(slave) { } else { r.push(S.HeadGirl.slaveName); } - r.push(`to get ${slave.slaveName} set up in ${V.arcadeName}. The new slave does not know what V.arcadeName is, not really, and ${he} doesn't know what being set up there means, either. ${He}'ll be confined inside a small space, not too different from the indignities ${he}'s suffered already. It's only when the restraints lock into place that ${he}'ll understand ${his} doom. ${His} mouth will be forced open and presented at one wall of V.arcadeName, and ${his} ass will protrude from its other side, ${his} holes available for public relief at both ends. ${He}'ll probably refuse to believe the truth, until the first cockhead enters ${his} mouth${(slave.vagina > -1) ? `, parts ${his} pussylips,`: ``} or presses against ${his} poor anus.`); + r.push(`to get ${slave.slaveName} set up in ${V.arcadeName}. The new slave does not know what V.arcadeName is, not really, and ${he} doesn't know what being set up there means, either. ${He}'ll be confined inside a small space, not too different from the indignities ${he}'s suffered already. It's only when the restraints lock into place that ${he}'ll understand ${his} doom. ${His} mouth will be forced open and presented at one wall of V.arcadeName, and ${his} ass will protrude from its other side, ${his} holes available for public relief at both ends. ${He}'ll probably refuse to believe the truth, until the first cockhead enters ${his} mouth${(slave.vagina > -1) ? `, parts ${his} pussylips,` : ``} or presses against ${his} poor anus.`); if (V.arcade <= App.Entity.facilities.arcade.employeesIDs().size) { r.push(`Mere`); if (V.showInches === 2) {