diff --git a/src/events/RESS/hotPC.js b/src/events/RESS/hotPC.js index 47d1fafb105517f402894dacefe90cc7883784e8..bc44836db45a0b754cd648eaad33ad4eacc0fd9d 100644 --- a/src/events/RESS/hotPC.js +++ b/src/events/RESS/hotPC.js @@ -53,7 +53,13 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { } else { t.push(`You take care of yourself. It would be absurd to think that there's any explicit requirement that you work out, hard and regularly, but the fact remains that the overwhelming majority of arcology owners who maintain their positions for more than a short time are physically fit. The Free Cities have a reputation for destroying old world wastrels who inherit wealth and think that makes them able to survive in an anarcho-capitalist world. Sloth and an inability to self-govern are not qualities common among your successful peers. Not to mention, it's useful to look good, and it may well prove essential to be physically capable in the near future.`); } - t.push(`You complete the final rep of your first workout of the day, rack the bar, and jump to your feet to shower, change, and see to your empire. The motion brings your field of view up, and you notice for the first time that ${App.UI.DOM.slaveDescriptionDialog(eventSlave)} is frozen in the open doorway, having seen something in the workout room that caught ${his} attention as ${he} passed by. ${His} eyes are fixed on your`); + + App.Events.addParagraph(node, t); + t = []; + + t.push(`You complete the final rep of your first workout of the day, rack the bar, and jump to your feet to shower, change, and see to your empire. The motion brings your field of view up, and you notice for the first time that`); + t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave)); + t.push(`is frozen in the open doorway, having seen something in the workout room that caught ${his} attention as ${he} passed by. ${His} eyes are fixed on your`); if (PC.belly >= 120000) { t.push(`massive pregnancy with almost painful intensity. You can't really blame ${him}; you're the perfect image of a fertile goddess and your overfilled belly is coated in sweat. Even though you can't work your core any longer, you still take your workouts seriously, something most pregnant women would shy away from. You flush a little at what must ${he} must have thought; will all the grunting and effort, ${he} likely thought you were giving birth.`); } else if (PC.belly >= 100000) { @@ -67,13 +73,13 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { } else if (PC.belly >= 5000) { t.push(`greatly swollen middle and its stretched abdominal muscles with almost painful intensity. You can't really blame ${him}; despite how big you've gotten, you still have some abs left.`); } else if (PC.boobs >= 1400) { - t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra's three sizes too small, forcing your enormous ${PC.boobsImplant > 0 ? "fake breasts to balloon around the strained material" : "breasts to lewdly bulge around the strained material"}, soaked in your sweat ${PC.lactation > 0 ? "and breast milk" : ""}, and your nipples are clearly defined through the stretched thin fabric.`); + t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra is three sizes too small, forcing your enormous ${PC.boobsImplant > 0 ? "fake breasts to balloon around the strained material" : "breasts to lewdly bulge around the strained material"}, soaked in your sweat${PC.lactation > 0 ? " and breast milk" : ""}, and your nipples are clearly defined through the stretched thin fabric.`); } else if (PC.boobs >= 1200) { - t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra's two sizes too small, allowing your huge ${PC.boobsImplant > 0 ? "fake" : ""} breasts to lewdly bulge out of them, soaked in your sweat ${PC.lactation > 0 ? "and breast milk" : ""}, and your nipples are clearly visible as bumps in the strained material.`); + t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra is two sizes too small, allowing your huge ${PC.boobsImplant > 0 ? "fake" : ""} breasts to lewdly bulge out of them, soaked in your sweat${PC.lactation > 0 ? " and breast milk" : ""}, and your nipples are clearly visible as bumps in the strained material.`); } else if (PC.boobs >= 1000) { - t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra's one size too small, allowing your big ${PC.boobsImplant > 0 ? "fake" : ""} breasts to bulge out of them, soaked in your sweat ${PC.lactation > 0 ? "and breast milk" : ""}, and your nipples are clearly visible as bumps in the taut material.`); + t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra is one size too small, allowing your big ${PC.boobsImplant > 0 ? "fake" : ""} breasts to bulge out of them, soaked in your sweat${PC.lactation > 0 ? " and breast milk" : ""}, and your nipples are clearly visible as bumps in the taut material.`); } else if (PC.boobs >= 300) { - t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra's soaked in your sweat ${PC.lactation > 0 ? "and breast milk" : ""} and your nipples are clearly visible as bumps in the tight material.`); + t.push(`sports bra clad boobs with almost painful intensity. You can't really blame ${him}; the bra is soaked in your sweat ${PC.lactation > 0 ? "and breast milk" : ""} and your nipples are clearly visible as bumps in the tight material.`); } else if (PC.belly >= 1500) { t.push(`swollen middle and its abdominal muscles with almost painful intensity. You can't really blame ${him}; despite your growing child ${PC.pregType > 1 ? "ren" : ""}, they're still pretty cut.`); } else if (PC.belly >= 100) { @@ -92,15 +98,11 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { t.push(`abdominal muscles with almost painful intensity. You can't really blame ${him}; they're pretty cut, and your bare chest is coated in a light sheen of glistening sweat.`); } } - App.Events.addParagraph(node, t); - - t = []; - t.push(`${His} ${App.Desc.eyesColor(eventSlave)} track up your torso comically until ${he}'s looking into your eyes. ${He} stares dumbly at you for a moment before realizing what ${he}'s doing and blushing with embarrassment. ${He}'s reasonably well broken, but is still coming to terms with ${his} sexual place as a ${V.desc}.`); App.Events.addParagraph(node, t); - t = []; + t.push(`${His} ${App.Desc.eyesColor(eventSlave)} track up your torso comically until ${he}'s looking into your eyes. ${He} stares dumbly at you for a moment before realizing what ${he}'s doing and blushes with embarrassment. ${He}'s reasonably well broken, but is still coming to terms with ${his} sexual place as a ${SlaveTitle(eventSlave)}.`); t.push(`In particular, ${he} hasn't gotten used to the effects of ${his} training, the slave food, and the atmosphere in the penthouse, all of which are serving to fuel an acceleration of ${his} sex drive.`); if (!canTalk(eventSlave)) { t.push(`${He} uses shaky ${hasBothArms(eventSlave) ? "hands" : "gestures"} to ask you to fuck ${him},`); @@ -109,15 +111,16 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { } t.push("and turns to flee."); + App.Events.addParagraph(node, t); App.Events.addResponses(node, [ new App.Events.Result("Not so fast", caught), - new App.Events.Result(`Let ${him} go`, release), + new App.Events.Result(`Let ${him} go`, released), ]); function caught() { const belly = bellyAdjective(eventSlave); - let t = []; + t = []; t.push(`As ${he} goes, ${he} follows the natural human impulse when embarrassed, and turns ${his} head resolutely away from you, trying very hard to forget making such a fool of ${himself}. This means that ${he} does not see your rapid, predatory pursuit of ${him}, nor does ${he} ${canHear(eventSlave) ? "hear" : "notice"} your careful stride across the flooring. ${His} first indication that ${he}'s prey is when your hands grab ${him} around ${his}`); if (eventSlave.bellyPreg >= 5000) { t.push(`pregnant belly`); @@ -155,29 +158,32 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { t.push(PC.title === 0 ? "sweaty, flat chest." : "sweaty, bare chest."); } t.push(`${He} stiffens ${eventSlave.voice !== 0 ? "and shrieks" : ""} with surprise, but relaxes obediently within your embrace. Your warm, animal presence has an immediate effect. You hear ${him} suck in ${his} breath and then feel ${him} begin to breathe increasingly hard as your ${canSmell(eventSlave) ? "scent" : "body heat"} sinks into ${him} and ${his} embarrassment fades.`); + App.Events.addParagraph(node, t); App.Events.addResponses(node, [ ((canDoVaginal(eventSlave) || canDoAnal(eventSlave))) ? new App.Events.Result(`Fuck ${him} right here`, fuck, fuckNote()) - : new App.Events.Result(), + : new App.Events.Result(fuckNote()), new App.Events.Result(`Have ${him} lick you clean`, lick), ]); function fuck() { + t = []; + if (PC.title === 0 || $PC.boobs >= 300 || $PC.belly >= 1500) { t.push("Despite your feminine appearance, you have capable hands."); } else { t.push("You have strong hands to go with your masculine appeal."); } t.push(`They rove across ${his} front, hugging ${him} hard against you as you massage and grope.`); - if (activeSlave.boobs > 4000) { + if (eventSlave.boobs > 4000) { t.push(`${His} tits are so big that hefting them creates a bit of a burn in your biceps, in addition to making ${him} writhe against you.`); - } else if (activeSlave.belly >= 10000) { + } else if (eventSlave.belly >= 10000) { t.push(`The skin that covers ${his} swollen belly is erotically taught, and you run your fingers across it possessively.`); - } else if (activeSlave.nipples === "inverted") { + } else if (eventSlave.nipples === "inverted") { t.push(`You wrap your hands around the bases of ${his} inverted nipples, and use your strong grip to stimulate and squeeze them until they protrude, much to the writhing slave's anguish.`); - } else if (activeSlave.nipples === "fuckable") { + } else if (eventSlave.nipples === "fuckable") { t.push(`You slip your fingers into ${his} nipples and spread them wide, making the slave writhe and buck against you.`); } else { t.push(`You pinch ${his} nipples and tug them hard, making the slave writhe and buck against you.`); @@ -190,17 +196,17 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { } else { t.push(`You `); } - if (activeSlave.dick > 0 && !(eventSlave.chastityPenis)) { + if (eventSlave.dick > 0 && !(eventSlave.chastityPenis)) { t.push("cock,"); } else if (canDoVaginal(eventSlave)) { t.push("pussy,"); - } else if (activeSlave.scrotum > 0 && eventSlave.balls > 1) { + } else if (eventSlave.scrotum > 0 && eventSlave.balls > 1) { t.push("testicles,"); } else if ((eventSlave.chastityPenis === 1)) { t.push("caged dick,"); } else if ((eventSlave.chastityVagina)) { t.push("chastity belt,"); - } else if (activeSlave.vagina === -1) { + } else if (eventSlave.vagina === -1) { t.push("perineum,"); } t.push(`making ${him} play with ${himself}. Meanwhile, you look after your womanhood with your other hand, schlicking expertly while holding ${him} close, ensuring that ${he} feels every motion of what you're doing. When your fingers are thoroughly coated with pussyjuice, you drop ${his} hand, letting ${him} continue masturbating on ${his} own, and then use the freed hand to replace the one you're using to touch yourself. Then, you take the wet fingers and push them into ${his} mouth; ${he} willingly sucks them clean, using ${his} tongue to gather every trace of your secretions. You gather sweat from between your breasts, and make ${him} suck that off ${his} fingers too. When ${he} orgasms, you shove ${him} against the wall and hump against ${him} and your hand both, climaxing yourself.`); @@ -225,7 +231,7 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { } else { t.push((canDoVaginal(eventSlave)) ? fuckVagina() : fuckAss()); } - } else if (activeSlave.belly >= 300000) { + } else if (eventSlave.belly >= 300000) { t.push(`You'd like to lift ${him} up into a standing fuck, but even you aren't strong enough to lift ${his} extreme weight. Instead, you choose to have ${him} ride you; supporting ${his} ${belly} middle is a workout in its own right.`); if (canDoVaginal(eventSlave) && canDoAnal(eventSlave)) { t.push(`After a while, you push ${him} up as high as you can, freeing your member, and then lower ${him} back down again, forcing yourself up ${his} butt instead despite the slave's anxious begging.`); @@ -234,7 +240,7 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { } else { t.push((canDoVaginal(eventSlave)) ? fuckVagina() : fuckAss()); } - } else if (activeSlave.belly >= 100000) { + } else if (eventSlave.belly >= 100000) { t.push(`Once you're hilted, you hoist ${him} up by the underarms, shifting your stance to handle ${his} ${belly} stomach's weight, and hold ${him} in midair, impaled on your dick. You can't pound ${him} all that hard in this challenging position, but the effort of holding ${him} this way forces you to work out hard, producing an excellent sensation. ${PC.vagina !== -1 ? `The position angles your dick upward, producing a lovely massaging sensation in your pussy as you slide in and out of ${him}.` : ""}`); if (canDoVaginal(eventSlave) && canDoAnal(eventSlave)) { t.push(`After a while, you lift ${him} up as high as you can, freeing your member, and then lower ${him} back down again, forcing yourself up ${his} butt instead despite the slave's anxious begging.`); @@ -272,6 +278,8 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { } function lick() { + t = []; + t.push(`You take ${him} by the hand and ${PC.belly >= 10000 ? "waddle" : "walk"} towards the shower. The sudden loss of your closeness jerks ${him} rudely out of ${his} sexual reverie, but ${he} follows willingly, perhaps distracted by the view as you shed your workout clothes on the way. When you get there, you pull ${him} in with you, but you do not turn on the water. Instead, you tell ${him} to wash you. Not understanding, ${he} turns to switch on the shower, but you catch ${him}, and insert two sweaty fingers into the slave's compliant mouth. ${He} sucks on them, taking refuge in the simple task, and then understands what you mean. ${He} runs ${his} tongue up your arm, sucking the salty sweat off you as best ${he} can. Soon, ${he} bends down and heads for your`); if (PC.dick !== 0 && PC.vagina !== -1) { t.push("cock and cunt"); @@ -310,7 +318,7 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { t.push(`as the water plays over you both. After looking up and letting the water cascade down your face for a long moment, you quietly tell ${him} to masturbate before opening your mouth to drink from the downpour. With your eyes closed against the stream, your only indications that ${he}'s obeying the command is a slight increase in the force with which ${he} sucks, and a faint`); if (canDoVaginal(eventSlave)) { t.push("schlicking"); - } else if (activeSlave.dick > 0 && canAchieveErection(eventSlave) && !(eventSlave.chastityPenis)) { + } else if (eventSlave.dick > 0 && canAchieveErection(eventSlave) && !(eventSlave.chastityPenis)) { t.push("wanking"); } else { t.push("rubbing"); @@ -320,12 +328,12 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent { seX(eventSlave, "oral", PC, "penetrative"); return t; } - return t; } - function release() { - let t = []; - t.push(`You let ${him} go, and ${he} hurries off to go on with ${his} day. But ${his} attraction to you does not go away, and neither does the embarrassment of having made a fool of ${himself} in front of you. The experience leaves ${him} <span class="trust dec">a bit worried</span> about how life as your slave is affecting ${him}, but <span class="devotion inc">increasingly infatuated with you.</span> Before long, love will conquer doubt.`); + + function released() { + t = []; + t.push(`You let ${him} go, and ${he} hurries off to go on with ${his} day. But ${his} attraction to you does not go away, and neither does the embarrassment of having made a fool of ${himself} in front of you. The experience leaves ${him} <span class="trust dec">a bit worried</span> about how life as your slave is affecting ${him}, but <span class="devotion inc">increasingly infatuated</span> with you. Before long, love will conquer doubt.`); eventSlave.devotion += 4; eventSlave.trust -= 2; return t;