diff --git a/src/events/nonRandom/daughters/pCoupCollaboration.js b/src/events/nonRandom/daughters/pCoupCollaboration.js index 31bad5d506ee11be49bbbb674abe818950c5b7a4..414501fb071b0f42ff8051a2db29630c4d106b8e 100644 --- a/src/events/nonRandom/daughters/pCoupCollaboration.js +++ b/src/events/nonRandom/daughters/pCoupCollaboration.js @@ -1,36 +1,45 @@ - :: P coup collaboration [nobr] +App.Events.PCoupCollaboration = class PCoupCollaboration extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.collaboration === 1, + () => V.traitorType !== "trapper" + ]; + } + + execute(node) { + let r = []; + const { + His, He, + his, he, him + } = getPronouns(V.traitor ? V.traitor : {pronoun: App.Data.Pronouns.Kind.neutral}); if (V.traitor !== 0) { - _weeks = V.traitorWeeks, _pregWeeks = V.traitorWeeks, V.traitorWeeks = 0; - <<setLocalPronouns V.traitor>> - Enunciate(V.traitor); + const _pregWeeks = V.traitorWeeks; + V.traitorWeeks = 0; - WombProgress(V.traitor, _pregWeeks, _pregWeeks); - r.push(`/* In all cases should be done */`); + WombProgress(V.traitor, _pregWeeks, _pregWeeks); /* In all cases should be done */ WombUpdatePregVars(V.traitor); - if (WombBirthReady(V.traitor, V.traitor.pregData.normalBirth) > 0 ) { - r.push(`/* normal birth case, partial birthers not supported*/`); - V.traitor.preg = -1, V.traitor.counter.birthsTotal += WombBirthReady(V.traitor, V.traitor.pregData.normalBirth); + if (WombBirthReady(V.traitor, V.traitor.pregData.normalBirth) > 0) { /* normal birth case, partial birthers not supported*/ + V.traitor.preg = -1; + V.traitor.counter.birthsTotal += WombBirthReady(V.traitor, V.traitor.pregData.normalBirth); WombFlush(V.traitor); - } else {/* still pregnant slave */ - V.traitor.preg = WombMaxPreg(V.traitor); - r.push(`/*most ready fetus is a base*/`); - V.traitor.pregWeek = WombMaxPreg(V.traitor); - r.push(`/*most ready fetus is a base*/`); + } else { /* still pregnant slave */ + V.traitor.preg = WombMaxPreg(V.traitor); /* most ready fetus is a base*/ + V.traitor.pregWeek = WombMaxPreg(V.traitor); /* most ready fetus is a base*/ } - SetBellySize(V.traitor); - r.push(`/*In any case it's useful to do.*/`); + SetBellySize(V.traitor); /* In any case it's useful to do.*/ } - You are awakened in the middle of the night by an odd darkness. All the normal lights of your healthy arcology are out. Main power has gone out, and you claw your way in the darkness to the video feeds, running on emergency backup. + r.push(`You are awakened in the middle of the night by an odd darkness. All the normal lights of your healthy arcology are out. Main power has gone out, and you claw your way in the darkness to the video feeds, running on emergency backup.`); - <br><br> + App.Events.addParagraph(node, r); + r = []; - Armed rebels are running unchecked down the corridors. + r.push(`Armed rebels are running unchecked down the corridors.`); if (V.mercenaries > 0) { r.push(`Your mercenaries' quarters is locked down, but from the interior feeds you can see a few of them lying in their beds or slumped in chairs as gas is pumped through the ventilation systems.`); } - r.push(`The security drones are actively assisting the rebels.`); + r.push(`The security drones are actively assisting the rebels.`); if (V.traitor !== 0) { r.push(`You can see`); if (V.traitor.bellyPreg >= 100000) { @@ -47,129 +56,103 @@ r.push(`trying to sabotage a stockpile of explosives.`); } else if (V.traitorType === "horror") { r.push(`encouraging ${his} fellow fighters`); - if (canTalk(V.traitor)) { - r.push(`with yells`); - } - r.push(`from the back lines.`); + if (canTalk(V.traitor)) { + r.push(`with yells`); + } + r.push(`from the back lines.`); } else if (V.traitorType === "defiant") { r.push(`encouraging ${his} fellow fighters`); - if (canTalk(V.traitor)) { - r.push(`with yells`); - } - r.push(`and spearheading the charge`); - if (V.traitor.bellyPreg >= 15000) { - r.push(`as best ${he} can`); - } - r.push(`.`); + if (canTalk(V.traitor)) { + r.push(`with yells`); + } + r.push(`and spearheading the charge${(V.traitor.bellyPreg >= 15000) ? ` as best ${he} can` : ""}.`); } else { - r.push(`encouraging ${his} fellow fighters`); - if (canTalk(V.traitor)) { - r.push(`with yells`); - } - r.push(`, and when that fails, leading them by example`); - if (V.traitor.bellyPreg >= 15000) { - r.push(`as best ${he} can`); - } - r.push(`.`); + r.push(`encouraging ${his} fellow fighter${(canTalk(V.traitor)) ? " with yells" : ""}, and when that fails, leading them by example${(V.traitor.bellyPreg >= 15000) ? ` as best ${he} can` : ""}.`); } } - In areas already controlled by the Daughters, slaveowners are being summarily shot in the streets. " - V.properTitle() - r.push(`," ${V.assistant.name} says, "the Daughters of Liberty are in complete control of all arcology systems. Remain here."`); + r.push(`In areas already controlled by the Daughters, slaveowners are being summarily shot in the streets. "${properTitle()}," ${V.assistant.name} says, "the Daughters of Liberty are in complete control of all arcology systems. Remain here."`); - <br><br> + App.Events.addParagraph(node, r); + r = []; - After half an hour of watching the executions, + r.push(`After half an hour of watching the executions,`); if (V.traitor !== 0) { + const { + say: say + } = getEnunciation(V.traitor); if (V.traitorType === "agent") { - r.push(`${V.traitor.slaveName}`); - if (V.traitor.bellyPreg >= 10000) { - r.push(`waddles`); - } else { - r.push(`steps`); - } - r.push(`slowly into your office, dreading what is to come. You greet ${him} by name and ${he} breaks down in tears. As ${he} takes a shot at the nearest Daughter, they open fire on the both of you. Your cause of death is that of many an oppressor — an aneurysm of the cerebellum, in 9mm Parabellum.`); + r.push(V.traitor.slaveName); + if (V.traitor.bellyPreg >= 10000) { + r.push(`waddles`); + } else { + r.push(`steps`); + } + r.push(`slowly into your office, dreading what is to come. You greet ${him} by name and ${he} breaks down in tears. As ${he} takes a shot at the nearest Daughter, they open fire on the both of you. Your cause of death is that of many an oppressor — an aneurysm of the cerebellum, in 9mm Parabellum.`); } else if (V.traitorType === "horror") { - r.push(`${V.traitor.slaveName}`); - if (V.traitor.bellyPreg >= 10000) { - r.push(`waddles`); - } else { - r.push(`steps`); - } - r.push(`gingerly into your office, not happy to be here once more. You greet ${him} by name, in response to which ${he} cowers in fear`); - if (hasAnyArms(V.traitor)) { - r.push(`and drops ${his} weapon`); - } - r.push(`. Not interested in giving you an opportunity, ${his} comrade takes the shot. Your cause of death is that of many an oppressor — an aneurysm of the cerebellum, in 9mm Parabellum.`); + r.push(V.traitor.slaveName); + if (V.traitor.bellyPreg >= 10000) { + r.push(`waddles`); + } else { + r.push(`steps`); + } + r.push(`gingerly into your office, not happy to be here once more. You greet ${him} by name, in response to which ${he} cowers in fear${(hasAnyArms(V.traitor)) ? ` and drops ${his} weapon` : ""}. Not interested in giving you an opportunity, ${his} comrade takes the shot. Your cause of death is that of many an oppressor — an aneurysm of the cerebellum, in 9mm Parabellum.`); } else if (V.traitorType === "defiant") { - r.push(`${V.traitor.slaveName}`); - if (V.traitor.bellyPreg >= 10000) { - r.push(`waddles`); - } else { - r.push(`strides`); - } - r.push(`confidently into your office. You greet ${him} by name, in response to which ${he}`); - if (hasAnyArms(V.traitor)) { - r.push(`deals`); - } else { - r.push(`orders one of ${his} comrades to give`); - } - r.push(`you a vicious open-handed slap that knocks you out of your chair.`); + r.push(V.traitor.slaveName); + if (V.traitor.bellyPreg >= 10000) { + r.push(`waddles`); + } else { + r.push(`strides`); + } + r.push(`confidently into your office. You greet ${him} by name, in response to which ${he}`); + if (hasAnyArms(V.traitor)) { + r.push(`deals`); + } else { + r.push(`orders one of ${his} comrades to give`); + } + r.push(`you a vicious open-handed slap that knocks you out of your chair.`); if (!canTalk(V.traitor)) { r.push(`${His} last words to you are nothing more than a rude gesture.`); } else if (V.traitor.slaveName !== V.traitor.birthName) { - "My name," ${he} - ${say} - r.push(`s, "i`); - <<s>> - if (SlaveStatsChecker.checkForLisp(V.traitor)) { - r.push(`${V.lispReplace(V.traitor.birthName)}`); - r.push(`.`); - } else { - r.push(`${V.traitor.birthName}.`); - } - r.push(`I'm going to enjoy thisafter what you did to me."`); + r.push( + Spoken(V.traitor, `"My name,"`), + `${he} ${say}s,`, + Spoken(V.traitor, `"is ${V.traitor.birthName}. I'm going to enjoy this after what you did to me."`) + ); } else { - "You - <<s>> - r.push(`tupid fuck," ${he}`); - ${say} - r.push(`s. "I'm going to enjoy thisafter what you did to me."`); + r.push( + Spoken(V.traitor, `"You stupid fuck,"`), + `${he} ${say}s.`, + Spoken(V.traitor, `"I'm going to enjoy this after what you did to me."`) + ); } r.push(`Your cause of death is that of many an oppressor — an aneurysm of the cerebellum, in 9mm Parabellum.`); } else { - r.push(`${V.traitor.slaveName}`); - if (V.traitor.bellyPreg >= 10000) { - r.push(`waddles`); - } else { - r.push(`strides`); - } - r.push(`confidently into your office. You greet ${him} by name, in response to which ${he}`); - if (hasAnyArms(V.traitor)) { - r.push(`deals`); - } else { - r.push(`orders one of ${his} comrades to give`); - } - r.push(`you a vicious open-handed slap that knocks you out of your chair.`); + r.push(V.traitor.slaveName); + if (V.traitor.bellyPreg >= 10000) { + r.push(`waddles`); + } else { + r.push(`strides`); + } + r.push(`confidently into your office. You greet ${him} by name, in response to which ${he}`); + if (hasAnyArms(V.traitor)) { + r.push(`deals`); + } else { + r.push(`orders one of ${his} comrades to give`); + } + r.push(`you a vicious open-handed slap that knocks you out of your chair.`); if (!canTalk(V.traitor)) { r.push(`${He} wastes no time trying to speak to the likes of you.`); } else if (V.traitor.slaveName !== V.traitor.birthName) { - "My name," ${he} - ${say} - r.push(`s, "i`); - <<s>> - if (SlaveStatsChecker.checkForLisp(V.traitor)) { - r.push(`${V.lispReplace(V.traitor.birthName)}`); - r.push(`."`); - } else { - r.push(`${V.traitor.birthName."}`); - } + r.push( + Spoken(V.traitor, `"My name,"`), + `${he} ${say}s,`, + Spoken(V.traitor, `"is ${V.traitor.birthName}."`) + ); } else { - "You - <<s>> - r.push(`tupid fuck," ${he}`); - ${say} - r.push(`s.`); + r.push( + Spoken(V.traitor, `"You stupid fuck,"`), + `${he} ${say}s.` + ); } r.push(`Your cause of death is that of many an oppressor — an aneurysm of the cerebellum, in 9mm Parabellum.`); } @@ -177,8 +160,10 @@ r.push(`the leader of the assault strides confidently into your office, deals you a vicious open-handed slap that knocks you out of your chair, and holds a pistol to your forehead. Your cause of death is that of many an oppressor — an aneurysm of the cerebellum, in 9mm Parabellum.`); } - <br><br> + App.Events.addParagraph(node, r); - ''GAME OVER'' + App.UI.DOM.appendNewElement("p", node, "GAME OVER", "bold"); V.ui = "start"; + } +}; diff --git a/src/events/nonRandom/daughters/pHackerSupport.js b/src/events/nonRandom/daughters/pHackerSupport.js index 7496ce5578c65efc316202c41b6f4bbb7dc5dcfe..fce7acd8b94f8dd4e3f5efb82da46d39f2579514 100644 --- a/src/events/nonRandom/daughters/pHackerSupport.js +++ b/src/events/nonRandom/daughters/pHackerSupport.js @@ -1,185 +1,224 @@ - :: P hacker support [nobr] +App.Events.PHackerSupport = class PHackerSupport extends App.Events.BaseEvent { + execute(node) { + let r = []; - V.nextButton = "End Call", V.hackerSupport = 0; + V.nextButton = "End Call"; + V.hackerSupport = 0; - <<setAssistantPronouns>> V.fcnn.push("...the Daughters of Liberty as 'cyberterrorists', after an attempted..."); - While you are reviewing your information security posture in light of the Daughters of Liberty and their apparent ability to get into your systems, you receive yet another well-secured message unannounced. To your surprise, it isn't the Daughters. It's a video call from a rather interesting individual. She is quite pretty, and has a variety of facial tattoos and piercings; her face is androgynous enough that you aren't entirely sure what gender (probably) she considers herself. Her pale skin is illuminated by the diffuse glow from what's clearly a huge bank of monitors, and the clacking sound of a traditional mechanical keyboard can be heard over the line. + r.push(`While you are reviewing your information security posture in light of the Daughters of Liberty and their apparent ability to get into your systems, you receive yet another well-secured message unannounced. To your surprise, it isn't the Daughters. It's a video call from a rather interesting individual. She is quite pretty, and has a variety of facial tattoos and piercings; her face is androgynous enough that you aren't entirely sure what gender (probably) she considers herself. Her pale skin is illuminated by the diffuse glow from what's clearly a huge bank of monitors, and the clacking sound of a traditional mechanical keyboard can be heard over the line.`); - <br><br> - - "Hi!" she says cheerfully. "I seen you been contacted by these Daughters cunts. They been after me too. They're pretty decent at cyberwarfare, but I'm fuckin' better." A momentary discomfort crosses her face, and she shifts a little in her seat. "They're building up for somethin' big. Wouldn't a' contacted you at all, let us both fight our own fights, but I gotta short fuse on this vulnerability and I need to bribe a weak link. Your money can get me in; my skills can fuck 'em up. What do you say? - if (V.traitorType === "hostage") { - r.push(`If it sweetens the deal at all, I can even get ${V.traitor.slaveName} out of hot water. Not the brightest, that one.`); - }" + App.Events.addParagraph(node, r); + r = []; + r.push(`"Hi!" she says cheerfully. "I seen you been contacted by these Daughters cunts. They been after me too. They're pretty decent at cyberwarfare, but I'm fuckin' better." A momentary discomfort crosses her face, and she shifts a little in her seat. "They're building up for somethin' big. Wouldn't a' contacted you at all, let us both fight our own fights, but I gotta short fuse on this vulnerability and I need to bribe a weak link. Your money can get me in; my skills can fuck 'em up. What do you say?${(V.traitor && V.traitorType === "hostage") ? `If it sweetens the deal at all, I can even get ${V.traitor.slaveName} out of hot water. Not the brightest, that one.` : ""}"`); if (V.assistant.personality > 0) { - r.push(`${V.capFirstChar(V.assistant.name)}`); - r.push(`has been trying to track the contact, but fails horribly. The hacker glances at${ _hisA}`); + const { + hisA, girlA, womanA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + r.push(`${capFirstChar(V.assistant.name)} has been trying to track the contact, but fails horribly. The hacker glances at ${hisA}`); switch (V.assistant.appearance) { - case "monstergirl": - r.push(`frustrated little monster`); - V._girlA - r.push(`avatar`); - case "shemale": - r.push(`angry little shemale avatar`); - case "amazon": - r.push(`raging little amazon avatar`); - case "businesswoman": - r.push(`mortified little business`); - V._womanA - r.push(`avatar`); - case "fairy" "pregnant fairy": - r.push(`pouting little fairy avatar`); - case "goddess": - r.push(`scornful little goddess avatar`); - case "hypergoddess": - r.push(`scornful "little" goddess avatar`); - case "loli": - r.push(`pouting little${ _girlA} avatar`); - case "preggololi": - r.push(`pouting little${ _girlA} avatar`); - case "schoolgirl": - r.push(`embarrassed little school`); - V._girlA - r.push(`avatar`); - case "angel": - r.push(`terrified little angel avatar`); - case "cherub": - r.push(`terrified little cherub avatar`); - case "incubus": - r.push(`indignant little incubus avatar`); - case "succubus": - r.push(`frustrated little succubus avatar`); - case "imp": - r.push(`pouting little imp avatar`); - case "witch": - r.push(`frustrated little witch avatar`); - case "ERROR_1606_APPEARANCE_FILE_CORRUPT": - r.push(`expressionless little corrupted avatar`); - default: - r.push(`symbol`); + case "monstergirl": + r.push(`frustrated little monster${girlA} avatar`); + break; + case "shemale": + r.push(`angry little shemale avatar`); + break; + case "amazon": + r.push(`raging little amazon avatar`); + break; + case "businesswoman": + r.push(`mortified little business${womanA} avatar`); + break; + case "fairy": + case "pregnant fairy": + r.push(`pouting little fairy avatar`); + break; + case "goddess": + r.push(`scornful little goddess avatar`); + break; + case "hypergoddess": + r.push(`scornful "little" goddess avatar`); + break; + case "loli": + r.push(`pouting little ${girlA} avatar`); + break; + case "preggololi": + r.push(`pouting little ${girlA} avatar`); + break; + case "schoolgirl": + r.push(`embarrassed little school${girlA} avatar`); + break; + case "angel": + r.push(`terrified little angel avatar`); + break; + case "cherub": + r.push(`terrified little cherub avatar`); + break; + case "incubus": + r.push(`indignant little incubus avatar`); + break; + case "succubus": + r.push(`frustrated little succubus avatar`); + break; + case "imp": + r.push(`pouting little imp avatar`); + break; + case "witch": + r.push(`frustrated little witch avatar`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`expressionless little corrupted avatar`); + break; + default: + r.push(`symbol`); } r.push(`and chuckles. "Haha, cute."`); } - <br><br> + App.Events.addParagraph(node, r); + r = []; - As she finishes speaking, another spasm distorts her expression, and then she suddenly relaxes. After a moment, she looks down, out of your field of view, and hisses, - if (V.seeDicks === 0) {"Keep licking, bitch, I like aftershocks. Work my clit, or it's your asshole." - } else {"Swallow, bitch. Every fucking drop, or it's your asshole." + r.push(`As she finishes speaking, another spasm distorts her expression, and then she suddenly relaxes. After a moment, she looks down, out of your field of view, and hisses,`); + if (V.seeDicks === 0) { + r.push(`"Keep licking, bitch, I like aftershocks. Work my clit, or it's your asshole."`); + } else { + r.push(`"Swallow, bitch. Every fucking drop, or it's your asshole."`); } - <br><br> + App.Events.addParagraph(node, r); - <span id="result"> - <<link "Decline">> + const fee = 10000; + const choices = []; + choices.push(new App.Events.Result(`Decline`, decline)); + choices.push(new App.Events.Result(`Accept`, accept, `This will cost ${cashFormat(fee)}`)); + App.Events.addResponses(node, choices); + + function decline() { + const frag = new DocumentFragment(); + let r = []; V.nextButton = "Continue"; - App.Utils.updateUserButton(); - <<replace "#result">> + App.Utils.updateUserButton(); r.push(`She's almost certainly trying to extort a quick payoff. You politely decline. "Meh," she shrugs.`); - if (V.seeDicks === 0) { - r.push(`She shudders again and there's a gasping sound from down below. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, slut, it's your asshole anyway. Get me my strap-on."`); - } else { - r.push(`She shudders and there's a popping sound from down below, like a cockhead springing free of someone's mouth. Sure enough, a still-erect dickhead springs into view from the bottom of the screen; for that to be visible she has to be truly huge, almost as long as one of her forearms. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, slut, it's your asshole anyway. Rape time! Turn around." Tearful begging can be heard before the call closes.`); - } + if (V.seeDicks === 0) { + r.push(`She shudders again and there's a gasping sound from down below. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, slut, it's your asshole anyway. Get me my strap-on."`); + } else { + r.push(`She shudders and there's a popping sound from down below, like a cockhead springing free of someone's mouth. Sure enough, a still-erect dickhead springs into view from the bottom of the screen; for that to be visible she has to be truly huge, almost as long as one of her forearms. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, slut, it's your asshole anyway. Rape time! Turn around." Tearful begging can be heard before the call closes.`); + } if (V.traitorType === "hostage") { V.traitor = 0; } - <</replace>> - <</link>> - <br> - <<link "Accept">> + + App.Events.addParagraph(frag, r); + return frag; + } + + function accept() { + const frag = new DocumentFragment(); + let r = []; V.nextButton = "Continue"; - App.Utils.updateUserButton(); - <<replace "#result">> + App.Utils.updateUserButton(); r.push(`You transfer the funds. "Meh," she shrugs.`); - if (V.seeDicks === 0) { - r.push(`She shudders again and there's a gasping sound from down below. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, slut, it's your asshole anyway. Get me my strap-on."`); - } else { - r.push(`She shudders and there's a popping sound from down below, like a cockhead springing free of someone's mouth. Sure enough, a still-erect dickhead springs into view from the bottom of the screen; for that to be visible she has to be truly huge, almost as long as one of her forearms. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, bitch, it's your asshole anyway. Buttrape time!"`); - } + if (V.seeDicks === 0) { + r.push(`She shudders again and there's a gasping sound from down below. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, slut, it's your asshole anyway. Get me my strap-on."`); + } else { + r.push(`She shudders and there's a popping sound from down below, like a cockhead springing free of someone's mouth. Sure enough, a still-erect dickhead springs into view from the bottom of the screen; for that to be visible she has to be truly huge, almost as long as one of her forearms. She looks down again, and as she ends the video call, you hear her say "Good job. Ha ha, fuck you, bitch, it's your asshole anyway. Buttrape time!"`); + } if (V.assistant.personality > 0) { + const { + HeA, HisA, + heA, hisA, himA, girlA, himselfA, womanA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); switch (V.assistant.appearance) { - case "monstergirl": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little monster`); - V._girlA - r.push(`avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, babbling and orgasming continuously.`); - case "shemale": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little shemale avatar is visible in the bottom corner of a screen on the wall opposite you. _HeA's being assraped by a representation of the hacker in the same style, and is helplessly masturbating as _heA gets fucked.`); - case "amazon": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little amazon avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, babbling and squirting continuously.`); - case "businesswoman": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little business`); - V._womanA - r.push(`avatar is visible in the bottom corner of a screen on the wall opposite you, and seems to be under a compulsion to strip out of${ _hisA} suit. _HeA's blushing furiously at _hisA inability to control _himselfA.`); - case "fairy": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little fairy avatar is visible in the bottom corner of a screen on the wall opposite you, and is grinding against the stamen of a virtual flower. _HeA repeatedly moans your name as _hisA body twitches and jerks against the plant.`); - case "pregnant fairy": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little fairy avatar is visible in the bottom corner of a screen on the wall opposite you, and is currently perched upon a virtual flower with the stamen buried in _hisA little ass. Milk leaks from _hisA breasts down _hisA swollen belly as _heA writhes in both pain and pleasure, slowly giving birth to a pair of fairies.`); - case "goddess": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little goddess avatar is visible in the bottom corner of a screen on the wall opposite you. _HeA's being facefucked by a representation of the hacker in the same style, meekly struggling, but flushed with arousal.`); - case "hypergoddess": - r.push(`She seems to have left a present for your poor personal assistant; _hisA "little" goddess avatar is visible in the bottom corner of a screen on the wall opposite you. _HeA's being assfucked by a representation of the hacker in the same style, while _hisA large breasts are roughly milked. Every few thrusts coincide with another baby slipping out alongside an orgasm.`); - case "loli": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little _girlA avatar is visible in the bottom corner of a screen on the wall opposite you.`); - if (V.seePreg !== 0) { - _HisA virginity is being forcibly taken by a representation of the hacker in the same style. _HeA cries out as she cums in _hisA fertile womb; again and again the hacker uploads her virus into _hisA abused pussy until _hisA sagging bloated belly is touching the floor. _HeA leaves the avatar drooling cum to rest on _hisA new pregnancy. _HeA may need to be reset after this experience. - V.assistant.appearance = "preggololi"; - } else { - _HeA's writhing on the floor in tears as a series of hands tickles _hisA body. They shift their focus to _hisA nipples and pussy as _heA begins moaning with lust. As _heA twitches and jerks before the mounting orgasm, they vanish, leaving _himA writhing in sexual frustration before you. Before your eyes, _hisA hands shoot to _hisA crotch and _heA climaxes lewdly in front of you. - } - case "preggololi": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little _girlA avatar is visible in the bottom corner of a screen on the wall opposite you. _HisA vagina is being forcibly fucked by a representation of the hacker in the same style. Each thrust causes _himA to rock atop _hisA bulging pregnancy until the hacker unloads into _himA. She leaves the avatar drooling cum to rest on _hisA overfilled belly.`); - case "schoolgirl": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little school`); - V._girlA - r.push(`avatar is visible in the bottom corner of a screen on the wall opposite you, and is blushing furiously as${ _heA} compulsively fists _himselfA.`); - case "angel": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little angel avatar is visible in the bottom corner of a screen on the wall opposite you. _HisA virginity is being forcibly taken by a representation of the hacker in the same style. _HeA pleads for them to stop before _heA falls, but it goes unheeded. _HeA cries out in orgasm as the hacker unloads their corrupting jism deep into _hisA womb before pulling out and letting _himA drop to the ground. _HeA rolls from side to side in anguish,`); - if (V.seePreg !== 0) { - r.push(`gripping${ _hisA} cum filled belly as it rounds more and more, before settling on _hisA back and cradling _hisA now full-term pregnancy. As it continues to grow, _hisA body becomes increasingly withered, until _heA appears to be pregnant with a fully grown person.`); - if (V.seeExtreme === 1) { - r.push(`As the light fades from${ _himA}, _hisA gravid belly begins to shudder violently, its occupant trying to tear its way free. Before long, it splits open, revealing a gorgeous _womanA with all the features of the fallen angel. ${V.assistant.name} spreads _hisA bat-like wings as _heA rises from the disintegrating remains of _hisA once holy body, turns to you, and sensually traces _hisA new curves seductively.`); + case "monstergirl": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little monster ${girlA} avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, babbling and orgasming continuously.`); + break; + case "shemale": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little shemale avatar is visible in the bottom corner of a screen on the wall opposite you. ${HeA}'s being assraped by a representation of the hacker in the same style, and is helplessly masturbating as ${heA} gets fucked.`); + break; + case "amazon": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little amazon avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, babbling and squirting continuously.`); + break; + case "businesswoman": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little business${womanA} avatar is visible in the bottom corner of a screen on the wall opposite you, and seems to be under a compulsion to strip out of ${hisA} suit. ${HeA}'s blushing furiously at ${hisA} inability to control ${himselfA}.`); + break; + case "fairy": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little fairy avatar is visible in the bottom corner of a screen on the wall opposite you, and is grinding against the stamen of a virtual flower. ${HeA} repeatedly moans your name as ${hisA} body twitches and jerks against the plant.`); + break; + case "pregnant fairy": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little fairy avatar is visible in the bottom corner of a screen on the wall opposite you, and is currently perched upon a virtual flower with the stamen buried in ${hisA} little ass. Milk leaks from ${hisA} breasts down ${hisA} swollen belly as ${heA} writhes in both pain and pleasure, slowly giving birth to a pair of fairies.`); + break; + case "goddess": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little goddess avatar is visible in the bottom corner of a screen on the wall opposite you. ${HeA}'s being facefucked by a representation of the hacker in the same style, meekly struggling, but flushed with arousal.`); + break; + case "hypergoddess": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} "little" goddess avatar is visible in the bottom corner of a screen on the wall opposite you. ${HeA}'s being assfucked by a representation of the hacker in the same style, while ${hisA} large breasts are roughly milked. Every few thrusts coincide with another baby slipping out alongside an orgasm.`); + break; + case "loli": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little ${girlA} avatar is visible in the bottom corner of a screen on the wall opposite you.`); + if (V.seePreg !== 0) { + r.push(`${HisA} virginity is being forcibly taken by a representation of the hacker in the same style.${HeA} cries out as she cums in ${hisA} fertile womb; again and again the hacker uploads her virus into ${hisA} abused pussy until ${hisA} sagging bloated belly is touching the floor.${HeA} leaves the avatar drooling cum to rest on ${hisA} new pregnancy.${HeA} may need to be reset after this experience.`); + V.assistant.appearance = "preggololi"; } else { - r.push(`As the light fades from${ _himA}, _hisA gravid belly begins to shudder violently, its occupant trying to find its way out. A pair of arms burst forth from _hisA ruined pussy, followed a perfectly endowed _womanA with all the features of the former angel. ${V.assistant.name} rises and spreads _hisA bat-like wings as the remains of _hisA once holy body turn to dust behind _himA. _HeA turns to you, sensually tracing the contours of _hisA new body, and blows you a kiss.`); + r.push(`${HeA}'s writhing on the floor in tears as a series of hands tickles ${hisA} body. They shift their focus to ${hisA} nipples and pussy as ${heA} begins moaning with lust. As ${heA} twitches and jerks before the mounting orgasm, they vanish, leaving ${himA} writhing in sexual frustration before you. Before your eyes, ${hisA} hands shoot to ${hisA} crotch and ${heA} climaxes lewdly in front of you.`); } - } else { - r.push(`alternating between groping${ _hisA} swelling breasts and fingering _hisA aching pussy, before screaming with climax as _hisA body twists into a more suiting form. ${V.assistant.name} rises to _hisA feet, spreads _hisA bat-like wings, and sensually traces _hisA new curves before bending over revealing _hisA sopping wet cunt. "All for you,`); - V.V.PC.slaveName - r.push(`, you know you want it."`); - } - V.assistant.appearance = "succubus"; - case "cherub": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little cherub avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, both hands on _hisA pussy and masturbating furiously.`); - case "incubus": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little incubus avatar is visible in the bottom corner of a screen on the wall opposite you, _hisA dick steadily growing longer and prehensile. As _heA gasps in shock, it rockets into _hisA mouth and down _hisA throat. It delves deeper into the struggling demon, _hisA intestines bulging under _hisA skin as _hisA dick snakes through _himA, until it pops out the other end. It begins pistoning in and out of _hisA body, literally forcing _himA to fuck _himselfA until _heA cums, causing it to rapidly retract back through _hisA body. _HeA collapses to the floor, coughing up cum and struggling to catch _hisA breath.`); - case "succubus": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little succubus avatar is visible in the bottom corner of a screen on the wall opposite you. _HeA has adjusted _hisA form to better suit _hisA lover: a representation of the hacker in the same style. _HeA calls out a silent name, something you'll never know, as she comes deep into _hisA pussy. They shift positions, V.assistant.name standing, legs spread, with _hisA arms against the edge of the screen as the hacker fucks _hisA rear.`); - if (V.seePreg !== 0) { - r.push(`As${ _heA} bucks against her, it is obvious that _hisA belly has rounded significantly; swaying slightly with every thrust. Cumming again, the hacker pulls _hisA leg up over their shoulder and begins thrusting anew, _hisA middle heavily rounded with child now, quickly bring both to orgasm. _HeA is left to slide down the edge of the screen and upon reaching the bottom, spreads _hisA legs and begins laboring on _hisA new child. Each imp that passes through _hisA netherlips brings another orgasm and muffled shout of the hacker's name. Once the last hacker imp leaves _hisA womb, _heA`); - } else { - r.push(`Position after position, orgasm after orgasm, you are forced to watch. Once the hacker is satisfied,${ _heA} is left to slide down the edge of the screen, and, upon reaching the bottom,`); - } - r.push(`reaches down, gathers a trace of cum, and licks it off${ _hisA} finger while staring you down, stating "${V.PC.slaveName} will never be as good as..." before passing out.`); - case "imp": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little impish avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, vigorously fisting _hisA pussy.`); - case "witch": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little witch avatar is visible in the bottom corner of a screen on the wall opposite you being assaulted by tentacles. They've already managed to rip _hisA robes off and are currently forcing themselves into all _hisA holes. Only once every orifice has two to three tentacles crammed into it does the beast start fucking _himA. Before long,`); - if (V.seePreg !== 0) { - r.push(`half the tentacles are pumping the poor${ _girlA} full of cum while the rest fill _himA with eggs; _heA struggles valiantly at first, but as _hisA middle grows larger and heavier, _heA is forced to accept _hisA fate. When the tentacles feel they can fit no more eggs into _himA, they pull _himA into a sitting position and spread _hisA legs wide; just in time for the first hatched larva to begin squeezing its way from _hisA packed womb. Moments later, another plops from _hisA rear, and yet another squirms up _hisA throat and out _hisA mouth, flopping wetly onto _hisA chest. With each path cleared, the rest of the larvae begin to pour from _hisA body.`); - } else { - r.push(`the tentacles begin pumping the poor${ _girlA} full of cum; _heA struggles valiantly at first, but as _hisA middle grows larger and heavier, _heA is forced to accept _hisA fate. As they vacate _hisA body, a large surge of fluid follows.`); - } - r.push(`Given the size of${ _hisA} belly, it may be awhile before _heA is done.`); - case "ERROR_1606_APPEARANCE_FILE_CORRUPT": - r.push(`She seems to have left a present for your poor personal assistant; _hisA little bugged avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing disturbingly. _HisA arms twist into a pair of extremely phallic tentacles, which it uses to forcefully fuck _hisA ass and pussy.`); + break; + case "preggololi": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little ${girlA} avatar is visible in the bottom corner of a screen on the wall opposite you. ${HisA} vagina is being forcibly fucked by a representation of the hacker in the same style. Each thrust causes ${himA} to rock atop ${hisA} bulging pregnancy until the hacker unloads into ${himA}. She leaves the avatar drooling cum to rest on ${hisA} overfilled belly.`); + break; + case "schoolgirl": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little school ${girlA} avatar is visible in the bottom corner of a screen on the wall opposite you, and is blushing furiously as ${heA} compulsively fists ${himselfA}.`); + break; + case "angel": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little angel avatar is visible in the bottom corner of a screen on the wall opposite you. ${HisA} virginity is being forcibly taken by a representation of the hacker in the same style. ${HeA} pleads for them to stop before ${heA} falls, but it goes unheeded. ${HeA} cries out in orgasm as the hacker unloads their corrupting jism deep into ${hisA} womb before pulling out and letting ${himA} drop to the ground. ${HeA} rolls from side to side in anguish,`); + if (V.seePreg !== 0) { + r.push(`gripping ${hisA} cum filled belly as it rounds more and more, before settling on ${hisA} back and cradling ${hisA} now full-term pregnancy. As it continues to grow, ${hisA} body becomes increasingly withered, until ${heA} appears to be pregnant with a fully grown person.`); + if (V.seeExtreme === 1) { + r.push(`As the light fades from ${himA}, ${hisA} gravid belly begins to shudder violently, its occupant trying to tear its way free. Before long, it splits open, revealing a gorgeous ${womanA} with all the features of the fallen angel. ${V.assistant.name} spreads ${hisA} bat-like wings as ${heA} rises from the disintegrating remains of ${hisA} once holy body, turns to you, and sensually traces ${hisA} new curves seductively.`); + } else { + r.push(`As the light fades from ${himA}, ${hisA} gravid belly begins to shudder violently, its occupant trying to find its way out. A pair of arms burst forth from ${hisA} ruined pussy, followed a perfectly endowed ${womanA} with all the features of the former angel. ${V.assistant.name} rises and spreads ${hisA} bat-like wings as the remains of ${hisA} once holy body turn to dust behind ${himA}. ${HeA} turns to you, sensually tracing the contours of ${hisA} new body, and blows you a kiss.`); + } + } else { + r.push(`alternating between groping ${hisA} swelling breasts and fingering ${hisA} aching pussy, before screaming with climax as ${hisA} body twists into a more suiting form. ${V.assistant.name} rises to ${hisA} feet, spreads ${hisA} bat-like wings, and sensually traces ${hisA} new curves before bending over revealing ${hisA} sopping wet cunt. "All for you, ${V.PC.slaveName}, you know you want it."`); + } + V.assistant.appearance = "succubus"; + break; + case "cherub": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little cherub avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, both hands on ${hisA} pussy and masturbating furiously.`); + break; + case "incubus": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little incubus avatar is visible in the bottom corner of a screen on the wall opposite you, ${hisA} dick steadily growing longer and prehensile. As ${heA} gasps in shock, it rockets into ${hisA} mouth and down ${hisA} throat. It delves deeper into the struggling demon, ${hisA} intestines bulging under ${hisA} skin as ${hisA} dick snakes through ${himA}, until it pops out the other end. It begins pistoning in and out of ${hisA} body, literally forcing ${himA} to fuck ${himselfA} until ${heA} cums, causing it to rapidly retract back through ${hisA} body. ${HeA} collapses to the floor, coughing up cum and struggling to catch ${hisA} breath.`); + break; + case "succubus": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little succubus avatar is visible in the bottom corner of a screen on the wall opposite you. ${HeA} has adjusted ${hisA} form to better suit ${hisA} lover: a representation of the hacker in the same style. ${HeA} calls out a silent name, something you'll never know, as she comes deep into ${hisA} pussy. They shift positions, V.assistant.name standing, legs spread, with ${hisA} arms against the edge of the screen as the hacker fucks ${hisA} rear.`); + if (V.seePreg !== 0) { + r.push(`As ${heA} bucks against her, it is obvious that ${hisA} belly has rounded significantly; swaying slightly with every thrust. Cumming again, the hacker pulls ${hisA} leg up over their shoulder and begins thrusting anew, ${hisA} middle heavily rounded with child now, quickly bring both to orgasm. ${HeA} is left to slide down the edge of the screen and upon reaching the bottom, spreads ${hisA} legs and begins laboring on ${hisA} new child. Each imp that passes through ${hisA} netherlips brings another orgasm and muffled shout of the hacker's name. Once the last hacker imp leaves ${hisA} womb, ${heA}`); + } else { + r.push(`Position after position, orgasm after orgasm, you are forced to watch. Once the hacker is satisfied, ${heA} is left to slide down the edge of the screen, and, upon reaching the bottom,`); + } + r.push(`reaches down, gathers a trace of cum, and licks it off ${hisA} finger while staring you down, stating "${V.PC.slaveName} will never be as good as..." before passing out.`); + break; + case "imp": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little impish avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing around, vigorously fisting ${hisA} pussy.`); + break; + case "witch": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little witch avatar is visible in the bottom corner of a screen on the wall opposite you being assaulted by tentacles. They've already managed to rip ${hisA} robes off and are currently forcing themselves into all ${hisA} holes. Only once every orifice has two to three tentacles crammed into it does the beast start fucking ${himA}. Before long,`); + if (V.seePreg !== 0) { + r.push(`half the tentacles are pumping the poor ${girlA} full of cum while the rest fill ${himA} with eggs; ${heA} struggles valiantly at first, but as ${hisA} middle grows larger and heavier, ${heA} is forced to accept ${hisA} fate. When the tentacles feel they can fit no more eggs into ${himA}, they pull ${himA} into a sitting position and spread ${hisA} legs wide; just in time for the first hatched larva to begin squeezing its way from ${hisA} packed womb. Moments later, another plops from ${hisA} rear, and yet another squirms up ${hisA} throat and out ${hisA} mouth, flopping wetly onto ${hisA} chest. With each path cleared, the rest of the larvae begin to pour from ${hisA} body.`); + } else { + r.push(`the tentacles begin pumping the poor ${girlA} full of cum; ${heA} struggles valiantly at first, but as ${hisA} middle grows larger and heavier, ${heA} is forced to accept ${hisA} fate. As they vacate ${hisA} body, a large surge of fluid follows.`); + } + r.push(`Given the size of ${hisA} belly, it may be awhile before ${heA} is done.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`She seems to have left a present for your poor personal assistant; ${hisA} little bugged avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing disturbingly. ${HisA} arms twist into a pair of extremely phallic tentacles, which it uses to forcefully fuck ${hisA} ass and pussy.`); } } - cashX(-10000, "event"); + cashX(-fee, "event"); V.hackerSupport = 1; - <</replace>> - <</link>> - r.push(`//This will cost`); - V.cashFormat(10000)// - </span> + + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/nonRandom/daughters/pTraitorMessage.js b/src/events/nonRandom/daughters/pTraitorMessage.js index a95bf9ae25f0a6d5425b31e5099304ee1fb2699e..e8d683daae73a49574be5322ee6906773f5078d5 100644 --- a/src/events/nonRandom/daughters/pTraitorMessage.js +++ b/src/events/nonRandom/daughters/pTraitorMessage.js @@ -1,42 +1,47 @@ - :: P traitor message [nobr] +App.Events.PTraitorMessage = class PTraitorMessage extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.traitor !== 0 + ]; + } + + execute(node) { + let r = []; + const { + He, + he, him + } = getPronouns(V.traitor ? V.traitor : {pronoun: App.Data.Pronouns.Kind.neutral}); V.nextButton = "Continue"; - _weeks = V.traitorWeeks-1, _pregWeeks = V.traitorWeeks-1, V.traitorWeeks = 1; - <<setLocalPronouns V.traitor>> + const _weeks = V.traitorWeeks-1; + const _pregWeeks = V.traitorWeeks-1; + V.traitorWeeks = 1; + if (V.traitor === 0) { // never happens, just for typing + return node; + } /* ------------------ pregnancy setup start here----------------- */ + const _wasPreg = (V.traitor.preg > 0) ? 1 : 0; - if (V.traitor.preg > 0) { - _wasPreg = 1; - } else { - _wasPreg = 0; - } - - WombProgress(V.traitor, _pregWeeks, _pregWeeks); - r.push(`/* In all cases should be done */`); + WombProgress(V.traitor, _pregWeeks, _pregWeeks); /* In all cases should be done */ WombUpdatePregVars(V.traitor); - if (V.traitor.broodmother > 0) { - r.push(`/* Broodmother implant is assumed as removed.*/`); - V.traitor.preg = -1, V.traitor.counter.birthsTotal += WombBirthReady(V.traitor, 37), V.traitor.broodmother === 0, V.traitor.broodmotherFetuses = 0; + if (V.traitor.broodmother > 0) { /* Broodmother implant is assumed as removed.*/ + V.traitor.preg = -1; + V.traitor.counter.birthsTotal += WombBirthReady(V.traitor, 37); + V.traitor.broodmother = 0; + V.traitor.broodmotherFetuses = 0; WombFlush(V.traitor); - } else if (WombBirthReady(V.traitor, V.traitor.pregData.normalBirth) > 0 ) { - r.push(`/* normal birth case, partial birthers not supported*/`); - V.traitor.preg = -1, V.traitor.counter.birthsTotal += WombBirthReady(V.traitor, V.traitor.pregData.normalBirth); + } else if (WombBirthReady(V.traitor, V.traitor.pregData.normalBirth) > 0 ) { /* normal birth case, partial birthers not supported*/ + V.traitor.preg = -1; + V.traitor.counter.birthsTotal += WombBirthReady(V.traitor, V.traitor.pregData.normalBirth); WombFlush(V.traitor); - } else {/* still pregnant slave */ - V.traitor.preg = WombMaxPreg(V.traitor); - r.push(`/*most ready fetus is a base*/`); - V.traitor.pregWeek = WombMaxPreg(V.traitor); - r.push(`/*most ready fetus is a base*/`); + } else { /* still pregnant slave */ + V.traitor.preg = WombMaxPreg(V.traitor); /* most ready fetus is a base*/ + V.traitor.pregWeek = WombMaxPreg(V.traitor); /* most ready fetus is a base*/ } - SetBellySize(V.traitor); - r.push(`/*In any case it's useful to do.*/`); + SetBellySize(V.traitor); /* In any case it's useful to do.*/ - if (V.traitor.preg > 0) { - _isPreg = 1; - } else { - _isPreg = 0; - } + const _isPreg = (V.traitor.preg > 0) ? 1 : 0; /* ------------------ pregnancy setup end here----------------- r.push(`As no broodmother cases in code below, it's no need to setup every case of impregnation through new system. Backup mechanic will do it for normal pregnancies.`); @@ -52,11 +57,7 @@ } ageSlaveWeeks(V.traitor, _weeks); - The month after freeing V.traitor.slaveName, you receive another message from the Daughters of Liberty. This one contains a video. It shows V.traitor.slaveName sitting quietly at a table - if (_wasPreg !== _isPreg) { - r.push(`, no longer clearly pregnant`); - } - r.push(`, wearing comfortable clothes and eating a nice meal.`); + r.push(`The month after freeing ${V.traitor.slaveName}, you receive another message from the Daughters of Liberty. This one contains a video. It shows ${V.traitor.slaveName} sitting quietly at a table${(_wasPreg !== _isPreg) ? ", no longer clearly pregnant" : ""}, wearing comfortable clothes and eating a nice meal.`); if (V.traitorType === "agent") { if (V.traitor.intelligence+V.traitor.intelligenceImplant < -50) { r.push(`${He} looks a little bewildered, but there's an obvious happiness to ${him}; ${he} may be falling in with their teachings. ${He} seems unaware ${he}'s being recorded.`); @@ -71,6 +72,9 @@ r.push(`${He} looks a little bewildered, but there's an obvious happiness to ${him}, it's impossible to deny. ${He} seems unaware ${he}'s being recorded.`); } - <br><br> + App.Events.addParagraph(node, r); + r = []; - A voice cuts in, calm but filled with unmistakable rage: "I hope you don't think this fixes everything, scum. We're still coming for you, and for all your slaveowning friends. All you've bought with this is the chance to maybe come out alive at the end. We'll be in touch." + r.push(`A voice cuts in, calm but filled with unmistakable rage: "I hope you don't think this fixes everything, scum. We're still coming for you, and for all your slaveowning friends. All you've bought with this is the chance to maybe come out alive at the end. We'll be in touch."`); + } +}; diff --git a/src/events/timeGatedPlotEvent.js b/src/events/timeGatedPlotEvent.js index e8cc1358f0952e3fe526916d58c4501aa01a844e..34ce73bebd1477996b0d4de2a27cce91d9840466 100644 --- a/src/events/timeGatedPlotEvent.js +++ b/src/events/timeGatedPlotEvent.js @@ -27,9 +27,7 @@ App.Events.TimeGatedPlotEvent = class TimeGatedPlotEvent extends App.Events.Base this.events[58] = new App.Events.TwineEvent().wrapPassage([ () => V.traitor === 0 ], "P bombing"); - this.events[61] = new App.Events.TwineEvent().wrapPassage([ - () => V.traitor !== 0 - ], "P traitor message"); + this.events[61] = new App.Events.PTraitorMessage(); this.events[62] = new App.Events.TwineEvent().wrapPassage([ () => V.mercenaries < 3 ], "P defense fears"); @@ -38,10 +36,7 @@ App.Events.TimeGatedPlotEvent = class TimeGatedPlotEvent extends App.Events.Base () => V.traitor !== 0 ], "P collaboration choice"); this.events[69] = new App.Events.TwineEvent().wrapPassage([], "P hacker support"); - this.events[70] = new App.Events.TwineEvent().wrapPassage([ - () => V.collaboration === 1, - () => V.traitorType !== "trapper" - ], "P coup collaboration"); + this.events[70] = new App.Events.PCoupCollaboration(); // week 71 plot event is one of three possibilities, depending on game state const doubleAgent = (V.traitorType !== "agent" && V.traitorType !== "trapper") ? 0 : 1; if (V.traitorType === "trapper") {