diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js index 5de638689bbe0965067f80bf8a33f66536eaf1c1..4a4ca2ce51e19436162190c5d271a922d0526811 100644 --- a/src/endWeek/reports/penthouseReport.js +++ b/src/endWeek/reports/penthouseReport.js @@ -619,7 +619,7 @@ App.EndWeek.penthouseReport = function() { slave.navelPiercing = 0; } else { if (V.arcologies[0].FSDegradationist !== "unset") { - r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} has the slave's navel pierced with a big ring. Whatever ${he2} thinks in ${his2} mind, S.HeadGirl.slaveName makes clear to ${him2} that ${his2} body belongs to you.`); + r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} has the slave's navel pierced with a big ring. Whatever ${he2} thinks in ${his2} mind, ${S.HeadGirl.slaveName} makes clear to ${him2} that ${his2} body belongs to you.`); } else { r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} has the slave's navel pierced. The prettier ${his2} lower half looks, the less reluctant ${he2} should feel to take it up the butt.`); } diff --git a/src/events/PE/pePitFight.js b/src/events/PE/pePitFight.js index 51190b054508b7e3851c02d92d242e0eb6365b63..bdfffc9d0aae3adb34e9a2b5ec0f935e675f1ac5 100644 --- a/src/events/PE/pePitFight.js +++ b/src/events/PE/pePitFight.js @@ -235,7 +235,7 @@ App.Events.PEPitFight = class PEPitFight extends App.Events.BaseEvent { slave.counter.pitKills += 1; V.pitKillsTotal += 1; } else if (deadlinessValue > (opponent)) { - r.push(`The combat is long and exhausting. ${slave.slaveName} and ${his} opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-life-threatening cuts. Finally, slave.slaveName's superior physical condition wins out and ${his} opponent falls from exhaustion and blood loss. slave.slaveName stumbles over to open${hisU} throat. This victory has <span class="reputation inc">won you some renown</span> and <span class="cash inc">a sum of money</span> from each of the spectators, though`); + r.push(`The combat is long and exhausting. ${slave.slaveName} and ${his} opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-life-threatening cuts. Finally, ${slave.slaveName}'s superior physical condition wins out and ${his} opponent falls from exhaustion and blood loss. ${slave.slaveName} stumbles over to open ${hisU} throat. This victory has <span class="reputation inc">won you some renown</span> and <span class="cash inc">a sum of money</span> from each of the spectators, though`); repX(500, "pit", slave); cashX(5000, "pit", slave); damage = 50; diff --git a/src/events/RE/reAnalPunishment.js b/src/events/RE/reAnalPunishment.js new file mode 100644 index 0000000000000000000000000000000000000000..46de3561dd38908cf895fb3b8a6361cda292d274 --- /dev/null +++ b/src/events/RE/reAnalPunishment.js @@ -0,0 +1,179 @@ +App.Events.REAnalPunishment = class REAnalPunishment extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.HeadGirlID !== 0, + () => V.HGSeverity >= 0 + ]; + } + + actorPrerequisites() { + return [[ + (s) => s.devotion <= 50, + (s) => s.anus !== 0, + (s) => s.fetish !== "mindbroken", + canDoAnal, + hasAnyLegs, + hasAnyArms, + canTalk, + ]]; + } + + execute(node) { + let r = []; + const slave = getSlave(this.actors[0]); + + V.nextButton = "Continue"; + V.nextLink = "Next Week"; + + const { + He, His, + he, his, him, himself, girl, woman + } = getPronouns(slave); + + const {title: Master} = getEnunciation(slave); + + const { + He2, + he2, his2, him2, himself2 + } = getPronouns(S.HeadGirl).appendSuffix("2"); + + App.Events.drawEventArt(node, [slave, S.HeadGirl], "no clothing"); + + r.push( + `As you're making the rounds through your penthouse, you hear ${S.HeadGirl.slaveName} speaking in the tones ${he2} uses to castigate misbehaving slaves in the next room. When you appear in the doorway, you have little chance to survey the situation before`, + App.UI.DOM.combineNodes( + contextualIntro(S.HeadGirl, slave, "DOM"), + `, apparently the miscreant, flings ${himself} at your feet. ${He} clings to one of your legs convulsively, choking on tears as ${he} stares up at you and tries to muster an explanation. After two false starts, ${he} manages to start begging.` + ), + Spoken(slave, `"Please, ${Master},"`), + `${he} wails miserably.`, + Spoken(slave, `"Please don't let ${him2} rape my butt."`) + ); + + App.Events.addParagraph(node, r); + r = []; + r.push(`You shoot an amused glance at ${S.HeadGirl.slaveName}, who smiles back as ${he2} explains the slave's minor sin and ${his2} intention to sodomize the malefactor. ${He2} does not bother to keep an edge of anticipation out of ${his2} voice, and ${slave.slaveName} cries harder and clings to you with renewed force as your Head Girl pronounces ${his2} intention with cruel clarity.`); + if (slave.boobs > 4000) { + r.push(`The supplicant's breasts are so huge that ${his} embrace of your leg has completely surrounded it in deliciously heaving breastflesh.`); + } else if (slave.boobs > 1000) { + r.push(`The weight of the supplicant's breasts is quite noticeable as ${his} embrace of your leg presses them against it.`); + } + r.push(`You look down at ${slave.slaveName}. ${He} stares back with huge wet ${App.Desc.eyesColor(slave)}, doing ${his} best to implore you with ${his} gaze, and scooting ${his} rear in towards your foot in an unconscious effort to protect it from the promised assrape. ${He}'s quite authentically terrified; ${his} whole body is shaking.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`${S.HeadGirl.slaveName} is very much acting within ${his2} duties, and ${slave.slaveName} has now misbehaved twice by trying to go over your Head Girl's head by appealing to you. ${S.HeadGirl.slaveName} is ready to carry out the sentence: `); + if (canPenetrate(S.HeadGirl) && (S.HeadGirl.dick > 2)) { + r.push(`${his2} cock is fully erect, and ${he2}'s keeping it hard with one hand. ${He2} slaps its head against ${his2} other palm,`); + } else if (S.HeadGirl.dick > 0) { + r.push(`since ${his2} dick isn't an appropriate instrument for inflicting anal pain, ${he2}'s got an elephantine dildo ready. ${He2} slaps it against ${his2} palm,`); + } else { + r.push(`${He2}'s got an elephantine dildo ready, and ${he2} slaps it against ${his2} palm,`); + } + r.push(`forcing a frightened moan from ${slave.slaveName}.`); + + App.Events.addParagraph(node, r); + + const choices = []; + choices.push(new App.Events.Result(`Carry on`, carryOn)); + choices.push(new App.Events.Result(`Take part`, takePart)); + choices.push(new App.Events.Result(`Take pity`, takePity)); + App.Events.addResponses(node, choices); + + function carryOn() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You ignore ${slave.slaveName} — no small feat, since the poor`); + if (slave.physicalAge > 30) { + r.push(`${woman}`); + } else { + r.push(`${girl}`); + } + r.push(`is clinging to your leg — and tell ${S.HeadGirl.slaveName} to carry on. Your Head Girl <span class="trust inc">puffs up a bit with pride,</span> and orders the weeping slave to present ${his} anus. The ${(slave.physicalAge > 30) ? woman : girl} does not resist, but nor does ${he} comply. ${S.HeadGirl.slaveName} jabs a thumb into ${slave.slaveName}'s side, right above ${his} kidney, driving the wind out of the slave with a pained grunt. ${He} arches ${his} back involuntarily and ${his} grip on you loosens, and ${S.HeadGirl.slaveName} drags ${him} off you. ${He2} jabs ${him} again, depriving ${his2} victim of breath completely, and then takes ${him2} by the ankle, dragging the slave across the floor with comic effect. The slave leaves a trail of tears across the flooring as ${he} vanishes into the room. As you continue making your rounds, you hear a drawn-out howl followed by rhythmic screaming.`); + slave.counter.anal += 1; + V.analTotal += 1; + S.HeadGirl.trust += 4; + S.HeadGirl.counter.penetrative += 1; + V.penetrativeTotal += 1; + + App.Events.addParagraph(frag, r); + return frag; + } + + function takePart() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You explain ${slave.slaveName}'s double crime to ${him}, and tell ${S.HeadGirl.slaveName} to get started. Your Head Girl orders the weeping slave to present ${his} anus. The ${(slave.physicalAge > 30) ? woman : girl} does not resist, but nor does ${he} comply. ${S.HeadGirl.slaveName} jabs a thumb into ${slave.slaveName}'s side, right above ${his} kidney, driving the wind out of the slave with a pained grunt. ${He} arches ${his} back involuntarily and ${his} grip on you loosens, so${S.HeadGirl.slaveName} drags ${him} off you, telling ${slave.slaveName} that it'll hurt less if ${he} cooperates and assumes the proper position. ${He} doesn't, so ${S.HeadGirl.slaveName} assfucks ${him} lying flat on the floor, with the poor ${girl} sobbing loudly as ${S.HeadGirl.slaveName}`); + if (canPenetrate(S.HeadGirl) && (S.HeadGirl.dick > 2)) { + r.push(`pistons ${his2} cock in and out of ${his} rectum.`); + } else { + r.push(`rams the massive dildo up ${his} butt.`); + } + App.Events.addParagraph(frag, r); + r = []; + r.push(`After enjoying the spectacle for a while, you judge that the slave's sphincter is loose enough and tell ${S.HeadGirl.slaveName} to flip the bitch over. <span class="devotion inc">${He2} obeys, chuckling,</span> sitting ${himself2} down and hauling the reluctant slave onto ${his2} lap by seizing a nipple and pulling it into position so the agonized slave is forced to follow.`); + if (canPenetrate(S.HeadGirl) && (S.HeadGirl.dick > 2)) { + r.push(`${S.HeadGirl.slaveName} reinserts ${his2} dick, `); + } else { + r.push(`${S.HeadGirl.slaveName} maneuvers the dildo down over ${his2} own crotch, approximating the position of a natural cock and using its base to stimulate ${himself2}. ${He2} reinserts it,`); + } + r.push(`intentionally missing twice to keep the experience unpleasant despite ${his2} victim's well-fucked backdoor.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`${slave.slaveName}, now facing upward rather than having ${his} face ground into the floor, notices for the first time that`); + if (V.PC.dick !== 0) { + r.push(`you've got your dick out and hard.`); + } else { + r.push(`you've donned one of your punishment-sized strap-ons.`); + } + r.push(`${His} ${App.Desc.eyesColor(slave)} <span class="trust dec">fly open with horror</span> as you kneel down and smack its head against ${his}`); + if (slave.vagina > -1) { + r.push(`poor pussy,`); + } else { + r.push(`stretched taint,`); + } + r.push( + `but ${he} doesn't realize how comprehensively fucked ${he} is until you press it against the top of ${his} already-stretched anal sphincter.`, + Spoken(slave, `"Please no, ${Master}! It won't fit! Please ${(slave.vagina > 0) ? "put it in my pussy" : "let me suck it"} instead,"`), + `${he} begs desperately.`, + Spoken(slave, `"I p-promise I'll be a g-good`), + ); + if (girl === "girl") { + r.push(Spoken(slave, `giiAAIIEEHH,"`)); + } else if (girl === "boy") { + r.push(Spoken(slave, `boAAIIEEHH,"`)); + } else if (girl === "toy") { + r.push(Spoken(slave, `toAAIIEEHH,"`)); + } else { + r.push(Spoken(slave, `slaAAIIEEHH,"`)); + } + r.push( + `${he} howls. ${He} gasps for air, tears streaming down ${his} ${slave.skin} cheeks, and then continues:`, + Spoken(slave, `"AAAH! FUCK! TAKE IT OUUUT! N-NOOO, PLEASE DON'T THRUST — AAAH! AAAH! AAAH!"`) + ); + + seX(slave, "anal", S.HeadGirl, "penetrative"); + S.HeadGirl.devotion += 4; + slave.trust -= 5; + + App.Events.addParagraph(frag, r); + return frag; + } + + function takePity() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You tell ${S.HeadGirl.slaveName} you've decided to be merciful, just this once. ${slave.slaveName} holds your leg even harder, <span class="trust inc">sobbing ${his} thanks</span> over and over until you reach down, pat ${his} head, and tell ${him} it will be all right, calming the hysterical`); + if (slave.physicalAge > 30) { + r.push(`${woman}.`); + } else { + r.push(`${girl}.`); + } + r.push(`${S.HeadGirl.slaveName}, meanwhile, stammers an apology. ${He2} hurries about ${his2} business, <span class="trust dec">badly puzzled</span> and more than a little shaken. ${He2} thought ${he2} had the authority to anally rape misbehaving slaves, but ${he2}'s no longer so sure of ${his2} rights and responsibilities.`); + slave.trust += 4; + S.HeadGirl.trust -= 15; + + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/RE/reRelationshipAdvice.js b/src/events/RE/reRelationshipAdvice.js new file mode 100644 index 0000000000000000000000000000000000000000..126f914f5710ee40efce36001636081c848d7ed5 --- /dev/null +++ b/src/events/RE/reRelationshipAdvice.js @@ -0,0 +1,324 @@ +App.Events.RERelationshipAdvice = class RERelationshipAdvice extends App.Events.BaseEvent { + actorPrerequisites() { + return[[ + (s) => s.fetish !== "mindbroken", + hasAnyArms, + hasAnyLegs, + canTalk, + (s) => s.assignment !== Job.QUARTER, + (s) => s.relationship >= 2, + (s) => s.relationship < 5, + (s) => s.devotion > 20, + (s) => s.trust >= -20 + ]]; + } + + execute(node) { + const r = []; + + V.nextButton = "Continue"; + V.nextLink = "Next Week"; + + const slave = getSlave(this.actors[0]); + const relSlave = getSlave(slave.relationshipTarget); + + const { + He, + he, his, him, himself, girl + } = getPronouns(slave); + const {title: Master} = getEnunciation(slave); + + const { + He2, + he2, his2, him2, hers2, woman2, wife2, girl2, + } = getPronouns(relSlave).appendSuffix("2"); + + App.Events.drawEventArt(node, [slave, relSlave], "no clothing"); + + r.push( + App.UI.DOM.slaveDescriptionDialog(slave), + `is standing for an inspection. ${He}'s a good ${girl}, and is cooperating, but ${he} seems preoccupied. After ignoring it for a while, you give in to curiosity and flatly ask ${him} what's going on.`, + Spoken(slave, `"I'm sorry, ${Master},"`), + `${he}` + ); + if (SlaveStatsChecker.checkForLisp(slave)) { + r.push(`lisps,`); + } else { + r.push(`mutters,`); + } + r.push( + `biting ${his} lip.`, + Spoken(slave, `"It's`), + App.UI.DOM.combineNodes( // TODO: how the heck would we get them to lisp the name + App.UI.DOM.slaveDescriptionDialog(relSlave), + `."` + ), + ); + r.push(`${He} hesitates, so you prompt ${him}, asking if ${he}'s having trouble with ${his}`); + if (slave.relationship === 2) { + r.push(`friend.`); + } else if (slave.relationship === 3) { + r.push(`friend with benefits.`); + } else if (slave.relationship === 4) { + r.push(`lover.`); + } + r.push( + `${He} quickly shakes ${his} head no.`, + Spoken(slave, `"N-no, ${Master}, it's just —"`), + `${He} subsides into silence again, blushing and staring` + ); + if (!canSee(slave)) { + r.push(`blankly`); + } + if (hasBothLegs(slave)) { + r.push(`at ${his} feet.`); + } else { + r.push(`downwards.`); + } + r.push(`Comprehension dawning, you ask ${him} if`); + if (slave.relationship === 2) { + r.push(`${he} wants to be more than friends with ${relSlave.slaveName}.`); + } else if (slave.relationship === 3) { + r.push(`${he}'s wanting to bring emotions into relationship with ${relSlave.slaveName}, rather than keep it friendly and sexual.`); + } else if (slave.relationship === 4) { + r.push(`${he} wants to make an honest ${woman2} out of ${relSlave.slaveName}.`); + } + r.push(`${He} nods ${his} head quickly, still staring`); + if (!canSee(slave)) { + r.push(`blankly`); + } + if (hasBothLegs(slave)) { + r.push(`at ${his} feet.`); + } else { + r.push(`downwards.`); + } + r.push(`${He} shuts ${his} eyes tight and waits for you to weigh in on the situation.`); + App.Events.addParagraph(node, r); + + const choices = []; + choices.push(new App.Events.Result(`Break them up`, breakUp)); + choices.push(new App.Events.Result(`Build ${his} confidence`, confidence)); + choices.push(new App.Events.Result(`Bring the other ${girl2} in`, bringIn)); + App.Events.addResponses(node, choices); + + function breakUp() { + const frag = new DocumentFragment(); + let r = []; + r.push(`In a cold tone of voice, you admit your irritation with this school ${girl} nonsense, and tell ${him} ${he}'s to stop spending time with ${relSlave.slaveName}. ${He}'s unable to prevent ${his} eyes from flicking up at you in <span class="devotion dec">shock and horror,</span> but ${he} instantly lowers them again, the tears coming fast. You dismiss ${him}, and ${he} turns to go, but is so discombobulated by anguish that ${he} trips over ${his} own feet and falls with a slap of naked ${slave.skin} flesh against the floor. Their relationship <span class="relationship dec">is over.</span>`); + + slave.devotion -= 5; + slave.relationship = 0; + slave.relationshipTarget = 0; + relSlave.relationship = 0; + relSlave.relationshipTarget = 0; + + App.Events.addParagraph(frag, r); + return frag; + } + + function confidence() { + const frag = new DocumentFragment(); + let r = []; + r.push(`In a warm tone of voice, you tell ${him} you approve of ${his} relationship with ${relSlave.slaveName}. ${He} raises ${his} chin and looks at you with <span class="devotion inc">growing adoration</span> as you point out how lucky ${relSlave.slaveName} is to have ${him}. You tell ${him} that you're not planning to intervene personally, but that you think ${he} really ought to pursue the relationship, that they're good for each other, and that you're confident ${relSlave.slaveName} feels the same way. ${He} thanks you prettily and leaves at a flat run, in a hurry to tell ${his}`); + if (slave.relationship === 2) { + r.push(`sexy friend`); + } else if (slave.relationship === 3) { + r.push(`friend with benefits`); + } else if (slave.relationship === 4) { + r.push(`dear lover`); + } + r.push(`how ${he} feels about ${him2}.`); + if (slave.relationship === 2) { + r.push(`The next time you see them together, they're looking like they've been getting a little less sleep lately, but <span class="relationship">can't seem to keep their hands off each other.</span> ${slave.slaveName} mouths a silent thanks to you when ${relSlave.slaveName} isn't looking.`); + } else if (slave.relationship === 3) { + r.push(`The next time you see them together, they're <span class="relationship">holding hands at breakfast,</span> looking almost ashamed of themselves, but not letting go. ${slave.slaveName} mouths a silent thanks to you when ${relSlave.slaveName} isn't looking.`); + } else if (slave.relationship === 4) { + r.push(`${He} comes running right back, a happy ${relSlave.slaveName}`); + if (canWalk(relSlave)) { + r.push(`running in with ${him}.`); + } else { + r.push(`being helped in by ${his2} lover.`); + } + r.push(`You <span class="relationship">marry them</span> solemnly, and they embrace tightly, hugging each other close. ${slave.slaveName} comes to face you over ${his} ${wife2}'s shoulder, and ${he} mouths a silent, tearful thanks to you.`); + } + + slave.devotion += 5; + slave.relationship += 1; + relSlave.relationship += 1; + + App.Events.addParagraph(frag, r); + return frag; + } + + function bringIn() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You tell ${slave.slaveName} to wait, and page ${relSlave.slaveName} up to your office. ${slave.slaveName} looks terrified, but tries to conceal ${his} emotions behind a happy greeting for ${his}`); + if (slave.relationship === 2) { + r.push(`friend`); + } else if (slave.relationship === 3) { + r.push(`friend with benefits`); + } else if (slave.relationship === 4) { + r.push(`lover`); + } + r.push( + `when ${he2} comes in. ${relSlave.slaveName} knows ${him} well enough to detect ${his} inner turmoil, and asks ${him} what's wrong. ${slave.slaveName} flinches and looks to you in desperation, but you just nod at ${him} to spit it out. After two false starts, ${he} manages to say,`, + Spoken(slave, `"${relSlave.slaveName}, I really want`) + ); + + if (slave.relationship === 2) { + if (slave.fetishKnown === 1 && slave.fetish === "buttslut") { + r.push( + Spoken(slave, `to fuck your butt."`), + `${relSlave.slaveName} looks relieved that that's all it is, and ${agrees()}`, + ); + r.push(`${He2} kisses ${slave.slaveName} and then grinds ${his2} ass against ${slave.slaveName}'s crotch.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "cumslut")) { + if (relSlave.vagina !== -1) { + r.push(`to eat you out."`); + } else { + r.push(`to blow you."`); + } + r.push(`${relSlave.slaveName} looks relieved that that's all it is, and ${agrees()} ${He2}`); + if (relSlave.vagina !== -1) { + r.push(`offers ${his2} pussy`); + } else { + r.push(`flops ${his2} dick at ${slave.slaveName}`); + } + r.push(`comically.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "humiliation")) { + r.push( + Spoken(slave, `to fuck you in public."`), + ` ${relSlave.slaveName} looks relieved that that's all it is, and ${agrees()}` + ); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "masochist")) { + r.push( + Spoken(slave, `you to hurt me. Like, really hurt me."`), + ` ${relSlave.slaveName} looks relieved that that's all it is, and ${agrees()} ${He2} pinches one of ${slave.slaveName}'s nipples experimentally.` + ); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "sadist")) { + r.push( + Spoken(slave, `to hold you down."`), + ` ${relSlave.slaveName} looks relieved that that's all it is, and ${agrees()} ${He2} steps in close to ${slave.slaveName}, takes ${slave.slaveName}'s ${hasBothArms(slave) ? "hands" : "hand"}, and places them around ${his2} own throat.` + ); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "dom")) { + r.push( + Spoken(slave, `to be your top."`), + ` ${relSlave.slaveName} looks relieved that that's all it is, and ${agrees()} ${He2} sidles up to ${slave.slaveName}, looking up at ${him} submissively.` + ); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "submissive")) { + r.push( + Spoken(slave, `to be your bottom."`), + ` ${relSlave.slaveName} looks relieved that that's all it is, and says, ${agrees()} ${He2} takes ${slave.slaveName}'s face in ${his2} ${hasBothArms(relSlave) ? "hands" : "hand"} and kisses ${him} dominantly.` + ); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "boobs")) { + r.push( + Spoken(slave, `to fuck your boobs."`), + `${relSlave.slaveName} looks relieved that that's all it is, and says, ${agrees()} ${He2} takes ${slave.slaveName}'s` + ); + if (hasBothArms(slave)) { + r.push(`hands and places them`); + } else { + r.push(`hand and places it`); + } + r.push(`right on ${his2} breasts.`); + } else { + r.push( + Spoken(slave, `to fuck you."`), + ` ${relSlave.slaveName} looks relieved that that's all it is, and ${agrees()} ${He2} takes ${slave.slaveName}'s` + ); + if (hasBothArms(slave)) { + r.push(`hands and places them`); + } else { + r.push(`hand and places it`); + } + r.push(`right on ${his2} breasts.`); + } + r.push(`${slave.slaveName} bursts out laughing. They're now <span class="relationship">friends with benefits.</span>`); + } else if (slave.relationship === 3) { + r.push( + Spoken(slave, `t-to b-be your ${girl} friend."`), + `${He} takes a deep breath.`, + Spoken(slave, `"It's fun, just`) + ); + if (slave.fetishKnown === 1 && slave.fetish === "buttslut") { + r.push(`fucking your butt.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "cumslut")) { + r.push(`to`); + if (relSlave.vagina !== -1) { + r.push(`eating you out.`); + } else { + r.push(`blowing you.`); + } + } else if ((slave.fetishKnown === 1) && (slave.fetish === "humiliation")) { + r.push(`fucking you in public.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "masochist")) { + r.push(`having you hurt me.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "sadist")) { + r.push(`holding you down.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "dom")) { + r.push(`topping you.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "submissive")) { + r.push(`being your bottom.`); + } else if ((slave.fetishKnown === 1) && (slave.fetish === "boobs")) { + r.push(`fucking your boobs.`); + } else { + r.push(`having sex with you.`); + } + r.push( + Spoken(slave, `But I — I really like you."`), + ` ${relSlave.slaveName} looks relieved, and` + ); + if (relSlave.voice !== 0) { + r.push( + `says,`, + Spoken(slave, `"I really like you too. And you're really cute! I'd love to be your ${girl2} friend."`), + `${He2}` + ); + } else { + r.push(`lovingly`); + } + r.push(`takes ${slave.slaveName}'s hands in ${hers2}, and then kisses ${him} on the cheek. ${slave.slaveName} crushes ${relSlave.slaveName} in a hug, pressing a squeak out of ${him2}. They're now <span class="relationship">lovers.</span>`); + } else if (slave.relationship === 4) { + r.push( + `- " ${He} stops ${himself}.`, + Spoken(slave, `"No, I want to do this right."`), + `${He} takes ${relSlave.slaveName}'s hand, and then drops to one knee. After a moment of uncomprehending shock, ${relSlave.slaveName} begins to cry.`, + Spoken(slave, `"Will you marry me?"`), + `${relSlave.slaveName} turns to you and`); + if (!canTalk(relSlave)) { + r.push(`wordlessly`); + } + r.push(`asks if it's all right with you; you nod, and ${he2} turns back to ${slave.slaveName}.`); + if (!canTalk(relSlave)) { + r.push(`${He2} gestures distractedly that ${slave.slaveName} is being silly, and of course ${he2}'ll marry ${him}, because ${he2} loves ${him}.`); + } else { + r.push(Spoken(slave, `"O-of course I'll m-marry you, silly ${girl}. I love you."`)); + } + r.push(`${slave.slaveName} jumps up and crushes ${relSlave.slaveName} in a hug, kissing ${him2} frantically through ${his} tears. You <span class="relationship">marry them</span> solemnly, and they embrace tightly, hugging each other close. ${slave.slaveName} comes to face you over ${his} ${wife2}'s shoulder, and ${he} mouths a silent thanks to you.`); + } + r.push(`If ${slave.slaveName} had doubts about you, <span class="trust inc">they've been addressed.</span>`); + + slave.trust += 10; + slave.relationship += 1; + relSlave.relationship += 1; + + App.Events.addParagraph(frag, r); + return frag; + + function agrees() { + const r = []; + if (relSlave.voice !== 0) { + r.push( + `says,`, + Spoken(relSlave, `"Okay!"`) + ); + } else { + r.push(`nods.`); + } + return r.join(" "); + } + } + } +}; + diff --git a/src/events/RE/reShowerPunishment.js b/src/events/RE/reShowerPunishment.js new file mode 100644 index 0000000000000000000000000000000000000000..7d557310c44aa89e04ea4f1216c9be4f408d79ca --- /dev/null +++ b/src/events/RE/reShowerPunishment.js @@ -0,0 +1,267 @@ +App.Events.REShowerPunishment = class REShowerPunishment extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.HeadGirlID !== 0, + ]; + } + + actorPrerequisites() { + return [[ + (s) => s.devotion <= 50, + (s) => s.anus !== 0, + (s) => s.fetish !== "mindbroken", + canDoAnal, + hasAnyLegs, + hasAnyArms, + canTalk, + ]]; + } + + execute(node) { + let r = []; + const slave = getSlave(this.actors[0]); + + V.nextButton = "Continue"; + V.nextLink = "Next Week"; + + const { + He, + he, his, him, himself, girl, women + } = getPronouns(slave); + + const {title: Master} = getEnunciation(slave); + + const { + He2, His2, + he2, his2, him2, woman2, girl2 + } = getPronouns(S.HeadGirl).appendSuffix("2"); + + App.Events.drawEventArt(node, [slave, S.HeadGirl], "no clothing"); + + + if (V.HGSuite === 1) { + r.push(`Looking in on your Head Girl in ${his2} suite, you hear ${his2} private shower running and head that way. Through the thick steam the shower makes on its hottest setting, you see`); + } else { + r.push(`Passing by the showers, you see, through the steam of a very hot shower,`); + } + r.push(`a`); + if (slave.height > 180) { + r.push(`tall,`); + } else if (slave.height < 150) { + r.push(`tiny,`); + } + r.push( + `${slave.skin} form moving busily around a ${S.HeadGirl.skin} figure, which is standing confidently in the middle of the warm, moist space. As you draw nearer, you identify the stationary slave as your Head Girl,`, + App.UI.DOM.combineNodes(App.UI.DOM.slaveDescriptionDialog(S.HeadGirl), "."), + `${His2} attendant is`, + App.UI.DOM.combineNodes(contextualIntro(S.HeadGirl, slave, "DOM"), `,`), + `and ${he}'s washing ${his} superior with a big sponge.`, + ); + + if (V.HGSeverity > 0) { + r.push(`By virtue of not being rape, this is an unusually mild punishment by your Head Girl, if indeed that's what it is. But perhaps ${he2}'s saving that for later. And to go by the cringing, frightened mien of the busy little bath bitch, that's probably it.`); + } else if (V.HGSeverity === 0) { + r.push(`Your Head Girl does ${his2} best to fit the punishment to the crime, so ${slave.slaveName}'s failure was likely minor. With ${S.HeadGirl.slaveName}'s penchant for poetic justice, probably some little deficiency of personal cleanliness.`); + } else { + r.push(`This is the sort of mild punishment that your regime of respect and dignity requires ${him2} to use for all but the most egregious fault. Thus restricted, ${he2} does ${his2} best to come up with novel little degradations to keep ${his2} charges on their toes.`); + } + App.Events.addParagraph(node, r); + r = []; + r.push(`${slave.slaveName} is being very thorough. When you first appeared, ${he} was working ${his} way up ${S.HeadGirl.slaveName}'s `); + if (S.HeadGirl.muscles > 30) { + r.push(`muscle-corded`); + } else if (S.HeadGirl.weight > 10) { + r.push(`soft`); + } else if (S.HeadGirl.vagina > -1) { + r.push(`feminine`); + } else { + r.push(`pretty`); + } + r.push(`thighs, having obviously started at the bottom. ${He} skips over ${S.HeadGirl.slaveName}'s crotch, probably under instructions to leave it for last. It's late in your Head Girl's busy day, and you hear ${his2} groan of relaxation over the running water when the stiff sponge begins to scrub back and forth across ${his2}`); + if (S.HeadGirl.belly >= 60000) { + r.push(`enormously`); + if (S.HeadGirl.preg > 0) { + r.push(`pregnant`); + } else { + r.push(`rounded`); + } + r.push(`belly.`); + } else if (S.HeadGirl.weight > 190) { + r.push(`massively fat gut.`); + } else if (S.HeadGirl.belly >= 10000) { + r.push(`hugely`); + if (S.HeadGirl.preg > 0) { + r.push(`pregnant`); + } else { + r.push(`rounded`); + } + r.push(`belly.`); + } else if (S.HeadGirl.weight > 95) { + r.push(`big soft belly.`); + } else if (S.HeadGirl.belly >= 5000) { + if (S.HeadGirl.preg > 0) { + r.push(`pregnant`); + } else { + r.push(`round`); + } + r.push(`belly.`); + } else if (S.HeadGirl.weight > 30) { + r.push(`soft belly.`); + } else if (S.HeadGirl.belly >= 1500) { + r.push(`bloated belly.`); + } else if (S.HeadGirl.muscles > 30) { + r.push(`shredded abs.`); + } else if (S.HeadGirl.weight > 10) { + r.push(`plush belly.`); + } else if (S.HeadGirl.navelPiercing > 0) { + r.push(`pierced belly button.`); + } else if (S.HeadGirl.waist < -10) { + if (S.HeadGirl.waist < -95) { + r.push(`absurdly`); + } + r.push(`narrow waist.`); + } else { + r.push(`belly.`); + } + + App.Events.addParagraph(node, r); + + const choices = []; + choices.push(new App.Events.Result(`Just spectate`, spectate)); + choices.push(new App.Events.Result(`Get a scrub down too`, scrub)); + choices.push(new App.Events.Result(`Focus on your Head Girl`, HG)); + App.Events.addResponses(node, choices); + + function spectate() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You could strip off your suit, walk into the steam, and enjoy your slaves' ministrations, but sometimes the artistry of tastefully nude bodies is a welcome change of pace. You lean against the wall, far enough away that they remain unaware of your presence, and take in the sight. ${S.HeadGirl.slaveName} makes the penitent ${girl} do the job with Brahmanical thoroughness, cleaning ${his} superior's ${S.HeadGirl.race} body down to its very last pore. As ${slave.slaveName} circles the Head Girl laboriously, doing ${his} best to ingratiate ${himself} by diligence, the pair of naked`); + if (girl === girl2) { + r.push(`${women}`); + } else { + r.push(`slaves`); + } + r.push(`present a fascinating contrast. They are unclothed alike, the water streaming off their bodies without any distinction, but even an old world fool could not mistake the immense gulf between them.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`When ${slave.slaveName} is finally done, ${S.HeadGirl.slaveName}'s`); + if (V.HGSeverity > 0) { + r.push(`hands seize ${him} by the ears and pull ${his} head in for a kiss that is dominance distilled into the form of a loving gesture. Then ${he2} pokes ${his2} bitch in the side, forcing the slave to collapse in just the right way.`); + } else if (V.HGSeverity === 0) { + r.push(`arms encircle ${him} in an embrace that is simultaneously controlling, comforting, and sexually insistent. The slave does not resist, allowing the Head Girl to run ${his2} hands over the warm, wet sex slave.`); + } else { + r.push(`arousal is obvious. Though the respectful regime you require secures ${him} from the fear of being used, ${slave.slaveName} nonverbally offers ${his} superior oral, out of obvious gratitude that whatever ${he} did is being treated so leniently, and perhaps out of a desire to be in ${S.HeadGirl.slaveName}'s good graces.`); + } + r.push(`In no time at all, ${slave.slaveName}'s ${slave.hColor} head descends to obscure ${S.HeadGirl.slaveName}'s groin. The`); + if (S.HeadGirl.face > 95) { + r.push(`heartrendingly gorgeous`); + } else if (S.HeadGirl.face <= 95) { + r.push(`wonderfully pretty`); + } else if (S.HeadGirl.face <= 40) { + r.push(`approachably lovely`); + } else if (S.HeadGirl.face <= 10) { + r.push(`not unattractive`); + } else { + r.push(`homely`); + } + if (S.HeadGirl.physicalAge > 25) { + r.push(`${woman2}'s`); + } else { + r.push(`${girl2}'s`); + } + r.push(`head cranes back with orgasm before long; that diligent scrub must have been quite stimulating.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`${slave.slaveName} stays in the shower to clean ${himself}, so ${S.HeadGirl.slaveName} exits to see you watching the denouement. ${He2} <span class="devotion inc">smiles,</span> murmuring a greeting, and hurries over to give you a peck on the cheek, leaning in as best ${he2} can to keep ${his2} moist body away from your suit. "This is the life, ${Master}," ${he2} whispers.`); + seX(slave, "oral", S.HeadGirl, "penetrative"); + S.HeadGirl.devotion += 4; + + App.Events.addParagraph(frag, r); + return frag; + } + + function scrub() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You strip off your suit and enter the shower. By the time you get in, ${S.HeadGirl.slaveName}'s sponge scrub is almost done. ${He2} turns to greet you with half-lidded eyes, well pleased with ${his2} thorough scrubbing. ${His2} ${S.HeadGirl.skin} skin shines with wet cleanliness, and ${his2} ${S.HeadGirl.nipples} nipples begin to`); + if (S.HeadGirl.nipples === "fuckable") { + r.push(`swell with arousal`); + } else { + r.push(`stiffen`); + } + r.push(`as ${he2} sees your gaze take in ${his2} nude body. ${He2} brusquely orders ${slave.slaveName} to scrub you, too, anticipating your intention. The rough, exfoliating sensation of the sponge is indeed delightful, and you close your eyes to savor the feeling as the slave rubs it up and down your calves and then the backs of your knees.`); + App.Events.addParagraph(frag, r); + r = []; + if (V.HGSeverity > 0) { + r.push(`You detect tremors of fear in the`); + if (hasAnyArms(slave)) { + r.push(`slave's ${hasBothArms(slave) ? "hands" : "hand"};`); + } else { + r.push(`slave;`); + } + r.push(`${he} knows that ${he} hasn't extirpated ${his} misbehavior, whatever it was, just yet. You let your Head Girl manage that, however, and ${he2} does. When ${slave.slaveName} is stuck in one position for a short time by the need to wash your thighs, you hear a gasp and open your eyes to the sight of your Head Girl crouched behind ${him}, giving ${him} an anal fingerfuck. When ${slave.slaveName} is done washing you, your Head Girl holds the slave's head to your`); + } else { + r.push(`When the washing reaches your shoulders, it becomes clumsier, and ${slave.slaveName}'s wet body begins to bump gently against your torso. Opening your eyes, you see that your Head Girl is taking ${him} as ${he} finishes your bath. ${slave.slaveName} is doing ${his} best to do a good job as ${he}'s fucked, and ${he} manages it reasonably well. When ${he}'s done, ${S.HeadGirl.slaveName} pushes ${his} head down towards your`); + } + if (V.PC.dick !== 0) { + r.push(`groin so ${he} can suck you off${(V.PC.vagina !== -1) ? "and stroke your cunt" : ""}.`); + } else { + r.push(`cunt so ${he} can eat you out.`); + } + r.push(`${slave.slaveName} complies, and afterward, ${he} seems to feel that <span class="trust inc">${he} came off reasonably well;</span> it could have been worse.`); + seX(slave, "anal", S.HeadGirl, "penetrative"); + seX(slave, "oral", V.PC, "penetrative"); + r.push(knockMeUp(slave, 10, 1, V.HeadGirlID)); + slave.trust += 4; + + App.Events.addParagraph(frag, r); + return frag; + } + + function HG() { + const frag = new DocumentFragment(); + let r = []; + const {hersP} = getPronouns(V.PC).appendSuffix("P"); + r.push(`You strip off your suit and walk into the steam, producing a surprised but welcoming greeting from your Head Girl and a muffled, submissive noise from ${slave.slaveName}. ${S.HeadGirl.slaveName} is held more or less stationary by the slave ${he2}'s straddling, so you step in, hook a dominant arm around ${his2} waist, and kiss ${him2}. There's precisely one person in this arcology who's allowed to treat ${him2} as ${hersP}, and it's you. ${He2} relaxes into you with gratitude as you shoulder the burden of being the leader in this little area of your empire, lifting it from ${his2} shoulders for now.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`You run a hand up the side of ${his2} neck, bringing it to rest with your fingers cupping ${him2} under the ear and your thumb running up along ${his2} temple. ${He2} shivers, unable to concentrate despite all ${his2} poise, the ongoing oral service blending into your intense closeness. Right now, ${he2}'s the`); + if (S.HeadGirl.physicalAge > 25) { + r.push(`${woman2}`); + } else { + r.push(`${girl2}`); + } + r.push(`for you, so you snap your fingers next to the ear of the slave`); + if (S.HeadGirl.vagina > -1) { + r.push(`eating ${him2} out,`); + } else { + r.push(`blowing ${him2},`); + } + r.push(`point at the dropped sponge, and then point at yourself. The oral stops as ${slave.slaveName} hurries to scrub you, starting at your feet, but your Head Girl doesn't care. You're kissing ${him2}.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`${He2} gently strokes your `); + if (V.PC.dick !== 0) { + r.push(`rapidly hardening member, smiling into your mouth at the speed with which it stiffens${(V.PC.vagina !== -1) ? ", and teases your pussylips with mischievous fingers" : ""}.`); + } else { + r.push(`flushed cunt, smiling into your mouth at the moisture that instantly coats ${his2} fingertips.`); + } + r.push(`You reach out in turn,`); + if (S.HeadGirl.vagina > -1) { + r.push(`caressing ${his2} pussylips before slowly inserting a digit inside ${his2} warmth while nuzzling ${his2} clit with the knuckle of your thumb. At the first real brush against ${his2} clitoris, the overstimulated ${S.HeadGirl.slaveName} climaxes, pulling ${his2} mouth away from you to shout your name and then sobbing thanks into your ear.`); + } else { + r.push(`hooking your fingers up underneath ${his2} taint to grope ${his2} anus. After teasing ${his2} asspussy for a moment you bring your hand slowly across ${his2} perineum${(S.HeadGirl.scrotum > 0) ? `until ${his2} ballsack rests against your wrist` : ""}. The overstimulated ${S.HeadGirl.slaveName} cums the instant the butt of your hand touches the base of ${his2} cock. ${He2} screams your name.`); + } + App.Events.addParagraph(frag, r); + r = []; + r.push(`${He2} isn't terribly affected by loving shower sex with you; after all, it isn't exactly novel for ${him2}. ${slave.slaveName} was there to bear witness, though, scrubbing your back as ${S.HeadGirl.slaveName} clung to it with orgasm. ${He} can't help but be <span class="devotion inc">impressed.</span> Maybe, just maybe, that could be ${him} someday. ${He} seems distinctly uncomfortable.`); + + seX(slave, "oral", S.HeadGirl, "oral"); + + slave.devotion += 4; + + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/RE/reSlaveMarriage.js b/src/events/RE/reSlaveMarriage.js new file mode 100644 index 0000000000000000000000000000000000000000..813ac296a3369c73b21dce63e1c3920280a75bff --- /dev/null +++ b/src/events/RE/reSlaveMarriage.js @@ -0,0 +1,210 @@ +App.Events.RESlaveMarriage = class RESlaveMarriage extends App.Events.BaseEvent { + actorPrerequisites() { + return[[ + (s) => s.fetish !== "mindbroken", + hasAnyArms, + hasAnyLegs, + canTalk, + (s) => s.relationship === 4, + (s) => s.devotion > 20, + (s) => s.trust > 20, + ]]; + } + + execute(node) { + const r = []; + + V.nextButton = "Continue"; + V.nextLink = "Next Week"; + + const groomSlave = getSlave(this.actors[0]); + const brideSlave = getSlave(groomSlave.relationshipTarget); + + const { + He, His, + he, his, him + } = getPronouns(groomSlave); + const {title: Master} = getEnunciation(groomSlave); + + const { + He2, His2, + he2, his2, him2 + } = getPronouns(brideSlave).appendSuffix("2"); + + App.Events.drawEventArt(node, [groomSlave, brideSlave]); + + r.push( + App.UI.DOM.slaveDescriptionDialog(groomSlave), + `and`, + App.UI.DOM.slaveDescriptionDialog(brideSlave), + `come into your office` + ); + if (hasAnyArms(groomSlave) && hasAnyArms(brideSlave)) { + r.push(`holding hands.`); + } else { + r.push(`doing their best to stay close to one another despite their physical limitations.`); + } + r.push(`${brideSlave.slaveName} looks at ${groomSlave.slaveName} expectantly, but ${he2}'s terribly nervous and makes several false starts before beginning. Finally ${groomSlave.slaveName} musters ${his} courage and`); + if (canTalk(groomSlave)) { + r.push( + `asks with ${his} voice cracking,`, + Spoken(groomSlave, `"${Master}, would you please grant us a slave marriage?"`) + ); + } else { + r.push(`asks you with simple gestures to grant the two of them a slave marriage.`); + } + + App.Events.addParagraph(node, r); + + const choices = []; + choices.push(new App.Events.Result(`Of course`, yes)); + choices.push(new App.Events.Result(`No`, no)); + App.Events.addResponses(node, choices); + + + function yes() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You inquire as to whether they understand the Free Cities slave marriage ceremony, and they nod, not trusting themselves to do anything more. You give them a few minutes to get dressed in special outfits you make available. When they come back, they're wearing lacy lingerie designed to resemble old world wedding dresses, but without concealing anything.`); + + App.Events.addParagraph(frag, r); + r = []; + if (groomSlave.vagina === 0) { + r.push(`${groomSlave.slaveName} is a virgin, so ${he}'s wearing white`); + } else if (groomSlave.pregKnown === 1) { + r.push(`${groomSlave.slaveName} is pregnant, so ${he}'s wearing light pink`); + } else if (groomSlave.vagina < 0) { + r.push(`${groomSlave.slaveName} is a sissy slave, so ${he}'s wearing light blue`); + } else { + r.push(`${groomSlave.slaveName} is an experienced sex slave, so ${he}'s wearing light pink`); + } + r.push(`against ${his}${groomSlave.skin} skin.`); + if (groomSlave.chastityPenis) { + r.push(`${He} has a little bow on ${his} chastity cage.`); + } else if (canAchieveErection(groomSlave)) { + r.push(`The`); + if (canSee(groomSlave)) { + r.push(`sight of ${brideSlave.slaveName}`); + } else { + r.push(`anticipation`); + } + r.push(`has ${him} stiffly erect, and ${he}'s wearing a little bow around ${his} cockhead.`); + } else if (groomSlave.dick > 0) { + r.push(`${He}'s impotent, but ${he}'s wearing a little bow around ${his} useless cockhead.`); + } else if (groomSlave.clit > 0) { + r.push(`${His} prominent clit is engorged, and ${he}'s wearing a tiny bow on it.`); + } else { + r.push(`${He}'s wearing a demure little bow just over ${his} pussy.`); + } + if (groomSlave.anus > 1) { + r.push(`${His} lacy panties are designed to spread ${his} buttocks a little and display ${his} big butthole.`); + } else if (groomSlave.anus === 0) { + r.push(`${His} lacy panties cover ${his} virgin anus, for once.`); + } + if (groomSlave.boobs > 1000) { + r.push(`The bra makes no attempt to cover or even support ${his} huge breasts, simply letting them through holes in the lace to jut proudly out.`); + } else if (groomSlave.boobs > 500) { + r.push(`The bra supports and presents ${his} big breasts, leaving ${his} stiffening nipples bare.`); + } else { + r.push(`The bra supports and presents ${his} breasts, giving ${him} more cleavage than ${he} usually displays.`); + } + if (groomSlave.belly >= 1500) { + r.push(`${His}`); + if (groomSlave.preg > 0) { + r.push(`growing pregnancy`); + } else { + r.push(`rounded middle`); + } + r.push(`prominently bulges from the gap between ${his} lingerie.`); + } + + App.Events.addParagraph(frag, r); + r = []; + if (brideSlave.vagina === 0) { + r.push(`${brideSlave.slaveName} is a virgin, so ${he2}'s wearing white`); + } else if (brideSlave.pregKnown === 1) { + r.push(`${brideSlave.slaveName} is pregnant, so ${he2}'s wearing light pink`); + } else if (brideSlave.vagina < 0) { + r.push(`${brideSlave.slaveName} is a sissy slave, so ${he2}'s wearing light blue`); + } else { + r.push(`${brideSlave.slaveName} is an experienced sex slave, so ${he2}'s wearing light pink`); + } + r.push(`against ${his2}${brideSlave.skin} skin.`); + if (brideSlave.chastityPenis) { + r.push(`${He2} has a little bow on ${his2} chastity cage.`); + } else if (canAchieveErection(brideSlave)) { + r.push(`The`); + if (canSee(brideSlave)) { + r.push(`sight of ${groomSlave.slaveName}`); + } else { + r.push(`anticipation`); + } + r.push(`has ${him2} stiffly erect, and ${he2}'s wearing a little bow around ${his2} cockhead.`); + } else if (brideSlave.dick > 0) { + r.push(`${He}'s impotent, but ${he2}'s wearing a little bow around ${his2} useless cockhead.`); + } else if (brideSlave.clit > 0) { + r.push(`${His2} prominent clit is engorged, and ${he2}'s wearing a tiny bow on it.`); + } else { + r.push(`${He2}'s wearing a demure little bow just over ${his2} pussy.`); + } + if (brideSlave.anus > 1) { + r.push(`${His2} lacy panties are designed to spread ${his2} buttocks a little and display ${his2} big butthole.`); + } else if (brideSlave.anus === 0) { + r.push(`${His2} lacy panties cover ${his2} virgin anus, for once.`); + } + if (brideSlave.boobs > 1000) { + r.push(`The bra makes no attempt to cover or even support ${his2} huge breasts, simply letting them through holes in the lace to jut proudly out.`); + } else if (brideSlave.boobs > 500) { + r.push(`The bra supports and presents ${his2} big breasts, leaving ${his2} stiffening nipples bare.`); + } else { + r.push(`The bra supports and presents ${his2} breasts, giving ${him2} more cleavage than ${he2} usually displays.`); + } + if (brideSlave.belly >= 1500) { + r.push(`${His2}`); + if (brideSlave.preg > 0) { + r.push(`growing pregnancy`); + } else { + r.push(`rounded middle`); + } + r.push(`prominently bulges from the gap between ${his2} lingerie.`); + } + + App.Events.addParagraph(frag, r); + r = []; + r.push(`The procedure is simple. The two of them prostrate themselves on the ground and beg your indulgence. You state that you grant it, and hand each of them a simple gold band to be worn on the little finger in advertisement of the inferiority of their union. In turn, each of them gives the other their ring, and they kiss. You pronounce them slave spouses, and offer them the couch for their honeymoon; they <span class="trust inc">thank you profusely</span> through their building tears. It's always touching to see`); + if (groomSlave.bellyPreg >= 5000 && brideSlave.bellyPreg >= 5000) { + r.push(`two pregnant slaves`); + if (hasAnyArms(brideSlave) && hasAnyArms(groomSlave)) { + r.push(`fingering`); + } else { + r.push(`fucking`); + } + r.push(`each other`); + } else { + r.push(`a 69`); + } + r.push(`in which both participants are <span class="devotion inc">softly crying with happiness.</span>`); + if (groomSlave.pregSource === brideSlave.ID && brideSlave.pregSource === groomSlave.ID) { + r.push(`When ${groomSlave.slaveName} and ${brideSlave.slaveName} tire, they rest, shoulder to shoulder, with a hand upon each other's bulging belly. Gently, they caress their growing pregnancies, knowing that they carry the other's love child.`); + } else if (brideSlave.pregSource === groomSlave.ID) { + r.push(`When they tire, ${groomSlave.slaveName} rests ${his} head upon ${brideSlave.slaveName}'s lap and gently kisses ${his} lover's belly, knowing the child of their love is growing within.`); + } else if (groomSlave.pregSource === brideSlave.ID) { + r.push(`When they tire, ${brideSlave.slaveName} rests ${his2} head upon ${groomSlave.slaveName}'s lap and gently kisses ${his2} lover's belly, knowing the child of their love is growing within.`); + } + seX(groomSlave, "oral", brideSlave, "oral"); + groomSlave.devotion += 4; + brideSlave.devotion += 4; + groomSlave.trust += 4; + brideSlave.trust += 4; + groomSlave.relationship = 5; + brideSlave.relationship = 5; + + App.Events.addParagraph(frag, r); + return frag; + } + + function no() { + return `You decline gently, telling them that their relationship is acceptable to you as it is. They are disappointed, but not surprised, and accept your will without a murmur. They leave as they entered, holding hands.`; + } + } +}; diff --git a/src/events/RE/reStandardPunishment.js b/src/events/RE/reStandardPunishment.js index 0ef37e059e343355f6e35aaf05dd5c874fdecd00..e824a302075975ab93fe8ecb6c4f29116f98368f 100644 --- a/src/events/RE/reStandardPunishment.js +++ b/src/events/RE/reStandardPunishment.js @@ -266,7 +266,7 @@ App.Events.REStandardPunishment = class REStandardPunishment extends App.Events. function whipCruelly() { const frag = new DocumentFragment(); let r = []; - r.push(`Since you use whipping as a standard slave punishment, there are many sets of restraints set high up on the walls for the purpose.You order ${him} to place ${his} ${hasBothArms(slave) ? "hands" : "hand"} in one of them, and ${he}`); + r.push(`Since you use whipping as a standard slave punishment, there are many sets of restraints set high up on the walls for the purpose. You order ${him} to place ${his} ${hasBothArms(slave) ? "hands" : "hand"} in one of them, and ${he}`); if (slave.devotion > 20) { r.push(`sobs with fear but obeys, despite something in your tone that makes ${his} knees go weak with terror.`); } else if (slave.trust < -20) { diff --git a/src/events/RESS/meanGirls.js b/src/events/RESS/meanGirls.js index c0924c6b42634e0812644692432a2ff00281b05b..cf8fc66322e5845745c231400f40fa3e00ed9a97 100644 --- a/src/events/RESS/meanGirls.js +++ b/src/events/RESS/meanGirls.js @@ -316,7 +316,7 @@ App.Events.RESSMeanGirls = class RESSMeanGirls extends App.Events.BaseEvent { } else { r.push(`eaten out`); } - r.push(`by one sobbing rich bitch while ${he} forces another to spank${his3} friend's pussy.`); + r.push(`by one sobbing rich bitch while ${he} forces another to spank ${his3} friend's pussy.`); seX(newSlaves[0], "oral", eventSlave, "penetrative", 20); seX(newSlaves[1], "oral", eventSlave, "penetrative", 20); seX(newSlaves[2], "oral", eventSlave, "penetrative", 20); diff --git a/src/events/assistant/assistantBody.js b/src/events/assistant/assistantBody.js index 1c5978053533aabfa70d437954b12925a4ed6d6d..380cffe958c41577a29d152a062971ac6aefad4f 100644 --- a/src/events/assistant/assistantBody.js +++ b/src/events/assistant/assistantBody.js @@ -100,7 +100,7 @@ App.Events.assistantBody = class assistantBody extends App.Events.BaseEvent { r.push(`${HeA} hops up and down clutching a virtual printout of the report, ${hisA} huge breasts splattering milk everywhere and invoking a storm of kicks from ${hisA} many children.`); break; case "hypergoddess": - r.push(`${HeA} struggles to hop up and down while clutching a virtual printout of the report.After a single hop, ${heA} is dragged to the ground by labor pains to give birth to a number of over excited babies.`); + r.push(`${HeA} struggles to hop up and down while clutching a virtual printout of the report. After a single hop, ${heA} is dragged to the ground by labor pains to give birth to a number of over excited babies.`); break; case "loli": r.push(`${HeA} hops up and down excitedly clutching a virtual printout of the report; ${heA} doesn't seem to be interested in stopping.`); @@ -135,7 +135,7 @@ App.Events.assistantBody = class assistantBody extends App.Events.BaseEvent { r.push(`"Sorry, sorry. So could I...?"`); App.Events.addParagraph(node, r); r = []; - r.push(`You look over the details of the report. It would require another rather expansive, and expensive, upgrade to ${hisA} systems, as well as a body to host ${himA} and the receiver implant.It looks like ${heA} wouldn't lose any functionality, though you aren't sure what ${heA} would do with a body; it may be fun to find out.`); + r.push(`You look over the details of the report. It would require another rather expansive, and expensive, upgrade to ${hisA} systems, as well as a body to host ${himA} and the receiver implant. It looks like ${heA} wouldn't lose any functionality, though you aren't sure what ${heA} would do with a body; it may be fun to find out.`); App.Events.addParagraph(node, r); diff --git a/src/events/assistant/assistantName.js b/src/events/assistant/assistantName.js index 0035fe38f1373bafe2061ecb9a2cb581e0a0425c..006ba0c44da216c7a4de77691797c2df92268eef 100644 --- a/src/events/assistant/assistantName.js +++ b/src/events/assistant/assistantName.js @@ -90,7 +90,7 @@ App.Events.assistantName = class assistantName extends App.Events.BaseEvent { r.push(`${HeA} has ${hisA} legs crossed and ${hisA} hands clasped behind ${himA}, and is turning ${hisA} body from side to side in girlish nervousness.`); break; default: - r.push(`The lines of${hisA} symbol are thin, and it is rotating much more slowly than normal.`); + r.push(`The lines of ${hisA} symbol are thin, and it is rotating much more slowly than normal.`); } r.push(`"${properTitle()}," ${heA} says softly, "may I ask you something?" You nod. ${HeA}`); switch (V.assistant.appearance) { @@ -138,7 +138,7 @@ App.Events.assistantName = class assistantName extends App.Events.BaseEvent { r.push(`squares ${hisA} shoulders, pushes ${hisA} breasts together,`); break; case "witch": - r.push(`squares${hisA} shoulders, gathers up all ${hisA} confidence,`); + r.push(`squares ${hisA} shoulders, gathers up all ${hisA} confidence,`); break; case "ERROR_1606_APPEARANCE_FILE_CORRUPT": r.push(`begins puffing up`); @@ -225,7 +225,7 @@ App.Events.assistantName = class assistantName extends App.Events.BaseEvent { r.push(`${HeA} collapses to the ground in tears. "You've made me happier than correctly casting a spell ever could, ${properTitle()}." ${HeA} wipes ${hisA} face. "I promise to try harder than ever for you!" ${HeA} vows.`); break; case "ERROR_1606_APPEARANCE_FILE_CORRUPT": - r.push(`${HeA} practically explodes.You have no idea what you are looking at, but it's likely happy.`); + r.push(`${HeA} practically explodes. You have no idea what you are looking at, but it's likely happy.`); break; case "schoolgirl": r.push(`${HeA} was on the verge of tears already, and begins to cry. "Th-thank you, ${properTitle()}. I love you," ${heA} blubbers inelegantly. "It's just so, like, you know." ${HeA} waves ${hisA} hand in apology for ${hisA} inability to express ${himselfA}.`); diff --git a/src/events/assistant/assistantSP.js b/src/events/assistant/assistantSP.js index 2e05964e0f9bc99df3f5537e89f6ce99e28f6265..e1c2b405b8c293769ae117cdd00b90860a14371a 100644 --- a/src/events/assistant/assistantSP.js +++ b/src/events/assistant/assistantSP.js @@ -57,7 +57,7 @@ App.Events.assistantSP = class assistantSP extends App.Events.BaseEvent { if (V.seeDicks !== 0) { App.Events.addParagraph(node, r); r = []; - r.push(`${HeA} claps ${hisA} hands, and ${hisA} muscles fade, but not all the way.The tattoos vanish, and ${hisA} loincloth turns into a slutty bikini. ${HisA} breasts and behind grow, ${hisA} lips swell, and ${hisA} hair turns blonde.Finally, ${heA} grows a dick, and it keeps growing until it hangs past ${hisA} knees: or it would, if it weren't so erect. "Of course," ${heA} says seductively, "I could also be a bimbo dickgirl." ${HeA} orgasms, gasping, "Last one, I promise," and changes again. ${HisA} dick shrinks, thought not very far, and then splits into two members. ${HisA} skin pales to an off-white, and ${hisA} hair goes green and starts to writhe, turning into tentacle-hair. ${HisA} forehead sprouts a pair of horns that curve back along ${hisA} head. ${HeA} grins, displaying a cute pair of fangs. "I feel monstrous," ${heA} says, and stretches luxuriantly.`); + r.push(`${HeA} claps ${hisA} hands, and ${hisA} muscles fade, but not all the way. The tattoos vanish, and ${hisA} loincloth turns into a slutty bikini. ${HisA} breasts and behind grow, ${hisA} lips swell, and ${hisA} hair turns blonde. Finally, ${heA} grows a dick, and it keeps growing until it hangs past ${hisA} knees: or it would, if it weren't so erect. "Of course," ${heA} says seductively, "I could also be a bimbo dickgirl." ${HeA} orgasms, gasping, "Last one, I promise," and changes again. ${HisA} dick shrinks, thought not very far, and then splits into two members. ${HisA} skin pales to an off-white, and ${hisA} hair goes green and starts to writhe, turning into tentacle-hair. ${HisA} forehead sprouts a pair of horns that curve back along ${hisA} head. ${HeA} grins, displaying a cute pair of fangs. "I feel monstrous," ${heA} says, and stretches luxuriantly.`); } r.push(`The character vanishes, and the symbol returns. "Ahem. What do you think, ${properTitle()}?"`); diff --git a/src/events/nonRandom/rival/pRivalryActions.js b/src/events/nonRandom/rival/pRivalryActions.js index 5ba526daec55df3480f61b748302438a4a896300..87152b2a70767045fa94869be6a7f793309ea413 100644 --- a/src/events/nonRandom/rival/pRivalryActions.js +++ b/src/events/nonRandom/rival/pRivalryActions.js @@ -1893,7 +1893,7 @@ App.Events.pRivalryActions = function() { r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`); break; case "Multiculturalism": - r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, ${he} decided to martyr ${himself} for your arcology's salvation. Got fucked till ${his} body gave out. Of course I enjoyed ${him} in ${his} final moments, and don't worry, ${he} died smiling.I should hunt down more people you knew, keep our little game goi"`); + r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, ${he} decided to martyr ${himself} for your arcology's salvation. Got fucked till ${his} body gave out. Of course I enjoyed ${him} in ${his} final moments, and don't worry, ${he} died smiling. I should hunt down more people you knew, keep our little game goi"`); break; case "Intellectual Dependency": r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, ${he} ran the math and determined that the odds of me keeping ${him} through this were too low and that ${he} should go into hiding until it's safe to come back. ${He}'s a well trained ${girl} now, so I trust ${him}, and even if I did lose this war, it'd still be worth taking ${his} advice just to deny you your prize. Bet tha"`); diff --git a/src/events/nonRandom/rival/pRivalryVictory.js b/src/events/nonRandom/rival/pRivalryVictory.js index 5e21eb9c90f7eddb345d881aeb85c00903011465..fb304b30d3d1bf78731b1715fa07cbdc6da53332 100644 --- a/src/events/nonRandom/rival/pRivalryVictory.js +++ b/src/events/nonRandom/rival/pRivalryVictory.js @@ -96,7 +96,7 @@ App.Events.pRivalryVictory = function() { unlockContinue(); r.push(`You coldly decline. "That was a mistake," your rival replies, entering a computer command.`); if (V.rivalSet !== 0) { - r.push(`"All my remaining liquid assets have just been <span class="red">carefully dispersed to deny you control of my arcology.</span> You'll get nothing from me." It's true.The financial self - destruction ensures that the fiscal wreckage goes to the arcology's citizens, not you.`); + r.push(`"All my remaining liquid assets have just been <span class="red">carefully dispersed to deny you control of my arcology.</span> You'll get nothing from me." It's true. The financial self - destruction ensures that the fiscal wreckage goes to the arcology's citizens, not you.`); if (rivalArc) { updateArc(); if (rivalArc.FSSupremacist > 20) { diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 7c9f614f7f33c5a20dcf1a95b27f673dc4c8b2a6..b3c87838c35902bb5544d9515710d44d026fd408 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -98,10 +98,15 @@ App.Events.getIndividualEvents = function() { new App.Events.REStandardPunishment(), new App.Events.RERebels(), + new App.Events.REAnalPunishment(), + new App.Events.REShowerPunishment(), + // Relationship Events new App.Events.REDevotedMotherDaughter(), new App.Events.REResistantMotherDaughter(), new App.Events.RESiblingRevenge(), + new App.Events.RERelationshipAdvice(), + new App.Events.RESlaveMarriage(), ]; }; diff --git a/src/events/scheduled/seIndependenceDay.js b/src/events/scheduled/seIndependenceDay.js index 034d972273f03abc0c8d43b30c891a9b24278d5d..e89f2c3fc9afb0de87ee41665924701f7354f095 100644 --- a/src/events/scheduled/seIndependenceDay.js +++ b/src/events/scheduled/seIndependenceDay.js @@ -552,10 +552,10 @@ App.Events.SEIndependenceDay = class SEIndependenceDay extends App.Events.BaseEv } if (V.SF.Squad.Armoury === 0) { - r.push(`Seeing the soldiers of ${V.SF.Lower} with high-quality personal weapons and light armor, but little in the way of exceptional armament, provides little confidence in V.SF.Lower.`); + r.push(`Seeing the soldiers of ${V.SF.Lower} with high-quality personal weapons and light armor, but little in the way of exceptional armament, provides little confidence in ${V.SF.Lower}.`); repChange -= 200; } else { - r.push(`The citizens of ${V.arcologies[0].name} are relieved to see that V.SF.Lower's troops are outfitted with the absolute latest gear.`); + r.push(`The citizens of ${V.arcologies[0].name} are relieved to see that ${V.SF.Lower}'s troops are outfitted with the absolute latest gear.`); repChange += 1250; } diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index 1010b6a391c0a347aad8aa5d66ec86d7c389b742..fb237c730e878beb701b14960091b731b43ca531 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -53,14 +53,6 @@ globalThis.generateRandomEventPool = function(eventSlave) { } if (V.HeadGirlID !== 0) { - if (eventSlave.devotion <= 50) { - if (eventSlave.anus !== 0 && canDoAnal(eventSlave)) { - if (V.HGSeverity >= 0) { - V.events.push("RE anal punishment"); - } - V.events.push("RE shower punishment"); - } - } if (eventSlave.assignment !== Job.QUARTER) { if (eventSlave.ID === V.HeadGirlID) { if (eventSlave.trust > 50) { @@ -183,18 +175,6 @@ globalThis.generateRandomEventPool = function(eventSlave) { } } - if (eventSlave.assignment !== Job.QUARTER) { - if (eventSlave.relationship >= 2) { - if (eventSlave.relationship < 5) { - if (eventSlave.devotion > 20) { - if (eventSlave.trust >= -20) { - V.events.push("RE relationship advice"); - } - } - } - } - } - if (eventSlave.devotion > 50) { if (eventSlave.anus > 0) { if (eventSlave.vagina !== 0) { @@ -1084,14 +1064,6 @@ if(eventSlave.drugs === "breast injections") { } } - if (eventSlave.relationship === 4) { - if (eventSlave.devotion > 20) { - if (eventSlave.trust > 20) { - V.events.push("RE slave marriage"); - } - } - } - if (V.eventResults.snatch === 0 && eventSlave.origin === "$He is your share of a raid on an illegal laboratory by your mercenaries." && eventSlave.newGamePlus === 0) { if (V.geneticMappingUpgrade === 2 && eventSlave.health.condition > 25 && eventSlave.devotion > 50 && V.cash > V.surgeryCost * 4) { /* only one slave ever qualifies, so give it a bit more weight */ diff --git a/src/npc/interaction/fKiss.js b/src/npc/interaction/fKiss.js index de04aa1bc29f27b83168f40e2fc49a96be40c8f1..c6ebb02242839929928b3fb0c65b229d7d86d14a 100644 --- a/src/npc/interaction/fKiss.js +++ b/src/npc/interaction/fKiss.js @@ -191,7 +191,7 @@ App.Interact.fKiss = function(slave) { if (slave.relationship === -3) { if (slave.fetish === "mindbroken") { - r.push(`${His} mouth opens to accept the kiss, and is compliant with your questing tongue. You kiss your broken ${wife} deeply. ${His} posture remains completely unchanged. Being kissed affects ${him} as little as being penetrated, being struck, being loved, or being your V.wife: not at all. When you pull away,`); + r.push(`${His} mouth opens to accept the kiss, and is compliant with your questing tongue. You kiss your broken ${wife} deeply. ${His} posture remains completely unchanged. Being kissed affects ${him} as little as being penetrated, being struck, being loved, or being your ${wife}: not at all. When you pull away,`); if (canSee(slave)) { r.push(`${his} ${App.Desc.eyesColor(slave)} track you carefully, awaiting further use of ${his} body.`); } else { diff --git a/src/npc/interaction/passage/fSlaveSlaveVag.js b/src/npc/interaction/passage/fSlaveSlaveVag.js index 5285c5432fe64afd2f76342cf7082cd6c4bcff81..ddb82a6277f36a312409658b4b254fe19bf936c4 100644 --- a/src/npc/interaction/passage/fSlaveSlaveVag.js +++ b/src/npc/interaction/passage/fSlaveSlaveVag.js @@ -441,9 +441,9 @@ App.Interact.fSlaveSlaveVag = function(slave) { } r.push(`to ${his} horror and resentment, while ${rapist.slaveName} is sleeping next to ${him} in a state of obvious satiation and bliss.`); } else if (slave.devotion <= 20 || rapist.devotion <= 20) { - r.push(`You order ${slave.slaveName} onto the couch and tell ${rapist.slaveName} to get on with it. They fuck mechanically, gazing with roiling emotions into each others' eyes. They do seem to come to some sort of a non-verbal understanding on the necessity of getting it done, and there is no real unhappiness in either of them when they finish and disentangle themselves. As they clean themselves and exit, you notice rapist.slaveName's looking a little more longingly at ${slave.slaveName}.`); + r.push(`You order ${slave.slaveName} onto the couch and tell ${rapist.slaveName} to get on with it. They fuck mechanically, gazing with roiling emotions into each others' eyes. They do seem to come to some sort of a non-verbal understanding on the necessity of getting it done, and there is no real unhappiness in either of them when they finish and disentangle themselves. As they clean themselves and exit, you notice ${rapist.slaveName}'s looking a little more longingly at ${slave.slaveName}.`); } else if (slave.devotion <= 50 || rapist.devotion <= 50) { - r.push(`You order ${slave.slaveName} and ${rapist.slaveName} to get on with it. They fuck mechanically at first, gazing with roiling emotions into each others' eyes. Eventually, they begin to enjoy the intimacy of the act, finding the shared pleasure between them comforting. They finish and resume life as slaves, the light of this intimacy diminishing, softening with rapist.slaveName's dick and dripping away with the contents of ${slave.slaveName}'s cum-filled pussy.`); + r.push(`You order ${slave.slaveName} and ${rapist.slaveName} to get on with it. They fuck mechanically at first, gazing with roiling emotions into each others' eyes. Eventually, they begin to enjoy the intimacy of the act, finding the shared pleasure between them comforting. They finish and resume life as slaves, the light of this intimacy diminishing, softening with ${rapist.slaveName}'s dick and dripping away with the contents of ${slave.slaveName}'s cum-filled pussy.`); } else { r.push(`The two slaves happily and eagerly get down to business. They take their time with foreplay, humping slowly and gazing into each others' eyes, exchanging kisses almost constantly. After a little while, ${slave.slaveName} looks over ${rapist.slaveName}'s shoulder to where you're sitting, the invitation clear in ${his} eyes. As soon as you stand to come over, they roll over without being ordered to`); if (canDoAnal(slave) && slave.anus > 0) { diff --git a/src/npc/surgery/bodySwap/bodySwapReaction.js b/src/npc/surgery/bodySwap/bodySwapReaction.js index f411019a59b278667a2d57236a31bb8dfa4b1bb9..48e5384657f061ec8cdb78039bcb2768ae9bc1d3 100644 --- a/src/npc/surgery/bodySwap/bodySwapReaction.js +++ b/src/npc/surgery/bodySwap/bodySwapReaction.js @@ -1020,7 +1020,7 @@ globalThis.bodySwapReaction = function(body, soul) { if (canSee(body)) { r.push(`Something about ${his} head catches ${his}`); if (body.hColor !== soul.hColor) { - r.push(`eye; ${he} <span class="coral">now has body.hColor hair.</span>`); + r.push(`eye; ${he} <span class="coral">now has ${body.hColor} hair.</span>`); } else { r.push(`eye, but it was a trick of the light; ${his} hair is more or less the same.`); } @@ -2682,7 +2682,7 @@ globalThis.bodySwapReaction = function(body, soul) { } else { r.push(`Something about ${his} head catches ${his}`); if (body.hColor !== soul.hColor) { - r.push(`eye; ${he} <span class="coral">now has body.hColor hair.</span>`); + r.push(`eye; ${he} <span class="coral">now has ${body.hColor} hair.</span>`); } else { r.push(`eye, but it was a trick of the light; ${his} hair is more or less the same.`); } diff --git a/src/uncategorized/reAnalPunishment.tw b/src/uncategorized/reAnalPunishment.tw deleted file mode 100644 index dd88e4d6b80c974f1afc89c9a24516bc613055e9..0000000000000000000000000000000000000000 --- a/src/uncategorized/reAnalPunishment.tw +++ /dev/null @@ -1,78 +0,0 @@ -:: RE anal punishment [nobr] - -<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">> - -<<set $activeSlave = $eventSlave>> -<<run App.Utils.setLocalPronouns($activeSlave)>> -<<setLocalPronouns _S.HeadGirl 2>> - -<<run Enunciate($activeSlave)>> - -<<set _clothesTemp = $activeSlave.clothes, $activeSlave.clothes = "no clothing">> -<<set _clothesTemp2 = _S.HeadGirl.clothes, _S.HeadGirl.clothes = "no clothing">> -<span id="art-frame"> -/* 000-250-006 */ -<<if $seeImages == 1>> - <div class="imageColumn"> - <div class="imageRef medImg"> - <<SlaveArt _S.HeadGirl 2 0>> - </div> - <div class="imageRef medImg"> - <<SlaveArt $activeSlave 2 0>> - </div> - </div> -<</if>> -/* 000-250-006 */ -</span> -<<set $activeSlave.clothes = _clothesTemp>> -<<set _S.HeadGirl.clothes = _clothesTemp2>> - -As you're making the rounds through your penthouse, you hear _S.HeadGirl.slaveName speaking in the tones _he2 uses to castigate misbehaving slaves in the next room. When you appear in the doorway, you have little chance to survey the situation before <<= App.UI.slaveDescriptionDialog($activeSlave)>>, apparently the miscreant, flings $himself at your feet. $He clings to one of your legs convulsively, choking on tears as $he stares up at you and tries to muster an explanation. After two false starts, $he manages to start begging. "Plea<<s>>e, <<Master>>," $he wails miserably. "Plea<<s>>e don't let _him2 rape my butt." -<br><br> -You shoot an amused glance at _S.HeadGirl.slaveName, who smiles back as _he2 explains the slave's minor sin and _his2 intention to sodomize the malefactor. _He2 does not bother to keep an edge of anticipation out of _his2 voice, and $activeSlave.slaveName cries harder and clings to you with renewed force as your Head Girl pronounces _his2 intention with cruel clarity.<<if $activeSlave.boobs > 4000>> The supplicant's breasts are so huge that $his embrace of your leg has completely surrounded it in deliciously heaving breastflesh.<<elseif $activeSlave.boobs > 1000>> The weight of the supplicant's breasts is quite noticeable as $his embrace of your leg presses them against it.<</if>> You look down at $activeSlave.slaveName. $He stares back with huge wet <<= App.Desc.eyesColor($activeSlave)>>, doing $his best to implore you with $his gaze, and scooting $his rear in towards your foot in an unconscious effort to protect it from the promised assrape. $He's quite authentically terrified; $his whole body is shaking. -<br><br> -_S.HeadGirl.slaveName is very much acting within _his2 duties, and $activeSlave.slaveName has now misbehaved twice by trying to go over your Head Girl's head by appealing to you. _S.HeadGirl.slaveName is ready to carry out the sentence: <<if canPenetrate(_S.HeadGirl) && (_S.HeadGirl.dick > 2)>>_his2 cock is fully erect, and _he2's keeping it hard with one hand. _He2 slaps its head against _his2 other palm<<elseif _S.HeadGirl.dick > 0>>since _his2 dick isn't an appropriate instrument for inflicting anal pain, _he2's got an elephantine dildo ready. _He2 slaps it against _his2 palm<<else>>_He2's got an elephantine dildo ready, and _he2 slaps it against _his2 palm<</if>>, forcing a frightened moan from $activeSlave.slaveName. - -<br><br> - -<span id="result"> -<<link "Carry on">> - <<replace "#result">> - You ignore $activeSlave.slaveName — no small feat, since the poor <<if $activeSlave.physicalAge > 30>>$woman<<else>>$girl<</if>> is clinging to your leg — and tell _S.HeadGirl.slaveName to carry on. Your Head Girl @@.mediumaquamarine;puffs up a bit with pride,@@ and orders the weeping slave to present $his anus. The <<if $activeSlave.physicalAge > 30>>$woman<<else>>$girl<</if>> does not resist, but nor does $he comply. _S.HeadGirl.slaveName jabs a thumb into $activeSlave.slaveName's side, right above $his kidney, driving the wind out of the slave with a pained grunt. $He arches $his back involuntarily and $his grip on you loosens, and _S.HeadGirl.slaveName drags $him off you. _He2 jabs $him again, depriving _his2 victim of breath completely, and then takes _him2 by the ankle, dragging the slave across the floor with comic effect. The slave leaves a trail of tears across the flooring as $he vanishes into the room. As you continue making your rounds, you hear a drawn-out howl followed by rhythmic screaming. - <<set $activeSlave.counter.anal += 1>> - <<set $analTotal += 1>> - <<set _S.HeadGirl.trust += 4, _S.HeadGirl.counter.penetrative += 1>> - <<set $penetrativeTotal += 1>> - <</replace>> -<</link>> -<br><<link "Take part">> - <<replace "#result">> - You explain $activeSlave.slaveName's double crime to $him, and tell _S.HeadGirl.slaveName to get started. Your Head Girl orders the weeping slave to present $his anus. The <<if $activeSlave.physicalAge > 30>>$woman<<else>>$girl<</if>> does not resist, but nor does $he comply. _S.HeadGirl.slaveName jabs a thumb into $activeSlave.slaveName's side, right above $his kidney, driving the wind out of the slave with a pained grunt. $He arches $his back involuntarily and $his grip on you loosens, so _S.HeadGirl.slaveName drags $him off you, telling $activeSlave.slaveName that it'll hurt less if $he cooperates and assumes the proper position. $He doesn't, so _S.HeadGirl.slaveName assfucks $him lying flat on the floor, with the poor $girl sobbing loudly as _S.HeadGirl.slaveName <<if canPenetrate(_S.HeadGirl) && (_S.HeadGirl.dick > 2)>>pistons _his2 cock in and out of $his rectum<<else>>rams the massive dildo up $his butt<</if>>. - <br><br> - After enjoying the spectacle for a while, you judge that the slave's sphincter is loose enough and tell _S.HeadGirl.slaveName to flip the bitch over. @@.hotpink;_He2 obeys, chuckling,@@ sitting _himself2 down and hauling the reluctant slave onto _his2 lap by seizing a nipple and pulling it into position so the agonized slave is forced to follow. <<if canPenetrate(_S.HeadGirl) && (_S.HeadGirl.dick > 2)>>_S.HeadGirl.slaveName reinserts _his2 dick, <<else>>_S.HeadGirl.slaveName maneuvers the dildo down over _his2 own crotch, approximating the position of a natural cock and using its base to stimulate _himself2. _He2 reinserts it,<</if>> intentionally missing twice to keep the experience unpleasant despite _his2 victim's well-fucked backdoor. - <br><br> - $activeSlave.slaveName, now facing upward rather than having $his face ground into the floor, notices for the first time that <<if $PC.dick != 0>>you've got your dick out and hard<<else>>you've donned one of your punishment-sized strap-ons<</if>>. $His <<= App.Desc.eyesColor($activeSlave)>> @@.gold;fly open with horror@@ as you kneel down and smack its head against $his <<if $activeSlave.vagina > -1>>poor pussy<<else>>stretched taint<</if>>, but $he doesn't realize how comprehensively fucked $he is until you press it against the top of $his already-stretched anal sphincter. "Plea<<s>>e no, <<Master>>! It won't fit! Plea<<s>>e <<if $activeSlave.vagina > 0>>put it in my pu<<ss>>y<<else>>let me <<s>>uck it<</if>> in<<s>>tead," $he begs desperately. "I p-promi<<s>>e I'll be a g-good - <<if $girl == "girl">> - giiAAIIEEHH," - <<elseif $girl == "boy">> - boAAIIEEHH," - <<elseif $girl == "toy">> - toAAIIEEHH," - <<else>> - <<s>>laAAIIEEHH," - <</if>> - $he howls. $He gasps for air, tears streaming down $his $activeSlave.skin cheeks, and then continues: "AAAH! FUCK! TAKE IT OUUUT! N-NOOO, PLEA<<S>>E DON'T THRU<<S>>T — AAAH! AAAH! AAAH!" - <<set $activeSlave.trust -= 5, $activeSlave.counter.anal += 1>> - <<set $analTotal += 1>> - <<set _S.HeadGirl.devotion += 4, _S.HeadGirl.counter.penetrative += 1>> - <<set $penetrativeTotal += 1>> - <</replace>> -<</link>> -<br><<link "Take pity">> - <<replace "#result">> - You tell _S.HeadGirl.slaveName you've decided to be merciful, just this once. $activeSlave.slaveName holds your leg even harder, @@.mediumaquamarine;sobbing $his thanks@@ over and over until you reach down, pat $his head, and tell $him it will be all right, calming the hysterical <<if $activeSlave.physicalAge > 30>>$woman<<else>>$girl<</if>>. _S.HeadGirl.slaveName, meanwhile, stammers an apology. _He2 hurries about _his2 business, @@.gold;badly puzzled@@ and more than a little shaken. _He2 thought _he2 had the authority to anally rape misbehaving slaves, but _he2's no longer so sure of _his2 rights and responsibilities. - <<set $activeSlave.trust += 4>> - <<set _S.HeadGirl.trust -= 15>> - <</replace>> -<</link>> -</span> diff --git a/src/uncategorized/reRelationshipAdvice.tw b/src/uncategorized/reRelationshipAdvice.tw deleted file mode 100644 index a37305a64a1706cf2f9ebbd69d0448756919ac7b..0000000000000000000000000000000000000000 --- a/src/uncategorized/reRelationshipAdvice.tw +++ /dev/null @@ -1,151 +0,0 @@ -:: RE relationship advice [nobr] - -<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week", $activeSlave = $eventSlave>> -<<run Enunciate($activeSlave)>> -<<run App.Utils.setLocalPronouns($activeSlave)>> - -<<set _i = $slaveIndices[$activeSlave.relationshipTarget]>> -<<set $subSlave = $slaves[_i]>> -<<setLocalPronouns $subSlave 2>> - -<<set _clothesTemp = $activeSlave.clothes, $activeSlave.clothes = "no clothing">> -<span id="art-frame"> -/* 000-250-006 */ -<<if $seeImages == 1>> - <div class="imageColumn"> - <div class="imageRef medImg"> - <<SlaveArt $activeSlave 2 0>> - </div> - <div class="imageRef medImg"> - <<SlaveArt $subSlave 2 0>> - </div> - </div> -<</if>> -/* 000-250-006 */ -</span> -<<set $activeSlave.clothes = _clothesTemp>> - -<<= App.UI.slaveDescriptionDialog($activeSlave)>> is standing for an inspection. $He's a good $girl, and is cooperating, but $he seems preoccupied. After ignoring it for a while, you give in to curiosity and flatly ask $him what's going on. "I'm <<s>>orry, <<Master>>," $he <<if SlaveStatsChecker.checkForLisp($activeSlave)>>lisp<<else>>mutter<</if>>s, biting $his lip. "It'<<s>> <<= App.UI.slaveDescriptionDialog($subSlave)>>." -$He hesitates, so you prompt $him, asking if $he's having trouble with $his -<<if $activeSlave.relationship == 2>> - friend. -<<elseif $activeSlave.relationship == 3>> - friend with benefits. -<<elseif $activeSlave.relationship == 4>> - lover. -<</if>> -$He quickly shakes $his head no. "N-no, <<Master>>, it's ju<<s>>t —" $He subsides into silence again, blushing and staring <<if !canSee($activeSlave)>>blankly <</if>><<if hasBothLegs($activeSlave)>>at $his feet<<else>>downwards<</if>>. Comprehension dawning, you ask $him if -<<if $activeSlave.relationship == 2>> - $he wants to be more than friends with $subSlave.slaveName. -<<elseif $activeSlave.relationship == 3>> - $he's wanting to bring emotions into relationship with $subSlave.slaveName, rather than keep it friendly and sexual. -<<elseif $activeSlave.relationship == 4>> - $he wants to make an honest _woman2 out of $subSlave.slaveName. -<</if>> -$He nods $his head quickly, still staring <<if !canSee($activeSlave)>>blankly <</if>><<if hasBothLegs($activeSlave)>>at $his feet<<else>>downwards<</if>>. $He shuts $his eyes tight and waits for you to weigh in on the situation. - -<span id="result"> -<br><<link "Break them up">> - <<replace "#result">> - <br><br> - In a cold tone of voice, you admit your irritation with this school<<= $girl>> nonsense, and tell $him $he's to stop spending time with $subSlave.slaveName. $He's unable to prevent $his eyes from flicking up at you in @@.mediumorchid;shock and horror,@@ but $he instantly lowers them again, the tears coming fast. You dismiss $him, and $he turns to go, but is so discombobulated by anguish that $he trips over $his own feet and falls with a slap of naked $activeSlave.skin flesh against the floor. Their relationship @@.lightsalmon;is over.@@ - - <<set $activeSlave.devotion -= 5>> - <<set $activeSlave.relationship = 0>> - <<set $activeSlave.relationshipTarget = 0>> - <<set $slaves[_i].relationship = 0>> - <<set $slaves[_i].relationshipTarget = 0>> - <</replace>> -<</link>> -<br><<link "Build $his confidence">> - <<replace "#result">> - <br><br> - In a warm tone of voice, you tell $him you approve of $his relationship with $subSlave.slaveName. $He raises $his chin and looks at you with @@.hotpink;growing adoration@@ as you point out how lucky $subSlave.slaveName is to have $him. You tell $him that you're not planning to intervene personally, but that you think $he really ought to pursue the relationship, that they're good for each other, and that you're confident $subSlave.slaveName feels the same way. $He thanks you prettily and leaves at a flat run, in a hurry to tell $his - <<if $activeSlave.relationship == 2>> - sexy friend - <<elseif $activeSlave.relationship == 3>> - friend with benefits - <<elseif $activeSlave.relationship == 4>> - dear lover - <</if>> - how $he feels about _him2. - <<if $activeSlave.relationship == 2>> - The next time you see them together, they're looking like they've been getting a little less sleep lately, but @@.lightgreen;can't seem to keep their hands off each other.@@ $activeSlave.slaveName mouths a silent thanks to you when $subSlave.slaveName isn't looking. - <<elseif $activeSlave.relationship == 3>> - The next time you see them together, they're @@.lightgreen;holding hands at breakfast,@@ looking almost ashamed of themselves, but not letting go. $activeSlave.slaveName mouths a silent thanks to you when $subSlave.slaveName isn't looking. - <<elseif $activeSlave.relationship == 4>> - $He comes running right back, a happy $subSlave.slaveName <<if canWalk($subSlave)>>running in with $him<<else>>being helped in by _his2 lover<</if>>. You @@.lightgreen;marry them@@ solemnly, and they embrace tightly, hugging each other close. $activeSlave.slaveName comes to face you over $his _wife2's shoulder, and $he mouths a silent, tearful thanks to you. - <</if>> - - <<set $activeSlave.devotion += 5>> - <<set $activeSlave.relationship += 1>> - <<set $slaves[_i].relationship += 1>> - <</replace>> -<</link>> -<br><<link "Bring the other _girl2 in">> - <<replace "#result">> - <br><br> - You tell $activeSlave.slaveName to wait, and page $subSlave.slaveName up to your office. $activeSlave.slaveName looks terrified, but tries to conceal $his emotions behind a happy greeting for $his - <<if $activeSlave.relationship == 2>> - friend - <<elseif $activeSlave.relationship == 3>> - friend with benefits - <<elseif $activeSlave.relationship == 4>> - lover - <</if>> - when _he2 comes in. $subSlave.slaveName knows $him well enough to detect $his inner turmoil, and asks $him what's wrong. $activeSlave.slaveName flinches and looks to you in desperation, but you just nod at $him to spit it out. After two false starts, $he manages to say, - "$subSlave.slaveName, I really want - <<if $activeSlave.relationship == 2>> - <<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "buttslut")>> - to fuck your butt." $subSlave.slaveName looks relieved that that's all it is, and <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 kisses $activeSlave.slaveName and then grinds _his2 ass against $activeSlave.slaveName's crotch. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "cumslut")>> - to <<if ($subSlave.vagina != -1)>>eat you out<<else>>blow you<</if>>." $subSlave.slaveName looks relieved that that's all it is, and <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 <<if ($subSlave.vagina != -1)>>offers _his2 pussy<<else>>flops _his2 dick at $activeSlave.slaveName<</if>> comically. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "humiliation")>> - to fuck you in public." $subSlave.slaveName looks relieved that that's all it is, and <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "masochist")>> - you to hurt me. Like, really hurt me." $subSlave.slaveName looks relieved that that's all it is, and <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 pinches one of $activeSlave.slaveName's nipples experimentally. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "sadist")>> - to hold you down." $subSlave.slaveName looks relieved that that's all it is, and <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 steps in close to $activeSlave.slaveName, takes $activeSlave.slaveName's hand<<if hasBothArms($activeSlave)>>s<</if>>, and places them around _his2 own throat. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "dom")>> - to be your top." $subSlave.slaveName looks relieved that that's all it is, and <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 sidles up to $activeSlave.slaveName, looking up at $him submissively. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "submissive")>> - to be your bottom." $subSlave.slaveName looks relieved that that's all it is, and says, <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 takes $activeSlave.slaveName's face in _his2 hand<<if hasBothArms($subSlave)>>s<</if>> and kisses $him dominantly. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "boobs")>> - to fuck your boob<<s>>." $subSlave.slaveName looks relieved that that's all it is, and says, <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 takes $activeSlave.slaveName's <<if hasBothArms($activeSlave)>>hands and places them<<else>>hand and places it<</if>> right on _his2 breasts. - <<else>> - to fuck you." $subSlave.slaveName looks relieved that that's all it is, and <<if ($subSlave.voice != 0)>>says, "Okay!"<<else>>nods.<</if>> _He2 takes $activeSlave.slaveName's <<if hasBothArms($activeSlave)>>hands and places them<<else>>hand and places it<</if>> right on _his2 breasts. - <</if>> - $activeSlave.slaveName bursts out laughing. They're now @@.lightgreen;friends with benefits.@@ - <<elseif $activeSlave.relationship == 3>> - t-to b-be your <<= $girl>>friend." $He takes a deep breath. "It'<<s>> fun, ju<<s>>t - <<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "buttslut")>> - fucking your butt. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "cumslut")>> - to <<if ($subSlave.vagina != -1)>>eating you out<<else>>blowing you<</if>>. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "humiliation")>> - fucking you in public. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "masochist")>> - having you hurt me. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "sadist")>> - holding you down. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "dom")>> - topping you. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "submissive")>> - being your bottom. - <<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "boobs")>> - fucking your boob<<s>>. - <<else>> - having <<s>>e<<x>> with you. - <</if>> - But I — I really like you." $subSlave.slaveName looks relieved, and <<if $subSlave.voice != 0>>says, "I really like you too. And you're really cute! I'd love to be your <<= _girl2>>friend." _He2<<else>>lovingly<</if>> takes $activeSlave.slaveName's hands in _hers2, and then kisses $him on the cheek. $activeSlave.slaveName crushes $subSlave.slaveName in a hug, pressing a squeak out of _him2. They're now @@.lightgreen;lovers.@@ - <<elseif $activeSlave.relationship == 4>> - - " $He stops $himself. "No, I want to do thi<<s>> right." $He takes $subSlave.slaveName's hand, and then drops to one knee. After a moment of uncomprehending shock, $subSlave.slaveName begins to cry. "Will you marry me?" $subSlave.slaveName turns to you and<<if !canTalk($subSlave)>> wordlessly<</if>> asks if it's all right with you; you nod, and _he2 turns back to $activeSlave.slaveName. <<if !canTalk($subSlave)>>_He2 gestures distractedly that $activeSlave.slaveName is being silly, and of course _he2'll marry $him, because _he2 loves $him.<<else>><<run Enunciate($subSlave)>>"O-of cour<<s>>e I'll m-marry you, <<s>>illy $girl. I love you."<</if>> $activeSlave.slaveName jumps up and crushes $subSlave.slaveName in a hug, kissing _him2 frantically through $his tears. You @@.lightgreen;marry them@@ solemnly, and they embrace tightly, hugging each other close. $activeSlave.slaveName comes to face you over $his _wife2's shoulder, and $he mouths a silent thanks to you. - <</if>> - If $activeSlave.slaveName had doubts about you, @@.mediumaquamarine;they've been addressed.@@ - - <<set $activeSlave.trust += 10>> - <<set $activeSlave.relationship += 1>> - <<set $slaves[_i].relationship += 1>> - <</replace>> -<</link>> -</span> diff --git a/src/uncategorized/reShowerPunishment.tw b/src/uncategorized/reShowerPunishment.tw deleted file mode 100644 index aa02ad62a514e356ac327363ac41db4fcaa93551..0000000000000000000000000000000000000000 --- a/src/uncategorized/reShowerPunishment.tw +++ /dev/null @@ -1,112 +0,0 @@ -:: RE shower punishment [nobr] - -<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">> - -<<set $activeSlave = $eventSlave>> -<<run App.Utils.setLocalPronouns($activeSlave)>> -<<setLocalPronouns _S.HeadGirl 2>> -<<setPlayerPronouns>> -<<run Enunciate(_S.HeadGirl)>> - -<<set _clothesTemp = $activeSlave.clothes, $activeSlave.clothes = "no clothing">> -<<set _clothesTemp2 = _S.HeadGirl.clothes, _S.HeadGirl.clothes = "no clothing">> -<span id="art-frame"> -/* 000-250-006 */ -<<if $seeImages == 1>> - <div class="imageColumn"> - <div class="imageRef medImg"> - <<SlaveArt _S.HeadGirl 2 0>> - </div> - <div class="imageRef medImg"> - <<SlaveArt $activeSlave 2 0>> - </div> - </div> -<</if>> -/* 000-250-006 */ -</span> -<<set $activeSlave.clothes = _clothesTemp>> -<<set _S.HeadGirl.clothes = _clothesTemp2>> - -<<if $HGSuite == 1>> - Looking in on your Head Girl in _his2 suite, you hear _his2 private shower running and head that way. Through the thick steam the shower makes on its hottest setting, you see -<<else>> - Passing by the showers, you see, through the steam of a very hot shower, -<</if>> -a <<if $activeSlave.height > 180>>tall, <<elseif $activeSlave.height < 150>>tiny, <</if>>$activeSlave.skin form moving busily around a _S.HeadGirl.skin figure, which is standing confidently in the middle of the warm, moist space. As you draw nearer, you identify the stationary slave as your Head Girl, <<= App.UI.slaveDescriptionDialog(_S.HeadGirl)>>. _His2 attendant is <<= contextualIntro(_S.HeadGirl, $activeSlave, true)>>, and $he's washing $his superior with a big sponge. -<<if $HGSeverity > 0>> - By virtue of not being rape, this is an unusually mild punishment by your Head Girl, if indeed that's what it is. But perhaps _he2's saving that for later. And to go by the cringing, frightened mien of the busy little bath bitch, that's probably it. -<<elseif $HGSeverity == 0>> - Your Head Girl does _his2 best to fit the punishment to the crime, so $activeSlave.slaveName's failure was likely minor. With _S.HeadGirl.slaveName's penchant for poetic justice, probably some little deficiency of personal cleanliness. -<<else>> - This is the sort of mild punishment that your regime of respect and dignity requires _him2 to use for all but the most egregious fault. Thus restricted, _he2 does _his2 best to come up with novel little degradations to keep _his2 charges on their toes. -<</if>> -<br><br> -$activeSlave.slaveName is being very thorough. When you first appeared, $he was working $his way up _S.HeadGirl.slaveName's <<if _S.HeadGirl.muscles > 30>>muscle-corded<<elseif _S.HeadGirl.weight > 10>>soft<<elseif _S.HeadGirl.vagina > -1>>feminine<<else>>pretty<</if>> thighs, having obviously started at the bottom. $He skips over _S.HeadGirl.slaveName's crotch, probably under instructions to leave it for last. It's late in your Head Girl's busy day, and you hear _his2 groan of relaxation over the running water when the stiff sponge begins to scrub back and forth across _his2 <<if _S.HeadGirl.belly >= 60000>>enormously <<if _S.HeadGirl.preg > 0>>pregnant<<else>>rounded<</if>> belly<<elseif _S.HeadGirl.weight > 190>>massively fat gut<<elseif _S.HeadGirl.belly >= 10000>>hugely <<if _S.HeadGirl.preg > 0>>pregnant<<else>>rounded<</if>> belly<<elseif _S.HeadGirl.weight > 95>>big soft belly<<elseif _S.HeadGirl.belly >= 5000>><<if _S.HeadGirl.preg > 0>>pregnant<<else>>round<</if>> belly<<elseif _S.HeadGirl.weight > 30>>soft belly<<elseif _S.HeadGirl.belly >= 1500>>bloated belly<<elseif _S.HeadGirl.muscles > 30>>shredded abs<<elseif _S.HeadGirl.weight > 10>>plush belly<<elseif _S.HeadGirl.navelPiercing > 0>>pierced belly button<<elseif _S.HeadGirl.waist < -10>><<if _S.HeadGirl.waist < -95>>absurdly <</if>>narrow waist<<else>>belly<</if>>. - -<br><br> - -<span id="result"> -<<link "Just spectate">> - <<replace "#result">> - You could strip off your suit, walk into the steam, and enjoy your slaves' ministrations, but sometimes the artistry of tastefully nude bodies is a welcome change of pace. You lean against the wall, far enough away that they remain unaware of your presence, and take in the sight. _S.HeadGirl.slaveName makes the penitent $girl do the job with Brahmanical thoroughness, cleaning $his superior's _S.HeadGirl.race body down to its very last pore. As $activeSlave.slaveName circles the Head Girl laboriously, doing $his best to ingratiate $himself by diligence, the pair of naked <<if $girl == _girl2>>$women<<else>>slaves<</if>> present a fascinating contrast. They are unclothed alike, the water streaming off their bodies without any distinction, but even an old world fool could not mistake the immense gulf between them. - <br><br> - When $activeSlave.slaveName is finally done, _S.HeadGirl.slaveName's - <<if $HGSeverity > 0>> - hands seize $him by the ears and pull $his head in for a kiss that is dominance distilled into the form of a loving gesture. Then _he2 pokes _his2 bitch in the side, forcing the slave to collapse in just the right way. - <<elseif $HGSeverity == 0>> - arms encircle $him in an embrace that is simultaneously controlling, comforting, and sexually insistent. The slave does not resist, allowing the Head Girl to run _his2 hands over the warm, wet sex slave. - <<else>> - arousal is obvious. Though the respectful regime you require secures $him from the fear of being used, $activeSlave.slaveName nonverbally offers $his superior oral, out of obvious gratitude that whatever $he did is being treated so leniently, and perhaps out of a desire to be in _S.HeadGirl.slaveName's good graces. - <</if>> - In no time at all, $activeSlave.slaveName's $activeSlave.hColor head descends to obscure _S.HeadGirl.slaveName's groin. The <<if _S.HeadGirl.face > 95>>heartrendingly gorgeous<<elseif _S.HeadGirl.face <= 95>>wonderfully pretty<<elseif _S.HeadGirl.face <= 40>>approachably lovely<<elseif _S.HeadGirl.face <= 10>>not unattractive<<else>>homely<</if>> <<if _S.HeadGirl.physicalAge > 25>>_woman2's<<else>>_girl2's<</if>> head cranes back with orgasm before long; that diligent scrub must have been quite stimulating. - <br><br> - $activeSlave.slaveName stays in the shower to clean $himself, so _S.HeadGirl.slaveName exits to see you watching the denouement. _He2 @@.hotpink;smiles,@@ murmuring a greeting, and hurries over to give you a peck on the cheek, leaning in as best _he2 can to keep _his2 moist body away from your suit. "Thi<<s>> i<<s>> the life, <<Master>>," _he2 whispers. - <<set $activeSlave.counter.oral += 1>> - <<set $oralTotal += 1>> - <<set _S.HeadGirl.devotion += 4>> - <<set _S.HeadGirl.counter.penetrative += 1>> - <<set $penetrativeTotal += 1>> - <</replace>> -<</link>> -<br><<link "Get a scrub down too">> - <<replace "#result">> - You strip off your suit and enter the shower. By the time you get in, _S.HeadGirl.slaveName's sponge scrub is almost done. _He2 turns to greet you with half-lidded eyes, well pleased with _his2 thorough scrubbing. _His2 _S.HeadGirl.skin skin shines with wet cleanliness, and _his2 _S.HeadGirl.nipples nipples begin to <<if _S.HeadGirl.nipples == "fuckable">>swell with arousal<<else>>stiffen<</if>> as _he2 sees your gaze take in _his2 nude body. _He2 brusquely orders $activeSlave.slaveName to scrub you, too, anticipating your intention. The rough, exfoliating sensation of the sponge is indeed delightful, and you close your eyes to savor the feeling as the slave rubs it up and down your calves and then the backs of your knees. - <br><br> - <<if $HGSeverity > 0>> - You detect tremors of fear in the slave<<if hasAnyArms($activeSlave)>>'s hand<<if hasBothArms($activeSlave)>>s<</if>><</if>>; $he knows that $he hasn't extirpated $his misbehavior, whatever it was, just yet. You let your Head Girl manage that, however, and _he2 does. When $activeSlave.slaveName is stuck in one position for a short time by the need to wash your thighs, you hear a gasp and open your eyes to the sight of your Head Girl crouched behind $him, giving $him an anal fingerfuck. When $activeSlave.slaveName is done washing you, your Head Girl holds the slave's head to your - <<else>> - When the washing reaches your shoulders, it becomes clumsier, and $activeSlave.slaveName's wet body begins to bump gently against your torso. Opening your eyes, you see that your Head Girl is taking $him as $he finishes your bath. $activeSlave.slaveName is doing $his best to do a good job as $he's fucked, and $he manages it reasonably well. When $he's done, _S.HeadGirl.slaveName pushes $his head down towards your - <</if>> - <<if $PC.dick != 0>>groin so $he can suck you off<<if $PC.vagina != -1>> and stroke your cunt<</if>><<else>>cunt so $he can eat you out<</if>>. $activeSlave.slaveName complies, and afterward, $he seems to feel that @@.mediumaquamarine;$he came off reasonably well;@@ it could have been worse. - <<set $activeSlave.counter.anal += 1>> - <<set $analTotal += 1>> - <<= knockMeUp($activeSlave, 10, 1, $HeadGirlID)>> - <<set $activeSlave.counter.oral += 1>> - <<set $oralTotal += 1>> - <<set $activeSlave.trust += 4>> - <<set _S.HeadGirl.counter.penetrative += 1>> - <<set $penetrativeTotal += 1>> - <</replace>> -<</link>> -<br><<link "Focus on your Head Girl">> - <<replace "#result">> - You strip off your suit and walk into the steam, producing a surprised but welcoming greeting from your Head Girl and a muffled, submissive noise from $activeSlave.slaveName. _S.HeadGirl.slaveName is held more or less stationary by the slave _he2's straddling, so you step in, hook a dominant arm around _his2 waist, and kiss _him2. There's precisely one person in this arcology who's allowed to treat _him2 as _hersP, and it's you. _He2 relaxes into you with gratitude as you shoulder the burden of being the leader in this little area of your empire, lifting it from _his2 shoulders for now. - <br><br> - You run a hand up the side of _his2 neck, bringing it to rest with your fingers cupping _him2 under the ear and your thumb running up along _his2 temple. _He2 shivers, unable to concentrate despite all _his2 poise, the ongoing oral service blending into your intense closeness. Right now, _he2's the <<if _S.HeadGirl.physicalAge > 25>>_woman2<<else>>_girl2<</if>> for you, so you snap your fingers next to the ear of the slave <<if _S.HeadGirl.vagina > -1>>eating _him2 out<<else>>blowing _him2<</if>>, point at the dropped sponge, and then point at yourself. The oral stops as $activeSlave.slaveName hurries to scrub you, starting at your feet, but your Head Girl doesn't care. You're kissing _him2. - <br><br> - _He2 gently strokes your <<if $PC.dick != 0>>rapidly hardening member, smiling into your mouth at the speed with which it stiffens<<if $PC.vagina != -1>>, and teases your pussylips with mischievous fingers<</if>><<else>>flushed cunt, smiling into your mouth at the moisture that instantly coats _his2 fingertips<</if>>. You reach out in turn, - <<if _S.HeadGirl.vagina > -1>> - caressing _his2 pussylips before slowly inserting a digit inside _his2 warmth while nuzzling _his2 clit with the knuckle of your thumb. At the first real brush against _his2 clitoris, the overstimulated _S.HeadGirl.slaveName climaxes, pulling _his2 mouth away from you to shout your name and then sobbing thanks into your ear. - <<else>> - hooking your fingers up underneath _his2 taint to grope _his2 anus. After teasing _his2 asspussy for a moment you bring your hand slowly across _his2 perineum<<if _S.HeadGirl.scrotum > 0>> until _his2 ballsack rests against your wrist<</if>>. The overstimulated _S.HeadGirl.slaveName cums the instant the butt of your hand touches the base of _his2 cock. _He2 screams your name. - <</if>> - <br><br> - _He2 isn't terribly affected by loving shower sex with you; after all, it isn't exactly novel for _him2. $activeSlave.slaveName was there to bear witness, though, scrubbing your back as _S.HeadGirl.slaveName clung to it with orgasm. $He can't help but be @@.hotpink;impressed.@@ Maybe, just maybe, that could be $him someday. $He seems distinctly uncomfortable. - <<set $activeSlave.counter.oral += 1>> - <<set $oralTotal += 1>> - <<set $activeSlave.devotion += 4>> - <<set _S.HeadGirl.counter.oral += 1>> - <<set $oralTotal += 1>> - <</replace>> -<</link>> -</span> diff --git a/src/uncategorized/reSlaveMarriage.tw b/src/uncategorized/reSlaveMarriage.tw deleted file mode 100644 index eff7e4b8e6837518ecf80811515ef00c9c9a61e5..0000000000000000000000000000000000000000 --- a/src/uncategorized/reSlaveMarriage.tw +++ /dev/null @@ -1,152 +0,0 @@ -:: RE slave marriage [nobr] - -<<set $nextButton = "Continue", $nextLink = "Next Week">> - -<<set _groomSlave = $eventSlave>> -<<run Enunciate(_groomSlave)>> -<<setLocalPronouns _groomSlave>> - -<<set _brideSlave = getSlave(_groomSlave.relationshipTarget)>> -<<setLocalPronouns _brideSlave 2>> - - -<span id="art-frame"> -/* 000-250-006 */ -<<if $seeImages == 1>> - <div class="imageColumn"> - <div class="imageRef medImg"> - <<SlaveArt _groomSlave 2 0>> - </div> - <div class="imageRef medImg"> - <<SlaveArt _brideSlave 2 0>> - </div> - </div> -<</if>> -/* 000-250-006 */ -</span> - -<<= App.UI.slaveDescriptionDialog(_groomSlave)>> and <<= App.UI.slaveDescriptionDialog(_brideSlave)>> come into your office -<<if hasAnyArms(_groomSlave) && hasAnyArms(_brideSlave)>>holding hands<<else>>doing their best to stay close to one another despite their physical limitations<</if>>. _brideSlave.slaveName looks at _groomSlave.slaveName expectantly, but _he2's terribly nervous and makes several false starts before beginning. Finally _groomSlave.slaveName musters $his courage and <<if !canTalk(_groomSlave)>>asks you with simple gestures to grant the two of them a slave marriage.<<else>>asks with $his voice cracking, "<<Master>>, would you plea<<s>>e grant u<<s>> a <<s>>lave marriage?"<</if>> - -<br><br> - -<span id="result"> -<<link "Of course">> - <<replace "#result">> - You inquire as to whether they understand the Free Cities slave marriage ceremony, and they nod, not trusting themselves to do anything more. You give them a few minutes to get dressed in special outfits you make available. When they come back, they're wearing lacy lingerie designed to resemble old world wedding dresses, but without concealing anything. - - <br><br> - <<if (_groomSlave.vagina == 0)>> - _groomSlave.slaveName is a virgin, so $he's wearing white - <<elseif (_groomSlave.pregKnown == 1)>> - _groomSlave.slaveName is pregnant, so $he's wearing light pink - <<elseif (_groomSlave.vagina < 0)>> - _groomSlave.slaveName is a sissy slave, so $he's wearing light blue - <<else>> - _groomSlave.slaveName is an experienced sex slave, so $he's wearing light pink - <</if>> - against $his _groomSlave.skin skin. - <<if (_groomSlave.chastityPenis)>> - $He has a little bow on $his chastity cage. - <<elseif canAchieveErection(_groomSlave)>> - The <<if canSee(_groomSlave)>>sight of _brideSlave.slaveName<<else>>anticipation<</if>> has $him stiffly erect, and $he's wearing a little bow around $his cockhead. - <<elseif (_groomSlave.dick > 0)>> - $He's impotent, but $he's wearing a little bow around $his useless cockhead. - <<elseif (_groomSlave.clit > 0)>> - $His prominent clit is engorged, and $he's wearing a tiny bow on it. - <<else>> - $He's wearing a demure little bow just over $his pussy. - <</if>> - <<if (_groomSlave.anus > 1)>> - $His lacy panties are designed to spread $his buttocks a little and display $his big butthole. - <<elseif (_groomSlave.anus == 0)>> - $His lacy panties cover $his virgin anus, for once. - <</if>> - <<if (_groomSlave.boobs > 1000)>> - The bra makes no attempt to cover or even support $his huge breasts, simply letting them through holes in the lace to jut proudly out. - <<elseif (_groomSlave.boobs > 500)>> - The bra supports and presents $his big breasts, leaving $his stiffening nipples bare. - <<else>> - The bra supports and presents $his breasts, giving $him more cleavage than $he usually displays. - <</if>> - <<if _groomSlave.belly >= 1500>> - $His - <<if _groomSlave.preg > 0>> - growing pregnancy - <<else>> - rounded middle - <</if>> - prominently bulges from the gap between $his lingerie. - <</if>> - - <br><br> - <<if (_brideSlave.vagina == 0)>> - _brideSlave.slaveName is a virgin, so _he2's wearing white - <<elseif (_brideSlave.pregKnown == 1)>> - _brideSlave.slaveName is pregnant, so _he2's wearing light pink - <<elseif (_brideSlave.vagina < 0)>> - _brideSlave.slaveName is a sissy slave, so _he2's wearing light blue - <<else>> - _brideSlave.slaveName is an experienced sex slave, so _he2's wearing light pink - <</if>> - against _his2 _brideSlave.skin skin. - <<if (_brideSlave.chastityPenis)>> - _He2 has a little bow on _his2 chastity cage. - <<elseif canAchieveErection(_brideSlave)>> - The <<if canSee(_brideSlave)>>sight of _groomSlave.slaveName<<else>>anticipation<</if>> has _him2 stiffly erect, and _he2's wearing a little bow around _his2 cockhead. - <<elseif (_brideSlave.dick > 0)>> - $He's impotent, but _he2's wearing a little bow around _his2 useless cockhead. - <<elseif (_brideSlave.clit > 0)>> - _His2 prominent clit is engorged, and _he2's wearing a tiny bow on it. - <<else>> - _He2's wearing a demure little bow just over _his2 pussy. - <</if>> - <<if (_brideSlave.anus > 1)>> - _His2 lacy panties are designed to spread _his2 buttocks a little and display _his2 big butthole. - <<elseif (_brideSlave.anus == 0)>> - _His2 lacy panties cover _his2 virgin anus, for once. - <</if>> - <<if (_brideSlave.boobs > 1000)>> - The bra makes no attempt to cover or even support _his2 huge breasts, simply letting them through holes in the lace to jut proudly out. - <<elseif (_brideSlave.boobs > 500)>> - The bra supports and presents _his2 big breasts, leaving _his2 stiffening nipples bare. - <<else>> - The bra supports and presents _his2 breasts, giving _him2 more cleavage than _he2 usually displays. - <</if>> - <<if _brideSlave.belly >= 1500>> - _His2 - <<if _brideSlave.preg > 0>> - growing pregnancy - <<else>> - rounded middle - <</if>> - prominently bulges from the gap between _his2 lingerie. - <</if>> - - <br><br>The procedure is simple. The two of them prostrate themselves on the ground and beg your indulgence. You state that you grant it, and hand each of them a simple gold band to be worn on the little finger in advertisement of the inferiority of their union. In turn, each of them gives the other their ring, and they kiss. You pronounce them slave spouses, and offer them the couch for their honeymoon; they @@.mediumaquamarine;thank you profusely@@ through their building tears. It's always touching to see <<if _groomSlave.bellyPreg >= 5000 && _brideSlave.bellyPreg >= 5000>>two pregnant slaves <<if hasAnyArms(_brideSlave) && hasAnyArms(_groomSlave)>>fingering<<else>>fucking<</if>> each other<<else>>a 69<</if>> in which both participants are @@.hotpink;softly crying with happiness.@@ - <<if _groomSlave.pregSource == _brideSlave.ID && _brideSlave.pregSource == _groomSlave.ID>> - When _groomSlave.slaveName and _brideSlave.slaveName tire, they rest, shoulder to shoulder, with a hand upon each other's bulging belly. Gently, they caress their growing pregnancies, knowing that they carry the other's love child. - <<elseif _brideSlave.pregSource == _groomSlave.ID>> - When they tire, _groomSlave.slaveName rests $his head upon _brideSlave.slaveName's lap and gently kisses $his lover's belly, knowing the child of their love is growing within. - <<elseif _groomSlave.pregSource == _brideSlave.ID>> - When they tire, _brideSlave.slaveName rests _his2 head upon _groomSlave.slaveName's lap and gently kisses _his2 lover's belly, knowing the child of their love is growing within. - <</if>> - <<set _groomSlave.devotion += 4>> - <<set _brideSlave.devotion += 4>> - <<set _groomSlave.trust += 4>> - <<set _brideSlave.trust += 4>> - <<set _groomSlave.counter.oral += 1>> - <<set _brideSlave.counter.oral += 1>> - <<set _groomSlave.relationship = 5>> - <<set _brideSlave.relationship = 5>> - <<set $oralTotal += 2>> - <<set $slaves[$slaveIndices[_brideSlave.ID]] = _brideSlave>> - <<set $slaves[$slaveIndices[_groomSlave.ID]] = _groomSlave>> - <</replace>> -<</link>> -<br><<link "No">> - <<replace "#result">> - You decline gently, telling them that their relationship is acceptable to you as it is. They are disappointed, but not surprised, and accept your will without a murmur. They leave as they entered, holding hands. - <</replace>> -<</link>> -</span>