diff --git a/src/005-passages/interactPassages.js b/src/005-passages/interactPassages.js index 96a797b5b1d1dff2ac02747d0d20545f80d1a6fd..70eadbd4824d506ed94f06e39785c4d38edf62a6 100644 --- a/src/005-passages/interactPassages.js +++ b/src/005-passages/interactPassages.js @@ -54,3 +54,12 @@ new App.DomPassage( return huskSwapSelection(getSlave(V.AS)); } ); + +new App.DomPassage( + "Agent Company", + () => { + V.nextButton = "Continue"; + V.nextLink = "Neighbor Interact"; + return App.UI.SlaveInteract.agentCompany(getSlave(V.AS)); + }, ["jump-from-safe"] +); diff --git a/src/npc/agent/agentCompany.js b/src/npc/agent/agentCompany.js new file mode 100644 index 0000000000000000000000000000000000000000..5d4d65093c590c53cd745ed16a6a21ca6856255c --- /dev/null +++ b/src/npc/agent/agentCompany.js @@ -0,0 +1,81 @@ +/** Reassign your agent's lover to the arcology run by your agent + * @param {App.Entity.SlaveState} lover + * @returns {DocumentFragment} + */ +App.UI.SlaveInteract.agentCompany = function(lover) { + const frag = document.createDocumentFragment(); + + const agent = getSlave(lover.relationshipTarget); + const neighborArcology = V.arcologies.find((a) => agent.ID === a.leaderID); + const {he, him, his, himself} = getPronouns(lover); + const {He2, His2, he2, him2, his2, wife2} = getPronouns(agent).appendSuffix('2'); + const {say} = getEnunciation(lover); + const {say: say2} = getEnunciation(agent); + + // make the assignment + assignJob(lover, Job.AGENTPARTNER); + + // clear rivalry if applicable + const rival = getSlave(lover.rivalryTarget); + if (rival) { + rival.rivalry = 0; + rival.rivalryTarget = 0; + } + lover.rivalry = 0; + lover.rivalryTarget = 0; + + // output text + let r = []; + r.push(`Working in ${neighborArcology.name}'s penthouse office, ${agent.slaveName} gets a video call from you. Naturally, ${his2} personal assistant program has been instructed to give these the highest priority, and your face appears in front of ${him2} immediately. ${He2} greets you properly, and asks you what ${he2} can do to serve you. You tell ${him2} you're planning to send one of your slaves over to ${his2} arcology to assist ${him2}. Exchanges of this kind are neither unusual nor particularly interesting, so a slight look of perplexity clouds ${agent.slaveName}'s face as ${he2} wonders why this merits a personal call. Normally, ${S.HeadGirl ? S.HeadGirl.slaveName : V.assistant.name} would handle it with ${him2} directly.`); + App.Events.addParagraph(frag, r); + + r = []; + r.push(`${His2} question is answered when you bring ${contextualIntro(agent, lover)} in close, putting ${him} in ${agent.slaveName}'s view. ${agent.slaveName}'s ${App.Desc.eyesColor(agent)} fly open with pleased surprise, but before ${he2} can speak, ${lover.slaveName} goes first.`); + + if (!canTalk(lover)) { + r.push(`Unable to speak ${himself}, ${he} simply makes a heart shape with ${his} ${hasBothArms(lover) ? "hands" : "hand"} in view of the video call, and blows ${his} ${lover.relationship === 4 ? "lover" : wife2} a kiss.`); + } else { + r.push(Spoken(lover, `"Hi ${lover.relationship === 4 ? 'lover' : 'sweetheart'},"`)); + r.push(`${he} ${say}s in a syrupy tone.`); + r.push(Spoken(lover, `"Miss me?"`)); + } + App.Events.addParagraph(frag, r); + + r = []; + r.push(`${agent.slaveName} smiles back at ${him}, glowing with pleasure, and responds with exaggerated arousal.`); + switch (agent.fetish) { + case "submissive": + r.push(Spoken(agent, `"Looking forward to sleeping in your arms, babe,"`), `the submissive`); + break; + case "cumslut": + r.push(Spoken(agent, `"Can't wait to kiss you, babe,"`), `the orally fixated`); + break; + case "humiliation": + r.push(Spoken(agent, `"Can't wait to take you right in the middle of the plaza here,"`), `the exhibitionist`); + break; + case "buttslut": + r.push(Spoken(agent, `"I can't wait to fuck you in your hot little ass,"`), `the anally fixated`); + break; + case "boobs": + r.push(Spoken(agent, `"Looking forward to feeling your breasts again,"`), `the boob-loving`); + break; + case "pregnancy": + r.push(Spoken(agent, `"Can't wait to share all the pregnant girls here with you,"`), `the impregnation fetishist`); + break; + case "dom": + r.push(Spoken(agent, `"Looking forward to shoving you facedown, bitch,"`), `the dominant`); + break; + case "sadist": + r.push(Spoken(agent, `"Looking forward to making you bite the pillow again, bitch,"`), `the sadistic`); + break; + case "masochist": + r.push(Spoken(agent, `"Can't wait to feel you hurt me again, babe,"`), `the masochistic`); + break; + default: + r.push(Spoken(agent, `"Babe, I can't wait to ${hasAnyArms(agent) ? "give you a hug and" : ""} tell you about ${neighborArcology.name},"`), `the loving`); + } + r.push(`leader of an entire arcology ${say2}s.`); + App.Events.addParagraph(frag, r); + + return frag; +}; diff --git a/src/npc/agent/agentCompany.tw b/src/npc/agent/agentCompany.tw deleted file mode 100644 index c8ea98825ad766a54c166e5918e623e39c211404..0000000000000000000000000000000000000000 --- a/src/npc/agent/agentCompany.tw +++ /dev/null @@ -1,61 +0,0 @@ -:: Agent Company [nobr] - -<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Neighbor Interact">> - -<<= assignJob(getSlave($AS), "live with your agent")>> - -<<if getSlave($AS).rivalry > 0>> - <<set _i = $slaveIndices[getSlave($AS).rivalryTarget]>> - <<if def _i>> - <<set $slaves[_i].rivalry = 0, $slaves[_i].rivalryTarget = 0>> - <<else>> - @@.red;Error, slave rival not found.@@ - <</if>> - <<set getSlave($AS).rivalry = 0, getSlave($AS).rivalryTarget = 0>> -<</if>> - -<<set _neighborArcology = $arcologies.find(function(s) { return $subSlave.ID == s.leaderID; })>> - -<<setLocalPronouns $subSlave 2>> - -Working in _neighborArcology.name's penthouse office, $subSlave.slaveName gets a video call from you. Naturally, _his2 personal assistant program has been instructed to give these the highest priority, and your face appears in front of _him2 immediately. _He2 greets you properly, and asks you what _he2 can do to serve you. You tell _him2 you're planning to send one of your slaves over to _his2 arcology to assist _him2. Exchanges of this kind are neither unusual nor particularly interesting, so a slight look of perplexity clouds $subSlave.slaveName's face as _he2 wonders why this merits a personal call. Normally, <<if $HeadGirlID>>_S.HeadGirl.slaveName<<else>>$assistant.name<</if>> would handle it with _him2 directly. - -<br><br> - -_His2 question is answered when you bring <<= contextualIntro($subSlave, getSlave($AS))>> in close, putting $him in $subSlave.slaveName's view. $subSlave.slaveName's <<= App.Desc.eyesColor($subSlave)>> fly open with pleased surprise, but before _he2 can speak, <<= getSlave($AS).slaveName>> goes first. -<<if !canTalk(getSlave($AS))>> - Unable to speak $himself, $he simply makes a heart shape with $his hand<<if hasBothArms(getSlave($AS))>>s<</if>> in view of the video call, and blows $his <<if getSlave($AS).relationship == 4>>lover<<else>>_wife2<</if>> a kiss. -<<else>> - <<run Enunciate(getSlave($AS))>> - "Hi <<if getSlave($AS).relationship == 4>>lover<<else>><<s>>weetheart<</if>>," $he <<say>>s in a syrupy tone. "Mi<<ss>> me?" -<</if>> - -<br><br> - -$subSlave.slaveName smiles back at $him, glowing with pleasure, and responds with exaggerated arousal. - -<<run Enunciate($subSlave)>> - -<<switch $subSlave.fetish>> -<<case "submissive">> - "Looking forward to <<s>>leeping in your arm<<s>>, babe," the submissive -<<case "cumslut">> - "Can't wait to ki<<ss>> you, babe," the orally fixated -<<case "humiliation">> - "Can't wait to take you right in the middle of the pla<<z>>a here," the exhibitionist -<<case "buttslut">> - "I can't wait to fuck you in your hot little a<<ss>>," the anally fixated -<<case "boobs">> - "Looking forward to feeling your brea<<s>>t<<s>> again," the boob-loving -<<case "pregnancy">> - "Can't wait to <<sh>>are all the pregnant girl<<s>> here with you," the impregnation fetishist -<<case "dom">> - "Looking forward to <<sh>>oving you fa<<c>>edown, bitch," the dominant -<<case "sadist">> - "Looking forward to making you bite the pillow again, bitch," the sadistic -<<case "masochist">> - "Can't wait to feel you hurt me again, babe," the masochistic -<<default>> - "Babe, I can't wait to <<if hasAnyArms($subSlave)>>give you a hug and <</if>>tell you about _neighborArcology.name," the loving -<</switch>> -leader of an entire arcology <<say>>s.